Skip to content

Commit a26bce5

Browse files
committed
Pass network_id to device's del_network method
This allows devices which reference VLANs by name and not ID (such as Juniper Junos devices) to delete networks by name, which is their neutron ID. Change-Id: If1257fad47d05016dc59a8cfc60f5d2d22be420c
1 parent 43f00cd commit a26bce5

File tree

11 files changed

+38
-15
lines changed

11 files changed

+38
-15
lines changed

networking_generic_switch/devices/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ def add_network(self, segmentation_id, network_id):
8686
pass
8787

8888
@abc.abstractmethod
89-
def del_network(self, segmentation_id):
89+
def del_network(self, segmentation_id, network_id):
9090
pass
9191

9292
@abc.abstractmethod

networking_generic_switch/devices/netmiko_devices/__init__.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,14 +147,18 @@ def add_network(self, segmentation_id, network_id):
147147
segmentation_id=segmentation_id)
148148
self.send_commands_to_device(cmds)
149149

150-
def del_network(self, segmentation_id):
150+
def del_network(self, segmentation_id, network_id):
151+
# NOTE(zhenguo): Remove dashes from uuid as on most devices 32 chars
152+
# is the max length of vlan name.
153+
network_id = uuid.UUID(network_id).hex
151154
cmds = []
152155
for port in self._get_trunk_ports():
153156
cmds += self._format_commands(self.UNPLUG_TRUNK_PORT_FROM_NETWORK,
154157
port=port,
155158
segmentation_id=segmentation_id)
156159
cmds += self._format_commands(self.DELETE_NETWORK,
157-
segmentation_id=segmentation_id)
160+
segmentation_id=segmentation_id,
161+
network_id=network_id)
158162
self.send_commands_to_device(cmds)
159163

160164
def plug_port_to_network(self, port, segmentation_id):

