paasta icon indicating copy to clipboard operation
paasta copied to clipboard

Make CLI for getting history of deploy group - PAASTA-15923

Open EmanElsaban opened this issue 3 years ago • 2 comments

Purpose of this PR

In this PR, we introduce paasta get-deploygroup-history command which will show the history of a deploy group or of all deploy groups for a service.

Testing

Tried running the command and viewing the output on the test service compute-infra-test-service. To view history for a specific deploy group:

(py37-linux) emanelsabban@dev55-uswest1adevc:~/pg/paasta$ .tox/py37-linux/bin/python paasta_tools/cli/cli.py get-deploygroup-history -s compute-infra-test-service -l prod.main
Below is a list of deploy_groups History:
Timestamp -- UTC  Human time             deploy_group  Version
20220908T194642   18 days ago            prod.main     0ae13cf29612fb38bbf1ad40652cdf93abfe41df
20220908T191022   18 days ago            prod.main     47af2040482b05296966d2b56a1d5c02d0b8ca7d
20220906T193440   20 days ago            prod.main     c4ac93a98809383a275df749318c5e04524fc3ab
20220823T011019   a month ago            prod.main     1493a17af7af84c3867691563b1212adfa644a89
20220712T225935   2 months ago           prod.main     833c8de1d7a4879aa2b5544c4f9bcd6fe035ffe2
20220412T092229   5 months ago           prod.main     4d90f829a303bbaeb4e94532fc5bebef732853fe
20220406T212714   5 months ago           prod.main     d5b8f676542556d424c92fdd80406a640db1e345
20220310T120424   6 months ago           prod.main     ebd7c9ad2f81714782b27dc86b417c3e67e4a159
20211214T201524   9 months ago           prod.main     5aadf994b454d79850bd8f8191d32f99bc648345
20211214T201204   9 months ago           prod.main     cb9a0f083499f37f9e553218609690cc41224c4b
20210827T105809   1 year, 30 days ago    prod.main     eaf5d595284c035c9b88b654e243a5dacfc1fd15
20210825T134913   1 year, 1 month ago    prod.main     da13432b5cc0174494c19db796511c407b1cdfd7
20210719T105609   1 year, 2 months ago   prod.main     b19363cbfa933e7f8f0b24deeba742b937ea8e9d
20210621T105555   1 year, 3 months ago   prod.main     fe7447a8356d905bf7af5d9f0b49a192ea663eed
20210428T105802   1 year, 4 months ago   prod.main     54f7c6bad6ad08fd89e02b2217149dd3498ff62c
20210414T105616   1 year, 5 months ago   prod.main     5e064f9903296fb4277338039d8b5e9c0ebd7cbe
20210326T105557   1 year, 6 months ago   prod.main     f8256d7d6d643cb1c2c49019c2a2417ce278b11a
20201016T105546   1 year, 11 months ago  prod.main     191a485cce034b076748ff6fd054ade1726ea619
20200904T022358   2 years ago            prod.main     f90523c9ad2aeef60b0cfb7416d6bfd653de2ec7
20200903T105559   2 years ago            prod.main     34e5ff0ff3e044f146e18f5ccfcdf3626e2c2ae7
20200828T030835   2 years ago            prod.main     1a018479640555dc46345022b55fbcb13a19625e
20200827T202615   2 years ago            prod.main     40402d777f942caddad72850afa633b6b37b9999
20200827T105535   2 years ago            prod.main     41a908ac41851778a5ca95a379415b08fab8961c
20200213T115532   2 years ago            prod.main     be947a42838cb9c27f4b83b2c9cb422da4f33ac9
20200130T015451   2 years ago            prod.main     a8327cf91438d97d53bdccbaf429b0dfe57651dd
20200130T015111   2 years ago            prod.main     a0ec9b362e29123022e5cebb6612aedc58a0889b
20200109T010457   2 years ago            prod.main     3244a68c69f0c95bb53969bc3237c6cfa439e011
20200102T214514   2 years ago            prod.main     b707f09df500d7ac3b48d25cf7b1f8e7369d3ed0
20191230T215249   2 years ago            prod.main     291a339e3980273556e49e11fb67485ff437c812
20190610T211101   3 years ago            prod.main     187304ff16d3ed6cc0cbd0e732992919acf988ee
20190610T203910   3 years ago            prod.main     ba55baead358a20a9f9ce15578a23b56408faac5
(py37-linux) emanelsabban@dev55-uswest1adevc:~/pg/paasta$ 

