Skip to content

Commit 4d76b8e

Browse files
committed
find env based on parameter env_var
Signed-off-by: yuteng <[email protected]>
1 parent e1518f6 commit 4d76b8e

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

flytekit/core/context_manager.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,7 @@ def get(
399399
group: Optional[str] = None,
400400
key: Optional[str] = None,
401401
group_version: Optional[str] = None,
402+
env_var: Optional[str] = None,
402403
encode_mode: str = "r",
403404
) -> str:
404405
"""
@@ -413,20 +414,26 @@ def get(
413414
env_prefixes.append("")
414415

415416
for env_prefix in env_prefixes:
416-
env_var = self._get_secrets_env_var(
417+
group_env_var = self._get_secrets_env_var(
417418
group=group, key=key, group_version=group_version, env_prefix=env_prefix
418419
)
419-
v = os.environ.get(env_var)
420+
v = os.environ.get(group_env_var)
421+
if v is not None:
422+
return v.strip()
423+
424+
if env_var is not None:
425+
v = os.environ.get(env_var, None)
420426
if v is not None:
421427
return v.strip()
422428

423429
fpath = self.get_secrets_file(group, key, group_version)
424430
if os.path.exists(fpath):
425431
with open(fpath, encode_mode) as f:
426432
return f.read().strip()
433+
env_vars = ",".join([k for k in filter(None, (group_env_var, env_var))])
427434
raise ValueError(
428435
f"Please make sure to add secret_requests=[Secret(group={group}, key={key})] in @task. Unable to find secret for key {key} in group {group} "
429-
f"in Env Var:{env_var} and FilePath: {fpath}"
436+
f"in Env Var:{env_vars} and FilePath: {fpath}"
430437
)
431438

432439
def get_secrets_env_var(
@@ -443,7 +450,7 @@ def _get_secrets_env_var(
443450
key: Optional[str] = None,
444451
group_version: Optional[str] = None,
445452
env_prefix: str = "",
446-
):
453+
) -> str:
447454
l = [k.upper() for k in filter(None, (group, group_version, key))]
448455
return f"{env_prefix}{'_'.join(l)}"
449456

tests/flytekit/unit/core/test_context_manager.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,11 @@ def test_secrets_manager_env():
251251
os.environ[sec.get_secrets_env_var(group="group", key="key")] = "value"
252252
assert sec.get(group="group", key="key") == "value"
253253

254+
os.environ["LOCAL_ENV_VAR"] = "value"
255+
assert sec.get(group="group", key="key2", env_var="LOCAL_ENV_VAR") == "value"
256+
assert sec.get(key="key", env_var="LOCAL_ENV_VAR") == "value"
257+
assert sec.get(env_var="LOCAL_ENV_VAR") == "value"
258+
254259

255260
@pytest.mark.parametrize("is_local_execution, prefix", [(True, ""), (False, "_FSEC_")])
256261
def test_secrets_manager_execution(monkeypatch, is_local_execution, prefix):

0 commit comments

Comments
 (0)