summaryrefslogtreecommitdiffstats
path: root/deploy/libvirt_utils.py
diff options
context:
space:
mode:
authorAlex Yang <yangyang1@zte.com.cn>2017-05-12 00:08:01 +0800
committerAlex Yang <yangyang1@zte.com.cn>2017-05-15 22:44:38 +0800
commitbfacd100e576a50be19447f7c1b6cea2ac55ebd0 (patch)
treed9bc28d621e1a327ce7758845d4310cd5eff4a2f /deploy/libvirt_utils.py
parentcbdb2b6ab819f1cad4cfcdc47c53d76030305633 (diff)
add separated disk for ceph in multi-nodes virtual deploy
Change-Id: Ic3f67bb889c20e95916a1052f0cfa1e238f133a8 Signed-off-by: Alex Yang <yangyang1@zte.com.cn>
Diffstat (limited to 'deploy/libvirt_utils.py')
-rw-r--r--deploy/libvirt_utils.py35
1 files changed, 24 insertions, 11 deletions
diff --git a/deploy/libvirt_utils.py b/deploy/libvirt_utils.py
index cd203784..8c694c13 100644
--- a/deploy/libvirt_utils.py
+++ b/deploy/libvirt_utils.py
@@ -10,6 +10,7 @@
import commands
import libvirt
import os
+import string
import xml.etree.ElementTree as ET
from utils import (
@@ -47,13 +48,25 @@ def modify_vm_name(root, vm_name):
name_elem.text = vm_name
-def modify_vm_disk_file(root, disk_file):
- for disk in root.findall('./devices/disk'):
- if 'device' in disk.attrib and disk.attrib['device'] == 'disk':
- for source in disk.iterfind('source'):
- if 'file' in source.attrib:
- source.attrib['file'] = disk_file
- break
+def modify_vm_disk_file(root, disks):
+ dev_list = ['hd' + ch for ch in string.ascii_lowercase]
+ devices = root.find('./devices')
+ for disk in devices.findall('disk'):
+ if disk.attrib['device'] == 'disk':
+ devices.remove(disk)
+ else:
+ target = disk.find('target')
+ dev = target.attrib['dev']
+ if dev in dev_list:
+ dev_list.remove(dev)
+
+ for disk_file in disks:
+ dev = dev_list.pop(0)
+ disk = ET.Element('disk', attrib={'device': 'disk', 'type': 'file'})
+ disk.append(ET.Element('driver', attrib={'name': 'qemu', 'type': 'qcow2'}))
+ disk.append(ET.Element('source', attrib={'file': disk_file}))
+ disk.append(ET.Element('target', attrib={'dev': dev, 'bus': 'ide'}))
+ devices.append(disk)
def create_virtual_disk(disk_file, size):
@@ -66,16 +79,16 @@ def create_virtual_disk(disk_file, size):
err_exit('Fail to create qemu image !')
-def create_vm(template, name=None, disk_file=None):
+def create_vm(template, name=None, disks=None):
LI('Begin to create VM %s' % template)
- if name or disk_file:
+ if name or disks:
tree = ET.ElementTree(file=template)
root = tree.getroot()
if name:
modify_vm_name(root, name)
- if disk_file:
- modify_vm_disk_file(root, disk_file)
+ if disks:
+ modify_vm_disk_file(root, disks)
temp_file = path_join(WORKSPACE, 'tmp.xml')
tree.write(temp_file)