From 37e815a15c5e3f8bb5f5eacb4d064e909445c735 Mon Sep 17 00:00:00 2001 From: Benjamin Pelletier Date: Wed, 8 Apr 2026 01:42:17 +0000 Subject: [PATCH] Obtain UTMClientSessions via factory rather than direct construction --- monitoring/mock_uss/f3548v21/__init__.py | 4 +-- monitoring/mock_uss/resources.py | 2 +- monitoring/mock_uss/riddp/__init__.py | 4 +-- monitoring/mock_uss/ridsp/__init__.py | 6 +++-- monitoring/mock_uss/tracer/context.py | 9 +++++-- .../versioning/client_interuss_test.py | 8 ++++-- monitoring/monitorlib/infrastructure.py | 27 +++++++++++++++++++ monitoring/prober/conftest.py | 10 +++++-- .../uss_qualifier/resources/astm/f3411/dss.py | 4 ++- .../resources/astm/f3548/v21/dss.py | 4 ++- .../flight_planning/flight_planner.py | 4 +-- .../geospatial_info_providers.py | 4 +-- .../resources/interuss/mock_uss/client.py | 14 +++++++--- .../resources/netrid/observers.py | 5 ++-- .../resources/netrid/service_providers.py | 2 +- .../resources/versioning/client.py | 6 +++-- .../netrid/common/dss/token_validation.py | 8 +++--- .../astm/netrid/common/misbehavior.py | 6 +++-- .../authentication_validation.py | 8 +++--- .../astm/utm/dss/authentication/generic.py | 10 ++++--- .../scenarios/astm/utm/dss/report.py | 4 ++- .../scenarios/astm/utm/make_uss_report.py | 8 ++++-- 22 files changed, 116 insertions(+), 41 deletions(-) diff --git a/monitoring/mock_uss/f3548v21/__init__.py b/monitoring/mock_uss/f3548v21/__init__.py index be53700909..6d5744dbc8 100644 --- a/monitoring/mock_uss/f3548v21/__init__.py +++ b/monitoring/mock_uss/f3548v21/__init__.py @@ -1,12 +1,12 @@ from monitoring.mock_uss.app import require_config_value, webapp from monitoring.mock_uss.config import KEY_AUTH_SPEC, KEY_DSS_URL from monitoring.monitorlib import auth -from monitoring.monitorlib.infrastructure import UTMClientSession +from monitoring.monitorlib.infrastructure import utm_client_session_factory require_config_value(KEY_DSS_URL) require_config_value(KEY_AUTH_SPEC) -utm_client = UTMClientSession( +utm_client = utm_client_session_factory.get_session( webapp.config[KEY_DSS_URL], auth.make_auth_adapter(webapp.config[KEY_AUTH_SPEC]), ) diff --git a/monitoring/mock_uss/resources.py b/monitoring/mock_uss/resources.py index d396b7098a..767e76fc5d 100644 --- a/monitoring/mock_uss/resources.py +++ b/monitoring/mock_uss/resources.py @@ -6,7 +6,7 @@ require_config_value(config.KEY_DSS_URL) require_config_value(config.KEY_AUTH_SPEC) -utm_client = infrastructure.UTMClientSession( +utm_client = infrastructure.utm_client_session_factory.get_session( webapp.config[config.KEY_DSS_URL], auth.make_auth_adapter(webapp.config[config.KEY_AUTH_SPEC]), ) diff --git a/monitoring/mock_uss/riddp/__init__.py b/monitoring/mock_uss/riddp/__init__.py index d9dd69e9d3..22181d1368 100644 --- a/monitoring/mock_uss/riddp/__init__.py +++ b/monitoring/mock_uss/riddp/__init__.py @@ -2,7 +2,7 @@ from monitoring.mock_uss.config import KEY_AUTH_SPEC, KEY_DSS_URL from monitoring.mock_uss.riddp.config import KEY_RID_VERSION from monitoring.monitorlib import auth -from monitoring.monitorlib.infrastructure import UTMClientSession +from monitoring.monitorlib.infrastructure import utm_client_session_factory from monitoring.monitorlib.rid import RIDVersion from . import config as config @@ -20,7 +20,7 @@ f"Cannot construct DSS base URL using RID version {webapp.config[KEY_RID_VERSION]}" ) -utm_client = UTMClientSession( +utm_client = utm_client_session_factory.get_session( _dss_base_url, auth.make_auth_adapter(webapp.config[KEY_AUTH_SPEC]), ) diff --git a/monitoring/mock_uss/ridsp/__init__.py b/monitoring/mock_uss/ridsp/__init__.py index a0c73e2a37..86edbfb5eb 100644 --- a/monitoring/mock_uss/ridsp/__init__.py +++ b/monitoring/mock_uss/ridsp/__init__.py @@ -2,7 +2,9 @@ from monitoring.mock_uss.config import KEY_AUTH_SPEC, KEY_DSS_URL from monitoring.mock_uss.riddp.config import KEY_RID_VERSION from monitoring.monitorlib import auth -from monitoring.monitorlib.infrastructure import UTMClientSession +from monitoring.monitorlib.infrastructure import ( + utm_client_session_factory, +) from monitoring.monitorlib.rid import RIDVersion require_config_value(KEY_DSS_URL) @@ -18,7 +20,7 @@ f"Cannot construct DSS base URL using RID version {webapp.config[KEY_RID_VERSION]}" ) -utm_client = UTMClientSession( +utm_client = utm_client_session_factory.get_session( _dss_base_url, auth.make_auth_adapter(webapp.config[KEY_AUTH_SPEC]), ) diff --git a/monitoring/mock_uss/tracer/context.py b/monitoring/mock_uss/tracer/context.py index c3a981c61c..91b938f2d8 100644 --- a/monitoring/mock_uss/tracer/context.py +++ b/monitoring/mock_uss/tracer/context.py @@ -10,7 +10,12 @@ from monitoring.monitorlib import infrastructure from monitoring.monitorlib.auth import make_auth_adapter from monitoring.monitorlib.fetch import scd -from monitoring.monitorlib.infrastructure import AuthAdapter, AuthSpec, UTMClientSession +from monitoring.monitorlib.infrastructure import ( + AuthAdapter, + AuthSpec, + UTMClientSession, + utm_client_session_factory, +) from monitoring.monitorlib.rid import RIDVersion scd_cache: dict[ObservationAreaID, dict[str, scd.FetchedEntity]] = {} @@ -84,4 +89,4 @@ def resolve_scd_dss_base_url(dss_base_url: str | None) -> str: def get_client(auth_spec: AuthSpec, dss_base_url: str) -> UTMClientSession: if auth_spec not in _adapters: _adapters[auth_spec] = make_auth_adapter(auth_spec) - return UTMClientSession(dss_base_url, _adapters[auth_spec]) + return utm_client_session_factory.get_session(dss_base_url, _adapters[auth_spec]) diff --git a/monitoring/monitorlib/clients/versioning/client_interuss_test.py b/monitoring/monitorlib/clients/versioning/client_interuss_test.py index d63db18b31..751e22240f 100644 --- a/monitoring/monitorlib/clients/versioning/client_interuss_test.py +++ b/monitoring/monitorlib/clients/versioning/client_interuss_test.py @@ -8,7 +8,9 @@ RequestDescription, ResponseDescription, ) -from monitoring.monitorlib.infrastructure import UTMClientSession +from monitoring.monitorlib.infrastructure import ( + utm_client_session_factory, +) from monitoring.uss_qualifier.configurations.configuration import ParticipantID from .client_interuss import InterUSSVersioningClient, VersionQueryError @@ -16,7 +18,9 @@ @pytest.fixture def client(): - return InterUSSVersioningClient(UTMClientSession(prefix_url="/"), ParticipantID()) + return InterUSSVersioningClient( + utm_client_session_factory.get_session(prefix_url="/"), ParticipantID() + ) def build_query_response(code, data): diff --git a/monitoring/monitorlib/infrastructure.py b/monitoring/monitorlib/infrastructure.py index 8c38434f13..957d7caa0b 100644 --- a/monitoring/monitorlib/infrastructure.py +++ b/monitoring/monitorlib/infrastructure.py @@ -92,6 +92,8 @@ def __init__( auth_adapter: AuthAdapter | None = None, timeout_seconds: float | None = None, ): + """Instances should usually be constructed using a factory to avoid unnecessary duplication.""" + super().__init__() self._prefix_url = prefix_url[0:-1] if prefix_url[-1] == "/" else prefix_url @@ -147,6 +149,31 @@ def delete(self, *args, **kwargs): return super().delete(*args, **kwargs) +class UTMClientSessionFactory: + _sessions: dict[tuple, UTMClientSession] + + def __init__(self): + self._sessions = {} + + def get_session( + self, + prefix_url: str, + auth_adapter: AuthAdapter | None = None, + timeout_seconds: float | None = None, + ) -> UTMClientSession: + key = (prefix_url, auth_adapter, timeout_seconds) + if key not in self._sessions: + self._sessions[key] = UTMClientSession( + prefix_url=prefix_url, + auth_adapter=auth_adapter, + timeout_seconds=timeout_seconds, + ) + return self._sessions[key] + + +utm_client_session_factory = UTMClientSessionFactory() + + class AsyncUTMTestSession: """ Requests Asyncio client session that provides additional functionality for running DSS concurrency tests: diff --git a/monitoring/prober/conftest.py b/monitoring/prober/conftest.py index 8b4b52c23c..7c35f96213 100644 --- a/monitoring/prober/conftest.py +++ b/monitoring/prober/conftest.py @@ -6,7 +6,11 @@ import uas_standards.astm.f3548.v21.constants as v21_constants from monitoring.monitorlib import auth, scd -from monitoring.monitorlib.infrastructure import AsyncUTMTestSession, UTMClientSession +from monitoring.monitorlib.infrastructure import ( + AsyncUTMTestSession, + UTMClientSession, + utm_client_session_factory, +) from monitoring.prober.infrastructure import ( IDFactory, ResourceType, @@ -120,7 +124,9 @@ def make_session( pytest.skip(f"{auth_option} option not set") auth_adapter = auth.make_auth_adapter(auth_spec) - s = UTMClientSession(dss_endpoint + endpoint_suffix, auth_adapter) + s = utm_client_session_factory.get_session( + dss_endpoint + endpoint_suffix, auth_adapter + ) return s diff --git a/monitoring/uss_qualifier/resources/astm/f3411/dss.py b/monitoring/uss_qualifier/resources/astm/f3411/dss.py index ac6e59eb07..5216fd35cf 100644 --- a/monitoring/uss_qualifier/resources/astm/f3411/dss.py +++ b/monitoring/uss_qualifier/resources/astm/f3411/dss.py @@ -45,7 +45,9 @@ def __init__( self.participant_id = participant_id self.base_url = base_url self.rid_version = rid_version - self.client = infrastructure.UTMClientSession(base_url, auth_adapter) + self.client = infrastructure.utm_client_session_factory.get_session( + base_url, auth_adapter + ) def is_same_as(self, other: DSSInstance) -> bool: return ( diff --git a/monitoring/uss_qualifier/resources/astm/f3548/v21/dss.py b/monitoring/uss_qualifier/resources/astm/f3548/v21/dss.py index f869667993..341483e9ea 100644 --- a/monitoring/uss_qualifier/resources/astm/f3548/v21/dss.py +++ b/monitoring/uss_qualifier/resources/astm/f3548/v21/dss.py @@ -91,7 +91,9 @@ def __init__( self.participant_id = participant_id self.user_participant_ids = user_participant_ids self.base_url = base_url - self.client = infrastructure.UTMClientSession(base_url, auth_adapter) + self.client = infrastructure.utm_client_session_factory.get_session( + base_url, auth_adapter + ) self._scopes_authorized = set( s.value if isinstance(s, Enum) else s for s in scopes_authorized ) diff --git a/monitoring/uss_qualifier/resources/flight_planning/flight_planner.py b/monitoring/uss_qualifier/resources/flight_planning/flight_planner.py index 857ce95bad..53aa2771c4 100644 --- a/monitoring/uss_qualifier/resources/flight_planning/flight_planner.py +++ b/monitoring/uss_qualifier/resources/flight_planning/flight_planner.py @@ -48,12 +48,12 @@ def to_client( self, auth_adapter: infrastructure.AuthAdapter ) -> FlightPlannerClient: if "scd_injection_base_url" in self and self.scd_injection_base_url: - session = infrastructure.UTMClientSession( + session = infrastructure.utm_client_session_factory.get_session( self.scd_injection_base_url, auth_adapter, self.timeout_seconds ) return SCDFlightPlannerClient(session, self.participant_id) elif "v1_base_url" in self and self.v1_base_url: - session = infrastructure.UTMClientSession( + session = infrastructure.utm_client_session_factory.get_session( self.v1_base_url, auth_adapter, self.timeout_seconds ) return V1FlightPlannerClient(session, self.participant_id) diff --git a/monitoring/uss_qualifier/resources/geospatial_info/geospatial_info_providers.py b/monitoring/uss_qualifier/resources/geospatial_info/geospatial_info_providers.py index 66dbe9e86b..4482612efc 100644 --- a/monitoring/uss_qualifier/resources/geospatial_info/geospatial_info_providers.py +++ b/monitoring/uss_qualifier/resources/geospatial_info/geospatial_info_providers.py @@ -9,7 +9,7 @@ from monitoring.monitorlib.clients.geospatial_info.client_geospatial_map import ( GeospatialMapClient, ) -from monitoring.monitorlib.infrastructure import AuthAdapter, UTMClientSession +from monitoring.monitorlib.infrastructure import AuthAdapter, utm_client_session_factory from monitoring.uss_qualifier.configurations.configuration import ParticipantID from monitoring.uss_qualifier.resources.communications import AuthAdapterResource from monitoring.uss_qualifier.resources.resource import Resource @@ -37,7 +37,7 @@ def __init__(self, *args, **kwargs): def to_client(self, auth_adapter: AuthAdapter) -> GeospatialInfoClient: if "geospatial_map_v1_base_url" in self and self.geospatial_map_v1_base_url: - session = UTMClientSession( + session = utm_client_session_factory.get_session( self.geospatial_map_v1_base_url, auth_adapter, self.timeout_seconds ) return GeospatialMapClient(session, self.participant_id) diff --git a/monitoring/uss_qualifier/resources/interuss/mock_uss/client.py b/monitoring/uss_qualifier/resources/interuss/mock_uss/client.py index 8297e990d9..e481a231a8 100644 --- a/monitoring/uss_qualifier/resources/interuss/mock_uss/client.py +++ b/monitoring/uss_qualifier/resources/interuss/mock_uss/client.py @@ -14,7 +14,10 @@ PutLocalityRequest, ) from monitoring.monitorlib.fetch import QueryError, QueryType -from monitoring.monitorlib.infrastructure import AuthAdapter, UTMClientSession +from monitoring.monitorlib.infrastructure import ( + AuthAdapter, + utm_client_session_factory, +) from monitoring.monitorlib.locality import LocalityCode from monitoring.monitorlib.scd_automated_testing.scd_injection_api import ( SCOPE_SCD_QUALIFIER_INJECT, @@ -39,11 +42,16 @@ def __init__( timeout_seconds: float | None = None, ): self.base_url = base_url - self.session = UTMClientSession(base_url, auth_adapter, timeout_seconds) + self.session = utm_client_session_factory.get_session( + base_url, auth_adapter, timeout_seconds + ) self.participant_id = participant_id v1_base_url = base_url + "/flight_planning/v1" self.flight_planner = V1FlightPlannerClient( - UTMClientSession(v1_base_url, auth_adapter, timeout_seconds), participant_id + utm_client_session_factory.get_session( + v1_base_url, auth_adapter, timeout_seconds + ), + participant_id, ) def get_status(self) -> fetch.Query: diff --git a/monitoring/uss_qualifier/resources/netrid/observers.py b/monitoring/uss_qualifier/resources/netrid/observers.py index 9d8dd3e550..67def4c8ce 100644 --- a/monitoring/uss_qualifier/resources/netrid/observers.py +++ b/monitoring/uss_qualifier/resources/netrid/observers.py @@ -8,7 +8,6 @@ from monitoring.monitorlib import fetch, infrastructure from monitoring.monitorlib.fetch import QueryType -from monitoring.monitorlib.infrastructure import UTMClientSession from monitoring.uss_qualifier.resources.communications import AuthAdapterResource from monitoring.uss_qualifier.resources.resource import Resource @@ -24,7 +23,9 @@ def __init__( base_url: str, auth_adapter: infrastructure.AuthAdapter, ): - self.session = UTMClientSession(base_url, auth_adapter) + self.session = infrastructure.utm_client_session_factory.get_session( + base_url, auth_adapter + ) self.participant_id = participant_id self.base_url = base_url diff --git a/monitoring/uss_qualifier/resources/netrid/service_providers.py b/monitoring/uss_qualifier/resources/netrid/service_providers.py index 8654a4eea1..4e2e55929a 100644 --- a/monitoring/uss_qualifier/resources/netrid/service_providers.py +++ b/monitoring/uss_qualifier/resources/netrid/service_providers.py @@ -50,7 +50,7 @@ def __init__( ): self.participant_id = participant_id self.injection_base_url = injection_base_url - self.injection_client = infrastructure.UTMClientSession( + self.injection_client = infrastructure.utm_client_session_factory.get_session( injection_base_url, auth_adapter ) diff --git a/monitoring/uss_qualifier/resources/versioning/client.py b/monitoring/uss_qualifier/resources/versioning/client.py index 216b8ece7d..5ae7a0da36 100644 --- a/monitoring/uss_qualifier/resources/versioning/client.py +++ b/monitoring/uss_qualifier/resources/versioning/client.py @@ -5,7 +5,9 @@ from monitoring.monitorlib.clients.versioning.client_interuss import ( InterUSSVersioningClient, ) -from monitoring.monitorlib.infrastructure import UTMClientSession +from monitoring.monitorlib.infrastructure import ( + utm_client_session_factory, +) from monitoring.monitorlib.inspection import fullname from monitoring.uss_qualifier.reports.report import ParticipantID from monitoring.uss_qualifier.resources.communications import AuthAdapterResource @@ -48,7 +50,7 @@ def __init__( self.version_providers = [] for instance in specification.instances: if "interuss" in instance and instance.interuss: - session = UTMClientSession( + session = utm_client_session_factory.get_session( prefix_url=instance.interuss.base_url, auth_adapter=auth_adapter.adapter, ) diff --git a/monitoring/uss_qualifier/scenarios/astm/netrid/common/dss/token_validation.py b/monitoring/uss_qualifier/scenarios/astm/netrid/common/dss/token_validation.py index b9bc4a15b6..304efc11e8 100644 --- a/monitoring/uss_qualifier/scenarios/astm/netrid/common/dss/token_validation.py +++ b/monitoring/uss_qualifier/scenarios/astm/netrid/common/dss/token_validation.py @@ -48,12 +48,14 @@ def __init__( # correctly formed and signed using an unrecognized private key # (should cause requests to be rejected) - self._unsigned_token_session = infrastructure.UTMClientSession( - self._dss.base_url, InvalidTokenSignatureAuth() + self._unsigned_token_session = ( + infrastructure.utm_client_session_factory.get_session( + self._dss.base_url, InvalidTokenSignatureAuth() + ) ) # Session that won't provide a token at all # (should cause requests to be rejected) - self._no_token_session = infrastructure.UTMClientSession( + self._no_token_session = infrastructure.utm_client_session_factory.get_session( self._dss.base_url, None ) diff --git a/monitoring/uss_qualifier/scenarios/astm/netrid/common/misbehavior.py b/monitoring/uss_qualifier/scenarios/astm/netrid/common/misbehavior.py index 73686bd6bd..e5f64f744a 100644 --- a/monitoring/uss_qualifier/scenarios/astm/netrid/common/misbehavior.py +++ b/monitoring/uss_qualifier/scenarios/astm/netrid/common/misbehavior.py @@ -8,7 +8,9 @@ from monitoring.monitorlib import auth, geo from monitoring.monitorlib.errors import stacktrace_string from monitoring.monitorlib.fetch import rid -from monitoring.monitorlib.infrastructure import UTMClientSession +from monitoring.monitorlib.infrastructure import ( + utm_client_session_factory, +) from monitoring.monitorlib.rid import RIDVersion from monitoring.uss_qualifier.resources.astm.f3411.dss import DSSInstancesResource from monitoring.uss_qualifier.resources.netrid import ( @@ -270,7 +272,7 @@ def _evaluate_and_test_authentication( participant_id = mapping.injected_flight.uss_participant_id flights_url = mapping.observed_flight.query.flights_url - invalid_session = UTMClientSession(flights_url, auth) + invalid_session = utm_client_session_factory.get_session(flights_url, auth) self.record_note( f"{participant_id}/{injection_id}/missing_credentials_queries", diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/authentication/authentication_validation.py b/monitoring/uss_qualifier/scenarios/astm/utm/dss/authentication/authentication_validation.py index 7f8f0b2e6f..52df92d2a2 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/dss/authentication/authentication_validation.py +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/authentication/authentication_validation.py @@ -3,7 +3,9 @@ from monitoring.monitorlib.auth import InvalidTokenSignatureAuth from monitoring.monitorlib.fetch import QueryError -from monitoring.monitorlib.infrastructure import UTMClientSession +from monitoring.monitorlib.infrastructure import ( + utm_client_session_factory, +) from monitoring.monitorlib.inspection import fullname from monitoring.prober.infrastructure import register_resource_type from monitoring.uss_qualifier.resources.astm.f3548.v21.dss import ( @@ -175,12 +177,12 @@ def __init__( ) # Session that won't provide a token at all - self._no_auth_session = UTMClientSession( + self._no_auth_session = utm_client_session_factory.get_session( self._scd_dss.base_url, auth_adapter=None ) # Session that should provide a well-formed token with a wrong signature - self._invalid_token_session = UTMClientSession( + self._invalid_token_session = utm_client_session_factory.get_session( self._scd_dss.base_url, auth_adapter=InvalidTokenSignatureAuth() ) diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/authentication/generic.py b/monitoring/uss_qualifier/scenarios/astm/utm/dss/authentication/generic.py index 228619f562..7a39afa1f2 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/dss/authentication/generic.py +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/authentication/generic.py @@ -2,7 +2,9 @@ from monitoring.monitorlib import fetch, schema_validation from monitoring.monitorlib.auth import InvalidTokenSignatureAuth -from monitoring.monitorlib.infrastructure import UTMClientSession +from monitoring.monitorlib.infrastructure import ( + utm_client_session_factory, +) from monitoring.monitorlib.schema_validation import F3548_21 from monitoring.uss_qualifier.resources.astm.f3548.v21.dss import DSSInstance from monitoring.uss_qualifier.scenarios.scenario import TestScenario @@ -22,10 +24,12 @@ def __init__( self._pid = dss.participant_id self._scenario = scenario self._authenticated_session = dss.client - self._invalid_token_session = UTMClientSession( + self._invalid_token_session = utm_client_session_factory.get_session( dss.base_url, auth_adapter=InvalidTokenSignatureAuth() ) - self._no_auth_session = UTMClientSession(dss.base_url, auth_adapter=None) + self._no_auth_session = utm_client_session_factory.get_session( + dss.base_url, auth_adapter=None + ) self._valid_scope = valid_scope def query_no_auth(self, **query_kwargs) -> fetch.Query: diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/report.py b/monitoring/uss_qualifier/scenarios/astm/utm/dss/report.py index 22e8ec7330..96e1487444 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/dss/report.py +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/report.py @@ -39,7 +39,9 @@ def _dss_report_case(self): def gen_record() -> ExchangeRecord: op = OPERATIONS[OperationID.GetOperationalIntentReference] query = query_and_describe( - infrastructure.UTMClientSession(make_fake_url("dss")), + infrastructure.utm_client_session_factory.get_session( + make_fake_url("dss") + ), op.verb, op.path.format(entityid="dummy_op_intent_id"), QueryType.F3548v21DSSGetOperationalIntentReference, diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/make_uss_report.py b/monitoring/uss_qualifier/scenarios/astm/utm/make_uss_report.py index 01238fa167..aeef827c6a 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/make_uss_report.py +++ b/monitoring/uss_qualifier/scenarios/astm/utm/make_uss_report.py @@ -12,7 +12,11 @@ ) from monitoring.monitorlib.fetch import Query, QueryError, QueryType, query_and_describe -from monitoring.monitorlib.infrastructure import AuthAdapter, UTMClientSession +from monitoring.monitorlib.infrastructure import ( + AuthAdapter, + UTMClientSession, + utm_client_session_factory, +) from monitoring.uss_qualifier.configurations.configuration import ParticipantID from monitoring.uss_qualifier.resources.communications import AuthAdapterResource from monitoring.uss_qualifier.scenarios.astm.utm import FlightIntentValidation @@ -112,7 +116,7 @@ def _get_uss_base_urls(self, context: ExecutionContext) -> dict[str, Participant def _call_make_uss_report(self, base_urls: dict[str, ParticipantID]) -> None: for base_url, participant_id in base_urls.items(): - client = UTMClientSession(base_url, self._auth) + client = utm_client_session_factory.get_session(base_url, self._auth) url = base_url + OPERATIONS[OperationID.MakeUssReport].path t = StringBasedDateTime(arrow.utcnow()) exchange = ExchangeRecord(