Ejemplo n.º 1
0
 def _sync_flavor(self, ctx, flavor, extra_specs):
     """
     Insert the flavor with extra specs if not in local database
     """
     flavor_name = self.prefix + flavor.name
     try:
         db.flavor_get_by_name(ctx, flavor_name)
     except exception.FlavorNotFoundByName:
         self._insert_pvc_flavor_extraspecs(ctx, flavor, extra_specs)
 def test_instance_type_get_by_name_with_extra_specs(self):
     instance_type = db.flavor_get_by_name(
                         self.context,
                         "cg1.4xlarge")
     self.assertEqual(instance_type['extra_specs'],
                      self.specs)
     instance_type = db.flavor_get_by_name(
                         self.context,
                         "m1.small")
     self.assertEqual(instance_type['extra_specs'], {})
Ejemplo n.º 3
0
 def test_instance_type_get_by_name_with_extra_specs(self):
     instance_type = db.flavor_get_by_name(
                         self.context,
                         "cg1.4xlarge")
     self.assertEqual(instance_type['extra_specs'],
                      self.specs)
     instance_type = db.flavor_get_by_name(
                         self.context,
                         "m1.small")
     self.assertEqual(instance_type['extra_specs'], {})
Ejemplo n.º 4
0
    def test_instance_type_get_by_name_with_extra_specs(self):
        instance_type = db.flavor_get_by_name(self.context, "cg1.4xlarge")
        self.assertEquals(
            instance_type['extra_specs'],
            dict(cpu_arch="x86_64",
                 cpu_model="Nehalem",
                 xpu_arch="fermi",
                 xpus="2",
                 xpu_model="Tesla 2050"))

        instance_type = db.flavor_get_by_name(self.context, "m1.small")
        self.assertEquals(instance_type['extra_specs'], {})
    def test_instance_type_get_by_name_with_extra_specs(self):
        instance_type = db.flavor_get_by_name(
                            self.context,
                            "cg1.4xlarge")
        self.assertEquals(instance_type['extra_specs'],
                          dict(cpu_arch="x86_64",
                               cpu_model="Nehalem",
                               xpu_arch="fermi",
                               xpus="2",
                               xpu_model="Tesla 2050"))

        instance_type = db.flavor_get_by_name(
                            self.context,
                            "m1.small")
        self.assertEquals(instance_type['extra_specs'], {})
Ejemplo n.º 6
0
 def test_spawn_attach_volume_vmdk(self):
     self._create_instance_in_the_db()
     self.type_data = db.flavor_get_by_name(None, 'm1.large')
     self.mox.StubOutWithMock(block_device, 'volume_in_mapping')
     self.mox.StubOutWithMock(v_driver, 'block_device_info_get_mapping')
     ebs_root = 'fake_root'
     block_device.volume_in_mapping(mox.IgnoreArg(),
             mox.IgnoreArg()).AndReturn(ebs_root)
     connection_info = self._test_vmdk_connection_info('vmdk')
     root_disk = [{'connection_info': connection_info}]
     v_driver.block_device_info_get_mapping(
             mox.IgnoreArg()).AndReturn(root_disk)
     mount_point = '/dev/vdc'
     self.mox.StubOutWithMock(volumeops.VMwareVolumeOps,
                              '_get_res_pool_of_vm')
     volumeops.VMwareVolumeOps._get_res_pool_of_vm(
              mox.IgnoreArg()).AndReturn('fake_res_pool')
     self.mox.StubOutWithMock(volumeops.VMwareVolumeOps,
                              '_relocate_vmdk_volume')
     volumeops.VMwareVolumeOps._relocate_vmdk_volume(mox.IgnoreArg(),
              'fake_res_pool', mox.IgnoreArg())
     self.mox.StubOutWithMock(volumeops.VMwareVolumeOps,
                              'attach_volume')
     volumeops.VMwareVolumeOps.attach_volume(connection_info,
             self.instance, mox.IgnoreArg())
     self.mox.ReplayAll()
     self.conn.spawn(self.context, self.instance, self.image,
                     injected_files=[], admin_password=None,
                     network_info=self.network_info,
                     block_device_info=None)
Ejemplo n.º 7
0
 def test_spawn_attach_volume_vmdk(self):
     self._create_instance_in_the_db()
     self.type_data = db.flavor_get_by_name(None, 'm1.large')
     self.mox.StubOutWithMock(block_device, 'volume_in_mapping')
     self.mox.StubOutWithMock(v_driver, 'block_device_info_get_mapping')
     ebs_root = 'fake_root'
     block_device.volume_in_mapping(mox.IgnoreArg(),
             mox.IgnoreArg()).AndReturn(ebs_root)
     connection_info = self._test_vmdk_connection_info('vmdk')
     root_disk = [{'connection_info': connection_info}]
     v_driver.block_device_info_get_mapping(
             mox.IgnoreArg()).AndReturn(root_disk)
     mount_point = '/dev/vdc'
     self.mox.StubOutWithMock(volumeops.VMwareVolumeOps,
                              '_get_res_pool_of_vm')
     volumeops.VMwareVolumeOps._get_res_pool_of_vm(
              mox.IgnoreArg()).AndReturn('fake_res_pool')
     self.mox.StubOutWithMock(volumeops.VMwareVolumeOps,
                              '_relocate_vmdk_volume')
     volumeops.VMwareVolumeOps._relocate_vmdk_volume(mox.IgnoreArg(),
              'fake_res_pool', mox.IgnoreArg())
     self.mox.StubOutWithMock(volumeops.VMwareVolumeOps,
                              'attach_volume')
     volumeops.VMwareVolumeOps.attach_volume(connection_info,
             self.instance, mox.IgnoreArg())
     self.mox.ReplayAll()
     self.conn.spawn(self.context, self.instance, self.image,
                     injected_files=[], admin_password=None,
                     network_info=self.network_info,
                     block_device_info=None)
