[packagedb-cli] Created tag v1.6.0
by Pierre-YvesChibon
The unsigned tag 'v1.6.0' was created.
Tagger: Pierre-Yves Chibon <pingou(a)pingoured.fr>
Date: Sat Sep 7 11:09:04 2013 +0200
Release 1.6.0
Changes since the last tag 'v1.5.1':
Pierre-Yves Chibon (8):
Bump release and remove some trailing space, replace some tabs by spaces
From now on, one can only retire package that not already retired.
Fix typo in variable name
Some for typos in variable names...
Figure a way to turn on printing the stack trace when using --debug
Fix wording and formatting of the output and make sure in testing we us stg FAS as well
Check the status of the package in the collection rather than the status of the collection
pep8 clean up
Till Maas (2):
Remove duplicate retire code
Retirement adjustments
10 years, 8 months
[packagedb-cli] pep8 clean up
by Pierre-YvesChibon
commit eab58f7d44d0dfe424bdc485d83986636f565411
Author: Pierre-Yves Chibon <pingou(a)pingoured.fr>
Date: Sat Sep 7 11:07:52 2013 +0200
pep8 clean up
pkgdb-cli | 533 +++++++++++++++++++++++++++++++++----------------------------
1 files changed, 286 insertions(+), 247 deletions(-)
---
diff --git a/pkgdb-cli b/pkgdb-cli
index f0b44c2..33d3882 100755
--- a/pkgdb-cli
+++ b/pkgdb-cli
@@ -15,7 +15,8 @@
# license.
"""
-from fedora.client import AccountSystem, PackageDB, AppError, AuthError, ServerError
+from fedora.client import (AccountSystem, PackageDB, AppError, AuthError,
+ ServerError)
from bugzilla.rhbugzilla import RHBugzilla
import argparse
import logging
@@ -26,8 +27,8 @@ import re
import fedora_cert
version = '1.6.0'
-kojiclient = koji.ClientSession('http://koji.fedoraproject.org/kojihub',
- {})
+kojiclient = koji.ClientSession(
+ 'http://koji.fedoraproject.org/kojihub', {})
pkgdbclient = PackageDB('https://admin.fedoraproject.org/pkgdb')
fasclient = AccountSystem('https://admin.fedoraproject.org/accounts')
bzclient = RHBugzilla(url='https://bugzilla.redhat.com/xmlrpc.cgi')
@@ -148,8 +149,8 @@ def _get_group_info(group, statusmap, tmpstring="", pending=False):
if acl in group['aclOrder'].keys() and \
group['aclOrder'][acl] is not None:
has_acl = True
- aclout = statusmap[str(
- group['aclOrder'][acl]['statuscode'])]
+ aclout = statusmap[
+ str(group['aclOrder'][acl]['statuscode'])]
tmpstring = tmpstring + aclout + " " * (16 - len(aclout))
else:
tmpstring = tmpstring + " " * 16
@@ -179,22 +180,24 @@ def _get_package_id(packagename, branch):
:return package_id a string of the package_id in the packageListings
"""
log.debug("Retrieve package_id from pkgdb for {0} branch {1}".format(
- packagename, branch))
- pkgdbinfo = pkgdbclient.send_request('/acls/name/{0}'.format(
- packagename, auth=False))
+ packagename, branch))
+ pkgdbinfo = pkgdbclient.send_request(
+ '/acls/name/{0}'.format(packagename, auth=False))
if 'packageListings' in pkgdbinfo.keys():
for branches in pkgdbinfo['packageListings']:
if branches['collection']['branchname'] == branch:
- log.debug("Package {0} has package id: {1}".format(
- packagename, pkgdbinfo['packageListings'][0]['id']))
+ log.debug(
+ "Package {0} has package id: {1}".format(
+ packagename,
+ pkgdbinfo['packageListings'][0]['id']))
return branches['id']
else:
# line splitted for now, when translation will come in line
# the splitted string should be put back together.
raise PackageIDError(
- "The package_id for package '{0}' in branch '{1}' could not be" \
- " found".format(
- packagename, branch))
+ "The package_id for package '{0}' in branch '{1}' could not be"
+ " found".format(
+ packagename, branch))
def _get_active_branches(packagename=None, not_statuscode=None):
@@ -216,10 +219,9 @@ def _get_active_branches(packagename=None, not_statuscode=None):
Returns a list containing the names of these branches
"""
- data = pkgdbclient.send_request('/collections/', auth=False,
- req_params={'eol': None})
- branches = dict((b[0]['branchname'], b[0])
- for b in data.collections)
+ data = pkgdbclient.send_request(
+ '/collections/', auth=False, req_params={'eol': None})
+ branches = dict((b[0]['branchname'], b[0]) for b in data.collections)
branches = branches.keys()
if packagename:
pkgdbinfo = pkgdbclient.send_request('/acls/name/{0}'.format(
@@ -257,13 +259,14 @@ def _get_action_pending(packagename, branch, user):
if branch == collection['collection']['branchname']:
for people in collection['people']:
for acl in ['watchbugzilla', 'watchcommits', 'commit',
- 'approveacls']:
+ 'approveacls']:
if acl in people['aclOrder'].keys() \
- and people['aclOrder'][acl] is not None \
- and people['aclOrder'][acl]['statuscode'] == 8:
+ and people['aclOrder'][acl] is not None \
+ and people['aclOrder'][acl]['statuscode'] == 8:
aclout.append(acl)
return aclout
+
def _get_last_build(packagename, tag):
"""
Print information about the last build of a package for a given koji
@@ -275,8 +278,8 @@ def _get_last_build(packagename, tag):
list of available tag.
"""
log.debug("Search last build for {0} in {1}".format(packagename, tag))
- data = kojiclient.getLatestBuilds(tag,
- package=packagename)
+ data = kojiclient.getLatestBuilds(
+ tag, package=packagename)
versions = []
for build in data:
nvr = "{0}-{1}-{2}".format(
@@ -293,8 +296,9 @@ def _get_last_build(packagename, tag):
tag)
-def _update_owner_one_package(packagename, branch='devel', action="orphan",
- username=None, password=None, owner=None):
+def _update_owner_one_package(
+ packagename, branch='devel', action="orphan", username=None,
+ password=None, owner=None):
"""
Orphan one package from pkgdb.
"""
@@ -302,8 +306,8 @@ def _update_owner_one_package(packagename, branch='devel', action="orphan",
branch = 'devel'
_get_client_authentified(username=username, password=password)
- log.info("{0}ing package {1} on branch {2}".format(action.capitalize(),
- packagename, branch))
+ log.info("{0}ing package {1} on branch {2}".format(
+ action.capitalize(), packagename, branch))
if action.lower() == "orphan":
owner = "orphan"
@@ -311,24 +315,25 @@ def _update_owner_one_package(packagename, branch='devel', action="orphan",
if not owner:
owner = pkgdbclient.username
pkgdbinfo = pkgdbclient.send_request(
- '/acls/dispatcher/set_owner',
- auth=True, req_params={'owner': owner,
- 'pkg_name': packagename,
- 'collectn_list': branch})
+ '/acls/dispatcher/set_owner', auth=True,
+ req_params={'owner': owner,
+ 'pkg_name': packagename,
+ 'collectn_list': branch})
log.debug("output: {0}".format(pkgdbinfo))
if "message" in pkgdbinfo.keys():
print "{0}{1}{2}\n".format(bold, pkgdbinfo["message"], reset)
else:
- print "{0}Changed owner of {1} to {2} in branch {3} {4}\n".format(bold,
- packagename,
- owner,
- branch,
- reset)
+ print "{0}Changed owner of {1} to {2} in branch {3} {4}\n".format(
+ bold,
+ packagename,
+ owner,
+ branch,
+ reset)
-def _retire_one_package(packagename, branch='devel', username=None,
- password=None):
+def _retire_one_package(
+ packagename, branch='devel', username=None, password=None):
"""
Retire one package from pkgdb.
"""
@@ -336,21 +341,22 @@ def _retire_one_package(packagename, branch='devel', username=None,
if branch is None:
branch = 'devel'
- log.info("Retiring package {0} on branch {1}".format(packagename,
- branch))
+ log.info("Retiring package {0} on branch {1}".format(
+ packagename,
+ branch))
_get_client_authentified(username=username, password=password)
packageid = _get_package_id(packagename, branch)
pkgdbinfo = pkgdbclient.send_request(
- '/acls/dispatcher/toggle_retirement',
- auth=True, req_params={'pkg_listing_id': packageid})
+ '/acls/dispatcher/toggle_retirement',
+ auth=True, req_params={'pkg_listing_id': packageid})
log.debug("output: {0}".format(pkgdbinfo))
if "retirement" in pkgdbinfo.keys():
- print "{0}{1} {2}{3}\n".format(bold, packagename,
- pkgdbinfo["retirement"], reset)
+ print "{0}{1} {2}{3}\n".format(
+ bold, packagename, pkgdbinfo["retirement"], reset)
def _answer_acl(action, user, packagename, answer, branch):
@@ -366,23 +372,23 @@ def _answer_acl(action, user, packagename, answer, branch):
"""
packageid = _get_package_id(packagename, branch)
log.debug(
- "Answer acl {0} for user {1} and package {2} ({3}) on branch {4}".format(
- action, user, packagename, packageid, branch))
+ "Answer acl {0} for user {1} and package {2} ({3}) on branch {4}"
+ "".format(action, user, packagename, packageid, branch))
params = {"pkgid": packageid, "person_name": user,
- "new_acl": action, "statusname": answer}
+ "new_acl": action, "statusname": answer}
pkgdbinfo = pkgdbclient.send_request(
- '/acls/dispatcher/set_acl_status',
- auth=True, req_params=params)
+ '/acls/dispatcher/set_acl_status',
+ auth=True, req_params=params)
log.debug(pkgdbinfo)
if pkgdbinfo['status'] is True:
print "{0}{1} {2}{3} for {4} on package {5} branch {6}".format(
- bold,
- action,
- answer,
- reset,
- user,
- packagename,
- branch)
+ bold,
+ action,
+ answer,
+ reset,
+ user,
+ packagename,
+ branch)
else:
print "ACL request could not be {0}".format(answer)
print pkgdbinfo['message']
@@ -403,28 +409,29 @@ def _handle_acl_request(packagename, action, branch, cancel=False):
"""
packageid = _get_package_id(packagename, branch)
log.debug(
- "Process acl '{0}' for user {1} and package {2} on branch {3}".format(
- action, pkgdbclient.username, packagename, branch))
+ "Process acl '{0}' for user {1} and package {2} on branch {3}"
+ "".format(action, pkgdbclient.username, packagename, branch))
statusname = "Awaiting Review"
params = {'pkgid': packageid,
- 'person_name': pkgdbclient.username,
- 'acl_name': action,
- 'set_acl': True}
+ 'person_name': pkgdbclient.username,
+ 'acl_name': action,
+ 'set_acl': True}
if cancel:
params['set_acl'] = False
statusname = "Obsolete"
pkgdbinfo = pkgdbclient.send_request(
- '/acls/dispatcher/set_remove_acl_request/',
- auth=True, req_params=params)
+ '/acls/dispatcher/set_remove_acl_request/',
+ auth=True, req_params=params)
log.debug(pkgdbinfo)
wentok = False
if "message" in pkgdbinfo.keys():
msg = "{0}: {1}".format(action, pkgdbinfo["message"])
elif 'status' in pkgdbinfo.keys() \
and str(pkgdbinfo['status']) == "True":
- msg = "ACL {2}{0}{4} for user {1} was set to {2}'{3}'{4} on package {5} branch {6}".format(
- action, pkgdbclient.username, bold, statusname, reset,
- packagename, branch)
+ msg = "ACL {2}{0}{4} for user {1} was set to {2}'{3}'{4} on " \
+ "package {5} branch {6}".format(
+ action, pkgdbclient.username, bold, statusname, reset,
+ packagename, branch)
wentok = True
else:
msg = "Something went wrong and we could not set the ACL as you wished"
@@ -451,14 +458,14 @@ def get_packages(motif=None, name_only=False, branch='all'):
log.info("Query packages starting with: {0}".format(motif))
if "*" not in motif:
motif = motif.strip() + "*"
- pkgdbinfo = pkgdbclient.send_request('/acls/list/{0}'.format(motif),
- auth=False)#,
- #req_params={
+ pkgdbinfo = pkgdbclient.send_request(
+ '/acls/list/{0}'.format(motif), auth=False) # ,
+ # req_params={
#'pkgs_tgp_limit': 0}) ## works if it is tg_paginate_limit
else:
log.info("Query all packages")
- pkgdbinfo = pkgdbclient.send_request('/acls/list/', auth=False,
- req_params={'pkgs_tgp_limit': 0})
+ pkgdbinfo = pkgdbclient.send_request(
+ '/acls/list/', auth=False, req_params={'pkgs_tgp_limit': 0})
collectn_map = pkgdbinfo['collectn_map']
status_map = pkgdbinfo['statusMap']
@@ -469,11 +476,10 @@ def get_packages(motif=None, name_only=False, branch='all'):
print pkgdbinfo['title']
cnt = 0
for pkg in pkgdbinfo['packages']:
- out = " " + pkg['name'] + ' ' * (33 - \
- len(pkg['name'])) + \
- pkg['summary']
+ out = " " + pkg['name'] + ' ' * (33 - len(pkg['name'])) + \
+ pkg['summary']
if name_only:
- out = " "+ pkg['name']
+ out = " " + pkg['name']
branches = []
for info in pkg['listings']:
@@ -489,8 +495,8 @@ def get_packages(motif=None, name_only=False, branch='all'):
print 'Total: {0} packages'.format(cnt)
-def get_orphaned_packages(motif=None, eol=False, name_only=False,
- branch='all'):
+def get_orphaned_packages(
+ motif=None, eol=False, name_only=False, branch='all'):
"""
Retrieve the list of orphans packages.
@@ -517,12 +523,12 @@ def get_orphaned_packages(motif=None, eol=False, name_only=False,
log.info('Query orphaned packages starting with: {0}'.format(motif))
if not motif.endswith("*"):
motif = motif.strip() + "*"
- pkgdbinfo = pkgdbclient.send_request(url + motif, auth=False,
- req_params={'pkgs_tgp_limit': 0})
+ pkgdbinfo = pkgdbclient.send_request(
+ url + motif, auth=False, req_params={'pkgs_tgp_limit': 0})
else:
log.info("Query all orphaned packages")
- pkgdbinfo = pkgdbclient.send_request(url, auth=False,
- req_params={'pkgs_tgp_limit': 0})
+ pkgdbinfo = pkgdbclient.send_request(
+ url, auth=False, req_params={'pkgs_tgp_limit': 0})
collectn_map = pkgdbinfo['collectn_map']
status_map = pkgdbinfo['statusMap']
log.debug("collection map: {0}".format(collectn_map))
@@ -531,15 +537,14 @@ def get_orphaned_packages(motif=None, eol=False, name_only=False,
log.debug("**")
cnt = 0
for pkg in pkgdbinfo['pkgs']:
- out = " " + pkg['name'] + " " * (33 - \
- len(pkg['name'])) + \
- pkg['summary']
+ out = " " + pkg['name'] + " " * (33 - len(pkg['name'])) + \
+ pkg['summary']
if name_only:
out = " " + pkg['name']
branches = []
for info in pkg['listings']:
if status_map[str(info['statuscode'])] == "Orphaned" and \
- str(info['collectionid']) in collectn_map.keys():
+ str(info['collectionid']) in collectn_map.keys():
branches.append(collectn_map[str(info['collectionid'])])
if branch == 'all' or branch in branches:
print out, "[" + "],[".join(branches) + "]"
@@ -548,8 +553,8 @@ def get_orphaned_packages(motif=None, eol=False, name_only=False,
print 'Total: {0} packages'.format(cnt)
-def get_packager_info(packager, motif="", output=True, name_only=False,
- branch='all'):
+def get_packager_info(
+ packager, motif="", output=True, name_only=False, branch='all'):
"""
Retrieve the list of all the package for which the given packager
has
@@ -568,9 +573,9 @@ def get_packager_info(packager, motif="", output=True, name_only=False,
:karg branch restricts the results to a given branch or not.
"""
log.info("Query pkgdb for packager: {0}".format(packager))
- pkgdbinfo = pkgdbclient.send_request('/users/packages/{0}'.format(
- packager), auth=False,
- req_params={'pkgs_tgp_limit': 0})
+ pkgdbinfo = pkgdbclient.send_request(
+ '/users/packages/{0}'.format(packager), auth=False,
+ req_params={'pkgs_tgp_limit': 0})
collectn_map = pkgdbinfo['collectn_map']
status_map = pkgdbinfo['statusMap']
log.debug("collection map: {0}".format(collectn_map))
@@ -592,16 +597,16 @@ def get_packager_info(packager, motif="", output=True, name_only=False,
log.info(name_only)
pkgs.append(pkg['name'])
if output and re.search("^{0}$".format(motif), pkg['name']):
- out = " " + pkg['name'] + " " * (33 - \
- len(pkg['name'])) + \
+ out = " " + pkg['name'] + " " * (33 - len(pkg['name'])) + \
pkg['summary']
if name_only:
out = " " + pkg['name']
branches = []
for info in pkg['listings']:
if status_map[str(info['statuscode'])] != "Orphaned" and \
- str(info['collectionid']) in collectn_map.keys():
- branches.append(collectn_map[str(info['collectionid'])])
+ str(info['collectionid']) in collectn_map.keys():
+ branches.append(collectn_map[
+ str(info['collectionid'])])
if branch == 'all' or branch in branches:
print out
cnt = cnt + 1
@@ -610,8 +615,8 @@ def get_packager_info(packager, motif="", output=True, name_only=False,
return pkgs
-def get_package_info(packagename, branch=None, pending=False,
- extra=True):
+def get_package_info(
+ packagename, branch=None, pending=False, extra=True):
"""
Return information about the package.
- Number of bugs open (with the status: new, assigned, needinfo)
@@ -636,8 +641,8 @@ def get_package_info(packagename, branch=None, pending=False,
from koji
"""
log.debug("Query pkgdb for {0} in branch {1}".format(packagename, branch))
- pkgdbinfo = pkgdbclient.send_request('/acls/name/{0}'.format(packagename),
- auth=False)
+ pkgdbinfo = pkgdbclient.send_request(
+ '/acls/name/{0}'.format(packagename), auth=False)
print pkgdbinfo['title']
if 'packageListings' in pkgdbinfo:
@@ -646,13 +651,13 @@ def get_package_info(packagename, branch=None, pending=False,
# print the number of opened bugs
log.debug("Query bugzilla")
bugbz = bzclient.query(
- {'bug_status': ['NEW', 'ASSIGNED', 'NEEDINFO'],
- 'component': packagename})
+ {'bug_status': ['NEW', 'ASSIGNED', 'NEEDINFO'],
+ 'component': packagename})
print "{0} bugs open (new, assigned, needinfo)".format(len(bugbz))
for collection in pkgdbinfo['packageListings']:
if branch is None \
- or branch == "all" \
- or branch == collection['collection']['branchname']:
+ or branch == "all" \
+ or branch == collection['collection']['branchname']:
owner = collection['owner']
if collection['owner'] == 'orphan':
@@ -662,9 +667,7 @@ def get_package_info(packagename, branch=None, pending=False,
red + bold,
collection['collection']['branchname'],
reset,
- " " * (8 -
- len(collection['collection'][
- 'branchname'])),
+ " " * (8 - len(collection['collection']['branchname'])),
" " * 10,
owner)
@@ -680,7 +683,7 @@ def get_package_info(packagename, branch=None, pending=False,
for group in collection['groups']:
tmp = " " * 10 + group['groupname']
info = _get_group_info(group, pkgdbinfo['statusMap'],
- tmp, pending=pending)
+ tmp, pending=pending)
if info is not None and info != "":
print info
@@ -689,7 +692,7 @@ def get_package_info(packagename, branch=None, pending=False,
for people in collection['people']:
tmp = " " * 10 + people['username']
info = _get_group_info(people, pkgdbinfo['statusMap'],
- tmp, pending=pending)
+ tmp, pending=pending)
if info is not None and info != "":
print info
@@ -736,7 +739,7 @@ def get_last_build(packagename, tag):
def handle_acl(packagename, action, branch='devel', cancel=False,
- username=None, password=None):
+ username=None, password=None):
"""
Request for a user and a branch the action for a given package.
@@ -753,7 +756,7 @@ def handle_acl(packagename, action, branch='devel', cancel=False,
"""
if action not in actionlist and action != 'all':
raise ActionError(
- "Action '{0}' is not in the list: {1},all".format(
+ "Action '{0}' is not in the list: {1},all".format(
action, ",".join(actionlist)))
if branch is None:
@@ -771,31 +774,31 @@ def handle_acl(packagename, action, branch='devel', cancel=False,
# if action == 'all' then we set/remove all the ACLs
if action == 'all':
log.debug("Process all acl for user: {0}".format(
- pkgdbclient.username))
+ pkgdbclient.username))
for act in actionlist:
try:
- msg = _handle_acl_request(packagename, act, branch,
- cancel)
+ msg = _handle_acl_request(
+ packagename, act, branch, cancel)
except ServerError, err:
log.info("Could not process acl '{0}' for branch "
- "'{1}' of package '{2}'".format(act, branch,
- packagename))
+ "'{1}' of package '{2}'".format(
+ act, branch, packagename))
log.debug(err)
# else we process only the given one
else:
try:
msg = _handle_acl_request(packagename, action, branch,
- cancel)
+ cancel)
except ServerError, err:
log.info("Could not process acl '{0}' for branch '{1}'".format(
- action, branch))
+ action, branch))
log.debug(err)
return msg
def answer_acl_request(packagename, action, user, answer, branch=None,
- username=None, password=None):
+ username=None, password=None):
"""
Answer a requested ACL.
This method allows you to approve or deny a specific requested acl
@@ -815,13 +818,13 @@ def answer_acl_request(packagename, action, user, answer, branch=None,
if action not in actionlist and action != 'all':
raise ActionError("Action '{0}' is not in the list: {1},all".format(
- action, ",".join(actionlist)))
+ action, ",".join(actionlist)))
_get_client_authentified(username=username, password=password)
# Answer all actions requested
if action == 'all':
log.debug("Answer all acl for user: {0}".format(
- pkgdbclient.username))
+ pkgdbclient.username))
# Retrieve only the action which are pending
for action in _get_action_pending(packagename, branch, user):
_answer_acl(action, user, packagename, answer, branch)
@@ -831,7 +834,7 @@ def answer_acl_request(packagename, action, user, answer, branch=None,
def orphan_package(packagename, branch='devel', allpkgs=False,
- username=None, password=None):
+ username=None, password=None):
"""
Orphan packages from pkgdb.
This implies that the owner is changed to "orphan".
@@ -853,15 +856,17 @@ def orphan_package(packagename, branch='devel', allpkgs=False,
log.debug("Orphan {0} in all branches".format(packagename))
branches = _get_active_branches(packagename)
for branch in branches:
- _update_owner_one_package(packagename, branch, action="orphan",
- username=username, password=password)
+ _update_owner_one_package(
+ packagename, branch, action="orphan",
+ username=username, password=password)
else:
log.debug("Orphan {0} in {1}".format(packagename, branch))
- _update_owner_one_package(packagename, branch, action="orphan",
- username=username, password=password)
+ _update_owner_one_package(
+ packagename, branch, action="orphan",
+ username=username, password=password)
else:
- log.info('Search package {0} in the list of packages owned by {1}'.format(
- packagename, pkgdbclient.username))
+ log.info('Search package {0} in the list of packages owned by {1}'
+ ''.format(packagename, pkgdbclient.username))
pkgs = get_packager_info(pkgdbclient.username, output=False)
if packagename is not None:
# transform the packagename to make it a regex
@@ -874,11 +879,13 @@ def orphan_package(packagename, branch='devel', allpkgs=False,
log.debug("Orphan in all branches")
branches = _get_active_branches(pkg)
for branch in branches:
- _update_owner_one_package(pkg, branch, action="orphan",
- username=username, password=password)
- else:
- _update_owner_one_package(pkg, branch, action="orphan",
+ _update_owner_one_package(
+ pkg, branch, action="orphan",
username=username, password=password)
+ else:
+ _update_owner_one_package(
+ pkg, branch, action="orphan",
+ username=username, password=password)
elif re.match(packagename, pkg):
log.debug("motif : {0}".format(motif))
log.debug("package : {0}".format(pkg))
@@ -887,18 +894,20 @@ def orphan_package(packagename, branch='devel', allpkgs=False,
log.debug("Orphan in all branches")
branches = _get_active_branches(pkg)
for branch in branches:
- _update_owner_one_package(pkg, branch, action="orphan",
- username=username, password=password)
- else:
- _update_owner_one_package(packagename, branch, action="orphan",
+ _update_owner_one_package(
+ pkg, branch, action="orphan",
username=username, password=password)
+ else:
+ _update_owner_one_package(
+ packagename, branch, action="orphan",
+ username=username, password=password)
if not found:
print "Could not find {0} in the list of your packages".format(
- packagename)
+ packagename)
def unorphan_package(packagename, branch='devel', owner=None,
- username=None, password=None):
+ username=None, password=None):
"""
Unorphan packages from pkgdb.
@@ -920,15 +929,17 @@ def unorphan_package(packagename, branch='devel', owner=None,
log.debug("Orphan in all branches")
branches = _get_active_branches(packagename)
for branch in branches:
- _update_owner_one_package(packagename, branch, action="unorphan",
+ _update_owner_one_package(
+ packagename, branch, action="unorphan",
username=username, password=password, owner=owner)
else:
- _update_owner_one_package(packagename, branch, action="unorphan",
- username=username, password=password, owner=owner)
+ _update_owner_one_package(
+ packagename, branch, action="unorphan",
+ username=username, password=password, owner=owner)
def retire_package(packagename, branch='devel', allpkgs=False,
- username=None, password=None):
+ username=None, password=None):
"""
Retire packages from pkgdb.
@@ -975,130 +986,160 @@ def setup_parser():
"""
Set the main arguments.
"""
- parser = argparse.ArgumentParser(
- prog="pkgdb-cli")
+ parser = argparse.ArgumentParser(prog="pkgdb-cli")
# General connection options
parser.add_argument('--user', dest="username",
- help="FAS username")
+ help="FAS username")
parser.add_argument('--password', dest="password",
- help="FAS password (if not provided, will be asked " \
- "later)")
+ help="FAS password (if not provided, will be asked "
+ "later)")
parser.add_argument('--nocolor', action='store_true',
- help="Removes color from output")
+ help="Removes color from output")
parser.add_argument('--verbose', action='store_true',
- help="Gives more info about what's going on")
+ help="Gives more info about what's going on")
parser.add_argument('--debug', action='store_true',
- help="Outputs bunches of debugging info")
+ help="Outputs bunches of debugging info")
parser.add_argument('--test', action='store_true',
- help="Uses a test instance instead of the real pkgdb.")
+ help="Uses a test instance instead of the real pkgdb.")
parser.add_argument('--version', action='version',
- version='pkgdb-cli %s' % (version))
+ version='pkgdb-cli %s' % (version))
subparsers = parser.add_subparsers(title='actions')
## ACL
- parser_acl = subparsers.add_parser('acl',
- help='Request acl for a given package')
+ parser_acl = subparsers.add_parser(
+ 'acl',
+ help='Request acl for a given package')
parser_acl.add_argument('package', help="Name of the package to query")
- parser_acl.add_argument('branch', default='devel', nargs="?",
- help="Branch of the package to query (default: 'devel', can be: 'all')")
- parser_acl.add_argument('--pending', action="store_true", default=False,
- help="Display only ACL awaiting review")
- parser_acl.add_argument('--noextra', action="store_false", default=True,
- help="Do not display extra information (number of " \
- "bugs opened and last build)")
+ parser_acl.add_argument(
+ 'branch', default='devel', nargs="?",
+ help="Branch of the package to query (default: 'devel', can be: "
+ "'all')")
+ parser_acl.add_argument(
+ '--pending', action="store_true", default=False,
+ help="Display only ACL awaiting review")
+ parser_acl.add_argument(
+ '--noextra', action="store_false", default=True,
+ help="Do not display extra information (number of bugs opened and "
+ "last build)")
parser_acl.set_defaults(func=do_acl)
## List
- parser_list = subparsers.add_parser('list',
- help='List package according to the specified criteria')
- parser_list.add_argument('--all', action="store_true",
- default=False, dest='all',
- help="Query all the package in the collection. "
- "This may take a while.")
- parser_list.add_argument('--nameonly', action="store_true",
- default=False, dest='name_only',
- help="Returns only the name of the package (without the description)")
- parser_list.add_argument('--orphaned', action="store_true",
- default=False, dest='orphaned',
- help="List all orphaned packages")
- parser_list.add_argument('--eol', action="store_true",
- default=False, dest='eol',
- help="List all orphaned and eol'd packages")
- parser_list.add_argument('--user', dest='username', default=False,
- help="List all the packages of the user <user>")
- parser_list.add_argument('--branch', dest='branch', default="all",
- help="Specify a branch (default:'all')")
- parser_list.add_argument('pattern', default=None, nargs="?",
- help="Pattern to query")
+ parser_list = subparsers.add_parser(
+ 'list',
+ help='List package according to the specified criteria')
+ parser_list.add_argument(
+ '--all', action="store_true",
+ default=False, dest='all',
+ help="Query all the package in the collection. This may take a "
+ "while.")
+ parser_list.add_argument(
+ '--nameonly', action="store_true",
+ default=False, dest='name_only',
+ help="Returns only the name of the package (without the description)")
+ parser_list.add_argument(
+ '--orphaned', action="store_true",
+ default=False, dest='orphaned',
+ help="List all orphaned packages")
+ parser_list.add_argument(
+ '--eol', action="store_true",
+ default=False, dest='eol',
+ help="List all orphaned and eol'd packages")
+ parser_list.add_argument(
+ '--user', dest='username', default=False,
+ help="List all the packages of the user <user>")
+ parser_list.add_argument(
+ '--branch', dest='branch', default="all",
+ help="Specify a branch (default:'all')")
+ parser_list.add_argument(
+ 'pattern', default=None, nargs="?",
+ help="Pattern to query")
parser_list.set_defaults(func=do_list)
## Orphan
- parser_orphan = subparsers.add_parser('orphan',
- help='Orphan package(s) according to the specified criteria')
- parser_orphan.add_argument('package',
- help="Name of the package to orphan or " \
- "simple pattern")
- parser_orphan.add_argument('branch', default='devel', nargs="?",
- help="Branch of the package to orphan " \
- "(default: 'devel', can be: 'all')")
- parser_orphan.add_argument('--retire', action="store_true", default=False,
- help="Retire the given package")
- parser_orphan.add_argument('--all', action="store_true", default=False,
- help="Orphan all your packages")
+ parser_orphan = subparsers.add_parser(
+ 'orphan',
+ help='Orphan package(s) according to the specified criteria')
+ parser_orphan.add_argument(
+ 'package',
+ help="Name of the package to orphan or simple pattern")
+ parser_orphan.add_argument(
+ 'branch', default='devel', nargs="?",
+ help="Branch of the package to orphan (default: 'devel', can be: "
+ "'all')")
+ parser_orphan.add_argument(
+ '--retire', action="store_true", default=False,
+ help="Retire the given package")
+ parser_orphan.add_argument(
+ '--all', action="store_true", default=False,
+ help="Orphan all your packages")
parser_orphan.set_defaults(func=do_orphan)
## Unorphan
- parser_unorphan = subparsers.add_parser('unorphan',
- help='Unorphan package(s) according to the specified criteria')
- parser_unorphan.add_argument('package',
- help="Name of the package to unorphan")
- parser_unorphan.add_argument('branch', default='devel', nargs="?",
- help="Branch of the package to unorphan " \
- "(default: 'devel', can be: 'all')")
- parser_unorphan.add_argument('--owner', default=None,
- help="FAS username of the owner of the package " \
- "This allows to give your package or an orphaned " \
- "package to someone else. " \
- "(default: current FAS user)")
+ parser_unorphan = subparsers.add_parser(
+ 'unorphan',
+ help='Unorphan package(s) according to the specified criteria')
+ parser_unorphan.add_argument(
+ 'package',
+ help="Name of the package to unorphan")
+ parser_unorphan.add_argument(
+ 'branch', default='devel', nargs="?",
+ help="Branch of the package to unorphan "
+ "(default: 'devel', can be: 'all')")
+ parser_unorphan.add_argument(
+ '--owner', default=None,
+ help="FAS username of the owner of the package "
+ "This allows to give your package or an orphaned "
+ "package to someone else. "
+ "(default: current FAS user)")
parser_unorphan.set_defaults(func=do_unorphan)
## Request
- parser_request = subparsers.add_parser('request',
- help='Request ACLs on package(s) according to the specified criteria')
- parser_request.add_argument('--cancel', action="store_true", default=False,
- help="Obsolete an ACL request")
- parser_request.add_argument('package', help="Name of the package")
- parser_request.add_argument("action",
- help="Request (or obsolete a request) for specific ACL on this package " \
- "(actions are '{0}', 'all')".format(
- "', '".join(actionlist)))
- parser_request.add_argument('branch', default='devel', nargs="?",
- help="Branch of the package for which the ACL is " \
- "requested (default: 'devel', can be: 'all')")
+ parser_request = subparsers.add_parser(
+ 'request',
+ help='Request ACLs on package(s) according to the specified criteria')
+ parser_request.add_argument(
+ '--cancel', action="store_true", default=False,
+ help="Obsolete an ACL request")
+ parser_request.add_argument(
+ 'package', help="Name of the package")
+ parser_request.add_argument(
+ "action",
+ help="Request (or obsolete a request) for specific ACL on this"
+ " package (actions are '{0}', 'all')".format(
+ "', '".join(actionlist)))
+ parser_request.add_argument(
+ 'branch', default='devel', nargs="?",
+ help="Branch of the package for which the ACL is "
+ "requested (default: 'devel', can be: 'all')")
parser_request.set_defaults(func=do_request)
## Update
- parser_update = subparsers.add_parser('update',
- help='Update ACLs on package(s) as desired')
+ parser_update = subparsers.add_parser(
+ 'update',
+ help='Update ACLs on package(s) as desired')
parser_update.add_argument('package', help="Name of the package")
- parser_update.add_argument("action",
- help="Request a specific ACL for this package " \
- "(actions are: '{0}', 'all')".format(
- "', '".join(actionlist)))
- parser_update.add_argument('user',
- help="FAS username of the person who requested ACL " \
- "on this package")
- parser_update.add_argument('branch', default='devel', nargs="?",
- help="Branch of the package for which the ACL is " \
- "requested (default: 'devel', can be: 'all')")
- parser_update.add_argument('--approve', action="store_true", default=False,
- help="Approve the requested ACL")
- parser_update.add_argument('--deny', action="store_true", default=False,
- help="Deny the requested ACL")
+ parser_update.add_argument(
+ "action",
+ help="Request a specific ACL for this package "
+ "(actions are: '{0}', 'all')".format(
+ "', '".join(actionlist)))
+ parser_update.add_argument(
+ 'user',
+ help="FAS username of the person who requested ACL "
+ "on this package")
+ parser_update.add_argument(
+ 'branch', default='devel', nargs="?",
+ help="Branch of the package for which the ACL is "
+ "requested (default: 'devel', can be: 'all')")
+ parser_update.add_argument(
+ '--approve', action="store_true", default=False,
+ help="Approve the requested ACL")
+ parser_update.add_argument(
+ '--deny', action="store_true", default=False,
+ help="Deny the requested ACL")
parser_update.set_defaults(func=do_update)
-
return parser
@@ -1109,7 +1150,7 @@ def do_acl(args):
log.info("branch : {0}".format(args.branch))
#log.info("approve : {0}".format(args.approve))
get_package_info(args.package, branch=args.branch,
- pending=args.pending, extra=args.noextra)
+ pending=args.pending, extra=args.noextra)
def do_list(args):
@@ -1126,18 +1167,17 @@ def do_list(args):
get_packages(None, branch=args.branch)
elif (args.orphaned is not None and args.orphaned):
get_orphaned_packages(args.pattern, eol=args.eol,
- name_only=args.name_only,
- branch=args.branch)
+ name_only=args.name_only,
+ branch=args.branch)
elif (args.username is not None and args.username):
get_packager_info(args.username, motif=args.pattern,
- name_only=args.name_only,
- branch=args.branch)
+ name_only=args.name_only,
+ branch=args.branch)
elif (args.pattern is not None):
get_packages(args.pattern, name_only=args.name_only,
- branch=args.branch)
+ branch=args.branch)
else:
- raise argparse.ArgumentTypeError(
- "Not enough argument given")
+ raise argparse.ArgumentTypeError("Not enough argument given")
def do_orphan(args):
@@ -1148,10 +1188,10 @@ def do_orphan(args):
log.info("all : {0}".format(args.all))
log.info("retire : {0}".format(args.retire))
orphan_package(args.package, args.branch, args.all,
- args.username, args.password)
+ args.username, args.password)
if args.retire is True:
retire_package(args.package, args.branch,
- args.username, args.password)
+ args.username, args.password)
def do_unorphan(args):
@@ -1160,7 +1200,7 @@ def do_unorphan(args):
log.info("branch : {0}".format(args.branch))
log.info("owner : {0}".format(args.owner))
unorphan_package(args.package, args.branch, args.owner,
- args.username, args.password,)
+ args.username, args.password,)
def do_request(args):
@@ -1170,8 +1210,8 @@ def do_request(args):
log.info("acl : {0}".format(args.action))
log.info("cancel : {0}".format(args.cancel))
handle_acl(args.package, action=args.action,
- branch=args.branch, cancel=args.cancel,
- username=args.username, password=args.password)
+ branch=args.branch, cancel=args.cancel,
+ username=args.username, password=args.password)
def do_update(args):
@@ -1186,7 +1226,7 @@ def do_update(args):
if args.approve:
answer = "Approved"
answer_acl_request(args.package, args.action, args.user,
- answer, args.branch, args.username, args.password)
+ answer, args.branch, args.username, args.password)
def do_branch(args):
@@ -1207,7 +1247,6 @@ def main():
arg.func(arg)
-
if __name__ == '__main__':
try:
main()
10 years, 8 months
[packagedb-cli] Retirement adjustments
by Pierre-YvesChibon
commit dbae1e7f8b3424375d3af0fae4b41a1cc89a68e3
Author: Till Maas <opensource(a)till.name>
Date: Sat Sep 7 10:31:21 2013 +0200
Retirement adjustments
- Exclude correct status code
- always inform if package is already retired
- add constants for status codes
pkgdb-cli | 17 +++++++++++++----
1 files changed, 13 insertions(+), 4 deletions(-)
---
diff --git a/pkgdb-cli b/pkgdb-cli
index ce1487c..f0b44c2 100755
--- a/pkgdb-cli
+++ b/pkgdb-cli
@@ -35,6 +35,13 @@ bold = "\033[1m"
red = "\033[0;31m"
reset = "\033[0;0m"
+STATUS_ACTIVE = 1
+STATUS_APPROVED = 3
+STATUS_DENIED = 10
+STATUS_ORPHANED = 14
+STATUS_UNDER_DEVELOPMENT = 18
+STATUS_RETIRED = 20
+
# Initial simple logging stuff
logging.basicConfig()
log = logging.getLogger("pkgdb")
@@ -946,7 +953,7 @@ def retire_package(packagename, branch='devel', allpkgs=False,
pkgs = [packagename]
for pkg in pkgs:
- branches = _get_active_branches(pkg, 1)
+ branches = _get_active_branches(pkg, not_statuscode=STATUS_RETIRED)
if branch == "all":
log.debug("Retire in all branches")
for branch in branches:
@@ -955,9 +962,11 @@ def retire_package(packagename, branch='devel', allpkgs=False,
username=username, password=password)
else:
if branch not in branches:
- log.info(
- 'Package {0} on {1} is already retired'
- ''.format(pkg, branch))
+ print "{0}{1} is already retired in {2}{3}\n".format(
+ bold,
+ packagename,
+ branch,
+ reset)
else:
_retire_one_package(pkg, branch, username, password)
10 years, 8 months
[packagedb-cli] Check the status of the package in the collection rather than the status of the collection
by Pierre-YvesChibon
commit 74d50779fd859b4c029d4359f26aeed30ce42593
Author: Pierre-Yves Chibon <pingou(a)pingoured.fr>
Date: Fri Sep 6 07:38:16 2013 +0200
Check the status of the package in the collection rather than the status of the collection
pkgdb-cli | 16 +++++++++++++---
1 files changed, 13 insertions(+), 3 deletions(-)
---
diff --git a/pkgdb-cli b/pkgdb-cli
index 76f3956..ce1487c 100755
--- a/pkgdb-cli
+++ b/pkgdb-cli
@@ -190,12 +190,22 @@ def _get_package_id(packagename, branch):
packagename, branch))
-def _get_active_branches(packagename=None, statuscode=None):
+def _get_active_branches(packagename=None, not_statuscode=None):
"""
Query pkgdb to retrieve all none-EOL branches.
:kwarg packagename, if provided returns only the branches active for
this package.
+ :kwarg not_statuscode, exclude the branch in which the package has this
+ statuscode.
+ For reference:
+ 1 = 'Active',
+ 3 = 'Approved'
+ 10 = 'Denied',
+ 14 = 'Orphaned',
+ 18 = 'Under Development',
+ 20 = 'Deprecated',
+
Returns a list containing the names of these branches
"""
@@ -210,8 +220,8 @@ def _get_active_branches(packagename=None, statuscode=None):
branchs = []
if 'packageListings' in pkgdbinfo:
for collection in pkgdbinfo['packageListings']:
- if statuscode is not None:
- if collection['collection']['statuscode'] != statuscode:
+ if not_statuscode is not None:
+ if str(collection['statuscode']) == str(not_statuscode):
continue
branchs.append(collection['collection']['branchname'])
branches = list(set(branchs).intersection(set(branches)))
10 years, 8 months
[packagedb-cli] Remove duplicate retire code
by Pierre-YvesChibon
commit 5e761acf9a1b5e15d00b2135ff0ae7fec29eb5a5
Author: Till Maas <opensource(a)till.name>
Date: Thu Sep 5 22:14:40 2013 +0200
Remove duplicate retire code
pkgdb-cli | 30 +++++++++---------------------
1 files changed, 9 insertions(+), 21 deletions(-)
---
diff --git a/pkgdb-cli b/pkgdb-cli
index d8a66dc..76f3956 100755
--- a/pkgdb-cli
+++ b/pkgdb-cli
@@ -932,36 +932,24 @@ def retire_package(packagename, branch='devel', allpkgs=False,
if allpkgs is True:
pkgs = get_packager_info(pkgdbclient.username)
log.debug("Retire all packages")
-
- for pkg in pkgs:
- branches = _get_active_branches(pkg, 1)
- if branch == "all":
- log.debug("Retire in all branches")
- for branch in branches:
- _update_owner_one_package(pkg, branch, action="orphan",
- username=username, password=password)
- else:
- if branch not in branches:
- log.info(
- 'Package {0} on {1} is already retired'
- ''.format(pkg, branch))
- else:
- _retire_one_package(pkg, branch, username, password)
else:
- branches = _get_active_branches(packagename, 1)
+ pkgs = [packagename]
+
+ for pkg in pkgs:
+ branches = _get_active_branches(pkg, 1)
if branch == "all":
log.debug("Retire in all branches")
for branch in branches:
- _update_owner_one_package(packagename, branch,
- action="orphan", username=username,
- password=password)
+ _update_owner_one_package(
+ pkg, branch, action="orphan",
+ username=username, password=password)
else:
if branch not in branches:
log.info(
'Package {0} on {1} is already retired'
- ''.format(packagename, branch))
+ ''.format(pkg, branch))
else:
- _retire_one_package(packagename, branch, username, password)
+ _retire_one_package(pkg, branch, username, password)
def setup_parser():
10 years, 8 months
[packagedb-cli] Fix wording and formatting of the output and make sure in testing we us stg FAS as well
by Pierre-YvesChibon
commit 27dc0546cb1a9d036c23abc89282c91821f1a2c1
Author: Pierre-Yves Chibon <pingou(a)pingoured.fr>
Date: Thu Sep 5 12:55:36 2013 +0200
Fix wording and formatting of the output and make sure in testing we us stg FAS as well
This prevent some bugs from happening when one has a session_id from stg and tries in
production or vice-versa.
pkgdb-cli | 14 ++++++++------
1 files changed, 8 insertions(+), 6 deletions(-)
---
diff --git a/pkgdb-cli b/pkgdb-cli
index 5e64fb1..d8a66dc 100755
--- a/pkgdb-cli
+++ b/pkgdb-cli
@@ -51,8 +51,10 @@ if '--nocolor' in sys.argv:
if '--test' in sys.argv:
print "Testing environment"
- pkgdbclient = PackageDB('https://admin.stg.fedoraproject.org/pkgdb',
- insecure=True)
+ pkgdbclient = PackageDB(
+ 'https://admin.stg.fedoraproject.org/pkgdb', insecure=True)
+ fasclient = AccountSystem(
+ 'https://admin.stg.fedoraproject.org/accounts', insecure=True)
actionlist = ['watchbugzilla', 'watchcommits', 'commit', 'approveacls']
@@ -97,7 +99,7 @@ def _get_client_authentified(username=None, password=None):
try:
discard = fasclient.send_request('/home', auth=True)
require_password = False
- except AuthError:
+ except AuthError, err:
pass
else:
# handle potential race condition between creation of
@@ -330,7 +332,7 @@ def _retire_one_package(packagename, branch='devel', username=None,
log.debug("output: {0}".format(pkgdbinfo))
if "retirement" in pkgdbinfo.keys():
- print "{0}{1}{2}{3}\n".format(bold, packagename,
+ print "{0}{1} {2}{3}\n".format(bold, packagename,
pkgdbinfo["retirement"], reset)
@@ -941,7 +943,7 @@ def retire_package(packagename, branch='devel', allpkgs=False,
else:
if branch not in branches:
log.info(
- 'Package {0} on {1} is already no longer active'
+ 'Package {0} on {1} is already retired'
''.format(pkg, branch))
else:
_retire_one_package(pkg, branch, username, password)
@@ -956,7 +958,7 @@ def retire_package(packagename, branch='devel', allpkgs=False,
else:
if branch not in branches:
log.info(
- 'Package {0} on {1} is already no longer active'
+ 'Package {0} on {1} is already retired'
''.format(packagename, branch))
else:
_retire_one_package(packagename, branch, username, password)
10 years, 8 months
[packagedb-cli] Figure a way to turn on printing the stack trace when using --debug
by Pierre-YvesChibon
commit 45f3afe4add071d5f60bae26ea9db0ab297de3b5
Author: Pierre-Yves Chibon <pingou(a)pingoured.fr>
Date: Thu Sep 5 12:44:30 2013 +0200
Figure a way to turn on printing the stack trace when using --debug
pkgdb-cli | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
---
diff --git a/pkgdb-cli b/pkgdb-cli
index 48aee80..5e64fb1 100755
--- a/pkgdb-cli
+++ b/pkgdb-cli
@@ -1216,4 +1216,5 @@ if __name__ == '__main__':
sys.exit(4)
except Exception, e:
print 'Error: {0}'.format(e)
+ logging.exception("Generic error catched:")
sys.exit(5)
10 years, 8 months
[packagedb-cli] Some for typos in variable names...
by Pierre-YvesChibon
commit 10e88e32dd0b03bbc97be9d56dbda6482faaa5a0
Author: Pierre-Yves Chibon <pingou(a)pingoured.fr>
Date: Thu Sep 5 12:39:58 2013 +0200
Some for typos in variable names...
pkgdb-cli | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
---
diff --git a/pkgdb-cli b/pkgdb-cli
index ae4d508..48aee80 100755
--- a/pkgdb-cli
+++ b/pkgdb-cli
@@ -946,12 +946,13 @@ def retire_package(packagename, branch='devel', allpkgs=False,
else:
_retire_one_package(pkg, branch, username, password)
else:
- branches = _get_active_branches(pkg, 1)
+ branches = _get_active_branches(packagename, 1)
if branch == "all":
log.debug("Retire in all branches")
for branch in branches:
- _update_owner_one_package(pkg, branch, action="orphan",
- username=username, password=password)
+ _update_owner_one_package(packagename, branch,
+ action="orphan", username=username,
+ password=password)
else:
if branch not in branches:
log.info(
10 years, 8 months
[packagedb-cli] Fix typo in variable name
by Pierre-YvesChibon
commit 2c83f5776e280cbfbb15e989f11528cccf0ee4f6
Author: Pierre-Yves Chibon <pingou(a)pingoured.fr>
Date: Thu Sep 5 12:37:24 2013 +0200
Fix typo in variable name
pkgdb-cli | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
---
diff --git a/pkgdb-cli b/pkgdb-cli
index c58dec8..ae4d508 100755
--- a/pkgdb-cli
+++ b/pkgdb-cli
@@ -956,7 +956,7 @@ def retire_package(packagename, branch='devel', allpkgs=False,
if branch not in branches:
log.info(
'Package {0} on {1} is already no longer active'
- ''.format(pkg, branch))
+ ''.format(packagename, branch))
else:
_retire_one_package(packagename, branch, username, password)
10 years, 8 months
[packagedb-cli] From now on, one can only retire package that not already retired.
by Pierre-YvesChibon
commit 6390df2feb8474c30ba5aad04cfb1baaf5f0761e
Author: Pierre-Yves Chibon <pingou(a)pingoured.fr>
Date: Thu Sep 5 12:16:18 2013 +0200
From now on, one can only retire package that not already retired.
pkgdb-cli | 23 ++++++++++++++++++-----
1 files changed, 18 insertions(+), 5 deletions(-)
---
diff --git a/pkgdb-cli b/pkgdb-cli
index 9444af1..c58dec8 100755
--- a/pkgdb-cli
+++ b/pkgdb-cli
@@ -188,7 +188,7 @@ def _get_package_id(packagename, branch):
packagename, branch))
-def _get_active_branches(packagename=None):
+def _get_active_branches(packagename=None, statuscode=None):
"""
Query pkgdb to retrieve all none-EOL branches.
@@ -208,6 +208,9 @@ def _get_active_branches(packagename=None):
branchs = []
if 'packageListings' in pkgdbinfo:
for collection in pkgdbinfo['packageListings']:
+ if statuscode is not None:
+ if collection['collection']['statuscode'] != statuscode:
+ continue
branchs.append(collection['collection']['branchname'])
branches = list(set(branchs).intersection(set(branches)))
return branches
@@ -929,23 +932,33 @@ def retire_package(packagename, branch='devel', allpkgs=False,
log.debug("Retire all packages")
for pkg in pkgs:
+ branches = _get_active_branches(pkg, 1)
if branch == "all":
log.debug("Retire in all branches")
- branches = _get_active_branches(pkg)
for branch in branches:
_update_owner_one_package(pkg, branch, action="orphan",
username=username, password=password)
else:
- _retire_one_package(pkg, branch, username, password)
+ if branch not in branches:
+ log.info(
+ 'Package {0} on {1} is already no longer active'
+ ''.format(pkg, branch))
+ else:
+ _retire_one_package(pkg, branch, username, password)
else:
+ branches = _get_active_branches(pkg, 1)
if branch == "all":
log.debug("Retire in all branches")
- branches = _get_active_branches(pkg)
for branch in branches:
_update_owner_one_package(pkg, branch, action="orphan",
username=username, password=password)
else:
- _retire_one_package(packagename, branch, username, password)
+ if branch not in branches:
+ log.info(
+ 'Package {0} on {1} is already no longer active'
+ ''.format(pkg, branch))
+ else:
+ _retire_one_package(packagename, branch, username, password)
def setup_parser():
10 years, 8 months