Skip to content

Commit b5d6922

Browse files
author
Ritwick DSouza
committed
[raspbian] Refactored interfaces converter
1 parent 00edff1 commit b5d6922

1 file changed

Lines changed: 119 additions & 63 deletions

File tree

netjsonconfig/backends/raspbian/converters.py

Lines changed: 119 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -10,80 +10,136 @@ def to_intermediate(self):
1010
result = []
1111
interfaces = get_copy(self.netjson, self.netjson_key)
1212
for interface in interfaces:
13+
new_interface = {}
1314
ifname = interface.get('name')
1415
iftype = interface.get('type')
15-
addresses = interface.get('addresses', None)
16-
new_interface = {
17-
'ifname': ifname,
18-
'iftype': iftype,
19-
}
20-
address_list = []
21-
if iftype == 'bridge':
22-
new_interface.update({
23-
'bridge_members': interface.get('bridge_members'),
24-
})
25-
mtu = interface.get('mtu', None)
26-
if mtu is not None:
16+
17+
if iftype in ['ethernet', 'bridge', 'loopback']:
2718
new_interface.update({
28-
'mtu': mtu
19+
'ifname': ifname,
20+
'iftype': iftype
2921
})
30-
mac = interface.get('mac', None)
31-
if mac is not None:
22+
addresses = self._get_address(interface)
3223
new_interface.update({
33-
'mac': mac
24+
'address': addresses
3425
})
35-
if iftype == 'wireless' and interface.get('wireless').get('mode') == 'adhoc':
36-
wireless = interface.get('wireless')
26+
mac = interface.get('mac', False)
27+
if mac:
28+
new_interface.update({'mac': mac})
29+
mtu = interface.get('mtu', False)
30+
if mtu:
31+
new_interface.update({'mtu': mtu})
32+
txqueuelen = interface.get('txqueuelen', False)
33+
if txqueuelen:
34+
new_interface.update({'txqueuelen': txqueuelen})
35+
autostart = interface.get('autostart', False)
36+
if autostart:
37+
new_interface.update({'autostart': autostart})
38+
if iftype == 'bridge':
3739
new_interface.update({
38-
'essid': wireless.get('ssid'),
39-
'mode': wireless.get('mode')
40+
'bridge_members': interface.get('bridge_members')
4041
})
41-
if addresses is not None:
42-
for address in addresses:
43-
new_address = {}
44-
if iftype in ['ethernet', 'bridge', 'loopback']:
45-
if address.get('proto') == 'static':
46-
if address.get('family') == 'ipv4':
47-
addressmask = str(address.get('address')) + '/' + str(address.get('mask'))
48-
new_address.update({
49-
'proto': 'static',
50-
'family': 'ipv4',
51-
'ipv4address': address.get('address'),
52-
'ipv4netmask': IPv4Interface(addressmask).with_netmask.split('/')[1]
53-
})
54-
if address.get('gateway', None) is not None:
55-
new_address.update({
56-
'ipv4gateway': address.get('gateway'),
57-
})
58-
if address.get('family') == 'ipv6':
59-
new_address.update({
60-
'proto': 'static',
61-
'family': 'ipv6',
62-
'ipv6address': address.get('address'),
63-
'ipv6netmask': address.get('mask')
64-
})
65-
if address.get('gateway', None) is not None:
66-
new_address.update({
67-
'ipv6gateway': address.get('gateway'),
68-
})
69-
elif address.get('proto') == 'dhcp':
70-
if address.get('family') == 'ipv4':
71-
new_address.update({
72-
'proto': 'dhcp',
73-
'family': 'ipv4',
74-
})
75-
elif address.get('family') == 'ipv6':
76-
new_address.update({
77-
'proto': 'dhcp',
78-
'family': 'ipv6',
79-
})
80-
address_list.append(new_address)
81-
new_interface.update({
82-
'address': address_list
83-
})
8442
result.append(new_interface)
8543
return (('interfaces', result),)
8644

