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))
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))
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))
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) == {}
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))
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) == {}
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))