Ejemplo n.º 1
0
 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()
Ejemplo n.º 2
0
    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'])
Ejemplo n.º 3
0
 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()
Ejemplo n.º 4
0
    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'])
Ejemplo n.º 5
0
    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'])
Ejemplo n.º 6
0
    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'])