1
1
"""Utility functions for IVOA clients."""
2
2
3
+ import os
4
+
3
5
from pyvo .dal import SIA2Service
4
6
from pyvo .dal .adhoc import DatalinkResults
5
7
from pyvo .dal .sia2 import ObsCoreRecord
@@ -14,11 +16,29 @@ def get_datalink_result(result: ObsCoreRecord) -> DatalinkResults:
14
16
)
15
17
16
18
17
- def get_siav2_service (label : str ) -> SIA2Service :
19
+ def get_siav2_service (data_release : str ) -> SIA2Service :
18
20
"""Construct an `SIA2Service` client."""
19
- if label != "staff" :
20
- raise ValueError (label + " data not available at your location" )
21
+ # data_release determines the Data release, as we may have different
22
+ # releases being served from the same server.
23
+
24
+ label = os .getenv ("RSP_SITE_TYPE" , None )
25
+
26
+ # The label variable here corresponds to RSP "kind" (i.e. "telescope",
27
+ # "science", "staff")
28
+
29
+ if label not in {"science" , "staff" }:
30
+ if label is None :
31
+ raise ValueError ("RSP_SITE_TYPE environment variable is not set" )
32
+ raise ValueError (f"{ label } data not available at your location" )
33
+
34
+ sia_url = get_service_url (f"sia/{ data_release } " )
35
+ if not sia_url :
36
+ raise RuntimeError (
37
+ f"Failed to determine service URL for data release: { data_release } "
38
+ )
39
+
40
+ session = get_pyvo_auth ()
41
+ if session :
42
+ session .add_security_method_for_url (sia_url + "/query" , "lsst-token" )
21
43
22
- # No matter what, we've only got one sia server per environment
23
- # so for now just do some checking.
24
- return SIA2Service (get_service_url ("siav2" ), get_pyvo_auth ())
44
+ return SIA2Service (sia_url , session = session )
0 commit comments