def create(self, initial_split_keys=None, column_families=()): """Creates this table. .. note:: A create request returns a :class:`._generated.table_pb2.Table` but we don't use this response. :type initial_split_keys: list :param initial_split_keys: (Optional) List of row keys that will be used to initially split the table into several tablets (Tablets are similar to HBase regions). Given two split keys, ``"s1"`` and ``"s2"``, three tablets will be created, spanning the key ranges: ``[, s1)``, ``[s1, s2)``, ``[s2, )``. :type column_families: list :param column_families: (Optional) List or other iterable of :class:`.ColumnFamily` instances. """ if initial_split_keys is not None: split_pb = table_admin_messages_v2_pb2.CreateTableRequest.Split initial_split_keys = [ split_pb(key=key) for key in initial_split_keys ] table_pb = None if column_families: table_pb = table_v2_pb2.Table() for col_fam in column_families: curr_id = col_fam.column_family_id table_pb.column_families[curr_id].CopyFrom(col_fam.to_pb()) request_pb = table_admin_messages_v2_pb2.CreateTableRequest( initial_splits=initial_split_keys or [], parent=self._instance.name, table_id=self.table_id, table=table_pb, ) client = self._instance._client # We expect a `._generated.table_pb2.Table` client._table_stub.CreateTable(request_pb)
def _list_tables_helper(self, table_name=None): from google.cloud.bigtable._generated import ( table_pb2 as table_data_v2_pb2) from google.cloud.bigtable._generated import ( bigtable_table_admin_pb2 as table_messages_v1_pb2) from unit_tests._testing import _FakeStub client = _Client(self.PROJECT) instance = self._make_one(self.INSTANCE_ID, client, self.LOCATION_ID) # Create request_ request_pb = table_messages_v1_pb2.ListTablesRequest( parent=self.INSTANCE_NAME) # Create response_pb if table_name is None: table_name = self.TABLE_NAME response_pb = table_messages_v1_pb2.ListTablesResponse( tables=[ table_data_v2_pb2.Table(name=table_name), ], ) # Patch the stub used by the API method. client._table_stub = stub = _FakeStub(response_pb) # Create expected_result. expected_table = instance.table(self.TABLE_ID) expected_result = [expected_table] # Perform the method and check the result. result = instance.list_tables() self.assertEqual(result, expected_result) self.assertEqual(stub.method_calls, [( 'ListTables', (request_pb,), {}, )])
def _TablePB(*args, **kw): from google.cloud.bigtable._generated import (table_pb2 as table_v2_pb2) return table_v2_pb2.Table(*args, **kw)