def list(self, project, service_account_file=""):
        stub = subscription_pb2_grpc.PubsubSubscriptionServiceStub(channel.Channel())
        request = subscription_pb2.ListPubsubSubscriptionRequest()
        request.service_account_file = service_account_file
        request.Project = project

        return stub.ListPubsubSubscription(request).items
    def delete(self, project, name, service_account_file=""):
        stub = subscription_pb2_grpc.PubsubSubscriptionServiceStub(channel.Channel())
        request = subscription_pb2.DeletePubsubSubscriptionRequest()
        request.service_account_file = service_account_file
        request.Project = project

        request.Name = name

        response = stub.DeletePubsubSubscription(request)
    def hcl(self):
        stub = subscription_pb2_grpc.PubsubSubscriptionServiceStub(channel.Channel())
        request = subscription_pb2.PubsubSubscriptionAsHclRequest()
        if Primitive.to_proto(self.name):
            request.resource.name = Primitive.to_proto(self.name)

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

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

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

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

        if SubscriptionExpirationPolicy.to_proto(self.expiration_policy):
            request.resource.expiration_policy.CopyFrom(
                SubscriptionExpirationPolicy.to_proto(self.expiration_policy)
            )
        else:
            request.resource.ClearField("expiration_policy")
        if Primitive.to_proto(self.project):
            request.resource.project = Primitive.to_proto(self.project)

        if SubscriptionDeadLetterPolicy.to_proto(self.dead_letter_policy):
            request.resource.dead_letter_policy.CopyFrom(
                SubscriptionDeadLetterPolicy.to_proto(self.dead_letter_policy)
            )
        else:
            request.resource.ClearField("dead_letter_policy")
        if SubscriptionPushConfig.to_proto(self.push_config):
            request.resource.push_config.CopyFrom(
                SubscriptionPushConfig.to_proto(self.push_config)
            )
        else:
            request.resource.ClearField("push_config")
        if Primitive.to_proto(self.ack_deadline_seconds):
            request.resource.ack_deadline_seconds = Primitive.to_proto(
                self.ack_deadline_seconds
            )

        response = stub.PubsubSubscriptionAsHcl(request)
        return response.hcl