Print short help text about the "accept" command and exit.
.RE
+.PP
+\-p, \-\-project PROJECT
+.RS 2
+Target project name. Mandatory option.
+.RE
+
.PP
\-comment COMMENT
.RS 2
Print short help text about the "reject" command and exit.
.RE
+.PP
+\-p, \-\-project PROJECT
+.RS 2
+Target project name. Mandatory option.
+.RE
+
.PP
\-comment COMMENT
.RS 2
Print short help text about the "group" command and exit.
.RE
+.PP
+\-p, \-\-project PROJECT
+.RS 2
+Target project name. Mandatory option.
+.RE
+
.PP
\-comment COMMENT
.RS 2
Print short help text about the "rmgroup" command and exit.
.RE
+.PP
+\-p, \-\-project PROJECT
+.RS 2
+Target project name. Mandatory option.
+.RE
+
.SH BUGS
Please, report bugs to Ed Bartosh <eduard.bartosh@intel.com>.
def add_arguments(parser, _config):
"""Adds arguments to the parser. Called from [sub_]main."""
parser.add_argument('submission', help='submission or group')
+ parser.add_argument('-p', '--project', help='target project',
+ required=True)
parser.add_argument('-c', '--comment', help='comment', default='')
@staticmethod
"""Command line entry point. Called from [sub_]main."""
obs = OBS(argv.apiurl, argv.apiuser, argv.apipasswd)
return accept_or_reject(obs, argv.submission, 'accepted',
- argv.comment)
+ argv.project, argv.comment)
if __name__ == '__main__':
sys.exit(sub_main(sys.argv[1:], Accept()))
"""Custom repa exception. All repa modules should use it."""
pass
-def get_project_by_name(obs, name):
+def get_project_by_name(obs, name, target):
"""Lookup for a project in OBS by submission or group name."""
- projects = list(obs.get_projects('^%s.*:%s$' % (OBS_PREFIX,
+ projects = list(obs.get_projects('^%s%s:%s$' % (OBS_PREFIX, target,
name.replace('/', ':'))))
if not projects:
- raise RepaException('OBS project not found for %s' % name)
+ raise RepaException('OBS project not found for %s %s' % \
+ (target, name))
if len(projects) > 1:
- raise RepaException('%s resolves into multiple projects' % name)
+
+ plist = '\n '.join(prj for prj, _ in projects)
+ raise RepaException('%s %s resolves into multiple projects:\n %s' % \
+ (target, name, plist))
return projects[0][0], json.loads(projects[0][1])
-def _resolve_submissions(obs, name):
+def _resolve_submissions(obs, name, target):
"""Get list of submissions with meta. Resolves submitgroups."""
- project, meta = get_project_by_name(obs, name)
+ project, meta = get_project_by_name(obs, name, target)
if name.startswith('submitgroup'):
for subm in meta['submissions']:
- sprj, smeta = get_project_by_name(obs, subm)
+ sprj, smeta = get_project_by_name(obs, subm, target)
yield subm, sprj, smeta
else:
yield name, project, meta
-def delete_project(obs, name):
+def delete_project(obs, name, target):
"""Delete OBS project related to submission or submit group."""
- project = get_project_by_name(obs, name)[0]
+ project = get_project_by_name(obs, name, target)[0]
obs.delete_project(project)
-def accept_or_reject(obs, submission, state, comment=''):
+def accept_or_reject(obs, submission, state, target, comment=''):
"""Create SRs and set their state for one submission or for a group."""
- for name, project, meta in _resolve_submissions(obs, submission):
+ for name, project, meta in _resolve_submissions(obs, submission, target):
# osc submitreq [OPTIONS] SOURCEPRJ SOURCEPKG DESTPRJ [DESTPKG]
# osc request accept [-m TEXT] ID
print "submission %s" % str(name)
# delete submit group
if submission.startswith('submitgroup'):
- delete_project(obs, submission)
+ delete_project(obs, submission, target)
from repa.main import sub_main
from repa.obs import OBS, OBS_PREFIX
-from repa.common import RepaException
+from repa.common import RepaException, get_project_by_name
def check_target_prj(submissions):
return aggregated
-def group_submissions(obs, submissions, comment):
+def group_submissions(obs, submissions, target, comment):
"""Group multiple submissions into one group."""
# find correspondent prerelease projects
info = {}
for submission in submissions:
- suffix = submission.replace('/', ':')
- found = list(obs.get_projects('^%s.*:%s$' % (OBS_PREFIX, suffix)))
- if not found:
- raise RepaException('OBS project not found for %s' % submission)
- project, description = found[0]
- info[submission] = {'project': project, 'meta': json.loads(description)}
+ project, meta = get_project_by_name(obs, submission, target)
+ info[submission] = {'project': project, 'meta': meta}
# Validate submissions
check_target_prj(info)
"""Adds arguments to the parser. Called from [sub_]main."""
parser.add_argument('submission', nargs='+',
help='space separated list of submissions')
+ parser.add_argument('-p', '--project', help='target project',
+ required=True)
parser.add_argument('-c', '--comment', help='comment', default='')
@staticmethod
def run(argv):
"""Command line entry point. Called from [sub_]main."""
obs = OBS(argv.apiurl, argv.apiuser, argv.apipasswd)
- return group_submissions(obs, argv.submission, argv.comment)
+ return group_submissions(obs, argv.submission, argv.project,
+ argv.comment)
if __name__ == '__main__':
def add_arguments(parser, _config):
"""Adds arguments to the parser. Called from [sub_]main."""
parser.add_argument('submission', help='submission or group')
+ parser.add_argument('-p', '--project', help='target project',
+ required=True)
parser.add_argument('-c', '--comment', help='comment', default='')
@staticmethod
"""Command line entry point. Called from [sub_]main."""
obs = OBS(argv.apiurl, argv.apiuser, argv.apipasswd)
return accept_or_reject(obs, argv.submission, 'declined',
- argv.comment)
+ argv.project, argv.comment)
if __name__ == '__main__':
sys.exit(sub_main(sys.argv[1:], Reject()))
from repa.common import get_project_by_name, RepaException
-def rmgroup(obs, name):
+def rmgroup(obs, name, target):
"""Remove submission group."""
if not name.startswith('submitgroup/'):
raise RepaException("Group name must start from 'submitgroup/'")
- project = get_project_by_name(obs, name)[0]
+ project = get_project_by_name(obs, name, target)[0]
obs.delete_project(project, force=True)
print 'Submission group %s has been removed' % name
def add_arguments(parser, _config):
"""Adds arguments to the parser. Called from [sub_]main."""
parser.add_argument('group', help='group of submissions')
+ parser.add_argument('-p', '--project', help='target project',
+ required=True)
@staticmethod
def run(argv):
"""Command line entry point. Called from [sub_]main."""
obs = OBS(argv.apiurl, argv.apiuser, argv.apipasswd)
- return rmgroup(obs, argv.group)
+ return rmgroup(obs, argv.group, argv.project)
if __name__ == '__main__':