diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-10-25 02:24:22 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-10-25 02:24:22 +0000 |
| commit | a09e00cfa03ede3eea6d33e692b29907cb8f7b91 (patch) | |
| tree | 3b7fa28b813d7d592c16848d60546c8d50b1ed1b /nova/virt | |
| parent | 1ae3f8a41ea1a930577d1c35c8d4893dca934196 (diff) | |
| parent | 814e7f8c827aa21a87a62594d5b6413bb49e31e1 (diff) | |
Merge "libvirt: persist volume attachments into config"
Diffstat (limited to 'nova/virt')
| -rw-r--r-- | nova/virt/libvirt/driver.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index 34d667c16..a0b80ab1c 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -646,7 +646,13 @@ class LibvirtDriver(driver.ComputeDriver): self._conn.defineXML(domxml) else: try: - flags = (libvirt.VIR_DOMAIN_AFFECT_CURRENT) + # NOTE(vish): We can always affect config because our + # domains are persistent, but we should only + # affect live if the domain is running. + flags = libvirt.VIR_DOMAIN_AFFECT_CONFIG + state = LIBVIRT_POWER_STATE[virt_dom.info()[0]] + if state == power_state.RUNNING: + flags |= libvirt.VIR_DOMAIN_AFFECT_LIVE virt_dom.attachDeviceFlags(conf.to_xml(), flags) except Exception, ex: if isinstance(ex, libvirt.libvirtError): @@ -704,7 +710,13 @@ class LibvirtDriver(driver.ComputeDriver): domxml = virt_dom.XMLDesc(libvirt.VIR_DOMAIN_XML_SECURE) self._conn.defineXML(domxml) else: - flags = (libvirt.VIR_DOMAIN_AFFECT_CURRENT) + # NOTE(vish): We can always affect config because our + # domains are persistent, but we should only + # affect live if the domain is running. + flags = libvirt.VIR_DOMAIN_AFFECT_CONFIG + state = LIBVIRT_POWER_STATE[virt_dom.info()[0]] + if state == power_state.RUNNING: + flags |= libvirt.VIR_DOMAIN_AFFECT_LIVE virt_dom.detachDeviceFlags(xml, flags) except libvirt.libvirtError as ex: # NOTE(vish): This is called to cleanup volumes after live |
