opsicommon.package package

Submodules

opsicommon.package.archive module

handling of archives

opsicommon.package.archive.chdir(new_dir)
Parameters:

new_dir (Path) –

Return type:

Generator[None, None, None]

opsicommon.package.archive.compress_command(archive, compression)
Parameters:
  • archive (Path) –

  • compression (str) –

Return type:

str

opsicommon.package.archive.create_archive(archive, sources, base_dir, compression=None, dereference=False)
Parameters:
  • archive (Path) –

  • sources (list[Path]) –

  • base_dir (Path) –

  • compression (Optional[str]) –

  • dereference (bool) –

Return type:

None

opsicommon.package.archive.create_archive_external(archive, sources, base_dir, compression=None, dereference=False)
Parameters:
  • archive (Path) –

  • sources (list[Path]) –

  • base_dir (Path) –

  • compression (Optional[str]) –

  • dereference (bool) –

Return type:

None

opsicommon.package.archive.create_archive_internal(archive, sources, base_dir, compression=None, dereference=False)
Parameters:
  • archive (Path) –

  • sources (list[Path]) –

  • base_dir (Path) –

  • compression (Optional[str]) –

  • dereference (bool) –

Return type:

None

opsicommon.package.archive.decompress_command(archive)
Parameters:

archive (Path) –

Return type:

str

opsicommon.package.archive.extract_archive(archive, destination, file_pattern=None)
Parameters:
  • archive (Path) –

  • destination (Path) –

  • file_pattern (Optional[str]) –

Return type:

None

opsicommon.package.archive.extract_archive_external(archive, destination, file_pattern=None)
Parameters:
  • archive (Path) –

  • destination (Path) –

  • file_pattern (Optional[str]) –

Return type:

None

opsicommon.package.archive.extract_archive_internal(archive, destination, file_pattern=None)
Parameters:
  • archive (Path) –

  • destination (Path) –

  • file_pattern (Optional[str]) –

Return type:

None

opsicommon.package.archive.extract_command(archive, file_pattern=None)
Parameters:
  • archive (Path) –

  • file_pattern (Optional[str]) –

Return type:

str

opsicommon.package.archive.get_file_type(filename)
Parameters:

filename (str | Path) –

Return type:

str

opsicommon.package.archive.untar(tar, destination, file_pattern=None)
Parameters:
  • tar (TarFile) –

  • destination (Path) –

  • file_pattern (Optional[str]) –

Return type:

None

opsicommon.package.archive.use_pigz()
Return type:

bool

opsicommon.package.associated_files module

handling of package content, hash files and more

opsicommon.package.associated_files.create_package_content_file(base_dir)
Parameters:

base_dir (Path) –

Return type:

Path

opsicommon.package.associated_files.create_package_md5_file(package_path, filename=None)
Parameters:
  • package_path (Path) –

  • filename (Optional[Path]) –

Return type:

Path

opsicommon.package.associated_files.create_package_zsync_file(package_path, filename=None)
Parameters:
  • package_path (Path) –

  • filename (Optional[Path]) –

Return type:

Path

opsicommon.package.associated_files.md5sum(path)
Parameters:

path (Path) –

Return type:

str

opsicommon.package.control_file_handling module

handling for opsi control files

opsicommon.package.control_file_handling.create_package_dependencies(pdeps)
Parameters:

pdeps (list[dict[str, Optional[str]]]) –

Return type:

list[dict[str, Optional[str]]]

opsicommon.package.control_file_handling.create_product(data_dict)
Parameters:

data_dict (dict[str, Any]) –

Return type:

Product

opsicommon.package.control_file_handling.create_product_dependencies(pid, prod_v, pack_v, pdeps)
Parameters:
  • pid (str) –

  • prod_v (str) –

  • pack_v (str) –

  • pdeps (list[dict[str, str]]) –

Return type:

list[ProductDependency]

opsicommon.package.control_file_handling.create_product_properties(pid, prod_v, pack_v, props)
Parameters:
  • pid (str) –

  • prod_v (str) –

  • pack_v (str) –

  • props (list[dict[str, Any]]) –

Return type:

list[ProductProperty]

opsicommon.package.control_file_handling.dictify_product(product)
Parameters:

