def test_create_and_delete_network(self): tenant_id = 'ten-1' network_id = 'net1-id' segmentation_id = 1001 network_context = self._get_network_context(tenant_id, network_id, segmentation_id) self.drv.create_network_precommit(network_context) net_provisioned = db.is_network_provisioned(tenant_id, network_id) self.assertTrue(net_provisioned, 'The network should be created') expected_num_nets = 1 num_nets_provisioned = db.num_nets_provisioned(tenant_id) self.assertEqual(expected_num_nets, num_nets_provisioned, 'There should be %d nets, not %d' % (expected_num_nets, num_nets_provisioned)) #Now test the delete network self.drv.delete_network_precommit(network_context) net_provisioned = db.is_network_provisioned(tenant_id, network_id) self.assertFalse(net_provisioned, 'The network should be created') expected_num_nets = 0 num_nets_provisioned = db.num_nets_provisioned(tenant_id) self.assertEqual(expected_num_nets, num_nets_provisioned, 'There should be %d nets, not %d' % (expected_num_nets, num_nets_provisioned))
def test_create_and_delete_network(self): tenant_id = 'ten-1' network_id = 'net1-id' segmentation_id = 1001 network_context = self._get_network_context(tenant_id, network_id, segmentation_id) self.drv.create_network_precommit(network_context) net_provisioned = db.is_network_provisioned(tenant_id, network_id) self.assertTrue(net_provisioned, 'The network should be created') expected_num_nets = 1 num_nets_provisioned = db.num_nets_provisioned(tenant_id) self.assertEqual(expected_num_nets, num_nets_provisioned, 'There should be %d nets, not %d' % (expected_num_nets, num_nets_provisioned)) #Now test the delete network self.drv.delete_network_precommit(network_context) net_provisioned = db.is_network_provisioned(tenant_id, network_id) self.assertFalse(net_provisioned, 'The network should be created') expected_num_nets = 0 num_nets_provisioned = db.num_nets_provisioned(tenant_id) self.assertEqual(expected_num_nets, num_nets_provisioned, 'There should be %d nets, not %d' % (expected_num_nets, num_nets_provisioned))
def update_network_postcommit(self, context): """At the moment we only support network name change If network name is changed, a new network create request is sent to the Arista Hardware. """ new_network = context.current orig_network = context.original if new_network['name'] != orig_network['name']: network_id = new_network['id'] network_name = new_network['name'] tenant_id = new_network['tenant_id'] vlan_id = new_network['provider:segmentation_id'] with self.eos_sync_lock: if db.is_network_provisioned(tenant_id, network_id): try: network_dict = { 'network_id': network_id, 'segmentation_id': vlan_id, 'network_name': network_name } self.rpc.create_network(tenant_id, network_dict) except arista_exc.AristaRpcError: LOG.info(EOS_UNREACHABLE_MSG) raise ml2_exc.MechanismDriverError() else: msg = _('Network %s is not updated as it is not found in' 'Arista DB') % network_id LOG.info(msg)
def create_network_postcommit(self, context): """Provision the network on the Arista Hardware.""" network = context.current network_id = network['id'] network_name = network['name'] tenant_id = network['tenant_id'] segments = context.network_segments vlan_id = segments[0]['segmentation_id'] with self.eos_sync_lock: if db.is_network_provisioned(tenant_id, network_id): try: network_dict = { 'network_id': network_id, 'segmentation_id': vlan_id, 'network_name': network_name } self.rpc.create_network(tenant_id, network_dict) except arista_exc.AristaRpcError: LOG.info(EOS_UNREACHABLE_MSG) raise ml2_exc.MechanismDriverError() else: msg = _('Network %s is not created as it is not found in' 'Arista DB') % network_id LOG.info(msg)
def update_network_postcommit(self, context): """At the moment we only support network name change If network name is changed, a new network create request is sent to the Arista Hardware. """ new_network = context.current orig_network = context.original if new_network['name'] != orig_network['name']: network_id = new_network['id'] network_name = new_network['name'] tenant_id = new_network['tenant_id'] vlan_id = new_network['provider:segmentation_id'] with self.eos_sync_lock: if db.is_network_provisioned(tenant_id, network_id): try: self.rpc.create_network(tenant_id, network_id, network_name, vlan_id) except arista_exc.AristaRpcError: LOG.info(EOS_UNREACHABLE_MSG) raise ml2_exc.MechanismDriverError() else: msg = _('Network %s is not updated as it is not found in' 'Arista DB') % network_id LOG.info(msg)
def test_network_is_removed(self): tenant_id = 'test' network_id = '123' db.remember_network(tenant_id, network_id, '123') db.forget_network(tenant_id, network_id) net_provisioned = db.is_network_provisioned(tenant_id, network_id) self.assertFalse(net_provisioned, 'The network should be deleted')
def test_network_is_removed(self): tenant_id = 'test' network_id = '123' db.remember_network(tenant_id, network_id, '123') db.forget_network(tenant_id, network_id) net_provisioned = db.is_network_provisioned(tenant_id, network_id) self.assertFalse(net_provisioned, 'The network should be deleted')
def test_network_is_remembered(self): tenant_id = 'test' network_id = '123' segmentation_id = 456 db.remember_network(tenant_id, network_id, segmentation_id) net_provisioned = db.is_network_provisioned(tenant_id, network_id) self.assertTrue(net_provisioned, 'Network must be provisioned')
def test_network_is_removed(self): tenant_id = "test" network_id = "123" db.remember_network(tenant_id, network_id, "123") db.forget_network(tenant_id, network_id) net_provisioned = db.is_network_provisioned(tenant_id, network_id) self.assertFalse(net_provisioned, "The network should be deleted")
def test_network_is_remembered(self): tenant_id = "test" network_id = "123" segmentation_id = 456 db.remember_network(tenant_id, network_id, segmentation_id) net_provisioned = db.is_network_provisioned(tenant_id, network_id) self.assertTrue(net_provisioned, "Network must be provisioned")
def test_network_is_remembered(self): tenant_id = 'test' network_id = '123' segmentation_id = 456 db.remember_network(tenant_id, network_id, segmentation_id) net_provisioned = db.is_network_provisioned(tenant_id, network_id) self.assertTrue(net_provisioned, 'Network must be provisioned')
def delete_network_precommit(self, context): """Delete the network infromation from the DB.""" network = context.current network_id = network['id'] tenant_id = network['tenant_id'] with self.eos_sync_lock: if db.is_network_provisioned(tenant_id, network_id): db.forget_network(tenant_id, network_id) # if necessary, delete tenant as well. self.delete_tenant(tenant_id)
def delete_network_precommit(self, context): """Delete the network infromation from the DB.""" network = context.current network_id = network['id'] tenant_id = network['tenant_id'] with self.eos_sync_lock: if db.is_network_provisioned(tenant_id, network_id): db.forget_network(tenant_id, network_id) # if necessary, delete tenant as well. self.delete_tenant(tenant_id)
def update_port_postcommit(self, context): """Update the name of a given port in EOS. At the moment we only support port name change Any other change to port is not supported at this time. """ port = context.current orig_port = context.original if port['name'] == orig_port['name']: # nothing to do return device_id = port['device_id'] device_owner = port['device_owner'] host = port[portbindings.HOST_ID] is_vm_boot = device_id and device_owner if host and is_vm_boot: port_id = port['id'] port_name = port['name'] network_id = port['network_id'] tenant_id = port['tenant_id'] with self.eos_sync_lock: hostname = self._host_name(host) segmentation_id = db.get_segmentation_id(tenant_id, network_id) vm_provisioned = db.is_vm_provisioned(device_id, host, port_id, network_id, tenant_id) net_provisioned = db.is_network_provisioned(tenant_id, network_id, segmentation_id) if vm_provisioned and net_provisioned: try: self.rpc.plug_port_into_network(device_id, hostname, port_id, network_id, tenant_id, port_name, device_owner) except arista_exc.AristaRpcError: LOG.info(EOS_UNREACHABLE_MSG) raise ml2_exc.MechanismDriverError() else: msg = _('VM %s is not updated as it is not found in ' 'Arista DB') % device_id LOG.info(msg)
def update_port_postcommit(self, context): """At the moment we only support port name change Any other change to port is not supported at this time. """ port = context.current orig_port = context.original if port['name'] == orig_port['name']: # nothing to do return device_id = port['device_id'] device_owner = port['device_owner'] host = port['binding:host_id'] is_vm_boot = device_id and device_owner if host and is_vm_boot: port_id = port['id'] port_name = port['name'] network_id = port['network_id'] tenant_id = port['tenant_id'] with self.eos_sync_lock: hostname = self._host_name(host) segmentation_id = db.get_segmentation_id(tenant_id, network_id) vm_provisioned = db.is_vm_provisioned(device_id, host, port_id, network_id, tenant_id) net_provisioned = db.is_network_provisioned(tenant_id, network_id, segmentation_id) if vm_provisioned and net_provisioned: try: self.rpc.plug_port_into_network(device_id, hostname, port_id, network_id, tenant_id, port_name, device_owner) except arista_exc.AristaRpcError: LOG.info(EOS_UNREACHABLE_MSG) raise ml2_exc.MechanismDriverError() else: msg = _('VM %s is not updated as it is not found in ' 'Arista DB') % device_id LOG.info(msg)
def create_port_postcommit(self, context): """Plug a physical host into a network. Send provisioning request to Arista Hardware to plug a host into appropriate network. """ port = context.current device_id = port['device_id'] device_owner = port['device_owner'] # TODO(sukhdev) revisit this once port biniding support is implemented host = port['binding:host_id'] # device_id and device_owner are set on VM boot is_vm_boot = device_id and device_owner if host and is_vm_boot: port_id = port['id'] port_name = port['name'] network_id = port['network_id'] tenant_id = port['tenant_id'] with self.eos_sync_lock: hostname = self._host_name(host) segmentation_id = db.get_segmentation_id(tenant_id, network_id) vm_provisioned = db.is_vm_provisioned(device_id, host, port_id, network_id, tenant_id) net_provisioned = db.is_network_provisioned(tenant_id, network_id, segmentation_id) if vm_provisioned and net_provisioned: try: self.rpc.plug_host_into_network(device_id, hostname, port_id, network_id, tenant_id, port_name) except arista_exc.AristaRpcError: LOG.info(EOS_UNREACHABLE_MSG) raise ml2_exc.MechanismDriverError() else: msg = _('VM %s is not created as it is not found in' 'Arista DB') % device_id LOG.info(msg)
def create_port_postcommit(self, context): """Plug a physical host into a network. Send provisioning request to Arista Hardware to plug a host into appropriate network. """ port = context.current device_id = port['device_id'] device_owner = port['device_owner'] # TODO(sukhdev) revisit this once port biniding support is implemented host = port['binding:host_id'] # device_id and device_owner are set on VM boot is_vm_boot = device_id and device_owner if host and is_vm_boot: port_id = port['id'] port_name = port['name'] network_id = port['network_id'] tenant_id = port['tenant_id'] with self.eos_sync_lock: hostname = self._host_name(host) segmentation_id = db.get_segmentation_id(tenant_id, network_id) vm_provisioned = db.is_vm_provisioned(device_id, host, port_id, network_id, tenant_id) net_provisioned = db.is_network_provisioned(tenant_id, network_id, segmentation_id) if vm_provisioned and net_provisioned: try: self.rpc.plug_host_into_network(device_id, hostname, port_id, network_id, tenant_id, port_name) except arista_exc.AristaRpcError: LOG.info(EOS_UNREACHABLE_MSG) raise ml2_exc.MechanismDriverError() else: msg = _('VM %s is not created as it is not found in' 'Arista DB') % device_id LOG.info(msg)
def create_network_postcommit(self, context): """Provision the network on the Arista Hardware.""" network = context.current network_id = network['id'] network_name = network['name'] tenant_id = network['tenant_id'] segments = context.network_segments vlan_id = segments[0]['segmentation_id'] with self.eos_sync_lock: if db.is_network_provisioned(tenant_id, network_id): try: self.rpc.create_network(tenant_id, network_id, network_name, vlan_id) except arista_exc.AristaRpcError: LOG.info(EOS_UNREACHABLE_MSG) raise ml2_exc.MechanismDriverError() else: msg = _('Network %s is not created as it is not found in' 'Arista DB') % network_id LOG.info(msg)