To view history for all deploy groups:

(py37-linux) emanelsabban@dev55-uswest1adevc:~/pg/paasta$ .tox/py37-linux/bin/python paasta_tools/cli/cli.py get-deploygroup-history -s compute-infra-test-service -a
Below is a list of deploy_groups History:
Timestamp -- UTC  Human time             deploy_group           Version
20220923T192922   3 days ago             kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220923T122331)
20220923T102901   3 days ago             kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220923T032121)
20220922T225125   3 days ago             kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220922T154401)
20220922T224305   3 days ago             kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220922T153659)
20220922T200521   4 days ago             kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220922T125701)
20220922T195448   4 days ago             kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220922T124859)
20220922T102951   4 days ago             kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220922T032122)
20220922T035325   4 days ago             kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220921T204515)
20220922T032137   4 days ago             kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220921T201327)
20220922T005531   4 days ago             kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220921T174740)
20220922T003004   4 days ago             kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220921T172220)
20220921T235521   4 days ago             kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220921T164719)
20220921T232513   4 days ago             kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220921T161712)
20220921T225620   4 days ago             kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220921T032121)
20220921T225352   4 days ago             kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220921T154547)
20220920T102912   6 days ago             kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220920T032112)
20220919T102921   7 days ago             kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220919T032120)
20220916T102921   10 days ago            kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220916T032120)
20220915T103001   11 days ago            kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220915T032136)
20220914T102922   12 days ago            kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220914T032122)
20220913T102901   13 days ago            kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220913T032131)
20220912T103252   14 days ago            kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220912T032129)
20220909T102855   17 days ago            kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220909T032121)
20220908T232129   17 days ago            kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220908T161626)
20220908T225013   17 days ago            kubestage.nocommits    DeploymentVersion(sha=0ae13cf29612fb38bbf1ad40652cdf93abfe41df, image_version=20220908T124038)
20220908T194642   18 days ago            prod.main              0ae13cf29612fb38bbf1ad40652cdf93abfe41df
20220908T191022   18 days ago            prod.main              47af2040482b05296966d2b56a1d5c02d0b8ca7d
20220908T171211   18 days ago            kubestage.nocommits    DeploymentVersion(sha=c4ac93a98809383a275df749318c5e04524fc3ab, image_version=20220908T100242)
20220908T162027   18 days ago            kubestage.nocommits    DeploymentVersion(sha=c4ac93a98809383a275df749318c5e04524fc3ab, image_version=20220907T163740)
20220908T162009   18 days ago            kubestage.nocommits    DeploymentVersion(sha=c4ac93a98809383a275df749318c5e04524fc3ab, image_version=20220908T032120)
20220907T214815   18 days ago            kubestage.nocommits    DeploymentVersion(sha=c4ac93a98809383a275df749318c5e04524fc3ab, image_version=20220907T144031)
20220907T005510   19 days ago            kubestage.nocommits    DeploymentVersion(sha=c4ac93a98809383a275df749318c5e04524fc3ab, image_version=20220906T174732)
20220906T225438   19 days ago            kubestage.nocommits    DeploymentVersion(sha=c4ac93a98809383a275df749318c5e04524fc3ab, image_version=20220906T114521)
20220906T223252   19 days ago            kubestage.nocommits    DeploymentVersion(sha=1493a17af7af84c3867691563b1212adfa644a89, image_version=20220906T114521)
20220906T193440   20 days ago            prod.main              c4ac93a98809383a275df749318c5e04524fc3ab
20220906T102930   20 days ago            kubestage.nocommits    DeploymentVersion(sha=1493a17af7af84c3867691563b1212adfa644a89, image_version=20220906T032110)
20220905T102921   21 days ago            kubestage.nocommits    DeploymentVersion(sha=1493a17af7af84c3867691563b1212adfa644a89, image_version=20220905T032130)
20220902T102847   24 days ago            kubestage.nocommits    DeploymentVersion(sha=1493a17af7af84c3867691563b1212adfa644a89, image_version=20220902T032128)
20220901T102837   25 days ago            kubestage.nocommits    DeploymentVersion(sha=1493a17af7af84c3867691563b1212adfa644a89, image_version=20220901T032116)
20220831T102915   26 days ago            kubestage.nocommits    DeploymentVersion(sha=1493a17af7af84c3867691563b1212adfa644a89, image_version=20220831T032125)
20220830T102906   27 days ago            kubestage.nocommits    DeploymentVersion(sha=1493a17af7af84c3867691563b1212adfa644a89, image_version=20220830T032124)
20220829T102915   28 days ago            kubestage.nocommits    DeploymentVersion(sha=1493a17af7af84c3867691563b1212adfa644a89, image_version=20220829T032115)
20220826T102835   a month ago            kubestage.nocommits    DeploymentVersion(sha=1493a17af7af84c3867691563b1212adfa644a89, image_version=20220826T032125)
20220825T103408   a month ago            kubestage.nocommits    DeploymentVersion(sha=1493a17af7af84c3867691563b1212adfa644a89, image_version=20220825T032113)
20220824T102905   a month ago            kubestage.nocommits    DeploymentVersion(sha=1493a17af7af84c3867691563b1212adfa644a89, image_version=20220824T032124)
20220823T102948   a month ago            kubestage.nocommits    DeploymentVersion(sha=1493a17af7af84c3867691563b1212adfa644a89, image_version=20220823T032124)
20220823T063315   a month ago            kubestage.nocommits    DeploymentVersion(sha=1493a17af7af84c3867691563b1212adfa644a89, image_version=20220822T232534)
20220823T053935   a month ago            kubestage.nocommits    DeploymentVersion(sha=1493a17af7af84c3867691563b1212adfa644a89, image_version=20220822T223133)
20220823T032124   a month ago            kubestage.nocommits    DeploymentVersion(sha=1493a17af7af84c3867691563b1212adfa644a89, image_version=20220822T201247)
20220823T020716   a month ago            kubestage.nocommits    DeploymentVersion(sha=1493a17af7af84c3867691563b1212adfa644a89, image_version=20220822T185716)
20220823T011019   a month ago            prod.main              1493a17af7af84c3867691563b1212adfa644a89
20220822T230630   a month ago            kubestage.nocommits    DeploymentVersion(sha=1493a17af7af84c3867691563b1212adfa644a89, image_version=hellothere)
20220822T102935   a month ago            kubestage.nocommits    DeploymentVersion(sha=1493a17af7af84c3867691563b1212adfa644a89, image_version=20220822T032125)
20220729T000542   a month ago            kubestage.nocommits    DeploymentVersion(sha=1493a17af7af84c3867691563b1212adfa644a89, image_version=image202207191115)
20220712T225935   2 months ago           prod.main              833c8de1d7a4879aa2b5544c4f9bcd6fe035ffe2
20220412T092229   5 months ago           prod.main              4d90f829a303bbaeb4e94532fc5bebef732853fe
20220406T212714   5 months ago           prod.main              d5b8f676542556d424c92fdd80406a640db1e345
20220310T120424   6 months ago           prod.main              ebd7c9ad2f81714782b27dc86b417c3e67e4a159
20211214T201524   9 months ago           prod.main              5aadf994b454d79850bd8f8191d32f99bc648345
20211214T201204   9 months ago           prod.main              cb9a0f083499f37f9e553218609690cc41224c4b
20210827T105809   1 year, 30 days ago    prod.main              eaf5d595284c035c9b88b654e243a5dacfc1fd15
20210825T134913   1 year, 1 month ago    prod.main              da13432b5cc0174494c19db796511c407b1cdfd7
20210719T105609   1 year, 2 months ago   prod.main              b19363cbfa933e7f8f0b24deeba742b937ea8e9d
20210621T105555   1 year, 3 months ago   prod.main              fe7447a8356d905bf7af5d9f0b49a192ea663eed
20210428T105802   1 year, 4 months ago   prod.main              54f7c6bad6ad08fd89e02b2217149dd3498ff62c
20210414T105616   1 year, 5 months ago   prod.main              5e064f9903296fb4277338039d8b5e9c0ebd7cbe
20210326T105557   1 year, 6 months ago   prod.main              f8256d7d6d643cb1c2c49019c2a2417ce278b11a
20201016T105546   1 year, 11 months ago  prod.main              191a485cce034b076748ff6fd054ade1726ea619
20200904T022358   2 years ago            prod.main              f90523c9ad2aeef60b0cfb7416d6bfd653de2ec7
20200903T105559   2 years ago            prod.main              34e5ff0ff3e044f146e18f5ccfcdf3626e2c2ae7
20200828T030835   2 years ago            prod.main              1a018479640555dc46345022b55fbcb13a19625e
20200828T024855   2 years ago            dev-stage.everything   6136c31731bd07e612c30147ba48847d1cde7074
20200827T202615   2 years ago            prod.main              40402d777f942caddad72850afa633b6b37b9999
20200827T105535   2 years ago            prod.main              41a908ac41851778a5ca95a379415b08fab8961c
20200213T115532   2 years ago            prod.main              be947a42838cb9c27f4b83b2c9cb422da4f33ac9
20200130T015451   2 years ago            prod.main              a8327cf91438d97d53bdccbaf429b0dfe57651dd
20200130T015111   2 years ago            prod.main              a0ec9b362e29123022e5cebb6612aedc58a0889b
20200109T010457   2 years ago            prod.main              3244a68c69f0c95bb53969bc3237c6cfa439e011
20200102T214514   2 years ago            prod.main              b707f09df500d7ac3b48d25cf7b1f8e7369d3ed0
20191230T215249   2 years ago            prod.main              291a339e3980273556e49e11fb67485ff437c812
20190823T213824   3 years ago            dev-stage.everything   5a88160c056967d48b9775adc63fb1459e30b9d0
20190610T211101   3 years ago            prod.main              187304ff16d3ed6cc0cbd0e732992919acf988ee
20190610T203910   3 years ago            prod.main              ba55baead358a20a9f9ce15578a23b56408faac5
20190610T183800   3 years ago            dev-stage.everything   d24527d60eb44f091e95f3497d26d3679bdefdee
20190608T000104   3 years ago            mesosstage.k8s         78765aefdb7d3824fe270c0f43ba9cb863720ab3
20190607T114544   3 years ago            mesosstage.everything  c8d9ad4ce8687768cd5ad2c54a7e94189ec70b9d
20190520T105409   3 years ago            mesosstage.everything  679d7e1d639f7b5ed608bc8af0f457bdb10cd57f
20190424T162722   3 years ago            mesosstage.everything  2e87a6d58a69723e58e1e0b18e5e803301fb7688
20190410T194133   3 years ago            mesosstage.everything  fd7cc1a5b53f7c9e697e0d68cbd785fcd3714dfc
20190325T231433   3 years ago            mesosstage.k8s         baaf4d7b2ddff5ee9bc0561b1095add5360195a3
20190221T115411   3 years ago            mesosstage.everything  dd147b42fcb2c9edcc7f7872b529c17133ae3eeb
20190201T121945   3 years ago            mesosstage.everything  087afc573bcc7d41d25185315be7c282b721158a
20190201T121015   3 years ago            mesosstage.everything  719952a8cf00ffa796a2a4bc45d195bb82103603
20190124T213322   3 years ago            mesosstage.everything  de5339e40bc870b54f29e7e408effff9e2ea5c73
20181004T145638   3 years ago            mesosstage.everything  62709d551c32c70af2c44cbfca0407b56da539fd
20181004T062313   3 years ago            mesosstage.everything  1f8cfbc20677cc259a281c1b7438a61292521dd2
20180911T143948   4 years ago            mesosstage.everything  ee161a4b1350339c0435939ef3b98e0a7c127fb3
20180828T182241   4 years ago            mesosstage.everything  aa80f20f4e0e8aa87cfb21a4ec9f0d97ab4e35d8
20180828T062329   4 years ago            mesosstage.everything  2e4d373f597192ab7cdae158b68f5550a8cf76fa
20180723T215808   4 years ago            mesosstage.everything  d1f0b90ea0ea9edaf61a34944d1c20044d57a9b6
20180618T215756   4 years ago            mesosstage.everything  e9fc795ec881cfd1b9d4b68540504690deddd4ec
20180531T215816   4 years ago            mesosstage.everything  395489a9ae8b14f8c9cb12a1b363bc1428c40e62
20180522T220738   4 years ago            mesosstage.everything  5568eaf648248d62d7e4cc81fb50105436004873
20180307T225759   4 years ago            mesosstage.everything  a71f548bc87cd1b0c1a6f266a94d574dd037e5fd
20171031T152002   4 years ago            mesosstage.everything  9fb40287488f5ce045698db39bcb7437130de2f8
20170913T124219   5 years ago            mesosstage.everything  84555032a61310d4c52fdea9e654336ac89ebaa2
20170913T123836   5 years ago            mesosstage.everything  7257a2babea88c9488bf952adf3a211d910e95c6
20170614T215756   5 years ago            mesosstage.everything  d9f2109d36a4978a50bd0c00a7568ecba747404f
20170602T215806   5 years ago            mesosstage.everything  79393e1a6894677ec83977cce1c7e6cf85cec06b
20170511T215724   5 years ago            mesosstage.everything  4af136c541ac931732e190b4f91748e4a5f99ba6
20170307T225734   5 years ago            mesosstage.everything  9d2bb05633e67582fa6a415af086cce884e3b8c1
20170125T230743   5 years ago            mesosstage.everything  d9ff67d774205ddcd877a273845f39573677c931
20161202T211421   5 years ago            mesosstage.everything  8863b92e2326326536d969f488f525582f9570cf
20161202T210958   5 years ago            mesosstage.everything  df43a9013faf5fef68ac65dd27938902a9fdc85a
20161025T215801   5 years ago            mesosstage.everything  ba88d9ce92690997b18acba18298e3ec2a08966f
20161019T145631   5 years ago            mesosstage.everything  1d1e6dede0d63ed59596b6d0634175535b81ee4f
20160921T144728   6 years ago            mesosstage.everything  c64dcfdb29c80bbff0c1abd56bb34d73b40ff3aa
20160921T143241   6 years ago            mesosstage.everything  72ac853077dbd21d807d173a8c1961ff3dffc48c
20160915T145353   6 years ago            mesosstage.everything  cd8ba8dda77cb6ce021769590ad55de915340d2b
20160728T215820   6 years ago            mesosstage.everything  29f0937cf2206a8dba14c80142526d632095671a
(py37-linux) emanelsabban@dev55-uswest1adevc:~/pg/paasta$ 

