def cleanup_pubsub_topics(pubsub_client: pubsub_v1.PublisherClient, project_id):
    yesterday = datetime.datetime.utcnow() - datetime.timedelta(days=1)
    for topic in pubsub_client.list_topics(project=f"projects/{project_id}"):
        topic_id = topic.name.split("/")[-1]
        if (
            topic_id.startswith(RESOURCE_PREFIX)
            and resource_name_to_date(topic_id) < yesterday
        ):
            pubsub_client.delete_topic(topic=topic.name)
Esempio n. 2
0
def check_pubsub_topic(pubsub_client: pubsub_v1.PublisherClient, topic):
    # check topic in pubsub
    project_path = pubsub_client.project_path(GOOGLE_CLOUD_PROJECT)
    topics = [
        topic_ref.name for topic_ref in pubsub_client.list_topics(project_path)
    ]
    if topic not in topics:
        log.info(f'create pubsub topic {topic}')
        pubsub_client.create_topic(topic)