From bfb417f70b064acc33b050c5098bbb7ad625050a Mon Sep 17 00:00:00 2001 From: Egor Matveev Date: Thu, 12 Jun 2025 02:09:47 +0300 Subject: [PATCH] fix --- configurator.py | 88 ------------------------------------------------- main.py | 11 ++++--- 2 files changed, 6 insertions(+), 93 deletions(-) delete mode 100644 configurator.py diff --git a/configurator.py b/configurator.py deleted file mode 100644 index 28d6f7a..0000000 --- a/configurator.py +++ /dev/null @@ -1,88 +0,0 @@ -import json -import os -import urllib.parse -from threading import Thread -from time import sleep - -from requests import get - - -class ConfiguratorClient: - def __init__(self, app_name: str, stage: str, need_poll: bool = True): - self.app_name = app_name - self.stage = stage - self.endpoint = 'http://configurator/' - self.fetch_url = urllib.parse.urljoin(self.endpoint, '/api/v1/fetch') - self.config_storage = {} - self.experiment_storage = {} - self.staff_storage = {} - self.poll_data() - if need_poll: - self.poll_data_in_thread() - - def poll_data_in_thread(self): - def inner(): - while True: - sleep(30) - self.fetch() - - Thread(target=inner, daemon=True).start() - - def poll_data(self): - self.fetch(with_exception=True) - - def request_with_retries(self, url, params, with_exception=False, retries_count=3): - exception_to_throw = None - for _ in range(retries_count): - try: - response = get( - url, - params=params - ) - if response.status_code == 200: - return response.json() - print(f'Failed to request {url}, status_code={response.status_code}') - exception_to_throw = Exception('Not 200 status') - except Exception as exc: - print(exc) - exception_to_throw = exc - sleep(1) - print(f'Failed fetching with retries: {url}, {params}') - if with_exception: - raise exception_to_throw - - def fetch(self, with_exception=False): - if self.stage == 'local': - local_platform = json.loads(open('local_platform.json', 'r').read()) - self.config_storage = local_platform['configs'] - self.experiment_storage = local_platform['experiments'] - self.staff_storage = { - key: set(value) - for key, value in local_platform['platform_staff'].items() - } - return - response_data = self.request_with_retries(self.fetch_url, { - 'project': self.app_name, - 'stage': self.stage, - }, with_exception) - self.config_storage = response_data['configs'] - self.experiment_storage = response_data['experiments'] - self.staff_storage = { - key: set(value) - for key, value in response_data['platform_staff'].items() - } - - def is_staff(self, **kwargs): - for key, value in kwargs.items(): - if value in self.staff_storage[key]: - return True - return False - - def get_config(self, name): - return self.config_storage[name] - - def get_experiment(self, name): - return self.experiment_storage[name] - - -configurator = ConfiguratorClient("certupdater", os.getenv("STAGE")) diff --git a/main.py b/main.py index 49e44c4..187097b 100644 --- a/main.py +++ b/main.py @@ -4,7 +4,7 @@ import os import subprocess import time -from requests import post +from requests import get, post from configurator import configurator from mongo import mongo from blob import minio @@ -49,10 +49,11 @@ def call(command: str) -> Response: def get_hosts() -> list[str]: - if os.getenv("STAGE") == "development": - return list(set(list(configurator.get_config("hosts")))) - else: - return list(set(list(configurator.get_config("hosts")))) + response = get( + f"http://configurator/api/v1/fetch?project=certupdater&stage={os.getenv("STAGE")}" + ) + hosts = response["configs"]["hosts"] + return list(hosts) def update_host(host: str) -> str | None: