diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-09-09 18:11:44 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-09-09 18:11:44 +0000 |
commit | 764ecdaf4d65cb5730b7487ed8620bcf21e6b7d7 (patch) | |
tree | bb90d07ba6ef43685b785b6964d567732f575d7b /app | |
parent | a3596259bcca06bf4adcdb391d0ea3110fe7deff (diff) | |
download | gitlab-ce-764ecdaf4d65cb5730b7487ed8620bcf21e6b7d7.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
6 files changed, 46 insertions, 35 deletions
diff --git a/app/assets/javascripts/projects/terraform_notification/components/terraform_notification.vue b/app/assets/javascripts/projects/terraform_notification/components/terraform_notification.vue index 2290d6a078f..668cc10c454 100644 --- a/app/assets/javascripts/projects/terraform_notification/components/terraform_notification.vue +++ b/app/assets/javascripts/projects/terraform_notification/components/terraform_notification.vue @@ -1,9 +1,9 @@ <script> import { GlBanner } from '@gitlab/ui'; import { helpPagePath } from '~/helpers/help_page_helper'; -import { setCookie } from '~/lib/utils/common_utils'; import { s__ } from '~/locale'; import Tracking from '~/tracking'; +import UserCalloutDismisser from '~/vue_shared/components/user_callout_dismisser.vue'; import { EVENT_LABEL, DISMISS_EVENT, CLICK_EVENT } from '../constants'; const trackingMixin = Tracking.mixin({ label: EVENT_LABEL }); @@ -19,24 +19,19 @@ export default { }, components: { GlBanner, + UserCalloutDismisser, }, mixins: [trackingMixin], - inject: ['terraformImagePath', 'bannerDismissedKey'], - data() { - return { - isVisible: true, - }; - }, + inject: ['terraformImagePath'], computed: { docsUrl() { - return helpPagePath('user/infrastructure/terraform_state'); + return helpPagePath('user/infrastructure/iac/terraform_state.md'); }, }, methods: { handleClose() { - setCookie(this.bannerDismissedKey, true); - this.isVisible = false; this.track(DISMISS_EVENT); + this.$refs.calloutDismisser.dismiss(); }, buttonClick() { this.track(CLICK_EVENT); @@ -45,17 +40,21 @@ export default { }; </script> <template> - <div v-if="isVisible" class="gl-py-5"> - <gl-banner - :title="$options.i18n.title" - :button-text="$options.i18n.buttonText" - :button-link="docsUrl" - :svg-path="terraformImagePath" - variant="promotion" - @primary="buttonClick" - @close="handleClose" - > - <p>{{ $options.i18n.description }}</p> - </gl-banner> - </div> + <user-callout-dismisser ref="calloutDismisser" feature-name="terraform_notification_dismissed"> + <template #default="{ shouldShowCallout }"> + <div v-if="shouldShowCallout" class="gl-py-5"> + <gl-banner + :title="$options.i18n.title" + :button-text="$options.i18n.buttonText" + :button-link="docsUrl" + :svg-path="terraformImagePath" + variant="promotion" + @primary="buttonClick" + @close="handleClose" + > + <p>{{ $options.i18n.description }}</p> + </gl-banner> + </div> + </template> + </user-callout-dismisser> </template> diff --git a/app/assets/javascripts/projects/terraform_notification/index.js b/app/assets/javascripts/projects/terraform_notification/index.js index 0a273247930..362e71ed902 100644 --- a/app/assets/javascripts/projects/terraform_notification/index.js +++ b/app/assets/javascripts/projects/terraform_notification/index.js @@ -1,12 +1,18 @@ import Vue from 'vue'; -import { parseBoolean, getCookie } from '~/lib/utils/common_utils'; +import VueApollo from 'vue-apollo'; +import createDefaultClient from '~/lib/graphql'; import TerraformNotification from './components/terraform_notification.vue'; +Vue.use(VueApollo); + +const apolloProvider = new VueApollo({ + defaultClient: createDefaultClient(), +}); + export default () => { const el = document.querySelector('.js-terraform-notification'); - const bannerDismissedKey = 'terraform_notification_dismissed'; - if (!el || parseBoolean(getCookie(bannerDismissedKey))) { + if (!el) { return false; } @@ -14,9 +20,9 @@ export default () => { return new Vue({ el, + apolloProvider, provide: { terraformImagePath, - bannerDismissedKey, }, render: (createElement) => createElement(TerraformNotification), }); diff --git a/app/assets/javascripts/vue_merge_request_widget/index.js b/app/assets/javascripts/vue_merge_request_widget/index.js index b10e0e2bc88..f5dbcec7dbe 100644 --- a/app/assets/javascripts/vue_merge_request_widget/index.js +++ b/app/assets/javascripts/vue_merge_request_widget/index.js @@ -6,6 +6,7 @@ import Vue from 'vue'; import VueApollo from 'vue-apollo'; import MrWidgetOptions from 'ee_else_ce/vue_merge_request_widget/mr_widget_options.vue'; import createDefaultClient from '~/lib/graphql'; +import { parseBoolean } from '~/lib/utils/common_utils'; import Translate from '../vue_shared/translate'; Vue.use(Translate); @@ -31,6 +32,8 @@ export default () => { provide: { artifactsEndpoint: gl.mrWidgetData.artifacts_endpoint, artifactsEndpointPlaceholder: gl.mrWidgetData.artifacts_endpoint_placeholder, + falsePositiveDocUrl: gl.mrWidgetData.false_positive_doc_url, + canViewFalsePositive: parseBoolean(gl.mrWidgetData.can_view_false_positive), }, ...MrWidgetOptions, apolloProvider, diff --git a/app/models/clusters/cluster.rb b/app/models/clusters/cluster.rb index 2fff0a69a26..feac7bbc363 100644 --- a/app/models/clusters/cluster.rb +++ b/app/models/clusters/cluster.rb @@ -148,6 +148,7 @@ module Clusters scope :with_management_project, -> { where.not(management_project: nil) } scope :for_project_namespace, -> (namespace_id) { joins(:projects).where(projects: { namespace_id: namespace_id }) } + scope :with_name, -> (name) { where(name: name) } # with_application_prometheus scope is deprecated, and scheduled for removal # in %14.0. See https://gitlab.com/groups/gitlab-org/-/epics/4280 diff --git a/app/models/clusters/platforms/kubernetes.rb b/app/models/clusters/platforms/kubernetes.rb index 7f5f87e3e36..7ec614b048c 100644 --- a/app/models/clusters/platforms/kubernetes.rb +++ b/app/models/clusters/platforms/kubernetes.rb @@ -137,6 +137,14 @@ module Clusters kubeclient.patch_ingress(ingress.name, data, namespace) end + def kubeconfig(namespace) + to_kubeconfig( + url: api_url, + namespace: namespace, + token: token, + ca_pem: ca_pem) + end + private def default_namespace(project, environment_name:) @@ -154,14 +162,6 @@ module Clusters ).execute end - def kubeconfig(namespace) - to_kubeconfig( - url: api_url, - namespace: namespace, - token: token, - ca_pem: ca_pem) - end - def read_pods(namespace) kubeclient.get_pods(namespace: namespace).as_json rescue Kubeclient::ResourceNotFoundError diff --git a/app/views/projects/merge_requests/_widget.html.haml b/app/views/projects/merge_requests/_widget.html.haml index 5f2cb1cfcc4..47a0d05fc65 100644 --- a/app/views/projects/merge_requests/_widget.html.haml +++ b/app/views/projects/merge_requests/_widget.html.haml @@ -18,5 +18,7 @@ window.gl.mrWidgetData.approvals_help_path = '#{help_page_path("user/project/merge_requests/merge_request_approvals")}'; window.gl.mrWidgetData.pipelines_empty_svg_path = '#{image_path('illustrations/pipelines_empty.svg')}'; window.gl.mrWidgetData.codequality_help_path = '#{help_page_path("user/project/merge_requests/code_quality", anchor: "code-quality-reports")}'; + window.gl.mrWidgetData.false_positive_doc_url = '#{help_page_path('user/application_security/vulnerabilities/index')}'; + window.gl.mrWidgetData.can_view_false_positive = '#{(Feature.enabled?(:vulnerability_flags, default_enabled: :yaml) && @merge_request.project.licensed_feature_available?(:sast_fp_reduction)).to_s}'; #js-vue-mr-widget.mr-widget |