browsertrix/backend/btrixcloud/migrations/migration_0011_crawl_timeout_configmap.py

47 lines
1.4 KiB
Python

"""
Migration 0011 - Remove None CRAWL_TIMEOUT values from configmaps
"""
import os
from btrixcloud.k8sapi import K8sAPI
from btrixcloud.migrations import BaseMigration
MIGRATION_VERSION = "0011"
class Migration(BaseMigration):
"""Migration class."""
def __init__(self, mdb, migration_version=MIGRATION_VERSION):
super().__init__(mdb, migration_version)
async def migrate_up(self):
"""Perform migration up.
Replace any None values in configmaps for CRAWL_TIMEOUT with 0.
"""
k8s_api_instance = K8sAPI()
crawler_namespace = os.environ.get("CRAWLER_NAMESPACE") or "crawlers"
config_maps = await k8s_api_instance.core_api.list_namespaced_config_map(
namespace=crawler_namespace
)
for item in config_maps.items:
try:
crawl_timeout = item.data["CRAWL_TIMEOUT"]
if crawl_timeout not in (None, "None"):
continue
item.data["CRAWL_TIMEOUT"] = "0"
await k8s_api_instance.core_api.patch_namespaced_config_map(
name=item.metadata.name, namespace=crawler_namespace, body=item
)
# pylint: disable=broad-exception-caught
except Exception as err:
print(
f"Error modifying configmap CRAWL_TIMEOUT value: {err}", flush=True
)