@@ -66,11 +66,11 @@ def resolve_secret_reference(ref: str, secrets_dict: Dict[str, Dict[str, Dict[st
66
66
"""
67
67
68
68
env_name = current_env_name
69
- path = "/" # Default root path
69
+ path = "/" # Default root path
70
70
key_name = ref
71
71
72
72
# Parse the reference to identify environment, path, and secret key.
73
- if "." in ref : # Cross-environment references, split by the first dot to get environment and the rest.
73
+ if "." in ref : # Cross-environment references
74
74
parts = ref .split ("." , 1 )
75
75
env_name , rest = parts [0 ], parts [1 ]
76
76
last_slash_index = rest .rfind ("/" )
@@ -90,15 +90,17 @@ def resolve_secret_reference(ref: str, secrets_dict: Dict[str, Dict[str, Dict[st
90
90
91
91
try :
92
92
# Lookup with environment, path, and key
93
- if env_name in secrets_dict and path in secrets_dict [env_name ] and key_name in secrets_dict [env_name ][path ]:
94
- return secrets_dict [env_name ][path ][key_name ]
93
+ if env_name in secrets_dict and path in secrets_dict [env_name ]:
94
+ for secret in secrets_dict [env_name ][path ]:
95
+ if secret .key == key_name :
96
+ return secret .value
95
97
else :
96
98
# Handle fallback for cross-environment or missing secrets
97
99
if env_name != current_env_name :
98
100
fetched_secrets = phase .get (env_name = env_name , app_name = current_application_name , keys = [key_name ], path = path )
99
101
for secret in fetched_secrets :
100
- if secret [ " key" ] == key_name :
101
- return secret [ " value" ]
102
+ if secret . key == key_name :
103
+ return secret . value
102
104
except EnvironmentNotFoundException :
103
105
pass
104
106
@@ -128,14 +130,13 @@ def resolve_all_secrets(value: str, all_secrets: List[Dict[str, str]], phase: 'P
128
130
129
131
secrets_dict = {}
130
132
for secret in all_secrets :
131
- env_name = secret ['environment' ]
132
- path = secret ['path' ]
133
- key = secret ['key' ]
133
+ env_name = current_env_name # Assume current environment if not specified
134
+ path = secret .path
134
135
if env_name not in secrets_dict :
135
136
secrets_dict [env_name ] = {}
136
137
if path not in secrets_dict [env_name ]:
137
- secrets_dict [env_name ][path ] = {}
138
- secrets_dict [env_name ][path ][ key ] = secret [ 'value' ]
138
+ secrets_dict [env_name ][path ] = []
139
+ secrets_dict [env_name ][path ]. append ( secret )
139
140
140
141
refs = SECRET_REF_REGEX .findall (value )
141
142
resolved_value = value
@@ -144,4 +145,4 @@ def resolve_all_secrets(value: str, all_secrets: List[Dict[str, str]], phase: 'P
144
145
resolved_secret_value = resolve_secret_reference (ref , secrets_dict , phase , current_application_name , current_env_name )
145
146
resolved_value = resolved_value .replace (f"${{{ ref } }}" , resolved_secret_value )
146
147
147
- return resolved_value
148
+ return resolved_value
0 commit comments