コード例 #1
0
 def setup(self):
     self.vmware = VmwareSettingsTemplate()
コード例 #2
0
    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)))