Sandro Bonazzola has uploaded a new change for review. Change subject: packaging: setup: enhance line uninstall ......................................................................
packaging: setup: enhance line uninstall Previously it was possible only remove added lines during uninstall. Now it is possible to re-add removed lines and restore edited lines. Change-Id: I69ab434de8fb675c67ac5d1907879e465e587dbf Signed-off-by: Sandro Bonazzola <[email protected]> --- M packaging/setup/plugins/ovirt-engine-remove/files/simple.py M packaging/setup/plugins/ovirt-engine-setup/core/uninstall.py M packaging/setup/plugins/ovirt-engine-setup/distro-rpm/packages.py 3 files changed, 52 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/68/16768/1 diff --git a/packaging/setup/plugins/ovirt-engine-remove/files/simple.py b/packaging/setup/plugins/ovirt-engine-remove/files/simple.py index ecd34e9..a2dfb16 100644 --- a/packaging/setup/plugins/ovirt-engine-remove/files/simple.py +++ b/packaging/setup/plugins/ovirt-engine-remove/files/simple.py @@ -19,6 +19,7 @@ """Simple plugin.""" +import re import os import glob import hashlib @@ -40,6 +41,16 @@ @util.export class Plugin(plugin.PluginBase): """Simple plugin.""" + + _RE_REMOVE = re.compile('.*<osetup_remove>(?P<removed>.*)</osetup_remove>') + _RE_ADD = re.compile('.*<osetup_add>(?P<added>.*)</osetup_add>') + + def decodeline(self, line): + add_m = self._RE_ADD.match(line) + rem_m = self._RE_REMOVE.match(line) + added = (add_m.group('added') if add_m else None) + removed = (rem_m.group('removed') if rem_m else None) + return (removed, added) def _digestFile(self, filename): md5 = hashlib.new('md5') @@ -72,9 +83,26 @@ new_content = [] with open(filename, 'r') as f: old_content = f.read().splitlines() + just_remove = [] + just_add = [] + replace = {} + + for line in remove_lines: + removed, added = self.decodeline(line) + if not removed: + just_remove.append(added) + elif not added: + just_add.append(removed) + else: + replace[added] = removed for line in old_content: - if line not in remove_lines: + if line not in just_remove: + #should me updated or added + if line in replace: + line = replace[line] new_content.append(line) + new_content.extend(just_add) + self.environment[otopicons.CoreEnv.MAIN_TRANSACTION].append( filetransaction.FileTransaction( name=filename, diff --git a/packaging/setup/plugins/ovirt-engine-setup/core/uninstall.py b/packaging/setup/plugins/ovirt-engine-setup/core/uninstall.py index 3e9b00a..7e4c83c 100644 --- a/packaging/setup/plugins/ovirt-engine-setup/core/uninstall.py +++ b/packaging/setup/plugins/ovirt-engine-setup/core/uninstall.py @@ -36,11 +36,24 @@ class RegisterGroups(object): + def __init__(self, environment): super(RegisterGroups, self).__init__() self.environment = environment self.config = {} + def encodeline(self, removed=None, added=None): + line = '' + if removed: + line += '<osetup_remove>{removed}</osetup_remove>'.format( + removed=removed, + ) + if added: + line += '<osetup_add>{added}</osetup_add>'.format( + added=added, + ) + return line + def createGroup(self, group, description, optional): self.environment.setdefault( osetupcons.CoreEnv.FILE_GROUP_PREFIX + group, diff --git a/packaging/setup/plugins/ovirt-engine-setup/distro-rpm/packages.py b/packaging/setup/plugins/ovirt-engine-setup/distro-rpm/packages.py index d2e64f1..d3e81f3 100644 --- a/packaging/setup/plugins/ovirt-engine-setup/distro-rpm/packages.py +++ b/packaging/setup/plugins/ovirt-engine-setup/distro-rpm/packages.py @@ -86,6 +86,15 @@ '-q', ] + osetupcons.Const.RPM_LOCK_LIST, ) + changes = [] + for line in out: + changes.append( + self.environment[ + osetupcons.CoreEnv.REGISTER_UNINSTALL_GROUPS + ].encodeline( + added=line, + ) + ) self.environment[ osetupcons.CoreEnv.UNINSTALL_UNREMOVABLE_FILES @@ -100,7 +109,7 @@ ).addLines( 'versionlock', osetupcons.FileLocations.OVIRT_ENGINE_YUM_VERSIONLOCK, - out, + changes, ) modified, content = self._filterVersionLock() -- To view, visit http://gerrit.ovirt.org/16768 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I69ab434de8fb675c67ac5d1907879e465e587dbf Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Sandro Bonazzola <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
