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
117
118
119
120
121
|
# This file is part of cloud-init. See LICENSE file for license information.
# ./cloudinit/sources/helpers/tests/test_openstack.py
from unittest import mock
from cloudinit.sources.helpers import openstack
from tests.unittests import helpers as test_helpers
@mock.patch(
"cloudinit.net.is_openvswitch_internal_interface",
mock.Mock(return_value=False),
)
class TestConvertNetJson(test_helpers.CiTestCase):
def test_phy_types(self):
"""Verify the different known physical types are handled."""
# network_data.json example from
# https://docs.openstack.org/nova/latest/user/metadata.html
mac0 = "fa:16:3e:9c:bf:3d"
net_json = {
"links": [
{
"ethernet_mac_address": mac0,
"id": "tapcd9f6d46-4a",
"mtu": None,
"type": "bridge",
"vif_id": "cd9f6d46-4a3a-43ab-a466-994af9db96fc",
}
],
"networks": [
{
"id": "network0",
"link": "tapcd9f6d46-4a",
"network_id": "99e88329-f20d-4741-9593-25bf07847b16",
"type": "ipv4_dhcp",
}
],
"services": [{"address": "8.8.8.8", "type": "dns"}],
}
macs = {mac0: "eth0"}
expected = {
"version": 1,
"config": [
{
"mac_address": "fa:16:3e:9c:bf:3d",
"mtu": None,
"name": "eth0",
"subnets": [{"type": "dhcp4"}],
"type": "physical",
},
{"address": "8.8.8.8", "type": "nameserver"},
],
}
for t in openstack.KNOWN_PHYSICAL_TYPES:
net_json["links"][0]["type"] = t
self.assertEqual(
expected,
openstack.convert_net_json(
network_json=net_json, known_macs=macs
),
)
def test_subnet_dns(self):
"""Verify the different known physical types are handled."""
# network_data.json example from
# https://docs.openstack.org/nova/latest/user/metadata.html
mac0 = "fa:16:3e:9c:bf:3d"
net_json = {
"links": [
{
"ethernet_mac_address": mac0,
"id": "tapcd9f6d46-4a",
"mtu": None,
"type": "phy",
"vif_id": "cd9f6d46-4a3a-43ab-a466-994af9db96fc",
}
],
"networks": [
{
"id": "network0",
"link": "tapcd9f6d46-4a",
"network_id": "99e88329-f20d-4741-9593-25bf07847b16",
"type": "ipv4",
"ip_address": "192.168.123.5",
"netmask": "255.255.255.0",
"services": [{"type": "dns", "address": "192.168.123.1"}],
}
],
}
macs = {mac0: "eth0"}
expected = {
"version": 1,
"config": [
{
"mac_address": "fa:16:3e:9c:bf:3d",
"mtu": None,
"name": "eth0",
"subnets": [
{
"type": "static",
"address": "192.168.123.5",
"netmask": "255.255.255.0",
"ipv4": True,
"dns_nameservers": ["192.168.123.1"],
}
],
"type": "physical",
}
],
}
for t in openstack.KNOWN_PHYSICAL_TYPES:
net_json["links"][0]["type"] = t
self.assertEqual(
expected,
openstack.convert_net_json(
network_json=net_json, known_macs=macs
),
)
|