def _list_zones_helper(self, zone_status): from gcloud.bigtable._generated import ( bigtable_cluster_data_pb2 as data_pb2) from gcloud.bigtable._generated import ( bigtable_cluster_service_messages_pb2 as messages_pb2) from gcloud.bigtable._testing import _FakeStub credentials = _Credentials() project = 'PROJECT' timeout_seconds = 281330 client = self._makeOne(project=project, credentials=credentials, admin=True, timeout_seconds=timeout_seconds) # Create request_pb request_pb = messages_pb2.ListZonesRequest( name='projects/' + project, ) # Create response_pb zone1 = 'foo' zone2 = 'bar' response_pb = messages_pb2.ListZonesResponse( zones=[ data_pb2.Zone(display_name=zone1, status=zone_status), data_pb2.Zone(display_name=zone2, status=zone_status), ], ) # Patch the stub used by the API method. client._cluster_stub_internal = stub = _FakeStub(response_pb) # Create expected_result. expected_result = [zone1, zone2] # Perform the method and check the result. result = client.list_zones() self.assertEqual(result, expected_result) self.assertEqual(stub.method_calls, [( 'ListZones', (request_pb, timeout_seconds), {}, )])
def list_zones(self): """Lists zones associated with project. :rtype: list :returns: The names (as :class:`str`) of the zones :raises: :class:`ValueError <exceptions.ValueError>` if one of the zones is not in ``OK`` state. """ request_pb = messages_pb2.ListZonesRequest(name=self.project_name) # We expect a `.messages_pb2.ListZonesResponse` list_zones_response = self._cluster_stub.ListZones( request_pb, self.timeout_seconds) result = [] for zone in list_zones_response.zones: if zone.status != data_pb2.Zone.OK: raise ValueError('Zone %s not in OK state' % (zone.display_name, )) result.append(zone.display_name) return result