diff options
-rw-r--r-- | nova/virt/libvirt_conn.py | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/nova/virt/libvirt_conn.py b/nova/virt/libvirt_conn.py index 00edfbdc8..51c805c2f 100644 --- a/nova/virt/libvirt_conn.py +++ b/nova/virt/libvirt_conn.py @@ -223,11 +223,26 @@ class LibvirtConnection(object): def attach_volume(self, instance_name, device_path, mountpoint): virt_dom = self._conn.lookupByName(instance_name) mount_device = mountpoint.rpartition("/")[2] - xml = """<disk type='block'> - <driver name='qemu' type='raw'/> - <source dev='%s'/> - <target dev='%s' bus='virtio'/> - </disk>""" % (device_path, mount_device) + xml = '' + (protocol, vol_name) = device_path.split(':') + if device_path.startswith('/dev/'): + xml = """<disk type='block' device='disk'> + <driver name='qemu' type='raw'/> + <source dev='%s'/> + <target dev='%s' bus='virtio'/> + </disk>""" % (device_path, mount_device) + elif vol_name != '': + xml = """<disk type='network' device='disk'> + <driver name='qemu' type='raw'/> + <source protocol='%s' name='%s'/> + <target dev='%s' bus='virtio'/> + </disk>""" % (protocol, vol_name, mount_device) + else: + xml = """<disk type='file' device='disk'> + <driver name='qemu' type='raw'/> + <source file='%s'/> + <target dev='%s' bus='virtio'/> + </disk>""" % (device_path, mount_device) virt_dom.attachDevice(xml) def _get_disk_xml(self, xml, device): |