Skip to content

Commit

Permalink
global envvar option
Browse files Browse the repository at this point in the history
  • Loading branch information
Ariana Barzinpour committed Jul 25, 2024
1 parent 347f2a6 commit 1081507
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 6 deletions.
14 changes: 8 additions & 6 deletions datacube/cfg/opt.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,23 +90,25 @@ def get_val_from_environment(self) -> str | None:
2. Check canonical envvar name first. E.g. option "bar" in environment "foo" -> $ODC_FOO_BAR
3. Check canonical envvar name for any alias environments that point to this one.
4. Check any legacy envvar names, and raise warnings if found.
5. Check global envvar name, denoted by "all" instead of an environment name
:return: First environment variable with non-empty value, or None if none found.
"""
if self.allow_envvar_lookup and self.env._allow_envvar_overrides:
canonical_name = f"odc_{self.env._name}_{self.name}".upper()
for env_name in self.env.get_all_aliases():
envvar_name = f"odc_{env_name}_{self.name}".upper()
val = os.environ.get(envvar_name)
if val:
if val := os.environ.get(envvar_name):
return val
for env_name in self.legacy_env_aliases:
val = os.environ.get(env_name)
if val:
for envvar_name in self.legacy_env_aliases:
if val := os.environ.get(envvar_name):
warnings.warn(
f"Config being passed in by legacy environment variable ${env_name}. "
f"Config being passed in by legacy environment variable ${envvar_name}. "
f"Please use ${canonical_name} instead.")
return val
global_name = f"odc_all_{self.name}".upper()
if val := os.environ.get(global_name):
return val
return None


Expand Down
2 changes: 2 additions & 0 deletions datacube/cfg/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ def check_valid_env_name(name: str) -> None:
"""
if not re.fullmatch(r"^[a-z][a-z0-9]*$", name):
raise ConfigException(f'Environment names must consist of only lower case letters and numbers: {name}')
if name.lower() == "all":
raise ConfigException('Environments cannot be named "ALL"')


def check_valid_option(name: str) -> None:
Expand Down

0 comments on commit 1081507

Please sign in to comment.