11
11
Do not edit the class manually.
12
12
""" # noqa: E501 docstring might be too long
13
13
14
+ import os
15
+
14
16
15
17
class HostConfiguration :
16
18
def __init__ (
@@ -22,8 +24,15 @@ def __init__(
22
24
server_operation_variables = None ,
23
25
ignore_operation_servers = False ,
24
26
) -> None :
25
- """Constructor"""
26
- self ._base_path = "https://authorization.api.stackit.cloud"
27
+ print (
28
+ "WARNING: STACKIT will move to a new way of specifying regions, where the region is provided\n " ,
29
+ "as a function argument instead of being set in the client configuration.\n "
30
+ "Once all services have migrated, the methods to specify the region in the client configuration "
31
+ "will be removed." ,
32
+ )
33
+ """Constructor
34
+ """
35
+ self ._base_path = "https://authorization.api.eu01.stackit.cloud"
27
36
"""Default Base url
28
37
"""
29
38
self .server_index = 0 if server_index is None else server_index
@@ -47,12 +56,13 @@ def get_host_settings(self):
47
56
"""
48
57
return [
49
58
{
50
- "url" : "https://authorization.api.stackit.cloud" ,
59
+ "url" : "https://authorization.api.{region} stackit.cloud" ,
51
60
"description" : "No description provided" ,
52
61
"variables" : {
53
62
"region" : {
54
63
"description" : "No description provided" ,
55
- "default_value" : "global" ,
64
+ "default_value" : "eu01." ,
65
+ "enum_values" : ["eu01." , "eu02." ],
56
66
}
57
67
},
58
68
}
@@ -63,6 +73,7 @@ def get_host_from_settings(self, index, variables=None, servers=None):
63
73
:param index: array index of the host settings
64
74
:param variables: hash of variable and the corresponding value
65
75
:param servers: an array of host settings or None
76
+ :error: if a region is given for a global url
66
77
:return: URL based on host settings
67
78
"""
68
79
if index is None :
@@ -81,8 +92,25 @@ def get_host_from_settings(self, index, variables=None, servers=None):
81
92
82
93
url = server ["url" ]
83
94
95
+ # check if environment variable was provided for region
96
+ # if nothing was set this is None
97
+ region_env = os .environ .get ("STACKIT_REGION" )
98
+
84
99
# go through variables and replace placeholders
85
100
for variable_name , variable in server .get ("variables" , {}).items ():
101
+ # If a region is provided by the user for a global url
102
+ # return an error (except for providing via environment variable).
103
+ # The region is provided as a function argument instead of being set in the client configuration.
104
+ if (
105
+ variable_name == "region"
106
+ and (variable ["default_value" ] == "global" or variable ["default_value" ] == "" )
107
+ and region_env is None
108
+ and variables .get (variable_name ) is not None
109
+ ):
110
+ raise ValueError (
111
+ "this API does not support setting a region in the the client configuration, "
112
+ "please check if the region can be specified as a function parameter"
113
+ )
86
114
used_value = variables .get (variable_name , variable ["default_value" ])
87
115
88
116
if "enum_values" in variable and used_value not in variable ["enum_values" ]:
0 commit comments