← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1550919] Fix included in openstack/nova queens-eol

 

This issue was fixed in the openstack/nova queens-eol  release.

** Changed in: nova/queens
       Status: Fix Committed => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1550919

Title:
  [Libvirt]Evacuate fail may cause disk image be deleted

Status in OpenStack Compute (nova):
  Fix Released
Status in OpenStack Compute (nova) queens series:
  Fix Released
Status in OpenStack Compute (nova) rocky series:
  Fix Released
Status in OpenStack Compute (nova) stein series:
  Fix Released
Status in OpenStack Compute (nova) train series:
  Fix Released
Status in OpenStack Compute (nova) ussuri series:
  Fix Released

Bug description:
  I checked latest source of nova on master branch, this problem is
  still exists.

  When we are doing evacuate, eventually _do_rebuild_instance will be called.
  As rebuild is not implemented in libvirt driver, in fact _rebuild_default_impl is called.

          try:    
              with instance.mutated_migration_context():
                  self.driver.rebuild(**kwargs)
          except NotImplementedError:
              # NOTE(rpodolyaka): driver doesn't provide specialized version 
              # of rebuild, fall back to the default implementation
              self._rebuild_default_impl(**kwargs)

  _rebuild_default_impl will call self.driver.spawn to boot up the instance, and spawn will in turn call _create_domain_and_network
  when VirtualInterfaceCreateException or Timeout happen, self.cleanup will be called.

          except exception.VirtualInterfaceCreateException:
              # Neutron reported failure and we didn't swallow it, so
              # bail here
              with excutils.save_and_reraise_exception():
                  if guest:
                      guest.poweroff()
                  self.cleanup(context, instance, network_info=network_info,
                               block_device_info=block_device_info)
          except eventlet.timeout.Timeout:
              # We never heard from Neutron
              LOG.warn(_LW('Timeout waiting for vif plugging callback for '
                           'instance %(uuid)s'), {'uuid': instance.uuid},
                       instance=instance)
              if CONF.vif_plugging_is_fatal:
                  if guest:
                      guest.poweroff()
                  self.cleanup(context, instance, network_info=network_info,
                               block_device_info=block_device_info)
                  raise exception.VirtualInterfaceCreateException()

  Because default value for parameter destroy_disks is True
      def cleanup(self, context, instance, network_info, block_device_info=None,
                  destroy_disks=True, migrate_data=None, destroy_vifs=True):

  So if error occur when doing evacuate during wait neutron's event,
  instance's disk file will be deleted unexpectedly

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1550919/+subscriptions



References