From f67f18d9492786e635e942beefa63d41f4c35765 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 9 Jul 2020 18:10:09 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .gitlab/ci/review.gitlab-ci.yml | 2 +- Gemfile | 2 + Gemfile.lock | 3 + app/assets/images/bot_avatars/alert-bot.png | Bin 0 -> 9362 bytes .../images/bot_avatars/security-bot.png | Bin 0 -> 9561 bytes app/assets/images/bot_avatars/support-bot.png | Bin 0 -> 9806 bytes .../components/alert_details.vue | 6 + .../components/alert_metrics.vue | 56 ++++++ .../fragments/detail_item.fragment.graphql | 2 + .../boards/components/board_new_issue.vue | 19 +- .../javascripts/monitoring/stores/actions.js | 4 +- .../pages/projects/commit/pipelines/index.js | 2 + app/helpers/ci/jobs_helper.rb | 23 +++ app/helpers/jobs_helper.rb | 19 -- app/models/audit_event.rb | 1 + app/models/concerns/avatarable.rb | 6 + app/models/user.rb | 2 + .../admin/users/_user_listing_note.html.haml | 2 +- ...system-bots-alert-support-and-security.yml | 5 + .../217768-surface-link-to-chart.yml | 5 + .../defect-pipeline-related-mr-spinner.yml | 6 + changelogs/unreleased/swap-to-oj.yml | 5 + config/initializers/multi_json.rb | 5 + config/initializers/oj.rb | 4 + doc/administration/instance_limits.md | 32 ++++ .../reference_architectures/2k_users.md | 166 +++++++++--------- doc/api/groups.md | 12 +- doc/api/members.md | 2 +- doc/api/projects.md | 10 +- doc/ci/docker/using_docker_images.md | 6 +- doc/development/architecture.md | 2 +- doc/development/fe_guide/graphql.md | 2 +- doc/install/aws/index.md | 2 +- .../group/bulk_editing/img/bulk-editing.png | Bin 99844 -> 0 bytes .../bulk_editing/img/bulk-editing_v13_2.png | Bin 0 -> 123971 bytes doc/user/group/bulk_editing/index.md | 6 +- doc/user/index.md | 2 +- .../img/terraform_plan_widget_v13_2.png | Bin 42227 -> 33916 bytes doc/user/infrastructure/index.md | 2 +- doc/user/markdown.md | 2 +- doc/user/permissions.md | 2 +- doc/user/project/bulk_editing.md | 6 +- doc/user/project/img/bulk-editing.png | Bin 197667 -> 0 bytes doc/user/project/img/bulk-editing_v13_2.png | Bin 0 -> 132734 bytes ...ctions_menu_create_new_dashboard_v13_2.png | Bin 0 -> 11479 bytes .../img/metrics_settings_button_v13_2.png | Bin 0 -> 1901 bytes doc/user/project/integrations/prometheus.md | 40 ++++- .../project/issues/issue_data_and_actions.md | 2 +- .../project/operations/alert_management.md | 25 +++ .../img/alert_detail_metrics_v13_2.png | Bin 0 -> 27616 bytes lib/gitlab/json.rb | 115 ++++++++++-- lib/gitlab/json_logger.rb | 2 +- locale/gitlab.pot | 29 ++- package.json | 1 + spec/features/projects/commit/builds_spec.rb | 27 ++- .../components/alert_metrics_spec.js | 67 +++++++ .../helpers/init_vue_mr_page_helper.js | 6 +- spec/frontend/merge_request_tabs_spec.js | 2 +- spec/javascripts/helpers/class_spec_helper.js | 9 - .../helpers/filtered_search_spec_helper.js | 1 - spec/javascripts/helpers/index.js | 3 - spec/javascripts/helpers/locale_helper.js | 11 -- .../helpers/set_timeout_promise_helper.js | 4 - spec/javascripts/helpers/text_helper.js | 18 -- spec/javascripts/helpers/tracking_helper.js | 5 - .../helpers/user_mock_data_helper.js | 14 -- .../helpers/vue_mount_component_helper.js | 2 - .../helpers/vue_test_utils_helper.js | 5 - .../javascripts/helpers/vuex_action_helper.js | 102 ----------- spec/javascripts/helpers/wait_for_promises.js | 1 - spec/javascripts/jobs/mock_data.js | 2 - spec/javascripts/matchers.js | 55 ------ .../ci/parsers/accessibility/pa11y_spec.rb | 4 +- .../conduit/response_spec.rb | 2 +- spec/models/user_spec.rb | 12 ++ yarn.lock | 7 +- 76 files changed, 588 insertions(+), 418 deletions(-) create mode 100644 app/assets/images/bot_avatars/alert-bot.png create mode 100644 app/assets/images/bot_avatars/security-bot.png create mode 100644 app/assets/images/bot_avatars/support-bot.png create mode 100644 app/assets/javascripts/alert_management/components/alert_metrics.vue create mode 100644 app/helpers/ci/jobs_helper.rb delete mode 100644 app/helpers/jobs_helper.rb create mode 100644 changelogs/unreleased/210523-visually-align-system-bots-alert-support-and-security.yml create mode 100644 changelogs/unreleased/217768-surface-link-to-chart.yml create mode 100644 changelogs/unreleased/defect-pipeline-related-mr-spinner.yml create mode 100644 changelogs/unreleased/swap-to-oj.yml create mode 100644 config/initializers/multi_json.rb create mode 100644 config/initializers/oj.rb delete mode 100644 doc/user/group/bulk_editing/img/bulk-editing.png create mode 100644 doc/user/group/bulk_editing/img/bulk-editing_v13_2.png delete mode 100644 doc/user/project/img/bulk-editing.png create mode 100644 doc/user/project/img/bulk-editing_v13_2.png create mode 100644 doc/user/project/integrations/img/actions_menu_create_new_dashboard_v13_2.png create mode 100644 doc/user/project/integrations/img/metrics_settings_button_v13_2.png create mode 100644 doc/user/project/operations/img/alert_detail_metrics_v13_2.png create mode 100644 spec/frontend/alert_management/components/alert_metrics_spec.js rename spec/{javascripts => frontend}/helpers/init_vue_mr_page_helper.js (92%) delete mode 100644 spec/javascripts/helpers/class_spec_helper.js delete mode 100644 spec/javascripts/helpers/filtered_search_spec_helper.js delete mode 100644 spec/javascripts/helpers/index.js delete mode 100644 spec/javascripts/helpers/locale_helper.js delete mode 100644 spec/javascripts/helpers/set_timeout_promise_helper.js delete mode 100644 spec/javascripts/helpers/text_helper.js delete mode 100644 spec/javascripts/helpers/tracking_helper.js delete mode 100644 spec/javascripts/helpers/user_mock_data_helper.js delete mode 100644 spec/javascripts/helpers/vue_mount_component_helper.js delete mode 100644 spec/javascripts/helpers/vue_test_utils_helper.js delete mode 100644 spec/javascripts/helpers/vuex_action_helper.js delete mode 100644 spec/javascripts/helpers/wait_for_promises.js delete mode 100644 spec/javascripts/jobs/mock_data.js diff --git a/.gitlab/ci/review.gitlab-ci.yml b/.gitlab/ci/review.gitlab-ci.yml index d432afd7dad..4e3a80372a6 100644 --- a/.gitlab/ci/review.gitlab-ci.yml +++ b/.gitlab/ci/review.gitlab-ci.yml @@ -43,7 +43,7 @@ review-build-cng: HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}" REVIEW_APPS_DOMAIN: "temp.gitlab-review.app" # FIXME: using temporary domain DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}" - GITLAB_HELM_CHART_REF: "master" + GITLAB_HELM_CHART_REF: "v4.1.3" environment: name: review/${CI_COMMIT_REF_NAME} url: https://gitlab-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN} diff --git a/Gemfile b/Gemfile index 62d6d3767ed..2d5b8c3cdb5 100644 --- a/Gemfile +++ b/Gemfile @@ -500,3 +500,5 @@ gem 'valid_email', '~> 0.1' # JSON gem 'json', '~> 2.3.0' gem 'json-schema', '~> 2.8.0' +gem 'oj', '~> 3.10.6' +gem 'multi_json', '~> 1.14.1' diff --git a/Gemfile.lock b/Gemfile.lock index f68fd455352..a14b657a983 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -687,6 +687,7 @@ GEM octokit (4.15.0) faraday (>= 0.9) sawyer (~> 0.8.0, >= 0.5.3) + oj (3.10.6) omniauth (1.9.0) hashie (>= 3.4.6, < 3.7.0) rack (>= 1.6.2, < 3) @@ -1312,6 +1313,7 @@ DEPENDENCIES mimemagic (~> 0.3.2) mini_magick minitest (~> 5.11.0) + multi_json (~> 1.14.1) nakayoshi_fork (~> 0.0.4) net-ldap net-ntp @@ -1319,6 +1321,7 @@ DEPENDENCIES nokogiri (~> 1.10.9) oauth2 (~> 1.4) octokit (~> 4.15) + oj (~> 3.10.6) omniauth (~> 1.8) omniauth-auth0 (~> 2.0.0) omniauth-authentiq (~> 0.3.3) diff --git a/app/assets/images/bot_avatars/alert-bot.png b/app/assets/images/bot_avatars/alert-bot.png new file mode 100644 index 0000000000000000000000000000000000000000..985d67d6179565f31d58cd710914eda7abebae55 GIT binary patch literal 9362 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 literal 0 HcmV?d00001 diff --git a/app/assets/images/bot_avatars/support-bot.png b/app/assets/images/bot_avatars/support-bot.png new file mode 100644 index 0000000000000000000000000000000000000000..1335205c19127a4c38c53afcfd3b5229aea9f6ab GIT binary patch literal 9806 zcmcI~by!qi(C{uSvZ%DE$kHh)z0$BWNT-5?bT>%D5`rKp9U|QgBDEl(5)w;GExmMu zr0`w&eeXZ-|L=XC`|P=MV&=@5+A|ZbrXojp`_XL>2t=qLFRcLrfvx_%&|3h+d&PJR z_#tqT*L4Mf?lb>;!3r8odjJsZsv#!{su+N+10N7e31tZos5<7(r7<1|#Jr>+EurNJ z-kx=|(|MUmyEoT(Qcb{wq^G~v@fm-3r|+Y+>Dy}lp#i(TlJp0f*7zlC2F08v3|~sL zic|37y(lugM(DrI7nL_@=YRK_P|m%jBkaX3%uZvTmz_c}P;U&^VAY4737a|51-=m< z6!r0+82oYfjh*>Dp>1sZ@e8#sE3(RR5#B+)BS|f6(N%EGNx6B{QgtE~}kVfeqg~YJY&(`$MY63YnTTQ0cj;M@?Z zKv{@wGm1x*X4UfwHNY8=FbE_z_ME3XbKH5UFZ3@fK9mmsp@dXHgY7uA zrp0L4Tea{Mhbb)@QBG1sC2KF62T3(-|=on3#Z8u(BVR@NVKb+RM>|9QvHdcrUMxl2_X88Lf!7c9O5?Wg zGF_x2027)#-x7xBBzQ+3@Sqk*J=#cjb@&gzx}%Q6FIf~%o*SR9DX-;9yodrp_C^9( zm}-eFm2+RLoAQmdUzka|{@v7XRD=CVRc$M*HQMNksdOEy4g*2nKnTYV);=jWw2~>k zlX{-3dFA@E--&HgU95yCHVApkmhvT4K`UCAv7PXbtEUvDXh4yrF!+@uA~;d!_orMt zY4#%fL6hANX8fqBQ70Y8r`SOhfzMmyv!}JVPxL9(p7Y#UUH*_>vfQzN@h^905gz>! z)#Hy-6++5a_w3h@YbGN)D%iAzPwl)4NucRkMhChBuy?xVk?3ZMVQ(#snuMw4rjxFM z!Ew80MFt6OrX)gYS}EY-Ue5;(*g9nnOa}jRWJ0tNy>WH)1@s#Z&Z8-fIpJ|R%Cew& zOlkyr3&vty@<#yt3XmTkEzQe62Jw#`+pI|0`W>?oXymCoBPk$!buy)h77R3~3Qf4@ zUN*<9TR{_gCli>FuJs9G9TD>Y@L$ZV%Ngkaq?8;GUDGVOb1egT2&>5@U55gO&H!UsKs)<)cjKJ z5OTP_T30~di-2u*lv3@{KHtJuFBgsd%(MHKpZ|8m<10z>s4z|HE;}N>L_X>P?~s}- z>!VBK3c}nhGlDZAVibiJLsdw0YWkfQpiOt#Nor^l}?|kJ|X)d#r zcGTQr&-_+4-JnJzxW=eBZi_j`+EOcMSLVR=!5VeM=o0q2^a4v6@2e4A(0w^WeJ3co zLshR*2;wGjibH@a^hRtuebte2;sv3R)0=CvWTu6_CvY?3YE-&>9EOs5gPJww%f2gr zNzfDr#GRW2jrY4MV5^8S{L2@K79BpA(zv0E`A9ay%EN&rmb|y;Fpc{7LhP!;TE{O@ zm904gX6PDhUnWQRk?#|X+}n&v)ke0)ceT$MyF&>qW9CTm&%H29=N;Mh%}|$Md~KIJ z;Q~X(3nvR~kZsG4Kvjwahziky9nLxh=K1KR6ILP+yT$!DID=XK+irNu7g5#gpAg?8>M z`?Ut{o}jHDd<+HWc5F+G%eVFuf4+84^)*1uXl%ev`>{_7p3D(0!gs%d`tbU8W~ z80uTnHi7O5P5IKUG!+sT8x!4HpW-Y=+$`~^61sDF;TthrzZwKd(WTn zRWzd5W5i`+vL(ariw#jxP{H4i12p95>9)q8r^fIwE=V0+zRBht^NZaId9khQr^XA~ zcb27cFl+GOAdFmc+_N%l>^tQByzZUH92NW(HXXG4_oK^oOA zZd#h;jyaehgX4Q!J%(C=hySgBKNF8Y4S6IB!^6`|XED`cIJTZ@GT+=##wQP7?&f-g za!nX#$@`?!v9fN(H`ezAQ;4NAFGUadA z8k}>K=s#(r;yV5tXs+#;SCwWe>v#PdoIl-aU%^Um5IR90JVxbl|cj^D6~ zbdDq4#_RposJq@f__+!HtnXJyv=#$F-3X{`2k*{o|i~ZDDD-R?xNQ3L!sz zH=?u>ZKG4nBsxe&d%ZkCxlK9}+(3Z`pQChqD zw%MZ^EV`$?D#s@9&(6>Z0KR7vy-1fe9qR!c$c4}oUDvf&ZHgT^QmCcnIEIa=)H#4+ zHs~52dkH4?6!mz{hKSciL^g=;M^_K8%#D!#Kp;5P)Pc?ImSb$9*W?G;t|cXd=wiLs znEC(rh)Rq8Y?CixOjeJgi2iuOgE(q1DQAC+1S610LuAe-VNd14>wZ$|$+t>f8x%F< z#Z~nmL^Rz{agzOU;*cYpdj^huzEL(}buJ6t_26=MpY&bZG_^dBbI;xvLpRL1B0=9# za|8C`UZU$-btlZ{LR*P*s3S5x?oek=$ARksu%*i2G)710nwLvHCiYUVKl(AJ9IwT& zlRRFOvTJmK*Qi~`zk-dK|IPmrgb_G?JZUv66cZbk z6RawWP4?&QfaS=_c_{U#Q~kydY_jt|({=mZMtZodU(Bx|p!VG8KZGe~-k-?ud*5F8 zXW2a|I+JoMue+m%-}xsFuNW}70an~Z3H_w((OypF7?R60gVu4F_Pidd-E)K^@EN|E zYacm|H;uk7%6WC7uI&^@X-eSN7jH&p((_mS+~NQRU|Pyq6GN$B(=Vr3o5_Yc@1?ia z{l>VZf>?a8DE`Y$!uHCjv`z_*8&iKKff#Hb0|d=B7t6-@@9SVmZ2$%y3&+1! zQ7jUKExOz=ff#Zm+F>(%am7~Mu; zJF%yR%lodZ8m?+Ha$HYI@njGCv#?G`X;j=w-cfmoO|+0r^yGs2uCDwRYAD?l!3ytsT(dZh zfr%`}2vapDK4(-h$0)gP5^9fxoNYQQpT8n;gPmCCG8qBpg7~h=DnYt`2ud}(9BXD|Rvs$GC@bX9B02LVA9D>F`&cBnw};F)_EAl){|~-R>ed4suTp=YdfmNzlfXj!S>XJN1h=$> zvVH-YX=X!ogx2V@wH_0120oc?aRN@rMoYctF}3pIb=P} zO$3tO5p}ay3>6bpk6WLgavzz;kYw*dbVtLm8fku&G$)VsF1I_;H%73ssiu|f4`!^SmkYGsr&+rjZ*VM-^77esR#>u! z%5IJ21GIHNw={*;Br>UpU-tUS=m`=DPXu=`?zoDgi{pzWte2%d+n^O)rAjcon{khsgh#WG;wejxM z&kswip(6^&Kf^h#&;>fu{;ULLdMUuft-Y|mPM@^6U?BAB&%iG&C&H98@n#4K&s!FS1@ z*=FHJO-L0R!pICTyWHb3T2#xnJA0f4o*NH+_b1or@$y&Fsv_qgd)->5GvC=>6}@@^ zB{BS>h!4q*=)_Isrqgr&(lZ z0DscnZE=vXJW#p*o~uXzs`(-D*D_%L*HhUMa&|uLF5Q*PA7#rD6`(+2Gl%nypLC`HdML{xP0_*?&??kdUVnkMJQj(R2-CZ0#o1=^}=jUKT(9YtfmX(A2V~Q*MgUFZQoBy*+T;5psflJVBP(uv9 zhHwAvqRMIhaXFfO_N-vK`+}ki0hi5=^XmwZ>fTQ5<$MaraA=>w>w7v9TX?H~vpM*w zXzjMd76N~s(%(s`Xk+crx(1zYYzBm=c5})fZ5VSgjoENNXXTN^O4B9`+AX&|z(QH( z)lBhP^%yl1^W=<$op*D0EvK=ye@W@x>y?c}$A_{G&~BWW9v~lpXQ%G1!*u8G1bseP6;s5CNfFO{zdph_ z+sLMI?WPKuTtl z!aq+PY+s*x)aP227uY=U`^`D^fhcX0u;x2;l9s?>(b*O&A!}#qCSkY}R=roUljW}; zOiNqyXp`dB2t}~1r`dI8qt0ns+_wp?-9d-aNp5q|&x!b)IC|F2Ho*!}8x_jdBPVdH zng!WU&duf@wm3C*&g>i*1&jO-GEc&E`_i9OP7KR97!LTB@4-7Kq9K84!;!1O;ta&6 zr05r-D)&$CN`xm;iQGQDPM#sO9H;D!%(UP3S<-hA*2Al4F;o3trO$MPZx}9RmKzpN+ySXnIvwa8M=il9SS`*Ie>p%zGkE? zuwm5N89Y0L9}PX=p7cI{{bzEjXwp(~e1_O+tj?R%>p0XN)&A9-Lj{V7+J?|qPA4*) zebIN{=XZI+YG=e5-m@UG_dVNwtbL+x+nrjC9Blt&T;kJHc{}Fw{Rd-f8oK9d?`(~J zXG_lHc?Kvs;t{bghf!^%pdDKWbSkrE+R$w__^sx&5e9+4HCx!2 zcsnuPlsNuNrz)aT&+deQqj_*=z1=o`r*a0gHw6Est&XF5i!rPGar1*AZ@e&k#Z8c} zS+kw?`~okeZa1yl5~;*DL^A-~t%K&-AV)As@$oBMPgd#kzMj9y^6_J}b@d;v{k(+k zeB=L=G?DZzSoAmXl-`>YhAEnu+TZP>Z^6Ca-d@`T&XSR$$L-|MpQpDItG2{u!oX(6 z#VeSV@rx|0h;C<^yqM_jjvoZg(^(Ziz}{BKyJfFT9*EZiy%Yfw(XL`y?nGeZ^zNW1ASItY{|ndK_LcSw6md%##A}Ejq`CrUrJOzEor|(#s7+)>9BVexftypFWSjwxmVR$OM>bhaJ+}`?wtNPSez2 z-bCyxJiq+XJCHx|>o^K^I<;Uc-;rJ@&Z@YiP%kj>!9^QL{&aWroK!|+aP@yRzdn`t zDs_IIFiVo=0rlBeoro_F6xUVM{#H4$V96i%EPTSYMq*&mHnfsD9KWprGjBT;%Cd5~ zmU;$gUDU_?mjPFg73Ood4QLdM8jZyx7UO0P=M0s%7psap)&zgxr!?((8@Rje9=I*{ zO+<$*eD+mJa?9$rK_@@p#1YEa5Rgq0$YPcqij)J#l<&B?EbcWm_9qIAXUYw2M{Wod zmGF4CY7bRDpzW}E?Pwmz3i(>LLo&@1Sh*0tYea7=u_lA?spd0YTn@Ns+9bZV|9n=b zV!ueaBSQ@q-7o6Pi}u1VSUJJ#@m9%9Z`?uu7&5+cB7RyEu)8u5(X4Jbz&F8oIMaDm z7=TL6yjHnjRG6bU^H$cMz;;HF@(oUudDCU}6OUW1d_?O%aZ&aDJ29lX#rhW>l^Jk$ zVnk2uc^IkhH`fC$@5nU^yy*BGaQ#^!7inbJYLqC3KsgCMh*i z0p)eB;bNR|eR=EeLHuUV+!Fj-OJC$m9+8p5ECOocq{d|?Kh&x7@=^HLr$&{vpOq+{ z2VoJ0_e#v>9$_9CpP9&fL5S%!_*~Vto#t;J2#uta7!3WIHe@9}B}W6fIybo`9^J*) zFTxeLK;09qZINsLY*$jBKxMt)`NH^nk@Dz6CiE8>I(%G{tc~;dfXuKpdK7Gm!bP&YZ|HRaHI($uG(^o=x3bTvne?f{a`$(!ct_+s(qE_ZCNR?II_fqrW4oFXKlNB_K^=<7h)ifG z4zDI21h_Iz;$AFQw)Xke7{p;7QEwbCwzQwIX(MW%vJ!&78I%-z$cS%HXOlgiH8DEe z5zOJ+rUw<>ZN>h&KTzhzxTfVd_Zz8W<}Q67)WAuw+9}$pC7DlX721TGHPidbcBW($ z+^D4MIKo=CKIFX+)XdVNb0l-Br{{yTxl zR=l7`S!!_%qDq?7mC44eLIlvY=AvCuRB+I#Ao;j36jYOMt!2$?QsI=yO$FS}?44Uj zbc&IW4yLwkF@j>-v&)XSBa?Os!J?|xue#FC?-h6TKbcSlaTyh~s^uz21l(6~he@#w z65})}`$pV(7v*sKXo-8M0BMy=X?s^`$fh_kH`g?tq#Dl0)Z5LY_Sq9Y0 zF!>htu)rA_h#UC8|H$`HTu&u^;wdXzm@IF>iTG6z$E8p*`HOi(LEJ9*V=Dk7u&j$HMeg`rwCYGe6iUVdF*&ui+HgJSK1%k zn54nX>kN*7)WI|V7D7q%+Czk+K5(ro^-=Rpw-$|{5|@j>^*|Fvoz0mEj)y_(IUMD) zqal`SA=17IgVdRF1w!wV2Yw?#M|VI>+>IGXG@w>t#yHj9T%^#ik_cfU^7muNa6|(Y zq>hy<@ReZ-G-Q%4OEie!yGy$?T^}BJn_h|ToR~b2ixz67x*{5QYPW0S{fAhG{P)G? zz9QejfLsE(62$v1c)PlVmBfdiGxut@EI%ySo$Tq1+zDLZ?5>H5*={0j_;s6~yD@y# zW83m*6CCF&fTdoNh?n}LNb@R|Ga2BkCgl_adMb(>TP(g42!%wQ2xljn0IDL_ZK2s;g~}LrNYv{|Lg@ zSA3iNeF_xvfIiFEuvaATeK^920_PF7-0lWE0f5_kx&DFoz(7`iaTCG-tj7u@$QMU$ zn*2Z$+j-NJ0}3}5Hg1}hKr>N^?&D%_t_o$k?F}|z2;X~KWjdFYA!We^zkeXL`#>d# z60pAsmUKW;fRmCcI53P(&i$WUFftOTI?4W*#RDou#`I!HlEKX1$OA90Lx3cVM(u^n}?BiHFO~nRkU#{x-cCV$m!=Z{VrZ3K=bMc` zRU!+Dcli%Y%xLA5d3wVma;Vi_5c;MGRK)B>{J3cX)ed_qR5#4$H2z4^;_8aStt0ZN zb>gPi_Mt@ZgeM<0e+TZrTzjFQsL2x^^TT~a=~BV)L!eUY|Mn^Ti`&fs`ItI)cjzA? N1sN6T3duJ?{|^afb@%`P literal 0 HcmV?d00001 diff --git a/app/assets/javascripts/alert_management/components/alert_details.vue b/app/assets/javascripts/alert_management/components/alert_details.vue index 324103c482f..8749f102442 100644 --- a/app/assets/javascripts/alert_management/components/alert_details.vue +++ b/app/assets/javascripts/alert_management/components/alert_details.vue @@ -26,6 +26,7 @@ import Tracking from '~/tracking'; import { toggleContainerClasses } from '~/lib/utils/dom_utils'; import SystemNote from './system_notes/system_note.vue'; import AlertSidebar from './alert_sidebar.vue'; +import AlertMetrics from './alert_metrics.vue'; const containerEl = document.querySelector('.page-with-contextual-sidebar'); @@ -36,6 +37,7 @@ export default { ), fullAlertDetailsTitle: s__('AlertManagement|Alert details'), overviewTitle: s__('AlertManagement|Overview'), + metricsTitle: s__('AlertManagement|Metrics'), reportedAt: s__('AlertManagement|Reported %{when}'), reportedAtWithTool: s__('AlertManagement|Reported %{when} by %{tool}'), }, @@ -53,6 +55,7 @@ export default { TimeAgoTooltip, AlertSidebar, SystemNote, + AlertMetrics, }, inject: { projectPath: { @@ -329,6 +332,9 @@ export default { + + + +import Vue from 'vue'; +import Vuex from 'vuex'; +import * as Sentry from '@sentry/browser'; + +Vue.use(Vuex); + +export default { + props: { + dashboardUrl: { + type: String, + required: false, + default: '', + }, + }, + data() { + return { + metricEmbedComponent: null, + namespace: 'alertMetrics', + }; + }, + mounted() { + if (this.dashboardUrl) { + Promise.all([ + import('~/monitoring/components/embeds/metric_embed.vue'), + import('~/monitoring/stores'), + ]) + .then(([{ default: MetricEmbed }, { monitoringDashboard }]) => { + this.$store = new Vuex.Store({ + modules: { + [this.namespace]: monitoringDashboard, + }, + }); + this.metricEmbedComponent = MetricEmbed; + }) + .catch(e => Sentry.captureException(e)); + } + }, +}; + + + diff --git a/app/assets/javascripts/alert_management/graphql/fragments/detail_item.fragment.graphql b/app/assets/javascripts/alert_management/graphql/fragments/detail_item.fragment.graphql index 83ce79c986b..d9e4d7505e7 100644 --- a/app/assets/javascripts/alert_management/graphql/fragments/detail_item.fragment.graphql +++ b/app/assets/javascripts/alert_management/graphql/fragments/detail_item.fragment.graphql @@ -5,6 +5,7 @@ fragment AlertDetailItem on AlertManagementAlert { ...AlertListItem createdAt monitoringTool + metricsDashboardUrl service description updatedAt @@ -15,4 +16,5 @@ fragment AlertDetailItem on AlertManagementAlert { ...AlertNote } } + } diff --git a/app/assets/javascripts/boards/components/board_new_issue.vue b/app/assets/javascripts/boards/components/board_new_issue.vue index c72fb7b30f9..02ac45f8ef9 100644 --- a/app/assets/javascripts/boards/components/board_new_issue.vue +++ b/app/assets/javascripts/boards/components/board_new_issue.vue @@ -1,6 +1,6 @@