def test_create_port(self): """Test brocade specific port db.""" net_id = str(uuid.uuid4()) port_id = str(uuid.uuid4()) # port_id is truncated: since the linux-bridge tap device names are # based on truncated port id, this enables port lookups using # tap devices port_id = port_id[0:11] tenant_id = str(uuid.uuid4()) admin_state_up = True # Create Port # To create a port a network must exists, Create a network self.context = context.get_admin_context() brocade_db.create_network(self.context, net_id, TEST_VLAN) physical_interface = "em1" brocade_db.create_port(self.context, port_id, net_id, physical_interface, TEST_VLAN, tenant_id, admin_state_up) port = brocade_db.get_port(self.context, port_id) self.assertEqual(port['port_id'], port_id) self.assertEqual(port['network_id'], net_id) self.assertEqual(port['physical_interface'], physical_interface) self.assertEqual(int(port['vlan_id']), TEST_VLAN) self.assertEqual(port['tenant_id'], tenant_id) self.assertEqual(port['admin_state_up'], admin_state_up) admin_state_up = True brocade_db.update_port_state(self.context, port_id, admin_state_up) port = brocade_db.get_port(self.context, port_id) self.assertEqual(port['admin_state_up'], admin_state_up) admin_state_up = False brocade_db.update_port_state(self.context, port_id, admin_state_up) port = brocade_db.get_port(self.context, port_id) self.assertEqual(port['admin_state_up'], admin_state_up) admin_state_up = True brocade_db.update_port_state(self.context, port_id, admin_state_up) port = brocade_db.get_port(self.context, port_id) self.assertEqual(port['admin_state_up'], admin_state_up) # Delete Port brocade_db.delete_port(self.context, port_id)
def delete_network(self, context, net_id): """Delete network. This call to delete the network translates to removing the port-profile on the physical switch. """ with context.session.begin(subtransactions=True): result = super(BrocadePluginV2, self).delete_network(context, net_id) # we must delete all ports in db first (foreign key constraint) # there is no need to delete port in the driver (its a no-op) # (actually: note there is no such call to the driver) bports = brocade_db.get_ports(context, net_id) for bport in bports: brocade_db.delete_port(context, bport['port_id']) # find the vlan for this network net = brocade_db.get_network(context, net_id) vlan_id = net['vlan'] # Tell hw to do remove PP switch = self._switch try: self._driver.delete_network(switch['address'], switch['username'], switch['password'], net_id) except Exception as e: # Proper formatting LOG.warning(_("Brocade NOS driver:")) LOG.warning(_("%s"), e) raise Exception("Brocade plugin raised exception, check logs") # now ok to delete the network brocade_db.delete_network(context, net_id) # relinquish vlan in bitmap self._vlan_bitmap.release_vlan(int(vlan_id)) return result
def delete_port(self, context, port_id): with context.session.begin(subtransactions=True): super(BrocadePluginV2, self).delete_port(context, port_id) brocade_db.delete_port(context, port_id)