Beispiel #1
0
    def push(self, dataframes, scope_id=None):

        for frame in dataframes:
            period = tzutils.diff_seconds(frame.end, frame.start)
            for type_, point in frame.iterpoints():
                self._conn.append_point(type_, frame.start, period, point)

        self._conn.commit()
Beispiel #2
0
 def test_diff_seconds_negative_arg_aware_objects_on_summer_change(self):
     one = datetime.datetime(2019,
                             3,
                             31,
                             1,
                             tzinfo=tz.gettz('Europe/Paris'))
     two = datetime.datetime(2019,
                             3,
                             31,
                             3,
                             tzinfo=tz.gettz('Europe/Paris'))
     self.assertEqual(tzutils.diff_seconds(two, one), 3600)
Beispiel #3
0
    def fetch_all(self, metric_name, start, end, scope_id, q_filter=None):
        """Returns metrics to be valorized."""
        scope_key = CONF.collect.scope_key
        method = self.conf[metric_name]['extra_args']['aggregation_method']
        groupby = self.conf[metric_name].get('groupby', [])
        metadata = self.conf[metric_name].get('metadata', [])
        period = tzutils.diff_seconds(end, start)
        time = end

        query = '{0}({0}_over_time({1}{{{2}="{3}"}}[{4}s])) by ({5})'.format(
            method,
            metric_name,
            scope_key,
            scope_id,
            period,
            ', '.join(groupby + metadata),
        )

        try:
            res = self._conn.get_instant(
                query,
                time.isoformat(),
            )
        except PrometheusResponseError as e:
            raise CollectError(*e.args)

        # If the query returns an empty dataset,
        # return an empty list
        if not res['data']['result']:
            return []

        formatted_resources = []

        for item in res['data']['result']:
            metadata, groupby, qty = self._format_data(
                metric_name,
                scope_key,
                scope_id,
                start,
                end,
                item,
            )

            formatted_resources.append(
                dataframe.DataPoint(
                    self.conf[metric_name]['unit'],
                    qty,
                    0,
                    groupby,
                    metadata,
                ))

        return formatted_resources
Beispiel #4
0
 def test_diff_seconds_negative_arg_aware_objects(self):
     one = datetime.datetime(2019, 1, 1, 1, 1, 30, tzinfo=tz.UTC)
     two = datetime.datetime(2019, 1, 1, 1, 1, tzinfo=tz.UTC)
     self.assertEqual(tzutils.diff_seconds(two, one), 30)
Beispiel #5
0
 def test_diff_seconds_negative_arg_naive_objects(self):
     one = datetime.datetime(2019, 1, 1, 1, 1, 30)
     two = datetime.datetime(2019, 1, 1, 1, 1)
     self.assertEqual(tzutils.diff_seconds(two, one), 30)