summaryrefslogtreecommitdiff
path: root/packaging/os/zypper.py
diff options
context:
space:
mode:
authorRobin Roth <robin-roth@online.de>2015-11-11 11:57:11 +0100
committerRobin Roth <robin-roth@online.de>2015-11-11 11:57:11 +0100
commit9f02fbe07244f37422b128caa59f82ae559edb64 (patch)
tree2bcc1c64092a953bf388ca6ecbe100da8fda6ff2 /packaging/os/zypper.py
parent7d8dd6e21051cb548c731fc85f76deb980dc66a8 (diff)
downloadansible-modules-extras-9f02fbe07244f37422b128caa59f82ae559edb64.tar.gz
better cope with rpm not returning package name
if the rpm query is missing a package name (or giving some error): fail soft before the patch: the module fails because the installed_state dict is missing the package name after the patch: the missing package is assumed to not be in the correct state and is installed/removed with zypper
Diffstat (limited to 'packaging/os/zypper.py')
-rw-r--r--packaging/os/zypper.py11
1 files changed, 3 insertions, 8 deletions
diff --git a/packaging/os/zypper.py b/packaging/os/zypper.py
index b1155c60..0a693543 100644
--- a/packaging/os/zypper.py
+++ b/packaging/os/zypper.py
@@ -161,7 +161,7 @@ def get_package_state(m, packages):
for stdoutline in stdout.splitlines():
match = rpmoutput_re.match(stdoutline)
if match == None:
- return None
+ continue
package = match.group(1)
result = match.group(2)
if result == 'is installed':
@@ -169,18 +169,13 @@ def get_package_state(m, packages):
else:
installed_state[package] = False
- for package in packages:
- if package not in installed_state:
- print package + ' was not returned by rpm \n'
- return None
-
return installed_state
# Function used to make sure a package is present.
def package_present(m, name, installed_state, package_type, disable_gpg_check, disable_recommends, old_zypper):
packages = []
for package in name:
- if installed_state[package] is False:
+ if package not in installed_state or installed_state[package] is False:
packages.append(package)
if len(packages) != 0:
cmd = ['/usr/bin/zypper', '--non-interactive']
@@ -246,7 +241,7 @@ def package_latest(m, name, installed_state, package_type, disable_gpg_check, di
def package_absent(m, name, installed_state, package_type, old_zypper):
packages = []
for package in name:
- if installed_state[package] is True:
+ if package not in installed_state or installed_state[package] is True:
packages.append(package)
if len(packages) != 0:
cmd = ['/usr/bin/zypper', '--non-interactive', 'remove', '-t', package_type]