7
from cloudarchive import utils as utils
9
from cloudarchive.common import SOURCE_RELEASE, LTS_SERIES
11
logging.basicConfig(level=logging.INFO)
14
if __name__ == '__main__':
15
usage = 'usage: %prog [options] meta-bug-number'
16
parser = optparse.OptionParser(usage=usage)
17
parser.add_option('-d', '--dryrun', action='store_true',
18
dest='dryrun', default=False)
19
(opts, args) = parser.parse_args()
27
lp_bug = utils.get_bug(bug_no)
29
affected = utils.affected_packages(lp_bug)
30
logging.info('Meta bug (LP: #%s) affects packages: %s.' %
33
ubuntu_series = utils.meta_bug_distribution(lp_bug)
34
openstack_series = [k for k, v in SOURCE_RELEASE.iteritems()
35
if v == ubuntu_series].pop()
37
logging.info('Meta bug affects Ubuntu (%s) and OpenStack (%s)' %
38
(ubuntu_series, openstack_series))
40
pocket = [k for k, v in LTS_SERIES.iteritems()
41
if openstack_series in v].pop()
42
pocket = '%s-%s' % (pocket, openstack_series)
44
msg = 'This bug has been fixed in the Ubuntu Cloud Archive (%s):\n\n' %\
47
for package in affected:
48
u_rel = utils.query_distro(package, ubuntu_series)
49
ca_rel = utils.get_package_version(package, openstack_series)
50
if not ca_rel.startswith(u_rel):
51
logging.warn('UCA Package %s %s does not appear to be derived '
52
'from correpsonding Ubuntu %s package %s %s' %
53
(package, ca_rel, ubuntu_series, package, u_rel))
54
msg += ' %s: %s\n' % (package, ca_rel)
56
print 'Will post the following to bug (LP: #%s):' % bug_no
60
logging.info('Dry run, bailing.')
63
utils.set_cloud_archive_task_status(lp_bug, status='Fix Released')
64
utils.post_message(bug=lp_bug, message=msg)