Skip to content

Commit

Permalink
small changes
Browse files Browse the repository at this point in the history
  • Loading branch information
tomasfratrik committed Aug 15, 2024
1 parent f2bd7b4 commit 26aa95e
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 15 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
import re

from leapp.libraries.common.config.version import get_source_major_version
from leapp.libraries.common.rpms import get_installed_rpms, get_leapp_dep_packages, get_leapp_packages
from leapp.libraries.common.rpms import (
get_installed_rpms,
get_leapp_dep_packages,
get_leapp_packages,
parse_rpm_details
)
from leapp.libraries.stdlib import api
from leapp.models import InstalledUnsignedRPM, LeftoverPackages, RPM

Expand All @@ -14,18 +19,18 @@ def process():
if not installed_rpms:
return

leftover_pkgs_to_remove = LeftoverPackages()
leftover_pkgs_to_remove = []
unsigned = [pkg.name for pkg in next(api.consume(InstalledUnsignedRPM), InstalledUnsignedRPM()).items]

for rpm in installed_rpms:
rpm = rpm.strip()
if not rpm:
continue
try:
name, version, release, epoch, packager, arch, pgpsig = rpm.split('|')
except ValueError:
api.current_logger().warning('Could not parse rpm: {}'.format(rpm))

rpm_details = parse_rpm_details(rpm)
if rpm_details is None:
continue
name, version, release, epoch, packager, arch, pgpsig = rpm_details

version_pattern = r'el(\d+)'
match = re.search(version_pattern, release)
Expand All @@ -34,7 +39,7 @@ def process():
major_version = match.group(1)
PKGS_NOT_TO_BE_DELETED = set(LEAPP_PACKAGES + LEAPP_DEP_PACKAGES + unsigned)
if int(major_version) <= int(get_source_major_version()) and name not in PKGS_NOT_TO_BE_DELETED:
leftover_pkgs_to_remove.items.append(RPM(
leftover_pkgs_to_remove.append(RPM(
name=name,
version=version,
epoch=epoch,
Expand All @@ -44,4 +49,4 @@ def process():
pgpsig=pgpsig
))

api.produce(leftover_pkgs_to_remove)
api.produce(LeftoverPackages(items=leftover_pkgs_to_remove))
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from leapp.actors import Actor
from leapp.libraries.actor import removeleftoverpackages
from leapp.models import LeftoverPackages, RemovedPackages
from leapp.tags import IPUWorkflowTag, RPMUpgradePhaseTag
from leapp.tags import ExperimentalTag, IPUWorkflowTag, RPMUpgradePhaseTag


class RemoveLeftoverPackages(Actor):
Expand All @@ -16,7 +16,7 @@ class RemoveLeftoverPackages(Actor):
name = 'remove_leftover_packages'
consumes = (LeftoverPackages, )
produces = (RemovedPackages, )
tags = (RPMUpgradePhaseTag, IPUWorkflowTag, )
tags = (RPMUpgradePhaseTag, IPUWorkflowTag, ExperimentalTag,)

def process(self):
removeleftoverpackages.process()
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from leapp.libraries.common.rhsm import skip_rhsm
from leapp.libraries.common.rpms import get_installed_rpms
from leapp.libraries.common.rpms import get_installed_rpms, parse_rpm_details
from leapp.libraries.stdlib import api, CalledProcessError, run
from leapp.models import LeftoverPackages, RemovedPackages, RPM

Expand All @@ -23,11 +23,11 @@ def _get_removed_packages(installed_rpms):
removed = list(set(installed_rpms) - set(get_installed_rpms()))

for pkg in removed:
try:
name, version, release, epoch, packager, arch, pgpsig = pkg.split('|')
except ValueError:
api.current_logger().warning('Could not parse rpm: {}'.format(pkg))
rpm_details = parse_rpm_details(pkg)
if rpm_details is None:
continue
name, version, release, epoch, packager, arch, pgpsig = rpm_details

removed_packages.append(RPM(
name=name,
version=version,
Expand Down
15 changes: 15 additions & 0 deletions repos/system_upgrade/common/libraries/rpms.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,21 @@ def get_installed_rpms():
return []


def parse_rpm_details(rpm):
"""
Parse rpm details. In case of failure, log a warning and return None.
:param rpm: string with rpm details separated by '|'
"""

try:
name, version, release, epoch, packager, arch, pgpsig = rpm.split('|')
return name, version, release, epoch, packager, arch, pgpsig
except ValueError:
stdlib.api.current_logger().warning('Could not parse rpm: {}, skipping.'.format(rpm))
return None


def create_lookup(model, field, keys, context=stdlib.api):
"""
Create a lookup set from one of the model fields.
Expand Down

0 comments on commit 26aa95e

Please sign in to comment.