mirror of
https://github.com/openSUSE/osc.git
synced 2025-02-02 17:56:15 +01:00
- maintenance requests accept package lists as source and target incidents to be merged in
This commit is contained in:
parent
0bdd0a676e
commit
11be969b77
1
NEWS
1
NEWS
@ -5,6 +5,7 @@
|
|||||||
# Features which requires OBS 2.3
|
# Features which requires OBS 2.3
|
||||||
#
|
#
|
||||||
- support dryrun of branching to preview the expected result. "osc sm" is doing this now by default.
|
- support dryrun of branching to preview the expected result. "osc sm" is doing this now by default.
|
||||||
|
- maintenance requests accept package lists as source and target incidents to be merged in
|
||||||
|
|
||||||
0.133
|
0.133
|
||||||
- add --meta option also to "list", "cat" and "less" commands
|
- add --meta option also to "list", "cat" and "less" commands
|
||||||
|
@ -2617,6 +2617,10 @@ Please submit there instead, or use --nodevelproject to force direct submission.
|
|||||||
help='specify message TEXT')
|
help='specify message TEXT')
|
||||||
@cmdln.option('--no-cleanup', action='store_true',
|
@cmdln.option('--no-cleanup', action='store_true',
|
||||||
help='do not remove source project on accept')
|
help='do not remove source project on accept')
|
||||||
|
@cmdln.option('--incident', metavar='INCIDENT',
|
||||||
|
help='specify incident number to merge in')
|
||||||
|
@cmdln.option('--incident-project', metavar='INCIDENT_PROJECT',
|
||||||
|
help='specify incident project to merge in')
|
||||||
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.
|
||||||
|
|
||||||
@ -2628,7 +2632,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
|
|||||||
the "patchinfo" command how add the required maintenance update information.
|
the "patchinfo" command how add the required maintenance update information.
|
||||||
|
|
||||||
usage:
|
usage:
|
||||||
osc maintenancerequest [ SOURCEPROJECT [ TARGETPROJECT ] ]
|
osc maintenancerequest [ SOURCEPROJECT [ SOURCEPACKAGES ] ]
|
||||||
${cmd_option_list}
|
${cmd_option_list}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -2638,22 +2642,21 @@ Please submit there instead, or use --nodevelproject to force direct submission.
|
|||||||
if opts.attribute:
|
if opts.attribute:
|
||||||
maintenance_attribute = opts.attribute
|
maintenance_attribute = opts.attribute
|
||||||
|
|
||||||
source_project = target_project = opt_sourceupdate = None
|
source_project = source_packages = target_project = opt_sourceupdate = None
|
||||||
if not opts.no_cleanup:
|
if not opts.no_cleanup:
|
||||||
opt_sourceupdate = 'cleanup'
|
opt_sourceupdate = 'cleanup'
|
||||||
|
|
||||||
if len(args) > 2:
|
|
||||||
raise oscerr.WrongArgs('Too many arguments.')
|
|
||||||
|
|
||||||
if len(args) == 0 and is_project_dir(os.curdir):
|
if len(args) == 0 and is_project_dir(os.curdir):
|
||||||
source_project = store_read_project(os.curdir)
|
source_project = store_read_project(os.curdir)
|
||||||
elif len(args) == 0:
|
elif len(args) == 0:
|
||||||
raise oscerr.WrongArgs('Too few arguments.')
|
raise oscerr.WrongArgs('Too few arguments.')
|
||||||
if len(args) > 0:
|
if len(args) > 0:
|
||||||
source_project = args[0]
|
source_project = args[0]
|
||||||
|
|
||||||
if len(args) > 1:
|
if len(args) > 1:
|
||||||
target_project = args[1]
|
source_packages = args[1:]
|
||||||
|
|
||||||
|
if opts.incident_project:
|
||||||
|
target_project = opts.incident_project
|
||||||
else:
|
else:
|
||||||
xpath = 'attribute/@name = \'%s\'' % maintenance_attribute
|
xpath = 'attribute/@name = \'%s\'' % maintenance_attribute
|
||||||
res = search(apiurl, project_id=xpath)
|
res = search(apiurl, project_id=xpath)
|
||||||
@ -2662,12 +2665,14 @@ Please submit there instead, or use --nodevelproject to force direct submission.
|
|||||||
if project is None:
|
if project is None:
|
||||||
sys.exit('Unable to find defined OBS:MaintenanceProject project on server.')
|
sys.exit('Unable to find defined OBS:MaintenanceProject project on server.')
|
||||||
target_project = project.get('name')
|
target_project = project.get('name')
|
||||||
|
if opts.incident:
|
||||||
|
target_project += ":" + opts.incident
|
||||||
print 'Using target project \'%s\'' % target_project
|
print 'Using target project \'%s\'' % target_project
|
||||||
|
|
||||||
if not opts.message:
|
if not opts.message:
|
||||||
opts.message = edit_message()
|
opts.message = edit_message()
|
||||||
|
|
||||||
r = create_maintenance_request(apiurl, source_project, target_project, opt_sourceupdate, opts.message)
|
r = create_maintenance_request(apiurl, source_project, source_packages, target_project, opt_sourceupdate, opts.message)
|
||||||
print r.reqid
|
print r.reqid
|
||||||
|
|
||||||
|
|
||||||
|
@ -2196,7 +2196,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', 'tgt_project', 'person_name', 'opt_sourceupdate'),
|
'maintenance_incident': ('src_project', 'src_package', 'src_rev', 'tgt_project', '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)
|
||||||
@ -3418,9 +3418,13 @@ 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, tgt_project, opt_sourceupdate, message=''):
|
def create_maintenance_request(apiurl, src_project, src_packages, tgt_project, opt_sourceupdate, message=''):
|
||||||
import cgi
|
import cgi
|
||||||
r = Request()
|
r = Request()
|
||||||
|
if 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)
|
||||||
|
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, 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'))
|
||||||
|
Loading…
Reference in New Issue
Block a user