1717"""
1818import logging
1919
20- import google .api_core .exceptions
21- from google .api import metric_pb2 as ga_metric
2220from google .cloud import monitoring_v3
2321
2422from .base import MetricsExporter
@@ -36,17 +34,14 @@ def __init__(self):
3634 self .client = monitoring_v3 .MetricServiceClient ()
3735
3836 def export_metric (self , data : dict ):
39- """Export metric to Cloud Monitoring. Create metric descriptor if
40- it doesn't exist.
37+ """Export metric to Cloud Monitoring.
4138
4239 Args:
4340 data (dict): Data to send to Cloud Monitoring.
4441
4542 Returns:
4643 object: Cloud Monitoring API result.
4744 """
48- if not self .get_metric_descriptor (data ):
49- self .create_metric_descriptor (data )
5045 self .create_timeseries (data )
5146
5247 def create_timeseries (self , data : dict ):
@@ -101,44 +96,3 @@ def create_timeseries(self, data: dict):
10196 f"{ labels ['slo_name' ]} -{ labels ['error_budget_policy_step_name' ]} "
10297 )
10398 # pylint: enable=E1101
104-
105- def get_metric_descriptor (self , data : dict ):
106- """Get Cloud Monitoring metric descriptor.
107-
108- Args:
109- data (dict): Metric data.
110-
111- Returns:
112- object: Metric descriptor (or None if not found).
113- """
114- project_id = data ["project_id" ]
115- metric_id = data ["name" ]
116- request = monitoring_v3 .GetMetricDescriptorRequest (
117- name = f"projects/{ project_id } /metricDescriptors/{ metric_id } "
118- )
119- try :
120- return self .client .get_metric_descriptor (request )
121- except google .api_core .exceptions .NotFound :
122- return None
123-
124- def create_metric_descriptor (self , data : dict ):
125- """Create Cloud Monitoring metric descriptor.
126-
127- Args:
128- data (dict): Metric data.
129-
130- Returns:
131- object: Metric descriptor.
132- """
133- project = self .client .common_project_path (data ["project_id" ])
134- descriptor = ga_metric .MetricDescriptor ()
135- descriptor .type = data ["name" ]
136- # pylint: disable=E1101
137- descriptor .metric_kind = ga_metric .MetricDescriptor .MetricKind .GAUGE
138- descriptor .value_type = ga_metric .MetricDescriptor .ValueType .DOUBLE
139- # pylint: enable=E1101
140- descriptor .description = data ["description" ]
141- descriptor = self .client .create_metric_descriptor (
142- name = project , metric_descriptor = descriptor
143- )
144- return descriptor
0 commit comments