Skip to content

Commit

Permalink
Fix style with pre-commit
Browse files Browse the repository at this point in the history
  • Loading branch information
HakonSohoel committed Dec 18, 2024
1 parent e8d20e5 commit 080b057
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 24 deletions.
5 changes: 2 additions & 3 deletions src/ert/dark_storage/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,11 @@
from fastapi import FastAPI, Request, status
from fastapi.openapi.docs import get_redoc_html, get_swagger_ui_html
from fastapi.responses import HTMLResponse, RedirectResponse, Response
from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor

from ert.dark_storage.endpoints import router as endpoints_router
from ert.dark_storage.exceptions import ErtStorageError

from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor


class JSONEncoder(json.JSONEncoder):
"""
Expand Down Expand Up @@ -110,4 +109,4 @@ async def healthcheck() -> str:

app.include_router(endpoints_router)

FastAPIInstrumentor.instrument_app(app)
FastAPIInstrumentor.instrument_app(app)
47 changes: 30 additions & 17 deletions src/ert/services/_storage_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

import uvicorn
import yaml
from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator
from uvicorn.supervisors import ChangeReload

from ert.logging import STORAGE_LOG_CONFIG
Expand All @@ -24,9 +25,6 @@
from ert.shared.storage.command import add_parser_options
from ert.trace import tracer, tracer_provider

from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator
from opentelemetry.trace.span import Span

DARK_STORAGE_APP = "ert.dark_storage.app:app"


Expand Down Expand Up @@ -87,7 +85,10 @@ def _create_connection_info(sock: socket.socket, authtoken: str) -> dict[str, An

return connection_info

def run_server(args: argparse.Namespace | None = None, debug: bool = False, uvicorn_config = None) -> None:

def run_server(

Check failure on line 89 in src/ert/services/_storage_main.py

View workflow job for this annotation

GitHub Actions / type-checking (3.12)

Function is missing a type annotation for one or more arguments
args: argparse.Namespace | None = None, debug: bool = False, uvicorn_config=None
) -> None:
if args is None:
args = parse_args()

Expand All @@ -108,7 +109,11 @@ def run_server(args: argparse.Namespace | None = None, debug: bool = False, uvic
# Appropriated from uvicorn.main:run
os.environ["ERT_STORAGE_NO_TOKEN"] = "1"
os.environ["ERT_STORAGE_ENS_PATH"] = os.path.abspath(args.project)
config = uvicorn.Config(DARK_STORAGE_APP, **config_args) if uvicorn_config is None else uvicorn_config #uvicorn.Config() resets the logging config (overriding additional handlers added to loggers like e.g. the ert_azurelogger handler added through the pluggin system
config = (
uvicorn.Config(DARK_STORAGE_APP, **config_args)
if uvicorn_config is None
else uvicorn_config
) # uvicorn.Config() resets the logging config (overriding additional handlers added to loggers like e.g. the ert_azurelogger handler added through the pluggin system
server = Server(config, json.dumps(connection_info))

logger = logging.getLogger("ert.shared.storage.info")
Expand Down Expand Up @@ -151,7 +156,7 @@ def check_parent_alive() -> bool:

def main():

Check failure on line 157 in src/ert/services/_storage_main.py

View workflow job for this annotation

GitHub Actions / type-checking (3.12)

Function is missing a return type annotation
args = parse_args()
config_args: Dict[str, Any] = {}
config_args: dict[str, Any] = {}
with open(STORAGE_LOG_CONFIG, encoding="utf-8") as conf_file:
logging_conf = yaml.safe_load(conf_file)
logging.config.dictConfig(logging_conf)
Expand All @@ -160,34 +165,42 @@ def main():

if args.debug:
config_args.update(reload=True, reload_dirs=[os.path.dirname(ert_shared_path)])
uvicorn_config = uvicorn.Config(DARK_STORAGE_APP, **config_args) # Need to run uvicorn.Config before entering the ErtPluginContext because uvicorn.Config overrides the configuration of existing loggers, thus removing log handlers added by ErtPluginContext

ctx = TraceContextTextMapPropagator().extract(carrier={'traceparent': args.traceparent}) if args.traceparent else None
uvicorn_config = uvicorn.Config(
DARK_STORAGE_APP, **config_args
) # Need to run uvicorn.Config before entering the ErtPluginContext because uvicorn.Config overrides the configuration of existing loggers, thus removing log handlers added by ErtPluginContext

ctx = (
TraceContextTextMapPropagator().extract(
carrier={"traceparent": args.traceparent}
)
if args.traceparent
else None
)

_stopped = threading.Event()
stopped = threading.Event()
terminate_on_parent_death_thread = threading.Thread(
target=terminate_on_parent_death, args=[_stopped, 1.0]
target=terminate_on_parent_death, args=[stopped, 1.0]
)
with ErtPluginContext(logger=logging.getLogger(), trace_provider=tracer_provider) as context:
with ErtPluginContext(logger=logging.getLogger(), trace_provider=tracer_provider):
terminate_on_parent_death_thread.start()
with tracer.start_as_current_span(f"run_storage_server", ctx) as currentSpan:
with tracer.start_as_current_span("run_storage_server", ctx):
logger = logging.getLogger("ert.shared.storage.info")
try:
logger.info("Starting dark storage")
run_server(args, debug=False, uvicorn_config = uvicorn_config)
run_server(args, debug=False, uvicorn_config=uvicorn_config)
except SystemExit:
logger.info("Stopping dark storage")
finally:
_stopped.set()
stopped.set()
terminate_on_parent_death_thread.join()



def sigterm_handler(_signo, _stack_frame):

Check failure on line 198 in src/ert/services/_storage_main.py

View workflow job for this annotation

GitHub Actions / type-checking (3.12)

Function is missing a type annotation
sys.exit(0)


signal.signal(signal.SIGTERM, sigterm_handler)


if __name__ == "__main__":
main()
main()

Check failure on line 206 in src/ert/services/_storage_main.py

View workflow job for this annotation

GitHub Actions / type-checking (3.12)

Call to untyped function "main" in typed context
9 changes: 6 additions & 3 deletions src/ert/services/storage_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@

import httpx
import requests
from opentelemetry.instrumentation.httpx import HTTPXClientInstrumentor

from ert.dark_storage.client import Client, ConnInfo
from ert.services._base_service import BaseService, _Context, local_exec_args
from ert.trace import get_traceparent

from opentelemetry.instrumentation.httpx import HTTPXClientInstrumentor
HTTPXClientInstrumentor().instrument()


class StorageService(BaseService):
service_name = "storage"

Expand All @@ -24,7 +25,7 @@ def __init__(
conn_info: Mapping[str, Any] | Exception | None = None,
project: str | None = None,
verbose: bool = False,
traceparent: str | None = "inherit_parent"
traceparent: str | None = "inherit_parent",
):
self._url: str | None = None

Expand All @@ -34,7 +35,9 @@ def __init__(
if verbose:
exec_args.append("--verbose")
if traceparent:
traceparent = get_traceparent() if traceparent == "inherit_parent" else traceparent
traceparent = (
get_traceparent() if traceparent == "inherit_parent" else traceparent
)
exec_args.extend(["--traceparent", str(traceparent)])

super().__init__(exec_args, timeout, conn_info, project)
Expand Down
3 changes: 2 additions & 1 deletion src/ert/trace.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@
def get_trace_id() -> str:
return trace.format_trace_id(trace.get_current_span().get_span_context().trace_id)


def get_traceparent() -> str | None:
carrier = {}

Check failure on line 20 in src/ert/trace.py

View workflow job for this annotation

GitHub Actions / type-checking (3.12)

Need type annotation for "carrier" (hint: "carrier: dict[<type>, <type>] = ...")
# Write the current context into the carrier.
TraceContextTextMapPropagator().inject(carrier)
return carrier.get('traceparent')
return carrier.get("traceparent")

0 comments on commit 080b057

Please sign in to comment.