Skip to content

Commit

Permalink
implement releaserequest for non-maintenance prj
Browse files Browse the repository at this point in the history
In the API a new request action release was implemented. This changes
enables the user to create a release request for non-maintenance projects
and to review / view the release requests
  • Loading branch information
lethliel committed Aug 6, 2020
1 parent 3216a56 commit a91b8f0
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 7 deletions.
37 changes: 31 additions & 6 deletions osc/commandline.py
Original file line number Diff line number Diff line change
Expand Up @@ -3107,18 +3107,30 @@ def do_release(self, subcmd, opts, *args):


@cmdln.option('-m', '--message', metavar='TEXT',
help='specify message TEXT')
help='specify message TEXT')
@cmdln.option('-p', '--package', metavar='PKG', action='append',
help='specify packages to release')
def do_releaserequest(self, subcmd, opts, *args):
"""${cmd_name}: Create a request for releasing a maintenance update.
"""${cmd_name}: Create a release request
[See http://openbuildservice.org/help/manuals/obs-reference-guide/cha.obs.maintenance_setup.html
for information on this topic.]
For maintenance incident projects:
This command is used by the maintenance team to start the release process of a maintenance update.
This includes usually testing based on the defined reviewers of the update project.
[See https://openbuildservice.org/help/manuals/obs-user-guide/cha.obs.maintenance_setup.html
for information on this topic.]
For normal projects:
This command is used to transfer sources and binaries without rebuilding them.
It requires defined release targets set to trigger="manual".
[See https://openbuildservice.org/help/manuals/obs-user-guide/cha.obs.request_and_review_system.html
for information on this topic.]
usage:
osc releaserequest [ SOURCEPROJECT ]
osc releaserequest [-p package] [ SOURCEPROJECT ]
${cmd_option_list}
"""
Expand All @@ -3140,12 +3152,25 @@ def do_releaserequest(self, subcmd, opts, *args):
if len(args) > 0:
source_project = args[0]

f = show_project_meta(apiurl, source_project)
root = ET.fromstring(b''.join(f))

if not opts.message:
opts.message = edit_message()
else:
opts.message = str(opts.message.encode().decode('unicode_escape'))

r = create_release_request(apiurl, source_project, opts.message)
if 'kind' in root.attrib and root.attrib['kind'] == 'maintenance_incident':
r = create_release_request(apiurl, source_project, opts.message)
else:
r = Request()
if opts.package:
for pac in opts.package:
r.add_action('release', src_project=source_project, src_package=pac)
else:
r.add_action('release', src_project=source_project)
r.description = _html_escape(opts.message)
r.create(apiurl)
print(r.reqid)


Expand Down
5 changes: 4 additions & 1 deletion osc/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -2676,6 +2676,9 @@ class Action:
'maintenance_release': ('src_project', 'src_package', 'src_rev', 'tgt_project', 'tgt_package', 'person_name',
'acceptinfo_rev', 'acceptinfo_srcmd5', 'acceptinfo_xsrcmd5', 'acceptinfo_osrcmd5',
'acceptinfo_oxsrcmd5', 'acceptinfo_oproject', 'acceptinfo_opackage'),
'release': ('src_project', 'src_package', 'src_rev', 'tgt_project', 'tgt_package', 'person_name',
'acceptinfo_rev', 'acceptinfo_srcmd5', 'acceptinfo_xsrcmd5', 'acceptinfo_osrcmd5',
'acceptinfo_oxsrcmd5', 'acceptinfo_oproject', 'acceptinfo_opackage', 'tgt_repository'),
'maintenance_incident': ('src_project', 'src_package', 'src_rev', 'tgt_project', 'tgt_package', 'tgt_releaseproject', 'person_name', 'opt_sourceupdate', 'opt_makeoriginolder',
'acceptinfo_rev', 'acceptinfo_srcmd5', 'acceptinfo_xsrcmd5', 'acceptinfo_osrcmd5',
'acceptinfo_oxsrcmd5'),
Expand Down Expand Up @@ -2935,7 +2938,7 @@ def prj_pkg_join(prj, pkg, repository=None):
srcupdate = ' '
if action.opt_sourceupdate and show_srcupdate:
srcupdate = '(%s)' % action.opt_sourceupdate
elif action.type == 'maintenance_release':
elif action.type in ('maintenance_release', 'release'):
d['source'] = '%s' % prj_pkg_join(action.src_project, action.src_package)
if action.src_rev:
d['source'] = d['source'] + '@%s' % action.src_rev
Expand Down

0 comments on commit a91b8f0

Please sign in to comment.