]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-deploy.git/commitdiff
[RM-16979] ceph_deploy.util.pkg_managers: Fix zypper handling
authorOwen Synge <osynge@suse.com>
Wed, 18 May 2016 13:10:57 +0000 (15:10 +0200)
committerOwen Synge <osynge@suse.com>
Wed, 10 Aug 2016 11:08:17 +0000 (13:08 +0200)
zypper can safely ignore non installed packages, with the --ignore-unknown
option.

Signed-off-by: Owen Synge <osynge@suse.com>
ceph_deploy/util/pkg_managers.py

index 8291503eda24ae5e6265be308c301506058ab824..69cabd62e08cdfcfd0e4145fe8150406cf9230af 100644 (file)
@@ -298,22 +298,22 @@ class Zypper(PackageManager):
     def remove(self, packages, **kw):
         if isinstance(packages, str):
             packages = [packages]
-        for pkg in packages:
-            extra_flags = kw.pop('extra_remove_flags', None)
-            cmd = self.executable + ['remove']
-            if extra_flags:
-                if isinstance(extra_flags, str):
-                    extra_flags = [extra_flags]
-                cmd.extend(extra_flags)
-            cmd.append(pkg)
-            stdout, stderr, exitrc = remoto.process.check(
-                self.remote_conn,
-                cmd,
-                **kw
-            )
-            # exitrc is 104 when package(s) not installed.
-            if not exitrc in [0, 104]:
-                raise RuntimeError("Failed to execute command: %s" % " ".join(cmd))
+
+        extra_flags = kw.pop('extra_remove_flags', None)
+        cmd = self.executable + ['--ignore-unknown', 'remove']
+        if extra_flags:
+            if isinstance(extra_flags, str):
+                extra_flags = [extra_flags]
+            cmd.extend(extra_flags)
+        cmd.extend(packages)
+        stdout, stderr, exitrc = remoto.process.check(
+            self.remote_conn,
+            cmd,
+            **kw
+        )
+        # exitrc is 104 when package(s) not installed.
+        if not exitrc in [0, 104]:
+            raise RuntimeError("Failed to execute command: %s" % " ".join(cmd))
         return
 
     def clean(self):