def __new__(self, name, xml_state, root_dir, target_dir): # noqa: C901 custom_args = xml_state.get_build_type_format_options() if name == 'qcow2': return DiskFormatQcow2(xml_state, root_dir, target_dir, custom_args) elif name == 'vdi': return DiskFormatVdi(xml_state, root_dir, target_dir, custom_args) elif name == 'vhd': return DiskFormatVhd(xml_state, root_dir, target_dir, custom_args) elif name == 'vhdx': return DiskFormatVhdx(xml_state, root_dir, target_dir, custom_args) elif name == 'vhd-fixed': disk_tag = xml_state.build_type.get_vhdfixedtag() if disk_tag: custom_args.update({'--tag': disk_tag}) return DiskFormatVhdFixed(xml_state, root_dir, target_dir, custom_args) elif name == 'gce': gce_license_tag = xml_state.build_type.get_gcelicense() if gce_license_tag: custom_args.update({'--tag': gce_license_tag}) return DiskFormatGce(xml_state, root_dir, target_dir, custom_args) elif name == 'vmdk' or name == 'ova': vmdisk_section = xml_state.get_build_type_vmdisk_section() if vmdisk_section: disk_mode = vmdisk_section.get_diskmode() disk_controller = vmdisk_section.get_controller() if disk_mode: custom_args.update( {'subformat={0}'.format(disk_mode): None}) if disk_controller: custom_args.update( {'adapter_type={0}'.format(disk_controller): None}) if name == 'vmdk': return DiskFormatVmdk(xml_state, root_dir, target_dir, custom_args) else: return DiskFormatOva(xml_state, root_dir, target_dir, custom_args) elif name == 'vagrant': vagrant_config = xml_state.get_build_type_vagrant_config_section() if vagrant_config: custom_args.update({'vagrantconfig': vagrant_config}) provider = vagrant_config.get_provider() else: provider = 'undefined' if provider == 'libvirt': return DiskFormatVagrantLibVirt(xml_state, root_dir, target_dir, custom_args) else: raise KiwiDiskFormatSetupError( 'No support for {0} format with {1} provider'.format( name, provider)) elif name == 'raw': return DiskFormatBase(xml_state, root_dir, target_dir, custom_args) else: raise KiwiDiskFormatSetupError( 'No support for {0} disk format'.format(name))
def setup(self, mock_machine): mock_machine.return_value = 'x86_64' xml_data = mock.Mock() xml_data.get_name = mock.Mock(return_value='some-disk-image') self.xml_state = mock.Mock() self.xml_state.xml_data = xml_data self.xml_state.get_image_version = mock.Mock(return_value='1.2.3') self.disk_format = DiskFormatVhd(self.xml_state, 'root_dir', 'target_dir')
def setup(self): Defaults.set_platform_name('x86_64') xml_data = Mock() xml_data.get_name = Mock(return_value='some-disk-image') self.xml_state = Mock() self.xml_state.xml_data = xml_data self.xml_state.get_image_version = Mock(return_value='1.2.3') self.runtime_config = Mock() self.runtime_config.get_bundle_compression.return_value = False kiwi.storage.subformat.base.RuntimeConfig = Mock( return_value=self.runtime_config) self.disk_format = DiskFormatVhd(self.xml_state, 'root_dir', 'target_dir')
def __new__(self, name, xml_state, root_dir, target_dir): if name == 'qcow2': return DiskFormatQcow2(xml_state, root_dir, target_dir) elif name == 'vdi': return DiskFormatVdi(xml_state, root_dir, target_dir) elif name == 'vhd': return DiskFormatVhd(xml_state, root_dir, target_dir) elif name == 'vhd-fixed': custom_args = None disk_tag = xml_state.build_type.get_vhdfixedtag() if disk_tag: custom_args = {'--tag': disk_tag} return DiskFormatVhdFixed(xml_state, root_dir, target_dir, custom_args) elif name == 'gce': custom_args = None gce_license_tag = xml_state.build_type.get_gcelicense() if gce_license_tag: custom_args = {'--tag': gce_license_tag} return DiskFormatGce(xml_state, root_dir, target_dir, custom_args) elif name == 'vmdk': custom_args = None vmdisk_section = xml_state.get_build_type_vmdisk_section() if vmdisk_section: custom_args = {} disk_mode = vmdisk_section.get_diskmode() disk_controller = vmdisk_section.get_controller() if disk_mode: custom_args['subformat=%s' % disk_mode] = None if disk_controller: custom_args['adapter_type=%s' % disk_controller] = None return DiskFormatVmdk(xml_state, root_dir, target_dir, custom_args) elif name == 'vagrant': vagrant_config = xml_state.get_build_type_vagrant_config_section() if vagrant_config: provider = vagrant_config.get_provider() else: provider = 'undefined' if provider == 'libvirt': return DiskFormatVagrantLibVirt( xml_state, root_dir, target_dir, {'vagrantconfig': vagrant_config}) else: raise KiwiDiskFormatSetupError( 'No support for {0} format with {1} provider'.format( name, provider)) elif name == 'raw': return DiskFormatBase(xml_state, root_dir, target_dir) else: raise KiwiDiskFormatSetupError( 'No support for {0} disk format'.format(name))