From 112dd3c1b824097acf5f89cd3afa8785623e4f9e Mon Sep 17 00:00:00 2001 From: Michael Still Date: Wed, 22 Feb 2012 12:30:37 +1100 Subject: Move get_info to taking an instance. This is a first step towards using uuids in this interface instead of instance names (which are synonyms for instance ids). Change-Id: I54b32a5020b0dbc21ba7156ed38ed188c483086b --- nova/virt/baremetal/proxy.py | 4 ++-- nova/virt/driver.py | 2 +- nova/virt/fake.py | 8 ++++---- nova/virt/libvirt/connection.py | 38 +++++++++++++++----------------------- nova/virt/vmwareapi/vmops.py | 6 +++--- nova/virt/vmwareapi_conn.py | 4 ++-- nova/virt/xenapi/vmops.py | 7 +++---- nova/virt/xenapi_conn.py | 4 ++-- 8 files changed, 32 insertions(+), 41 deletions(-) (limited to 'nova/virt') diff --git a/nova/virt/baremetal/proxy.py b/nova/virt/baremetal/proxy.py index b651ee2c4..cd2427a6d 100644 --- a/nova/virt/baremetal/proxy.py +++ b/nova/virt/baremetal/proxy.py @@ -531,7 +531,7 @@ class ProxyConnection(driver.ComputeDriver): LOG.debug(_('instance %s: finished toXML method'), instance['name']) return xml_info - def get_info(self, instance_name): + def get_info(self, instance): """Retrieve information from baremetal for a specific instance name. If a baremetal error is encountered during lookup, we might raise a @@ -539,7 +539,7 @@ class ProxyConnection(driver.ComputeDriver): baremetal error is. """ - _domain_info = self._conn.get_domain_info(instance_name) + _domain_info = self._conn.get_domain_info(instance['name']) state, max_mem, mem, num_cpu, cpu_time = _domain_info return {'state': state, 'max_mem': max_mem, diff --git a/nova/virt/driver.py b/nova/virt/driver.py index 20c41ca9f..204d90b1c 100644 --- a/nova/virt/driver.py +++ b/nova/virt/driver.py @@ -108,7 +108,7 @@ class ComputeDriver(object): # TODO(Vek): Need to pass context in for access to auth_token raise NotImplementedError() - def get_info(self, instance_name): + def get_info(self, instance): """Get the current status of an instance, by name (not ID!) Returns a dict containing: diff --git a/nova/virt/fake.py b/nova/virt/fake.py index 53a1ea4c9..c521231c1 100644 --- a/nova/virt/fake.py +++ b/nova/virt/fake.py @@ -188,10 +188,10 @@ class FakeConnection(driver.ComputeDriver): pass return True - def get_info(self, instance_name): - if instance_name not in self.instances: - raise exception.InstanceNotFound(instance_id=instance_name) - i = self.instances[instance_name] + def get_info(self, instance): + if instance['name'] not in self.instances: + raise exception.InstanceNotFound(instance_id=instance['name']) + i = self.instances[instance['name']] return {'state': i.state, 'max_mem': 0, 'mem': 0, diff --git a/nova/virt/libvirt/connection.py b/nova/virt/libvirt/connection.py index e8fdcd792..d00971c7a 100644 --- a/nova/virt/libvirt/connection.py +++ b/nova/virt/libvirt/connection.py @@ -339,10 +339,8 @@ class LibvirtConnection(driver.ComputeDriver): def _destroy(self, instance, network_info, block_device_info=None, cleanup=True): - instance_name = instance['name'] - try: - virt_dom = self._lookup_by_name(instance_name) + virt_dom = self._lookup_by_name(instance['name']) except exception.NotFound: virt_dom = None @@ -395,10 +393,8 @@ class LibvirtConnection(driver.ComputeDriver): def _wait_for_destroy(): """Called at an interval until the VM is gone.""" - instance_name = instance['name'] - try: - state = self.get_info(instance_name)['state'] + state = self.get_info(instance)['state'] except exception.NotFound: LOG.info(_("Instance destroyed successfully."), instance=instance) @@ -672,10 +668,8 @@ class LibvirtConnection(driver.ComputeDriver): def _wait_for_reboot(): """Called at an interval until the VM is running again.""" - instance_name = instance['name'] - try: - state = self.get_info(instance_name)['state'] + state = self.get_info(instance)['state'] except exception.NotFound: LOG.error(_("During reboot, instance disappeared."), instance=instance) @@ -816,10 +810,8 @@ class LibvirtConnection(driver.ComputeDriver): def _wait_for_boot(): """Called at an interval until the VM is running.""" - instance_name = instance['name'] - try: - state = self.get_info(instance_name)['state'] + state = self.get_info(instance)['state'] except exception.NotFound: LOG.error(_("During reboot, instance disappeared."), instance=instance) @@ -1370,7 +1362,7 @@ class LibvirtConnection(driver.ComputeDriver): "[Error Code %(error_code)s] %(ex)s") % locals() raise exception.Error(msg) - def get_info(self, instance_name): + def get_info(self, instance): """Retrieve information from libvirt for a specific instance name. If a libvirt error is encountered during lookup, we might raise a @@ -1378,7 +1370,7 @@ class LibvirtConnection(driver.ComputeDriver): libvirt error is. """ - virt_dom = self._lookup_by_name(instance_name) + virt_dom = self._lookup_by_name(instance['name']) (state, max_mem, mem, num_cpu, cpu_time) = virt_dom.info() return {'state': state, 'max_mem': max_mem, @@ -1886,7 +1878,7 @@ class LibvirtConnection(driver.ComputeDriver): def wait_for_live_migration(): """waiting for live migration completion""" try: - self.get_info(instance_ref.name)['state'] + self.get_info(instance_ref)['state'] except exception.NotFound: timer.stop() post_method(ctxt, instance_ref, dest, block_migration) @@ -2173,17 +2165,17 @@ class LibvirtConnection(driver.ComputeDriver): return disk_info_text - def _wait_for_running(self, instance_name): + def _wait_for_running(self, instance): try: - state = self.get_info(instance_name)['state'] + state = self.get_info(instance)['state'] except exception.NotFound: - msg = _("During wait running, %s disappeared.") % instance_name - LOG.error(msg) + LOG.error(_("During wait running, instance disappeared."), + instance=instance) raise utils.LoopingCallDone if state == power_state.RUNNING: - msg = _("Instance %s running successfully.") % instance_name - LOG.info(msg) + LOG.info(_("Instance running successfully."), + instance=instance) raise utils.LoopingCallDone @exception.wrap_exception() @@ -2225,7 +2217,7 @@ class LibvirtConnection(driver.ComputeDriver): self.firewall_driver.apply_instance_filter(instance, network_info) - timer = utils.LoopingCall(self._wait_for_running, instance['name']) + timer = utils.LoopingCall(self._wait_for_running, instance) return timer.start(interval=0.5, now=True) @exception.wrap_exception() @@ -2247,7 +2239,7 @@ class LibvirtConnection(driver.ComputeDriver): domain = self._create_new_domain(xml) self.firewall_driver.apply_instance_filter(instance, network_info) - timer = utils.LoopingCall(self._wait_for_running, instance['name']) + timer = utils.LoopingCall(self._wait_for_running, instance) return timer.start(interval=0.5, now=True) def confirm_migration(self, migration, instance, network_info): diff --git a/nova/virt/vmwareapi/vmops.py b/nova/virt/vmwareapi/vmops.py index d613d7e02..4574dafdb 100644 --- a/nova/virt/vmwareapi/vmops.py +++ b/nova/virt/vmwareapi/vmops.py @@ -661,11 +661,11 @@ class VMWareVMOps(object): reason = _("instance is not in a suspended state") raise exception.InstanceResumeFailure(reason=reason) - def get_info(self, instance_name): + def get_info(self, instance): """Return data about the VM instance.""" - vm_ref = self._get_vm_ref_from_the_name(instance_name) + vm_ref = self._get_vm_ref_from_the_name(instance['name']) if vm_ref is None: - raise exception.InstanceNotFound(instance_id=instance_name) + raise exception.InstanceNotFound(instance_id=instance['name']) lst_properties = ["summary.config.numCpu", "summary.config.memorySizeMB", diff --git a/nova/virt/vmwareapi_conn.py b/nova/virt/vmwareapi_conn.py index 16b1f8ac6..614b25cff 100644 --- a/nova/virt/vmwareapi_conn.py +++ b/nova/virt/vmwareapi_conn.py @@ -162,9 +162,9 @@ class VMWareESXConnection(driver.ComputeDriver): """Resume the suspended VM instance.""" self._vmops.resume(instance) - def get_info(self, instance_name): + def get_info(self, instance): """Return info about the VM instance.""" - return self._vmops.get_info(instance_name) + return self._vmops.get_info(instance) def get_diagnostics(self, instance): """Return data about VM diagnostics.""" diff --git a/nova/virt/xenapi/vmops.py b/nova/virt/xenapi/vmops.py index 8ee34aaa7..67ba53b9f 100644 --- a/nova/virt/xenapi/vmops.py +++ b/nova/virt/xenapi/vmops.py @@ -475,7 +475,6 @@ class VMOps(object): """Spawn a new instance.""" LOG.debug(_('Starting VM %s...'), vm_ref) self._start(instance, vm_ref) - instance_name = instance.name instance_uuid = instance.uuid LOG.info(_('Spawning VM %(instance_uuid)s created %(vm_ref)s.') % locals()) @@ -497,7 +496,7 @@ class VMOps(object): LOG.debug(_('Instance %s: waiting for running'), instance_uuid) expiration = time.time() + FLAGS.xenapi_running_timeout while time.time() < expiration: - state = self.get_info(instance_name)['state'] + state = self.get_info(instance)['state'] if state == power_state.RUNNING: break @@ -1019,7 +1018,7 @@ class VMOps(object): def _shutdown(self, instance, vm_ref, hard=True): """Shutdown an instance.""" instance_uuid = instance.uuid - state = self.get_info(instance['name'])['state'] + state = self.get_info(instance)['state'] if state == power_state.SHUTDOWN: LOG.warn(_("VM %(instance_uuid)s already halted," "skipping shutdown...") % locals()) @@ -1391,7 +1390,7 @@ class VMOps(object): def get_info(self, instance): """Return data about VM instance.""" - vm_ref = self._get_vm_opaque_ref(instance) + vm_ref = self._get_vm_opaque_ref(instance['name']) vm_rec = self._session.call_xenapi("VM.get_record", vm_ref) return VMHelper.compile_info(vm_rec) diff --git a/nova/virt/xenapi_conn.py b/nova/virt/xenapi_conn.py index 08542268c..034b1e090 100644 --- a/nova/virt/xenapi_conn.py +++ b/nova/virt/xenapi_conn.py @@ -312,9 +312,9 @@ class XenAPIConnection(driver.ComputeDriver): """Unplug VIFs from networks.""" self._vmops.unplug_vifs(instance_ref, network_info) - def get_info(self, instance_name): + def get_info(self, instance): """Return data about VM instance""" - return self._vmops.get_info(instance_name) + return self._vmops.get_info(instance) def get_diagnostics(self, instance): """Return data about VM diagnostics""" -- cgit