88import re
99from typing import Optional
1010
11+ # Application config loader
12+ from utils .app_config import get_app_config
13+
1114# Set up logging
1215logging .basicConfig (format = "%(asctime)s-%(process)d-%(levelname)s- %(message)s" , level = os .environ .get ("LOGLEVEL" , "ERROR" ))
1316log = logging .getLogger (__name__ )
1417
18+ app_config = get_app_config ()
19+
1520
1621# Lazy-load the Sysdig client configuration
1722def get_configuration (
@@ -22,18 +27,36 @@ def get_configuration(
2227
2328 Args:
2429 token (str): The Sysdig Secure token.
25- sysdig_host_url (str): The base URL of the Sysdig API.
26- old_api (bool): If True, uses the old Sysdig API URL format. Defaults to False.
30+ sysdig_host_url (str): The base URL of the Sysdig API,
31+ refer to the docs https://docs.sysdig.com/en/administration/saas-regions-and-ip-ranges/#sysdig-platform-regions.
32+ old_api (bool): If True, uses the old Sysdig API URL format.
33+ Defaults to False using the public API URL format https://api.{region}.sysdig.com.
2734 Returns:
2835 sysdig_client.Configuration: A configured Sysdig client instance.
36+ Raises:
37+ ValueError: If the Sysdig host URL is not provided or is invalid.
2938 """
3039 # Check if the token and sysdig_host_url are provided, otherwise fetch from environment variables
3140 if not token and not sysdig_host_url :
3241 env_vars = get_api_env_vars ()
3342 token = env_vars ["SYSDIG_SECURE_TOKEN" ]
3443 sysdig_host_url = env_vars ["SYSDIG_HOST" ]
3544 if not old_api :
45+ """
46+ Client expecting the public API URL in the format https://api.{region}.sysdig.com. We will check the following:
47+ - A valid Sysdig host URL is provided by matching the expected patterns with a regex.
48+ - If not, we will try to fetch the public API URL from the app config yaml 'sysdig.public_api_url'.
49+ - If neither is available, we will raise an error.
50+ """
3651 sysdig_host_url = _get_public_api_url (sysdig_host_url )
52+ if not sysdig_host_url :
53+ sysdig_host_url = app_config .get ("sysdig" , {}).get ("public_api_url" )
54+ if not sysdig_host_url :
55+ raise ValueError (
56+ "No valid Sysdig public API URL found. Please check your Sysdig host URL or"
57+ "explicitly set the public API URL in the app config 'sysdig.public_api_url'."
58+ "The expected format is https://api.{region}.sysdig.com."
59+ )
3760 log .info (f"Using public API URL: { sysdig_host_url } " )
3861
3962 configuration = sysdig_client .Configuration (
@@ -92,5 +115,5 @@ def _get_public_api_url(base_url: str) -> str:
92115 region = region_fn (match )
93116 return f"https://api.{ region } .sysdig.com"
94117
95- log .warning ("A not recognized Sysdig URL was provided, returning the same URL . This may lead to unexpected behavior." )
96- return base_url
118+ log .warning ("A not recognized Sysdig URL was provided, returning an empty string . This may lead to unexpected behavior." )
119+ return ""
0 commit comments