def list(self, project, service_account_file=""):
        stub = instance_pb2_grpc.SpannerInstanceServiceStub(channel.Channel())
        request = instance_pb2.ListSpannerInstanceRequest()
        request.service_account_file = service_account_file
        request.Project = project

        return stub.ListSpannerInstance(request).items
    def apply(self):
        stub = instance_pb2_grpc.SpannerInstanceServiceStub(channel.Channel())
        request = instance_pb2.ApplySpannerInstanceRequest()
        if Primitive.to_proto(self.name):
            request.resource.name = Primitive.to_proto(self.name)

        if Primitive.to_proto(self.project):
            request.resource.project = Primitive.to_proto(self.project)

        if Primitive.to_proto(self.config):
            request.resource.config = Primitive.to_proto(self.config)

        if Primitive.to_proto(self.display_name):
            request.resource.display_name = Primitive.to_proto(self.display_name)

        if Primitive.to_proto(self.node_count):
            request.resource.node_count = Primitive.to_proto(self.node_count)

        if Primitive.to_proto(self.labels):
            request.resource.labels = Primitive.to_proto(self.labels)

        request.service_account_file = self.service_account_file

        response = stub.ApplySpannerInstance(request)
        self.name = Primitive.from_proto(response.name)
        self.project = Primitive.from_proto(response.project)
        self.config = Primitive.from_proto(response.config)
        self.display_name = Primitive.from_proto(response.display_name)
        self.node_count = Primitive.from_proto(response.node_count)
        self.state = InstanceStateEnum.from_proto(response.state)
        self.labels = Primitive.from_proto(response.labels)
    def delete(self):
        stub = instance_pb2_grpc.SpannerInstanceServiceStub(channel.Channel())
        request = instance_pb2.DeleteSpannerInstanceRequest()
        request.service_account_file = self.service_account_file
        if Primitive.to_proto(self.name):
            request.resource.name = Primitive.to_proto(self.name)

        if Primitive.to_proto(self.project):
            request.resource.project = Primitive.to_proto(self.project)

        if Primitive.to_proto(self.config):
            request.resource.config = Primitive.to_proto(self.config)

        if Primitive.to_proto(self.display_name):
            request.resource.display_name = Primitive.to_proto(self.display_name)

        if Primitive.to_proto(self.node_count):
            request.resource.node_count = Primitive.to_proto(self.node_count)

        if Primitive.to_proto(self.labels):
            request.resource.labels = Primitive.to_proto(self.labels)

        response = stub.DeleteSpannerInstance(request)