summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Yang <yangyang1@zte.com.cn>2017-05-19 09:19:17 +0800
committerAlex Yang <yangyang1@zte.com.cn>2017-05-25 13:34:38 +0800
commit24e32399eba20d6b613b654b60b1dcc48a857adc (patch)
tree544247100b7428d3e91f693863e52939089779b9
parentbfacd100e576a50be19447f7c1b6cea2ac55ebd0 (diff)
Use unified vm template files in python deploy script
Change-Id: I386011a35a9be3e4f1d468744a6945360bb2adb3 Signed-off-by: Alex Yang <yangyang1@zte.com.cn>
-rw-r--r--deploy/config/schemas.py3
-rw-r--r--deploy/config/vm_environment/zte-virtual1/deploy.yml1
-rw-r--r--deploy/config/vm_environment/zte-virtual2/deploy.yml5
-rw-r--r--deploy/environment.py26
-rw-r--r--templates/virtual_environment/vms/computer.xml124
-rw-r--r--templates/virtual_environment/vms/controller.xml124
6 files changed, 280 insertions, 3 deletions
diff --git a/deploy/config/schemas.py b/deploy/config/schemas.py
index 7cc2c80e..d2fd7ef6 100644
--- a/deploy/config/schemas.py
+++ b/deploy/config/schemas.py
@@ -27,7 +27,8 @@ hosts_schema = {
'type': 'string',
'enum': ['COMPUTER', 'CONTROLLER_LB', 'CONTROLLER_HA']
}
- }
+ },
+ 'template': {'type': 'string', 'minLength': 1}
}
}
}
diff --git a/deploy/config/vm_environment/zte-virtual1/deploy.yml b/deploy/config/vm_environment/zte-virtual1/deploy.yml
index 0b3a2c52..a85f429f 100644
--- a/deploy/config/vm_environment/zte-virtual1/deploy.yml
+++ b/deploy/config/vm_environment/zte-virtual1/deploy.yml
@@ -4,6 +4,7 @@ hosts:
roles:
- 'CONTROLLER_LB'
- 'COMPUTER'
+ template: 'templates/virtual_environment/vms/all_in_one.xml'
disks:
daisy: 50
controller: 110
diff --git a/deploy/config/vm_environment/zte-virtual2/deploy.yml b/deploy/config/vm_environment/zte-virtual2/deploy.yml
index 646fa130..43b2ed03 100644
--- a/deploy/config/vm_environment/zte-virtual2/deploy.yml
+++ b/deploy/config/vm_environment/zte-virtual2/deploy.yml
@@ -3,18 +3,23 @@ hosts:
- name: 'controller01'
roles:
- 'CONTROLLER_LB'
+ template: 'templates/virtual_environment/vms/controller.xml'
- name: 'controller02'
roles:
- 'CONTROLLER_LB'
+ template: 'templates/virtual_environment/vms/controller.xml'
- name: 'controller03'
roles:
- 'CONTROLLER_LB'
+ template: 'templates/virtual_environment/vms/controller.xml'
- name: 'computer01'
roles:
- 'COMPUTER'
+ template: 'templates/virtual_environment/vms/computer.xml'
- name: 'computer02'
roles:
- 'COMPUTER'
+ template: 'templates/virtual_environment/vms/computer.xml'
disks:
daisy: 50
controller: 110
diff --git a/deploy/environment.py b/deploy/environment.py
index d18bf550..2adec494 100644
--- a/deploy/environment.py
+++ b/deploy/environment.py
@@ -28,6 +28,7 @@ from libvirt_utils import (
)
from utils import (
WORKSPACE,
+ LD,
LI,
LW,
err_exit,
@@ -45,8 +46,8 @@ VMDEPLOY_DAISY_SERVER_VM = path_join(WORKSPACE, 'templates/virtual_environment/v
BMDEPLOY_DAISY_SERVER_VM = path_join(WORKSPACE, 'templates/physical_environment/vms/daisy.xml')
ALL_IN_ONE_TEMPLATE = path_join(WORKSPACE, 'templates/virtual_environment/vms/all_in_one.xml')
-CONTROLLER_TEMPLATE = path_join(WORKSPACE, 'templates/virtual_environment/vms/controller01.xml')
-COMPUTE_TEMPLATE = path_join(WORKSPACE, 'templates/virtual_environment/vms/computer01.xml')
+CONTROLLER_TEMPLATE = path_join(WORKSPACE, 'templates/virtual_environment/vms/controller.xml')
+COMPUTE_TEMPLATE = path_join(WORKSPACE, 'templates/virtual_environment/vms/computer.xml')
VIRT_NET_TEMPLATE_PATH = path_join(WORKSPACE, 'templates/virtual_environment/networks')
@@ -160,6 +161,27 @@ class BareMetalEnvironment(DaisyEnvironmentBase):
class VirtualEnvironment(DaisyEnvironmentBase):
+ def __init__(self, deploy_struct, net_struct, adapter, pxe_bridge,
+ daisy_server_info, work_dir, storage_dir):
+ super(VirtualEnvironment, self).__init__(deploy_struct, net_struct, adapter, pxe_bridge,
+ daisy_server_info, work_dir, storage_dir)
+ self.check_configuration()
+
+ def check_configuration(self):
+ self.check_nodes_template()
+
+ def check_nodes_template(self):
+ for node in self.deploy_struct['hosts']:
+ template = node.get('template', None)
+ if not template or os.access(template, os.R_OK):
+ continue
+ elif os.access(path_join(WORKSPACE, template), os.R_OK):
+ template_new = path_join(WORKSPACE, template)
+ LD('Template of VM node %s is %s' % (node.get('name', ''), template_new))
+ node['template'] = template_new
+ else:
+ err_exit('The template of vm node %s does not exist.' % node.get('name'))
+
def create_daisy_server_network(self):
net_name = create_virtual_network(VMDEPLOY_DAISY_SERVER_NET)
if net_name != self.pxe_bridge:
diff --git a/templates/virtual_environment/vms/computer.xml b/templates/virtual_environment/vms/computer.xml
new file mode 100644
index 00000000..ee038108
--- /dev/null
+++ b/templates/virtual_environment/vms/computer.xml
@@ -0,0 +1,124 @@
+<domain type='kvm' id='4'>
+ <name>computer</name>
+ <memory unit='KiB'>8388608</memory>
+ <currentMemory unit='KiB'>8388608</currentMemory>
+ <vcpu placement='static'>4</vcpu>
+ <resource>
+ <partition>/machine</partition>
+ </resource>
+ <os>
+ <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
+ <boot dev='network'/>
+ <boot dev='hd'/>
+ </os>
+ <features>
+ <acpi/>
+ <apic/>
+ </features>
+ <cpu mode="host-model"/>
+ <clock offset='utc'>
+ <timer name='rtc' tickpolicy='catchup'/>
+ <timer name='pit' tickpolicy='delay'/>
+ <timer name='hpet' present='no'/>
+ </clock>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>restart</on_crash>
+ <pm>
+ <suspend-to-mem enabled='no'/>
+ <suspend-to-disk enabled='no'/>
+ </pm>
+ <devices>
+ <emulator>/usr/libexec/qemu-kvm</emulator>
+ <disk type='file' device='disk'>
+ <driver name='qemu' type='qcow2'/>
+ <source file='/home/qemu/vms/computer.qcow2'/>
+ <backingStore/>
+ <target dev='hda' bus='ide'/>
+ <alias name='ide0-0-0'/>
+ <address type='drive' controller='0' bus='0' target='0' unit='0'/>
+ </disk>
+ <controller type='usb' index='0' model='ich9-ehci1'>
+ <alias name='usb'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x7'/>
+ </controller>
+ <controller type='usb' index='0' model='ich9-uhci1'>
+ <alias name='usb'/>
+ <master startport='0'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0' multifunction='on'/>
+ </controller>
+ <controller type='usb' index='0' model='ich9-uhci2'>
+ <alias name='usb'/>
+ <master startport='2'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x1'/>
+ </controller>
+ <controller type='usb' index='0' model='ich9-uhci3'>
+ <alias name='usb'/>
+ <master startport='4'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x2'/>
+ </controller>
+ <controller type='pci' index='0' model='pci-root'>
+ <alias name='pci.0'/>
+ </controller>
+ <controller type='ide' index='0'>
+ <alias name='ide'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
+ </controller>
+ <controller type='virtio-serial' index='0'>
+ <alias name='virtio-serial0'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
+ </controller>
+ <interface type='network'>
+ <source network='daisy1' bridge='daisy1'/>
+ <model type='rtl8139'/>
+ </interface>
+ <interface type='network'>
+ <source network='daisy2' bridge='daisy2'/>
+ <model type='rtl8139'/>
+ </interface>
+ <serial type='pty'>
+ <source path='/dev/pts/4'/>
+ <target port='0'/>
+ <alias name='serial0'/>
+ </serial>
+ <console type='pty' tty='/dev/pts/4'>
+ <source path='/dev/pts/4'/>
+ <target type='serial' port='0'/>
+ <alias name='serial0'/>
+ </console>
+ <channel type='spicevmc'>
+ <target type='virtio' name='com.redhat.spice.0' state='connected'/>
+ <alias name='channel0'/>
+ <address type='virtio-serial' controller='0' bus='0' port='1'/>
+ </channel>
+ <input type='mouse' bus='ps2'/>
+ <input type='keyboard' bus='ps2'/>
+ <graphics type='spice' port='5903' autoport='yes' listen='127.0.0.1'>
+ <listen type='address' address='127.0.0.1'/>
+ <image compression='off'/>
+ </graphics>
+ <sound model='ich6'>
+ <alias name='sound0'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
+ </sound>
+ <video>
+ <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1'/>
+ <alias name='video0'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
+ </video>
+ <redirdev bus='usb' type='spicevmc'>
+ <alias name='redir0'/>
+ </redirdev>
+ <redirdev bus='usb' type='spicevmc'>
+ <alias name='redir1'/>
+ </redirdev>
+ <memballoon model='virtio'>
+ <alias name='balloon0'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
+ </memballoon>
+ </devices>
+ <seclabel type='dynamic' model='selinux' relabel='yes'>
+ <label>system_u:system_r:svirt_t:s0:c182,c195</label>
+ <imagelabel>system_u:object_r:svirt_image_t:s0:c182,c195</imagelabel>
+ </seclabel>
+</domain>
diff --git a/templates/virtual_environment/vms/controller.xml b/templates/virtual_environment/vms/controller.xml
new file mode 100644
index 00000000..5943e655
--- /dev/null
+++ b/templates/virtual_environment/vms/controller.xml
@@ -0,0 +1,124 @@
+<domain type='kvm' id='4'>
+ <name>controller</name>
+ <memory unit='KiB'>4194304</memory>
+ <currentMemory unit='KiB'>4194304</currentMemory>
+ <vcpu placement='static'>4</vcpu>
+ <resource>
+ <partition>/machine</partition>
+ </resource>
+ <os>
+ <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
+ <boot dev='network'/>
+ <boot dev='hd'/>
+ </os>
+ <features>
+ <acpi/>
+ <apic/>
+ </features>
+ <cpu mode="host-model"/>
+ <clock offset='utc'>
+ <timer name='rtc' tickpolicy='catchup'/>
+ <timer name='pit' tickpolicy='delay'/>
+ <timer name='hpet' present='no'/>
+ </clock>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>restart</on_crash>
+ <pm>
+ <suspend-to-mem enabled='no'/>
+ <suspend-to-disk enabled='no'/>
+ </pm>
+ <devices>
+ <emulator>/usr/libexec/qemu-kvm</emulator>
+ <disk type='file' device='disk'>
+ <driver name='qemu' type='qcow2'/>
+ <source file='/home/qemu/vms/controller.qcow2'/>
+ <backingStore/>
+ <target dev='hda' bus='ide'/>
+ <alias name='ide0-0-0'/>
+ <address type='drive' controller='0' bus='0' target='0' unit='0'/>
+ </disk>
+ <controller type='usb' index='0' model='ich9-ehci1'>
+ <alias name='usb'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x7'/>
+ </controller>
+ <controller type='usb' index='0' model='ich9-uhci1'>
+ <alias name='usb'/>
+ <master startport='0'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0' multifunction='on'/>
+ </controller>
+ <controller type='usb' index='0' model='ich9-uhci2'>
+ <alias name='usb'/>
+ <master startport='2'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x1'/>
+ </controller>
+ <controller type='usb' index='0' model='ich9-uhci3'>
+ <alias name='usb'/>
+ <master startport='4'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x2'/>
+ </controller>
+ <controller type='pci' index='0' model='pci-root'>
+ <alias name='pci.0'/>
+ </controller>
+ <controller type='ide' index='0'>
+ <alias name='ide'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
+ </controller>
+ <controller type='virtio-serial' index='0'>
+ <alias name='virtio-serial0'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
+ </controller>
+ <interface type='network'>
+ <source network='daisy1' bridge='daisy1'/>
+ <model type='rtl8139'/>
+ </interface>
+ <interface type='network'>
+ <source network='daisy2' bridge='daisy2'/>
+ <model type='rtl8139'/>
+ </interface>
+ <serial type='pty'>
+ <source path='/dev/pts/4'/>
+ <target port='0'/>
+ <alias name='serial0'/>
+ </serial>
+ <console type='pty' tty='/dev/pts/4'>
+ <source path='/dev/pts/4'/>
+ <target type='serial' port='0'/>
+ <alias name='serial0'/>
+ </console>
+ <channel type='spicevmc'>
+ <target type='virtio' name='com.redhat.spice.0' state='connected'/>
+ <alias name='channel0'/>
+ <address type='virtio-serial' controller='0' bus='0' port='1'/>
+ </channel>
+ <input type='mouse' bus='ps2'/>
+ <input type='keyboard' bus='ps2'/>
+ <graphics type='spice' port='5903' autoport='yes' listen='127.0.0.1'>
+ <listen type='address' address='127.0.0.1'/>
+ <image compression='off'/>
+ </graphics>
+ <sound model='ich6'>
+ <alias name='sound0'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
+ </sound>
+ <video>
+ <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1'/>
+ <alias name='video0'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
+ </video>
+ <redirdev bus='usb' type='spicevmc'>
+ <alias name='redir0'/>
+ </redirdev>
+ <redirdev bus='usb' type='spicevmc'>
+ <alias name='redir1'/>
+ </redirdev>
+ <memballoon model='virtio'>
+ <alias name='balloon0'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
+ </memballoon>
+ </devices>
+ <seclabel type='dynamic' model='selinux' relabel='yes'>
+ <label>system_u:system_r:svirt_t:s0:c182,c195</label>
+ <imagelabel>system_u:object_r:svirt_image_t:s0:c182,c195</imagelabel>
+ </seclabel>
+</domain>