def setup(self): 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='0.8.15') self.disk_format = DiskFormatGce(self.xml_state, 'root_dir', 'target_dir')
def setup(self): 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='0.8.15') self.runtime_config = mock.Mock() self.runtime_config.get_bundle_compression.return_value = True kiwi.storage.subformat.base.RuntimeConfig = mock.Mock( return_value=self.runtime_config) self.disk_format = DiskFormatGce(self.xml_state, 'root_dir', 'target_dir')
class TestDiskFormatGce(object): def setup(self): 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_distribution_name_from_boot_attribute = mock.Mock( return_value='distribution') self.xml_state.get_image_version = mock.Mock(return_value='0.8.15') self.disk_format = DiskFormatGce(self.xml_state, 'root_dir', 'target_dir') def test_post_init(self): self.disk_format.post_init({'option': 'value', '--tag': 'tag'}) assert self.disk_format.tag == 'tag' @patch('kiwi.storage.subformat.gce.Command.run') @patch('kiwi.storage.subformat.gce.ArchiveTar') @patch_open @patch('kiwi.storage.subformat.gce.mkdtemp') def test_create_image_format(self, mock_mkdtemp, mock_open, mock_archive, mock_command): mock_mkdtemp.return_value = 'tmpdir' archive = mock.Mock() mock_archive.return_value = archive self.disk_format.tag = 'gce-license' context_manager_mock = mock.Mock() mock_open.return_value = context_manager_mock file_mock = mock.Mock() enter_mock = mock.Mock() exit_mock = mock.Mock() enter_mock.return_value = file_mock setattr(context_manager_mock, '__enter__', enter_mock) setattr(context_manager_mock, '__exit__', exit_mock) self.disk_format.create_image_format() mock_command.assert_called_once_with([ 'cp', 'target_dir/some-disk-image.x86_64-0.8.15.raw', 'tmpdir/disk.raw' ]) assert mock_open.call_args_list == [call('tmpdir/manifest.json', 'w')] assert file_mock.write.call_args_list == [ call('{"licenses": ["gce-license"]}') ] mock_archive.assert_called_once_with( filename='target_dir/distribution-guest-gce-0.8.15.tar', file_list=['manifest.json', 'disk.raw']) archive.create_gnu_gzip_compressed.assert_called_once_with('tmpdir') assert self.disk_format.get_target_name_for_format('gce') == \ 'distribution-guest-gce-0.8.15.tar.gz'
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))
class TestDiskFormatGce: def setup(self): Defaults.set_platform_name('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='0.8.15') self.runtime_config = mock.Mock() self.runtime_config.get_bundle_compression.return_value = True kiwi.storage.subformat.base.RuntimeConfig = mock.Mock( return_value=self.runtime_config) self.disk_format = DiskFormatGce(self.xml_state, 'root_dir', 'target_dir') def setup_method(self, cls): self.setup() def test_post_init(self): self.disk_format.post_init({'option': 'value', '--tag': 'tag'}) assert self.disk_format.tag == 'tag' def test_store_to_result(self): result = mock.Mock() self.disk_format.store_to_result(result) result.add.assert_called_once_with( compress=False, filename='target_dir/some-disk-image.x86_64-0.8.15.tar.gz', key='disk_format_image', shasum=True, use_for_bundle=True) @patch('kiwi.storage.subformat.gce.Command.run') @patch('kiwi.storage.subformat.gce.ArchiveTar') @patch('kiwi.storage.subformat.gce.Temporary') def test_create_image_format(self, mock_Temporary, mock_archive, mock_command): mock_Temporary.return_value.new_dir.return_value.name = 'tmpdir' archive = mock.Mock() mock_archive.return_value = archive self.disk_format.tag = 'gce-license' m_open = mock_open() with patch('builtins.open', m_open, create=True): self.disk_format.create_image_format() mock_command.assert_called_once_with([ 'cp', 'target_dir/some-disk-image.x86_64-0.8.15.raw', 'tmpdir/disk.raw' ]) assert m_open.call_args_list == [call('tmpdir/manifest.json', 'w')] assert m_open.return_value.write.call_args_list == [ call('{"licenses": ["gce-license"]}') ] mock_archive.assert_called_once_with( filename='target_dir/some-disk-image.x86_64-0.8.15.tar', file_list=['manifest.json', 'disk.raw']) archive.create_gnu_gzip_compressed.assert_called_once_with('tmpdir') assert self.disk_format.get_target_file_path_for_format('gce') == \ 'target_dir/some-disk-image.x86_64-0.8.15.tar.gz'
def setup(self): 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='0.8.15' ) self.disk_format = DiskFormatGce( 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))
class TestDiskFormatGce(object): def setup(self): 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='0.8.15' ) self.disk_format = DiskFormatGce( self.xml_state, 'root_dir', 'target_dir' ) def test_post_init(self): self.disk_format.post_init({'option': 'value', '--tag': 'tag'}) assert self.disk_format.tag == 'tag' @patch('kiwi.storage.subformat.gce.Command.run') @patch('kiwi.storage.subformat.gce.ArchiveTar') @patch_open @patch('kiwi.storage.subformat.gce.mkdtemp') def test_create_image_format( self, mock_mkdtemp, mock_open, mock_archive, mock_command ): mock_mkdtemp.return_value = 'tmpdir' archive = mock.Mock() mock_archive.return_value = archive self.disk_format.tag = 'gce-license' context_manager_mock = mock.Mock() mock_open.return_value = context_manager_mock file_mock = mock.Mock() enter_mock = mock.Mock() exit_mock = mock.Mock() enter_mock.return_value = file_mock setattr(context_manager_mock, '__enter__', enter_mock) setattr(context_manager_mock, '__exit__', exit_mock) self.disk_format.create_image_format() mock_command.assert_called_once_with( [ 'cp', 'target_dir/some-disk-image.x86_64-0.8.15.raw', 'tmpdir/disk.raw' ] ) assert mock_open.call_args_list == [ call('tmpdir/manifest.json', 'w') ] assert file_mock.write.call_args_list == [ call('{"licenses": ["gce-license"]}') ] mock_archive.assert_called_once_with( filename='target_dir/some-disk-image-guest-gce-0.8.15.tar', file_list=['manifest.json', 'disk.raw'] ) archive.create_gnu_gzip_compressed.assert_called_once_with( 'tmpdir' ) assert self.disk_format.get_target_file_path_for_format('gce') == \ 'target_dir/some-disk-image-guest-gce-0.8.15.tar.gz'