From bc57c79640b270ff89fd10ec243dd04559168c5c Mon Sep 17 00:00:00 2001 From: kolea2 <45548808+kolea2@users.noreply.github.com> Date: Tue, 13 Jul 2021 14:30:19 -0400 Subject: [PATCH] fix: use public 'table_admin_client' property in backups methods (#359) * fix: call table_admin_client in backups methods * fix other tests * add system test --- google/cloud/bigtable/backup.py | 10 +++++----- tests/system.py | 3 +++ tests/unit/test_backup.py | 34 ++++++++++++++++----------------- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/google/cloud/bigtable/backup.py b/google/cloud/bigtable/backup.py index 564c97ad7..0991e85f5 100644 --- a/google/cloud/bigtable/backup.py +++ b/google/cloud/bigtable/backup.py @@ -330,7 +330,7 @@ def create(self, cluster_id=None): expire_time=_datetime_to_pb_timestamp(self.expire_time), ) - api = self._instance._client._table_admin_client + api = self._instance._client.table_admin_client return api.create_backup( request={ "parent": self.parent, @@ -351,7 +351,7 @@ def get(self): due to a retryable error and retry attempts failed. :raises ValueError: If the parameters are invalid. """ - api = self._instance._client._table_admin_client + api = self._instance._client.table_admin_client try: return api.get_backup(request={"name": self.name}) except NotFound: @@ -385,13 +385,13 @@ def update_expire_time(self, new_expire_time): name=self.name, expire_time=_datetime_to_pb_timestamp(new_expire_time), ) update_mask = field_mask_pb2.FieldMask(paths=["expire_time"]) - api = self._instance._client._table_admin_client + api = self._instance._client.table_admin_client api.update_backup(request={"backup": backup_update, "update_mask": update_mask}) self._expire_time = new_expire_time def delete(self): """Delete this Backup.""" - self._instance._client._table_admin_client.delete_backup( + self._instance._client.table_admin_client.delete_backup( request={"name": self.name} ) @@ -423,7 +423,7 @@ def restore(self, table_id, instance_id=None): due to a retryable error and retry attempts failed. :raises: ValueError: If the parameters are invalid. """ - api = self._instance._client._table_admin_client + api = self._instance._client.table_admin_client if instance_id: parent = BigtableTableAdminClient.instance_path( project=self._instance._client.project, instance=instance_id, diff --git a/tests/system.py b/tests/system.py index 259e560da..aa3c1cac6 100644 --- a/tests/system.py +++ b/tests/system.py @@ -1080,6 +1080,9 @@ def test_backup(self): expire_time=datetime.datetime.utcfromtimestamp(expire), ) + # Reinitialize the admin client. This is to test `_table_admin_client` returns a client object (and not NoneType) + temp_backup._instance._client = Client(admin=True) + # Sanity check for `Backup.exists()` method self.assertFalse(temp_backup.exists()) diff --git a/tests/unit/test_backup.py b/tests/unit/test_backup.py index bd3e76100..a32e18adb 100644 --- a/tests/unit/test_backup.py +++ b/tests/unit/test_backup.py @@ -332,7 +332,7 @@ def test_create_grpc_error(self): from google.cloud.bigtable_admin_v2.types import table client = _Client() - api = client._table_admin_client = self._make_table_admin_client() + api = client.table_admin_client = self._make_table_admin_client() api.create_backup.side_effect = Unknown("testing") timestamp = self._make_timestamp() @@ -365,7 +365,7 @@ def test_create_already_exists(self): from google.cloud.exceptions import Conflict client = _Client() - api = client._table_admin_client = self._make_table_admin_client() + api = client.table_admin_client = self._make_table_admin_client() api.create_backup.side_effect = Conflict("testing") timestamp = self._make_timestamp() @@ -398,7 +398,7 @@ def test_create_instance_not_found(self): from google.cloud.exceptions import NotFound client = _Client() - api = client._table_admin_client = self._make_table_admin_client() + api = client.table_admin_client = self._make_table_admin_client() api.create_backup.side_effect = NotFound("testing") timestamp = self._make_timestamp() @@ -494,7 +494,7 @@ def test_exists_grpc_error(self): from google.api_core.exceptions import Unknown client = _Client() - api = client._table_admin_client = self._make_table_admin_client() + api = client.table_admin_client = self._make_table_admin_client() api.get_backup.side_effect = Unknown("testing") instance = _Instance(self.INSTANCE_NAME, client=client) @@ -510,7 +510,7 @@ def test_exists_not_found(self): from google.api_core.exceptions import NotFound client = _Client() - api = client._table_admin_client = self._make_table_admin_client() + api = client.table_admin_client = self._make_table_admin_client() api.get_backup.side_effect = NotFound("testing") instance = _Instance(self.INSTANCE_NAME, client=client) @@ -537,7 +537,7 @@ def test_get(self): size_bytes=0, state=state, ) - api = client._table_admin_client = self._make_table_admin_client() + api = client.table_admin_client = self._make_table_admin_client() api.get_backup.return_value = backup_pb instance = _Instance(self.INSTANCE_NAME, client=client) @@ -562,7 +562,7 @@ def test_reload(self): size_bytes=0, state=state, ) - api = client._table_admin_client = self._make_table_admin_client() + api = client.table_admin_client = self._make_table_admin_client() api.get_backup.return_value = backup_pb instance = _Instance(self.INSTANCE_NAME, client=client) @@ -581,7 +581,7 @@ def test_exists_success(self): client = _Client() backup_pb = table.Backup(name=self.BACKUP_NAME) - api = client._table_admin_client = self._make_table_admin_client() + api = client.table_admin_client = self._make_table_admin_client() api.get_backup.return_value = backup_pb instance = _Instance(self.INSTANCE_NAME, client=client) @@ -595,7 +595,7 @@ def test_delete_grpc_error(self): from google.api_core.exceptions import Unknown client = _Client() - api = client._table_admin_client = self._make_table_admin_client() + api = client.table_admin_client = self._make_table_admin_client() api.delete_backup.side_effect = Unknown("testing") instance = _Instance(self.INSTANCE_NAME, client=client) backup = self._make_one(self.BACKUP_ID, instance, cluster_id=self.CLUSTER_ID) @@ -609,7 +609,7 @@ def test_delete_not_found(self): from google.api_core.exceptions import NotFound client = _Client() - api = client._table_admin_client = self._make_table_admin_client() + api = client.table_admin_client = self._make_table_admin_client() api.delete_backup.side_effect = NotFound("testing") instance = _Instance(self.INSTANCE_NAME, client=client) backup = self._make_one(self.BACKUP_ID, instance, cluster_id=self.CLUSTER_ID) @@ -623,7 +623,7 @@ def test_delete_success(self): from google.protobuf.empty_pb2 import Empty client = _Client() - api = client._table_admin_client = self._make_table_admin_client() + api = client.table_admin_client = self._make_table_admin_client() api.delete_backup.return_value = Empty() instance = _Instance(self.INSTANCE_NAME, client=client) backup = self._make_one(self.BACKUP_ID, instance, cluster_id=self.CLUSTER_ID) @@ -639,7 +639,7 @@ def test_update_expire_time_grpc_error(self): from google.protobuf import field_mask_pb2 client = _Client() - api = client._table_admin_client = self._make_table_admin_client() + api = client.table_admin_client = self._make_table_admin_client() api.update_backup.side_effect = Unknown("testing") instance = _Instance(self.INSTANCE_NAME, client=client) backup = self._make_one(self.BACKUP_ID, instance, cluster_id=self.CLUSTER_ID) @@ -663,7 +663,7 @@ def test_update_expire_time_not_found(self): from google.protobuf import field_mask_pb2 client = _Client() - api = client._table_admin_client = self._make_table_admin_client() + api = client.table_admin_client = self._make_table_admin_client() api.update_backup.side_effect = NotFound("testing") instance = _Instance(self.INSTANCE_NAME, client=client) backup = self._make_one(self.BACKUP_ID, instance, cluster_id=self.CLUSTER_ID) @@ -686,7 +686,7 @@ def test_update_expire_time_success(self): from google.protobuf import field_mask_pb2 client = _Client() - api = client._table_admin_client = self._make_table_admin_client() + api = client.table_admin_client = self._make_table_admin_client() api.update_backup.return_type = table.Backup(name=self.BACKUP_NAME) instance = _Instance(self.INSTANCE_NAME, client=client) backup = self._make_one(self.BACKUP_ID, instance, cluster_id=self.CLUSTER_ID) @@ -707,7 +707,7 @@ def test_restore_grpc_error(self): from google.api_core.exceptions import Unknown client = _Client() - api = client._table_admin_client = self._make_table_admin_client() + api = client.table_admin_client = self._make_table_admin_client() api.restore_table.side_effect = Unknown("testing") timestamp = self._make_timestamp() @@ -732,7 +732,7 @@ def test_restore_grpc_error(self): def test_restore_cluster_not_set(self): client = _Client() - client._table_admin_client = self._make_table_admin_client() + client.table_admin_client = self._make_table_admin_client() backup = self._make_one( self.BACKUP_ID, _Instance(self.INSTANCE_NAME, client=client), @@ -746,7 +746,7 @@ def test_restore_cluster_not_set(self): def _restore_helper(self, instance_id=None, instance_name=None): op_future = object() client = _Client() - api = client._table_admin_client = self._make_table_admin_client() + api = client.table_admin_client = self._make_table_admin_client() api.restore_table.return_value = op_future timestamp = self._make_timestamp()