networking_generic_switch/generic_switch_mech.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,13 @@ def delete_network_postcommit(self, context):
161161
# Delete vlan on all switches from this driver
162162
for switch_name, switch in self.switches.items():
163163
try:
164-
switch.del_network(segmentation_id)
164+
# NOTE(mgoddard): The del_network method was modified to
165+
# accept the network ID. The switch object may still be
166+
# implementing the old interface, so retry on a TypeError.
167+
try:
168+
switch.del_network(segmentation_id, network['id'])
169+
except TypeError:
170+
switch.del_network(segmentation_id)
165171
except Exception as e:
166172
LOG.error("Failed to delete network %(net_id)s "
167173
"on device: %(switch)s, reason: %(exc)s",

networking_generic_switch/tests/unit/netmiko/test_arista_eos.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def test_add_network(self, m_exec):
3737
@mock.patch('networking_generic_switch.devices.netmiko_devices.'
3838
'NetmikoSwitch.send_commands_to_device')
3939
def test_del_network(self, mock_exec):
40-
self.switch.del_network(33)
40+
self.switch.del_network(33, '0ae071f5-5be9-43e4-80ea-e41fefe85b21')
4141
mock_exec.assert_called_with(['no vlan 33'])
4242

4343
@mock.patch('networking_generic_switch.devices.netmiko_devices.'

networking_generic_switch/tests/unit/netmiko/test_brocade_fastiron.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def test_add_network(self, m_exec):
3939
@mock.patch('networking_generic_switch.devices.netmiko_devices.'
4040
'NetmikoSwitch.send_commands_to_device')
4141
def test_del_network(self, mock_exec):
42-
self.switch.del_network(33)
42+
self.switch.del_network(33, '0ae071f5-5be9-43e4-80ea-e41fefe85b21')
4343
mock_exec.assert_called_with(['no vlan 33'])
4444

4545
@mock.patch('networking_generic_switch.devices.netmiko_devices.'

networking_generic_switch/tests/unit/netmiko/test_cisco_ios.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def test_add_network(self, m_exec):
3737
@mock.patch('networking_generic_switch.devices.netmiko_devices.'
3838
'NetmikoSwitch.send_commands_to_device')
3939
def test_del_network(self, mock_exec):
40-
self.switch.del_network(33)
40+
self.switch.del_network(33, '0ae071f5-5be9-43e4-80ea-e41fefe85b21')
4141
mock_exec.assert_called_with(['no vlan 33'])
4242

4343
@mock.patch('networking_generic_switch.devices.netmiko_devices.'

networking_generic_switch/tests/unit/netmiko/test_dell.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,14 @@ def test_add_network_with_trunk_ports(self, mock_exec):
5050
@mock.patch('networking_generic_switch.devices.netmiko_devices.'
5151
'NetmikoSwitch.send_commands_to_device')
5252
def test_del_network(self, mock_exec):
53-
self.switch.del_network(33)
53+
self.switch.del_network(33, '0ae071f5-5be9-43e4-80ea-e41fefe85b21')
5454
mock_exec.assert_called_with(['no interface vlan 33', 'exit'])
5555

5656
@mock.patch('networking_generic_switch.devices.netmiko_devices.'
5757
'NetmikoSwitch.send_commands_to_device')
5858
def test_del_network_with_trunk_ports(self, mock_exec):
5959
switch = self._make_switch_device({'ngs_trunk_ports': 'port1,port2'})
60-
switch.del_network(33)
60+
switch.del_network(33, '0ae071f55be943e480eae41fefe85b21')
6161
mock_exec.assert_called_with(
6262
['interface vlan 33', 'no tagged port1', 'exit',
6363
'interface vlan 33', 'no tagged port2', 'exit',

networking_generic_switch/tests/unit/netmiko/test_huawei.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def test_add_network(self, m_exec):
3737
@mock.patch('networking_generic_switch.devices.netmiko_devices.'
3838
'NetmikoSwitch.send_commands_to_device')
3939
def test_del_network(self, mock_exec):
40-
self.switch.del_network(33)
40+
self.switch.del_network(33, '0ae071f5-5be9-43e4-80ea-e41fefe85b21')
4141
mock_exec.assert_called_with(
4242
['undo vlan 33'])
4343

networking_generic_switch/tests/unit/netmiko/test_netmiko_base.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,14 @@ def test_add_network_with_trunk_ports(self, m_sctd):
5656
@mock.patch('networking_generic_switch.devices.netmiko_devices.'
5757
'NetmikoSwitch.send_commands_to_device')
5858
def test_del_network(self, m_sctd):
59-
self.switch.del_network(22)
59+
self.switch.del_network(22, '0ae071f5-5be9-43e4-80ea-e41fefe85b21')
6060
m_sctd.assert_called_with([])
6161

6262
@mock.patch('networking_generic_switch.devices.netmiko_devices.'
6363
'NetmikoSwitch.send_commands_to_device')
6464
def test_del_network_with_trunk_ports(self, m_sctd):
6565
switch = self._make_switch_device({'ngs_trunk_ports': 'port1,port2'})
66-
switch.del_network(22)
66+
switch.del_network(22, '0ae071f5-5be9-43e4-80ea-e41fefe85b21')
6767
m_sctd.assert_called_with([])
6868

6969
@mock.patch('networking_generic_switch.devices.netmiko_devices.'

networking_generic_switch/tests/unit/netmiko/test_ovs_linux.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def test_add_network(self, m_exec):
3737
@mock.patch('networking_generic_switch.devices.netmiko_devices.'
3838
'NetmikoSwitch.send_commands_to_device')
3939
def test_del_network(self, mock_exec):
40-
self.switch.del_network(44)
40+
self.switch.del_network(44, '0ae071f5-5be9-43e4-80ea-e41fefe85b21')
4141
mock_exec.assert_called_with([])
4242

4343
@mock.patch('networking_generic_switch.devices.netmiko_devices.'

0 commit comments

Comments
 (0)