Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThong Kuah <tkuah@gitlab.com>2019-06-21 23:45:06 +0300
committerMike Greiling <mike@pixelcog.com>2019-06-21 23:45:06 +0300
commitae4966f29a928212ce54e548a48098456b374336 (patch)
tree8e33959e3f1f291a31fb6c20f0d912be0880a967
parentc6f54ab12b5b276dadda0639ea647e9a2b4c1781 (diff)
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.
-rw-r--r--app/assets/javascripts/environments/components/container.vue1
-rw-r--r--app/assets/javascripts/environments/components/environments_app.vue6
-rw-r--r--app/assets/javascripts/environments/components/environments_table.vue7
-rw-r--r--app/assets/javascripts/environments/index.js2
-rw-r--r--app/assets/javascripts/environments/mixins/container_mixin.js5
-rw-r--r--app/views/projects/environments/index.html.haml1
-rw-r--r--lib/gitlab/kubernetes.rb8
-rw-r--r--spec/lib/gitlab/kubernetes_spec.rb24
8 files changed, 54 insertions, 0 deletions
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"
/>
<table-pagination
diff --git a/app/assets/javascripts/environments/components/environments_app.vue b/app/assets/javascripts/environments/components/environments_app.vue
index ec78240217b..81927d18f8b 100644
--- a/app/assets/javascripts/environments/components/environments_app.vue
+++ b/app/assets/javascripts/environments/components/environments_app.vue
@@ -43,6 +43,11 @@ export default {
type: String,
required: true,
},
+ deployBoardsHelpPath: {
+ type: String,
+ required: false,
+ default: '',
+ },
},
created() {
@@ -112,6 +117,7 @@ export default {
:user-callouts-path="userCalloutsPath"
:lock-promotion-svg-path="lockPromotionSvgPath"
:help-canary-deployments-path="helpCanaryDeploymentsPath"
+ :deploy-boards-help-path="deployBoardsHelpPath"
@onChangePage="onChangePage"
>
<empty-state
diff --git a/app/assets/javascripts/environments/components/environments_table.vue b/app/assets/javascripts/environments/components/environments_table.vue
index 55613d815ce..4464f5e5578 100644
--- a/app/assets/javascripts/environments/components/environments_table.vue
+++ b/app/assets/javascripts/environments/components/environments_table.vue
@@ -22,6 +22,11 @@ export default {
required: true,
default: () => [],
},
+ deployBoardsHelpPath: {
+ type: String,
+ required: false,
+ default: '',
+ },
canReadEnvironment: {
type: Boolean,
required: false,
@@ -106,8 +111,10 @@ export default {
<div class="deploy-board-container">
<deploy-board
:deploy-board-data="model.deployBoardData"
+ :deploy-boards-help-path="deployBoardsHelpPath"
:is-loading="model.isLoadingDeployBoard"
:is-empty="model.isEmptyDeployBoard"
+ :has-legacy-app-label="model.hasLegacyAppLabel"
:logs-path="model.logs_path"
/>
</div>
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' }