From 75ba7b080724ba84d4880f2dfc369027dfb81caa Mon Sep 17 00:00:00 2001 From: Benjamin Pelletier Date: Fri, 16 Oct 2026 17:45:29 -0700 Subject: [PATCH] Convert non_conflicting_flights to be served from a provider --- NEXT_RELEASE_NOTES.md | 2 ++ .../configurations/dev/f3548_self_contained.yaml | 11 ++++++++++- .../configurations/dev/library/resources.yaml | 9 +++++++++ .../configurations/dev/message_signing.yaml | 3 ++- .../uss_qualifier/configurations/dev/uspace.yaml | 5 +++-- .../definitions/baseline_a.libsonnet | 14 +++++++++++++- .../uss_qualifier/suites/astm/utm/f3548_21.yaml | 15 +++++++++++---- .../suites/faa/uft/message_signing.yaml | 9 +++++---- .../uss_qualifier/suites/uspace/flight_auth.yaml | 8 +++++--- .../suites/uspace/required_services.yaml | 8 +++++--- 10 files changed, 65 insertions(+), 19 deletions(-) diff --git a/NEXT_RELEASE_NOTES.md b/NEXT_RELEASE_NOTES.md index c694aacb88..67dd902ddc 100644 --- a/NEXT_RELEASE_NOTES.md +++ b/NEXT_RELEASE_NOTES.md @@ -39,10 +39,12 @@ The release notes should contain at least the following sections: * For any uss_qualifier test configurations using any of the test suites `suites.astm.utm.f3548_21`, `suites.faa.uft.message_signing`, `suites.uspace.flight_auth`, or `suites.uspace.required_services`, the following resources must be changed: * A new required resource named `conflicting_flights_provider` must be provided. It must be a `resources.resource.ResourceProvidingResource` providing `resources.flight_planning.FlightIntentsResource` instances with spatially separated flight intents for each planner combination used by `ConflictEqualPriorityNotPermitted`. One suitable implementation is `resources.geospatial.TriangularCascadeSoutheastResource` with `conflicting_flights` as its `base_resource`; see [f3548_self_contained](./monitoring/uss_qualifier/configurations/dev/f3548_self_contained.yaml) for an example. + * A new required resource named `non_conflicting_flights_provider` must be provided. It must be a `resources.resource.ResourceProvidingResource[resources.flight_planning.FlightIntentsResource]` providing spatially separated flight intents for each DSS instance used in the `dss_probing` test suite. One suitable implementation is `resources.geospatial.TriangularCascadeSoutheastResource` with `non_conflicting_flights` as its `base_resource`; see [f3548_self_contained](./monitoring/uss_qualifier/configurations/dev/f3548_self_contained.yaml) for an example. * A new required resource named `planning_area_provider` must be provided to replace `planning_area`. It must be a `resources.resource.ResourceProvidingResource` providing `resources.planning_area.PlanningAreaResource` instances with spatially separated planning areas for each DSS instance used in the `dss_probing` test suite. One suitable implementation is `resources.geospatial.TriangularCascadeSoutheastResource` with `planning_area` as its `base_resource`; see [f3548_self_contained](./monitoring/uss_qualifier/configurations/dev/f3548_self_contained.yaml) for an example. The existing `planning_area` suite input is no longer used except by `suites.uspace.required_services`, which still requires it for NetRID tests. Keep any underlying planning area resource used as the provider's `base_resource`. ## Optional migration tasks * For uss_qualifier test configurations using `suites.astm.utm.f3548_21`, `suites.faa.uft.message_signing`, `suites.uspace.flight_auth`, or `suites.uspace.required_services`, the `conflicting_flights` input is now optional and its suite resource mapping can be removed. By default, `f3548_21` selects index 0 from `conflicting_flights_provider`. An explicitly supplied `conflicting_flights` still overrides this default for now. Keep any base flight resource declaration needed by the provider. +* For the same test suites, the `non_conflicting_flights` input is now optional and its suite resource mapping can be removed. By default, `f3548_21` selects index 0 from `non_conflicting_flights_provider` for scenarios using a single set of flight intents. An explicitly supplied `non_conflicting_flights` still overrides this default for now; `dss_probing` always uses the provider's per-DSS flight intents. Keep any base flight resource declaration needed by the provider. ## Important information diff --git a/monitoring/uss_qualifier/configurations/dev/f3548_self_contained.yaml b/monitoring/uss_qualifier/configurations/dev/f3548_self_contained.yaml index 83344ed5d1..76e7f7ad39 100644 --- a/monitoring/uss_qualifier/configurations/dev/f3548_self_contained.yaml +++ b/monitoring/uss_qualifier/configurations/dev/f3548_self_contained.yaml @@ -22,7 +22,7 @@ v1: conflicting_flights_provider: conflicting_flights_provider priority_preemption_flights_provider: conflicting_flights_provider invalid_flight_intents: invalid_flight_intents - non_conflicting_flights: non_conflicting_flights + non_conflicting_flights_provider: non_conflicting_flights_provider dss: dss dss_instances: dss_instances interuss_dss_instances: dss_instances @@ -296,6 +296,15 @@ v1: degrees_east: -96.7587 meters_up: 93 + # Provide spatially separated non-conflicting flights for each DSS instance + non_conflicting_flights_provider: + resource_type: resources.geospatial.TriangularCascadeSoutheastResource + dependencies: + base_resource: non_conflicting_flights + specification: + meters_east_margin: 10000 + meters_north_margin: 10000 + # How to execute a test run using this configuration execution: # Since we want to stop execution immediately if there are any unexpected failed checks, we set this parameter to diff --git a/monitoring/uss_qualifier/configurations/dev/library/resources.yaml b/monitoring/uss_qualifier/configurations/dev/library/resources.yaml index dfed009280..78f35adb97 100644 --- a/monitoring/uss_qualifier/configurations/dev/library/resources.yaml +++ b/monitoring/uss_qualifier/configurations/dev/library/resources.yaml @@ -415,6 +415,15 @@ che_non_conflicting_flights: degrees_east: 7.4774 meters_up: 605 +che_non_conflicting_flights_provider: + $content_schema: monitoring/uss_qualifier/resources/definitions/ResourceDeclaration.json + resource_type: resources.geospatial.TriangularCascadeSoutheastResource + dependencies: + base_resource: che_non_conflicting_flights + specification: + meters_east_margin: 10000 + meters_north_margin: 10000 + # ===== General flight authorization ===== example_flight_check_table: diff --git a/monitoring/uss_qualifier/configurations/dev/message_signing.yaml b/monitoring/uss_qualifier/configurations/dev/message_signing.yaml index 728b3a4f12..a921107360 100644 --- a/monitoring/uss_qualifier/configurations/dev/message_signing.yaml +++ b/monitoring/uss_qualifier/configurations/dev/message_signing.yaml @@ -6,6 +6,7 @@ v1: che_conflicting_flights_provider: {$ref: 'library/resources.yaml#/che_conflicting_flights_provider'} che_invalid_flight_intents: {$ref: 'library/resources.yaml#/che_invalid_flight_intents'} che_non_conflicting_flights: {$ref: 'library/resources.yaml#/che_non_conflicting_flights'} + che_non_conflicting_flights_provider: {$ref: 'library/resources.yaml#/che_non_conflicting_flights_provider'} che_problematically_big_area: {$ref: 'library/resources.yaml#/che_problematically_big_area'} che_planning_area_volume: {$ref: 'library/resources.yaml#/che_planning_area_volume'} che_planning_area: {$ref: 'library/resources.yaml#/che_planning_area'} @@ -55,7 +56,7 @@ v1: combination_selector: combination_selector conflicting_flights_provider: che_conflicting_flights_provider invalid_flight_intents: che_invalid_flight_intents - non_conflicting_flights: che_non_conflicting_flights + non_conflicting_flights_provider: che_non_conflicting_flights_provider priority_preemption_flights_provider: che_conflicting_flights_provider dss: scd_dss dss_instances: scd_dss_instances diff --git a/monitoring/uss_qualifier/configurations/dev/uspace.yaml b/monitoring/uss_qualifier/configurations/dev/uspace.yaml index d6b02b9643..789d82d42a 100644 --- a/monitoring/uss_qualifier/configurations/dev/uspace.yaml +++ b/monitoring/uss_qualifier/configurations/dev/uspace.yaml @@ -9,6 +9,7 @@ v1: che_invalid_flight_intents: {$ref: 'library/resources.yaml#/che_invalid_flight_intents'} che_invalid_flight_auth_flights: {$ref: 'library/resources.yaml#/che_invalid_flight_auth_flights'} che_non_conflicting_flights: {$ref: 'library/resources.yaml#/che_non_conflicting_flights'} + che_non_conflicting_flights_provider: {$ref: 'library/resources.yaml#/che_non_conflicting_flights_provider'} che_planning_area_volume: {$ref: 'library/resources.yaml#/che_planning_area_volume'} che_planning_area: {$ref: 'library/resources.yaml#/che_planning_area'} netrid_observation_evaluation_configuration: {$ref: 'library/resources.yaml#/netrid_observation_evaluation_configuration'} @@ -64,7 +65,7 @@ v1: priority_preemption_flights_provider: che_conflicting_flights_provider invalid_flight_intents: che_invalid_flight_intents invalid_flight_auth_flights: che_invalid_flight_auth_flights - non_conflicting_flights: che_non_conflicting_flights + non_conflicting_flights_provider: che_non_conflicting_flights_provider flight_planners: all_flight_planners? mock_uss: mock_uss_instance_uss6 mock_uss_dp: mock_uss_instance_dp @@ -102,7 +103,7 @@ v1: priority_preemption_flights_provider: priority_preemption_flights_provider invalid_flight_intents: invalid_flight_intents invalid_flight_auth_flights: invalid_flight_auth_flights - non_conflicting_flights: non_conflicting_flights + non_conflicting_flights_provider: non_conflicting_flights_provider flight_planners: flight_planners? mock_uss: mock_uss mock_uss_dp: mock_uss_dp diff --git a/monitoring/uss_qualifier/configurations/dev/utm_implementation_us/definitions/baseline_a.libsonnet b/monitoring/uss_qualifier/configurations/dev/utm_implementation_us/definitions/baseline_a.libsonnet index 46ead55cb6..225a42abca 100644 --- a/monitoring/uss_qualifier/configurations/dev/utm_implementation_us/definitions/baseline_a.libsonnet +++ b/monitoring/uss_qualifier/configurations/dev/utm_implementation_us/definitions/baseline_a.libsonnet @@ -25,7 +25,7 @@ function(env) { conflicting_flights_provider: 'conflicting_flights_provider', priority_preemption_flights_provider: 'conflicting_flights_provider', invalid_flight_intents: 'invalid_flight_intents', - non_conflicting_flights: 'non_conflicting_flights', + non_conflicting_flights_provider: 'non_conflicting_flights_provider', test_exclusions: 'test_exclusions', dss: 'dss', dss_instances: 'dss_instances', @@ -267,6 +267,18 @@ function(env) { }, }, + // Provide spatially separated non-conflicting flights for each DSS instance + non_conflicting_flights_provider: { + resource_type: 'resources.geospatial.TriangularCascadeSoutheastResource', + dependencies: { + base_resource: 'non_conflicting_flights', + }, + specification: { + meters_east_margin: 10000, + meters_north_margin: 10000, + }, + }, + // Name of the system under test for which the system version should be obtained from participants who provide version information system_identity: { resource_type: 'resources.versioning.SystemIdentityResource', diff --git a/monitoring/uss_qualifier/suites/astm/utm/f3548_21.yaml b/monitoring/uss_qualifier/suites/astm/utm/f3548_21.yaml index b3141e7692..5a25dafe92 100644 --- a/monitoring/uss_qualifier/suites/astm/utm/f3548_21.yaml +++ b/monitoring/uss_qualifier/suites/astm/utm/f3548_21.yaml @@ -9,15 +9,16 @@ resources: interuss_dss_instances: resources.astm.f3548.v21.DSSInstancesResource? dss_datastore_cluster: resources.interuss.datastore.DatastoreDBClusterResource? - # This input is DEPRECATED and may be removed in future versions. + # These inputs are DEPRECATED and may be removed in future versions. conflicting_flights: resources.flight_planning.FlightIntentsResource? + non_conflicting_flights: resources.flight_planning.FlightIntentsResource? # This resource should provide resources.flight_planning.FlightIntentsResource instances conflicting_flights_provider: resources.resource.ResourceProvidingResource priority_preemption_flights_provider: resources.resource.ResourceProvidingResource? + non_conflicting_flights_provider: resources.resource.ResourceProvidingResource[resources.flight_planning.FlightIntentsResource] invalid_flight_intents: resources.flight_planning.FlightIntentsResource - non_conflicting_flights: resources.flight_planning.FlightIntentsResource nominal_planning_selector: resources.flight_planning.FlightPlannerCombinationSelectorResource? priority_planning_selector: resources.flight_planning.FlightPlannerCombinationSelectorResource? utm_auth: resources.communications.AuthAdapterResource? @@ -30,6 +31,12 @@ resources: system_identity: resources.versioning.SystemIdentityResource? test_exclusions: resources.dev.TestExclusionsResource? local_resources: + non_conflicting_flights: + resource_type: resources.resource.SingularResource[resources.flight_planning.FlightIntentsResource] + dependencies: + provider: non_conflicting_flights_provider + specification: + index: 0 conflicting_flights: resource_type: resources.resource.SingularResource[resources.flight_planning.FlightIntentsResource] dependencies: @@ -50,7 +57,7 @@ local_resources: dependencies: environments: dss_environments planning_area: planning_area_provider - # TODO: populate flight_intents from non_conflicting_flights_provider + flight_intents: non_conflicting_flights_provider specification: {} priority_preemption_combinations: resource_type: resources.combinations.ResourceCombinationsResource @@ -81,6 +88,7 @@ local_resources: flight_intents_environments: resource_type: resources.environments.ConcatenatedResourceEnvironmentsResource dependencies: + dss_probing: dss_probing_environments priority_preemption: priority_preemption_environments? equal_priority_conflict: equal_priority_conflict_environments specification: {} @@ -111,7 +119,6 @@ actions: dss_datastore_cluster: dss_datastore_cluster? second_utm_auth: second_utm_auth? utm_client_identity: utm_client_identity - flight_intents: non_conflicting_flights id_generator: id_generator problematically_big_area: problematically_big_area test_exclusions: test_exclusions? diff --git a/monitoring/uss_qualifier/suites/faa/uft/message_signing.yaml b/monitoring/uss_qualifier/suites/faa/uft/message_signing.yaml index 345bf0288d..ae3e3e96c3 100644 --- a/monitoring/uss_qualifier/suites/faa/uft/message_signing.yaml +++ b/monitoring/uss_qualifier/suites/faa/uft/message_signing.yaml @@ -7,14 +7,14 @@ resources: dss_instances: resources.astm.f3548.v21.DSSInstancesResource? dss_datastore_cluster: resources.interuss.datastore.DatastoreDBClusterResource? - # This input is DEPRECATED and may be removed in future versions. + # These inputs are DEPRECATED and may be removed in future versions. conflicting_flights: resources.flight_planning.FlightIntentsResource? - - non_conflicting_flights: resources.flight_planning.FlightIntentsResource + non_conflicting_flights: resources.flight_planning.FlightIntentsResource? # This resource should provide resources.flight_planning.FlightIntentsResource instances conflicting_flights_provider: resources.resource.ResourceProvidingResource priority_preemption_flights_provider: resources.resource.ResourceProvidingResource? + non_conflicting_flights_provider: resources.resource.ResourceProvidingResource[resources.flight_planning.FlightIntentsResource] invalid_flight_intents: resources.flight_planning.FlightIntentsResource id_generator: resources.interuss.IDGeneratorResource @@ -34,7 +34,8 @@ actions: mock_uss: mock_uss conflicting_flights: conflicting_flights? conflicting_flights_provider: conflicting_flights_provider - non_conflicting_flights: non_conflicting_flights + non_conflicting_flights: non_conflicting_flights? + non_conflicting_flights_provider: non_conflicting_flights_provider priority_preemption_flights_provider: priority_preemption_flights_provider? flight_planners: flight_planners flight_planners_to_clear: flight_planners diff --git a/monitoring/uss_qualifier/suites/uspace/flight_auth.yaml b/monitoring/uss_qualifier/suites/uspace/flight_auth.yaml index bf78a6739d..e11fe6cf9e 100644 --- a/monitoring/uss_qualifier/suites/uspace/flight_auth.yaml +++ b/monitoring/uss_qualifier/suites/uspace/flight_auth.yaml @@ -3,16 +3,17 @@ resources: test_env_version_providers: resources.versioning.VersionProvidersResource? prod_env_version_providers: resources.versioning.VersionProvidersResource? - # This input is DEPRECATED and may be removed in future versions. + # These inputs are DEPRECATED and may be removed in future versions. conflicting_flights: resources.flight_planning.FlightIntentsResource? + non_conflicting_flights: resources.flight_planning.FlightIntentsResource? # This resource should provide resources.flight_planning.FlightIntentsResource instances conflicting_flights_provider: resources.resource.ResourceProvidingResource priority_preemption_flights_provider: resources.resource.ResourceProvidingResource? + non_conflicting_flights_provider: resources.resource.ResourceProvidingResource[resources.flight_planning.FlightIntentsResource] invalid_flight_auth_flights: resources.flight_planning.FlightIntentsResource invalid_flight_intents: resources.flight_planning.FlightIntentsResource - non_conflicting_flights: resources.flight_planning.FlightIntentsResource flight_planners: resources.flight_planning.FlightPlannersResource? mock_uss: resources.interuss.mock_uss.client.MockUSSResource? dss: resources.astm.f3548.v21.DSSInstanceResource @@ -36,7 +37,8 @@ actions: conflicting_flights_provider: conflicting_flights_provider priority_preemption_flights_provider: priority_preemption_flights_provider? invalid_flight_intents: invalid_flight_intents - non_conflicting_flights: non_conflicting_flights + non_conflicting_flights: non_conflicting_flights? + non_conflicting_flights_provider: non_conflicting_flights_provider flight_planners: flight_planners? flight_planners_to_clear: flight_planners? mock_uss: mock_uss diff --git a/monitoring/uss_qualifier/suites/uspace/required_services.yaml b/monitoring/uss_qualifier/suites/uspace/required_services.yaml index f01b954a89..b52caace42 100644 --- a/monitoring/uss_qualifier/suites/uspace/required_services.yaml +++ b/monitoring/uss_qualifier/suites/uspace/required_services.yaml @@ -3,16 +3,17 @@ resources: test_env_version_providers: resources.versioning.VersionProvidersResource? prod_env_version_providers: resources.versioning.VersionProvidersResource? - # This input is DEPRECATED and may be removed in future versions. + # These inputs are DEPRECATED and may be removed in future versions. conflicting_flights: resources.flight_planning.FlightIntentsResource? + non_conflicting_flights: resources.flight_planning.FlightIntentsResource? # This resource should provide resources.flight_planning.FlightIntentsResource instances conflicting_flights_provider: resources.resource.ResourceProvidingResource priority_preemption_flights_provider: resources.resource.ResourceProvidingResource? + non_conflicting_flights_provider: resources.resource.ResourceProvidingResource[resources.flight_planning.FlightIntentsResource] invalid_flight_intents: resources.flight_planning.FlightIntentsResource invalid_flight_auth_flights: resources.flight_planning.FlightIntentsResource - non_conflicting_flights: resources.flight_planning.FlightIntentsResource flight_planners: resources.flight_planning.FlightPlannersResource? mock_uss: resources.interuss.mock_uss.client.MockUSSResource? mock_uss_dp: resources.interuss.mock_uss.client.MockUSSResource? @@ -58,7 +59,8 @@ actions: priority_preemption_flights_provider: priority_preemption_flights_provider? invalid_flight_intents: invalid_flight_intents invalid_flight_auth_flights: invalid_flight_auth_flights - non_conflicting_flights: non_conflicting_flights + non_conflicting_flights: non_conflicting_flights? + non_conflicting_flights_provider: non_conflicting_flights_provider flight_planners: flight_planners? mock_uss: mock_uss dss: scd_dss