diff --git a/0036-Perform-system-requirements-check-to-ensure-migratio.patch b/0036-Perform-system-requirements-check-to-ensure-migratio.patch new file mode 100644 index 0000000000000000000000000000000000000000..3d56682af2e2be6f72eace092f76707e4819cafa --- /dev/null +++ b/0036-Perform-system-requirements-check-to-ensure-migratio.patch @@ -0,0 +1,83 @@ +From 9dd7ac2917bf6b6f78b745593f1cd0127c2dc3fd Mon Sep 17 00:00:00 2001 +From: Weisson +Date: Thu, 29 Dec 2022 22:31:26 +0800 +Subject: [PATCH] Perform system requirements check to ensure migration. + +Signed-off-by: Weisson +--- + .../actors/systemrequirementschecker/actor.py | 22 +++++++++++++ + .../libraries/systemchecker.py | 33 +++++++++++++++++++ + 2 files changed, 55 insertions(+) + create mode 100644 repos/system_upgrade/el7toel8/actors/systemrequirementschecker/actor.py + create mode 100644 repos/system_upgrade/el7toel8/actors/systemrequirementschecker/libraries/systemchecker.py + +diff --git a/repos/system_upgrade/el7toel8/actors/systemrequirementschecker/actor.py b/repos/system_upgrade/el7toel8/actors/systemrequirementschecker/actor.py +new file mode 100644 +index 0000000..59af805 +--- /dev/null ++++ b/repos/system_upgrade/el7toel8/actors/systemrequirementschecker/actor.py +@@ -0,0 +1,22 @@ ++from leapp.actors import Actor ++from leapp import tags ++from leapp.libraries.actor import systemchecker ++ ++ ++class SystemRequirementsChecker(Actor): ++ """ ++ No documentation has been provided for the system_requirements_checker actor. ++ """ ++ ++ name = 'system_requirements_checker' ++ consumes = () ++ produces = () ++ tags = (tags.FactsPhaseTag, tags.IPUWorkflowTag, ) ++ ++ def process(self): ++ sc = systemchecker.SystemChecker() ++ vm_info = sc.virtual_memory() ++ partition = sc.partition_size_from_directory("/var/lib/leapp/") ++ ++ assert partition['free'] >= 4 * 1024 * 1024 * 1024 and vm_info['free'] >= 2 * 1024 * 1024 * 1024, "To ensure the migration, this machine must have 4G free space on disk and 2G RAM available." ++ assert sc.initd_is_symlink(), "It is crucial that /etc/init.d be a symlink to rc.d/init.d by default." +diff --git a/repos/system_upgrade/el7toel8/actors/systemrequirementschecker/libraries/systemchecker.py b/repos/system_upgrade/el7toel8/actors/systemrequirementschecker/libraries/systemchecker.py +new file mode 100644 +index 0000000..f77dde8 +--- /dev/null ++++ b/repos/system_upgrade/el7toel8/actors/systemrequirementschecker/libraries/systemchecker.py +@@ -0,0 +1,33 @@ ++import subprocess ++import os ++import sys ++import psutil ++ ++ ++class SystemChecker(object): ++ def partition_size_from_directory(self, directory): ++ statvfs = os.statvfs(directory) ++ return { ++ "free": statvfs.f_frsize * statvfs.f_bfree, ++ "total": statvfs.f_frsize * statvfs.f_blocks, ++ "blocks": statvfs.f_blocks, ++ "freeblocks": statvfs.f_bfree, ++ "blocksize": statvfs.f_frsize, ++ } ++ ++ def virtual_memory(self): ++ mem_info = psutil.virtual_memory() ++ return { ++ "free": mem_info.available, ++ "total": mem_info.total, ++ } ++ ++ def is_symlink(self, directory): ++ return os.path.islink(directory) ++ ++ def initd_is_symlink(self, initd_directory="/etc/init.d"): ++ is_symlink = self.is_symlink(initd_directory) ++ if not is_symlink: ++ return False ++ link_path = os.readlink(initd_directory) ++ return link_path == "rc.d/init.d" or link_path == "/etc/rc.d/init.d" +-- +2.30.1 (Apple Git-130) + diff --git a/leapp-repository.spec b/leapp-repository.spec index 5902fa9079bb9e0bf7e4584df6c4b872ad268cab..0893a3c19ac3c68fb1c914fd0047ebf70e263742 100644 --- a/leapp-repository.spec +++ b/leapp-repository.spec @@ -11,7 +11,7 @@ }\ py2_byte_compile "%1" "%2"} -%define anolis_release 12 +%define anolis_release 13 Name: leapp-repository Version: 0.13.0 @@ -61,6 +61,7 @@ Patch32: 0032-Keep-PermitRootLogin-authentication-behavior-after-m.patch Patch33: 0033-Read-the-driver-list-supported-by-ANCK.patch Patch34: 0034-migrear-grub2-entry-recovery.patch Patch35: 0035-GRUB2-EFI-support.patch +Patch36: 0036-Perform-system-requirements-check-to-ensure-migratio.patch BuildArch: noarch BuildRequires: python-devel @@ -73,6 +74,8 @@ Requires: leapp-repository-dependencies = 5 # IMPORTANT: this is capability provided by the python2-leapp rpm. Requires: leapp-framework >= 1.4 +Requires: python2-psutil +Requires: python3-psutil # That's temporary to ensure the obsoleted subpackage is not installed # and will be removed when the current version of leapp-repository is installed @@ -183,6 +186,9 @@ done; # no files here %changelog +* Wed Jan 18 2023 Weisson - 0.13.0-2.13 +- Perform system requirements check to ensure migration. + * Tue Jan 10 2023 - 0.13.0-2.12 - GRUB2-EFI support.