Пример #1
0
    def test_unified_diff(options_ios):
        host = Host(hostname="test_host", os="ios", hconfig_options=options_ios)
        config_a = HConfig(host=host)
        config_b = HConfig(host=host)
        # deep differences
        config_a.add_children_deep(["a", "aa", "aaa", "aaaa"])
        config_b.add_children_deep(["a", "aa", "aab", "aaba"])
        # these children will be the same and should not appear in the diff
        config_a.add_children_deep(["b", "ba", "baa"])
        config_b.add_children_deep(["b", "ba", "baa"])
        # root level differences
        config_a.add_children_deep(["c", "ca"])
        config_b.add_child("d")

        diff = list(config_a.unified_diff(config_b))
        assert diff == [
            "a",
            "  aa",
            "    - aaa",
            "      - aaaa",
            "    + aab",
            "      + aaba",
            "- c",
            "  - ca",
            "+ d",
        ]
Пример #2
0
    def test_future_config(self):
        running_config = HConfig(host=self.host_a)
        running_config.add_children_deep(["a", "aa", "aaa", "aaaa"])
        running_config.add_children_deep(["a", "ab", "aba", "abaa"])
        config = HConfig(host=self.host_a)
        config.add_children_deep(["a", "ac"])
        config.add_children_deep(["a", "no ab"])
        config.add_children_deep(["a", "no az"])

        future_config = running_config.future(config)
        assert list(c.cisco_style_text() for c in future_config.all_children()) == [
            "a",
            "  ac",  # config lines are added first
            "  no az",
            "  aa",  # self lines not in config are added last
            "    aaa",
            "      aaaa",
        ]