Skip to content

Commit 3fbcffd

Browse files
author
Ritwick DSouza
committed
[raspbian] Reduced complexity of Interfaces converter
1 parent 032c2a5 commit 3fbcffd

File tree

1 file changed

+54
-47
lines changed

1 file changed

+54
-47
lines changed

netjsonconfig/backends/raspbian/converters/interfaces.py

Lines changed: 54 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -10,56 +10,50 @@ class Interfaces(RaspbianConverter):
1010
def to_intermediate(self):
1111
result = []
1212
interfaces = get_copy(self.netjson, self.netjson_key)
13-
routes = get_copy(self.netjson, 'routes')
1413
for interface in interfaces:
15-
new_interface = {}
16-
ifname = interface.get('name')
17-
iftype = interface.get('type')
14+
result.append(self._get_interface(interface))
15+
return (('interfaces', result),)
16+
17+
def _get_interface(self, interface):
18+
new_interface = {}
19+
ifname = interface.get('name')
20+
iftype = interface.get('type')
21+
new_interface.update({
22+
'ifname': ifname,
23+
'iftype': iftype
24+
})
25+
if iftype in ['ethernet', 'bridge', 'loopback', 'wireless']:
26+
addresses = self._get_address(interface)
1827
new_interface.update({
19-
'ifname': ifname,
20-
'iftype': iftype
28+
'address': addresses
2129
})
22-
if iftype in ['ethernet', 'bridge', 'loopback', 'wireless']:
23-
addresses = self._get_address(interface)
24-
new_interface.update({
25-
'address': addresses
26-
})
27-
if routes:
28-
for route in routes:
29-
if ip_network(route.get('next')).version == 4:
30-
route['version'] = 4
31-
destination = IPv4Interface(route['destination']).with_netmask
32-
dest, dest_mask = destination.split('/')
33-
route['dest'] = dest
34-
route['dest_mask'] = dest_mask
35-
del route['destination']
36-
elif ip_network(route.get('next')).version == 6:
37-
route['version'] = 6
38-
new_interface.update({'route': route})
39-
mac = interface.get('mac', False)
40-
if mac:
41-
new_interface.update({'mac': mac})
42-
mtu = interface.get('mtu', False)
43-
if mtu:
44-
new_interface.update({'mtu': mtu})
45-
txqueuelen = interface.get('txqueuelen', False)
46-
if txqueuelen:
47-
new_interface.update({'txqueuelen': txqueuelen})
48-
autostart = interface.get('autostart', False)
49-
if autostart:
50-
new_interface.update({'autostart': autostart})
51-
if iftype == 'wireless' and interface.get('wireless').get('mode') == 'adhoc':
52-
wireless = interface.get('wireless')
53-
new_interface.update({
54-
'essid': wireless.get('ssid'),
55-
'mode': wireless.get('mode')
56-
})
57-
if iftype == 'bridge':
58-
new_interface.update({
59-
'bridge_members': interface.get('bridge_members')
60-
})
61-
result.append(new_interface)
62-
return (('interfaces', result),)
30+
routes = get_copy(self.netjson, 'routes')
31+
if routes:
32+
route = self._get_route(routes)
33+
new_interface.update({'route': route})
34+
mac = interface.get('mac', False)
35+
if mac:
36+
new_interface.update({'mac': mac})
37+
mtu = interface.get('mtu', False)
38+
if mtu:
39+
new_interface.update({'mtu': mtu})
40+
txqueuelen = interface.get('txqueuelen', False)
41+
if txqueuelen:
42+
new_interface.update({'txqueuelen': txqueuelen})
43+
autostart = interface.get('autostart', False)
44+
if autostart:
45+
new_interface.update({'autostart': autostart})
46+
if iftype == 'wireless' and interface.get('wireless').get('mode') == 'adhoc':
47+
wireless = interface.get('wireless')
48+
new_interface.update({
49+
'essid': wireless.get('ssid'),
50+
'mode': wireless.get('mode')
51+
})
52+
if iftype == 'bridge':
53+
new_interface.update({
54+
'bridge_members': interface.get('bridge_members')
55+
})
56+
return new_interface
6357

6458
def _get_address(self, interface):
6559
addresses = interface.get('addresses', False)
@@ -75,3 +69,16 @@ def _get_address(self, interface):
7569
address['netmask'] = address['mask']
7670
del address['mask']
7771
return addresses
72+
73+
def _get_route(self, routes):
74+
for route in routes:
75+
if ip_network(route.get('next')).version == 4:
76+
route['version'] = 4
77+
destination = IPv4Interface(route['destination']).with_netmask
78+
dest, dest_mask = destination.split('/')
79+
route['dest'] = dest
80+
route['dest_mask'] = dest_mask
81+
del route['destination']
82+
elif ip_network(route.get('next')).version == 6:
83+
route['version'] = 6
84+
return route

0 commit comments

Comments
 (0)