예제 #1
0
    def test_port_update_rpc_exception(self):
        port = self._build_aur_port()

        ovsvapp_agent.ports_dict[port['id']] = ovsvapp_agent.portInfo(
                                                  port['segmentation_id'],
                                                  port['mac_address'],
                                                  port['security_groups'],
                                                  port['fixed_ips'],
                                                  port['admin_state_up'],
                                                  port['network_id'],
                                                  port['device_id'])
        self.agent.tenant_network_type = 'vlan'
        self.agent.net_mgr = fake_manager.MockNetworkManager("callback")
        self.agent.net_mgr.initialize_driver()
        self.agent.state = "RUNNING"

        neutron_port = {'segmentation_id': port['segmentation_id'],
                        'port': {'id': port['id'],
                                 'mac_address': port['mac_address'],
                                 'security_groups': port['security_groups'],
                                 'fixed_ips': port['fixed_ips'],
                                 'admin_state_up': True,
                                 'network_id': port['network_id'],
                                 'device_id': port['device_id']}}

        with contextlib.nested(
            mock.patch.object(self.agent.plugin_rpc,
                              "update_device_up",
                              side_effect=Exception()),
            mock.patch.object(self.agent.plugin_rpc,
                              "update_device_down"),
            mock.patch.object(self.LOG, 'exception'),
            mock.patch.object(self.LOG, 'debug')
        ) as (device_up, device_down,
              log_exception, log_debug):

            self.assertRaises(
                error.NeutronAgentError,
                self.agent.port_update, self.agent.context, **neutron_port)
            self.assertEqual(
                ovsvapp_agent.ports_dict[port['id']].admin_state_up,
                neutron_port['port']['admin_state_up']
            )
            self.assertTrue(log_exception.called)
            self.assertTrue(device_up.called)
예제 #2
0
    def test_process_event_vm_delete_non_hosted_vm(self):
        self.agent.esx_hostname = 'realhost'
        self.agent.cluster_devices.add('fakevm')
        self.agent.cluster_other_ports.add('xxx')
        self.agent.tenant_network_type = p_const.TYPE_VLAN
        ovsvapp_agent.network_port_count['yyy'] = 1

        port = self._build_aur_port()
        ovsvapp_agent.ports_dict[port['id']] = ovsvapp_agent.portInfo(
                                                  port['segmentation_id'],
                                                  port['mac_address'],
                                                  port['security_groups'],
                                                  port['fixed_ips'],
                                                  port['admin_state_up'],
                                                  port['network_id'],
                                                  port['device_id'])

        vm_port = samplePortUIDMac("xxx", "01:02:03:04:05:06")

        vm = VM("fakevm", ([vm_port]))

        event = sampleEvent(model.EventType.VM_DELETED,
                            'fakehost', 'fakecluster', vm)
        self.assertIn(vm.uuid, self.agent.cluster_devices)
        for vnic in vm.vnics:
            self.assertIn(vnic.port_uuid, self.agent.cluster_other_ports)
            self.assertNotIn(vnic.port_uuid, self.agent.cluster_host_ports)
        self.agent.net_mgr = fake_manager.MockNetworkManager("callback")
        self.agent.net_mgr.initialize_driver()
        self.agent.state = "RUNNING"
        with contextlib.nested(
            mock.patch.object(self.agent.net_mgr.get_driver(),
                              "post_delete_vm",
                              return_value=True),
            mock.patch.object(self.agent.net_mgr.get_driver(),
                              "delete_network"),
        ) as (post_del_vm, del_net):
            self.agent.process_event(event)
            self.assertNotIn(vm.uuid, self.agent.cluster_devices)
            for vnic in vm.vnics:
                self.assertNotIn(vnic.port_uuid,
                                 self.agent.cluster_other_ports)
            self.assertTrue(post_del_vm.called)
            self.assertFalse(del_net.called)