Bug 1318722
| Summary: | live migration without shared storage fails in pre_live_migration after upgrade to 2015.1.2-18.2 | |||
|---|---|---|---|---|
| Product: | Red Hat OpenStack | Reporter: | Martin Schuppert <mschuppe> | |
| Component: | openstack-nova | Assignee: | Lee Yarwood <lyarwood> | |
| Status: | CLOSED ERRATA | QA Contact: | Prasanth Anbalagan <panbalag> | |
| Severity: | urgent | Docs Contact: | ||
| Priority: | high | |||
| Version: | 7.0 (Kilo) | CC: | adhingra, berrange, dasmith, dmaley, eglynn, kchamart, kimi.zhang, lyarwood, sbauza, scorcora, sferdjao, sgordon, srevivo, vromanso | |
| Target Milestone: | async | Keywords: | ZStream | |
| Target Release: | 7.0 (Kilo) | |||
| Hardware: | Unspecified | |||
| OS: | Unspecified | |||
| Whiteboard: | ||||
| Fixed In Version: | openstack-nova-2015.1.3-8.el7ost | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | ||
| Clone Of: | ||||
| : | 1318766 1318767 1318768 (view as bug list) | Environment: | ||
| Last Closed: | 2016-04-26 16:54:24 UTC | Type: | Bug | |
| Regression: | --- | Mount Type: | --- | |
| Documentation: | --- | CRM: | ||
| Verified Versions: | Category: | --- | ||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
| Cloudforms Team: | --- | Target Upstream Version: | ||
| Embargoed: | ||||
| Bug Depends On: | ||||
| Bug Blocks: | 1318766, 1318767, 1318768 | |||
|
Description
Martin Schuppert
2016-03-17 15:18:24 UTC
disk_info is:
2016-03-17 11:37:42.637 6497 DEBUG nova.virt.libvirt.driver [req-8c0157c2-adf7-41c4-bbf3-7117c96d5fa8 4b730783a9af469b8168a8e8a58e510f 342bdc50ad5c415594975e762bdd8456 - - -] disk_info: u'[{"disk_size": 1703936, "backing_file": "7aadcb85f689579f6b1cf9b7d21bfaed4212f42f", "virt_disk
_size": 1073741824, "path": "/var/lib/nova/instances/8e972bd1-7e82-4868-9ac4-b80cc2eb098e/disk", "type": "qcow2", "over_committed_disk_size": 1072037888}]' pre_live_migration /usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py:6000
This is happening due to self.driver.get_instance_disk_info being called by the compute manager when block_migration is enabled :
nova/compute/manager.py
5293 def _do_live_migration(self, context, dest, instance, block_migration,
5294 migrate_data):
5295 # Create a local copy since we'll be modifying the dictionary
5296 migrate_data = dict(migrate_data or {})
5297 try:
5298 if block_migration:
5299 block_device_info = self._get_instance_block_device_info(
5300 context, instance)
5301 disk = self.driver.get_instance_disk_info(
5302 instance, block_device_info=block_device_info)
5303 else:
5304 disk = None
5305
5306 pre_migration_data = self.compute_rpcapi.pre_live_migration(
5307 context, instance,
5308 block_migration, disk, dest, migrate_data)
5309 migrate_data['pre_live_migration_result'] = pre_migration_data
nova/virt/libvirt/driver.py
6418 def get_instance_disk_info(self, instance,
6419 block_device_info=None):
6420 try:
6421 dom = self._host.get_domain(instance)
6422 xml = dom.XMLDesc(0)
6423 except libvirt.libvirtError as ex:
6424 error_code = ex.get_error_code()
6425 msg = (_('Error from libvirt while getting description of '
6426 '%(instance_name)s: [Error Code %(error_code)s] '
6427 '%(ex)s') %
6428 {'instance_name': instance.name,
6429 'error_code': error_code,
6430 'ex': ex})
6431 LOG.warn(msg)
6432 raise exception.InstanceNotFound(instance_id=instance.name)
6433
6434 return jsonutils.dumps(
6435 self._get_instance_disk_info(instance.name, xml,
6436 block_device_info))
This sets disk_info to an encoded JSON string (for example u'[{"foo":"bar},{"bar":"foo"}]'), causing the failure documented in c#0.
The get_instance_disk_info method switched back to plain strings for Liberty with the following change :
libvirt: Remove unnecessary JSON conversions
https://review.openstack.org/#/c/177437/6
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2016-0694.html |