From d94e440824c45b48fbee6396b389279a6967e3d0 Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Mon, 13 Apr 2020 16:59:27 -0700 Subject: toolchain-utils: Auto abandon old CLs Abandon CLs without any update that are older than 2 weeks. Ignoring days to preserve intentionally since sometimes CLs can be older than several days. BUG=chromium:1067029 TEST=unit tests Change-Id: Ie0f377a32ccf40331221c579401b5aaa2e84cf6c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2147820 Tested-by: Manoj Gupta Reviewed-by: Tiancong Wang --- auto_delete_nightly_test_data.py | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/auto_delete_nightly_test_data.py b/auto_delete_nightly_test_data.py index 429d0b4a..8f156549 100755 --- a/auto_delete_nightly_test_data.py +++ b/auto_delete_nightly_test_data.py @@ -179,6 +179,29 @@ def CleanChromeOsTmpAndImages(days_to_preserve=1, dry_run=False): return rv +def CleanOldCLs(days_to_preserve='1', dry_run=False): + """Abandon old CLs created by automation tooling.""" + ce = command_executer.GetCommandExecuter() + chromeos_root = os.path.join(constants.CROSTC_WORKSPACE, 'chromeos') + # Find Old CLs. + old_cls_cmd = ( + 'gerrit --raw search "owner:me status:open age:%sd"' % days_to_preserve) + _, cls, _ = ce.ChrootRunCommandWOutput( + chromeos_root, old_cls_cmd, print_to_console=False) + # Convert any whitespaces to spaces. + cls = ' '.join(cls.split()) + if not cls: + return 0 + + abandon_cls_cmd = ('gerrit abandon %s' % cls) + if dry_run: + print('Going to execute: %s' % abandon_cls_cmd) + return 0 + + return ce.ChrootRunCommand( + chromeos_chroot, abandon_cls_cmd, print_to_console=False) + + def Main(argv): """Delete nightly test data directories, tmps and test images.""" options = ProcessArguments(argv) @@ -201,12 +224,15 @@ def Main(argv): os.path.join(NIGHTLY_TESTS_WORKSPACE, dated_dir), options.dry_run) else 1 - -## Finally clean temporaries, images under crostc/chromeos + ## Clean temporaries, images under crostc/chromeos rv2 = CleanChromeOsTmpAndImages( int(options.days_to_preserve), options.dry_run) - return rv + rv2 + # Clean CLs that are not updated in last 2 weeks. + rv3 = CleanOldCLs('14', options.dry_run) + + return rv + rv2 + rv3 + if __name__ == '__main__': retval = Main(sys.argv[1:]) -- cgit v1.2.3