Merge pull request #749 from alxgu/zypper_localrpm

zypper: Add local/remote rpm installation
reviewable/pr18780/r1
Brian Coca 9 years ago
commit a0ed852223

@ -31,7 +31,9 @@ import re
DOCUMENTATION = ''' DOCUMENTATION = '''
--- ---
module: zypper module: zypper
author: "Patrick Callahan (@dirtyharrycallahan)" author:
- "Patrick Callahan (@dirtyharrycallahan)"
- "Alexander Gubin (@alxgu)"
version_added: "1.2" version_added: "1.2"
short_description: Manage packages on SUSE and openSUSE short_description: Manage packages on SUSE and openSUSE
description: description:
@ -39,7 +41,7 @@ description:
options: options:
name: name:
description: description:
- package name or package specifier wth version C(name) or C(name-1.0). - package name or package specifier with version C(name) or C(name-1.0). You can also pass a url or a local path to a rpm file.
required: true required: true
aliases: [ 'pkg' ] aliases: [ 'pkg' ]
state: state:
@ -89,6 +91,12 @@ EXAMPLES = '''
# Remove the "nmap" package # Remove the "nmap" package
- zypper: name=nmap state=absent - zypper: name=nmap state=absent
# Install the nginx rpm from a remote repo
- zypper: name=http://nginx.org/packages/sles/12/x86_64/RPMS/nginx-1.8.0-1.sles12.ngx.x86_64.rpm state=present
# Install local rpm file
- zypper: name=/tmp/fancy-software.rpm state=present
''' '''
# Function used for getting zypper version # Function used for getting zypper version
@ -129,6 +137,20 @@ def get_current_version(m, packages):
# Function used to find out if a package is currently installed. # Function used to find out if a package is currently installed.
def get_package_state(m, packages): def get_package_state(m, packages):
for i in range(0, len(packages)):
# Check state of a local rpm-file
if ".rpm" in packages[i]:
# Check if rpm file is available
package = packages[i]
if not os.path.isfile(package) and not '://' in package:
stderr = "No Package file matching '%s' found on system" % package
m.fail_json(msg=stderr)
# Get packagename from rpm file
cmd = ['/bin/rpm', '--query', '--qf', '%{NAME}', '--package']
cmd.append(package)
rc, stdout, stderr = m.run_command(cmd, check_rc=False)
packages[i] = stdout
cmd = ['/bin/rpm', '--query', '--qf', 'package %{NAME} is installed\n'] cmd = ['/bin/rpm', '--query', '--qf', 'package %{NAME} is installed\n']
cmd.extend(packages) cmd.extend(packages)

Loading…
Cancel
Save