Skip to content

Commit 00b4135

Browse files
Generate resourcemanager
1 parent 8e3722c commit 00b4135

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

services/resourcemanager/src/stackit/resourcemanager/configuration.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
Do not edit the class manually.
1212
""" # noqa: E501 docstring might be too long
1313

14+
import os
15+
1416

1517
class HostConfiguration:
1618
def __init__(
@@ -22,7 +24,14 @@ def __init__(
2224
server_operation_variables=None,
2325
ignore_operation_servers=False,
2426
) -> None:
25-
"""Constructor"""
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+
"""
2635
self._base_path = "https://resource-manager.api.stackit.cloud"
2736
"""Default Base url
2837
"""
@@ -63,6 +72,7 @@ def get_host_from_settings(self, index, variables=None, servers=None):
6372
:param index: array index of the host settings
6473
:param variables: hash of variable and the corresponding value
6574
:param servers: an array of host settings or None
75+
:error: if a region is given for a global url
6676
:return: URL based on host settings
6777
"""
6878
if index is None:
@@ -81,8 +91,25 @@ def get_host_from_settings(self, index, variables=None, servers=None):
8191

8292
url = server["url"]
8393

94+
# check if environment variable was provided for region
95+
# if nothing was set this is None
96+
region_env = os.environ.get("STACKIT_REGION")
97+
8498
# go through variables and replace placeholders
8599
for variable_name, variable in server.get("variables", {}).items():
100+
# If a region is provided by the user for a global url
101+
# return an error (except for providing via environment variable).
102+
# The region is provided as a function argument instead of being set in the client configuration.
103+
if (
104+
variable_name == "region"
105+
and (variable["default_value"] == "global" or variable["default_value"] == "")
106+
and region_env is None
107+
and variables.get(variable_name) is not None
108+
):
109+
raise ValueError(
110+
"this API does not support setting a region in the the client configuration, "
111+
"please check if the region can be specified as a function parameter"
112+
)
86113
used_value = variables.get(variable_name, variable["default_value"])
87114

88115
if "enum_values" in variable and used_value not in variable["enum_values"]:

0 commit comments

Comments
 (0)