45+
def _get_address(self, interface):
46+
addresses = interface.get('addresses', False)
47+
if addresses:
48+
for address in addresses:
49+
if address.get('proto') == 'static':
50+
if address.get('family') == 'ipv4':
51+
address_mask = str(address.get('address')) + '/' + str(address.get('mask'))
52+
address['netmask'] = IPv4Interface(address_mask).with_netmask.split('/')[1]
53+
del address['mask']
54+
if address.get('family') == 'ipv6':
55+
address['netmask'] = address['mask']
56+
del address['mask']
57+
return addresses
58+
59+
# [{'iftype': 'ethernet', 'ifname': 'eth0', 'address': [{'ipv4address': '10.0.0.1', 'ipv4netmask': '255.255.255.240', 'proto': 'static', 'family': 'ipv4'}, {'proto': 'static', 'family': 'ipv6', 'ipv6address': 'fe80::ba27:ebff:fe1c:5477', 'ipv6netmask': 64}]}]
60+
61+
62+
# class Interfaces(BaseConverter):
63+
# netjson_key = 'interfaces'
64+
#
65+
# def to_intermediate(self):
66+
# result = []
67+
# interfaces = get_copy(self.netjson, self.netjson_key)
68+
# for interface in interfaces:
69+
# ifname = interface.get('name')
70+
# iftype = interface.get('type')
71+
# addresses = interface.get('addresses', None)
72+
# new_interface = {
73+
# 'ifname': ifname,
74+
# 'iftype': iftype,
75+
# }
76+
# address_list = []
77+
# if iftype == 'bridge':
78+
# new_interface.update({
79+
# 'bridge_members': interface.get('bridge_members'),
80+
# })
81+
# mtu = interface.get('mtu', None)
82+
# if mtu is not None:
83+
# new_interface.update({
84+
# 'mtu': mtu
85+
# })
86+
# mac = interface.get('mac', None)
87+
# if mac is not None:
88+
# new_interface.update({
89+
# 'mac': mac
90+
# })
91+
# if iftype == 'wireless' and interface.get('wireless').get('mode') == 'adhoc':
92+
# wireless = interface.get('wireless')
93+
# new_interface.update({
94+
# 'essid': wireless.get('ssid'),
95+
# 'mode': wireless.get('mode')
96+
# })
97+
# if addresses is not None:
98+
# for address in addresses:
99+
# new_address = {}
100+
# if iftype in ['ethernet', 'bridge', 'loopback']:
101+
# if address.get('proto') == 'static':
102+
# if address.get('family') == 'ipv4':
103+
# addressmask = str(address.get('address')) + '/' + str(address.get('mask'))
104+
# new_address.update({
105+
# 'proto': 'static',
106+
# 'family': 'ipv4',
107+
# 'ipv4address': address.get('address'),
108+
# 'ipv4netmask': IPv4Interface(addressmask).with_netmask.split('/')[1]
109+
# })
110+
# if address.get('gateway', None) is not None:
111+
# new_address.update({
112+
# 'ipv4gateway': address.get('gateway'),
113+
# })
114+
# if address.get('family') == 'ipv6':
115+
# new_address.update({
116+
# 'proto': 'static',
117+
# 'family': 'ipv6',
118+
# 'ipv6address': address.get('address'),
119+
# 'ipv6netmask': address.get('mask')
120+
# })
121+
# if address.get('gateway', None) is not None:
122+
# new_address.update({
123+
# 'ipv6gateway': address.get('gateway'),
124+
# })
125+
# elif address.get('proto') == 'dhcp':
126+
# if address.get('family') == 'ipv4':
127+
# new_address.update({
128+
# 'proto': 'dhcp',
129+
# 'family': 'ipv4',
130+
# })
131+
# elif address.get('family') == 'ipv6':
132+
# new_address.update({
133+
# 'proto': 'dhcp',
134+
# 'family': 'ipv6',
135+
# })
136+
# address_list.append(new_address)
137+
# new_interface.update({
138+
# 'address': address_list
139+
# })
140+
# result.append(new_interface)
141+
# return (('interfaces', result),)
142+
87143

88144
class Wireless(BaseConverter):
89145
netjson_key = 'interfaces'

0 commit comments

Comments
 (0)