Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions src/core/src/bootstrap/ConfigurationFactory.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
from core.src.local_loggers.CompositeLogger import CompositeLogger

from core.src.package_managers.AptitudePackageManager import AptitudePackageManager
from core.src.package_managers.TdnfPackageManager import TdnfPackageManager
from core.src.package_managers.AzL3TdnfPackageManager import AzL3TdnfPackageManager
from core.src.package_managers.YumPackageManager import YumPackageManager
from core.src.package_managers.ZypperPackageManager import ZypperPackageManager

Expand Down Expand Up @@ -70,17 +70,17 @@ def __init__(self, log_file_path, events_folder, telemetry_supported):

self.configurations = {
'apt_prod_config': self.new_prod_configuration(Constants.APT, AptitudePackageManager),
'tdnf_prod_config': self.new_prod_configuration(Constants.TDNF, TdnfPackageManager),
'tdnf_prod_config': self.new_prod_configuration(Constants.TDNF, AzL3TdnfPackageManager),
'yum_prod_config': self.new_prod_configuration(Constants.YUM, YumPackageManager),
'zypper_prod_config': self.new_prod_configuration(Constants.ZYPPER, ZypperPackageManager),

'apt_dev_config': self.new_dev_configuration(Constants.APT, AptitudePackageManager),
'tdnf_dev_config': self.new_dev_configuration(Constants.TDNF, TdnfPackageManager),
'tdnf_dev_config': self.new_dev_configuration(Constants.TDNF, AzL3TdnfPackageManager),
'yum_dev_config': self.new_dev_configuration(Constants.YUM, YumPackageManager),
'zypper_dev_config': self.new_dev_configuration(Constants.ZYPPER, ZypperPackageManager),

'apt_test_config': self.new_test_configuration(Constants.APT, AptitudePackageManager),
'tdnf_test_config': self.new_test_configuration(Constants.TDNF, TdnfPackageManager),
'tdnf_test_config': self.new_test_configuration(Constants.TDNF, AzL3TdnfPackageManager),
'yum_test_config': self.new_test_configuration(Constants.YUM, YumPackageManager),
'zypper_test_config': self.new_test_configuration(Constants.ZYPPER, ZypperPackageManager)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@
from core.src.bootstrap.Constants import Constants


class TdnfPackageManager(PackageManager):
class AzL3TdnfPackageManager(PackageManager):
"""Implementation of Azure Linux package management operations"""

def __init__(self, env_layer, execution_config, composite_logger, telemetry_writer, status_handler):
super(TdnfPackageManager, self).__init__(env_layer, execution_config, composite_logger, telemetry_writer, status_handler)
super(AzL3TdnfPackageManager, self).__init__(env_layer, execution_config, composite_logger, telemetry_writer, status_handler)
# Repo refresh
self.cmd_clean_cache = "sudo tdnf clean expire-cache"
self.cmd_repo_refresh = "sudo tdnf -q list updates"
Expand Down Expand Up @@ -71,8 +71,8 @@ def __init__(self, env_layer, execution_config, composite_logger, telemetry_writ
# commands for DNF Automatic updates service
self.__init_constants_for_dnf_automatic()

# AzLinux3 Package Manager.
self.azl3_tdnf_packagemanager = self.AzL3TdnfPackageManager()
# Strict SDP specializations
self.TDNF_MINIMUM_VERSION_FOR_STRICT_SDP = "3.5.8-3.azl3" # minimum version of tdnf required to support Strict SDP in Azure Linux

# Miscellaneous
self.set_package_manager_setting(Constants.PKG_MGR_SETTING_IDENTITY, Constants.TDNF)
Expand Down Expand Up @@ -257,16 +257,16 @@ def is_minimum_tdnf_version_for_strict_sdp_installed(self):
"""Check if at least the minimum required version of TDNF is installed"""
self.composite_logger.log_debug("[TDNF] Checking if minimum TDNF version required for strict safe deployment is installed...")
tdnf_version = self.get_tdnf_version()
minimum_tdnf_version_for_strict_sdp = self.azl3_tdnf_packagemanager.TDNF_MINIMUM_VERSION_FOR_STRICT_SDP
minimum_tdnf_version_for_strict_sdp = self.TDNF_MINIMUM_VERSION_FOR_STRICT_SDP
distro_from_minimum_tdnf_version_for_strict_sdp = re.match(r".*-\d+\.([a-zA-Z0-9]+)$", minimum_tdnf_version_for_strict_sdp).group(1)
if tdnf_version is None:
self.composite_logger.log_error("[TDNF] Failed to get TDNF version. Cannot proceed with strict safe deployment. Defaulting to regular upgrades.")
return False
elif re.match(r".*-\d+\.([a-zA-Z0-9]+)$", tdnf_version).group(1) != distro_from_minimum_tdnf_version_for_strict_sdp:
self.composite_logger.log_warning("[TDNF] TDNF version installed is not from the same Azure Linux distribution as the minimum required version for strict SDP. [InstalledVersion={0}][MinimumRequiredVersion={1}]".format(tdnf_version, self.azl3_tdnf_packagemanager.TDNF_MINIMUM_VERSION_FOR_STRICT_SDP))
self.composite_logger.log_warning("[TDNF] TDNF version installed is not from the same Azure Linux distribution as the minimum required version for strict SDP. [InstalledVersion={0}][MinimumRequiredVersion={1}]".format(tdnf_version, self.TDNF_MINIMUM_VERSION_FOR_STRICT_SDP))
return False
elif not self.version_comparator.compare_versions(tdnf_version, minimum_tdnf_version_for_strict_sdp) >= 0:
self.composite_logger.log_warning("[TDNF] TDNF version installed is less than the minimum required version for strict SDP. [InstalledVersion={0}][MinimumRequiredVersion={1}]".format(tdnf_version, self.azl3_tdnf_packagemanager.TDNF_MINIMUM_VERSION_FOR_STRICT_SDP))
self.composite_logger.log_warning("[TDNF] TDNF version installed is less than the minimum required version for strict SDP. [InstalledVersion={0}][MinimumRequiredVersion={1}]".format(tdnf_version, self.TDNF_MINIMUM_VERSION_FOR_STRICT_SDP))
return False
return True

Expand All @@ -289,7 +289,7 @@ def try_tdnf_update_to_meet_strict_sdp_requirements(self):
# type: () -> bool
"""Attempt to update TDNF to meet the minimum version required for strict SDP"""
self.composite_logger.log_debug("[TDNF] Attempting to update TDNF to meet strict safe deployment requirements...")
cmd = "sudo tdnf -y install tdnf-" + self.azl3_tdnf_packagemanager.TDNF_MINIMUM_VERSION_FOR_STRICT_SDP
cmd = "sudo tdnf -y install tdnf-" + self.TDNF_MINIMUM_VERSION_FOR_STRICT_SDP
code, output = self.env_layer.run_command_output(cmd, no_output=True, chk_err=False)
if code == 0:
self.composite_logger.log_debug("[TDNF] Successfully updated TDNF for Strict SDP. [Command={0}][Code={1}]".format(cmd, code))
Expand Down Expand Up @@ -829,9 +829,3 @@ def separate_out_esm_packages(self, packages, package_versions):
def get_package_install_expected_avg_time_in_seconds(self):
return self.package_install_expected_avg_time_in_seconds

# region - AzLinux specializations
class AzL3TdnfPackageManager(object):
"""AzLinux Package Manager class for TDNF package manager."""
def __init__(self):
self.TDNF_MINIMUM_VERSION_FOR_STRICT_SDP = "3.5.8-3.azl3" # minimum version of tdnf required to support Strict SDP in Azure Linux

Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
from core.src.external_dependencies import distro


class TestTdnfPackageManager(unittest.TestCase):
class TestAzL3TdnfPackageManager(unittest.TestCase):
def setUp(self):
self.runtime = RuntimeCompositor(ArgumentComposer().get_composed_arguments(), True, Constants.TDNF)
self.container = self.runtime.container
Expand Down
Loading