26
26
from ci_utils import (
31
# FIXME: We need a better overall story for the available images, for now, just
32
# use the basic ones -- vila 2014-09-23
33
from ci_utils.testing import features
34
# FIXME: Yet, a simple and direct way to bootstrap would be to just create
35
# uci-engine-britney-{series}-{arch} images. -- vila 2014-09-23
37
# I.e.: https://app.asana.com/0/8312550429058/16178663570516
38
# 'minimal images for britney'
41
34
class BritneyRequestHandler(object):
60
53
self.output_queue = output_queue
61
54
self.auth_conf = unit_config.get_auth_config()
63
def get_image_id(self, series):
64
if unit_config.is_hpcloud(self.auth_conf.get('glance_os_auth_url')):
65
test_images = features.hpcloud_test_images
67
test_images = features.canonistack_test_images
68
return test_images[series]
56
def get_image_id(self, series, arch):
57
return image_store.uci_image_name('britney', series, arch)
70
59
def handle(self, params):
71
60
series = params['series']
76
65
output_queue = params.get('output_queue', self.output_queue)
77
66
report_queue = params.get('report_queue', None)
78
# Only amd64 architecture is supported for now, everything else is
79
# dropped on the floor as we can't send feedback to the user at this
80
# point (the data flow is: britney.requests -> test_runner ->
81
# britney.results). See
82
# https://app.asana.com/0/8312550429058/12699749556376 'reporting test
84
if architecture == 'amd64':
85
params = dict(ticket_id=str(uuid.uuid1()),
86
progress_trigger=output_queue,
88
image_id=self.get_image_id(series),
90
package_list=[package])
91
if report_queue is not None:
92
params['report_queue'] = report_queue
93
self.test_runner_queue.publish(params)
67
params = dict(ticket_id=str(uuid.uuid1()),
68
progress_trigger=output_queue,
70
architecture=architecture,
71
image_id=self.get_image_id(series, architecture),
72
adt_opts=['--apt-upgrade', '--apt-pocket=proposed'],
73
package_list=[package])
74
if report_queue is not None:
75
params['report_queue'] = report_queue
76
self.test_runner_queue.publish(params)
96
79
class BritneyRequestsQueue(object):
118
101
def handle_request(self, msg):
102
logging.info('Will handle {}'.format(msg.body))
119
103
body = json.loads(msg.body)
120
104
ret = self.request_handler.handle(body)
121
105
msg.channel.basic_ack(msg.delivery_tag)
106
logging.info('Handling returned: {} for {}'.format(ret, msg.body))