forked from msvsphere/leapp-repository
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.
156 lines
4.3 KiB
156 lines
4.3 KiB
10 months ago
|
from leapp.models import fields, Model
|
||
|
from leapp.topics import SystemInfoTopic
|
||
|
|
||
|
|
||
|
class SystemdBrokenSymlinksSource(Model):
|
||
|
"""
|
||
|
Information about broken systemd symlinks on the source system
|
||
|
"""
|
||
|
|
||
|
topic = SystemInfoTopic
|
||
|
broken_symlinks = fields.List(fields.String(), default=[])
|
||
|
"""
|
||
|
List of broken systemd symlinks on the source system
|
||
|
|
||
|
The values are absolute paths of the broken symlinks.
|
||
|
"""
|
||
|
|
||
|
|
||
|
class SystemdBrokenSymlinksTarget(SystemdBrokenSymlinksSource):
|
||
|
"""
|
||
|
Analogy to :class:`SystemdBrokenSymlinksSource`, but for the target system
|
||
|
"""
|
||
|
|
||
|
|
||
|
class SystemdServicesTasks(Model):
|
||
|
"""
|
||
|
Influence the systemd services of the target system
|
||
|
|
||
|
E.g. it could be specified explicitly whether some services should
|
||
|
be enabled or disabled after the in-place upgrade - follow descriptions
|
||
|
of particular tasks for details.
|
||
|
|
||
|
In case of conflicting tasks (e.g. the A service should be enabled and
|
||
|
disabled in the same time):
|
||
|
a) If conflicting tasks are detected during check phases,
|
||
|
the upgrade is inhibited with the proper report.
|
||
|
b) If conflicting tasks are detected during the final evaluation,
|
||
|
error logs are created and such services will be disabled.
|
||
|
"""
|
||
|
topic = SystemInfoTopic
|
||
|
|
||
|
to_enable = fields.List(fields.String(), default=[])
|
||
|
"""
|
||
|
List of systemd services to enable on the target system
|
||
|
|
||
|
Masked services will not be enabled. Attempting to enable a masked service
|
||
|
will be evaluated by systemctl as usually. The error will be logged and the
|
||
|
upgrade process will continue.
|
||
|
"""
|
||
|
|
||
|
to_disable = fields.List(fields.String(), default=[])
|
||
|
"""
|
||
|
List of systemd services to disable on the target system
|
||
|
"""
|
||
|
|
||
|
# NOTE: possible extension in case of requirement (currently not implemented):
|
||
|
# to_unmask = fields.List(fields.String(), default=[])
|
||
|
|
||
|
|
||
|
class SystemdServiceFile(Model):
|
||
|
"""
|
||
|
Information about single systemd service unit file
|
||
|
|
||
|
This model is not expected to be produced nor consumed by actors directly.
|
||
|
See the :class:`SystemdServicesInfoSource` and :class:`SystemdServicesPresetInfoTarget`
|
||
|
for more info.
|
||
|
"""
|
||
|
topic = SystemInfoTopic
|
||
|
|
||
|
name = fields.String()
|
||
|
"""
|
||
|
Name of the service unit file
|
||
|
"""
|
||
|
|
||
|
state = fields.StringEnum([
|
||
|
'alias',
|
||
|
'bad',
|
||
|
'disabled',
|
||
|
'enabled',
|
||
|
'enabled-runtime',
|
||
|
'generated',
|
||
|
'indirect',
|
||
|
'linked',
|
||
|
'linked-runtime',
|
||
|
'masked',
|
||
|
'masked-runtime',
|
||
|
'static',
|
||
|
'transient',
|
||
|
])
|
||
|
"""
|
||
|
The state of the service unit file
|
||
|
"""
|
||
|
|
||
|
|
||
|
class SystemdServicesInfoSource(Model):
|
||
|
"""
|
||
|
Information about systemd services on the source system
|
||
|
"""
|
||
|
topic = SystemInfoTopic
|
||
|
|
||
|
service_files = fields.List(fields.Model(SystemdServiceFile), default=[])
|
||
|
"""
|
||
|
List of all installed systemd service unit files
|
||
|
|
||
|
Instances of service template unit files don't have a unit file
|
||
|
and therefore aren't included, but their template files are.
|
||
|
Generated service unit files are also included.
|
||
|
"""
|
||
|
|
||
|
|
||
|
class SystemdServicesInfoTarget(SystemdServicesInfoSource):
|
||
|
"""
|
||
|
Analogy to :class:`SystemdServicesInfoSource`, but for the target system
|
||
|
|
||
|
This information is taken after the RPM Upgrade and might become
|
||
|
invalid if there are actors calling systemctl enable/disable directly later
|
||
|
in the upgrade process. Therefore it is recommended to use
|
||
|
:class:`SystemdServicesTasks` to alter the state of units in the
|
||
|
FinalizationPhase.
|
||
|
"""
|
||
|
|
||
|
|
||
|
class SystemdServicePreset(Model):
|
||
|
"""
|
||
|
Information about a preset for systemd service
|
||
|
"""
|
||
|
|
||
|
topic = SystemInfoTopic
|
||
|
service = fields.String()
|
||
|
"""
|
||
|
Name of the service, with the .service suffix
|
||
|
"""
|
||
|
|
||
|
state = fields.StringEnum(['disable', 'enable'])
|
||
|
"""
|
||
|
The state set by a preset file
|
||
|
"""
|
||
|
|
||
|
|
||
|
class SystemdServicesPresetInfoSource(Model):
|
||
|
"""
|
||
|
Information about presets for systemd services
|
||
|
"""
|
||
|
topic = SystemInfoTopic
|
||
|
|
||
|
presets = fields.List(fields.Model(SystemdServicePreset), default=[])
|
||
|
"""
|
||
|
List of all service presets
|
||
|
"""
|
||
|
|
||
|
|
||
|
class SystemdServicesPresetInfoTarget(SystemdServicesPresetInfoSource):
|
||
|
"""
|
||
|
Analogy to :class:`SystemdServicesPresetInfoSource` but for the target system
|
||
|
"""
|