Skip to content

[Devops Adoption] Add Vulnerability Management metric for Devops Adoption API

What does this MR do?

Add Vulnerability Management metric for Devops Adoption API

Migration output

== 20210713144637 AddVulnerabilitiesCreatedAtIndex: reverting =================
-- transaction_open?()
   -> 0.0000s
-- indexes(:vulnerabilities)
   -> 0.0209s
-- remove_index(:vulnerabilities, {:algorithm=>:concurrently, :name=>"idx_vulnerabilities_partial_devops_adoption"})
   -> 0.0038s
== 20210713144637 AddVulnerabilitiesCreatedAtIndex: reverted (0.0265s) ========

== 20210713135152 AddDevopsAdoptionVulnerabilityManagementUsedCount: reverting
-- remove_column(:analytics_devops_adoption_snapshots, :vulnerability_management_used_count, :integer)
   -> 0.0059s
== 20210713135152 AddDevopsAdoptionVulnerabilityManagementUsedCount: reverted (0.0083s)

== 20210713135152 AddDevopsAdoptionVulnerabilityManagementUsedCount: migrating
-- add_column(:analytics_devops_adoption_snapshots, :vulnerability_management_used_count, :integer)
   -> 0.0060s
== 20210713135152 AddDevopsAdoptionVulnerabilityManagementUsedCount: migrated (0.0060s)

== 20210713144637 AddVulnerabilitiesCreatedAtIndex: migrating =================
-- transaction_open?()
   -> 0.0000s
-- index_exists?(:vulnerabilities, [:project_id, :created_at], {:where=>"state != 1", :name=>"idx_vulnerabilities_partial_devops_adoption", :algorithm=>:concurrently})
   -> 0.0307s
-- add_index(:vulnerabilities, [:project_id, :created_at], {:where=>"state != 1", :name=>"idx_vulnerabilities_partial_devops_adoption", :algorithm=>:concurrently})
   -> 0.0167s
== 20210713144637 AddVulnerabilitiesCreatedAtIndex: migrated (0.0508s) ========

Index creation takes 1 minute in #database-lab so I believe it's ok to keep it in migrate folder.

Query explain