product (Product) –

Return type:

dict[str, Any]

opsicommon.package.control_file_handling.dictify_product_dependencies(product_dependencies)
Parameters:

product_dependencies (list[ProductDependency]) –

Return type:

list[dict[str, Any]]

opsicommon.package.control_file_handling.dictify_product_properties(product_properties)
Parameters:

product_properties (list[ProductProperty]) –

Return type:

list[dict[str, Any]]

opsicommon.package.control_file_handling.multiline_string(value)
Parameters:

value (str) –

Return type:

String

opsicommon.package.legacy_control_file module

handling for old control file format

class opsicommon.package.legacy_control_file.LegacyControlFile(control_file=None)

Bases: object

Parameters:

control_file (Optional[Path]) –

generate_control_file(control_file)
Parameters:

control_file (Path) –

Return type:

None

optionRegex = re.compile('^([^\\:]+)\\s*\\:\\s*(.*)$')
parse_product_property(productProperty)
Parameters:

productProperty (dict[str, str]) –

Return type:

None

sectionRegex = re.compile('^\\s*\\[([^\\]]+)\\]\\s*$')
valueContinuationRegex = re.compile('^\\s(.*)$')

opsicommon.package.repo_meta module

opsi packages repository metadata handling

class opsicommon.package.repo_meta.RepoMetaMetadataFile(type, urls)

Bases: object

