class InitRamStartPhase(Phase):
        """Boot into the upgrade initramfs, mount disks, etc."""

        name = 'InitRamStart'
        filter = TagFilter(tags.InitRamStartPhaseTag)
        policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
        flags = Flags()
    class InterimPreparationPhase(Phase):
        """Prepare an initial RAM file system (if required). Setup bootloader."""

        name = 'InterimPreparation'
        filter = TagFilter(tags.InterimPreparationPhaseTag)
        policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
        flags = Flags(request_restart_after_phase=True)
    class PreparationPhase(Phase):
        """Prepare the environment to ascertain success of the RPM upgrade transaction."""

        name = 'Preparation'
        filter = TagFilter(tags.PreparationPhaseTag)
        policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
        flags = Flags()
    class LateTestsPhase(Phase):
        """Last tests before the RPM upgrade that have to be done with the new kernel and systemd."""

        name = 'LateTests'
        filter = TagFilter(tags.LateTestsPhaseTag)
        policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
        flags = Flags()
    class ThirdPartyApplicationsPhase(Phase):
        """Analogy to the Applications phase, but for third party and custom applications."""

        name = 'ThirdPartyApplications'
        filter = TagFilter(tags.ThirdPartyApplicationsPhaseTag)
        policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
        flags = Flags()
    class RPMUpgradePhase(Phase):
        """Perform the RPM transaction, i.e. upgrade the RPMs."""

        name = 'RPMUpgrade'
        filter = TagFilter(tags.RPMUpgradePhaseTag)
        policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
        flags = Flags(is_checkpoint=True)
    class ReportsPhase(Phase):
        """Provide user with the result of the checks."""

        name = 'Reports'
        filter = TagFilter(tags.ReportPhaseTag)
        policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
        flags = Flags()
    class FirstBootPhase(Phase):
        """Actions to be done right after booting into the upgraded system."""

        name = 'FirstBoot'
        filter = TagFilter(tags.FirstBootPhaseTag)
        policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
        flags = Flags()
    class DownloadPhase(Phase):
        """Download data needed for the upgrade and prepare RPM transaction for the upgrade."""

        name = 'Download'
        filter = TagFilter(tags.DownloadPhaseTag)
        policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
        flags = Flags()
Exemple #10
0
    class FinalizationPhase(Phase):
        '''Additional actions that should be done before rebooting into the upgraded system.

        For example SELinux relabeling.
        '''
        name = 'Finalization'
        filter = TagFilter(FinalizationPhaseTag)
        policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
        flags = Flags(restart_after_phase=True)
Exemple #11
0
    class FactsCollectionPhase(Phase):
        '''Get information (facts) about the system (e.g. installed packages, configuration, ...).

        No decision should be done in this phase. Scan the system to get information you need and provide
        it to other actors in the following phases.
        '''
        name = 'FactsCollection'
        filter = TagFilter(FactsPhaseTag)
        policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
        flags = Flags()
Exemple #12
0
    class ApplicationsPhase(Phase):
        '''Perform the neccessary steps to finish upgrade of applications provided by Red Hat.

        This may include moving/renaming of configuration files, modifying configuration of applications to be able
        to run correctly and with as similar behaviour to the original as possible.
        '''
        name = 'Applications'
        filter = TagFilter(ApplicationsPhaseTag)
        policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
        flags = Flags()
Exemple #13
0
    class ChecksPhase(Phase):
        '''Check upgradability of the system, produce user question if needed and produce output for the report.

        Check whether it is possible to upgrade the system and detect potential risks. It is not expected to get
        additional information about the system in this phase, but rather work with data provided by the actors from
        the FactsCollection. When a potential risk is detected for upgrade, produce messages for the Reports phase.
        '''
        name = 'Checks'
        filter = TagFilter(ChecksPhaseTag)
        policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
        flags = Flags()
    class TargetTransactionFactsCollectionPhase(Phase):
        """
        Get information about target system. Analogy of FactsCollectionPhase for target system.

        Here we can collect information what repositories are available on target system,
        what is expected calculation of target transaction (what will be instaled, removed, ...
        """

        name = 'TargetTransactionFactsCollection'
        filter = TagFilter(tags.TargetTransactionFactsPhaseTag)
        policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
        flags = Flags()
    class TargetTransactionChecksPhase(Phase):
        """
        Checks upgradability regarding the information gathered about the target system.

        Check whether expected repositories and rpms are available, what rpms are planned
        to install, remove, ...

        IOW, checks related to rpm transaction mainly.
        """

        name = 'TargetTransactionCheck'
        filter = TagFilter(tags.TargetTransactionChecksPhaseTag)
        policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
        flags = Flags()
Exemple #16
0
class Phase(with_metaclass(PhaseMeta)):
    name = None
    filter = None
    policies = Policies(Policies.Errors.FailPhase,
                        Policies.Retry.Phase)
    flags = Flags()

    @classmethod
    def get_index(cls):
        return PhaseMeta.classes.index(cls)

    @classmethod
    def serialize(cls):
        """
        :return: Dictionary with the serialized representation of the phase
        """
        return {
            'name': cls.name,
            'index': cls.get_index(),
            'filter': cls.filter.serialize() if cls.filter else None,
            'policies': cls.policies.serialize(),
            'flags': cls.flags.serialize(),
        }
 class LateTestsPhase(Phase):
     name = 'LateTests'
     filter = TagFilter(LateTestsTag)
     policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
     flags = Flags()
 class ChecksPhase(Phase):
     name = 'Checks'
     filter = TagFilter(ChecksTag)
     policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
     flags = Flags()
 class FactsCollectionPhase(Phase):
     name = 'Facts collection'
     filter = TagFilter(FactsTag)
     policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
     flags = Flags()
 class AttachPackageReposPhase(Phase):
     name = 'AttachPackageRepos'
     filter = TagFilter(AttachPackageReposTag)
     policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
     flags = Flags()
 class ReportsPhase(Phase):
     name = 'Reports'
     filter = TagFilter(ReportTag)
     policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
     flags = Flags()
 class DownloadPhase(Phase):
     name = 'Download'
     filter = TagFilter(DownloadTag)
     policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
     flags = Flags()
 class PlanningPhase(Phase):
     name = 'Planning'
     filter = TagFilter(PlanningTag)
     policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
     flags = Flags()
 class InitRamStartPhase(Phase):
     name = 'InitRamStart'
     filter = TagFilter(InitRamStartTag)
     policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
     flags = Flags()
 class InterimPreparationPhase(Phase):
     name = 'InterimPreparation'
     filter = TagFilter(InterimPreparationTag)
     policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
     flags = Flags(restart_after_phase=True)
 class NetworkPhase(Phase):
     name = 'Network'
     filter = TagFilter(NetworkTag)
     policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
     flags = Flags()
 class StoragePhase(Phase):
     name = 'Storage'
     filter = TagFilter(StorageTag)
     policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
     flags = Flags()
 class ApplicationsPhase(Phase):
     name = 'Applications'
     filter = TagFilter(ApplicationsTag)
     policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
     flags = Flags()
 class RPMUpgradePhase(Phase):
     name = 'RPMUpgrade'
     filter = TagFilter(RPMUpgradeTag)
     policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
     flags = Flags()
 class PreparationPhase(Phase):
     name = 'Preparation'
     filter = TagFilter(PreparationTag)
     policies = Policies(Policies.Errors.FailPhase, Policies.Retry.Phase)
     flags = Flags()