1
0
mirror of https://github.com/openSUSE/osc.git synced 2025-02-09 04:25:48 +01:00

- set releaseproject in incident requests

This commit is contained in:
Adrian Schröter 2012-02-15 17:08:06 +01:00
parent 3820c19c9d
commit 9960072d5c
2 changed files with 10 additions and 8 deletions

View File

@ -2637,6 +2637,8 @@ Please submit there instead, or use --nodevelproject to force direct submission.
help='specify incident number to merge in') help='specify incident number to merge in')
@cmdln.option('--incident-project', metavar='INCIDENT_PROJECT', @cmdln.option('--incident-project', metavar='INCIDENT_PROJECT',
help='specify incident project to merge in') help='specify incident project to merge in')
@cmdln.option('--release-project', metavar='RELEASE_PROJECT',
help='specify the project where the final package will get released')
def do_maintenancerequest(self, subcmd, opts, *args): def do_maintenancerequest(self, subcmd, opts, *args):
"""${cmd_name}: Create a request for starting a maintenance incident. """${cmd_name}: Create a request for starting a maintenance incident.
@ -2690,7 +2692,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
if not opts.message: if not opts.message:
opts.message = edit_message() opts.message = edit_message()
r = create_maintenance_request(apiurl, source_project, source_packages, target_project, opt_sourceupdate, opts.message) r = create_maintenance_request(apiurl, source_project, source_packages, target_project, opts.release_project, opt_sourceupdate, opts.message)
print r.reqid print r.reqid

View File

@ -2199,7 +2199,7 @@ class Action:
'add_role': ('tgt_project', 'tgt_package', 'person_name', 'person_role', 'group_name', 'group_role'), 'add_role': ('tgt_project', 'tgt_package', 'person_name', 'person_role', 'group_name', 'group_role'),
'set_bugowner': ('tgt_project', 'tgt_package', 'person_name'), # obsoleted by add_role 'set_bugowner': ('tgt_project', 'tgt_package', 'person_name'), # obsoleted by add_role
'maintenance_release': ('src_project', 'src_package', 'src_rev', 'tgt_project', 'tgt_package', 'person_name'), 'maintenance_release': ('src_project', 'src_package', 'src_rev', 'tgt_project', 'tgt_package', 'person_name'),
'maintenance_incident': ('src_project', 'src_package', 'src_rev', 'tgt_project', 'person_name', 'opt_sourceupdate'), 'maintenance_incident': ('src_project', 'src_package', 'src_rev', 'tgt_project', 'tgt_releaseproject', 'person_name', 'opt_sourceupdate'),
'delete': ('tgt_project', 'tgt_package'), 'delete': ('tgt_project', 'tgt_package'),
'change_devel': ('src_project', 'src_package', 'tgt_project', 'tgt_package')} 'change_devel': ('src_project', 'src_package', 'tgt_project', 'tgt_package')}
# attribute prefix to element name map (only needed for abbreviated attributes) # attribute prefix to element name map (only needed for abbreviated attributes)
@ -3421,14 +3421,14 @@ def create_release_request(apiurl, src_project, message=''):
return r return r
# create a maintenance incident per request # create a maintenance incident per request
def create_maintenance_request(apiurl, src_project, src_packages, tgt_project, opt_sourceupdate, message=''): def create_maintenance_request(apiurl, src_project, src_packages, tgt_project, tgt_releaseproject, opt_sourceupdate, message=''):
import cgi import cgi
r = Request() r = Request()
if src_packages: if src_packages:
for p in src_packages: for p in src_packages:
r.add_action('maintenance_incident', src_project=src_project, src_package=p, tgt_project=tgt_project, opt_sourceupdate = opt_sourceupdate) r.add_action('maintenance_incident', src_project=src_project, src_package=p, tgt_project=tgt_project, tgt_releaseproject=tgt_releaseproject, opt_sourceupdate = opt_sourceupdate)
else: else:
r.add_action('maintenance_incident', src_project=src_project, tgt_project=tgt_project, opt_sourceupdate = opt_sourceupdate) r.add_action('maintenance_incident', src_project=src_project, tgt_project=tgt_project, tgt_releaseproject=tgt_releaseproject, opt_sourceupdate = opt_sourceupdate)
# XXX: clarify why we need the unicode(...) stuff # XXX: clarify why we need the unicode(...) stuff
r.description = cgi.escape(unicode(message, 'utf8')) r.description = cgi.escape(unicode(message, 'utf8'))
r.create(apiurl) r.create(apiurl)
@ -3488,14 +3488,14 @@ def create_submit_request(apiurl,
if e.headers.get('X-Opensuse-Errorcode') == "submit_request_rejected": if e.headers.get('X-Opensuse-Errorcode') == "submit_request_rejected":
print "This project is just for releasing maintenance updates. Do you want to create a maintenance incident request instead? [y/n]" print "This project is just for releasing maintenance updates. Do you want to create a maintenance incident request instead? [y/n]"
if sys.stdin.read(1) == "y": if sys.stdin.read(1) == "y":
xpath = 'attribute/@name = \'%s\'' % conf.config['maintenance_attribute'] xpath = 'maintenance/maintains/@project = \'%s\'' % dst_project
res = search(apiurl, project_id=xpath) res = search(apiurl, project_id=xpath)
root = res['project_id'] root = res['project_id']
project = root.find('project') project = root.find('project')
if project is None: if project is None:
sys.exit('Unable to find defined OBS:MaintenanceProject project on server.') sys.exit('No maintenance project defined for target project on server.')
tproject = project.get('name') tproject = project.get('name')
r = create_maintenance_request(apiurl, src_project, [src_package], tproject, src_update, message) r = create_maintenance_request(apiurl, src_project, [src_package], tproject, dst_project, src_update, message)
else: else:
raise raise