Skip to content

Commit

Permalink
Generate observability
Browse files Browse the repository at this point in the history
  • Loading branch information
stackit-pipeline committed Jan 10, 2025
1 parent 8e3722c commit 4d5dde1
Showing 1 changed file with 28 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
Do not edit the class manually.
""" # noqa: E501 docstring might be too long

import os


class HostConfiguration:
def __init__(
Expand All @@ -23,7 +25,14 @@ def __init__(
server_operation_variables=None,
ignore_operation_servers=False,
) -> None:
"""Constructor"""
print(
"WARNING: STACKIT will move to a new way of specifying regions, where the region is provided\n",
"as a function argument instead of being set in the client configuration.\n"
"Once all services have migrated, the methods to specify the region in the client configuration "
"will be removed.",
)
"""Constructor
"""
self._base_path = "https://argus.api.eu01.stackit.cloud"
"""Default Base url
"""
Expand Down Expand Up @@ -65,6 +74,7 @@ def get_host_from_settings(self, index, variables=None, servers=None):
:param index: array index of the host settings
:param variables: hash of variable and the corresponding value
:param servers: an array of host settings or None
:error: if a region is given for a global url
:return: URL based on host settings
"""
if index is None:
Expand All @@ -83,8 +93,25 @@ def get_host_from_settings(self, index, variables=None, servers=None):

url = server["url"]

# check if environment variable was provided for region
# if nothing was set this is None
region_env = os.environ.get("STACKIT_REGION")

# go through variables and replace placeholders
for variable_name, variable in server.get("variables", {}).items():
# If a region is provided by the user for a global url
# return an error (except for providing via environment variable).
# The region is provided as a function argument instead of being set in the client configuration.
if (
variable_name == "region"
and (variable["default_value"] == "global" or variable["default_value"] == "")
and region_env is None
and variables.get(variable_name) is not None
):
raise ValueError(
"this API does not support setting a region in the the client configuration, "
"please check if the region can be specified as a function parameter"
)
used_value = variables.get(variable_name, variable["default_value"])

if "enum_values" in variable and used_value not in variable["enum_values"]:
Expand Down

0 comments on commit 4d5dde1

Please sign in to comment.