monitoring_v3.query.Query.align raises a TypeError on execution #80
Comments
Hi @plankthom, As you've noticed, not all the request fields can be passed to the method. The list of parameters can be thought of as something like an overload. The specific set of parameters is determined by an annotation in the source protos called This is why rpc ListTimeSeries(ListTimeSeriesRequest) returns (ListTimeSeriesResponse) {
option (google.api.http) = {
get: "/v3/{name=projects/*}/timeSeries"
};
option (google.api.method_signature) = "name,filter,interval,view";
} python-monitoring/google/cloud/monitoring_v3/services/metric_service/client.py Lines 874 to 885 in 8a7e2f7
|
Indeed i've noticed. The actual bug that I am reporting is that the SDK itself doesn't respect this limitation in
which breaks the feature documented in https://googleapis.dev/python/monitoring/latest/query.html as align method.
|
Ah sorry about that, I wasn't reading carefully enough. 🤦♀️ It looks like python-monitoring/google/cloud/monitoring_v3/query.py Lines 442 to 447 in 8a7e2f7
Thank you for the report! |
Construct a `ListTimeSeriesRequest` from the query params rather than passing them directly to the function. This is important when one of the params is "optional" and is not available as a kwarg on the `list_time_series()` method. For example, `aggregation` must be set on the request object. Fixes #80 ```py def list_time_series( self, request: metric_service.ListTimeSeriesRequest = None, *, name: str = None, filter: str = None, interval: common.TimeInterval = None, view: metric_service.ListTimeSeriesRequest.TimeSeriesView = None, retry: retries.Retry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListTimeSeriesPager: ``` ```py class ListTimeSeriesRequest(proto.Message): r"""The ``ListTimeSeries`` request. Attributes: name (str): Required. The project on which to execute the request. The format is: :: projects/[PROJECT_ID_OR_NUMBER] filter (str): Required. A `monitoring filter <https://cloud.google.com/monitoring/api/v3/filters>`__ that specifies which time series should be returned. The filter must specify a single metric type, and can additionally specify metric labels and other information. For example: :: metric.type = "compute.googleapis.com/instance/cpu/usage_time" AND metric.labels.instance_name = "my-instance-name". interval (~.common.TimeInterval): Required. The time interval for which results should be returned. Only time series that contain data points in the specified interval are included in the response. aggregation (~.common.Aggregation): Specifies the alignment of data points in individual time series as well as how to combine the retrieved time series across specified labels. By default (if no ``aggregation`` is explicitly specified), the raw time series data is returned. order_by (str): Unsupported: must be left blank. The points in each time series are currently returned in reverse time order (most recent to oldest). view (~.metric_service.ListTimeSeriesRequest.TimeSeriesView): Required. Specifies which information is returned about the time series. page_size (int): A positive number that is the maximum number of results to return. If ``page_size`` is empty or more than 100,000 results, the effective ``page_size`` is 100,000 results. If ``view`` is set to ``FULL``, this is the maximum number of ``Points`` returned. If ``view`` is set to ``HEADERS``, this is the maximum number of ``TimeSeries`` returned. page_token (str): If this field is not empty then it must contain the ``nextPageToken`` value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call. """ ```
Environment details
google-cloud-monitoring
version: 2.0.0Steps to reproduce
While I can execute the query
adding an alignment aggregation fails:
and raises
Indeed, while
python-monitoring/google/cloud/monitoring_v3/query.py
Line 477 in 8a7e2f7
prepares an
aggregation
parameter,python-monitoring/google/cloud/monitoring_v3/services/metric_service/client.py
Line 874 in 8a7e2f7
accepts no such parameter.
Workaround
Directly use
MetricServiceClient.list_time_series
, with the aggregation specification within therequest
parameter:The text was updated successfully, but these errors were encountered: