def test_create_next_port_rollback_vmnetwork_count(self): """Test whether VMNetwork count if port create fails on VSM.""" db_session = db.get_session() with self.port() as port: pt = port['port'] old_vmn = n1kv_db_v2.get_vm_network(db_session, pt['n1kv:profile_id'], pt['network_id']) client_patch = patch(n1kv_client.__name__ + ".Client", new=fake_client.TestClientInvalidResponse) client_patch.start() data = { 'port': { n1kv.PROFILE_ID: pt['n1kv:profile_id'], 'tenant_id': pt['tenant_id'], 'network_id': pt['network_id'] } } self.new_create_request('ports', data) new_vmn = n1kv_db_v2.get_vm_network(db_session, pt['n1kv:profile_id'], pt['network_id']) self.assertEqual(old_vmn.port_count, new_vmn.port_count) # Explicit stop of failure response mock from controller required # for network object clean up to succeed. client_patch.stop()
def _send_delete_port_request(self, context, id): """ Send delete port request to VSM. Decrement the port count of the VM network after deleting the port. If the port count reaches zero, delete the VM network. :param context: neutron api request context :param id: UUID of the port to be deleted """ LOG.debug(_('_send_delete_port_request: %s'), id) port = self.get_port(context, id) vm_network = n1kv_db_v2.get_vm_network(context.session, port[n1kv_profile.PROFILE_ID], port['network_id']) vm_network['port_count'] -= 1 n1kv_db_v2.update_vm_network_port_count(context.session, vm_network['name'], vm_network['port_count']) n1kvclient = n1kv_client.Client() n1kvclient.delete_n1kv_port(vm_network['name'], id) if vm_network['port_count'] == 0: n1kv_db_v2.delete_vm_network(context.session, port[n1kv_profile.PROFILE_ID], port['network_id']) n1kvclient.delete_vm_network(vm_network['name'])
def test_create_next_port_rollback_vmnetwork_count(self): """Test whether VMNetwork count if port create fails on VSM.""" db_session = db.get_session() with self.port() as port: pt = port['port'] old_vmn = n1kv_db_v2.get_vm_network(db_session, pt['n1kv:profile_id'], pt['network_id']) client_patch = mock.patch(n1kv_client.__name__ + ".Client", new=fake_client. TestClientInvalidResponse) client_patch.start() data = {'port': {n1kv.PROFILE_ID: pt['n1kv:profile_id'], 'tenant_id': pt['tenant_id'], 'network_id': pt['network_id']}} self.new_create_request('ports', data) new_vmn = n1kv_db_v2.get_vm_network(db_session, pt['n1kv:profile_id'], pt['network_id']) self.assertEqual(old_vmn.port_count, new_vmn.port_count) # Explicit stop of failure response mock from controller required # for network object clean up to succeed. client_patch.stop()
def _send_create_port_request(self, context, port): """ Send create port request to VSM. Create a VM network for a network and policy profile combination. If the VM network already exists, bind this port to the existing VM network and increment its port count. :param context: neutron api request context :param port: port dictionary """ LOG.debug(_('_send_create_port_request: %s'), port) try: vm_network = n1kv_db_v2.get_vm_network( context.session, port[n1kv_profile.PROFILE_ID], port['network_id']) except cisco_exceptions.VMNetworkNotFound: policy_profile = n1kv_db_v2.get_policy_profile( context.session, port[n1kv_profile.PROFILE_ID]) network = self.get_network(context, port['network_id']) vm_network_name = (c_const.VM_NETWORK_NAME_PREFIX + str(port[n1kv_profile.PROFILE_ID]) + "_" + str(port['network_id'])) port_count = 1 n1kv_db_v2.add_vm_network(context.session, vm_network_name, port[n1kv_profile.PROFILE_ID], port['network_id'], port_count) n1kvclient = n1kv_client.Client() n1kvclient.create_vm_network(port, vm_network_name, policy_profile, network['name']) n1kvclient.create_n1kv_port(port, vm_network_name) else: vm_network_name = vm_network['name'] n1kvclient = n1kv_client.Client() n1kvclient.create_n1kv_port(port, vm_network_name) vm_network['port_count'] += 1 n1kv_db_v2.update_vm_network_port_count( context.session, vm_network_name, vm_network['port_count'])
def _send_create_port_request(self, context, port): """ Send create port request to VSM. Create a VM network for a network and policy profile combination. If the VM network already exists, bind this port to the existing VM network and increment its port count. :param context: neutron api request context :param port: port dictionary """ LOG.debug(_('_send_create_port_request: %s'), port) try: vm_network = n1kv_db_v2.get_vm_network( context.session, port[n1kv_profile.PROFILE_ID], port['network_id']) except cisco_exceptions.VMNetworkNotFound: policy_profile = n1kv_db_v2.get_policy_profile( context.session, port[n1kv_profile.PROFILE_ID]) network = self.get_network(context, port['network_id']) vm_network_name = (c_const.VM_NETWORK_NAME_PREFIX + str(port[n1kv_profile.PROFILE_ID]) + "_" + str(port['network_id'])) port_count = 1 n1kv_db_v2.add_vm_network(context.session, vm_network_name, port[n1kv_profile.PROFILE_ID], port['network_id'], port_count) n1kvclient = n1kv_client.Client() n1kvclient.create_vm_network(port, vm_network_name, policy_profile, network['name']) n1kvclient.create_n1kv_port(port, vm_network_name) else: vm_network_name = vm_network['name'] n1kvclient = n1kv_client.Client() n1kvclient.create_n1kv_port(port, vm_network_name) vm_network['port_count'] += 1 n1kv_db_v2.update_vm_network_port_count(context.session, vm_network_name, vm_network['port_count'])
def _send_delete_port_request(self, context, id): """ Send delete port request to VSM. Decrement the port count of the VM network after deleting the port. If the port count reaches zero, delete the VM network. :param context: neutron api request context :param id: UUID of the port to be deleted """ LOG.debug(_('_send_delete_port_request: %s'), id) port = self.get_port(context, id) vm_network = n1kv_db_v2.get_vm_network(context.session, port[n1kv_profile.PROFILE_ID], port['network_id']) vm_network['port_count'] -= 1 n1kv_db_v2.update_vm_network_port_count( context.session, vm_network['name'], vm_network['port_count']) n1kvclient = n1kv_client.Client() n1kvclient.delete_n1kv_port(vm_network['name'], id) if vm_network['port_count'] == 0: n1kv_db_v2.delete_vm_network(context.session, port[n1kv_profile.PROFILE_ID], port['network_id']) n1kvclient.delete_vm_network(vm_network['name'])