2121from datetime import datetime
2222
2323import google .auth
24+ from google .api import metric_pb2
2425from google .api_core .gapic_v1 import client_info
2526from google .cloud import monitoring_v3
27+ from google .protobuf import timestamp_pb2
2628
2729from opencensus .common import utils
2830from opencensus .common .monitored_resource import (
5153# OC metric descriptor type to SD metric kind and value type
5254OC_MD_TO_SD_TYPE = {
5355 metric_descriptor .MetricDescriptorType .CUMULATIVE_INT64 :
54- (monitoring_v3 . enums .MetricDescriptor .MetricKind .CUMULATIVE ,
55- monitoring_v3 . enums .MetricDescriptor .ValueType .INT64 ),
56+ (metric_pb2 .MetricDescriptor .MetricKind .CUMULATIVE ,
57+ metric_pb2 .MetricDescriptor .ValueType .INT64 ),
5658 metric_descriptor .MetricDescriptorType .CUMULATIVE_DOUBLE :
57- (monitoring_v3 . enums .MetricDescriptor .MetricKind .CUMULATIVE ,
58- monitoring_v3 . enums .MetricDescriptor .ValueType .DOUBLE ),
59+ (metric_pb2 .MetricDescriptor .MetricKind .CUMULATIVE ,
60+ metric_pb2 .MetricDescriptor .ValueType .DOUBLE ),
5961 metric_descriptor .MetricDescriptorType .CUMULATIVE_DISTRIBUTION :
60- (monitoring_v3 . enums .MetricDescriptor .MetricKind .CUMULATIVE ,
61- monitoring_v3 . enums .MetricDescriptor .ValueType .DISTRIBUTION ),
62+ (metric_pb2 .MetricDescriptor .MetricKind .CUMULATIVE ,
63+ metric_pb2 .MetricDescriptor .ValueType .DISTRIBUTION ),
6264 metric_descriptor .MetricDescriptorType .GAUGE_INT64 :
63- (monitoring_v3 . enums .MetricDescriptor .MetricKind .GAUGE ,
64- monitoring_v3 . enums .MetricDescriptor .ValueType .INT64 ),
65+ (metric_pb2 .MetricDescriptor .MetricKind .GAUGE ,
66+ metric_pb2 .MetricDescriptor .ValueType .INT64 ),
6567 metric_descriptor .MetricDescriptorType .GAUGE_DOUBLE :
66- (monitoring_v3 . enums .MetricDescriptor .MetricKind .GAUGE ,
67- monitoring_v3 . enums .MetricDescriptor .ValueType .DOUBLE )
68+ (metric_pb2 .MetricDescriptor .MetricKind .GAUGE ,
69+ metric_pb2 .MetricDescriptor .ValueType .DOUBLE )
6870}
6971
7072
@@ -158,7 +160,9 @@ def export_metrics(self, metrics):
158160 ts_batches = self .create_batched_time_series (metrics )
159161 for ts_batch in ts_batches :
160162 self .client .create_time_series (
161- self .client .project_path (self .options .project_id ), ts_batch )
163+ name = self .client .common_project_path (self .options .project_id ),
164+ time_series = ts_batch ,
165+ )
162166
163167 def create_batched_time_series (self , metrics ,
164168 batch_size = MAX_TIME_SERIES_PER_UPLOAD ):
@@ -173,7 +177,7 @@ def create_time_series_list(self, metric):
173177
174178 def _convert_series (self , metric , ts ):
175179 """Convert an OC timeseries to a SD series."""
176- series = monitoring_v3 .types . TimeSeries ()
180+ series = monitoring_v3 .TimeSeries ()
177181 series .metric .type = self .get_metric_type (metric .descriptor )
178182
179183 for lk , lv in self .options .default_monitoring_labels .items ():
@@ -187,9 +191,10 @@ def _convert_series(self, metric, ts):
187191 set_monitored_resource (series , self .options .resource )
188192
189193 for point in ts .points :
190- sd_point = series . points . add ()
194+ sd_point = monitoring_v3 . Point ()
191195 # this just modifies points, no return
192196 self ._convert_point (metric , ts , point , sd_point )
197+ series .points .append (sd_point )
193198 return series
194199
195200 def _convert_point (self , metric , ts , point , sd_point ):
@@ -245,14 +250,17 @@ def _convert_point(self, metric, ts, point, sd_point):
245250 timestamp_start = (start - EPOCH_DATETIME ).total_seconds ()
246251 timestamp_end = (end - EPOCH_DATETIME ).total_seconds ()
247252
248- sd_point . interval . end_time . seconds = int ( timestamp_end )
249-
250- secs = sd_point . interval . end_time . seconds
251- sd_point .interval .end_time . nanos = int (( timestamp_end - secs ) * 1e9 )
253+ end_time_pb = timestamp_pb2 . Timestamp ( )
254+ end_time_pb . seconds = int ( timestamp_end )
255+ end_time_pb . nanos = int (( timestamp_end - end_time_pb . seconds ) * 1e9 )
256+ sd_point .interval .end_time = end_time_pb
252257
253- start_time = sd_point .interval .start_time
254- start_time .seconds = int (timestamp_start )
255- start_time .nanos = int ((timestamp_start - start_time .seconds ) * 1e9 )
258+ start_time_pb = timestamp_pb2 .Timestamp ()
259+ start_time_pb .seconds = int (timestamp_start )
260+ start_time_pb .nanos = int (
261+ (timestamp_start - start_time_pb .seconds ) * 1e9 ,
262+ )
263+ sd_point .interval .start_time = start_time_pb
256264
257265 def get_metric_type (self , oc_md ):
258266 """Get a SD metric type for an OC metric descriptor."""
@@ -273,7 +281,7 @@ def get_metric_descriptor(self, oc_md):
273281 desc_labels = new_label_descriptors (
274282 self .options .default_monitoring_labels , oc_md .label_keys )
275283
276- descriptor = monitoring_v3 . types .MetricDescriptor (labels = desc_labels )
284+ descriptor = metric_pb2 .MetricDescriptor (labels = desc_labels )
277285 metric_type = self .get_metric_type (oc_md )
278286 descriptor .type = metric_type
279287 descriptor .metric_kind = metric_kind
@@ -295,8 +303,10 @@ def register_metric_descriptor(self, oc_md):
295303 return self ._md_cache [metric_type ]
296304
297305 descriptor = self .get_metric_descriptor (oc_md )
298- project_name = self .client .project_path (self .options .project_id )
299- sd_md = self .client .create_metric_descriptor (project_name , descriptor )
306+ project_name = self .client .common_project_path (self .options .project_id )
307+ sd_md = self .client .create_metric_descriptor (
308+ name = project_name , metric_descriptor = descriptor
309+ )
300310 with self ._md_lock :
301311 self ._md_cache [metric_type ] = sd_md
302312 return sd_md
0 commit comments