Spaces:
Running
Running
import logging | |
import os | |
import time | |
from typing import Any, Optional | |
from omagent_core.engine.configuration.settings.authentication_settings import \ | |
AuthenticationSettings | |
from pydantic import Field | |
from pydantic_settings import BaseSettings | |
TEMPLATE_CONFIG = { | |
"name": "Configuration", | |
"base_url": { | |
"value": "http://localhost:8080", | |
"description": "The Conductor Server API endpoint", | |
"env_var": "CONDUCTOR_SERVER_URL", | |
}, | |
"auth_key": { | |
"value": None, | |
"description": "The authorization key", | |
"env_var": "AUTH_KEY", | |
}, | |
"auth_secret": { | |
"value": None, | |
"description": "The authorization secret", | |
"env_var": "CONDUCTOR_AUTH_SECRET", | |
}, | |
"auth_token_ttl_min": { | |
"value": 45, | |
"description": "The authorization token refresh interval in minutes.", | |
"env_var": "AUTH_TOKEN_TTL_MIN", | |
}, | |
"debug": {"value": False, "description": "Debug mode", "env_var": "DEBUG"}, | |
} | |
class Configuration(BaseSettings): | |
class Config: | |
"""Configuration for this pydantic object.""" | |
extra = "allow" | |
base_url: str = Field( | |
default="http://localhost:8080", description="The Conductor Server API endpoint" | |
) | |
auth_key: Optional[str] = Field(default=None, description="The authorization key") | |
auth_secret: Optional[str] = Field( | |
default=None, | |
description="The authorization secret", | |
) | |
auth_token_ttl_min: int = Field( | |
default=45, description="The authorization token refresh interval in minutes." | |
) | |
debug: bool = Field(default=False, description="Debug mode") | |
def model_post_init(self, __context: Any) -> None: | |
self.__log_level = logging.DEBUG if self.debug else logging.INFO | |
self.AUTH_TOKEN = None | |
self.temp_folder_path = None | |
self.host = self.base_url + "/api" | |
self.__ui_host = self.host.replace("8080/api", "5000") | |
if self.auth_key and self.auth_secret: | |
self.authentication_settings = AuthenticationSettings( | |
key_id=self.auth_key, key_secret=self.auth_secret | |
) | |
else: | |
self.authentication_settings = None | |
# Log format | |
self.logger_format = "%(asctime)s %(name)-12s %(levelname)-8s %(message)s" | |
# SSL/TLS verification | |
# Set this to false to skip verifying SSL certificate when calling API | |
# from https server. | |
self.verify_ssl = True | |
# Set this to customize the certificate file to verify the peer. | |
self.ssl_ca_cert = None | |
# client certificate file | |
self.cert_file = None | |
# client key file | |
self.key_file = None | |
# Set this to True/False to enable/disable SSL hostname verification. | |
self.assert_hostname = None | |
# Proxy URL | |
self.proxy = None | |
# Safe chars for path_param | |
self.safe_chars_for_path_param = "" | |
# Provide an alterative to requests.Session() for HTTP connection. | |
self.http_connection = None | |
# not updated yet | |
self.token_update_time = 0 | |
self.auth_token_ttl_msec = self.auth_token_ttl_min * 60 * 1000 | |
def logger_format(self): | |
"""The logger format. | |
The logger_formatter will be updated when sets logger_format. | |
:param value: The format string. | |
:type: str | |
""" | |
return self.__logger_format | |
def logger_format(self, value): | |
"""The logger format. | |
The logger_formatter will be updated when sets logger_format. | |
:param value: The format string. | |
:type: str | |
""" | |
self.__logger_format = value | |
def log_level(self): | |
"""The log level. | |
The log_level will be updated when sets logger_format. | |
:param value: The format string. | |
:type: str | |
""" | |
return self.__log_level | |
def ui_host(self): | |
""" | |
The log_level will be updated when sets logger_format. | |
:param value: The format string. | |
:type: str | |
""" | |
return self.__ui_host | |
def apply_logging_config(self, log_format: str = None, level=None): | |
if log_format is None: | |
log_format = self.logger_format | |
if level is None: | |
level = self.__log_level | |
logging.basicConfig(format=log_format, level=level) | |
def get_logging_formatted_name(name): | |
return f"[{os.getpid()}] {name}" | |
def update_token(self, token: str) -> None: | |
self.AUTH_TOKEN = token | |
self.token_update_time = round(time.time() * 1000) | |