You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 lines
4.1 KiB

9 months ago
from leapp.models import fields, Model
from leapp.topics import BootPrepTopic, TargetUserspaceTopic, TransactionTopic
from leapp.utils.deprecation import deprecated
class TargetUserSpaceInfo(Model):
"""
Information about the target userspace container to be able to use it
The target userspace container contains the most crucial part of the target
system to be able to proceed the inplace upgrade process (let's simplify
it, and call it bootstrap of the target system). It contains (e.g.) the
package manager of the target system, so we can calculate and process
the RPM transaction. Additionally, it is used to create the upgrade
initramfs (see the UpgradeInitramfsTasks model for more information).
See the TargetUserSpaceTasks model for possibilities to influence content
of the container automatically.
"""
topic = TransactionTopic
path = fields.String()
"""
Path to the created target userspace directory
It could be used as a container. It contains top level rootfs
directories (bin, usr, var, ...).
"""
scratch = fields.String()
"""
Path to the directory with stored xfs-ftype workaround files
It's not possible to create overlayfs over XFS without the ftype attribute.
To workaround this problem, we are creating these files with EXT4 FS
inside.
"""
mounts = fields.String()
"""
Path to the directory with additional mountpoints for the target userspace
container.
E.g. the overlayfss of the host filesystems can be stored here.
"""
class CopyFile(Model):
"""
Specify a file that should be copied from the host to the target userspace
container
"""
topic = TransactionTopic
src = fields.String()
"""
Canonical path to the file (on the host) that should be copied
"""
dst = fields.Nullable(fields.String())
"""
The path inside the target userspace container where the file should
be copied.
Do not add the path to the container itself. E.g. when the file should be
installed into /etc/myconf in the container context, set /etc/myconf,
not /path/to/container/etc/myconf.
If dst is not set, the path inside the container is same as on the host.
"""
class TargetUserSpacePreupgradeTasks(Model):
"""
Influence content of the target userspace container
See the TargetUserSpaceInfo model description for more info about the
target userspace container.
"""
topic = TransactionTopic
copy_files = fields.List(fields.Model(CopyFile), default=[])
"""
List of files on the host that should be copied into the container
Directories are supported as well.
If a file/dir already exists on the destination path, it is removed &
replaced.
"""
install_rpms = fields.List(fields.String(), default=[])
"""
List of rpm names that are required to be installed when the container
is created.
"""
class TargetUserSpaceUpgradeTasks(TargetUserSpacePreupgradeTasks):
"""
Analogy to the TargetUserSpacePreupgradeTasks model, but focused
on initramfs requirements.
Generate this message to ensure all RPMs and configuration files, needed
to be able to generate the upgrade initramfs (see UpgradeInitramfsTasks),
are available inside the container.
For performance reasons (do not download & install bunch of rpms before
it's sure the upgrade is not inhibited) these tasks are executed just
in time it's 'sure' the upgrade is going to happen.
"""
@deprecated(since='2021-10-10', message='Replaced by TargetUserSpacePreupgradeTasks.')
class RequiredTargetUserspacePackages(Model):
topic = TargetUserspaceTopic
packages = fields.List(fields.String(), default=[])
@deprecated(since='2021-10-10', message='Replaced by TargetUserSpaceInitrdEnvTasks')
class RequiredUpgradeInitramPackages(Model):
"""
Requests packages to be installed so that the leapp upgrade dracut image generation will succeed
"""
topic = BootPrepTopic
packages = fields.List(fields.String(), default=[])
"""
List of packages names to install on the target userspace so their content can be included in the initram disk
"""