Update ELevate patch
This commit is contained in:
parent
09046ed604
commit
2d63448e48
@ -1061,14 +1061,43 @@ index 0000000..74ba425
|
||||
+ log.debug("Copying repo file {} to {}".format(repofile, REPO_ROOT_PATH))
|
||||
+
|
||||
+ shutil.copy(full_repo_path, REPO_ROOT_PATH)
|
||||
diff --git a/repos/system_upgrade/cloudlinux/actors/backupmysqldata/actor.py b/repos/system_upgrade/cloudlinux/actors/backupmysqldata/actor.py
|
||||
new file mode 100644
|
||||
index 0000000..8e0f0e2
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/cloudlinux/actors/backupmysqldata/actor.py
|
||||
@@ -0,0 +1,22 @@
|
||||
+import os
|
||||
+from leapp.actors import Actor
|
||||
+from leapp.tags import InterimPreparationPhaseTag, IPUWorkflowTag
|
||||
+from leapp.libraries.common.cllaunch import run_on_cloudlinux
|
||||
+from leapp.libraries.common.backup import backup_file, CLSQL_BACKUP_FILES
|
||||
+
|
||||
+
|
||||
+class BackupMySqlData(Actor):
|
||||
+ """
|
||||
+ Backup cl-mysql configuration data to an external folder.
|
||||
+ """
|
||||
+
|
||||
+ name = 'backup_my_sql_data'
|
||||
+ consumes = ()
|
||||
+ produces = ()
|
||||
+ tags = (InterimPreparationPhaseTag.Before, IPUWorkflowTag)
|
||||
+
|
||||
+ @run_on_cloudlinux
|
||||
+ def process(self):
|
||||
+ for filename in CLSQL_BACKUP_FILES:
|
||||
+ if os.path.isfile(filename):
|
||||
+ backup_file(filename, os.path.basename(filename))
|
||||
diff --git a/repos/system_upgrade/cloudlinux/actors/checkcllicense/actor.py b/repos/system_upgrade/cloudlinux/actors/checkcllicense/actor.py
|
||||
new file mode 100644
|
||||
index 0000000..2c935d7
|
||||
index 0000000..7934a9c
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/cloudlinux/actors/checkcllicense/actor.py
|
||||
@@ -0,0 +1,41 @@
|
||||
@@ -0,0 +1,42 @@
|
||||
+from leapp.actors import Actor
|
||||
+from leapp import reporting
|
||||
+from leapp.reporting import Report
|
||||
+from leapp.tags import ChecksPhaseTag, IPUWorkflowTag
|
||||
+from leapp.libraries.stdlib import CalledProcessError, run
|
||||
+from leapp.libraries.common.cllaunch import run_on_cloudlinux
|
||||
@ -1083,7 +1112,7 @@ index 0000000..2c935d7
|
||||
+
|
||||
+ name = 'check_cl_license'
|
||||
+ consumes = ()
|
||||
+ produces = ()
|
||||
+ produces = (Report,)
|
||||
+ tags = (ChecksPhaseTag, IPUWorkflowTag)
|
||||
+
|
||||
+ system_id_path = '/etc/sysconfig/rhn/systemid'
|
||||
@ -1361,12 +1390,13 @@ index 0000000..149bce2
|
||||
+
|
||||
diff --git a/repos/system_upgrade/cloudlinux/actors/checkrhnversionoverride/actor.py b/repos/system_upgrade/cloudlinux/actors/checkrhnversionoverride/actor.py
|
||||
new file mode 100644
|
||||
index 0000000..d832d34
|
||||
index 0000000..2321bde
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/cloudlinux/actors/checkrhnversionoverride/actor.py
|
||||
@@ -0,0 +1,38 @@
|
||||
@@ -0,0 +1,39 @@
|
||||
+from leapp.actors import Actor
|
||||
+from leapp import reporting
|
||||
+from leapp.reporting import Report
|
||||
+from leapp.tags import ChecksPhaseTag, IPUWorkflowTag
|
||||
+from leapp.libraries.common.cllaunch import run_on_cloudlinux
|
||||
+
|
||||
@ -1378,7 +1408,7 @@ index 0000000..d832d34
|
||||
+
|
||||
+ name = 'check_rhn_version_override'
|
||||
+ consumes = ()
|
||||
+ produces = ()
|
||||
+ produces = (Report,)
|
||||
+ tags = (ChecksPhaseTag, IPUWorkflowTag)
|
||||
+
|
||||
+ @run_on_cloudlinux
|
||||
@ -1387,7 +1417,7 @@ index 0000000..d832d34
|
||||
+ with open(up2date_config, 'r') as f:
|
||||
+ config_data = f.readlines()
|
||||
+ for line in config_data:
|
||||
+ if line.startswith('versionOverride=') and line != 'versionOverride=':
|
||||
+ if line.startswith('versionOverride=') and line.strip() != 'versionOverride=':
|
||||
+ title = 'RHN up2date: versionOverride not empty'
|
||||
+ summary = ('The RHN config file up2date has a set value of the versionOverride option.'
|
||||
+ ' This value will get overwritten by the upgrade process, and non-supported values'
|
||||
@ -1542,10 +1572,10 @@ index 0000000..4651580
|
||||
+ clmysqlrepositorysetup.process()
|
||||
diff --git a/repos/system_upgrade/cloudlinux/actors/clmysqlrepositorysetup/libraries/clmysqlrepositorysetup.py b/repos/system_upgrade/cloudlinux/actors/clmysqlrepositorysetup/libraries/clmysqlrepositorysetup.py
|
||||
new file mode 100644
|
||||
index 0000000..2d73dbb
|
||||
index 0000000..1d5e4a0
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/cloudlinux/actors/clmysqlrepositorysetup/libraries/clmysqlrepositorysetup.py
|
||||
@@ -0,0 +1,218 @@
|
||||
@@ -0,0 +1,254 @@
|
||||
+import os
|
||||
+
|
||||
+from leapp.models import (
|
||||
@ -1610,13 +1640,14 @@ index 0000000..2d73dbb
|
||||
+def process():
|
||||
+ mysql_types = []
|
||||
+ clmysql_type = None
|
||||
+ custom_repo_msgs = []
|
||||
+
|
||||
+ for repofile_full in os.listdir(REPO_DIR):
|
||||
+ # Don't touch non-repository files or copied repofiles created by Leapp.
|
||||
+ if repofile_full.endswith(LEAPP_COPY_SUFFIX) or not repofile_full.endswith(REPOFILE_SUFFIX):
|
||||
+ continue
|
||||
+ # Cut the .repo part to get only the name.
|
||||
+ repofile_name = repofile_full[:-5]
|
||||
+ repofile_name = repofile_full[:-len(REPOFILE_SUFFIX)]
|
||||
+ full_repo_path = os.path.join(REPO_DIR, repofile_full)
|
||||
+
|
||||
+ # Parse any repository files that may have something to do with MySQL or MariaDB.
|
||||
@ -1625,7 +1656,12 @@ index 0000000..2d73dbb
|
||||
+ # Process CL-provided options.
|
||||
+ if any(mark in repofile_name for mark in CL_MARKERS):
|
||||
+ repofile_data = repofileutils.parse_repofile(full_repo_path)
|
||||
+ api.current_logger().debug('Data from repofile: {}'.format(repofile_data.data))
|
||||
+ data_to_log = [
|
||||
+ (repo_data.repoid, "enabled" if repo_data.enabled else "disabled")
|
||||
+ for repo_data in repofile_data.data
|
||||
+ ]
|
||||
+
|
||||
+ api.current_logger().debug('repoids from CloudLinux repofile {}: {}'.format(repofile_name, data_to_log))
|
||||
+
|
||||
+ # Were any repositories enabled?
|
||||
+ for repo in repofile_data.data:
|
||||
@ -1635,15 +1671,14 @@ index 0000000..2d73dbb
|
||||
+ repo.repoid = repo.repoid + '-8'
|
||||
+ # releasever may be something like 8.6, while only 8 is acceptable.
|
||||
+ repo.baseurl = repo.baseurl.replace('/cl$releasever/', '/cl8/')
|
||||
+
|
||||
+ # mysqlclient is usually disabled when installed from CL MySQL Governor.
|
||||
+ # However, it should be enabled for the Leapp upgrade, seeing as some packages
|
||||
+ # from it won't update otherwise.
|
||||
+
|
||||
+ if repo.enabled or repo.repoid == 'mysqclient-8':
|
||||
+ mysql_types.append('cloudlinux')
|
||||
+ clmysql_type = get_clmysql_type()
|
||||
+ api.current_logger().debug('Generating custom cl-mysql repo: {}'.format(repo.repoid))
|
||||
+ api.produce(CustomTargetRepository(
|
||||
+ custom_repo_msgs.append(CustomTargetRepository(
|
||||
+ repoid=repo.repoid,
|
||||
+ name=repo.name,
|
||||
+ baseurl=repo.baseurl,
|
||||
@ -1651,7 +1686,12 @@ index 0000000..2d73dbb
|
||||
+ ))
|
||||
+
|
||||
+ if any(repo.enabled for repo in repofile_data.data):
|
||||
+ mysql_types.append('cloudlinux')
|
||||
+ produce_leapp_repofile_copy(repofile_data, repofile_name)
|
||||
+ else:
|
||||
+ api.current_logger().debug("No repos from CloudLinux repofile {} enabled, ignoring".format(
|
||||
+ repofile_name
|
||||
+ ))
|
||||
+
|
||||
+ # Process MariaDB options.
|
||||
+ elif any(mark in repofile_name for mark in MARIA_MARKERS):
|
||||
@ -1664,13 +1704,12 @@ index 0000000..2d73dbb
|
||||
+ # We want to replace the 7 in OS name after /yum/
|
||||
+ repo.repoid = repo.repoid + '-8'
|
||||
+ if repo.enabled:
|
||||
+ mysql_types.append('mariadb')
|
||||
+ url_parts = repo.baseurl.split('yum')
|
||||
+ url_parts[1] = 'yum' + url_parts[1].replace('7', '8')
|
||||
+ repo.baseurl = ''.join(url_parts)
|
||||
+
|
||||
+ api.current_logger().debug('Generating custom MariaDB repo: {}'.format(repo.repoid))
|
||||
+ api.produce(CustomTargetRepository(
|
||||
+ custom_repo_msgs.append(CustomTargetRepository(
|
||||
+ repoid=repo.repoid,
|
||||
+ name=repo.name,
|
||||
+ baseurl=repo.baseurl,
|
||||
@ -1680,7 +1719,12 @@ index 0000000..2d73dbb
|
||||
+ if any(repo.enabled for repo in repofile_data.data):
|
||||
+ # Since MariaDB URLs have major versions written in, we need a new repo file
|
||||
+ # to feed to the target userspace.
|
||||
+ mysql_types.append('mariadb')
|
||||
+ produce_leapp_repofile_copy(repofile_data, repofile_name)
|
||||
+ else:
|
||||
+ api.current_logger().debug("No repos from MariaDB repofile {} enabled, ignoring".format(
|
||||
+ repofile_name
|
||||
+ ))
|
||||
+
|
||||
+ # Process MySQL options.
|
||||
+ elif any(mark in repofile_name for mark in MYSQL_MARKERS):
|
||||
@ -1688,7 +1732,6 @@ index 0000000..2d73dbb
|
||||
+
|
||||
+ for repo in repofile_data.data:
|
||||
+ if repo.enabled:
|
||||
+ mysql_types.append('mysql')
|
||||
+ # MySQL package repos don't have these versions available for EL8 anymore.
|
||||
+ # There'll be nothing to upgrade to.
|
||||
+ # CL repositories do provide them, though.
|
||||
@ -1718,7 +1761,7 @@ index 0000000..2d73dbb
|
||||
+ repo.repoid = repo.repoid + '-8'
|
||||
+ repo.baseurl = repo.baseurl.replace('/el/7/', '/el/8/')
|
||||
+ api.current_logger().debug('Generating custom MySQL repo: {}'.format(repo.repoid))
|
||||
+ api.produce(CustomTargetRepository(
|
||||
+ custom_repo_msgs.append(CustomTargetRepository(
|
||||
+ repoid=repo.repoid,
|
||||
+ name=repo.name,
|
||||
+ baseurl=repo.baseurl,
|
||||
@ -1726,28 +1769,51 @@ index 0000000..2d73dbb
|
||||
+ ))
|
||||
+
|
||||
+ if any(repo.enabled for repo in repofile_data.data):
|
||||
+ mysql_types.append('mysql')
|
||||
+ produce_leapp_repofile_copy(repofile_data, repofile_name)
|
||||
+ else:
|
||||
+ api.current_logger().debug("No repos from MySQL repofile {} enabled, ignoring".format(
|
||||
+ repofile_name
|
||||
+ ))
|
||||
+
|
||||
+ if len(mysql_types) == 0:
|
||||
+ api.current_logger().debug('No installed MySQL/MariaDB detected')
|
||||
+ elif len(mysql_types) == 1:
|
||||
+ api.current_logger().debug('Detected MySQL/MariaDB type: {}, version: {}'.format(mysql_types[0], clmysql_type))
|
||||
+ else:
|
||||
+ api.current_logger().warning('Detected multiple MySQL types: {}'.format(", ".join(mysql_types)))
|
||||
+ reporting.create_report([
|
||||
+ reporting.Title('Multpile MySQL/MariaDB versions detected'),
|
||||
+ reporting.Title('MySQL database backup recommended'),
|
||||
+ reporting.Summary(
|
||||
+ 'Package repositories for multiple distributions of MySQL/MariaDB '
|
||||
+ 'were detected on the system. '
|
||||
+ 'Leapp will attempt to update all distributions detected. '
|
||||
+ 'To update only the distribution you use, disable YUM package repositories for all '
|
||||
+ 'other distributions. '
|
||||
+ 'Detected: {0}'.format(", ".join(mysql_types))
|
||||
+ 'A MySQL/MariaDB installation has been detected on this machine. '
|
||||
+ 'It is recommended to make a database backup before proceeding with the upgrade.'
|
||||
+ ),
|
||||
+ reporting.Severity(reporting.Severity.MEDIUM),
|
||||
+ reporting.Tags([reporting.Tags.REPOSITORY, reporting.Tags.OS_FACTS]),
|
||||
+ reporting.Severity(reporting.Severity.HIGH),
|
||||
+ reporting.Tags([reporting.Tags.REPOSITORY]),
|
||||
+ ])
|
||||
+
|
||||
+ for msg in custom_repo_msgs:
|
||||
+ api.produce(msg)
|
||||
+
|
||||
+ if len(mysql_types) == 1:
|
||||
+ api.current_logger().debug(
|
||||
+ "Detected MySQL/MariaDB type: {}, version: {}".format(
|
||||
+ mysql_types[0], clmysql_type
|
||||
+ )
|
||||
+ )
|
||||
+ else:
|
||||
+ api.current_logger().warning('Detected multiple MySQL types: {}'.format(", ".join(mysql_types)))
|
||||
+ reporting.create_report([
|
||||
+ reporting.Title('Multpile MySQL/MariaDB versions detected'),
|
||||
+ reporting.Summary(
|
||||
+ 'Package repositories for multiple distributions of MySQL/MariaDB '
|
||||
+ 'were detected on the system. '
|
||||
+ 'Leapp will attempt to update all distributions detected. '
|
||||
+ 'To update only the distribution you use, disable YUM package repositories for all '
|
||||
+ 'other distributions. '
|
||||
+ 'Detected: {0}'.format(", ".join(mysql_types))
|
||||
+ ),
|
||||
+ reporting.Severity(reporting.Severity.MEDIUM),
|
||||
+ reporting.Tags([reporting.Tags.REPOSITORY, reporting.Tags.OS_FACTS]),
|
||||
+ ])
|
||||
+
|
||||
+ if 'cloudlinux' in mysql_types and clmysql_type in MODULE_STREAMS.keys():
|
||||
+ mod_name, mod_stream = MODULE_STREAMS[clmysql_type].split(':')
|
||||
+ modules_to_enable = [Module(name=mod_name, stream=mod_stream)]
|
||||
@ -1825,13 +1891,14 @@ index 0000000..4eed3ec
|
||||
+ )
|
||||
diff --git a/repos/system_upgrade/cloudlinux/actors/enableyumspacewalkplugin/actor.py b/repos/system_upgrade/cloudlinux/actors/enableyumspacewalkplugin/actor.py
|
||||
new file mode 100644
|
||||
index 0000000..1e353b1
|
||||
index 0000000..95fcce9
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/cloudlinux/actors/enableyumspacewalkplugin/actor.py
|
||||
@@ -0,0 +1,55 @@
|
||||
@@ -0,0 +1,56 @@
|
||||
+from leapp.actors import Actor
|
||||
+from leapp.tags import FirstBootPhaseTag, IPUWorkflowTag
|
||||
+from leapp import reporting
|
||||
+from leapp.reporting import Report
|
||||
+from leapp.libraries.common.cllaunch import run_on_cloudlinux
|
||||
+
|
||||
+try:
|
||||
@ -1852,7 +1919,7 @@ index 0000000..1e353b1
|
||||
+
|
||||
+ name = 'enable_yum_spacewalk_plugin'
|
||||
+ consumes = ()
|
||||
+ produces = ()
|
||||
+ produces = (Report,)
|
||||
+ tags = (FirstBootPhaseTag, IPUWorkflowTag)
|
||||
+
|
||||
+ config = '/etc/yum/pluginconf.d/spacewalk.conf'
|
||||
@ -1957,10 +2024,10 @@ index 0000000..358403b
|
||||
+ )
|
||||
diff --git a/repos/system_upgrade/cloudlinux/actors/replacerpmnewconfigs/actor.py b/repos/system_upgrade/cloudlinux/actors/replacerpmnewconfigs/actor.py
|
||||
new file mode 100644
|
||||
index 0000000..209d933
|
||||
index 0000000..4ddb755
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/cloudlinux/actors/replacerpmnewconfigs/actor.py
|
||||
@@ -0,0 +1,64 @@
|
||||
@@ -0,0 +1,65 @@
|
||||
+from __future__ import print_function
|
||||
+import os
|
||||
+import fileinput
|
||||
@ -2001,6 +2068,7 @@ index 0000000..209d933
|
||||
+ os.rename(new_file_path, base_path)
|
||||
+ renamed_repofiles.append(base_reponame)
|
||||
+
|
||||
+ # Disable any old repositories.
|
||||
+ for reponame in os.listdir(REPO_DIR):
|
||||
+ if LEAPP_BACKUP_SUFFIX in reponame:
|
||||
+ repofile_path = os.path.join(REPO_DIR, reponame)
|
||||
@ -2056,6 +2124,34 @@ index 0000000..21b2164
|
||||
+ line = 'versionOverride='
|
||||
+ with open(up2date_config, 'w') as f:
|
||||
+ f.writelines(config_data)
|
||||
diff --git a/repos/system_upgrade/cloudlinux/actors/restoremysqldata/actor.py b/repos/system_upgrade/cloudlinux/actors/restoremysqldata/actor.py
|
||||
new file mode 100644
|
||||
index 0000000..d1ec819
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/cloudlinux/actors/restoremysqldata/actor.py
|
||||
@@ -0,0 +1,22 @@
|
||||
+import os
|
||||
+from leapp.actors import Actor
|
||||
+from leapp.tags import ThirdPartyApplicationsPhaseTag, IPUWorkflowTag
|
||||
+from leapp.libraries.common.cllaunch import run_on_cloudlinux
|
||||
+from leapp.libraries.common.backup import restore_file, CLSQL_BACKUP_FILES
|
||||
+
|
||||
+
|
||||
+class RestoreMySqlData(Actor):
|
||||
+ """
|
||||
+ Restore cl-mysql configuration data from an external folder.
|
||||
+ """
|
||||
+
|
||||
+ name = 'restore_my_sql_data'
|
||||
+ consumes = ()
|
||||
+ produces = ()
|
||||
+ tags = (ThirdPartyApplicationsPhaseTag, IPUWorkflowTag)
|
||||
+
|
||||
+ @run_on_cloudlinux
|
||||
+ def process(self):
|
||||
+ for filename in CLSQL_BACKUP_FILES:
|
||||
+ if os.path.isfile(filename):
|
||||
+ restore_file(filename, os.path.basename(filename))
|
||||
diff --git a/repos/system_upgrade/cloudlinux/actors/scancontrolpanel/actor.py b/repos/system_upgrade/cloudlinux/actors/scancontrolpanel/actor.py
|
||||
new file mode 100644
|
||||
index 0000000..96524ed
|
||||
@ -2182,16 +2278,17 @@ index 0000000..0a059f1
|
||||
+ api.produce(CustomTargetRepositoryFile(file=full_repo_path))
|
||||
diff --git a/repos/system_upgrade/cloudlinux/actors/switchclnchannel/actor.py b/repos/system_upgrade/cloudlinux/actors/switchclnchannel/actor.py
|
||||
new file mode 100644
|
||||
index 0000000..784075a
|
||||
index 0000000..79eb3e4
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/cloudlinux/actors/switchclnchannel/actor.py
|
||||
@@ -0,0 +1,58 @@
|
||||
@@ -0,0 +1,59 @@
|
||||
+from leapp.actors import Actor
|
||||
+from leapp.libraries.stdlib import api
|
||||
+from leapp.tags import DownloadPhaseTag, IPUWorkflowTag
|
||||
+from leapp.libraries.stdlib import CalledProcessError, run
|
||||
+from leapp.libraries.common.cllaunch import run_on_cloudlinux
|
||||
+from leapp import reporting
|
||||
+from leapp.reporting import Report
|
||||
+
|
||||
+
|
||||
+class SwitchClnChannel(Actor):
|
||||
@ -2201,7 +2298,7 @@ index 0000000..784075a
|
||||
+
|
||||
+ name = "switch_cln_channel"
|
||||
+ consumes = ()
|
||||
+ produces = ()
|
||||
+ produces = (Report,)
|
||||
+ tags = (IPUWorkflowTag, DownloadPhaseTag.Before)
|
||||
+
|
||||
+ switch_bin = "/usr/sbin/cln-switch-channel"
|
||||
@ -2246,16 +2343,15 @@ index 0000000..784075a
|
||||
+ )
|
||||
diff --git a/repos/system_upgrade/cloudlinux/actors/updatecagefs/actor.py b/repos/system_upgrade/cloudlinux/actors/updatecagefs/actor.py
|
||||
new file mode 100644
|
||||
index 0000000..71e3c66
|
||||
index 0000000..c6590d2
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/cloudlinux/actors/updatecagefs/actor.py
|
||||
@@ -0,0 +1,36 @@
|
||||
@@ -0,0 +1,37 @@
|
||||
+import os
|
||||
+
|
||||
+from leapp.actors import Actor
|
||||
+from leapp.libraries.stdlib import run, CalledProcessError
|
||||
+from leapp.reporting import Report, create_report
|
||||
+from leapp import reporting
|
||||
+from leapp.tags import FirstBootPhaseTag, IPUWorkflowTag
|
||||
+from leapp.libraries.common.cllaunch import run_on_cloudlinux
|
||||
+
|
||||
@ -2269,7 +2365,7 @@ index 0000000..71e3c66
|
||||
+
|
||||
+ name = 'update_cagefs'
|
||||
+ consumes = ()
|
||||
+ produces = ()
|
||||
+ produces = (Report,)
|
||||
+ tags = (FirstBootPhaseTag, IPUWorkflowTag)
|
||||
+
|
||||
+ @run_on_cloudlinux
|
||||
@ -2281,11 +2377,68 @@ index 0000000..71e3c66
|
||||
+ except CalledProcessError as e:
|
||||
+ # cagefsctl prints errors in stdout
|
||||
+ self.log.error(e.stdout)
|
||||
+ self.log.error('Command "cagefsctl --force-update" finished with exit code {}, '
|
||||
+ self.log.error
|
||||
+ (
|
||||
+ 'Command "cagefsctl --force-update" finished with exit code {}, '
|
||||
+ 'the filesystem inside cagefs may be out-of-date.\n'
|
||||
+ 'Check cagefsctl output above and in /var/log/cagefs-update.log, '
|
||||
+ 'rerun "cagefsctl --force-update" after fixing the issues.'.format(e.exit_code)
|
||||
+ )
|
||||
diff --git a/repos/system_upgrade/cloudlinux/libraries/backup.py b/repos/system_upgrade/cloudlinux/libraries/backup.py
|
||||
new file mode 100644
|
||||
index 0000000..249c99e
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/cloudlinux/libraries/backup.py
|
||||
@@ -0,0 +1,49 @@
|
||||
+import os
|
||||
+import shutil
|
||||
+from leapp.libraries.stdlib import api
|
||||
+
|
||||
+CLSQL_BACKUP_FILES = [
|
||||
+ "/etc/container/dbuser-map",
|
||||
+ "/etc/container/ve.cfg",
|
||||
+ "/etc/container/mysql-governor.xml",
|
||||
+ "/etc/container/governor_package_limit.json"
|
||||
+]
|
||||
+
|
||||
+BACKUP_DIR = "/var/lib/leapp/cl_backup"
|
||||
+
|
||||
+
|
||||
+def backup_file(source, destination, dir=None):
|
||||
+ # type: (str, str, str) -> None
|
||||
+ """
|
||||
+ Backup file to a backup directory.
|
||||
+
|
||||
+ :param source: Path of the file to backup.
|
||||
+ :param destination: Destination name of a file in the backup directory.
|
||||
+ :param dir: Backup directory override, defaults to None
|
||||
+ """
|
||||
+ if not dir:
|
||||
+ dir = BACKUP_DIR
|
||||
+ if not os.path.isdir(dir):
|
||||
+ os.makedirs(dir)
|
||||
+
|
||||
+ dest_path = os.path.join(dir, destination)
|
||||
+
|
||||
+ api.current_logger().debug('Backing up file: {} to {}'.format(source, dest_path))
|
||||
+ shutil.copy(source, dest_path)
|
||||
+
|
||||
+
|
||||
+def restore_file(source, destination, dir=None):
|
||||
+ # type: (str, str, str) -> None
|
||||
+ """
|
||||
+ Restore file from a backup directory.
|
||||
+
|
||||
+ :param source: Name of a file in the backup directory.
|
||||
+ :param destination: Destination path to restore the file to.
|
||||
+ :param dir: Backup directory override, defaults to None
|
||||
+ """
|
||||
+ if not dir:
|
||||
+ dir = BACKUP_DIR
|
||||
+ src_path = os.path.join(dir, source)
|
||||
+
|
||||
+ api.current_logger().debug('Restoring file: {} to {}'.format(src_path, destination))
|
||||
+ shutil.copy(src_path, destination)
|
||||
diff --git a/repos/system_upgrade/cloudlinux/libraries/cllaunch.py b/repos/system_upgrade/cloudlinux/libraries/cllaunch.py
|
||||
new file mode 100644
|
||||
index 0000000..6cbab5d
|
||||
@ -2590,10 +2743,10 @@ index 14bd6e3..f6adacf 100755
|
||||
# stability, but check is better than broken system.
|
||||
diff --git a/repos/system_upgrade/common/actors/detectwebservers/actor.py b/repos/system_upgrade/common/actors/detectwebservers/actor.py
|
||||
new file mode 100644
|
||||
index 0000000..d600eb2
|
||||
index 0000000..ac79714
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/detectwebservers/actor.py
|
||||
@@ -0,0 +1,48 @@
|
||||
@@ -0,0 +1,53 @@
|
||||
+from leapp.actors import Actor
|
||||
+from leapp import reporting
|
||||
+from leapp.reporting import Report
|
||||
@ -2630,9 +2783,14 @@ index 0000000..d600eb2
|
||||
+ "A web server is present on the system."
|
||||
+ " Depending on the source of installation, "
|
||||
+ " it may not upgrade to the new version correctly,"
|
||||
+ " since not all varoants are currently supported by Leapp."
|
||||
+ " Please check the list of packages that won't be upgraded in the report."
|
||||
+ " Alternatively, upgrade the webserver manually after the process finishes."
|
||||
+ " since not all installation configurations are currently supported by Leapp."
|
||||
+ " Failing to upgrade the webserver may result in it malfunctioning"
|
||||
+ " after the upgrade process finishes."
|
||||
+ " Please review the list of packages that won't be upgraded in the report."
|
||||
+ " If the web server packages are present in the list of packages that won't be upgraded,"
|
||||
+ " expect the server to be non-functional on the post-upgrade system."
|
||||
+ " You may still continue with the upgrade, but you'll need to"
|
||||
+ " upgrade the web server manually after the process finishes."
|
||||
+ " Detected webserver: {}.".format(server_name)
|
||||
+ ),
|
||||
+ reporting.Severity(reporting.Severity.HIGH),
|
||||
@ -4418,7 +4576,7 @@ index 6a2f5aa..51030fd 100644
|
||||
mount_names = [mount_point.fs_file for mount_point in mount_points]
|
||||
|
||||
diff --git a/repos/system_upgrade/common/libraries/repofileutils.py b/repos/system_upgrade/common/libraries/repofileutils.py
|
||||
index a3f111b..4f7ea91 100644
|
||||
index a3f111b..26e4d3e 100644
|
||||
--- a/repos/system_upgrade/common/libraries/repofileutils.py
|
||||
+++ b/repos/system_upgrade/common/libraries/repofileutils.py
|
||||
@@ -26,6 +26,18 @@ def _parse_repository(repoid, repo_data):
|
||||
@ -4454,7 +4612,7 @@ index a3f111b..4f7ea91 100644
|
||||
+ :type repofile_path: str
|
||||
+ """
|
||||
+ with open(repofile_path, mode='w') as fp:
|
||||
+ cp = utils.create_config(repodata)
|
||||
+ cp = utils.create_parser()
|
||||
+ _prepare_config(repodata, cp)
|
||||
+ cp.write(fp)
|
||||
+
|
||||
@ -4629,14 +4787,14 @@ index b7e4b21..dc038bf 100644
|
||||
|
||||
def with_rhsm(f):
|
||||
diff --git a/repos/system_upgrade/common/libraries/utils.py b/repos/system_upgrade/common/libraries/utils.py
|
||||
index 6793de6..8a38723 100644
|
||||
index 6793de6..d201677 100644
|
||||
--- a/repos/system_upgrade/common/libraries/utils.py
|
||||
+++ b/repos/system_upgrade/common/libraries/utils.py
|
||||
@@ -43,6 +43,14 @@ def parse_config(cfg=None, strict=True):
|
||||
return parser
|
||||
|
||||
|
||||
+def create_config(repodata):
|
||||
+def create_parser(strict=True):
|
||||
+ if six.PY3:
|
||||
+ parser = six.moves.configparser.ConfigParser(strict=strict) # pylint: disable=unexpected-keyword-arg
|
||||
+ else:
|
||||
@ -4962,7 +5120,7 @@ index 923bf80..9972204 100755
|
||||
|
||||
print("{} processed, {} changed, {} errors".format(processed, changed, errors))
|
||||
diff --git a/repos/system_upgrade/el7toel8/actors/opensshpermitrootlogincheck/actor.py b/repos/system_upgrade/el7toel8/actors/opensshpermitrootlogincheck/actor.py
|
||||
index f13a767..0ca198f 100644
|
||||
index f13a767..2e3412d 100644
|
||||
--- a/repos/system_upgrade/el7toel8/actors/opensshpermitrootlogincheck/actor.py
|
||||
+++ b/repos/system_upgrade/el7toel8/actors/opensshpermitrootlogincheck/actor.py
|
||||
@@ -1,7 +1,7 @@
|
||||
@ -5002,8 +5160,8 @@ index f13a767..0ca198f 100644
|
||||
+ 'to log onto this machine after the upgrade. '
|
||||
+ 'To prevent this from occuring, the PermitRootLogin option '
|
||||
+ 'has been explicity set to "yes" to preserve the default behaivour '
|
||||
+ 'after migration.'
|
||||
+ 'The original configuration file has been backed up to'
|
||||
+ 'after migration. '
|
||||
+ 'The original configuration file has been backed up to '
|
||||
+ '/etc/ssh/sshd_config.leapp_backup'
|
||||
),
|
||||
- reporting.Severity(reporting.Severity.HIGH),
|
||||
|
@ -43,7 +43,7 @@ py2_byte_compile "%1" "%2"}
|
||||
Epoch: 1
|
||||
Name: leapp-repository
|
||||
Version: 0.16.0
|
||||
Release: 6%{?dist}.elevate.8
|
||||
Release: 6%{?dist}.elevate.9
|
||||
Summary: Repositories for leapp
|
||||
|
||||
License: ASL 2.0
|
||||
|
Loading…
Reference in New Issue
Block a user