Skip to content

Commit 58490e3

Browse files
committed
Support mapping for list objects in resource sync utility.
1 parent 4d0f813 commit 58490e3

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

utilities/resource_sync/sync.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -171,16 +171,24 @@ def replace_param_with_mapping(param, mapping):
171171
mapping: Mapping configuration to replace the parameter.
172172
173173
"""
174-
for k, v in param.items():
175-
if isinstance(v, dict):
176-
replace_param_with_mapping(v, mapping)
177-
elif isinstance(v, str):
178-
for mk, mv in mapping.items():
179-
if mk in v:
180-
v_old = v
181-
v = v.replace(mk, mv)
182-
param[k] = v
183-
logger.info(f"Mapped param {k}: {v_old} -> {param[k]}")
174+
if isinstance(param, dict):
175+
items = param.items()
176+
elif isinstance(param, (list, tuple)):
177+
items = enumerate(param)
178+
elif isinstance(param, str):
179+
for mk, mv in mapping.items():
180+
if mk in param:
181+
value_old = param
182+
value = param.replace(mk, mv)
183+
logger.info(f"Mapped param: {value_old} -> {value}")
184+
param = value
185+
return param
186+
else:
187+
return param
188+
189+
for key, value in items:
190+
param[key] = replace_param_with_mapping(value, mapping)
191+
return param
184192

185193

186194
def organize_job_param(job, mapping):
@@ -270,7 +278,7 @@ def synchronize_job(job_name, mapping):
270278
# Organize job parameters
271279
job = organize_job_param(job, mapping)
272280

273-
# Store source job script path
281+
# Store destination job script path
274282
dst_job_script_s3_url = job['Command']['ScriptLocation']
275283

276284
# Copy job script

0 commit comments

Comments
 (0)