1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
# -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function
__metaclass__ = type
import unittest
from unittest.mock import MagicMock
from ansible_collections.vyos.rest.plugins.modules.vyos_vlan import (
build_commands,
get_running_config,
)
from .base import load_fixture
_BASE = ["interfaces", "ethernet"]
class TestVyOSVlanGetRunning(unittest.TestCase):
def setUp(self):
self.mock_vyos = MagicMock()
self.fixture = load_fixture("vlan_running.json")
self.mock_vyos.get_config = MagicMock(return_value=self.fixture)
def test_parses_vlans(self):
result = get_running_config(self.mock_vyos)
vlan_ids = [v["vlan_id"] for v in result]
self.assertIn(10, vlan_ids)
self.assertIn(20, vlan_ids)
def test_parses_description(self):
result = get_running_config(self.mock_vyos)
v10 = next(v for v in result if v["vlan_id"] == 10)
self.assertEqual(v10["description"], "VLAN10")
def test_parses_address(self):
result = get_running_config(self.mock_vyos)
v10 = next(v for v in result if v["vlan_id"] == 10)
self.assertEqual(v10["address"], "192.168.10.1/24")
def test_parses_multiple_interfaces(self):
result = get_running_config(self.mock_vyos)
v10 = next(v for v in result if v["vlan_id"] == 10)
self.assertIn("eth1", v10["interfaces"])
self.assertIn("eth2", v10["interfaces"])
def test_empty_config(self):
self.mock_vyos.get_config = MagicMock(return_value={})
result = get_running_config(self.mock_vyos)
self.assertEqual(result, [])
class TestVyOSVlanBuildCommands(unittest.TestCase):
def _have(self):
return [
{
"vlan_id": 10,
"interfaces": ["eth1"],
"description": "VLAN10",
"address": "192.168.10.1/24",
},
{"vlan_id": 20, "interfaces": ["eth1"], "description": "VLAN20"},
]
def test_present_new_vlan(self):
config = [{"vlan_id": 30, "description": "VLAN30", "interfaces": ["eth1"]}]
cmds = build_commands(config, [], "present")
self.assertIn(
("set", _BASE + ["eth1", "vif", "30", "description", "VLAN30"]),
cmds,
)
def test_present_idempotent(self):
config = [
{
"vlan_id": 10,
"description": "VLAN10",
"address": "192.168.10.1/24",
"interfaces": ["eth1"],
},
{"vlan_id": 20, "description": "VLAN20", "interfaces": ["eth1"]},
]
cmds = build_commands(config, self._have(), "present")
self.assertEqual(cmds, [])
def test_present_update_description(self):
config = [{"vlan_id": 10, "description": "VLAN10-new", "interfaces": ["eth1"]}]
cmds = build_commands(config, self._have(), "present")
self.assertIn(
("set", _BASE + ["eth1", "vif", "10", "description", "VLAN10-new"]),
cmds,
)
def test_absent_existing(self):
config = [{"vlan_id": 10, "interfaces": ["eth1"]}]
cmds = build_commands(config, self._have(), "absent")
self.assertIn(("delete", _BASE + ["eth1", "vif", "10"]), cmds)
def test_absent_nonexistent(self):
config = [{"vlan_id": 99, "interfaces": ["eth1"]}]
cmds = build_commands(config, self._have(), "absent")
self.assertEqual(cmds, [])
def test_present_bare_vif(self):
config = [{"vlan_id": 30, "interfaces": ["eth1"]}]
cmds = build_commands(config, [], "present")
self.assertIn(("set", _BASE + ["eth1", "vif", "30"]), cmds)
if __name__ == "__main__":
unittest.main()
|