@@ -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
88144class Wireless (BaseConverter ):
89145 netjson_key = 'interfaces'
0 commit comments