Ejemplo n.º 1
0
    def set_iam_policy(self, policy):
        """Sets the access control policy on an instance resource. Replaces any
        existing policy.

        For more information about policy, please see documentation of
        class `google.cloud.bigtable.policy.Policy`

        .. code-block:: python

            from google.cloud.bigtable.client import Client
            from google.cloud.bigtable.policy import Policy
            from google.cloud.bigtable.policy import BIGTABLE_ADMIN_ROLE

            client = Client(admin=True)
            instance = client.instance('[INSTANCE_ID]')
            ins_policy = instance.get_iam_policy()
            ins_policy[BIGTABLE_ADMIN_ROLE] = [
                Policy.user("*****@*****.**"),
                Policy.service_account("*****@*****.**")]

            policy_latest = instance.set_iam_policy()
            print (policy_latest.bigtable_admins)

        :type policy: :class:`google.cloud.bigtable.policy.Policy`
        :param policy: A new IAM policy to replace the current IAM policy
                       of this instance

        :rtype: :class:`google.cloud.bigtable.policy.Policy`
        :returns: The current IAM policy of this instance.
        """
        instance_admin_client = self._client._instance_admin_client
        resp = instance_admin_client.set_iam_policy(
            resource=self.name, policy=policy.to_api_repr())
        return Policy.from_api_repr(self._to_dict_from_policy_pb(resp))
Ejemplo n.º 2
0
    def set_iam_policy(self, policy):
        """Sets the access control policy on an instance resource. Replaces any
        existing policy.

        For more information about policy, please see documentation of
        class `google.cloud.bigtable.policy.Policy`

        For example:

        .. literalinclude:: snippets.py
            :start-after: [START bigtable_set_iam_policy]
            :end-before: [END bigtable_set_iam_policy]

        :type policy: :class:`google.cloud.bigtable.policy.Policy`
        :param policy: A new IAM policy to replace the current IAM policy
                       of this instance

        :rtype: :class:`google.cloud.bigtable.policy.Policy`
        :returns: The current IAM policy of this instance.
        """
        instance_admin_client = self._client.instance_admin_client
        resp = instance_admin_client.set_iam_policy(
            resource=self.name, policy=policy.to_api_repr()
        )
        return Policy.from_api_repr(self._to_dict_from_policy_pb(resp))
Ejemplo n.º 3
0
    def get_iam_policy(self):
        """Gets the access control policy for an instance resource.

        For example:

        .. literalinclude:: snippets.py
            :start-after: [START bigtable_get_iam_policy]
            :end-before: [END bigtable_get_iam_policy]

        :rtype: :class:`google.cloud.bigtable.policy.Policy`
        :returns: The current IAM policy of this instance
        """
        instance_admin_client = self._client._instance_admin_client
        resp = instance_admin_client.get_iam_policy(resource=self.name)
        return Policy.from_api_repr(self._to_dict_from_policy_pb(resp))
Ejemplo n.º 4
0
def test_policy_from_api_repr_wo_etag():
    from google.cloud.bigtable.policy import Policy

    VERSION = 1
    empty = frozenset()
    resource = {"version": VERSION}
    policy = Policy.from_api_repr(resource)
    assert policy.etag is None
    assert policy.version == VERSION
    assert policy.bigtable_admins == empty
    assert policy.bigtable_readers == empty
    assert policy.bigtable_users == empty
    assert policy.bigtable_viewers == empty
    assert len(policy) == 0
    assert dict(policy) == {}
Ejemplo n.º 5
0
    def get_iam_policy(self):
        """Gets the access control policy for an instance resource.

        For example:

        .. literalinclude:: snippets.py
            :start-after: [START bigtable_get_iam_policy]
            :end-before: [END bigtable_get_iam_policy]

        :rtype: :class:`google.cloud.bigtable.policy.Policy`
        :returns: The current IAM policy of this instance
        """
        instance_admin_client = self._client.instance_admin_client
        resp = instance_admin_client.get_iam_policy(resource=self.name)
        return Policy.from_api_repr(self._to_dict_from_policy_pb(resp))
Ejemplo n.º 6
0
def test_policy_from_api_repr_w_etag():
    import base64
    from google.cloud.bigtable.policy import Policy

    ETAG = b"ETAG"
    empty = frozenset()
    resource = {"etag": base64.b64encode(ETAG).decode("ascii")}
    policy = Policy.from_api_repr(resource)
    assert policy.etag == ETAG
    assert policy.version is None
    assert policy.bigtable_admins == empty
    assert policy.bigtable_readers == empty
    assert policy.bigtable_users == empty
    assert policy.bigtable_viewers == empty
    assert len(policy) == 0
    assert dict(policy) == {}
Ejemplo n.º 7
0
    def get_iam_policy(self):
        """Gets the access control policy for an instance resource.

        .. code-block:: python

            from google.cloud.bigtable.client import Client
            from google.cloud.bigtable.policy import Policy

            client = Client(admin=True)
            instance = client.instance('[INSTANCE_ID]')
            policy_latest = instance.get_iam_policy()
            print (policy_latest.bigtable_viewers)

        :rtype: :class:`google.cloud.bigtable.policy.Policy`
        :returns: The current IAM policy of this instance
        """
        instance_admin_client = self._client._instance_admin_client
        resp = instance_admin_client.get_iam_policy(resource=self.name)
        return Policy.from_api_repr(self._to_dict_from_policy_pb(resp))