openSUSE-release-tools/osclib/supersede_command.py
Jimmy Berry fb76fb87b9 stagingapi: rework supersede logic to handle different request types.
Additionally, this treats revoked or superseded requests as always to
be replaced if a new requests is available.
2017-05-31 10:32:03 +02:00

30 lines
1.0 KiB
Python

from colorama import Fore
class SupersedeCommand(object):
CODE_MAP = {
None: Fore.MAGENTA + 'superseded' + Fore.RESET,
True: Fore.RED + 'declined' + Fore.RESET,
False: Fore.WHITE + 'ignored' + Fore.RESET,
}
def __init__(self, api):
self.api = api
def perform(self, requests=None):
for stage_info, code, request in self.api.dispatch_open_requests(requests):
action = request.find('action')
target_package = action.find('target').get('package')
if code == 'unstage':
# Technically, the new request has not been staged, but superseded the old one.
code = None
verbage = self.CODE_MAP[code]
if code is not None:
verbage += ' in favor of'
print('request {} for {} {} {} in {}'.format(
request.get('id'),
Fore.CYAN + target_package + Fore.RESET,
verbage,
stage_info['rq_id'],
Fore.YELLOW + stage_info['prj']))