@@ -178,11 +178,14 @@ class KRRSecret(BaseModel):
178178 secret_value : str
179179 command_flag : str
180180
181- def __init__ (self , env_var_name : str , secret_key : str , secret_value : str , command_flag : str ):
182- secret_b64_str = base64 .b64encode (bytes (secret_value , "utf-8" )).decode ("utf-8" )
183- super ().__init__ (
184- env_var_name = env_var_name , secret_key = secret_key , secret_value = secret_b64_str , command_flag = command_flag
185- )
181+ @validator ('secret_value' , pre = True , always = True , allow_reuse = True )
182+ def encode_secret_value (cls , v : str ) -> str :
183+ if isinstance (v , str ):
184+ return base64 .b64encode (bytes (v , "utf-8" )).decode ("utf-8" )
185+ raise ValueError ("secret_value must be a string" )
186+
187+ class KRRSecretKeyValuePair (KRRSecret ):
188+ arg_key : str
186189
187190
188191def _generate_krr_job_secret (scan_id : str , krr_secrets : Optional [List [KRRSecret ]]) -> Optional [JobSecret ]:
@@ -210,7 +213,14 @@ def _generate_krr_env_vars(
210213def _generate_additional_env_args (krr_secrets : Optional [List [KRRSecret ]]) -> str :
211214 if not krr_secrets :
212215 return ""
213- return " " .join (f"{ secret .command_flag } '$({ secret .env_var_name } )'" for secret in krr_secrets )
216+ additional_args = []
217+ for secret in krr_secrets :
218+ if isinstance (secret , KRRSecretKeyValuePair ):
219+ additional_args .append (f"{ secret .command_flag } '{ secret .arg_key } :$({ secret .env_var_name } )'" )
220+ else :
221+ additional_args .append (f"{ secret .command_flag } '$({ secret .env_var_name } )'" )
222+
223+ return " " .join (additional_args )
214224
215225
216226def _generate_cmd_line_args (prom_config : PrometheusConfig ) -> str :
@@ -230,7 +240,6 @@ def _generate_prometheus_secrets(prom_config: PrometheusConfig) -> List[KRRSecre
230240 # needed for custom bearer token or Azure
231241 headers = PrometheusAuthorization .get_authorization_headers (prom_config )
232242 auth_header = headers ["Authorization" ] if "Authorization" in headers else ""
233- additional_headers = prom_config ["headers" ] if "headers" in prom_config else None
234243
235244 if auth_header :
236245 krr_secrets .append (
@@ -242,18 +251,19 @@ def _generate_prometheus_secrets(prom_config: PrometheusConfig) -> List[KRRSecre
242251 )
243252 )
244253
245- if additional_headers :
254+ if prom_config . headers :
246255 for header_name , header_value in prom_config .headers .items ():
247256
248257 env_var_name = f"PROMETHEUS_HEADER_{ header_name .upper ().replace ('-' , '_' )} "
249258 secret_key = f"prometheus-header-{ header_name .lower ()} "
250259
251260 krr_secrets .append (
252- KRRSecret (
261+ KRRSecretKeyValuePair (
253262 env_var_name = env_var_name ,
263+ arg_key = header_name ,
254264 secret_key = secret_key ,
255265 secret_value = header_value ,
256- command_flag = f "--prometheus-header { header_name } : " ,
266+ command_flag = "--prometheus-headers " ,
257267 )
258268 )
259269
0 commit comments