changes in vlan-native after tests
Change-Id: Id0e6fcba7945b5d6476eaec62964aa03ce6d9be9
diff --git a/TestON/drivers/common/cli/networkdriver.py b/TestON/drivers/common/cli/networkdriver.py
index b1dfd78..2b70be6 100755
--- a/TestON/drivers/common/cli/networkdriver.py
+++ b/TestON/drivers/common/cli/networkdriver.py
@@ -519,7 +519,6 @@
failedPings = 0
hostPairs = itertools.permutations( list( hostComponentList ), 2 )
for hostPair in list( hostPairs ):
- pingResponse += hostPair[ 0 ].options[ 'shortName' ] + " -> "
ipDst = hostPair[ 1 ].options.get( 'ip6', hostPair[ 1 ].options[ 'ip' ] ) if ipv6 else hostPair[ 1 ].options[ 'ip' ]
srcIface = hostPair[ 0 ].interfaces[0].get( 'name' )
dstIface = hostPair[ 1 ].interfaces[0].get( 'name' )
@@ -529,60 +528,76 @@
main.log.debug( "Pinging from " + str( hostPair[ 0 ].shortName ) + " to " + str( hostPair[ 1 ].shortName ) )
srcIPs = hostPair[ 0 ].interfaces[0].get( 'ips' )
dstIPs = hostPair[ 1 ].interfaces[0].get( 'ips' )
- srcVLANs = hostPair[0].interfaces[0].get( 'vlan' )
- if srcVLANs:
- VLAN = srcVLANs[0]
- else:
- VLAN=None
- dstVLANs = hostPair[1].interfaces[0].get( 'vlan' )
- # Use scapy to send and recieve packets
- hostPair[ 1 ].startScapy( ifaceName=dstIface )
- hostPair[ 1 ].addRoutes()
- filters = []
- if srcMac:
- filters.append( "ether src host %s" % srcMac )
- if srcIPs[0]:
- filters.append( "ip src host %s" % srcIPs[0] )
- hostPair[ 1 ].startFilter( ifaceName=dstIface, pktFilter=" and ".join(filters) )
- hostPair[ 0 ].startScapy( ifaceName=srcIface )
- hostPair[ 0 ].addRoutes()
- hostPair[ 0 ].buildEther( src=srcMac, dst=dstMac )
- if VLAN:
- hostPair[ 0 ].buildVLAN( vlan=VLAN )
- hostPair[ 0 ].buildIP( src=srcIPs[0], dst=dstIPs[0] )
- hostPair[ 0 ].buildICMP( vlan=VLAN )
- hostPair[ 0 ].sendPacket( iface=srcIface )
+ srcVLANs = hostPair[0].interfaces[0].get( 'vlan', [None] )
+ main.log.debug( srcVLANs )
+ for VLAN in srcVLANs:
+ pingResponse += hostPair[ 0 ].options[ 'shortName' ]
+ if VLAN:
+ pingResponse += "." + str( VLAN )
+ pingResponse += " -> "
+ main.log.debug( VLAN )
+ dstVLANs = hostPair[1].interfaces[0].get( 'vlan' )
+ # Use scapy to send and recieve packets
+ hostPair[ 1 ].startScapy( ifaceName=dstIface )
+ hostPair[ 1 ].addRoutes()
+ filters = []
+ if srcMac:
+ filters.append( "ether src host %s" % srcMac )
+ if srcIPs[0]:
+ filters.append( "ip src host %s" % srcIPs[0] )
+ hostPair[ 1 ].startFilter( ifaceName=dstIface, pktFilter=" and ".join(filters) )
+ hostPair[ 0 ].startScapy( ifaceName=srcIface )
+ hostPair[ 0 ].addRoutes()
+ hostPair[ 0 ].buildEther( src=srcMac, dst=dstMac )
+ if VLAN:
+ hostPair[ 0 ].buildVLAN( vlan=VLAN )
+ hostPair[ 0 ].buildIP( src=srcIPs[0], dst=dstIPs[0] )
+ hostPair[ 0 ].buildICMP( vlan=VLAN )
+ hostPair[ 0 ].sendPacket( iface=srcIface )
- waiting = not hostPair[ 1 ].checkFilter()
- if not waiting:
- pingResult = main.FALSE
- packets = hostPair[ 1 ].readPackets()
- main.log.warn( repr( packets ) )
- for packet in packets.splitlines():
- main.log.debug( packet )
- if srcIPs[0] in packet:
- pingResult = main.TRUE
- else:
- main.log.warn( "Did not receive packets, killing filter" )
- kill = hostPair[ 1 ].killFilter()
- main.log.debug( kill )
- hostPair[ 1 ].handle.sendline( "" )
- hostPair[ 1 ].handle.expect( hostPair[ 1 ].scapyPrompt )
- main.log.debug( hostPair[ 1 ].handle.before )
- # One of the host to host pair is unreachable
- pingResult = main.FALSE
- hostPair[ 0 ].stopScapy()
- hostPair[ 1 ].stopScapy()
+ waiting = not hostPair[ 1 ].checkFilter()
+ if not waiting:
+ pingResult = main.FALSE
+ packets = hostPair[ 1 ].readPackets()
+ main.log.warn( repr( packets ) )
+ for packet in packets.splitlines():
+ main.log.debug( packet )
+ if srcIPs[0] in packet:
+ pingResult = main.TRUE
+ else:
+ main.log.warn( "Did not receive packets, killing filter" )
+ kill = hostPair[ 1 ].killFilter()
+ main.log.debug( kill )
+ hostPair[ 1 ].handle.sendline( "" )
+ hostPair[ 1 ].handle.expect( hostPair[ 1 ].scapyPrompt )
+ main.log.debug( hostPair[ 1 ].handle.before )
+ # One of the host to host pair is unreachable
+ pingResult = main.FALSE
+ hostPair[ 0 ].stopScapy()
+ hostPair[ 1 ].stopScapy()
+ if pingResult:
+ pingResponse += hostPair[ 1 ].options[ 'shortName' ]
+ if VLAN:
+ pingResponse += "." + str( VLAN )
+ else:
+ pingResponse += "X"
+ # One of the host to host pair is unreachable
+ isReachable = main.FALSE
+ failedPings += 1
+ pingResponse += "\n"
else:
+ pingResponse += hostPair[ 0 ].options[ 'shortName' ] + " -> "
pingResult = hostPair[ 0 ].ping( ipDst, interface=srcIface, wait=int( wait ) )
- if pingResult:
- pingResponse += hostPair[ 1 ].options[ 'shortName' ]
- else:
- pingResponse += "X"
- # One of the host to host pair is unreachable
- isReachable = main.FALSE
- failedPings += 1
- pingResponse += "\n"
+ if pingResult:
+ pingResponse += hostPair[ 1 ].options[ 'shortName' ]
+ if VLAN:
+ pingResponse += "." + str( VLAN )
+ else:
+ pingResponse += "X"
+ # One of the host to host pair is unreachable
+ isReachable = main.FALSE
+ failedPings += 1
+ pingResponse += "\n"
main.log.info( pingResponse + "Failed pings: " + str( failedPings ) )
return isReachable
except Exception:
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params.tucson
index 67b0d48..145a28b 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params.tucson
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params.tucson
@@ -1,5 +1,5 @@
<PARAMS>
- <testcases>6</testcases>
+ <testcases>6,16,26,36,46,56,66,76</testcases>
<GRAPH>
<nodeCluster>pairedleaves</nodeCluster>
@@ -24,7 +24,7 @@
<lib>routinglib.py,trellislib.py,stratum.py</lib>
</DEPENDENCY>
- <jsonFileSuffix>.hw</jsonFileSuffix>
+ <jsonFileSuffix>.tucson</jsonFileSuffix>
<persistent_setup>True</persistent_setup>
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.topo.0x2.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.topo.0x2.tucson
index 61ff208..5aa179c 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.topo.0x2.tucson
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.topo.0x2.tucson
@@ -66,7 +66,7 @@
<COMPONENTS>
<mac></mac>
<inband>false</inband>
- <dhcp>True</dhcp>
+ <dhcp>False</dhcp>
<ip>10.32.11.2</ip>
<shortName>h1</shortName>
<port1></port1>
@@ -95,7 +95,7 @@
<COMPONENTS>
<mac></mac>
<inband>false</inband>
- <dhcp>True</dhcp>
+ <dhcp>False</dhcp>
<ip>10.32.11.3</ip>
<shortName>h2</shortName>
<port1></port1>
@@ -124,7 +124,7 @@
<COMPONENTS>
<mac></mac>
<inband>false</inband>
- <dhcp>True</dhcp>
+ <dhcp>False</dhcp>
<ip>10.32.11.194</ip>
<shortName>h3</shortName>
<port1></port1>
@@ -152,7 +152,7 @@
<COMPONENTS>
<mac></mac>
<inband>false</inband>
- <dhcp>True</dhcp>
+ <dhcp>False</dhcp>
<ip>10.32.11.1</ip>
<shortName>mgmt</shortName>
<port1></port1>
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/SRBridgingTest.py b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/SRBridgingTest.py
index e2b175f..098db74 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/SRBridgingTest.py
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/SRBridgingTest.py
@@ -59,6 +59,7 @@
print (main.cfgName, "Testcase : CASE 09")
main.Cluster.setRunningNode( onosNodes )
run.installOnos( main, skipPackage=skipPackage, cliSleep=5 )
+ suf = main.params.get( 'jsonFileSuffix', None)
if not main.persistentSetup:
if main.useBmv2:
switchPrefix = main.params[ 'DEPENDENCY' ].get( 'switchPrefix', '' )
@@ -69,7 +70,6 @@
translator.ofdpaToBmv2( main, switchPrefix=switchPrefix )
else:
translator.bmv2ToOfdpa( main )
- suf = main.params.get( 'jsonFileSuffix', None)
if suf:
run.loadJson( main, suffix=suf )
else:
@@ -93,7 +93,7 @@
# Run the test with physical devices
run.connectToPhysicalNetwork( main, hostDiscovery=False ) # We don't want to do host discovery in the pod
if main.cfgName:
- returnValue = run.loadNewJson( main )
+ returnValue = run.loadNewJson( main, suffix=suf )
utilities.assert_equals( expect=main.TRUE,
actual=returnValue,
onpass="Successfully changed network config",
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE06.json.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE06.json.tucson
index a10a0ca..093b740 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE06.json.tucson
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE06.json.tucson
@@ -28,7 +28,7 @@
"ips": [
"10.32.11.126/25"
],
- "vlan-untagged": 111,
+ "vlan-untagged":111,
"name": "compute-2-1"
}
]
@@ -39,7 +39,7 @@
"ips": [
"10.32.11.126/25"
],
- "vlan-untagged": 111,
+ "vlan-untagged":111,
"name": "compute-2-2"
}
]
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE16.json b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE16.json
index c755a30..db7bc19 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE16.json
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE16.json
@@ -103,4 +103,4 @@
]
}
}
-}
\ No newline at end of file
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE16.json.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE16.json.tucson
new file mode 100644
index 0000000..06c8e7f
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE16.json.tucson
@@ -0,0 +1,48 @@
+{
+"ports":{
+ "device:leaf1/56":{
+ "interfaces":[
+ {
+ "ips":[
+ "10.32.11.126/25"
+ ],
+ "vlan-tagged":[111],
+ "name": "compute-1-1"
+ }
+ ]
+ },
+ "device:leaf2/56":{
+ "interfaces":[
+ {
+ "ips":[
+ "10.32.11.126/25"
+ ],
+ "vlan-tagged":[111],
+ "name": "compute-1-2"
+ }
+ ]
+ },
+ "device:leaf1/40": {
+ "interfaces": [
+ {
+ "ips": [
+ "10.32.11.126/25"
+ ],
+ "vlan-tagged":[111],
+ "name": "compute-2-1"
+ }
+ ]
+ },
+ "device:leaf2/40": {
+ "interfaces": [
+ {
+ "ips": [
+ "10.32.11.126/25"
+ ],
+ "vlan-tagged":[111],
+ "name": "compute-2-2"
+ }
+ ]
+ }
+ }
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE26.json.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE26.json.tucson
new file mode 100644
index 0000000..b3cd310
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE26.json.tucson
@@ -0,0 +1,52 @@
+{
+"ports":{
+ "device:leaf1/56":{
+ "interfaces":[
+ {
+ "ips":[
+ "10.32.11.126/25"
+ ],
+ "vlan-native":111,
+ "vlan-tagged":[120],
+ "name": "compute-1-1"
+ }
+ ]
+ },
+ "device:leaf2/56":{
+ "interfaces":[
+ {
+ "ips":[
+ "10.32.11.126/25"
+ ],
+ "vlan-native":111,
+ "vlan-tagged":[120],
+ "name": "compute-1-2"
+ }
+ ]
+ },
+ "device:leaf1/40": {
+ "interfaces": [
+ {
+ "ips": [
+ "10.32.11.126/25"
+ ],
+ "vlan-native":111,
+ "vlan-tagged":[120],
+ "name": "compute-2-1"
+ }
+ ]
+ },
+ "device:leaf2/40": {
+ "interfaces": [
+ {
+ "ips": [
+ "10.32.11.126/25"
+ ],
+ "vlan-native":111,
+ "vlan-tagged":[120],
+ "name": "compute-2-2"
+ }
+ ]
+ }
+ }
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE36.json.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE36.json.tucson
new file mode 100644
index 0000000..25059e5
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE36.json.tucson
@@ -0,0 +1,50 @@
+{
+"ports":{
+ "device:leaf1/56":{
+ "interfaces":[
+ {
+ "ips":[
+ "10.32.11.126/25"
+ ],
+ "vlan-native":111,
+ "vlan-tagged":[120],
+ "name": "compute-1-1"
+ }
+ ]
+ },
+ "device:leaf2/56":{
+ "interfaces":[
+ {
+ "ips":[
+ "10.32.11.126/25"
+ ],
+ "vlan-native":111,
+ "vlan-tagged":[120],
+ "name": "compute-1-2"
+ }
+ ]
+ },
+ "device:leaf1/40": {
+ "interfaces": [
+ {
+ "ips": [
+ "10.32.11.126/25"
+ ],
+ "vlan-untagged":111,
+ "name": "compute-2-1"
+ }
+ ]
+ },
+ "device:leaf2/40": {
+ "interfaces": [
+ {
+ "ips": [
+ "10.32.11.126/25"
+ ],
+ "vlan-untagged":111,
+ "name": "compute-2-2"
+ }
+ ]
+ }
+ }
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE46.json.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE46.json.tucson
new file mode 100644
index 0000000..d2b7ed7
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE46.json.tucson
@@ -0,0 +1,48 @@
+{
+"ports":{
+ "device:leaf1/56":{
+ "interfaces":[
+ {
+ "ips":[
+ "10.32.11.126/25"
+ ],
+ "vlan-untagged":111,
+ "name": "compute-1-1"
+ }
+ ]
+ },
+ "device:leaf2/56":{
+ "interfaces":[
+ {
+ "ips":[
+ "10.32.11.126/25"
+ ],
+ "vlan-untagged":111,
+ "name": "compute-1-2"
+ }
+ ]
+ },
+ "device:leaf1/40": {
+ "interfaces": [
+ {
+ "ips": [
+ "10.32.11.126/25"
+ ],
+ "vlan-tagged":111,
+ "name": "compute-2-1"
+ }
+ ]
+ },
+ "device:leaf2/40": {
+ "interfaces": [
+ {
+ "ips": [
+ "10.32.11.126/25"
+ ],
+ "vlan-tagged":111,
+ "name": "compute-2-2"
+ }
+ ]
+ }
+ }
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE56.json.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE56.json.tucson
new file mode 100644
index 0000000..d1e47c8
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE56.json.tucson
@@ -0,0 +1,48 @@
+{
+"ports":{
+ "device:leaf1/56":{
+ "interfaces":[
+ {
+ "ips":[
+ "10.32.11.126/25"
+ ],
+ "vlan-untagged":111,
+ "name": "compute-1-1"
+ }
+ ]
+ },
+ "device:leaf2/56":{
+ "interfaces":[
+ {
+ "ips":[
+ "10.32.11.126/25"
+ ],
+ "vlan-untagged":111,
+ "name": "compute-1-2"
+ }
+ ]
+ },
+ "device:leaf1/40": {
+ "interfaces": [
+ {
+ "ips": [
+ "10.32.11.126/25"
+ ],
+ "vlan-untagged":120,
+ "name": "compute-2-1"
+ }
+ ]
+ },
+ "device:leaf2/40": {
+ "interfaces": [
+ {
+ "ips": [
+ "10.32.11.126/25"
+ ],
+ "vlan-untagged":120,
+ "name": "compute-2-2"
+ }
+ ]
+ }
+ }
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE66.json.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE66.json.tucson
new file mode 100644
index 0000000..615d33b
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE66.json.tucson
@@ -0,0 +1,48 @@
+{
+"ports":{
+ "device:leaf1/56":{
+ "interfaces":[
+ {
+ "ips":[
+ "10.32.11.126/25"
+ ],
+ "vlan-tagged":[111],
+ "name": "compute-1-1"
+ }
+ ]
+ },
+ "device:leaf2/56":{
+ "interfaces":[
+ {
+ "ips":[
+ "10.32.11.126/25"
+ ],
+ "vlan-tagged":[111],
+ "name": "compute-1-2"
+ }
+ ]
+ },
+ "device:leaf1/40": {
+ "interfaces": [
+ {
+ "ips": [
+ "10.32.11.126/25"
+ ],
+ "vlan-tagged":[120],
+ "name": "compute-2-1"
+ }
+ ]
+ },
+ "device:leaf2/40": {
+ "interfaces": [
+ {
+ "ips": [
+ "10.32.11.126/25"
+ ],
+ "vlan-tagged":[120],
+ "name": "compute-2-2"
+ }
+ ]
+ }
+ }
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE76.json.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE76.json.tucson
new file mode 100644
index 0000000..de1aa12
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE76.json.tucson
@@ -0,0 +1,48 @@
+{
+"ports":{
+ "device:leaf1/56":{
+ "interfaces":[
+ {
+ "ips":[
+ "10.32.11.126/25"
+ ],
+ "vlan-untagged":111,
+ "name": "compute-1-1"
+ }
+ ]
+ },
+ "device:leaf2/56":{
+ "interfaces":[
+ {
+ "ips":[
+ "10.32.11.126/25"
+ ],
+ "vlan-untagged":111,
+ "name": "compute-1-2"
+ }
+ ]
+ },
+ "device:leaf1/40": {
+ "interfaces": [
+ {
+ "ips": [
+ "10.32.11.126/25"
+ ],
+ "vlan-tagged":[120],
+ "name": "compute-2-1"
+ }
+ ]
+ },
+ "device:leaf2/40": {
+ "interfaces": [
+ {
+ "ips": [
+ "10.32.11.126/25"
+ ],
+ "vlan-tagged":[120],
+ "name": "compute-2-2"
+ }
+ ]
+ }
+ }
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py b/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
index 78be8ac..4ff3a85 100644
--- a/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
+++ b/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
@@ -75,7 +75,7 @@
main.configPath = main.path + ( "/.." if main.useCommonConf else "" ) + "/dependencies/"
main.bmv2Path = "/tools/dev/mininet/"
main.forJson = "json/"
- main.forcfg = "netcfg/"
+ # main.forcfg = "netcfg/"
main.forChart = "chart/"
main.forConfig = "conf/"
main.forHost = "host/"
@@ -217,7 +217,7 @@
@staticmethod
def loadNewJson( main, suffix='' ):
returnValue = main.TRUE
- with open( "%s%s.cfg%s" % ( main.configPath + main.forcfg,
+ with open( "%s%s.json%s" % ( main.configPath + main.forJson,
main.cfgName, suffix ) ) as cfg:
desiredJSON = json.load ( cfg )
for device in desiredJSON ["ports"].keys():
@@ -846,6 +846,8 @@
srcIface = hostComponent.interfaces[0].get( 'name' )
#Get host location, check netcfg for that port's ip
hostIp = hostComponent.getIPAddress( iface=srcIface )
+ if not hostIp:
+ hostIp=hostComponent.interfaces[0].get( 'ips' )[0]
main.log.warn( "Looking for allowed vlans for %s" % hostIp )
vlans = []
for obj in hostsJson:
@@ -863,11 +865,13 @@
# vlanid if vlan-tagged: vlanid
# None if vlan-native + any vlan ids from vlan-tagged
intf = netcfgJson[ portId ][ 'interfaces' ][0]
+ main.log.debug( intf )
for field in intf.keys():
if "vlan-untagged" in field:
vlans.append( None )
if "vlan-tagged" in field:
- vlans.append( int( intf[ field ].encode( 'utf-8' ) ) )
+ for VLAN in intf[ field ]:
+ vlans.append( VLAN )
if "vlan-native" in field:
vlans.append( None )
if len( vlans ) == 0: