示例#1
0
    def setUp(self):
        super(NotificationsTestCase, self).setUp()
        self.fixture = self.useFixture(o_fixture.ClearRequestContext())

        self.net_info = fake_network.fake_get_instance_nw_info(
            self.stubs, 1, 1)

        def fake_get_nw_info(cls, ctxt, instance):
            self.assertTrue(ctxt.is_admin)
            return self.net_info

        self.stubs.Set(network_api.API, 'get_instance_nw_info',
                       fake_get_nw_info)
        fake_network.set_stub_network_methods(self.stubs)

        fake_notifier.stub_notifier(self.stubs)
        self.addCleanup(fake_notifier.reset)

        self.flags(compute_driver='patron.virt.fake.FakeDriver',
                   network_manager='patron.network.manager.FlatManager',
                   notify_on_state_change="vm_and_task_state",
                   host='testhost')

        self.user_id = 'fake'
        self.project_id = 'fake'
        self.context = context.RequestContext(self.user_id, self.project_id)

        self.instance = self._wrapped_create()
示例#2
0
    def setUp(self):
        super(NotificationsTestCase, self).setUp()
        self.fixture = self.useFixture(o_fixture.ClearRequestContext())

        self.net_info = fake_network.fake_get_instance_nw_info(self.stubs, 1,
                                                               1)

        def fake_get_nw_info(cls, ctxt, instance):
            self.assertTrue(ctxt.is_admin)
            return self.net_info

        self.stubs.Set(network_api.API, 'get_instance_nw_info',
                fake_get_nw_info)
        fake_network.set_stub_network_methods(self.stubs)

        fake_notifier.stub_notifier(self.stubs)
        self.addCleanup(fake_notifier.reset)

        self.flags(compute_driver='patron.virt.fake.FakeDriver',
                   network_manager='patron.network.manager.FlatManager',
                   notify_on_state_change="vm_and_task_state",
                   host='testhost')

        self.user_id = 'fake'
        self.project_id = 'fake'
        self.context = context.RequestContext(self.user_id, self.project_id)

        self.instance = self._wrapped_create()
示例#3
0
 def test_local_ipv4_from_nw_info(self):
     nw_info = fake_network.fake_get_instance_nw_info(self.stubs,
                                                      num_networks=2)
     expected_local = "192.168.1.100"
     md = fake_InstanceMetadata(self.stubs, self.instance,
                                network_info=nw_info)
     data = md.get_ec2_metadata(version='2009-04-04')
     self.assertEqual(data['meta-data']['local-ipv4'], expected_local)
示例#4
0
    def test_confirm_migration(self):
        self._instance = self._get_instance()
        network_info = fake_network.fake_get_instance_nw_info(self.stubs)

        pathutils.PathUtils.get_instance_migr_revert_dir(self._instance.name,
                                                         remove_dir=True)
        self._mox.ReplayAll()
        self._conn.confirm_migration(None, self._instance, network_info)
        self._mox.VerifyAll()
示例#5
0
    def _test_finish_revert_migration(self, power_on, ephemeral_storage=False,
                                      config_drive=False,
                                      config_drive_format='iso'):
        self._instance = self._get_instance()
        self._instance.memory_mb = 100
        self._instance.vcpus = 2
        self._instance['system_metadata'] = {}
        network_info = fake_network.fake_get_instance_nw_info(self.stubs)

        fake_revert_path = ('C:\\FakeInstancesPath\\%s\\_revert' %
                            self._instance.name)

        m = fake.PathUtils.get_instance_dir(mox.IsA(str),
                                            create_dir=False,
                                            remove_dir=True)
        m.AndReturn(self._test_instance_dir)

        m = pathutils.PathUtils.get_instance_migr_revert_dir(
            self._instance.name)
        m.AndReturn(fake_revert_path)
        fake.PathUtils.rename(fake_revert_path, mox.IsA(str))

        m = fake.PathUtils.get_instance_dir(mox.IsA(str))
        m.AndReturn(self._test_instance_dir)

        m = fake.PathUtils.get_instance_dir(mox.IsA(str))
        if ephemeral_storage:
            m.AndReturn(self._test_instance_dir)
        else:
            m.AndReturn(None)

        m = imagecache.ImageCache.get_image_details(mox.IsA(object),
                                                    mox.IsA(object))
        m.AndReturn({'properties': {constants.IMAGE_PROP_VM_GEN:
                                    constants.IMAGE_PROP_VM_GEN_1}})

        self._set_vm_name(self._instance.name)
        self._setup_create_instance_mocks(None, False,
                                          ephemeral_storage=ephemeral_storage)

        if power_on:
            vmutils.VMUtils.set_vm_state(mox.Func(self._check_instance_name),
                                         constants.HYPERV_VM_STATE_ENABLED)
            self._setup_log_vm_output_mocks()

        if config_drive:
            self._mock_attach_config_drive(self._instance, config_drive_format)

        self._mox.ReplayAll()
        self._conn.finish_revert_migration(self._context, self._instance,
                                           network_info, None,
                                           power_on)
        self._mox.VerifyAll()

        if config_drive:
            self._verify_attach_config_drive(config_drive_format)
示例#6
0
    def test_confirm_migration(self):
        self._instance = self._get_instance()
        network_info = fake_network.fake_get_instance_nw_info(self.stubs)

        pathutils.PathUtils.get_instance_migr_revert_dir(
            self._instance.name,
            remove_dir=True)
        self._mox.ReplayAll()
        self._conn.confirm_migration(None, self._instance, network_info)
        self._mox.VerifyAll()
示例#7
0
    def _spawn_instance(self, cow, block_device_info=None,
                        ephemeral_storage=False):
        self.flags(use_cow_images=cow)

        self._instance_data = self._get_instance_data()
        instance = db.instance_create(self._context, self._instance_data)
        instance['system_metadata'] = {}

        if ephemeral_storage:
            instance['ephemeral_gb'] = 1

        image = db_fakes.get_fake_image_data(self._project_id, self._user_id)

        network_info = fake_network.fake_get_instance_nw_info(self.stubs)

        self._conn.spawn(self._context, instance, image,
                         injected_files=[], admin_password=None,
                         network_info=network_info,
                         block_device_info=block_device_info)
示例#8
0
    def _spawn_instance(self,
                        cow,
                        block_device_info=None,
                        ephemeral_storage=False):
        self.flags(use_cow_images=cow)

        self._instance_data = self._get_instance_data()
        instance = db.instance_create(self._context, self._instance_data)
        instance['system_metadata'] = {}

        if ephemeral_storage:
            instance['ephemeral_gb'] = 1

        image = db_fakes.get_fake_image_data(self._project_id, self._user_id)

        network_info = fake_network.fake_get_instance_nw_info(self.stubs)

        self._conn.spawn(self._context,
                         instance,
                         image,
                         injected_files=[],
                         admin_password=None,
                         network_info=network_info,
                         block_device_info=block_device_info)
示例#9
0
 def get_nw_info_for_instance(instance):
     return fake_network.fake_get_instance_nw_info(stubs)
示例#10
0
    def _test_finish_migration(self,
                               power_on,
                               ephemeral_storage=False,
                               config_drive=False,
                               config_drive_format='iso'):
        self._instance = self._get_instance()
        self._instance.memory_mb = 100
        self._instance.vcpus = 2
        self._instance['system_metadata'] = {}
        self._instance['old_flavor'] = objects.Flavor(root_gb=5)
        network_info = fake_network.fake_get_instance_nw_info(self.stubs)

        m = fake.PathUtils.get_instance_dir(mox.IsA(str))
        m.AndReturn(self._test_instance_dir)

        self._mox.StubOutWithMock(fake.PathUtils, 'exists')
        m = fake.PathUtils.exists(mox.IsA(unicode))
        m.AndReturn(True)

        fake_parent_vhd_path = (os.path.join(
            'FakeParentPath', '%s.vhd' % self._instance["image_ref"]))

        m = vhdutils.VHDUtils.get_vhd_info(mox.IsA(str))
        m.AndReturn({'ParentPath': fake_parent_vhd_path, 'MaxInternalSize': 1})
        m = vhdutils.VHDUtils.get_internal_vhd_size_by_file_size(
            mox.IsA(unicode), mox.IsA(object))
        m.AndReturn(1025)

        vhdutils.VHDUtils.reconnect_parent_vhd(mox.IsA(str), mox.IsA(unicode))

        m = vhdutils.VHDUtils.get_vhd_info(mox.IsA(unicode))
        m.AndReturn({'MaxInternalSize': 1024})

        m = fake.PathUtils.exists(mox.IsA(unicode))
        m.AndReturn(True)

        m = fake.PathUtils.get_instance_dir(mox.IsA(str))
        if ephemeral_storage:
            return m.AndReturn(self._test_instance_dir)
        else:
            m.AndReturn(None)

        self._set_vm_name(self._instance.name)
        self._setup_create_instance_mocks(None,
                                          False,
                                          ephemeral_storage=ephemeral_storage)

        if power_on:
            vmutils.VMUtils.set_vm_state(mox.Func(self._check_instance_name),
                                         constants.HYPERV_VM_STATE_ENABLED)
            self._setup_log_vm_output_mocks()

        if config_drive:
            self._mock_attach_config_drive(self._instance, config_drive_format)

        self._mox.ReplayAll()

        image_meta = {
            'properties': {
                constants.IMAGE_PROP_VM_GEN: constants.IMAGE_PROP_VM_GEN_1
            }
        }
        self._conn.finish_migration(self._context, None, self._instance, "",
                                    network_info, image_meta, False, None,
                                    power_on)
        self._mox.VerifyAll()

        if config_drive:
            self._verify_attach_config_drive(config_drive_format)
示例#11
0
    def _setup_test_migrate_disk_and_power_off_mocks(self,
                                                     same_host=False,
                                                     copy_exception=False,
                                                     size_exception=False):
        self._instance = self._get_instance()
        network_info = fake_network.fake_get_instance_nw_info(self.stubs)

        self._instance['root_gb'] = 10

        fake_local_ip = '10.0.0.1'
        if same_host:
            fake_dest_ip = fake_local_ip
        else:
            fake_dest_ip = '10.0.0.2'

        if size_exception:
            flavor = 'm1.tiny'
        else:
            flavor = 'm1.small'

        flavor = db.flavor_get_by_name(self._context, flavor)

        if not size_exception:
            fake_root_vhd_path = 'C:\\FakePath\\root.vhd'
            fake_revert_path = os.path.join(self._test_instance_dir, '_revert')

            func = mox.Func(self._check_instance_name)
            vmutils.VMUtils.set_vm_state(func,
                                         constants.HYPERV_VM_STATE_DISABLED)

            self._setup_delete_vm_log_mocks()

            m = vmutils.VMUtils.get_vm_storage_paths(func)
            m.AndReturn(([fake_root_vhd_path], []))

            m = hostutils.HostUtils.get_local_ips()
            m.AndReturn([fake_local_ip])

            m = fake.PathUtils.get_instance_dir(mox.IsA(str))
            m.AndReturn(self._test_instance_dir)

            m = pathutils.PathUtils.get_instance_migr_revert_dir(
                self._instance.name, remove_dir=True)
            m.AndReturn(fake_revert_path)

            if same_host:
                fake.PathUtils.makedirs(mox.IsA(str))

            m = fake.PathUtils.copy(fake_root_vhd_path, mox.IsA(str))
            if copy_exception:
                m.AndRaise(shutil.Error('Simulated copy error'))
                m = fake.PathUtils.get_instance_dir(mox.IsA(str),
                                                    mox.IsA(str),
                                                    remove_dir=True)
                m.AndReturn(self._test_instance_dir)
            else:
                fake.PathUtils.rename(mox.IsA(str), mox.IsA(str))
                destroy_disks = True
                if same_host:
                    fake.PathUtils.rename(mox.IsA(str), mox.IsA(str))
                    destroy_disks = False

                self._setup_destroy_mocks(False)

                if destroy_disks:
                    m = fake.PathUtils.get_instance_dir(mox.IsA(str),
                                                        mox.IsA(str),
                                                        remove_dir=True)
                    m.AndReturn(self._test_instance_dir)

        return (self._instance, fake_dest_ip, network_info, flavor)
示例#12
0
    def _test_finish_revert_migration(self,
                                      power_on,
                                      ephemeral_storage=False,
                                      config_drive=False,
                                      config_drive_format='iso'):
        self._instance = self._get_instance()
        self._instance.memory_mb = 100
        self._instance.vcpus = 2
        self._instance['system_metadata'] = {}
        network_info = fake_network.fake_get_instance_nw_info(self.stubs)

        fake_revert_path = ('C:\\FakeInstancesPath\\%s\\_revert' %
                            self._instance.name)

        m = fake.PathUtils.get_instance_dir(mox.IsA(str),
                                            create_dir=False,
                                            remove_dir=True)
        m.AndReturn(self._test_instance_dir)

        m = pathutils.PathUtils.get_instance_migr_revert_dir(
            self._instance.name)
        m.AndReturn(fake_revert_path)
        fake.PathUtils.rename(fake_revert_path, mox.IsA(str))

        m = fake.PathUtils.get_instance_dir(mox.IsA(str))
        m.AndReturn(self._test_instance_dir)

        m = fake.PathUtils.get_instance_dir(mox.IsA(str))
        if ephemeral_storage:
            m.AndReturn(self._test_instance_dir)
        else:
            m.AndReturn(None)

        m = imagecache.ImageCache.get_image_details(mox.IsA(object),
                                                    mox.IsA(object))
        m.AndReturn({
            'properties': {
                constants.IMAGE_PROP_VM_GEN: constants.IMAGE_PROP_VM_GEN_1
            }
        })

        self._set_vm_name(self._instance.name)
        self._setup_create_instance_mocks(None,
                                          False,
                                          ephemeral_storage=ephemeral_storage)

        if power_on:
            vmutils.VMUtils.set_vm_state(mox.Func(self._check_instance_name),
                                         constants.HYPERV_VM_STATE_ENABLED)
            self._setup_log_vm_output_mocks()

        if config_drive:
            self._mock_attach_config_drive(self._instance, config_drive_format)

        self._mox.ReplayAll()
        self._conn.finish_revert_migration(self._context, self._instance,
                                           network_info, None, power_on)
        self._mox.VerifyAll()

        if config_drive:
            self._verify_attach_config_drive(config_drive_format)
示例#13
0
 def get_nw_info_for_instance(instance):
     return fake_network.fake_get_instance_nw_info(stubs)
示例#14
0
 def fake_get_nw_info(cls, ctxt, instance):
     self.assertTrue(ctxt.is_admin)
     return fake_network.fake_get_instance_nw_info(self.stubs, 1, 1)
示例#15
0
    def _test_finish_migration(self, power_on, ephemeral_storage=False,
                               config_drive=False,
                               config_drive_format='iso'):
        self._instance = self._get_instance()
        self._instance.memory_mb = 100
        self._instance.vcpus = 2
        self._instance['system_metadata'] = {}
        self._instance['old_flavor'] = objects.Flavor(root_gb=5)
        network_info = fake_network.fake_get_instance_nw_info(self.stubs)

        m = fake.PathUtils.get_instance_dir(mox.IsA(str))
        m.AndReturn(self._test_instance_dir)

        self._mox.StubOutWithMock(fake.PathUtils, 'exists')
        m = fake.PathUtils.exists(mox.IsA(unicode))
        m.AndReturn(True)

        fake_parent_vhd_path = (os.path.join('FakeParentPath', '%s.vhd' %
                                self._instance["image_ref"]))

        m = vhdutils.VHDUtils.get_vhd_info(mox.IsA(str))
        m.AndReturn({'ParentPath': fake_parent_vhd_path,
                     'MaxInternalSize': 1})
        m = vhdutils.VHDUtils.get_internal_vhd_size_by_file_size(
            mox.IsA(unicode), mox.IsA(object))
        m.AndReturn(1025)

        vhdutils.VHDUtils.reconnect_parent_vhd(mox.IsA(str), mox.IsA(unicode))

        m = vhdutils.VHDUtils.get_vhd_info(mox.IsA(unicode))
        m.AndReturn({'MaxInternalSize': 1024})

        m = fake.PathUtils.exists(mox.IsA(unicode))
        m.AndReturn(True)

        m = fake.PathUtils.get_instance_dir(mox.IsA(str))
        if ephemeral_storage:
            return m.AndReturn(self._test_instance_dir)
        else:
            m.AndReturn(None)

        self._set_vm_name(self._instance.name)
        self._setup_create_instance_mocks(None, False,
                                          ephemeral_storage=ephemeral_storage)

        if power_on:
            vmutils.VMUtils.set_vm_state(mox.Func(self._check_instance_name),
                                         constants.HYPERV_VM_STATE_ENABLED)
            self._setup_log_vm_output_mocks()

        if config_drive:
            self._mock_attach_config_drive(self._instance,
                                           config_drive_format)

        self._mox.ReplayAll()

        image_meta = {'properties': {constants.IMAGE_PROP_VM_GEN:
                                     constants.IMAGE_PROP_VM_GEN_1}}
        self._conn.finish_migration(self._context, None,
                                    self._instance, "",
                                    network_info, image_meta, False, None,
                                    power_on)
        self._mox.VerifyAll()

        if config_drive:
            self._verify_attach_config_drive(config_drive_format)
示例#16
0
    def _setup_test_migrate_disk_and_power_off_mocks(self, same_host=False,
                                                     copy_exception=False,
                                                     size_exception=False):
        self._instance = self._get_instance()
        network_info = fake_network.fake_get_instance_nw_info(self.stubs)

        self._instance['root_gb'] = 10

        fake_local_ip = '10.0.0.1'
        if same_host:
            fake_dest_ip = fake_local_ip
        else:
            fake_dest_ip = '10.0.0.2'

        if size_exception:
            flavor = 'm1.tiny'
        else:
            flavor = 'm1.small'

        flavor = db.flavor_get_by_name(self._context, flavor)

        if not size_exception:
            fake_root_vhd_path = 'C:\\FakePath\\root.vhd'
            fake_revert_path = os.path.join(self._test_instance_dir, '_revert')

            func = mox.Func(self._check_instance_name)
            vmutils.VMUtils.set_vm_state(func,
                                         constants.HYPERV_VM_STATE_DISABLED)

            self._setup_delete_vm_log_mocks()

            m = vmutils.VMUtils.get_vm_storage_paths(func)
            m.AndReturn(([fake_root_vhd_path], []))

            m = hostutils.HostUtils.get_local_ips()
            m.AndReturn([fake_local_ip])

            m = fake.PathUtils.get_instance_dir(mox.IsA(str))
            m.AndReturn(self._test_instance_dir)

            m = pathutils.PathUtils.get_instance_migr_revert_dir(
                self._instance.name, remove_dir=True)
            m.AndReturn(fake_revert_path)

            if same_host:
                fake.PathUtils.makedirs(mox.IsA(str))

            m = fake.PathUtils.copy(fake_root_vhd_path, mox.IsA(str))
            if copy_exception:
                m.AndRaise(shutil.Error('Simulated copy error'))
                m = fake.PathUtils.get_instance_dir(mox.IsA(str),
                                                    mox.IsA(str),
                                                    remove_dir=True)
                m.AndReturn(self._test_instance_dir)
            else:
                fake.PathUtils.rename(mox.IsA(str), mox.IsA(str))
                destroy_disks = True
                if same_host:
                    fake.PathUtils.rename(mox.IsA(str), mox.IsA(str))
                    destroy_disks = False

                self._setup_destroy_mocks(False)

                if destroy_disks:
                    m = fake.PathUtils.get_instance_dir(mox.IsA(str),
                                                        mox.IsA(str),
                                                        remove_dir=True)
                    m.AndReturn(self._test_instance_dir)

        return (self._instance, fake_dest_ip, network_info, flavor)