osclib/core: provide request_create_delete().

This commit is contained in:
Jimmy Berry 2019-08-07 17:26:38 -05:00
parent f441d8e41d
commit 7478a42882

View File

@ -31,6 +31,7 @@ from osc.core import xpath_join
from osc.util.helper import decode_it
from osclib.conf import Config
from osclib.memoize import memoize
import subprocess
BINARY_REGEX = r'(?:.*::)?(?P<filename>(?P<name>.*)-(?P<version>[^-]+)-(?P<release>[^-]+)\.(?P<arch>[^-\.]+))'
RPM_REGEX = BINARY_REGEX + r'\.rpm'
@ -949,6 +950,23 @@ def request_create_submit(apiurl, source_project, source_package,
return RequestFuture('submit {}/{} -> {}/{}'.format(
source_project, source_package, target_project, target_package), create_function)
def request_create_delete(apiurl, target_project, target_package, message=None):
for request, action in request_action_single_list(
apiurl, target_project, target_package, REQUEST_STATES_MINUS_ACCEPTED, 'delete'):
return False
# No proper API function to perform the same operation.
message = message_suffix('created', message)
def create_function():
subprocess.check_call(
' '.join(['osc', 'dr', '-m', message, target_project, target_package]), shell=True)
# Would be nicer to return newly create request ID, but not worth rewriting.
return True
return RequestFuture('delete {}/{}'.format(target_project, target_package), create_function)
class RequestFuture:
def __init__(self, description, create_function):
self.description = description