from __future__ import annotations import os from pathlib import Path from typing import Type from context import ClinicContext from metrics_diag import handler as metrics_diag_handler from task import BaseTask class LatencyTask(BaseTask): cluster: str start_ts: int end_ts: int org_id: str org_type: str endpoint: str api_key: str def __init__(self, cluster: str, start_ts: int, stop_ts: int, **kwargs) -> None: self.cluster = cluster self.start_ts = start_ts self.end_ts = stop_ts self.endpoint = os.environ["CLINIC_ENDPOINT"] self.api_key = os.environ["CLINIC_API_KEY"] self.org_id = ( kwargs["org_id"] if kwargs["org_id"] != None else "1326455380288475136" ) # org_id self.org_type = ( kwargs["org_type"].lower() if kwargs["org_type"].lower() != None else "op" ) # org_type @classmethod def resume(cls, ctx: str) -> LatencyTask: raise NotImplemented() async def run(self) -> None: async with ClinicContext( "token", "user_id", self.cluster, self.start_ts, self.end_ts, self.org_id, self.org_type, self.endpoint, self.api_key, ) as context: advice = await metrics_diag_handler(context) return advice def suspend(self) -> str: raise NotImplemented() def task_class() -> Type[BaseTask]: return LatencyTask