~allanlesage/uci-engine/coverage-extractor

« back to all changes in this revision

Viewing changes to britney_proxy/britney/process_requests.py

  • Committer: Allan LeSage
  • Date: 2014-10-18 01:02:13 UTC
  • mfrom: (817.1.42 uci-engine)
  • Revision ID: allan.lesage@canonical.com-20141018010213-um3fn28281v2204v
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
from ci_utils import (
27
27
    amqp_utils,
28
28
    dump_stack,
 
29
    image_store,
29
30
    unit_config,
30
31
)
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
36
 
 
37
 
# I.e.: https://app.asana.com/0/8312550429058/16178663570516
38
 
# 'minimal images for britney'
39
32
 
40
33
 
41
34
class BritneyRequestHandler(object):
60
53
        self.output_queue = output_queue
61
54
        self.auth_conf = unit_config.get_auth_config()
62
55
 
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
66
 
        else:
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)
69
58
 
70
59
    def handle(self, params):
71
60
        series = params['series']
75
64
        # debug purposes).
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
83
 
        # requests errors'
84
 
        if architecture == 'amd64':
85
 
            params = dict(ticket_id=str(uuid.uuid1()),
86
 
                          progress_trigger=output_queue,
87
 
                          series=series,
88
 
                          image_id=self.get_image_id(series),
89
 
                          ppa_list=[],
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,
 
69
                      series=series,
 
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)
94
77
 
95
78
 
96
79
class BritneyRequestsQueue(object):
116
99
                                 delete=True)
117
100
 
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))
122
107
        return ret
123
108
 
124
109