pyanaconda.packaging package¶
Submodules¶
pyanaconda.packaging.dnfpayload module¶
- class pyanaconda.packaging.dnfpayload.DNFPayload(data)¶
Bases: pyanaconda.packaging.PackagePayload
- addRepo(ksrepo)¶
Add a repo to dnf and kickstart repo lists
Parameters: ksrepo (Kickstart RepoData object.) – Kickstart Repository to add Returns: None
- baseRepo¶
- checkSoftwareSelection()¶
- disableRepo(repo_id)¶
- enableRepo(repo_id)¶
- environmentDescription(environmentid)¶
- environmentGroups(environmentid, optional=True)¶
- environmentHasOption(environmentid, grpid)¶
- environmentOptionIsDefault(environmentid, grpid)¶
- environments¶
- gatherRepoMetadata()¶
- getRepo(repo_id)¶
Return the yum repo object.
- groupDescription(grpid)¶
Return name/description tuple for the group specified by id.
- groups¶
- install()¶
- isRepoEnabled(repo_id)¶
- languageGroups()¶
- mirrorEnabled¶
- postInstall()¶
Perform post-installation tasks.
- preInstall(packages=None, groups=None)¶
- repos¶
- reset()¶
- spaceRequired¶
- unsetup()¶
- updateBaseRepo(fallback=True, checkmount=True)¶
- class pyanaconda.packaging.dnfpayload.DownloadProgress¶
Bases: dnf.callback.DownloadProgress
- end(payload, status, err_msg)¶
- progress(payload, done)¶
- start(total_files, total_size)¶
- class pyanaconda.packaging.dnfpayload.PayloadRPMDisplay(queue)¶
Bases: dnf.yum.rpmtrans.LoggingTransactionDisplay
- event(package, action, te_current, te_total, ts_current, ts_total)¶
- pyanaconda.packaging.dnfpayload.do_transaction(base, queue)¶
pyanaconda.packaging.livepayload module¶
- TODO
error handling!!!
document all methods
- LiveImagePayload
- register the live image, either via self.data.method or in setup using storage
- class pyanaconda.packaging.livepayload.DownloadProgress¶
Bases: object
Provide methods for download progress reporting.
- start(url, size)¶
Start of download
Parameters:
- class pyanaconda.packaging.livepayload.LiveImageKSPayload(*args, **kwargs)¶
Bases: pyanaconda.packaging.livepayload.LiveImagePayload
Install using a live filesystem image from the network
- install()¶
Install the payload if it is a tar. Otherwise fall back to rsync of INSTALL_TREE
- is_tarfile¶
Return True if the url ends with a tar suffix
- kernelVersionList¶
- preInstall(*args, **kwargs)¶
Get image and loopback mount it.
This is called after partitioning is setup, we now have space to grab the image. If it is a network source Download it to sysroot and provide feedback during the download (using urlgrabber callback).
If it is a file:// source then use the file directly.
- setup(storage, instClass)¶
Check the availability and size of the image.
- spaceRequired¶
We don’t know the filesystem size until it is downloaded.
Default to 1G which should be enough for a minimal image download and install.
- unsetup()¶
- class pyanaconda.packaging.livepayload.LiveImagePayload(*args, **kwargs)¶
Bases: pyanaconda.packaging.ImagePayload
A LivePayload copies the source image onto the target system.
- install()¶
Install the payload.
- kernelVersionList¶
- postInstall()¶
Perform post-installation tasks.
- preInstall(packages=None, groups=None)¶
Perform pre-installation tasks.
- progress()¶
Monitor the amount of disk space used on the target and source and update the hub’s progress bar.
- setup(storage, instClass)¶
- spaceRequired¶
- unsetup()¶
pyanaconda.packaging.rpmostreepayload module¶
- class pyanaconda.packaging.rpmostreepayload.RPMOSTreePayload(data)¶
Bases: pyanaconda.packaging.ArchivePayload
A RPMOSTreePayload deploys a tree (possibly with layered packages) onto the target system.
- handlesBootloaderConfiguration¶
- install()¶
- kernelVersionList¶
- postInstall()¶
- prepareMountTargets(storage)¶
- recreateInitrds()¶
- spaceRequired¶
pyanaconda.packaging.tarpayload module¶
- TODO
- error handling!!!
- document all methods
pyanaconda.packaging.yumpayload module¶
- TODO
document all methods
- YumPayload
write test cases
more logging in key methods
- handling of proxy needs cleanup
passed to anaconda as –proxy, –proxyUsername, and –proxyPassword
- drop the use of a file for proxy and ftp auth info
specified via KS as a URL
- class pyanaconda.packaging.yumpayload.YumPayload(data)¶
Bases: pyanaconda.packaging.PackagePayload
A YumPayload installs packages onto the target system using yum.
User-defined (aka: addon) repos exist both in ksdata and in yum. They are the only repos in ksdata.repo. The repos we find in the yum config only exist in yum. Lastly, the base repo exists in yum and in ksdata.method.
- addRepo(yum_payload, *args, **kwargs)¶
Add a ksdata repo.
- baseRepo¶
Return the current base repo id :returns: repo id or None
Methods that change (or could change) the base_repo need to be decorated with @refresh_base_repo
- calculateSpaceNeeds()¶
- checkSoftwareSelection()¶
- deleteYumTS()¶
- disableRepo(yum_payload, *args, **kwargs)¶
Disable a repo as specified by id.
- enableRepo(yum_payload, *args, **kwargs)¶
Enable a repo as specified by id.
- environmentDescription(environmentid)¶
Return name/description tuple for the environment specified by id.
- environmentGroups(environmentid, optional=True)¶
- environmentHasOption(environmentid, grpid)¶
- environmentOptionIsDefault(environmentid, grpid)¶
- environmentSelected(environmentid)¶
- environments¶
List of environment ids.
- gatherRepoMetadata(yum_payload, *args, **kwargs)¶
- getRepo(repo_id)¶
Return the yum repo object.
- groupDescription(groupid)¶
Return name/description tuple for the group specified by id.
- groups¶
List of group ids.
- install()¶
Install the payload.
This writes out the yum transaction and then uses a Process thread to execute it in a totally separate process.
It monitors the status of the install and logs debug info, updates the progress meter and cleans up when it is done.
- isRepoEnabled(repo_id)¶
Return True if repo is enabled.
- languageGroups()¶
- mirrorEnabled¶
- packages¶
- postInstall()¶
Perform post-installation tasks.
- preInstall(packages=None, groups=None)¶
Perform pre-installation tasks.
- preStorage()¶
- release()¶
- removeRepo(yum_payload, *args, **kwargs)¶
Remove a repo as specified by id.
- repos¶
- reset()¶
Reset this instance to its initial (unconfigured) state.
- selectRequiredPackages()¶
- setup(storage, instClass)¶
- spaceRequired¶
The total disk space (Size) required for the current selection.
- unsetup()¶
- updateBaseRepo(yum_payload, *args, **kwargs)¶
Update the base repo based on self.data.method.
- Tear down any previous base repo devices, symlinks, &c.
- Reset the YumBase instance.
- Try to convert the new method to a base repo.
- If that fails, we’ll use whatever repos yum finds in the config.
- Set up addon repos.
- Filter out repos that don’t make sense to have around.
- Get metadata for all enabled repos, disabling those for which the retrieval fails.
- writeMultiLibConfig()¶
- pyanaconda.packaging.yumpayload.refresh_base_repo(cond_fn=None)¶
Function returning decorator for methods that invalidate base repo. After the method has been run the base repo will be refreshed
Parameters: cond_fn – condition function telling if base repo should be invalidated or not (HAS TO TAKE THE SAME ARGUMENTS AS THE DECORATED FUNCTION) While the method runs the base_repo is set to None.
Module contents¶
- TODO
- error handling!!!
- document all methods
- class pyanaconda.packaging.ArchivePayload(data)¶
Bases: pyanaconda.packaging.ImagePayload
An ArchivePayload unpacks source archives onto the target system.
- exception pyanaconda.packaging.DependencyError¶
- exception pyanaconda.packaging.ImageDirectoryMountError¶
- exception pyanaconda.packaging.ImageMissingError¶
- class pyanaconda.packaging.ImagePayload(data)¶
Bases: pyanaconda.packaging.Payload
An ImagePayload installs an OS image to the target system.
- exception pyanaconda.packaging.MetadataError¶
- exception pyanaconda.packaging.NoNetworkError¶
- exception pyanaconda.packaging.NoSuchGroup(group, adding=True, required=False)¶
- exception pyanaconda.packaging.NoSuchPackage(package, required=False)¶
- class pyanaconda.packaging.PackagePayload(data)¶
Bases: pyanaconda.packaging.Payload
A PackagePayload installs a set of packages onto the target system.
- DEFAULT_REPOS = ['anaconda', 'rawhide']¶
- ISOImage¶
The location of a mounted ISO repo, or None.
- addDriverRepos()¶
Add driver repositories and packages
- environmentAddons¶
- environmentDescription(environmentid)¶
- environmentGroups(environmentid, optional=True)¶
- environmentHasOption(environmentid, grpid)¶
- environmentOptionIsDefault(environmentid, grpid)¶
- environments¶
- groupDescription(groupid)¶
- groups¶
- kernelPackages¶
- kernelVersionList¶
- preInstall(packages=None, groups=None)¶
- repos¶
A list of repo identifiers, not objects themselves.
- reset()¶
- reset_install_device()¶
Unmount the previous base repo and reset the install_device
- rpmMacros¶
A list of (name, value) pairs to define as macros in the rpm transaction.
- selectEnvironment(environmentid, excluded=None)¶
- class pyanaconda.packaging.Payload(data)¶
Bases: object
Payload is an abstract class for OS install delivery methods.
data is a kickstart.AnacondaKSHandler class
- addOns¶
A list of addon repo identifiers.
- addRepo(newrepo)¶
Add the repo given by the pykickstart Repo object newrepo to the system. The repo will be automatically enabled and its metadata fetched.
Duplicate repos will not raise an error. They should just silently take the place of the previous value.
- baseRepo¶
Get the identifier of the current base repo. or None
- deselectGroup(groupid)¶
- disableRepo(repo_id)¶
- dracutSetupArgs()¶
- enableRepo(repo_id)¶
- gatherRepoMetadata()¶
- getAddOnRepo(repo_id)¶
Return a ksdata Repo instance matching the specified repo id.
- groupSelected(groupid)¶
- install()¶
Install the payload.
- isRepoEnabled(repo_id)¶
Return True if repo is enabled.
- kernelVersionList¶
An iterable of the kernel versions installed by the payload.
- languageGroups()¶
- mirrorEnabled¶
Is the closest/fastest mirror option enabled? This does not make sense for those payloads that do not support this concept.
- needsNetwork¶
- postInstall()¶
Perform post-installation tasks.
- preInstall(packages=None, groups=None)¶
Perform pre-installation tasks.
- preStorage()¶
Do any payload-specific work necessary before writing the storage configuration. This method need not be provided by all payloads.
- prepareMountTargets(storage)¶
Run when physical storage is mounted, but other mount points may not exist. Used by the RPMOSTreePayload subclass.
- recreateInitrds()¶
Recreate the initrds by calling new-kernel-pkg
This needs to be done after all configuration files have been written, since dracut depends on some of them.
Returns: None
- release()¶
Release any resources in use by this object, but do not do final cleanup. This is useful for dealing with payload backends that do not get along well with multithreaded programs.
- removeRepo(repo_id)¶
- reset()¶
Reset the instance, not including ksdata.
- selectGroup(groupid, default=True, optional=False)¶
- setup(storage, instClass)¶
Do any payload-specific setup.
- spaceRequired¶
The total disk space (Size) required for the current selection.
- unsetup()¶
Invalidate a previously setup paylaod.
- updateBaseRepo(fallback=True, checkmount=True)¶
Update the base repository from ksdata.method.
- exception pyanaconda.packaging.PayloadError¶
Bases: exceptions.Exception
- exception pyanaconda.packaging.PayloadInstallError¶
- class pyanaconda.packaging.PayloadManager¶
Bases: object
Framework for starting and watching the payload thread.
This class defines several states, and events can be triggered upon reaching a state. Depending on whether a state has already been reached when a listener is added, the event code may be run in either the calling thread or the payload thread. The event code will block the payload thread regardless, so try not to run anything that takes a long time.
All states except STATE_ERROR are expected to happen linearly, and adding a listener for a state that has already been reached or passed will immediately trigger that listener. For example, if the payload thread is currently in STATE_GROUP_MD, adding a listener for STATE_NETWORK will immediately run the code being added for STATE_NETWORK.
The payload thread data should be accessed using the payloadMgr object, and the running thread can be accessed using threadMgr with the THREAD_PAYLOAD constant, if you need to wait for it or something. The thread should be started using payloadMgr.restartThread.
- ERROR_MD = 'Error downloading package metadata'¶
- ERROR_SETUP = 'Failed to set up installation source'¶
- ERROR_SOURCE = 'No installation source available'¶
- STATE_ERROR = -1¶
- STATE_FINISHED = 5¶
- STATE_GROUP_MD = 4¶
- STATE_NETWORK = 2¶
- STATE_PACKAGE_MD = 3¶
- STATE_START = 0¶
- STATE_STORAGE = 1¶
- addListener(event_id, func)¶
Add a listener for an event.
Parameters: - event_id (int) – The event to listen for, one of the EVENT_* constants
- func (function) – An object to call when the event is reached
- error¶
- restartThread(storage, ksdata, payload, instClass, fallback=False, checkmount=True)¶
Start or restart the payload thread.
This method starts a new thread to restart the payload thread, so this method’s return is not blocked by waiting on the previous payload thread. If there is already a payload thread restart pending, this method has no effect.
Parameters: - storage (blivet.Blivet) – The blivet storage instance
- ksdata (kickstart.AnacondaKSHandler) – The kickstart data instance
- payload (packaging.Payload) – The payload instance
- instClass (installclass.BaseInstallClass) – The install class instance
- fallback (bool) – Whether to fall back to the default repo in case of error
- checkmount (bool) – Whether to check for valid mounted media
- exception pyanaconda.packaging.PayloadSetupError¶
- pyanaconda.packaging.versionCmp(v1, v2)¶
Compare two version number strings.