From ae4966f29a928212ce54e548a48098456b374336 Mon Sep 17 00:00:00 2001 From: Thong Kuah Date: Fri, 21 Jun 2019 20:45:06 +0000 Subject: Select deployments that only has the app label As Auto DevOps deployments both label and annotations, that will be included in the deploy board so need to warn at all. --- .../environments/components/container.vue | 1 + .../environments/components/environments_app.vue | 6 ++++++ .../environments/components/environments_table.vue | 7 +++++++ app/assets/javascripts/environments/index.js | 2 ++ .../environments/mixins/container_mixin.js | 5 +++++ app/views/projects/environments/index.html.haml | 1 + lib/gitlab/kubernetes.rb | 8 ++++++++ spec/lib/gitlab/kubernetes_spec.rb | 24 ++++++++++++++++++++++ 8 files changed, 54 insertions(+) diff --git a/app/assets/javascripts/environments/components/container.vue b/app/assets/javascripts/environments/components/container.vue index f8a637138ad..426bb63d4f7 100644 --- a/app/assets/javascripts/environments/components/container.vue +++ b/app/assets/javascripts/environments/components/container.vue @@ -57,6 +57,7 @@ export default { :user-callouts-path="userCalloutsPath" :lock-promotion-svg-path="lockPromotionSvgPath" :help-canary-deployments-path="helpCanaryDeploymentsPath" + :deploy-boards-help-path="deployBoardsHelpPath" /> [], }, + deployBoardsHelpPath: { + type: String, + required: false, + default: '', + }, canReadEnvironment: { type: Boolean, required: false, @@ -106,8 +111,10 @@ export default {
diff --git a/app/assets/javascripts/environments/index.js b/app/assets/javascripts/environments/index.js index b53d42f202b..dcdaf8731f8 100644 --- a/app/assets/javascripts/environments/index.js +++ b/app/assets/javascripts/environments/index.js @@ -20,6 +20,7 @@ export default () => endpoint: environmentsData.environmentsDataEndpoint, newEnvironmentPath: environmentsData.newEnvironmentPath, helpPagePath: environmentsData.helpPagePath, + deployBoardsHelpPath: environmentsData.deployBoardsHelpPath, cssContainerClass: environmentsData.cssClass, canCreateEnvironment: parseBoolean(environmentsData.canCreateEnvironment), canReadEnvironment: parseBoolean(environmentsData.canReadEnvironment), @@ -31,6 +32,7 @@ export default () => endpoint: this.endpoint, newEnvironmentPath: this.newEnvironmentPath, helpPagePath: this.helpPagePath, + deployBoardsHelpPath: this.deployBoardsHelpPath, cssContainerClass: this.cssContainerClass, canCreateEnvironment: this.canCreateEnvironment, canReadEnvironment: this.canReadEnvironment, diff --git a/app/assets/javascripts/environments/mixins/container_mixin.js b/app/assets/javascripts/environments/mixins/container_mixin.js index f2907c120f8..abf7d33be91 100644 --- a/app/assets/javascripts/environments/mixins/container_mixin.js +++ b/app/assets/javascripts/environments/mixins/container_mixin.js @@ -25,5 +25,10 @@ export default { required: false, default: null, }, + deployBoardsHelpPath: { + type: String, + required: false, + default: '', + }, }, }; diff --git a/app/views/projects/environments/index.html.haml b/app/views/projects/environments/index.html.haml index 99cbbc11acd..3ec92676cde 100644 --- a/app/views/projects/environments/index.html.haml +++ b/app/views/projects/environments/index.html.haml @@ -6,4 +6,5 @@ "can-create-environment" => can?(current_user, :create_environment, @project).to_s, "new-environment-path" => new_project_environment_path(@project), "help-page-path" => help_page_path("ci/environments"), + "deploy-boards-help-path" => help_page_path("user/project/deploy_boards", anchor: "enabling-deploy-boards"), "css-class" => container_class } } diff --git a/lib/gitlab/kubernetes.rb b/lib/gitlab/kubernetes.rb index 1103a4eed1d..22bd00751bc 100644 --- a/lib/gitlab/kubernetes.rb +++ b/lib/gitlab/kubernetes.rb @@ -43,6 +43,14 @@ module Gitlab }) end + def filter_by_legacy_label(items, app, env) + legacy_items = filter_by_label(items, { app: env }) + + non_legacy_items = filter_by_project_environment(legacy_items, app, env) + + legacy_items - non_legacy_items + end + # Converts a pod (as returned by the kubernetes API) into a terminal def terminals_for_pod(api_url, namespace, pod) metadata = pod.fetch("metadata", {}) diff --git a/spec/lib/gitlab/kubernetes_spec.rb b/spec/lib/gitlab/kubernetes_spec.rb index 45369b91ed6..a7ea942960b 100644 --- a/spec/lib/gitlab/kubernetes_spec.rb +++ b/spec/lib/gitlab/kubernetes_spec.rb @@ -67,6 +67,30 @@ describe Gitlab::Kubernetes do end end + describe '#filter_by_legacy_label' do + let(:non_matching_pod) { kube_pod(environment_slug: 'production', project_slug: 'my-cool-app') } + + let(:non_matching_pod_2) do + kube_pod(environment_slug: 'production', project_slug: 'my-cool-app').tap do |pod| + pod['metadata']['labels']['app'] = 'production' + end + end + + let(:matching_pod) do + kube_pod.tap do |pod| + pod['metadata']['annotations'].delete('app.gitlab.com/env') + pod['metadata']['annotations'].delete('app.gitlab.com/app') + pod['metadata']['labels']['app'] = 'production' + end + end + + it 'returns matching labels' do + items = [non_matching_pod, non_matching_pod_2, matching_pod] + + expect(filter_by_legacy_label(items, 'my-cool-app', 'production')).to contain_exactly(matching_pod) + end + end + describe '#to_kubeconfig' do let(:token) { 'TOKEN' } let(:ca_pem) { 'PEM' } -- cgit v1.2.1