Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def container_environment_copy(event, _):
- result = event['fragment']
- environments_to_inherit = list(dpath.util.search(result, '**/Environment/*/inheritFrom', yielded=True))
- if not environments_to_inherit:
- raise ValueError("No parameter found with the name inheritFrom in any Environment section")
- for environment in environments_to_inherit:
- source_path = environment[0].rsplit('/', maxsplit=2)[0]
- _delete_macro_trigger(result, environment)
- inherited_values = dpath.util.get(result, environment[1])
- original_values = dpath.util.get(result, source_path)
- _merge_dictionaries(result, source_path, original_values, inherited_values)
- return {
- "requestId": event['requestId'],
- "status": "success",
- "fragment": result,
- }
- def _delete_macro_trigger(result, environment):
- dpath.util.delete(result, environment[0].rsplit('/', maxsplit=1)[0])
- def _merge_dictionaries(result, source_path, original_values, inherited_values):
- dpath.util.set(result, source_path, _merge_variables(original_values, inherited_values))
- def _merge_variables(original_values, inherited_values):
- original_values_names = set(filter(lambda x: x is not None, map(lambda x: x.get('Name'), original_values)))
- resulting_environment = list(filter(lambda x: x and x.get('Name') not in original_values_names, inherited_values))
- resulting_environment.extend(original_values)
- return resulting_environment
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement