summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorMORITA Kazutaka <morita.kazutaka@gmail.com>2011-01-01 02:53:45 +0900
committerMORITA Kazutaka <morita.kazutaka@gmail.com>2011-01-01 02:53:45 +0900
commit9c17d68bb670f389a16e05d4306ad0a720e7a1e4 (patch)
treee65fa1a783277e95d25ecfd30e7aa2812449a10e /nova
parent0e88a58cf95bf9298a52d132cd1eb02f29c6bfe1 (diff)
downloadnova-9c17d68bb670f389a16e05d4306ad0a720e7a1e4.tar.gz
nova-9c17d68bb670f389a16e05d4306ad0a720e7a1e4.tar.xz
nova-9c17d68bb670f389a16e05d4306ad0a720e7a1e4.zip
Add support for various block device types (block, network, file)
Diffstat (limited to 'nova')
-rw-r--r--nova/virt/libvirt_conn.py25
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):