Exemple #1
0
    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
Exemple #2
0
    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
Exemple #3
0
    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
Exemple #4
0
    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