opsicommon.package package¶
Submodules¶
opsicommon.package.archive module¶
handling of archives
- class opsicommon.package.archive.ArchiveProgress(total=100, completed=0, percent_completed=0.0, _listener=<factory>, _listener_lock=<factory>)¶
Bases:
object
- Parameters:
total (
int
)completed (
int
)percent_completed (
float
)_listener (
list
[ArchiveProgressListener
])_listener_lock (
allocate_lock
)
- advance(amount)¶
- Parameters:
amount (
int
)- Return type:
None
-
completed:
int
= 0¶
-
percent_completed:
float
= 0.0¶
- register_progress_listener(listener)¶
- Parameters:
listener (
ArchiveProgressListener
)- Return type:
None
- set_completed(completed)¶
- Parameters:
completed (
int
)- Return type:
None
-
total:
int
= 100¶
- unregister_progress_listener(listener)¶
- Parameters:
listener (
ArchiveProgressListener
)- Return type:
None
- class opsicommon.package.archive.ArchiveProgressListener¶
Bases:
ABC
- progress_changed(progress)¶
Called when the progress state changes.
- Parameters:
progress (
ArchiveProgress
)- Return type:
None
- class opsicommon.package.archive.ProgressFileWrapper(filesize, fileobj, progress=None)¶
Bases:
object
- Parameters:
filesize (
int
)fileobj (
IO
[bytes
])progress (
ArchiveProgress
|None
)
- read(size=-1)¶
- Parameters:
size (
int
)- Return type:
bytes
- class opsicommon.package.archive.ProgressTarFile(*args, **kwargs)¶
Bases:
TarFile
- Parameters:
args (
Any
)kwargs (
Any
)
- addfile(tarinfo, fileobj=None)¶
Add the TarInfo object `tarinfo’ to the archive. If `fileobj’ is given, it should be a binary file, and tarinfo.size bytes are read from it and added to the archive. You can create TarInfo objects directly, or by using gettarinfo().
- Parameters:
tarinfo (
TarInfo
)fileobj (
Optional
[IO
[bytes
]])
- Return type:
None
- 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, progress_listener=None)¶
- Parameters:
archive (
Path
)sources (
list
[Path
])base_dir (
Path
)compression (
str
|None
)dereference (
bool
)progress_listener (
ArchiveProgressListener
|None
)
- Return type:
None
- opsicommon.package.archive.create_archive_external(archive, sources, base_dir, *, compression=None, dereference=False, progress_listener=None)¶
- Parameters:
archive (
Path
)sources (
list
[Path
])base_dir (
Path
)compression (
str
|None
)dereference (
bool
)progress_listener (
ArchiveProgressListener
|None
)
- Return type:
None
- opsicommon.package.archive.create_archive_internal(archive, sources, base_dir, compression=None, dereference=False, progress_listener=None)¶
- Parameters:
archive (
Path
)sources (
list
[Path
])base_dir (
Path
)compression (
str
|None
)dereference (
bool
)progress_listener (
ArchiveProgressListener
|None
)
- 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, progress_listener=None)¶
- Parameters:
archive (
Path
)destination (
Path
)file_pattern (
str
|None
)progress_listener (
ArchiveProgressListener
|None
)
- Return type:
None
- opsicommon.package.archive.extract_archive_external(archive, destination, *, file_pattern=None, progress_listener=None)¶
- Parameters:
archive (
Path
)destination (
Path
)file_pattern (
str
|None
)progress_listener (
ArchiveProgressListener
|None
)
- Return type:
None
- opsicommon.package.archive.extract_archive_internal(archive, destination, *, file_pattern=None, progress_listener=None)¶
- Parameters:
archive (
Path
)destination (
Path
)file_pattern (
str
|None
)progress_listener (
ArchiveProgressListener
|None
)
- Return type:
None
- opsicommon.package.archive.extract_command(archive, file_pattern=None)¶
- Parameters:
archive (
Path
)file_pattern (
str
|None
)
- Return type:
str
- opsicommon.package.archive.get_file_type(filename)¶
- Parameters:
filename (
str
|Path
)- Return type:
str
- opsicommon.package.archive.get_files(paths, follow_symlinks=False)¶
- Parameters:
paths (
list
[Path
])follow_symlinks (
bool
)
- Return type:
Generator
[tuple
[Path
,int
],None
,None
]
- opsicommon.package.archive.untar(tar, destination, file_pattern=None)¶
- Parameters:
tar (
TarFile
)destination (
Path
)file_pattern (
str
|None
)
- 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 (
Path
|None
)
- Return type:
Path
- opsicommon.package.associated_files.create_package_zsync_file(package_path, filename=None)¶
- Parameters:
package_path (
Path
)filename (
Path
|None
)
- 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
,str
|None
]])- Return type:
list
[dict
[str
,str
|None
]]
- opsicommon.package.control_file_handling.create_product(data_dict)¶
- Parameters:
data_dict (
dict
[str
,Any
])- Return type:
- 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 (
Path
|None
)
- 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
])
-
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, release_date=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 (
str
|None
)priority (
int
)product_dependencies (
list
[RepoMetaPackageDependency
])package_dependencies (
list
[RepoMetaProductDependency
])description (
str
|None
)compatibility (
list
[RepoMetaPackageCompatibility
] |None
)changelog_url (
str
|None
)release_notes_url (
str
|None
)icon_url (
str
|None
)zsync_url (
str
|None
|list
[str
|None
])release_date (
datetime
|None
)
-
changelog_url:
str
|None
= None¶
-
compatibility:
list
[RepoMetaPackageCompatibility
] |None
= None¶
-
description:
str
|None
= None¶
- classmethod from_dict(data)¶
- Parameters:
data (
dict
[str
,Any
])- Return type:
- classmethod from_package_file(package_file, url)¶
- Parameters:
package_file (
Path
)url (
str
|list
[str
])
- Return type:
-
icon_url:
str
|None
= None¶
-
md5_hash:
str
¶
- merge(other)¶
- Parameters:
other (
RepoMetaPackage
)- Return type:
None
-
name:
str
|None
= None¶
-
package_dependencies:
list
[RepoMetaProductDependency
]¶
-
package_version:
str
¶
-
priority:
int
= 0¶
-
product_dependencies:
list
[RepoMetaPackageDependency
]¶
-
product_id:
str
¶
-
product_version:
str
¶
-
release_date:
datetime
|None
= None¶
-
release_notes_url:
str
|None
= None¶
-
sha256_hash:
str
¶
-
size:
int
¶
-
url:
str
|list
[str
]¶
- property version: str¶
-
zsync_url:
str
|None
|list
[str
|None
] = None¶
- class opsicommon.package.repo_meta.RepoMetaPackageCollection(schema_version='1.1', repository=<factory>, metadata_files=<factory>, packages=<factory>)¶
Bases:
object
- Parameters:
schema_version (
str
)repository (
RepoMetaRepository
)metadata_files (
list
[RepoMetaMetadataFile
])packages (
dict
[str
,dict
[str
,RepoMetaPackage
]])
- 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 (
list
[str
] |str
|None
)compatibility (
list
[RepoMetaPackageCompatibility
] |None
)add_callback (
Optional
[Callable
])
- Return type:
- 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:
- classmethod from_string(data)¶
- Parameters:
data (
str
)- Return type:
-
os:
OperatingSystem
¶
- class opsicommon.package.repo_meta.RepoMetaPackageDependency(package, version=None, condition=None)¶
Bases:
object
- Parameters:
package (
str
)version (
str
|None
)condition (
str
|None
)
-
condition:
str
|None
= None¶
- classmethod from_dict(data)¶
- Parameters:
data (
dict
[str
,str
])- Return type:
- classmethod from_package_dependency(package_dependency)¶
- Parameters:
package_dependency (
PackageDependency
)- Return type:
-
package:
str
¶
-
version:
str
|None
= 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 (
str
|None
)requiredPackageVersion (
str
|None
)requiredAction (
str
|None
)requiredInstallationStatus (
str
|None
)requirementType (
str
|None
)
- classmethod from_dict(data)¶
- Parameters:
data (
dict
[str
,str
])- Return type:
- classmethod from_product_dependency(product_dependency)¶
- Parameters:
product_dependency (
ProductDependency
)- Return type:
-
productAction:
str
¶
-
requiredAction:
str
|None
= None¶
-
requiredInstallationStatus:
str
|None
= None¶
-
requiredPackageVersion:
str
|None
= None¶
-
requiredProductId:
str
¶
-
requiredProductVersion:
str
|None
= None¶
-
requirementType:
str
|None
= None¶
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 (
str
|None
)display_name (
str
|None
)display_description (
str
|None
)windows_info (
WIMImageWindowsInfo
|None
)
-
creation_time:
datetime
¶
-
description:
str
|None
= None¶
-
directory_count:
int
¶
-
display_description:
str
|None
= None¶
-
display_name:
str
|None
= None¶
-
file_count:
int
¶
-
hard_link_bytes:
int
= 0¶
-
index:
int
¶
-
last_modification_time:
datetime
¶
-
name:
str
¶
-
total_bytes:
int
¶
-
wimboot_compatible:
bool
= False¶
-
windows_info:
WIMImageWindowsInfo
|None
= 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 (
str
|None
)
-
architecture:
str
¶
-
build:
int
¶
-
default_language:
str
¶
-
edition_id:
str
¶
-
hal:
str
|None
= 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 (
str
|None
)images (
list
[WIMImageInfo
])
-
boot_index:
int
¶
-
chunk_size:
int
¶
-
compression:
str
|None
= 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 (
str
|None
)image_description (
str
|None
)boot (
bool
)dereference (
bool
)unix_data (
bool
)
- Return type:
None
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 (
Path
|None
)temp_dir (
Path
|None
)
- check_and_generate_control_file(control_file)¶
- Parameters:
control_file (
Path
)- Return type:
None
- compare_version_with_control_file(control_file, condition)¶
- Parameters:
control_file (
Path
)condition (
Literal
['=='
,'='
,'<'
,'<='
,'>'
,'>='
])
- Return type:
bool
- create_package_archive(base_dir, compression='zstd', destination=None, dereference=False, custom_name=None, custom_only=False, progress_listener=None, overwrite=True)¶
- Parameters:
base_dir (
Path
)compression (
Literal
['zstd'
,'bz2'
,'gz'
])destination (
Path
|None
)dereference (
bool
)custom_name (
str
|None
)custom_only (
bool
)progress_listener (
ArchiveProgressListener
|None
)overwrite (
bool
)
- Return type:
Path
- extract_package_archive(package_archive, destination, *, new_product_id=None, custom_separated=False, progress_listener=None)¶
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 (
str
|None
)custom_separated (
bool
)progress_listener (
ArchiveProgressListener
|None
)
- 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_dirs(base_dir, custom_name, custom_only)¶
- Parameters:
base_dir (
Path
)custom_name (
str
|None
)custom_only (
bool
)
- Return type:
List
[Path
]
- 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