예제 #1
0
    def consume(self, routingKey, msg):
        """
        Consumer for this (CaptureProperty) class. Gets the properties from data api and
        send them to the storage backends.
        """
        builder_info = yield self.master.data.get(("builders", msg['builderid']))

        if self._builder_name_matches(builder_info):
            properties = yield self.master.data.get(("builds", msg['buildid'], "properties"))

            if self._regex:
                filtered_prop_names = [
                    pn for pn in properties if re.match(self._property_name, pn)]
            else:
                filtered_prop_names = [self._property_name]

            for pn in filtered_prop_names:
                try:
                    ret_val = self._callback(properties, pn)
                except KeyError:
                    raise CaptureCallbackError("CaptureProperty failed."
                                               " The property %s not found for build number %s on"
                                               " builder %s."
                                               % (pn, msg['number'], builder_info['name']))
                context = self._defaultContext(msg, builder_info['name'])
                series_name = "%s-%s" % (builder_info['name'], pn)
                post_data = {
                    "name": pn,
                    "value": ret_val
                }
                yield self._store(post_data, series_name, context)

        else:
            yield defer.succeed(None)
예제 #2
0
    def consume(self, routingKey, msg):
        """
        Consumer for this (CaptureData) class. Gets the data sent from yieldMetricsValue and
        sends it to the storage backends.
        """
        build_data = msg['build_data']
        builder_info = yield self.master.data.get(("builders", build_data['builderid']))

        if self._builder_name_matches(builder_info) and self._data_name == msg['data_name']:
            try:
                ret_val = self._callback(msg['post_data'])
            except Exception as e:
                raise CaptureCallbackError("CaptureData failed for build %s of builder %s."
                                           " Exception generated: %s with message %s"
                                           % (build_data['number'], builder_info['name'],
                                              type(e).__name__, str(e)))
            post_data = ret_val
            series_name = '%s-%s' % (builder_info['name'], self._data_name)
            context = self._defaultContext(build_data, builder_info['name'])
            yield self._store(post_data, series_name, context)
예제 #3
0
    def consume(self, routingKey, msg):
        """
        Consumer for CaptureBuildStartTime. Gets the build start time.
        """
        builder_info = yield self.master.data.get(
            ("builders", msg['builderid']))
        if self._builder_name_matches(builder_info):
            try:
                ret_val = self._callback(*self._retValParams(msg))
            except Exception as e:
                # catching generic exceptions is okay here since we propagate it
                raise CaptureCallbackError(
                    "%s Exception raised: %s with message: %s" %
                    (self._err_msg(
                        msg, builder_info['name']), type(e).__name__, str(e)))

            context = self._defaultContext(msg, builder_info['name'])
            post_data = {self._time_type: ret_val}
            series_name = "%s-build-times" % builder_info['name']
            yield self._store(post_data, series_name, context)

        else:
            yield defer.succeed(None)