EmanElsaban avatar Sep 26 '22 20:09 EmanElsaban

So this functionality actually exists in the paasta rollback command; if you don't specify a git sha, it prints a table of the last versions. E.g:

Please specify a commit to mark for rollback (-k, --commit).
Below is a list of recent commits:
Timestamp -- UTC  Human time     deploy_group  Version
20220908T194642   18 days ago    prod.main     0ae13cf29612fb38bbf1ad40652cdf93abfe41df
20220908T191022   18 days ago    prod.main     47af2040482b05296966d2b56a1d5c02d0b8ca7d
20220906T193440   20 days ago    prod.main     c4ac93a98809383a275df749318c5e04524fc3ab
20220706T210929   2 months ago   prod.main     1493a17af7af84c3867691563b1212adfa644a89
20220502T212404   4 months ago   prod.main     833c8de1d7a4879aa2b5544c4f9bcd6fe035ffe2
20220412T092229   5 months ago   prod.main     4d90f829a303bbaeb4e94532fc5bebef732853fe
20220406T212714   5 months ago   prod.main     d5b8f676542556d424c92fdd80406a640db1e345
20220207T231255   7 months ago   prod.main     ebd7c9ad2f81714782b27dc86b417c3e67e4a159
20211119T200826   10 months ago  prod.main     5aadf994b454d79850bd8f8191d32f99bc648345
20211105T184923   10 months ago  prod.main     cb9a0f083499f37f9e553218609690cc41224c4b

For example, to use the second to last version from 18 days ago used on prod.main, run:
    paasta rollback -s compute-infra-test-service -l prod.main -k 47af2040482b05296966d2b56a1d5c02d0b8ca7d```

I really like the idea of having a separate command for it, though - nobody would really think to run `paasta rollback` to get the list of versions, and it feels scary to run `paasta rollback` on a production service without actually intending to change anything.

Can you refactor this to de-duplicate the code between these two commands? (Either by importing functions from this new command into rollback.py, importing functions from rollback.py into get_deploygroup_history.py, or moving the code into some common place like a new file in paasta_tools/ or something)

Can I suggest renaming it `get-deploy-history` though?

EvanKrall avatar Sep 26 '22 22:09 EvanKrall

(it would also be nice if we could share some of this code with the code in paasta rollback so that we don't have two things that list deploy group history)

nemacysts avatar Sep 27 '22 19:09 nemacysts

Cleaning up and closing some very old PRs. Please re-open or nudge me if you’re still planning to work on this.

mattmb avatar Feb 21 '24 14:02 mattmb