示例#1
0
文件: manager.py 项目: itpudge/nova
 def _schedule_live_migration(self, context, instance, dest,
                              block_migration, disk_over_commit):
     task = live_migrate.LiveMigrationTask(context, instance, dest,
                                           block_migration,
                                           disk_over_commit,
                                           self.driver.select_hosts)
     return task.execute()
示例#2
0
 def _generate_task(self):
     self.task = live_migrate.LiveMigrationTask(
         self.context, self.instance, self.destination,
         self.block_migration, self.disk_over_commit, self.migration,
         compute_rpcapi.ComputeAPI(), servicegroup.API(),
         query.SchedulerQueryClient(), report.SchedulerReportClient(),
         self.fake_spec)
示例#3
0
    def test_find_destination_works_with_no_request_spec(self):
        task = live_migrate.LiveMigrationTask(
            self.context, self.instance, self.destination,
            self.block_migration, self.disk_over_commit, self.migration,
            compute_rpcapi.ComputeAPI(), servicegroup.API(),
            scheduler_client.SchedulerClient(), request_spec=None)
        another_spec = objects.RequestSpec()
        self.instance.flavor = objects.Flavor()
        self.instance.numa_topology = None
        self.instance.pci_requests = None

        @mock.patch.object(task, '_call_livem_checks_on_host')
        @mock.patch.object(task, '_check_compatible_with_source_hypervisor')
        @mock.patch.object(task.scheduler_client, 'select_destinations')
        @mock.patch.object(objects.RequestSpec, 'from_components')
        @mock.patch.object(scheduler_utils, 'setup_instance_group')
        @mock.patch.object(utils, 'get_image_from_system_metadata')
        def do_test(get_image, setup_ig, from_components, select_dest,
                    check_compat, call_livem_checks):
            get_image.return_value = "image"
            from_components.return_value = another_spec
            select_dest.return_value = [{'host': 'host1'}]

            self.assertEqual("host1", task._find_destination())

            get_image.assert_called_once_with(self.instance.system_metadata)
            setup_ig.assert_called_once_with(self.context, another_spec)
            select_dest.assert_called_once_with(self.context, another_spec,
                    [self.instance.uuid])
            # Make sure the request_spec was updated to include the cell
            # mapping.
            self.assertIsNotNone(another_spec.requested_destination.cell)
            check_compat.assert_called_once_with("host1")
            call_livem_checks.assert_called_once_with("host1")
        do_test()
示例#4
0
 def _build_live_migrate_task(self, context, instance, destination,
                              block_migration, disk_over_commit, migration):
     return live_migrate.LiveMigrationTask(context, instance,
                                           destination, block_migration,
                                           disk_over_commit, migration,
                                           self.compute_rpcapi,
                                           self.servicegroup_api,
                                           self.scheduler_client)
示例#5
0
    def test_live_migrate(self):
        instance = {'host': 'h'}
        self.mox.StubOutClassWithMocks(live_migrate, "LiveMigrationTask")
        task = live_migrate.LiveMigrationTask(self.context, instance, "dest",
                                              "bm", "doc")
        task.execute()

        self.mox.ReplayAll()
        self.manager.live_migration(self.context, instance, "dest", "bm",
                                    "doc")
示例#6
0
 def _generate_task(self):
     self.task = live_migrate.LiveMigrationTask(self.context, self.instance,
                                                self.destination,
                                                self.block_migration,
                                                self.disk_over_commit)
示例#7
0
 def _schedule_live_migration(self, context, instance, dest,
         block_migration, disk_over_commit, pclm):
     task = live_migrate.LiveMigrationTask(context, instance,
                 dest, block_migration, disk_over_commit, pclm)
     return task.execute()
 def _generate_task(self):
     self.task = live_migrate.LiveMigrationTask(
         self.context, self.instance, self.destination,
         self.block_migration, self.disk_over_commit, self.migration,
         compute_rpcapi.ComputeAPI(), servicegroup.API(),
         scheduler_client.SchedulerClient())