From 0848aba7b981c7402dc0ffae1c09dd17be45a039 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Thu, 28 Sep 2023 14:50:20 +0200 Subject: [PATCH 1/2] add support for keep_packages_locked on request revoke jsc#OBS-134 --- osc/commandline.py | 4 +++- osc/core.py | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/osc/commandline.py b/osc/commandline.py index 8ffdeef1..1bcefe5c 100644 --- a/osc/commandline.py +++ b/osc/commandline.py @@ -3044,6 +3044,8 @@ Please submit there instead, or use --nodevelproject to force direct submission. help='non-interactive review of request') @cmdln.option('--exclude-target-project', action='append', help='exclude target project from request list') + @cmdln.option('--keep-packages-locked', action='store_true', + help='Avoid unlocking of packages in maintenance incident when revoking release requests') @cmdln.option('--incoming', action='store_true', help='Show only requests where the project is target') @cmdln.option('--involved-projects', action='store_true', @@ -3502,7 +3504,7 @@ Please submit there instead, or use --nodevelproject to force direct submission. opts.message = edit_message(template=tmpl) try: r = change_request_state(apiurl, - reqid, state_map[cmd], opts.message or '', supersed=supersedid, force=opts.force) + reqid, state_map[cmd], opts.message or '', supersed=supersedid, force=opts.force, keep_packages_locked=opts.keep_packages_locked) print('Result of change request state: %s' % r) except HTTPError as e: print(e, file=sys.stderr) diff --git a/osc/core.py b/osc/core.py index 57fd40ee..fa74a57a 100644 --- a/osc/core.py +++ b/osc/core.py @@ -4726,12 +4726,14 @@ def change_review_state( return root.get('code') -def change_request_state(apiurl: str, reqid, newstate, message="", supersed=None, force=False): +def change_request_state(apiurl: str, reqid, newstate, message="", supersed=None, force=False, keep_packages_locked=False): query = {"cmd": "changestate", "newstate": newstate} if supersed: query['superseded_by'] = supersed if force: query['force'] = "1" + if keep_packages_locked: + query['keep_packages_locked'] = "1" u = makeurl(apiurl, ['request', reqid], query=query) f = http_POST(u, data=message) From f6cb22824226990a149ab2c9383da464e37bba60 Mon Sep 17 00:00:00 2001 From: Daniel Mach Date: Fri, 29 Sep 2023 08:33:55 +0200 Subject: [PATCH 2/2] Document that 'request revoke' command may need '--keep-packages-locked' option to avoid unlocking source packages --- osc/commandline.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osc/commandline.py b/osc/commandline.py index 1bcefe5c..d500ab87 100644 --- a/osc/commandline.py +++ b/osc/commandline.py @@ -3084,6 +3084,8 @@ Please submit there instead, or use --nodevelproject to force direct submission. "supersede" will supersede one request with another existing one. "revoke" will set the request state to "revoked" + WARNING: Revoking a maitenance release request unlocks packages in the source project. + To avoid unlocking, use the --keep-packages-locked option. "accept" will change the request state to "accepted" and will trigger the actual submit process. That would normally be a server-side copy of