Updated DB_Helper by adding firebase methods.
This commit is contained in:
parent
485cc3bbba
commit
c82121d036
1810 changed files with 537281 additions and 1 deletions
152
venv/Lib/site-packages/gcloud/monitoring/timeseries.py
Normal file
152
venv/Lib/site-packages/gcloud/monitoring/timeseries.py
Normal file
|
@ -0,0 +1,152 @@
|
|||
# Copyright 2016 Google Inc. All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
"""Time series for the `Google Monitoring API (V3)`_.
|
||||
|
||||
Features intentionally omitted from this first version of the client library:
|
||||
* Writing time series.
|
||||
* Natural representation of distribution values.
|
||||
|
||||
.. _Google Monitoring API (V3):
|
||||
https://cloud.google.com/monitoring/api/ref_v3/rest/v3/TimeSeries
|
||||
"""
|
||||
|
||||
import collections
|
||||
|
||||
from gcloud.monitoring.metric import Metric
|
||||
from gcloud.monitoring.resource import Resource
|
||||
|
||||
|
||||
class TimeSeries(collections.namedtuple(
|
||||
'TimeSeries', 'metric resource metric_kind value_type points')):
|
||||
"""A single time series of metric values.
|
||||
|
||||
:type metric: :class:`~gcloud.monitoring.metric.Metric`
|
||||
:param metric: A metric object.
|
||||
|
||||
:type resource: :class:`~gcloud.monitoring.resource.Resource`
|
||||
:param resource: A resource object.
|
||||
|
||||
:type metric_kind: string
|
||||
:param metric_kind:
|
||||
The kind of measurement: :data:`MetricKind.GAUGE`,
|
||||
:data:`MetricKind.DELTA`, or :data:`MetricKind.CUMULATIVE`.
|
||||
See :class:`~gcloud.monitoring.metric.MetricKind`.
|
||||
|
||||
:type value_type: string
|
||||
:param value_type:
|
||||
The value type of the metric: :data:`ValueType.BOOL`,
|
||||
:data:`ValueType.INT64`, :data:`ValueType.DOUBLE`,
|
||||
:data:`ValueType.STRING`, or :data:`ValueType.DISTRIBUTION`.
|
||||
See :class:`~gcloud.monitoring.metric.ValueType`.
|
||||
|
||||
:type points: list of :class:`Point`
|
||||
:param points: A list of point objects.
|
||||
"""
|
||||
|
||||
_labels = None
|
||||
|
||||
@property
|
||||
def labels(self):
|
||||
"""A single dictionary with values for all the labels.
|
||||
|
||||
This combines ``resource.labels`` and ``metric.labels`` and also
|
||||
adds ``"resource_type"``.
|
||||
"""
|
||||
if self._labels is None:
|
||||
labels = {'resource_type': self.resource.type}
|
||||
labels.update(self.resource.labels)
|
||||
labels.update(self.metric.labels)
|
||||
self._labels = labels
|
||||
|
||||
return self._labels
|
||||
|
||||
def header(self, points=None):
|
||||
"""Copy everything but the point data.
|
||||
|
||||
:type points: list of :class:`Point`, or None
|
||||
:param points: An optional point list.
|
||||
|
||||
:rtype: :class:`TimeSeries`
|
||||
:returns: The new time series object.
|
||||
"""
|
||||
points = list(points) if points else []
|
||||
return self._replace(points=points)
|
||||
|
||||
@classmethod
|
||||
def _from_dict(cls, info):
|
||||
"""Construct a time series from the parsed JSON representation.
|
||||
|
||||
:type info: dict
|
||||
:param info:
|
||||
A ``dict`` parsed from the JSON wire-format representation.
|
||||
|
||||
:rtype: :class:`TimeSeries`
|
||||
:returns: A time series object.
|
||||
"""
|
||||
metric = Metric._from_dict(info['metric'])
|
||||
resource = Resource._from_dict(info['resource'])
|
||||
metric_kind = info['metricKind']
|
||||
value_type = info['valueType']
|
||||
points = [Point._from_dict(p) for p in info.get('points', ())]
|
||||
return cls(metric, resource, metric_kind, value_type, points)
|
||||
|
||||
def __repr__(self):
|
||||
"""Return a representation string with the points elided."""
|
||||
return (
|
||||
'<TimeSeries with {num} points:\n'
|
||||
' metric={metric!r},\n'
|
||||
' resource={resource!r},\n'
|
||||
' metric_kind={kind!r}, value_type={type!r}>'
|
||||
).format(
|
||||
num=len(self.points),
|
||||
metric=self.metric,
|
||||
resource=self.resource,
|
||||
kind=self.metric_kind,
|
||||
type=self.value_type,
|
||||
)
|
||||
|
||||
|
||||
class Point(collections.namedtuple('Point', 'end_time start_time value')):
|
||||
"""A single point in a time series.
|
||||
|
||||
:type end_time: string
|
||||
:param end_time: The end time in RFC3339 UTC "Zulu" format.
|
||||
|
||||
:type start_time: string or None
|
||||
:param start_time: An optional start time in RFC3339 UTC "Zulu" format.
|
||||
|
||||
:type value: object
|
||||
:param value: The metric value. This can be a scalar or a distribution.
|
||||
"""
|
||||
__slots__ = ()
|
||||
|
||||
@classmethod
|
||||
def _from_dict(cls, info):
|
||||
"""Construct a Point from the parsed JSON representation.
|
||||
|
||||
:type info: dict
|
||||
:param info:
|
||||
A ``dict`` parsed from the JSON wire-format representation.
|
||||
|
||||
:rtype: :class:`Point`
|
||||
:returns: A point object.
|
||||
"""
|
||||
end_time = info['interval']['endTime']
|
||||
start_time = info['interval'].get('startTime')
|
||||
(value_type, value), = info['value'].items()
|
||||
if value_type == 'int64Value':
|
||||
value = int(value) # Convert from string.
|
||||
|
||||
return cls(end_time, start_time, value)
|
Loading…
Add table
Add a link
Reference in a new issue