Yedidyah Bar David has uploaded a new change for review.

Change subject: packaging: setup: check if setup is reinstallable
......................................................................

packaging: setup: check if setup is reinstallable

Change-Id: I76b8e7910e4f8b88592a75e92354443e1bf964dd
Signed-off-by: Yedidyah Bar David <d...@redhat.com>
---
M 
packaging/setup/plugins/ovirt-engine-setup/ovirt-engine-common/distro-rpm/packages.py
1 file changed, 39 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/72/23972/1

diff --git 
a/packaging/setup/plugins/ovirt-engine-setup/ovirt-engine-common/distro-rpm/packages.py
 
b/packaging/setup/plugins/ovirt-engine-setup/ovirt-engine-common/distro-rpm/packages.py
index 8cf48ff..be60c29 100644
--- 
a/packaging/setup/plugins/ovirt-engine-setup/ovirt-engine-common/distro-rpm/packages.py
+++ 
b/packaging/setup/plugins/ovirt-engine-setup/ovirt-engine-common/distro-rpm/packages.py
@@ -207,6 +207,36 @@
 
         return update
 
+    def _checkIfPackagesReinstallable(self, packages):
+        self.logger.debug('Start %s' % packages)
+        reinstallable = True
+        myum = self._miniyum.MiniYum(
+            sink=self._getSink(),
+            disabledPlugins=('versionlock',),
+        )
+        for package in packages:
+            installed = False
+            reinstall_available = False
+            for query in myum.queryPackages(
+                patterns=(package,),
+                showdups=True,
+            ):
+                self.logger.debug(
+                    'dupes: operation [%s] package %s' % (
+                        query['operation'],
+                        query['display_name'],
+                    )
+                )
+                if query['operation'] == 'installed':
+                    installed = True
+                if query['operation'] == 'reinstall_available':
+                    reinstall_available = True
+            if installed and not reinstall_available:
+                reinstallable = False
+                break
+
+        return reinstallable
+
     def _checkForProductUpdate(self):
         haveRollback = True
         upgradeAvailable = False
@@ -433,6 +463,15 @@
                 self._enabled = self.environment[
                     osetupcons.RPMDistroEnv.ENABLE_UPGRADE
                 ]
+            if not self._checkIfPackagesReinstallable(
+                packages=(osetupcons.Const.ENGINE_PACKAGE_SETUP_NAME,),
+            ):
+                raise RuntimeError(
+                    _(
+                        'Installed Setup packages cannot be reinstalled from '
+                        'enabled repositories.'
+                    )
+                )
 
         if not self._enabled and upgradeAvailable:
             raise RuntimeError(


-- 
To view, visit http://gerrit.ovirt.org/23972
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I76b8e7910e4f8b88592a75e92354443e1bf964dd
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Yedidyah Bar David <d...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to