Skip to content

Commit f126f26

Browse files
committed
DSS02120,A2-7-2,7
1 parent f59e33d commit f126f26

File tree

20 files changed

+1226
-47
lines changed

20 files changed

+1226
-47
lines changed

monitoring/monitorlib/mutate/scd.py

Lines changed: 40 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@
44
import s2sphere
55
import yaml
66
from implicitdict import ImplicitDict
7-
from uas_standards.astm.f3548.v21.api import OPERATIONS, OperationID, Subscription
7+
from uas_standards.astm.f3548.v21.api import (
8+
OPERATIONS,
9+
OperationID,
10+
Subscription,
11+
PutSubscriptionParameters,
12+
)
813
from yaml.representer import Representer
914

1015
from monitoring.monitorlib import fetch
@@ -74,18 +79,16 @@ def upsert_subscription(
7479
path = op.path.format(subscriptionid=subscription_id, version=version)
7580
query_type = QueryType.F3548v21DSSUpdateSubscription
7681

77-
body = {
78-
"extents": Volume4D.from_values(
79-
start_time,
80-
end_time,
81-
min_alt_m,
82-
max_alt_m,
83-
polygon=Polygon.from_latlng_rect(latlngrect=area),
84-
).to_f3548v21(),
85-
"uss_base_url": base_url,
86-
"notify_for_operational_intents": notify_for_op_intents,
87-
"notify_for_constraints": notify_for_constraints,
88-
}
82+
body = build_upsert_subscription_params(
83+
area_vertices=area,
84+
start_time=start_time,
85+
end_time=end_time,
86+
base_url=base_url,
87+
notify_for_op_intents=notify_for_op_intents,
88+
notify_for_constraints=notify_for_constraints,
89+
min_alt_m=min_alt_m,
90+
max_alt_m=max_alt_m,
91+
)
8992

9093
result = MutatedSubscription(
9194
fetch.query_and_describe(
@@ -102,6 +105,30 @@ def upsert_subscription(
102105
return result
103106

104107

108+
def build_upsert_subscription_params(
109+
area_vertices: s2sphere.LatLngRect,
110+
start_time: datetime.datetime,
111+
end_time: datetime.datetime,
112+
base_url: str,
113+
notify_for_op_intents: bool,
114+
notify_for_constraints: bool,
115+
min_alt_m: float,
116+
max_alt_m: float,
117+
) -> PutSubscriptionParameters:
118+
return PutSubscriptionParameters(
119+
extents=Volume4D.from_values(
120+
start_time,
121+
end_time,
122+
min_alt_m,
123+
max_alt_m,
124+
polygon=Polygon.from_latlng_rect(latlngrect=area_vertices),
125+
).to_f3548v21(),
126+
uss_base_url=base_url,
127+
notify_for_operational_intents=notify_for_op_intents,
128+
notify_for_constraints=notify_for_constraints,
129+
)
130+
131+
105132
def delete_subscription(
106133
utm_client: infrastructure.UTMClientSession,
107134
subscription_id: str,

monitoring/prober/infrastructure.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ def wrapper_default_scope(*args, **kwargs):
100100
resource_type_code_descriptions: Dict[ResourceType, str] = {}
101101

102102

103-
# Next code: 380
103+
# Next code: 381
104104
def register_resource_type(code: int, description: str) -> ResourceType:
105105
"""Register that the specified code refers to the described resource.
106106

monitoring/uss_qualifier/configurations/dev/f3548_self_contained.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ v1:
4848
# ASTM F3548-21 USS emulation roles
4949
- utm.strategic_coordination
5050
- utm.availability_arbitration
51+
# For authentication test purposes.
52+
# Remove if the authentication provider pointed to by AUTH_SPEC does not support it.
53+
- ""
5154

5255
# Means by which uss_qualifier can discover which subscription ('sub' claim of its tokes) it is described by
5356
utm_client_identity:

monitoring/uss_qualifier/configurations/dev/library/environment_containers.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ utm_auth:
2929
- utm.availability_arbitration
3030
# InterUSS versioning automated testing
3131
- interuss.versioning.read_system_versions
32+
# For authentication test purposes.
33+
# Remove if the authentication provider pointed to by AUTH_SPEC does not support it.
34+
- ""
3235

3336
second_utm_auth:
3437
$content_schema: monitoring/uss_qualifier/resources/definitions/ResourceDeclaration.json

monitoring/uss_qualifier/configurations/dev/library/environment_localhost.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ utm_auth:
2929
- utm.availability_arbitration
3030
# InterUSS versioning automated testing
3131
- interuss.versioning.read_system_versions
32+
# For authentication test purposes
33+
- ""
3234

3335
second_utm_auth:
3436
$content_schema: monitoring/uss_qualifier/resources/definitions/ResourceDeclaration.json

monitoring/uss_qualifier/resources/astm/f3548/v21/planning_area.py

Lines changed: 53 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
11
import datetime
2-
from typing import List, Dict, Any, Optional, Self
2+
from typing import List, Optional
33

4-
from implicitdict import ImplicitDict, StringBasedDateTime
5-
from uas_standards.astm.f3548.v21.api import Volume4D
4+
from implicitdict import ImplicitDict
5+
from uas_standards.astm.f3548.v21.api import (
6+
EntityOVN,
7+
OperationalIntentState,
8+
UssBaseURL,
9+
EntityID,
10+
PutOperationalIntentReferenceParameters,
11+
ImplicitSubscriptionParameters,
12+
)
613

7-
from monitoring.monitorlib.geo import LatLngPoint, make_latlng_rect, Volume3D, Polygon
14+
from monitoring.monitorlib.geo import make_latlng_rect, Volume3D
15+
from monitoring.monitorlib.geotemporal import Volume4D
16+
from monitoring.monitorlib.temporal import Time
817
from monitoring.uss_qualifier.resources.astm.f3548.v21.subscription_params import (
918
SubscriptionParams,
1019
)
@@ -52,6 +61,46 @@ def get_new_subscription_params(
5261
notify_for_constraints=notify_for_constraints,
5362
)
5463

64+
def get_new_operational_intent_ref_params(
65+
self,
66+
key: List[EntityOVN],
67+
state: OperationalIntentState,
68+
uss_base_url: UssBaseURL,
69+
time_start: datetime.datetime,
70+
time_end: datetime.datetime,
71+
subscription_id: Optional[EntityID],
72+
implicit_sub_base_url: Optional[UssBaseURL] = None,
73+
implicit_sub_for_constraints: Optional[bool] = None,
74+
) -> PutOperationalIntentReferenceParameters:
75+
"""
76+
Build a PutOperationalIntentReferenceParameters object that can be used against the DSS OIR API.
77+
78+
The extents contained in these parameters contain a single 4DVolume, which may not be entirely realistic,
79+
but is sufficient in situations where the content of the OIR is irrelevant as long as it is valid, such
80+
as for testing authentication or parameter validation.
81+
82+
Note that this method allows building inconsistent parameters:
83+
"""
84+
return PutOperationalIntentReferenceParameters(
85+
extents=[
86+
Volume4D(
87+
volume=self.volume,
88+
time_start=Time(time_start),
89+
time_end=Time(time_end),
90+
).to_f3548v21()
91+
],
92+
key=key,
93+
state=state,
94+
uss_base_url=uss_base_url,
95+
subscription_id=subscription_id,
96+
new_subscription=ImplicitSubscriptionParameters(
97+
uss_base_url=implicit_sub_base_url,
98+
notify_for_constraints=implicit_sub_for_constraints,
99+
)
100+
if implicit_sub_base_url
101+
else None,
102+
)
103+
55104

56105
class PlanningAreaResource(Resource[PlanningAreaSpecification]):
57106
specification: PlanningAreaSpecification

monitoring/uss_qualifier/resources/astm/f3548/v21/subscription_params.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
import datetime
22
from typing import List, Optional, Self
33

4+
import s2sphere
45
from implicitdict import ImplicitDict
6+
from uas_standards.astm.f3548.v21.api import PutSubscriptionParameters
57

68
from monitoring.monitorlib.geo import LatLngPoint
9+
from monitoring.monitorlib.mutate import scd as mutate
710

811

912
class SubscriptionParams(ImplicitDict):
@@ -44,3 +47,28 @@ class SubscriptionParams(ImplicitDict):
4447

4548
def copy(self) -> Self:
4649
return SubscriptionParams(super().copy())
50+
51+
def to_upsert_subscription_params(
52+
self, area: s2sphere.LatLngRect
53+
) -> PutSubscriptionParameters:
54+
"""
55+
Prepares the subscription parameters to be used in the body of an HTTP request
56+
to create or update a subscription on the DSS in the SCD context.
57+
58+
Args:
59+
area: area to include in the subscription parameters
60+
61+
Returns:
62+
A dict to be passed as the request body when calling the subscription creation or update API.
63+
64+
"""
65+
return mutate.build_upsert_subscription_params(
66+
area_vertices=area,
67+
start_time=self.start_time,
68+
end_time=self.end_time,
69+
base_url=self.base_url,
70+
notify_for_op_intents=self.notify_for_op_intents,
71+
notify_for_constraints=self.notify_for_constraints,
72+
min_alt_m=self.min_alt_m,
73+
max_alt_m=self.max_alt_m,
74+
)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from .authentication_validation import AuthenticationValidation

0 commit comments

Comments
 (0)