Fixed incorrect imports

This commit is contained in:
2024-01-13 19:28:54 +01:00
parent a51e94fef3
commit e72846440c
9 changed files with 57 additions and 34 deletions

View File

@@ -5,7 +5,7 @@ from types import ModuleType
from typing import Optional from typing import Optional
from . import webui from . import webui
from .custom_logger import register from .custom_logger import setup_logging
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@@ -30,10 +30,6 @@ def create_parser(prog: Optional[str] = None) -> argparse.ArgumentParser:
parser_webui = subparsers.add_parser("webui", help="start webui") parser_webui = subparsers.add_parser("webui", help="start webui")
webui.register_parser(parser_webui) webui.register_parser(parser_webui)
# if args.debug:
register(logging.DEBUG)
log.debug("Debug log activated")
if argcomplete: if argcomplete:
argcomplete.autocomplete(parser) argcomplete.autocomplete(parser)
@@ -47,6 +43,12 @@ def main() -> None:
parser = create_parser() parser = create_parser()
args = parser.parse_args() args = parser.parse_args()
if args.debug:
setup_logging(logging.DEBUG)
log.debug("Debug log activated")
else:
setup_logging(logging.INFO)
if not hasattr(args, "func"): if not hasattr(args, "func"):
return return

View File

@@ -0,0 +1,12 @@
import dataclasses
@dataclasses.dataclass
class Config:
host: str
port_dlg: int
port_ap: int
port_client_base: int
config = Config(host="127.0.0.1", port_dlg=6000, port_ap=6600, port_client_base=7000)

View File

@@ -61,10 +61,19 @@ def get_caller() -> str:
return ret return ret
def register(level: Any) -> None: def setup_logging(level: Any) -> None:
handler = logging.StreamHandler() # Get the root logger and set its level
handler.setLevel(level) main_logger = logging.getLogger("clan_cli")
handler.setFormatter(CustomFormatter()) main_logger.setLevel(level)
logger = logging.getLogger("registerHandler")
logger.addHandler(handler) # Create and add the default handler
# logging.basicConfig(level=level, handlers=[handler]) default_handler = logging.StreamHandler()
# Create and add your custom handler
default_handler.setLevel(level)
default_handler.setFormatter(CustomFormatter())
main_logger.addHandler(default_handler)
# Set logging level for other modules used by this module
logging.getLogger("asyncio").setLevel(logging.INFO)
logging.getLogger("httpx").setLevel(level=logging.WARNING)

View File

@@ -5,11 +5,20 @@ import urllib
from fastapi import FastAPI from fastapi import FastAPI
from fastapi.responses import HTMLResponse from fastapi.responses import HTMLResponse
from .config import config
app_dlg = FastAPI() app_dlg = FastAPI()
app_ap = FastAPI() app_ap = FastAPI()
app_c1 = FastAPI() app_c1 = FastAPI()
app_c2 = FastAPI() app_c2 = FastAPI()
apps = [
(app_dlg, config.port_dlg),
(app_ap, config.port_ap),
(app_c1, config.port_client_base),
(app_c2, config.port_client_base + 1),
]
# bash tests: curl localhost:6600/ap_list_of_services # bash tests: curl localhost:6600/ap_list_of_services
# curl localhost:7001/consume_service_from_other_entity # curl localhost:7001/consume_service_from_other_entity
@@ -40,9 +49,9 @@ async def healthcheck_ap() -> str:
def get_health(*, url: str, max_retries: int = 20, delay: float = 0.2) -> str | None: def get_health(*, url: str, max_retries: int = 20, delay: float = 0.2) -> str | None:
for attempt in range(max_retries): for attempt in range(max_retries):
try: try:
with urllib.request.urlopen(url) as response: with urllib.request.urlopen(url) as response: # type: ignore
return response.read() return response.read()
except urllib.error.URLError as e: except urllib.error.URLError as e: # type: ignore
print(f"Attempt {attempt + 1} failed: {e.reason}", file=sys.stderr) print(f"Attempt {attempt + 1} failed: {e.reason}", file=sys.stderr)
time.sleep(delay) time.sleep(delay)
return None return None

View File

@@ -1,11 +1,15 @@
import argparse import argparse
import logging
from typing import Callable, NoReturn, Optional from typing import Callable, NoReturn, Optional
log = logging.getLogger(__name__)
start_server: Optional[Callable] = None start_server: Optional[Callable] = None
ServerImportError: Optional[ImportError] = None ServerImportError: Optional[ImportError] = None
try: try:
from .server import start_server from .server import start_server
except ImportError as e: except ImportError as e:
log.exception(e)
ServerImportError = e ServerImportError = e

View File

@@ -1,5 +1,6 @@
import argparse import argparse
import logging import logging
import multiprocessing as mp
import shutil import shutil
import subprocess import subprocess
import time import time
@@ -14,6 +15,7 @@ import uvicorn
from pydantic import AnyUrl, IPvAnyAddress from pydantic import AnyUrl, IPvAnyAddress
from pydantic.tools import parse_obj_as from pydantic.tools import parse_obj_as
from clan_cli.emulate_fastapi import apps, get_health
from clan_cli.errors import ClanError from clan_cli.errors import ClanError
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@@ -127,28 +129,17 @@ def start_server(args: argparse.Namespace) -> None:
subprocess.run(cmd, check=True) subprocess.run(cmd, check=True)
if args.emulate: if args.emulate:
import multiprocessing as mp
from config import host, port_ap, port_client_base, port_dlg
from emulate_fastapi import app_ap, app_c1, app_c2, app_dlg, get_health
app_ports = [
(app_dlg, port_dlg),
(app_ap, port_ap),
(app_c1, port_client_base),
(app_c2, port_client_base + 1),
]
urls = list() urls = list()
# start servers as processes (dlg, ap, c1 and c2 for tests) # start servers as processes (dlg, ap, c1 and c2 for tests)
for app, port in app_ports: for app, port in apps:
proc = mp.Process( proc = mp.Process(
target=uvicorn.run, target=uvicorn.run,
args=(app,), args=(app,),
kwargs={"host": host, "port": port, "log_level": "info"}, kwargs={"host": args.host, "port": port, "log_level": "info"},
daemon=True, daemon=True,
) )
proc.start() proc.start()
urls.append(f"http://{host}:{port}") urls.append(f"http://{args.host}:{port}")
# check server health # check server health
for url in urls: for url in urls:
res = get_health(url=url + "/health") res = get_health(url=url + "/health")

View File

@@ -1,4 +0,0 @@
host = "127.0.0.1"
port_dlg = 6000
port_ap = 6600
port_client_base = 7000

View File

@@ -11,7 +11,7 @@ from fastapi.testclient import TestClient
from openapi_client import ApiClient, Configuration from openapi_client import ApiClient, Configuration
from ports import PortFunction from ports import PortFunction
import config from clan_cli.config import config
from clan_cli.webui.app import app from clan_cli.webui.app import app

View File

@@ -18,7 +18,7 @@ from openapi_client.models import (
Status, Status,
) )
import config from clan_cli.config import config
random.seed(42) random.seed(42)