diff --git a/client-provisioner/provisioner_lib/libvirt_schema.py b/client-provisioner/provisioner_lib/libvirt_schema.py index a892e2e2..fa3b6fae 100755 --- a/client-provisioner/provisioner_lib/libvirt_schema.py +++ b/client-provisioner/provisioner_lib/libvirt_schema.py @@ -28,8 +28,7 @@ # * vm_memory # * vm_vcpus # * vm_architecture -libvirt_header = """ - +libvirt_header = """ {vm_name} {vm_uuid} {vm_description} @@ -57,14 +56,11 @@ libvirt_header = """ """ # File footer, closing devices and domain elements -libvirt_footer = """ - - -""" +libvirt_footer = """ +""" # Default devices for all VMs -devices_default = """ - /usr/bin/kvm +devices_default = """ /usr/bin/kvm @@ -76,8 +72,7 @@ devices_default = """ # Serial device # Variables: # * vm_name -devices_serial = """ - +devices_serial = """ @@ -88,13 +83,11 @@ devices_serial = """ # * vm_vncport # * vm_vnc_autoport # * vm_vnc_bind -devices_vnc = """ - +devices_vnc = """ """ # VirtIO SCSI device -devices_scsi_controller = """ - +devices_scsi_controller = """ """ # Disk device header @@ -103,8 +96,7 @@ devices_scsi_controller = """ # * disk_pool # * vm_name # * disk_id -devices_disk_header = """ - +devices_disk_header = """ @@ -117,19 +109,16 @@ devices_disk_header = """ # Variables: # * coordinator_name # * coordinator_ceph_mon_port -devices_disk_coordinator = """ - +devices_disk_coordinator = """ """ # Disk device footer -devices_disk_footer = """ - +devices_disk_footer = """ """ # vhostmd virtualization passthrough device -devices_vhostmd = """ - +devices_vhostmd = """ @@ -141,8 +130,7 @@ devices_vhostmd = """ # Variables: # * eth_macaddr # * eth_bridge -devices_net_interface = """ - +devices_net_interface = """ diff --git a/client-provisioner/provisioner_lib/provisioner.py b/client-provisioner/provisioner_lib/provisioner.py index 07680fa5..05f73ca6 100755 --- a/client-provisioner/provisioner_lib/provisioner.py +++ b/client-provisioner/provisioner_lib/provisioner.py @@ -781,7 +781,7 @@ def create_vm(self, vm_name, vm_profile): if not target_node: raise ClusterError("No ready cluster node contains at least {}+512 MB of free RAM".format(vm_data['system_details']['vram_mb'])) - print("Selecting target node {} with {} MB free ram".format(target_node, last_free)) + print("Selecting target node {} with {} MB free RAM".format(target_node, last_free)) # Verify that all configured networks are present on the cluster cluster_networks, _discard = pvc_network.getClusterNetworkList(zk_conn) @@ -1005,59 +1005,7 @@ def create_vm(self, vm_name, vm_profile): vm_memory=vm_data['system_details']['vram_mb'], vm_vcpus=vm_data['system_details']['vcpu_count'], vm_architecture=system_architecture - ).strip() - - # Add default devices - vm_schema += libvirt_schema.devices_default.strip() - - # Add serial device - if vm_data['system_details']['serial']: - vm_schema += libvirt_schema.devices_serial.format( - vm_name=vm_name - ).strip() - - # Add VNC device - if vm_data['system_details']['vnc']: - if vm_data['system_details']['vnc_bind']: - vm_vnc_bind = vm_data['system_details']['vnc_bind'] - else: - vm_vnc_bind = "127.0.0.1" - - vm_vncport = 5900 - vm_vnc_autoport = "yes" - - vm_schema += libvirt_schema.devices_vnc.format( - vm_vncport=vm_vncport, - vm_vnc_autoport=vm_vnc_autoport, - vm_vnc_bind=vm_vnc_bind - ).strip() - - # Add SCSI controller - vm_schema += libvirt_schema.devices_scsi_controller.strip() - - # Add disk devices - monitor_list = list() - coordinator_names = config['storage_hosts'] - for coordinator in coordinator_names: - monitor_list.append("{}.{}".format(coordinator, config['storage_domain'])) - - ceph_storage_secret = config['ceph_storage_secret_uuid'] - - for volume in vm_data['volumes']: - vm_schema += libvirt_schema.devices_disk_header.format( - ceph_storage_secret=ceph_storage_secret, - disk_pool=volume['pool'], - vm_name=vm_name, - disk_id=volume['disk_id'] - ).strip() - for monitor in monitor_list: - vm_schema += libvirt_schema.devices_disk_coordinator.format( - coordinator_name=monitor, - coordinator_ceph_mon_port=config['ceph_monitor_port'] - ).strip() - vm_schema += libvirt_schema.devices_disk_footer.strip() - - vm_schema += libvirt_schema.devices_vhostmd.strip() + ) # Add network devices network_id = 0 @@ -1093,11 +1041,64 @@ def create_vm(self, vm_name, vm_profile): vm_schema += libvirt_schema.devices_net_interface.format( eth_macaddr=eth_macaddr, eth_bridge=eth_bridge - ).strip() + ) network_id += 1 - vm_schema += libvirt_schema.libvirt_footer.strip() + # Add disk devices + monitor_list = list() + coordinator_names = config['storage_hosts'] + for coordinator in coordinator_names: + monitor_list.append("{}.{}".format(coordinator, config['storage_domain'])) + + ceph_storage_secret = config['ceph_storage_secret_uuid'] + + for volume in vm_data['volumes']: + vm_schema += libvirt_schema.devices_disk_header.format( + ceph_storage_secret=ceph_storage_secret, + disk_pool=volume['pool'], + vm_name=vm_name, + disk_id=volume['disk_id'] + ) + for monitor in monitor_list: + vm_schema += libvirt_schema.devices_disk_coordinator.format( + coordinator_name=monitor, + coordinator_ceph_mon_port=config['ceph_monitor_port'] + ) + vm_schema += libvirt_schema.devices_disk_footer + + vm_schema += libvirt_schema.devices_vhostmd + + # Add default devices + vm_schema += libvirt_schema.devices_default + + # Add serial device + if vm_data['system_details']['serial']: + vm_schema += libvirt_schema.devices_serial.format( + vm_name=vm_name + ) + + # Add VNC device + if vm_data['system_details']['vnc']: + if vm_data['system_details']['vnc_bind']: + vm_vnc_bind = vm_data['system_details']['vnc_bind'] + else: + vm_vnc_bind = "127.0.0.1" + + vm_vncport = 5900 + vm_vnc_autoport = "yes" + + vm_schema += libvirt_schema.devices_vnc.format( + vm_vncport=vm_vncport, + vm_vnc_autoport=vm_vnc_autoport, + vm_vnc_bind=vm_vnc_bind + ) + + # Add SCSI controller + vm_schema += libvirt_schema.devices_scsi_controller + + # Add footer + vm_schema += libvirt_schema.libvirt_footer print("Final VM schema:\n{}\n".format(vm_schema))