def visit()

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)