-
Notifications
You must be signed in to change notification settings - Fork 146
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
b65ef94
commit 4526ea2
Showing
6 changed files
with
96 additions
and
46 deletions.
There are no files selected for viewing
20 changes: 20 additions & 0 deletions
20
repos/system_upgrade/common/actors/checkleftoverpackages/actor.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
from leapp.actors import Actor | ||
from leapp.models import InstalledUnsignedRPM, LeftoverPackages, TransactionCompleted | ||
from leapp.tags import IPUWorkflowTag, RPMUpgradePhaseTag | ||
from leapp.libraries.actor import checkleftoverpackages | ||
|
||
|
||
class CheckLeftoverPackages(Actor): | ||
""" | ||
Check if there are any RHEL 7 packages present after upgrade. | ||
Actor produces message containing these packages. Message is empty if there are no el7 package left. | ||
""" | ||
|
||
name = 'check_leftover_packages' | ||
consumes = (TransactionCompleted, InstalledUnsignedRPM) | ||
produces = (LeftoverPackages,) | ||
tags = (RPMUpgradePhaseTag, IPUWorkflowTag) | ||
|
||
def process(self): | ||
checkleftoverpackages.process() |
33 changes: 33 additions & 0 deletions
33
repos/system_upgrade/common/actors/checkleftoverpackages/libraries/checkleftoverpackages.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
from leapp.libraries.common.rpms import get_installed_rpms | ||
from leapp.models import InstalledUnsignedRPM, LeftoverPackages, RPM | ||
from leapp.libraries.stdlib import api | ||
|
||
|
||
def process(): | ||
LEAPP_PACKAGES = ['leapp', 'leapp-repository', 'snactor', 'leapp-repository-deps-el8', 'leapp-deps-el8', | ||
'python2-leapp'] | ||
installed_rpms = get_installed_rpms() | ||
if not installed_rpms: | ||
return | ||
|
||
to_remove = LeftoverPackages() | ||
unsigned = [pkg.name for pkg in next(api.consume(InstalledUnsignedRPM), InstalledUnsignedRPM()).items] | ||
|
||
for rpm in installed_rpms: | ||
rpm = rpm.strip() | ||
if not rpm: | ||
continue | ||
name, version, release, epoch, packager, arch, pgpsig = rpm.split('|') | ||
|
||
if 'el7' in release and name not in set(unsigned + LEAPP_PACKAGES): | ||
to_remove.items.append(RPM( | ||
name=name, | ||
version=version, | ||
epoch=epoch, | ||
packager=packager, | ||
arch=arch, | ||
release=release, | ||
pgpsig=pgpsig | ||
)) | ||
|
||
api.produce(to_remove) |
43 changes: 43 additions & 0 deletions
43
repos/system_upgrade/common/actors/checkleftoverpackages/tests/test_checkleftoverpackages.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
import pytest | ||
from leapp.libraries.common.testutils import produce_mocked, CurrentActorMocked | ||
from leapp.libraries.stdlib import api | ||
from leapp.libraries.actor import checkleftoverpackages | ||
from leapp.models import InstalledUnsignedRPM, LeftoverPackages, RPM | ||
|
||
|
||
@pytest.mark.parametrize( | ||
('rpm_name', 'release', 'expected_to_be_removed'), | ||
( | ||
# el7 | ||
('sed', '7.el7', True), | ||
('leapp', '1.el7', False), | ||
('unsigned', '1.el7', False), | ||
# el8 | ||
('leapp-repository', '1.el8', False), | ||
('gnutls', '8.el8_9.1', False), | ||
# other | ||
('whois-nls', '1.fc39', False), | ||
) | ||
) | ||
def test_package_to_be_removed(monkeypatch, rpm_name, release, expected_to_be_removed): | ||
def get_installed_rpms_mocked(): | ||
return [f'{rpm_name}|0.1|{release}|0|packager|noarch|OTHER_SIG'] | ||
|
||
UnsignedRPM = RPM(name='unsigned', version='0.1', release=f'{release}', epoch='0', packager='packager', arch='noarch', | ||
pgpsig='OTHER_SIG') | ||
|
||
monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(msgs=[InstalledUnsignedRPM(items=[UnsignedRPM])])) | ||
monkeypatch.setattr(checkleftoverpackages, 'get_installed_rpms', get_installed_rpms_mocked) | ||
monkeypatch.setattr(api, 'produce', produce_mocked()) | ||
|
||
checkleftoverpackages.process() | ||
|
||
expected_output = LeftoverPackages() | ||
if expected_to_be_removed: | ||
expected_output.items.append(RPM(name=f'{rpm_name}', version='0.1', release=f'{release}', epoch='0', | ||
packager='packager', arch='noarch', pgpsig='OTHER_SIG')) | ||
|
||
assert api.produce.called == 1 | ||
assert api.produce.model_instances[0] == expected_output |
File renamed without changes.
File renamed without changes.
46 changes: 0 additions & 46 deletions
46
repos/system_upgrade/el7toel8/actors/checkleftoverpackages/actor.py
This file was deleted.
Oops, something went wrong.