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
|
import os
import cloudinit.net
import cloudinit.net.network_state
from cloudinit import safeyaml
from tests.unittests.helpers import CiTestCase, dir2dict, mock, readResource
SAMPLE_FREEBSD_IFCONFIG_OUT = readResource("netinfo/freebsd-ifconfig-output")
V1 = """
config:
- id: eno1
mac_address: 08:94:ef:51:ae:e0
mtu: 1470
name: eno1
subnets:
- address: 172.20.80.129/25
type: static
type: physical
version: 1
"""
class TestInterfacesByMac(CiTestCase):
@mock.patch("cloudinit.subp.subp")
@mock.patch("cloudinit.util.is_FreeBSD")
def test_get_interfaces_by_mac(self, mock_is_FreeBSD, mock_subp):
mock_is_FreeBSD.return_value = True
mock_subp.return_value = (SAMPLE_FREEBSD_IFCONFIG_OUT, 0)
a = cloudinit.net.get_interfaces_by_mac()
assert a == {
"52:54:00:50:b7:0d": "vtnet0",
"80:00:73:63:5c:48": "re0.33",
"02:14:39:0e:25:00": "bridge0",
"02:ff:60:8c:f3:72": "vnet0:11",
}
class TestFreeBSDRoundTrip(CiTestCase):
def _render_and_read(
self, network_config=None, state=None, netplan_path=None, target=None
):
if target is None:
target = self.tmp_dir()
os.mkdir("%s/etc" % target)
with open("%s/etc/rc.conf" % target, "a") as fd:
fd.write("# dummy rc.conf\n")
with open("%s/etc/resolv.conf" % target, "a") as fd:
fd.write("# dummy resolv.conf\n")
if network_config:
ns = cloudinit.net.network_state.parse_net_config_data(
network_config
)
elif state:
ns = state
else:
raise ValueError("Expected data or state, got neither")
renderer = cloudinit.net.freebsd.Renderer()
renderer.render_network_state(ns, target=target)
return dir2dict(target)
@mock.patch("cloudinit.subp.subp")
def test_render_output_has_yaml(self, mock_subp):
entry = {
"yaml": V1,
}
network_config = safeyaml.load(entry["yaml"])
ns = cloudinit.net.network_state.parse_net_config_data(network_config)
files = self._render_and_read(state=ns)
assert files == {
"/etc/resolv.conf": "# dummy resolv.conf\n",
"/etc/rc.conf": (
"# dummy rc.conf\n"
"ifconfig_eno1="
"'172.20.80.129 netmask 255.255.255.128 mtu 1470'\n"
),
}
|