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) self.assertFalse(brocade_db.get_ports(self.context))
def get_device_details(self, rpc_context, **kwargs): """Agent requests device details.""" agent_id = kwargs.get('agent_id') device = kwargs.get('device') LOG.debug("Device %(device)s details requested from %(agent_id)s", { 'device': device, 'agent_id': agent_id }) port = brocade_db.get_port(rpc_context, device[len(q_const.TAP_DEVICE_PREFIX):]) if port: entry = { 'device': device, 'vlan_id': port.vlan_id, 'network_id': port.network_id, 'port_id': port.port_id, 'physical_network': port.physical_interface, 'admin_state_up': port.admin_state_up } else: entry = {'device': device} LOG.debug("%s can not be found in database", device) return entry
def get_device_details(self, rpc_context, **kwargs): """Agent requests device details.""" agent_id = kwargs.get('agent_id') device = kwargs.get('device') LOG.debug("Device %(device)s details requested from %(agent_id)s", { 'device': device, 'agent_id': agent_id }) port = brocade_db.get_port(rpc_context, device[len(n_const.TAP_DEVICE_PREFIX):]) if port: entry = { 'device': device, 'vlan_id': port.vlan_id, 'network_id': port.network_id, 'port_id': port.port_id, 'physical_network': port.physical_interface, 'admin_state_up': port.admin_state_up } else: entry = {'device': device} LOG.debug("%s can not be found in database", device) return entry
def delete_port(self, context, port_id): with context.session.begin(subtransactions=True): neutron_port = self.get_port(context, port_id) interface_mac = neutron_port['mac_address'] # convert mac format: xx:xx:xx:xx:xx:xx -> xxxx.xxxx.xxxx mac = self.mac_reformat_62to34(interface_mac) brocade_port = brocade_db.get_port(context, port_id) vlan_id = brocade_port['vlan_id'] switch = self._switch try: self._driver.dissociate_mac_from_network( switch['address'], switch['username'], switch['password'], vlan_id, mac) except Exception: LOG.exception(_LE("Brocade NOS driver error")) raise Exception( _("Brocade plugin raised exception, check logs")) super(BrocadePluginV2, self).delete_port(context, port_id) brocade_db.delete_port(context, port_id)
def _notify_port_updated(self, context, port): port_id = port['id'] bport = brocade_db.get_port(context, port_id) self.notifier.port_update(context, port, bport.physical_interface, bport.vlan_id)