Ejemplo n.º 8
0
 def test_spawn_attach_volume_vmdk(self):
     self._create_instance_in_the_db()
     self.type_data = db.flavor_get_by_name(None, "m1.large")
     self.mox.StubOutWithMock(block_device, "volume_in_mapping")
     self.mox.StubOutWithMock(v_driver, "block_device_info_get_mapping")
     ebs_root = "fake_root"
     block_device.volume_in_mapping(mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(ebs_root)
     connection_info = self._test_vmdk_connection_info("vmdk")
     root_disk = [{"connection_info": connection_info}]
     v_driver.block_device_info_get_mapping(mox.IgnoreArg()).AndReturn(root_disk)
     mount_point = "/dev/vdc"
     self.mox.StubOutWithMock(volumeops.VMwareVolumeOps, "_get_volume_uuid")
     volumeops.VMwareVolumeOps._get_volume_uuid(mox.IgnoreArg(), "volume-fake-id").AndReturn("fake_disk_uuid")
     self.mox.StubOutWithMock(vm_util, "get_vmdk_backed_disk_device")
     vm_util.get_vmdk_backed_disk_device(mox.IgnoreArg(), "fake_disk_uuid").AndReturn("fake_device")
     self.mox.StubOutWithMock(volumeops.VMwareVolumeOps, "_consolidate_vmdk_volume")
     volumeops.VMwareVolumeOps._consolidate_vmdk_volume(
         self.instance, mox.IgnoreArg(), "fake_device", mox.IgnoreArg()
     )
     self.mox.StubOutWithMock(volumeops.VMwareVolumeOps, "attach_volume")
     volumeops.VMwareVolumeOps.attach_volume(connection_info, self.instance, mox.IgnoreArg())
     self.mox.ReplayAll()
     self.conn.spawn(
         self.context,
         self.instance,
         self.image,
         injected_files=[],
         admin_password=None,
         network_info=self.network_info,
         block_device_info=None,
     )
Ejemplo n.º 9
0
 def get_by_name(cls, context, name):
     try:
         db_flavor = cls._flavor_get_by_name_from_db(context, name)
     except exception.FlavorNotFoundByName:
         db_flavor = db.flavor_get_by_name(context, name)
     return cls._from_db_object(context, cls(context), db_flavor,
                                expected_attrs=['extra_specs'])
Ejemplo n.º 10
0
Archivo: flavor.py Proyecto: sapcc/nova
 def get_by_name(cls, context, name):
     try:
         db_flavor = cls._flavor_get_by_name_from_db(context, name)
     except exception.FlavorNotFoundByName:
         db_flavor = db.flavor_get_by_name(context, name)
     return cls._from_db_object(context, cls(context), db_flavor,
                                expected_attrs=['extra_specs'])
Ejemplo n.º 11
0
 def _create_vm(self):
     """Create and spawn the VM."""
     self._create_instance_in_the_db()
     self.type_data = db.flavor_get_by_name(None, 'm1.large')
     self.conn.spawn(self.context, self.instance, self.image,
                     injected_files=[], admin_password=None,
                     network_info=self.network_info,
                     block_device_info=None)
     self._check_vm_record()
Ejemplo n.º 12
0
def get_flavor_by_name(name, ctxt=None):
    """Retrieves single flavor by name."""
    if name is None:
        return get_default_flavor()

    if ctxt is None:
        ctxt = context.get_admin_context()

    return db.flavor_get_by_name(ctxt, name)
Ejemplo n.º 13
0
def get_flavor_by_name(name, ctxt=None):
    """Retrieves single flavor by name."""
    if name is None:
        return get_default_flavor()

    if ctxt is None:
        ctxt = context.get_admin_context()

    return db.flavor_get_by_name(ctxt, name)
Ejemplo n.º 14
0
    def _sync_flavor(self, ctx, flavor, extra_specs):
        """
        Insert the flavor with extra specs if not in local database
        """
        flavor_in_local_db = None
        flavor_name = self.prefix + flavor.name
        try:
            flavor_in_local_db = db.flavor_get_by_name(ctx, flavor_name)
        except exception.FlavorNotFoundByName:
            self._insert_pvc_flavor_extraspecs(ctx, flavor, extra_specs)

        # Update the extra_speces of the flavor
        if flavor_in_local_db is not None:
            flavor_id = flavor_in_local_db.get('flavorid', '')
            if (flavor_id is not '' and extra_specs):
                self._update_flavor_extraspecs(ctx, flavor_id, extra_specs)
Ejemplo n.º 15
0
 def _create_vm(self, node=None, num_instances=1):
     """Create and spawn the VM."""
     if not node:
         node = self.node_name
     self._create_instance_in_the_db(node=node)
     self.type_data = db.flavor_get_by_name(None, "m1.large")
     self.conn.spawn(
         self.context,
         self.instance,
         self.image,
         injected_files=[],
         admin_password=None,
         network_info=self.network_info,
         block_device_info=None,
     )
     self._check_vm_record(num_instances=num_instances)
Ejemplo n.º 16
0
 def test_spawn_attach_volume_iscsi(self):
     self._create_instance_in_the_db()
     self.type_data = db.flavor_get_by_name(None, 'm1.large')
     self.mox.StubOutWithMock(block_device, 'volume_in_mapping')
     self.mox.StubOutWithMock(v_driver, 'block_device_info_get_mapping')
     connection_info = self._test_vmdk_connection_info('iscsi')
     root_disk = [{'connection_info': connection_info}]
     v_driver.block_device_info_get_mapping(
             mox.IgnoreArg()).AndReturn(root_disk)
     self.mox.StubOutWithMock(volumeops.VMwareVolumeOps,
                              'attach_volume')
     volumeops.VMwareVolumeOps.attach_volume(connection_info,
             self.instance, mox.IgnoreArg())
     self.mox.ReplayAll()
     block_device_info = {'mount_device': 'vda'}
     self.conn.spawn(self.context, self.instance, self.image,
                     injected_files=[], admin_password=None,
                     network_info=self.network_info,
                     block_device_info=block_device_info)
Ejemplo n.º 17
0
    def _sync_flavor(self, ctx, flavor, extra_specs):
        """
        Insert the flavor with extra specs if not in local database
        """
        flavor_in_local_db = None
        flavor_name = self.prefix + flavor.name
        try:
            flavor_in_local_db = db.flavor_get_by_name(ctx, flavor_name)
        except exception.FlavorNotFoundByName:
            self._insert_pvc_flavor_extraspecs(ctx, flavor, extra_specs)

        # Update the extra_speces of the flavor
        if flavor_in_local_db is not None:
            flavor_id = flavor_in_local_db.get('flavorid', '')
            if (flavor_id is not ''
                    and extra_specs):
                self._update_flavor_extraspecs(ctx,
                                               flavor_id,
                                               extra_specs)
Ejemplo n.º 18
0
 def test_spawn_attach_volume_iscsi(self):
     self._create_instance_in_the_db()
     self.type_data = db.flavor_get_by_name(None, "m1.large")
     self.mox.StubOutWithMock(block_device, "volume_in_mapping")
     self.mox.StubOutWithMock(v_driver, "block_device_info_get_mapping")
     ebs_root = "fake_root"
     block_device.volume_in_mapping(mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(ebs_root)
     connection_info = self._test_vmdk_connection_info("iscsi")
     root_disk = [{"connection_info": connection_info}]
     v_driver.block_device_info_get_mapping(mox.IgnoreArg()).AndReturn(root_disk)
     self.mox.StubOutWithMock(volumeops.VMwareVolumeOps, "attach_volume")
     volumeops.VMwareVolumeOps.attach_volume(connection_info, self.instance, mox.IgnoreArg())
     self.mox.ReplayAll()
     self.conn.spawn(
         self.context,
         self.instance,
         self.image,
         injected_files=[],
         admin_password=None,
         network_info=self.network_info,
         block_device_info=None,
     )
Ejemplo n.º 19
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)
        flavor = fake_flavor.fake_flavor_obj(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, create_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.move_folder_files(mox.IsA(str),
                                                 mox.IsA(str))
                destroy_disks = True
                if same_host:
                    fake.PathUtils.move_folder_files(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)
Ejemplo n.º 20
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, create_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.move_folder_files(mox.IsA(str), mox.IsA(str))
                destroy_disks = True
                if same_host:
                    fake.PathUtils.move_folder_files(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)
Ejemplo n.º 21
0
 def get_by_name(cls, context, name):
     db_flavor = db.flavor_get_by_name(context, name)
     return cls._from_db_object(context,
                                cls(context),
                                db_flavor,
                                expected_attrs=['extra_specs'])
Ejemplo n.º 22
0
 def get_by_name(cls, context, name):
     db_flavor = db.flavor_get_by_name(context, name)
     return cls._from_db_object(context, cls(), db_flavor,
                                expected_attrs=['extra_specs'])
Ejemplo n.º 23
0
    def _setup_test_migrate_disk_and_power_off_mocks(self, same_host=False, copy_exception=False, size_exception=False):
        self._instance_data = self._get_instance_data()
        instance = db.instance_create(self._context, self._instance_data)
        network_info = fake_network.fake_get_instance_nw_info(self.stubs, spectacular=True)

        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"

        instance_type = 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)

            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(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 (instance, fake_dest_ip, network_info, instance_type)