https://console.postgres.ai/gitlab/gitlab-production-tunnel-pg12/sessions/5161/commands/18237#visualize-depesz

 Aggregate  (cost=1826.63..1826.64 rows=1 width=8) (actual time=8.843..8.844 rows=1 loops=1)
   Buffers: shared hit=4982 read=263
   I/O Timings: read=3.897 write=0.000
   ->  Nested Loop Semi Join  (cost=0.99..1826.63 rows=1 width=0) (actual time=0.273..8.837 rows=4 loops=1)
         Buffers: shared hit=4982 read=263
         I/O Timings: read=3.897 write=0.000
         ->  Index Only Scan using projects_pkey on public.projects  (cost=0.56..1361.60 rows=654 width=4) (actual time=0.126..3.452 rows=652 loops=1)
               Index Cond: (projects.id = ANY ('{278964,11520423,11574953,13348998,13664986,14097509,14645774,14921629,15477483,15572444,15662771,15704782,16239404,16513043,16700143,17181705,17210811,17743501,18925373,18977208,19042106,19402176,19532875,20401626,20867992,21224328,21483460,21734866,21740210,22133520,22907418,23601234,23944319,24134396,24200638,24763979,25534115,26630862,24693199,25567144,13083,13764,14022,14288,14289,16648,19776,20085,20086,20699,23081,27468,27470,27726,29286,32732,36743,72724,74823,83282,95156,98024,116212,140724,143237,145205,150440,227582,250324,250833,278964,280425,375711,387896,430285,443787,444821,455030,480929,554859,593728,629054,629060,684698,730448,734943,747741,766015,818896,876090,887372,928825,931715,998792,1075790,1120019,1209837,1265999,1329047,1379171,1441932,1470839,1507906,1533158,1777822,1794617,1911766,1990920,2009901,2127625,2317465,2337675,2347063,2383700,2651596,2670515,2694799,2725567,2890326,2903741,2953390,3010986,3010998,3094319,3101096,3305972,3362933,3430480,3466815,3588247,3605985,3631141,3651684,3662568,3662668,3674569,3698388,3871132,3871556,3885956,3885980,3933206,3933372,3991945,4108541,4121724,4149988,4157550,4176070,4186738,4186742,4262096,4341757,4382108,4534254,4542834,4562632,4870361,4921652,4949400,5019307,5261717,5420758,5647182,5981322,6043225,6043227,6092883,6185025,6457868,6466002,7071551,7540679,7602162,7792567,7937396,8343284,8362868,8671969,8987255,9134345,9149724,9359704,9438583,9492132,9780400,9927571,10024275,10614162,10619765,10786772,10947578,11047304,11067315,11080193,11261137,11446522,11997420,12051824,12104213,12212610,12274094,12425329,13015884,13053017,13284652,13368043,13453461,13473820,13683636,13831684,13942461,13997108,14018700,14025202,14071101,14146123,14217204,14290884,14378900,14520336,14694517,14707715,14771920,14785608,14850988,15032634,15158038,15297693,15363819,15420077,15445353,15447440,15461649,15502498,15687385,15815706,15816248,15943672,16110032,16505341,16573099,16603968,16732333,16842968,17039597,17113313,17133307,17318793,17334694,17345914,17429946,17522813,17661412,17930014,18060348,18307741,18307889,18331927,18594323,18594390,18629149,18741849,18776356,18860383,18863350,18893322,18912995,18943607,19031064,19461377,19657914,19861191,20059805,20326496,20468480,20510065,20904766,21250701,21439066,21479995,21565866,21751536,21751817,21808150,21819002,21967079,21967100,22217400,22363055,22795840,22874770,23105702,23156104,23176166,23617987,23627092,23838512,23854438,24467497,24671550,24873101,25031023,25033712,25205782,25312761,25398815,25402115,25416006,25417540,25418438,25837735,25847700,25861038,25981420,26130408,26250592,26576566,26744820,27244047,27490309,22351703,9281155,16302012,17843116,15114652,19722963,19969997,20352787,15065439,16552062,16706750,17192985,19533665,20376798,4359271,7682093,14588374,19310217,20085049,8377576,10071001,10071132,19974437,22438483,25691329,17349153,13017970,13017990,13018017,16488249,16756957,18641703,22414284,19922160,13815397,21324924,21628863,23544263,5677844,10523039,14402567,15962657,16297627,19551890,20842531,22850480,24345542,9184510,10400718,11688089,14404642,15828516,19019153,21764500,22517790,15019630,21635031,22487050,23203100,23344605,23586678,10747057,13142177,21055520,18256369,21055609,9237774,12558964,13017629,16863027,17616536,18256375,25838334,25839455,25840330,25840667,27079314,19043830,21731412,21731462,22046463,22070439,22382594,22408078,22409005,22413375,25944737,19890267,23069693,23069956,23070140,23070164,23070377,23070395,23176783,23176971,23505725,23599168,24302484,24313398,24313598,24317064,24460210,24542363,24544020,24544330,25230764,25298439,25537666,25538517,25560556,25829938,26217586,26217656,26549908,26598766,26638651,26808701,26808774,26882341,26882878,26997949,21055409,3828396,6329679,7453181,11915984,14372596,15393051,16590122,17253921,18439881,18663049,18991900,21525059,23495190,21055344,19800404,21055767,20209910,22215226,22336999,22390221,20110067,20744986,15412762,15499610,19936368,13490286,13672316,13672681,13673582,13673632,13673686,13673757,13673934,13674085,13674136,13675927,13675979,13676002,13676032,13676096,13676142,13676188,13676249,13676309,13676350,13824926,16613296,16622651,16819118,16819125,16819131,16819134,16819140,16819151,16819248,17023897,17043690,17134833,17530059,17821569,17823896,18770944,18789638,18792504,19290493,19290857,19315261,20498312,23508645,17863546,19209142,19245461,17257555,21824450,24339834,20466430,17584993,24470059,16816732,17311004,17433833,18759998,18760252,19265543,19536993,20516845,20747799,20791019,20916876,21573386,21796485,22249364,22566258,22637103,23597027,23690656,23730491,23916841,24300893,24451242,24501533,25158783,25247374,26079419,26584477,26815390,27209445,19843335,20623750,22679171,22734535,26566881,27214210,27219974,27226337,27227767,27229445,6374580,6374588,6374596,22810929,22810940,22811022,23928229,17245095,17990319,18208929,18766749,18976211,19279270,19568296,19655424,19993243,20081132,20630561,20839085,21649753,22847718,23512541,23526204,25969582,18855526,27051617,27051800,27286937,27484836,27484846,27484871,24907469,25216298,27494514,26615930,26615960,26616051,26616061,26616069,26698878,26699071,26699200,26710947,27209463,27220296,27221011,27456355,27456706,27456810,27457647,18899486,27260823,27261025,21573444,23101765,23740056,27213646,27327788,18256394,13954053,14130725,16549277,21486653,18899500,22848448,9172481,10947320,12507547,15486630,15926775,20360386,14392833,16913647,18156681,18875792,19028203,19720958,22130851,22433156,23345837,12138769,12959103,13327609,13437682,15710326,16466244,17966464,20107267,25891188,18406509,18922546,18650560,18766720}'::integer[]))
               Heap Fetches: 60
               Buffers: shared hit=3283
               I/O Timings: read=0.000 write=0.000
         ->  Index Only Scan using tmp_index2 on public.vulnerabilities  (cost=0.43..4.95 rows=16 width=8) (actual time=0.008..0.008 rows=0 loops=652)
               Index Cond: ((vulnerabilities.project_id = projects.id) AND (vulnerabilities.created_at >= '2021-06-01 00:00:00+00'::timestamp with time zone) AND (vulnerabilities.created_at <= '2021-06-30 00:00:00+00'::timestamp with time zone))
               Heap Fetches: 0
               Buffers: shared hit=1699 read=263
               I/O Timings: read=3.897 write=0.000

Screenshots or Screencasts (strongly suggested)

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

Does this MR contain changes to processing or storing of credentials or tokens, authorization and authentication methods or other items described in the security review guidelines? If not, then delete this Security section.

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team

Related to #328036 (closed)

Edited by Pavel Shutsin

Merge request reports