in cfn_policy_validator/parsers/utils/topological_sorter.py [0:0]
def visit(self, cfn_node):
if cfn_node.is_reference:
self.__add_dependency_if_resource(cfn_node.value)
elif cfn_node.is_get_att:
validate_fn_get_att_schema(cfn_node.value)
reference_name = cfn_node.value[0]
self.__add_dependency_if_resource(reference_name)
elif cfn_node.is_sub:
validate_fn_sub_schema(cfn_node.value)
if isinstance(cfn_node.value, list):
string_to_evaluate = cfn_node.value[0]
self.__add_fn_sub_dependencies(string_to_evaluate)
else:
self.__add_fn_sub_dependencies(cfn_node.value)
elif cfn_node.is_resource:
explicit_dependencies = cfn_node.value.get('DependsOn')
if not isinstance(explicit_dependencies, list):
explicit_dependencies = [explicit_dependencies]
for dependency in explicit_dependencies:
self.__add_dependency_if_resource(dependency)