Commit 83a760c5 authored by Kamil Trzciński's avatar Kamil Trzciński

Merge branch '56937-edit-knative-domain-after-it-has-been-deployed' into 'master'

Guarantee functions are not lost after Knative update

See merge request gitlab-org/gitlab-ce!25067
parents 0b966fb0 ed2f7e23
......@@ -99,7 +99,7 @@ module Clusters
where('NOT EXISTS (?)', subquery)
end
scope :with_knative_installed, -> { joins(:application_knative).merge(Clusters::Applications::Knative.installed) }
scope :with_knative_installed, -> { joins(:application_knative).merge(Clusters::Applications::Knative.available) }
scope :preload_knative, -> {
preload(
......
......@@ -6,7 +6,14 @@ module Clusters
extend ActiveSupport::Concern
included do
scope :installed, -> { where(status: self.state_machines[:status].states[:installed].value) }
scope :available, -> do
where(
status: [
self.state_machines[:status].states[:installed].value,
self.state_machines[:status].states[:updated].value
]
)
end
state_machine :status, initial: :not_installable do
state :not_installable, value: -2
......
---
title: Fixes functions finder for upgraded Knative app
merge_request: 25067
author:
type: fixed
......@@ -64,12 +64,12 @@ module Gitlab
group_clusters_disabled: count(::Clusters::Cluster.disabled.group_type),
clusters_platforms_gke: count(::Clusters::Cluster.gcp_installed.enabled),
clusters_platforms_user: count(::Clusters::Cluster.user_provided.enabled),
clusters_applications_helm: count(::Clusters::Applications::Helm.installed),
clusters_applications_ingress: count(::Clusters::Applications::Ingress.installed),
clusters_applications_cert_managers: count(::Clusters::Applications::CertManager.installed),
clusters_applications_prometheus: count(::Clusters::Applications::Prometheus.installed),
clusters_applications_runner: count(::Clusters::Applications::Runner.installed),
clusters_applications_knative: count(::Clusters::Applications::Knative.installed),
clusters_applications_helm: count(::Clusters::Applications::Helm.available),
clusters_applications_ingress: count(::Clusters::Applications::Ingress.available),
clusters_applications_cert_managers: count(::Clusters::Applications::CertManager.available),
clusters_applications_prometheus: count(::Clusters::Applications::Prometheus.available),
clusters_applications_runner: count(::Clusters::Applications::Runner.available),
clusters_applications_knative: count(::Clusters::Applications::Knative.available),
in_review_folder: count(::Environment.in_review_folder),
groups: count(Group),
issues: count(Issue),
......
......@@ -3,16 +3,17 @@ require 'rails_helper'
describe Clusters::Applications::Helm do
include_examples 'cluster application core specs', :clusters_applications_helm
describe '.installed' do
subject { described_class.installed }
describe '.available' do
subject { described_class.available }
let!(:installed_cluster) { create(:clusters_applications_helm, :installed) }
let!(:updated_cluster) { create(:clusters_applications_helm, :updated) }
before do
create(:clusters_applications_helm, :errored)
end
it { is_expected.to contain_exactly(installed_cluster) }
it { is_expected.to contain_exactly(installed_cluster, updated_cluster) }
end
describe '#issue_client_cert' do
......
......@@ -16,18 +16,6 @@ describe Clusters::Applications::Ingress do
allow(ClusterWaitForIngressIpAddressWorker).to receive(:perform_async)
end
describe '.installed' do
subject { described_class.installed }
let!(:cluster) { create(:clusters_applications_ingress, :installed) }
before do
create(:clusters_applications_ingress, :errored)
end
it { is_expected.to contain_exactly(cluster) }
end
describe '#make_installed!' do
before do
application.make_installed!
......
......@@ -24,30 +24,6 @@ describe Clusters::Applications::Knative do
it { expect(knative_no_rbac).to be_not_installable }
end
describe '.installed' do
subject { described_class.installed }
let!(:cluster) { create(:clusters_applications_knative, :installed) }
before do
create(:clusters_applications_knative, :errored)
end
it { is_expected.to contain_exactly(cluster) }
end
describe '#make_installed' do
subject { described_class.installed }
let!(:cluster) { create(:clusters_applications_knative, :installed) }
before do
create(:clusters_applications_knative, :errored)
end
it { is_expected.to contain_exactly(cluster) }
end
describe 'make_installed with external_ip' do
before do
application.make_installed!
......
......@@ -9,18 +9,6 @@ describe Clusters::Applications::Prometheus do
include_examples 'cluster application helm specs', :clusters_applications_prometheus
include_examples 'cluster application initial status specs'
describe '.installed' do
subject { described_class.installed }
let!(:cluster) { create(:clusters_applications_prometheus, :installed) }
before do
create(:clusters_applications_prometheus, :errored)
end
it { is_expected.to contain_exactly(cluster) }
end
describe 'transition to installed' do
let(:project) { create(:project) }
let(:cluster) { create(:cluster, :with_installed_helm, projects: [project]) }
......@@ -192,7 +180,7 @@ describe Clusters::Applications::Prometheus do
end
context 'with knative installed' do
let(:knative) { create(:clusters_applications_knative, :installed ) }
let(:knative) { create(:clusters_applications_knative, :updated ) }
let(:prometheus) { create(:clusters_applications_prometheus, cluster: knative.cluster) }
subject { prometheus.install_command }
......
......@@ -11,18 +11,6 @@ describe Clusters::Applications::Runner do
it { is_expected.to belong_to(:runner) }
describe '.installed' do
subject { described_class.installed }
let!(:cluster) { create(:clusters_applications_runner, :installed) }
before do
create(:clusters_applications_runner, :errored)
end
it { is_expected.to contain_exactly(cluster) }
end
describe '#install_command' do
let(:kubeclient) { double('kubernetes client') }
let(:gitlab_runner) { create(:clusters_applications_runner, runner: ci_runner) }
......
......@@ -9,6 +9,19 @@ shared_examples 'cluster application status specs' do |application_name|
end
end
describe '.available' do
subject { described_class.available }
let!(:installed_cluster) { create(application_name, :installed) }
let!(:updated_cluster) { create(application_name, :updated) }
before do
create(application_name, :errored)
end
it { is_expected.to contain_exactly(installed_cluster, updated_cluster) }
end
describe 'status state machine' do
describe '#make_installing' do
subject { create(application_name, :scheduled) }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment