class TestVmwareSettingsTempla(object): def setup(self): self.vmware = VmwareSettingsTemplate() def test_get_template_default(self): assert self.vmware.get_template().substitute( virtual_hardware_version='8', display_name='some-display-name', guest_os='suse', disk_id='0', vmdk_file='myimage.vmdk') def test_get_template_with_periphery(self): assert self.vmware.get_template(memory_setup=True, cpu_setup=True, network_setup=True, iso_setup=True).substitute( virtual_hardware_version='8', display_name='some-display-name', guest_os='suse', disk_id='0', vmdk_file='myimage.vmdk', nic_id='0', memory_size='4096', number_of_cpus='2', iso_id='0') def test_get_template_scsi_disk(self): assert self.vmware.get_template(disk_controller='lsilogic').substitute( virtual_hardware_version='8', display_name='some-display-name', guest_os='suse', disk_id='0', scsi_controller_name='lsilogic', vmdk_file='myimage.vmdk') def test_get_template_scsi_iso(self): assert self.vmware.get_template(iso_setup=True, iso_controller='scsi').substitute( virtual_hardware_version='8', display_name='some-display-name', guest_os='suse', disk_id='0', vmdk_file='myimage.vmdk', iso_id='0') def test_get_template_custom_network(self): assert self.vmware.get_template(network_setup=True, network_mac='custom', network_connection_type='link', network_driver='foo').substitute( virtual_hardware_version='8', display_name='some-display-name', guest_os='suse', disk_id='0', vmdk_file='myimage.vmdk', nic_id='0', mac_address='98:90:96:a0:3c:58', network_connection_type='link', network_driver='foo')
def setup(self): self.vmware = VmwareSettingsTemplate()
def _create_vmware_settings_file(self): """ In order to run a vmdk image in VMware products a settings file is needed or the possibility to convert machine settings into an ovf via VMware's proprietary ovftool """ template_record = { 'display_name': self.xml_state.xml_data.get_displayname() or self.xml_state.xml_data.get_name(), 'vmdk_file': self.get_target_name_for_format(self.image_format), 'virtual_hardware_version': '9', 'guest_os': 'suse-64', 'disk_id': '0' } # Basic setup machine_setup = self.xml_state.get_build_type_machine_section() memory_setup = None cpu_setup = None if machine_setup: memory_setup = machine_setup.get_memory() hardware_version = machine_setup.get_HWversion() guest_os = machine_setup.get_guestOS() cpu_setup = machine_setup.get_ncpus() if hardware_version: template_record['virtual_hardware_version'] = hardware_version if guest_os: template_record['guest_os'] = guest_os if memory_setup: template_record['memory_size'] = memory_setup if cpu_setup: template_record['number_of_cpus'] = cpu_setup # CD/DVD setup iso_setup = self.xml_state.get_build_type_vmdvd_section() iso_controller = 'ide' if iso_setup: iso_controller = iso_setup.get_controller() or iso_controller template_record['iso_id'] = iso_setup.get_id() # Network setup network_setup = self.xml_state.get_build_type_vmnic_section() network_driver = None network_connection_type = None network_mac = 'generated' if network_setup: network_driver = network_setup.get_driver() network_connection_type = network_setup.get_mode() network_mac = network_setup.get_mac() or network_mac template_record['nic_id'] = network_setup.get_interface() or '0' template_record['mac_address'] = \ network_mac template_record['network_connection_type'] = \ network_connection_type template_record['network_driver'] = \ network_driver # Disk setup disk_setup = self.xml_state.get_build_type_vmdisk_section() disk_controller = 'ide' if disk_setup: disk_controller = disk_setup.get_controller() or disk_controller disk_id = disk_setup.get_id() if not disk_controller == 'ide': template_record['scsi_controller_name'] = disk_controller if disk_id: template_record['disk_id'] = disk_id # Addition custom entries custom_entries = self.xml_state.get_build_type_vmconfig_entries() # Build settings template and write settings file settings_template = VmwareSettingsTemplate().get_template( memory_setup, cpu_setup, network_setup, iso_setup, disk_controller, iso_controller, network_mac, network_driver, network_connection_type) try: settings_file = self.get_target_name_for_format('vmx') with open(settings_file, 'w') as config: config.write(settings_template.substitute(template_record)) for custom_entry in custom_entries: config.write(custom_entry + os.linesep) except Exception as e: raise KiwiTemplateError('%s: %s' % (type(e).__name__, format(e)))
def _create_vmware_settings_file(self): # noqa: C901 """ In order to run a vmdk image in VMware products a settings file is needed or the possibility to convert machine settings into an ovf via VMware's proprietary ovftool """ template_record = { 'display_name': self.xml_state.xml_data.get_displayname() or self.xml_state.xml_data.get_name(), 'vmdk_file': self.get_target_file_path_for_format('vmdk'), 'virtual_hardware_version': '9', 'guest_os': 'suse-64', 'disk_id': '0' } # Basic setup machine_setup = self.xml_state.get_build_type_machine_section() memory_setup = None cpu_setup = None if machine_setup: memory_setup = machine_setup.get_memory() hardware_version = machine_setup.get_HWversion() guest_os = machine_setup.get_guestOS() cpu_setup = machine_setup.get_ncpus() if hardware_version: template_record['virtual_hardware_version'] = hardware_version if guest_os: template_record['guest_os'] = guest_os if memory_setup: template_record['memory_size'] = memory_setup if cpu_setup: template_record['number_of_cpus'] = cpu_setup # CD/DVD setup iso_setup = self.xml_state.get_build_type_vmdvd_section() iso_controller = 'ide' if iso_setup: iso_controller = iso_setup.get_controller() or iso_controller template_record['iso_id'] = iso_setup.get_id() # Network setup network_setup = self.xml_state.get_build_type_vmnic_section() network_driver = None network_connection_type = None network_mac = 'generated' if network_setup: network_driver = network_setup.get_driver() network_connection_type = network_setup.get_mode() network_mac = network_setup.get_mac() or network_mac template_record['nic_id'] = network_setup.get_interface() or '0' template_record['mac_address'] = \ network_mac template_record['network_connection_type'] = \ network_connection_type template_record['network_driver'] = \ network_driver # Disk setup disk_setup = self.xml_state.get_build_type_vmdisk_section() disk_controller = 'ide' if disk_setup: disk_controller = disk_setup.get_controller() or disk_controller disk_id = disk_setup.get_id() if not disk_controller == 'ide': template_record['scsi_controller_name'] = disk_controller if disk_id: template_record['disk_id'] = disk_id # Addition custom entries custom_entries = self.xml_state.get_build_type_vmconfig_entries() # Build settings template and write settings file settings_template = VmwareSettingsTemplate().get_template( memory_setup, cpu_setup, network_setup, iso_setup, disk_controller, iso_controller, network_mac, network_driver, network_connection_type ) try: settings_file = self.get_target_file_path_for_format('vmx') with open(settings_file, 'w') as config: config.write(settings_template.substitute(template_record)) for custom_entry in custom_entries: config.write(custom_entry + os.linesep) except Exception as e: raise KiwiTemplateError( '%s: %s' % (type(e).__name__, format(e)) )
class TestVmwareSettingsTempla: def setup(self): self.vmware = VmwareSettingsTemplate() def setup_method(self, cls): self.setup() def test_get_template_default(self): assert self.vmware.get_template().substitute( virtual_hardware_version='8', display_name='some-display-name', guest_os='suse', disk_id='0', vmdk_file='myimage.vmdk') def test_get_template_with_periphery(self): assert self.vmware.get_template(memory_setup=True, cpu_setup=True, iso_setup=True).substitute( virtual_hardware_version='8', display_name='some-display-name', guest_os='suse', disk_id='0', vmdk_file='myimage.vmdk', memory_size='4096', number_of_cpus='2', iso_id='0') def test_get_template_scsi_disk(self): assert self.vmware.get_template(disk_controller='lsilogic').substitute( virtual_hardware_version='8', display_name='some-display-name', guest_os='suse', disk_id='0', scsi_controller_name='lsilogic', vmdk_file='myimage.vmdk') def test_get_template_scsi_iso(self): assert self.vmware.get_template(iso_setup=True, iso_controller='scsi').substitute( virtual_hardware_version='8', display_name='some-display-name', guest_os='suse', disk_id='0', vmdk_file='myimage.vmdk', iso_id='0') def test_get_template_custom_network(self): assert self.vmware.get_template( network_setup={ '0': { 'driver': 'foo', 'connection_type': 'link', 'mac': '98:90:96:a0:3c:58' }, '1': { 'driver': 'foo', 'connection_type': 'link', 'mac': 'generated' } }).substitute(virtual_hardware_version='8', display_name='some-display-name', guest_os='suse', disk_id='0', vmdk_file='myimage.vmdk')
class TestVmwareSettingsTempla(object): def setup(self): self.vmware = VmwareSettingsTemplate() def test_get_template_default(self): assert self.vmware.get_template().substitute( virtual_hardware_version='8', display_name='some-display-name', guest_os='suse', disk_id='0', vmdk_file='myimage.vmdk' ) def test_get_template_with_periphery(self): assert self.vmware.get_template( memory_setup=True, cpu_setup=True, iso_setup=True ).substitute( virtual_hardware_version='8', display_name='some-display-name', guest_os='suse', disk_id='0', vmdk_file='myimage.vmdk', memory_size='4096', number_of_cpus='2', iso_id='0' ) def test_get_template_scsi_disk(self): assert self.vmware.get_template( disk_controller='lsilogic' ).substitute( virtual_hardware_version='8', display_name='some-display-name', guest_os='suse', disk_id='0', scsi_controller_name='lsilogic', vmdk_file='myimage.vmdk' ) def test_get_template_scsi_iso(self): assert self.vmware.get_template( iso_setup=True, iso_controller='scsi' ).substitute( virtual_hardware_version='8', display_name='some-display-name', guest_os='suse', disk_id='0', vmdk_file='myimage.vmdk', iso_id='0' ) def test_get_template_custom_network(self): assert self.vmware.get_template( network_setup={ '0': { 'driver': 'foo', 'connection_type': 'link', 'mac': '98:90:96:a0:3c:58' }, '1': { 'driver': 'foo', 'connection_type': 'link', 'mac': 'generated' } } ).substitute( virtual_hardware_version='8', display_name='some-display-name', guest_os='suse', disk_id='0', vmdk_file='myimage.vmdk' )