From: Owen Synge Date: Tue, 17 May 2016 12:44:44 +0000 (+0200) Subject: [RM-16979] zypper remove each package separately X-Git-Tag: v1.5.35~2^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e3b73895278c2bdec8e3e1d76754dfefb9ee9f40;p=ceph-deploy.git [RM-16979] zypper remove each package separately We ca not remove multiple packages with zypper in one line. as if a package is not available in a repository, zypper will abort immediately rather than remove the packages it was instructed to remove. Signed-off-by: Owen Synge --- diff --git a/ceph_deploy/util/pkg_managers.py b/ceph_deploy/util/pkg_managers.py index a6a6794..8291503 100644 --- a/ceph_deploy/util/pkg_managers.py +++ b/ceph_deploy/util/pkg_managers.py @@ -298,22 +298,22 @@ class Zypper(PackageManager): def remove(self, packages, **kw): if isinstance(packages, str): packages = [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.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)) + 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)) return def clean(self):