def test_list_group_members(self): # Setup Expected Response next_page_token = '' total_size = 705419236 members_element = {} members = [members_element] expected_response = { 'next_page_token': next_page_token, 'total_size': total_size, 'members': members } expected_response = group_service_pb2.ListGroupMembersResponse( **expected_response) # Mock the API response channel = ChannelStub(responses=[expected_response]) client = monitoring_v3.GroupServiceClient(channel=channel) # Setup Request name = client.group_path('[PROJECT]', '[GROUP]') paged_list_response = client.list_group_members(name) resources = list(paged_list_response) assert len(resources) == 1 assert expected_response.members[0] == resources[0] assert len(channel.requests) == 1 expected_request = group_service_pb2.ListGroupMembersRequest(name=name) actual_request = channel.requests[0][1] assert expected_request == actual_request
def test_list_group_members(self): # Setup Expected Response next_page_token = "" total_size = 705419236 members_element = {} members = [members_element] expected_response = { "next_page_token": next_page_token, "total_size": total_size, "members": members, } expected_response = group_service_pb2.ListGroupMembersResponse( **expected_response ) # Mock the API response channel = ChannelStub(responses=[expected_response]) patch = mock.patch("google.api_core.grpc_helpers.create_channel") with patch as create_channel: create_channel.return_value = channel client = monitoring_v3.GroupServiceClient() # Setup Request name = client.group_path("[PROJECT]", "[GROUP]") paged_list_response = client.list_group_members(name) resources = list(paged_list_response) assert len(resources) == 1 assert expected_response.members[0] == resources[0] assert len(channel.requests) == 1 expected_request = group_service_pb2.ListGroupMembersRequest(name=name) actual_request = channel.requests[0][1] assert expected_request == actual_request
def list_group_members( self, name, page_size=None, filter_=None, interval=None, retry=google.api_core.gapic_v1.method.DEFAULT, timeout=google.api_core.gapic_v1.method.DEFAULT, metadata=None, ): """ Lists the monitored resources that are members of a group. Example: >>> from google.cloud import monitoring_v3 >>> >>> client = monitoring_v3.GroupServiceClient() >>> >>> name = client.group_path('[PROJECT]', '[GROUP]') >>> >>> # Iterate over all results >>> for element in client.list_group_members(name): ... # process element ... pass >>> >>> >>> # Alternatively: >>> >>> # Iterate over results one page at a time >>> for page in client.list_group_members(name).pages: ... for element in page: ... # process element ... pass Args: name (str): The group whose members are listed. The format is ``"projects/{project_id_or_number}/groups/{group_id}"``. page_size (int): The maximum number of resources contained in the underlying API response. If page streaming is performed per- resource, this parameter does not affect the return value. If page streaming is performed per-page, this determines the maximum number of resources in a page. filter_ (str): An optional `list filter <https://cloud.google.com/monitoring/api/learn_more#filtering>`__ describing the members to be returned. The filter may reference the type, labels, and metadata of monitored resources that comprise the group. For example, to return only resources representing Compute Engine VM instances, use this filter: :: resource.type = "gce_instance" interval (Union[dict, ~google.cloud.monitoring_v3.types.TimeInterval]): An optional time interval for which results should be returned. Only members that were part of the group during the specified interval are included in the response. If no interval is provided then the group membership over the last minute is returned. If a dict is provided, it must be of the same form as the protobuf message :class:`~google.cloud.monitoring_v3.types.TimeInterval` retry (Optional[google.api_core.retry.Retry]): A retry object used to retry requests. If ``None`` is specified, requests will not be retried. timeout (Optional[float]): The amount of time, in seconds, to wait for the request to complete. Note that if ``retry`` is specified, the timeout applies to each individual attempt. metadata (Optional[Sequence[Tuple[str, str]]]): Additional metadata that is provided to the method. Returns: A :class:`~google.api_core.page_iterator.PageIterator` instance. An iterable of :class:`~google.cloud.monitoring_v3.types.MonitoredResource` instances. You can also iterate over the pages of the response using its `pages` property. Raises: google.api_core.exceptions.GoogleAPICallError: If the request failed for any reason. google.api_core.exceptions.RetryError: If the request failed due to a retryable error and retry attempts failed. ValueError: If the parameters are invalid. """ if metadata is None: metadata = [] metadata = list(metadata) # Wrap the transport method to add retry and timeout logic. if "list_group_members" not in self._inner_api_calls: self._inner_api_calls[ "list_group_members"] = google.api_core.gapic_v1.method.wrap_method( self.transport.list_group_members, default_retry=self._method_configs["ListGroupMembers"]. retry, default_timeout=self._method_configs["ListGroupMembers"]. timeout, client_info=self._client_info, ) request = group_service_pb2.ListGroupMembersRequest( name=name, page_size=page_size, filter=filter_, interval=interval) if metadata is None: metadata = [] metadata = list(metadata) try: routing_header = [("name", name)] except AttributeError: pass else: routing_metadata = google.api_core.gapic_v1.routing_header.to_grpc_metadata( routing_header) metadata.append(routing_metadata) iterator = google.api_core.page_iterator.GRPCIterator( client=None, method=functools.partial( self._inner_api_calls["list_group_members"], retry=retry, timeout=timeout, metadata=metadata, ), request=request, items_field="members", request_token_field="page_token", response_token_field="next_page_token", ) return iterator
def list_group_members(self, name, page_size=None, filter_=None, interval=None, retry=google.api_core.gapic_v1.method.DEFAULT, timeout=google.api_core.gapic_v1.method.DEFAULT, metadata=None): """ Lists the monitored resources that are members of a group. Example: >>> from google.cloud import monitoring_v3 >>> >>> client = monitoring_v3.GroupServiceClient() >>> >>> name = client.group_path('[PROJECT]', '[GROUP]') >>> >>> >>> # Iterate over all results >>> for element in client.list_group_members(name): ... # process element ... pass >>> >>> # Or iterate over results one page at a time >>> for page in client.list_group_members(name, options=CallOptions(page_token=INITIAL_PAGE)): ... for element in page: ... # process element ... pass Args: name (str): The group whose members are listed. The format is ``\"projects/{project_id_or_number}/groups/{group_id}\"``. page_size (int): The maximum number of resources contained in the underlying API response. If page streaming is performed per- resource, this parameter does not affect the return value. If page streaming is performed per-page, this determines the maximum number of resources in a page. filter_ (str): An optional `list filter <https://cloud.google.com/monitoring/api/learn_more#filtering>`_ describing the members to be returned. The filter may reference the type, labels, and metadata of monitored resources that comprise the group. For example, to return only resources representing Compute Engine VM instances, use this filter: :: resource.type = \"gce_instance\" interval (Union[dict, ~google.cloud.monitoring_v3.types.TimeInterval]): An optional time interval for which results should be returned. Only members that were part of the group during the specified interval are included in the response. If no interval is provided then the group membership over the last minute is returned. If a dict is provided, it must be of the same form as the protobuf message :class:`~google.cloud.monitoring_v3.types.TimeInterval` retry (Optional[google.api_core.retry.Retry]): A retry object used to retry requests. If ``None`` is specified, requests will not be retried. timeout (Optional[float]): The amount of time, in seconds, to wait for the request to complete. Note that if ``retry`` is specified, the timeout applies to each individual attempt. metadata (Optional[Sequence[Tuple[str, str]]]): Additional metadata that is provided to the method. Returns: A :class:`~google.gax.PageIterator` instance. By default, this is an iterable of :class:`~google.cloud.monitoring_v3.types.MonitoredResource` instances. This object can also be configured to iterate over the pages of the response through the `options` parameter. Raises: google.api_core.exceptions.GoogleAPICallError: If the request failed for any reason. google.api_core.exceptions.RetryError: If the request failed due to a retryable error and retry attempts failed. ValueError: If the parameters are invalid. """ if metadata is None: metadata = [] metadata = list(metadata) request = group_service_pb2.ListGroupMembersRequest( name=name, page_size=page_size, filter=filter_, interval=interval, ) iterator = google.api_core.page_iterator.GRPCIterator( client=None, method=functools.partial(self._list_group_members, retry=retry, timeout=timeout, metadata=metadata), request=request, items_field='members', request_token_field='page_token', response_token_field='next_page_token', ) return iterator