summaryrefslogtreecommitdiffstats
path: root/nova/virt
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@gmail.com>2012-09-27 20:33:17 +0000
committerVishvananda Ishaya <vishvananda@gmail.com>2012-09-27 22:57:23 +0000
commit81fa6f717d6e32a4cfc2c734e228e60b204da045 (patch)
treed5329440ecc47ee308d5b7108ee6390a5a7e422a /nova/virt
parent0d565de78b5cc8ecdd18e10444ec731db46b48eb (diff)
libvirt: allows attach and detach from all domains
Previously attaching/detaching from a shutoff domain would fail. Fixes bug 1057730 Change-Id: I876872700da125cb078746401b1b80da265880ff
Diffstat (limited to 'nova/virt')
-rw-r--r--nova/virt/libvirt/driver.py32
1 files changed, 16 insertions, 16 deletions
diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py
index 7e828163c..75a257a92 100644
--- a/nova/virt/libvirt/driver.py
+++ b/nova/virt/libvirt/driver.py
@@ -636,9 +636,16 @@ class LibvirtDriver(driver.ComputeDriver):
if FLAGS.libvirt_type == 'lxc':
self._attach_lxc_volume(conf.to_xml(), virt_dom, instance_name)
+ # TODO(danms) once libvirt has support for LXC hotplug,
+ # replace this re-define with use of the
+ # VIR_DOMAIN_AFFECT_LIVE & VIR_DOMAIN_AFFECT_CONFIG flags with
+ # attachDevice()
+ domxml = virt_dom.XMLDesc(libvirt.VIR_DOMAIN_XML_SECURE)
+ self._conn.defineXML(domxml)
else:
try:
- virt_dom.attachDevice(conf.to_xml())
+ flags = (libvirt.VIR_DOMAIN_AFFECT_CURRENT)
+ virt_dom.attachDeviceFlags(conf.to_xml(), flags)
except Exception, ex:
if isinstance(ex, libvirt.libvirtError):
errcode = ex.get_error_code()
@@ -653,13 +660,6 @@ class LibvirtDriver(driver.ComputeDriver):
connection_info,
mount_device)
- # TODO(danms) once libvirt has support for LXC hotplug,
- # replace this re-define with use of the
- # VIR_DOMAIN_AFFECT_LIVE & VIR_DOMAIN_AFFECT_CONFIG flags with
- # attachDevice()
- domxml = virt_dom.XMLDesc(libvirt.VIR_DOMAIN_XML_SECURE)
- self._conn.defineXML(domxml)
-
@staticmethod
def _get_disk_xml(xml, device):
"""Returns the xml for the disk mounted at device"""
@@ -698,20 +698,20 @@ class LibvirtDriver(driver.ComputeDriver):
raise exception.DiskNotFound(location=mount_device)
if FLAGS.libvirt_type == 'lxc':
self._detach_lxc_volume(xml, virt_dom, instance_name)
+ # TODO(danms) once libvirt has support for LXC hotplug,
+ # replace this re-define with use of the
+ # VIR_DOMAIN_AFFECT_LIVE & VIR_DOMAIN_AFFECT_CONFIG flags with
+ # detachDevice()
+ domxml = virt_dom.XMLDesc(libvirt.VIR_DOMAIN_XML_SECURE)
+ self._conn.defineXML(domxml)
else:
- virt_dom.detachDevice(xml)
+ flags = (libvirt.VIR_DOMAIN_AFFECT_CURRENT)
+ virt_dom.detachDeviceFlags(xml, flags)
finally:
self.volume_driver_method('disconnect_volume',
connection_info,
mount_device)
- # TODO(danms) once libvirt has support for LXC hotplug,
- # replace this re-define with use of the
- # VIR_DOMAIN_AFFECT_LIVE & VIR_DOMAIN_AFFECT_CONFIG flags with
- # detachDevice()
- domxml = virt_dom.XMLDesc(libvirt.VIR_DOMAIN_XML_SECURE)
- self._conn.defineXML(domxml)
-
@exception.wrap_exception()
def _attach_lxc_volume(self, xml, virt_dom, instance_name):
LOG.info(_('attaching LXC block device'))