Parameters:
type: RepoMetaMetadataFileType
urls: list[str]
class opsicommon.package.repo_meta.RepoMetaMetadataFileType(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: StrEnum

CUSTOM = 'custom'
PACKAGES = 'packages'
class opsicommon.package.repo_meta.RepoMetaPackage(url, size, md5_hash, sha256_hash, product_id, product_version, package_version, name=None, priority=0, product_dependencies=<factory>, package_dependencies=<factory>, description=None, compatibility=None, changelog_url=None, release_notes_url=None, icon_url=None, zsync_url=None)

Bases: object

Parameters:
  • url (str | list[str]) –

  • size (int) –

  • md5_hash (str) –

  • sha256_hash (str) –

  • product_id (str) –

  • product_version (str) –

  • package_version (str) –

  • name (Optional[str]) –

  • priority (int) –

  • product_dependencies (list[RepoMetaPackageDependency]) –

  • package_dependencies (list[RepoMetaProductDependency]) –

  • description (Optional[str]) –

  • compatibility (Optional[list[RepoMetaPackageCompatibility]]) –

  • changelog_url (Optional[str]) –

  • release_notes_url (Optional[str]) –

  • icon_url (Optional[str]) –

  • zsync_url (UnionType[str, None, list[Optional[str]]]) –

changelog_url: Optional[str] = None
compatibility: Optional[list[RepoMetaPackageCompatibility]] = None
description: Optional[str] = None
classmethod from_dict(data)
Parameters:

data (dict[str, Any]) –

Return type:

RepoMetaPackage

classmethod from_package_file(package_file, url)
Parameters:
  • package_file (Path) –

  • url (str | list[str]) –

Return type:

RepoMetaPackage

icon_url: Optional[str] = None
md5_hash: str
merge(other)
Parameters:

other (RepoMetaPackage) –

Return type:

None

name: Optional[str] = None
package_dependencies: list[RepoMetaProductDependency]
package_version: str
priority: int = 0
product_dependencies: list[RepoMetaPackageDependency]
product_id: str
product_version: str
release_notes_url: Optional[str] = None
sha256_hash: str
size: int
url: str | list[str]
property version: str
zsync_url: UnionType[str, None, list[Optional[str]]] = None
class opsicommon.package.repo_meta.RepoMetaPackageCollection(schema_version='1.1', repository=<factory>, metadata_files=<factory>, packages=<factory>)

Bases: object

Parameters:
add_package(directory, package_file, *, num_allowed_versions=1, url=None, compatibility=None, add_callback=None)
Parameters:
  • directory (Path) –

  • package_file (Path) –

  • num_allowed_versions (int) –

  • url (UnionType[list[str], str, None]) –

  • compatibility (Optional[list[RepoMetaPackageCompatibility]]) –

  • add_callback (Optional[Callable]) –

Return type:

RepoMetaPackage

get_packages()
Return type:

Generator[RepoMetaPackage, None, None]

limit_versions(name, num_allowed_versions=1)
Parameters:
  • name (str) –

  • num_allowed_versions (int) –

Return type:

None

metadata_files: list[RepoMetaMetadataFile]
packages: dict[str, dict[str, RepoMetaPackage]]
read_metafile(path)
Parameters:

path (Path) –

Return type:

None

read_metafile_data(data)
Parameters:

data (bytes) –

Return type:

None

remove_package(name, version)
Parameters:
  • name (str) –

  • version (str) –

Return type:

None

repository: RepoMetaRepository
scan_packages(directory, add_callback=None)
Parameters:
  • directory (Path) –

  • add_callback (Optional[Callable]) –

Return type:

None

schema_version: str = '1.1'
write_metafile(path)
Parameters:

path (Path) –

Return type:

None

class opsicommon.package.repo_meta.RepoMetaPackageCompatibility(os, arch)

Bases: object

Parameters:
  • os (OperatingSystem) –

  • arch (Architecture) –

arch: Architecture
classmethod from_dict(data)
Parameters:

data (dict[str, str]) –

Return type:

RepoMetaPackageCompatibility

classmethod from_string(data)
Parameters:

data (str) –

Return type:

RepoMetaPackageCompatibility

os: OperatingSystem
class opsicommon.package.repo_meta.RepoMetaPackageDependency(package, version=None, condition=None)

Bases: object

Parameters:
  • package (str) –

  • version (Optional[str]) –

  • condition (Optional[str]) –

condition: Optional[str] = None
classmethod from_dict(data)
Parameters:

data (dict[str, str]) –

Return type:

RepoMetaPackageDependency

classmethod from_package_dependency(package_dependency)
Parameters:

package_dependency (PackageDependency) –

Return type:

RepoMetaPackageDependency

package: str
version: Optional[str] = None
class opsicommon.package.repo_meta.RepoMetaProductDependency(productAction, requiredProductId, requiredProductVersion=None, requiredPackageVersion=None, requiredAction=None, requiredInstallationStatus=None, requirementType=None)

Bases: object

Parameters:
  • productAction (str) –

  • requiredProductId (str) –

  • requiredProductVersion (Optional[str]) –

  • requiredPackageVersion (Optional[str]) –

  • requiredAction (Optional[str]) –

  • requiredInstallationStatus (Optional[str]) –

  • requirementType (Optional[str]) –

classmethod from_dict(data)
Parameters:

data (dict[str, str]) –

Return type:

RepoMetaProductDependency

classmethod from_product_dependency(product_dependency)
Parameters:

product_dependency (ProductDependency) –

Return type:

RepoMetaProductDependency

productAction: str
requiredAction: Optional[str] = None
requiredInstallationStatus: Optional[str] = None
requiredPackageVersion: Optional[str] = None
requiredProductId: str
requiredProductVersion: Optional[str] = None
requirementType: Optional[str] = None
class opsicommon.package.repo_meta.RepoMetaRepository(name='opsi package repository')

Bases: object

Parameters:

name (str) –

name: str = 'opsi package repository'

opsicommon.package.wim module

WIM handling

class opsicommon.package.wim.WIMImageInfo(*, index, name, directory_count, file_count, creation_time, last_modification_time, total_bytes, hard_link_bytes=0, wimboot_compatible=False, description=None, display_name=None, display_description=None, windows_info=None)

Bases: object

Parameters:
  • index (int) –

  • name (str) –

  • directory_count (int) –

  • file_count (int) –

  • creation_time (datetime) –

  • last_modification_time (datetime) –

  • total_bytes (int) –

  • hard_link_bytes (int) –

  • wimboot_compatible (bool) –

  • description (Optional[str]) –

  • display_name (Optional[str]) –

  • display_description (Optional[str]) –

  • windows_info (Optional[WIMImageWindowsInfo]) –

creation_time: datetime
description: Optional[str] = None
directory_count: int
display_description: Optional[str] = None
display_name: Optional[str] = None
file_count: int
index: int
last_modification_time: datetime
name: str
total_bytes: int
wimboot_compatible: bool = False
windows_info: Optional[WIMImageWindowsInfo] = None
class opsicommon.package.wim.WIMImageWindowsInfo(*, architecture, product_name, edition_id, installation_type, product_type, product_suite, languages, default_language, system_root, major_version, minor_version, build, service_pack_build, service_pack_level, hal=None)

Bases: object

Parameters:
  • architecture (str) –

  • product_name (str) –

  • edition_id (str) –

  • installation_type (str) –

  • product_type (str) –

  • product_suite (str) –

  • languages (list[str]) –

  • default_language (str) –

  • system_root (str) –

  • major_version (int) –

  • minor_version (int) –

  • build (int) –

  • service_pack_build (int) –

  • service_pack_level (int) –

  • hal (Optional[str]) –

architecture: str
build: int
default_language: str
edition_id: str
hal: Optional[str] = None
installation_type: str
languages: list[str]
major_version: int
minor_version: int
product_name: str
product_suite: str
product_type: str
service_pack_build: int
service_pack_level: int
system_root: str
class opsicommon.package.wim.WIMInfo(*, guid, version, part_number, total_parts, image_count, chunk_size, boot_index, size, compression=None, images)

Bases: object

Parameters:
  • guid (str) –

  • version (int) –

  • part_number (int) –

  • total_parts (int) –

  • image_count (int) –

  • chunk_size (int) –

  • boot_index (int) –

  • size (int) –

  • compression (Optional[str]) –

  • images (list[WIMImageInfo]) –

boot_index: int
chunk_size: int
compression: Optional[str] = None
guid: str
image_count: int
images: list[WIMImageInfo]
part_number: int
size: int
total_parts: int
version: int
opsicommon.package.wim.wim_capture(source, wim_file, *, image_name, image_description, boot=False, dereference=False, unix_data=True)
Parameters:
  • source (Path | str) –

  • wim_file (Path | str) –

  • image_name (Optional[str]) –

  • image_description (Optional[str]) –

  • boot (bool) –

  • dereference (bool) –

  • unix_data (bool) –

Return type:

None

opsicommon.package.wim.wim_info(wim_file)
Parameters:

wim_file (Path | str) –

Return type:

WIMInfo

Module contents

opsi package class and associated methods

class opsicommon.package.OpsiPackage(package_archive=None, temp_dir=None)

Bases: object

Basic class for opsi packages.

Parameters:
  • package_archive (Optional[Path]) –

  • temp_dir (Optional[Path]) –

create_package_archive(base_dir, compression='zstd', destination=None, dereference=False, use_dirs=None)
Parameters:
  • base_dir (Path) –

  • compression (Literal['zstd', 'bz2', 'gz']) –

  • destination (Optional[Path]) –

  • dereference (bool) –

  • use_dirs (Optional[list[Path]]) –

Return type:

Path

extract_package_archive(package_archive, destination, *, new_product_id=None, custom_separated=False)

Extact package_archive to destination. If new_product_id is supplied, the control file will be patched accordingly. If custom_separated is True the custom archives will be extracted to custom named directories. If custom_separated is False the archives will be extracted in a combined folder.

Parameters:
  • package_archive (Path) –

  • destination (Path) –

  • new_product_id (Optional[str]) –

  • custom_separated (bool) –

Return type:

None

find_and_parse_control_file(search_dir)
Parameters:

search_dir (Path) –

Return type:

Path

from_package_archive(package_archive)
Parameters:

package_archive (Path) –

Return type:

None

generate_control_file(control_file)
Parameters:

control_file (Path) –

Return type:

None

generate_control_file_legacy(control_file)
Parameters:

control_file (Path) –

Return type:

None

get_package_dependencies_as_json()
Return type:

str

package_archive_name()
Return type:

str

parse_control_file(control_file)
Parameters:

control_file (Path) –

Return type:

None

parse_control_file_legacy(control_file)
Parameters:

control_file (Path) –

Return type:

None

set_package_dependencies_from_json(json_string)
Parameters:

json_string (str) –

Return type:

None

class opsicommon.package.PackageDependency(*, package, version=None, condition=None)

Bases: object

Parameters:
  • package (str) –

  • version (Optional[str]) –

  • condition (Optional[str]) –

condition: Optional[str]
package: str
version: Optional[str]