Merge "Use objects through the run_instance() path"
This commit is contained in:
		@@ -562,7 +562,7 @@ class ComputeVirtAPI(virtapi.VirtAPI):
 | 
			
		||||
class ComputeManager(manager.Manager):
 | 
			
		||||
    """Manages the running instances from creation to destruction."""
 | 
			
		||||
 | 
			
		||||
    target = messaging.Target(version='3.26')
 | 
			
		||||
    target = messaging.Target(version='3.27')
 | 
			
		||||
 | 
			
		||||
    def __init__(self, compute_driver=None, *args, **kwargs):
 | 
			
		||||
        """Load configuration options and connect to the hypervisor."""
 | 
			
		||||
@@ -2095,6 +2095,7 @@ class ComputeManager(manager.Manager):
 | 
			
		||||
                        ' not rescheduling')
 | 
			
		||||
                LOG.exception(msg, instance=instance)
 | 
			
		||||
 | 
			
		||||
    @object_compat
 | 
			
		||||
    @messaging.expected_exceptions(exception.BuildAbortException,
 | 
			
		||||
                                   exception.UnexpectedTaskStateError,
 | 
			
		||||
                                   exception.VirtualInterfaceCreateException,
 | 
			
		||||
@@ -2114,7 +2115,7 @@ class ComputeManager(manager.Manager):
 | 
			
		||||
        if filter_properties is None:
 | 
			
		||||
            filter_properties = {}
 | 
			
		||||
 | 
			
		||||
        @utils.synchronized(instance['uuid'])
 | 
			
		||||
        @utils.synchronized(instance.uuid)
 | 
			
		||||
        def do_run_instance():
 | 
			
		||||
            self._run_instance(context, request_spec,
 | 
			
		||||
                    filter_properties, requested_networks, injected_files,
 | 
			
		||||
 
 | 
			
		||||
@@ -252,6 +252,8 @@ class ComputeAPI(object):
 | 
			
		||||
        3.25 - Make detach_volume take an object
 | 
			
		||||
        3.26 - Make live_migration() and
 | 
			
		||||
               rollback_live_migration_at_destination() take an object
 | 
			
		||||
        ...  - Removed run_instance()
 | 
			
		||||
        3.27 - Make run_instance() accept a new-world object
 | 
			
		||||
    '''
 | 
			
		||||
 | 
			
		||||
    VERSION_ALIASES = {
 | 
			
		||||
 
 | 
			
		||||
@@ -3630,7 +3630,8 @@ class ComputeTestCase(BaseTestCase):
 | 
			
		||||
                fake_network.fake_get_instance_nw_info(self.stubs, 1, 1))
 | 
			
		||||
 | 
			
		||||
        self.mox.StubOutWithMock(self.compute.driver, "macs_for_instance")
 | 
			
		||||
        self.compute.driver.macs_for_instance(instance).AndReturn(macs)
 | 
			
		||||
        self.compute.driver.macs_for_instance(
 | 
			
		||||
            mox.IsA(instance_obj.Instance)).AndReturn(macs)
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
        self.compute.run_instance(self.context, instance, {}, {}, None, None,
 | 
			
		||||
                None, True, None, False)
 | 
			
		||||
 
 | 
			
		||||
@@ -11,6 +11,7 @@
 | 
			
		||||
#    under the License.
 | 
			
		||||
 | 
			
		||||
import iso8601
 | 
			
		||||
import mock
 | 
			
		||||
import mox
 | 
			
		||||
from oslo.config import cfg
 | 
			
		||||
 | 
			
		||||
@@ -199,6 +200,10 @@ class ShelveComputeManagerTestCase(test_compute.BaseTestCase):
 | 
			
		||||
        def fake_delete(self2, ctxt, image_id):
 | 
			
		||||
            self.deleted_image_id = image_id
 | 
			
		||||
 | 
			
		||||
        def fake_claim(context, instance, limits):
 | 
			
		||||
            instance.host = self.compute.host
 | 
			
		||||
            return claims.Claim(db_instance, self.rt, _fake_resources())
 | 
			
		||||
 | 
			
		||||
        fake_image.stub_out_image_service(self.stubs)
 | 
			
		||||
        self.stubs.Set(fake_image._FakeImageService, 'delete', fake_delete)
 | 
			
		||||
 | 
			
		||||
@@ -213,8 +218,6 @@ class ShelveComputeManagerTestCase(test_compute.BaseTestCase):
 | 
			
		||||
                mox.IgnoreArg()).AndReturn('fake_bdm')
 | 
			
		||||
        db_instance['key_data'] = None
 | 
			
		||||
        db_instance['auto_disk_config'] = None
 | 
			
		||||
        self.rt.instance_claim(self.context, instance, limits).AndReturn(
 | 
			
		||||
                claims.Claim(db_instance, self.rt, _fake_resources()))
 | 
			
		||||
        self.compute.driver.spawn(self.context, instance, image,
 | 
			
		||||
                injected_files=[], admin_password=None,
 | 
			
		||||
                network_info=[],
 | 
			
		||||
@@ -226,18 +229,23 @@ class ShelveComputeManagerTestCase(test_compute.BaseTestCase):
 | 
			
		||||
                 'task_state': None,
 | 
			
		||||
                 'image_ref': instance['image_ref'],
 | 
			
		||||
                 'key_data': None,
 | 
			
		||||
                 'host': self.compute.host,  # rt.instance_claim set this
 | 
			
		||||
                 'auto_disk_config': False,
 | 
			
		||||
                 'expected_task_state': task_states.SPAWNING,
 | 
			
		||||
                 'launched_at': cur_time_tz},
 | 
			
		||||
                 update_cells=False,
 | 
			
		||||
                 columns_to_join=['metadata', 'system_metadata']
 | 
			
		||||
                 ).AndReturn((db_instance, db_instance))
 | 
			
		||||
                 ).AndReturn((db_instance,
 | 
			
		||||
                              dict(db_instance,
 | 
			
		||||
                                   host=self.compute.host)))
 | 
			
		||||
        self.compute._notify_about_instance_usage(self.context, instance,
 | 
			
		||||
                'unshelve.end')
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
 | 
			
		||||
        self.compute.unshelve_instance(self.context, instance, image=image,
 | 
			
		||||
                filter_properties=filter_properties, node=node)
 | 
			
		||||
        with mock.patch.object(self.rt, 'instance_claim',
 | 
			
		||||
                               side_effect=fake_claim):
 | 
			
		||||
            self.compute.unshelve_instance(self.context, instance, image=image,
 | 
			
		||||
                    filter_properties=filter_properties, node=node)
 | 
			
		||||
        self.assertEqual(image['id'], self.deleted_image_id)
 | 
			
		||||
        self.assertEqual(instance.host, self.compute.host)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user