kiwi-el8/kiwi/storage/subformat/template/vmware_settings.py
Marcus Schäfer d1e689e00b
Create VMware settings file for vmdk subformat
In order to run or convert the vmdk with VMware products a
settings file is required.
2016-05-11 18:46:02 +02:00

167 lines
5.7 KiB
Python

# Copyright (c) 2015 SUSE Linux GmbH. All rights reserved.
#
# This file is part of kiwi.
#
# kiwi is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# kiwi is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with kiwi. If not, see <http://www.gnu.org/licenses/>
#
from string import Template
from textwrap import dedent
class VmwareSettingsTemplate(object):
"""
VMware machine settings template
"""
def __init__(self):
self.cr = '\n'
self.header = dedent('''
#!/usr/bin/env vmware
# kiwi generated VMware settings file
config.version = "8"
tools.syncTime = "true"
uuid.action = "create"
virtualHW.version = "${virtual_hardware_version}"
displayName = "${display_name}"
guestOS = "${guest_os}"
''').strip() + self.cr
self.ide_disk = dedent('''
ide${disk_id}:0.present = "true"
ide${disk_id}:0.fileName= "${vmdk_file}"
ide${disk_id}:0.redo = ""
''').strip() + self.cr
self.scsi_disk = dedent('''
scsi${disk_id}.present = "true"
scsi${disk_id}.sharedBus = "none"
scsi${disk_id}.virtualDev = "${scsi_controller_name}"
scsi${disk_id}:0.present = "true"
scsi${disk_id}:0.fileName = "${vmdk_file}"
scsi${disk_id}:0.deviceType = "scsi-hardDisk"
''').strip() + self.cr
self.network = dedent('''
ethernet${nic_id}.present = "true"
ethernet${nic_id}.allow64bitVmxnet = "true"
''').strip() + self.cr
self.network_mac_static = dedent('''
ethernet${nic_id}.addressType = "static"
ethernet${nic_id}.address = "${mac_address}"
''').strip() + self.cr
self.network_mac_generated = dedent('''
ethernet${nic_id}.addressType = "generated"
''').strip() + self.cr
self.network_driver = dedent('''
ethernet${nic_id}.virtualDev = "${network_driver}"
''').strip() + self.cr
self.network_connection_type = dedent('''
ethernet${nic_id}.connectionType = "${network_connection_type}"
''').strip() + self.cr
self.memory = dedent('''
memsize = "${memory_size}"
''').strip() + self.cr
self.number_of_cpus = dedent('''
numvcpus = "${number_of_cpus}"
''').strip() + self.cr
self.ide_iso = dedent('''
ide${iso_id}:0.present = "true"
ide${iso_id}:0.deviceType = "cdrom-raw"
ide${iso_id}:0.autodetect = "true"
ide${iso_id}:0.startConnected = "true"
''').strip() + self.cr
self.scsi_iso = dedent('''
scsi${iso_id}:0.present = "true"
scsi${iso_id}:0.deviceType = "cdrom-raw"
scsi${iso_id}:0.autodetect = "true"
scsi${iso_id}:0.startConnected = "true"
''').strip() + self.cr
self.usb = dedent('''
usb.present = "true"
''').strip() + self.cr
self.defaults = dedent('''
priority.grabbed = "normal"
priority.ungrabbed = "normal"
powerType.powerOff = "soft"
powerType.powerOn = "soft"
powerType.suspend = "soft"
powerType.reset = "soft"
''').strip() + self.cr
def get_template(
self, memory_setup=False, cpu_setup=False, network_setup=False,
iso_setup=False, disk_controller='ide', iso_controller='ide',
network_mac='generated', network_driver=None,
network_connection_type=None
):
"""
VMware machine configuration template
:param bool memory_setup: with main memory setup true|false
:param bool cpu_setup: with number of CPU's setup true|false
:param bool network_setup: with network emulation true|false
:param bool iso_setup: with CD/DVD drive emulation true|false
:param string disk_controller: add disk controller setup to template
:param string iso_controller: add CD/DVD controller setup to template
:param string network_mac: add static MAC address setup to template
:param string network_driver: add network driver setup to template
:param string network_connection_type: add connection type to template
:rtype: Template
"""
template_data = self.header
template_data += self.defaults
if memory_setup:
template_data += self.memory
if cpu_setup:
template_data += self.number_of_cpus
if disk_controller == 'ide':
template_data += self.ide_disk
else:
template_data += self.scsi_disk
if network_setup:
template_data += self.network
if network_mac == 'generated':
template_data += self.network_mac_generated
else:
template_data += self.network_mac_static
if network_driver:
template_data += self.network_driver
if network_connection_type:
template_data += self.network_connection_type
if iso_setup:
if iso_controller == 'ide':
template_data += self.ide_iso
else:
template_data += self.scsi_iso
template_data += self.usb
return Template(template_data)