Support list for baseurl and gpgkey params in yum_repository (fixes #24948) (#24967)

* Support list for baseurl and gpgkey params in yum_repository

* Adding tests
This commit is contained in:
Jiri Tyr 2017-08-15 16:51:33 +01:00 committed by Sam Doran
parent 20a35d0c1c
commit 1b8fe94e5a
2 changed files with 44 additions and 6 deletions

View file

@ -9,10 +9,11 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type __metaclass__ = type
ANSIBLE_METADATA = {'metadata_version': '1.0', ANSIBLE_METADATA = {
'status': ['stableinterface'], 'metadata_version': '1.0',
'supported_by': 'core'} 'status': ['stableinterface'],
'supported_by': 'core'
}
DOCUMENTATION = ''' DOCUMENTATION = '''
--- ---
@ -47,6 +48,7 @@ options:
description: description:
- URL to the directory where the yum repository's 'repodata' directory - URL to the directory where the yum repository's 'repodata' directory
lives. lives.
- It can also be a list of multiple URLs.
- This or the I(mirrorlist) parameter is required if I(state) is set to - This or the I(mirrorlist) parameter is required if I(state) is set to
C(present). C(present).
cost: cost:
@ -130,6 +132,7 @@ options:
default: null default: null
description: description:
- A URL pointing to the ASCII-armored GPG key file for the repository. - A URL pointing to the ASCII-armored GPG key file for the repository.
- It can also be a list of multiple URLs.
http_caching: http_caching:
required: false required: false
choices: [all, packages, none] choices: [all, packages, none]
@ -635,7 +638,7 @@ def main():
argument_spec=dict( argument_spec=dict(
async=dict(type='bool'), async=dict(type='bool'),
bandwidth=dict(), bandwidth=dict(),
baseurl=dict(), baseurl=dict(type='list'),
cost=dict(), cost=dict(),
deltarpm_metadata_percentage=dict(), deltarpm_metadata_percentage=dict(),
deltarpm_percentage=dict(), deltarpm_percentage=dict(),
@ -647,7 +650,7 @@ def main():
file=dict(), file=dict(),
gpgcakey=dict(), gpgcakey=dict(),
gpgcheck=dict(type='bool'), gpgcheck=dict(type='bool'),
gpgkey=dict(), gpgkey=dict(type='list'),
http_caching=dict(choices=['all', 'packages', 'none']), http_caching=dict(choices=['all', 'packages', 'none']),
include=dict(), include=dict(),
includepkgs=dict(), includepkgs=dict(),
@ -717,6 +720,13 @@ def main():
module.params['name'] = module.params['description'] module.params['name'] = module.params['description']
del module.params['description'] del module.params['description']
# Change list type to string for baseurl and gpgkey
for list_param in ['baseurl', 'gpgkey']:
if (
list_param in module.params and
module.params[list_param] is not None):
module.params[list_param] = "\n".join(module.params[list_param])
# Define repo file name if it doesn't exist # Define repo file name if it doesn't exist
if module.params['file'] is None: if module.params['file'] is None:
module.params['file'] = module.params['repoid'] module.params['file'] = module.params['repoid']

View file

@ -146,3 +146,31 @@
- name: check Idempotant - name: check Idempotant
assert: assert:
that: not epel_add.changed that: not epel_add.changed
- name: Test list for baseurl and gpgkey
yum_repository:
name: listtest
description: Testing list feature
baseurl:
- https://download.fedoraproject.org/pub/epel/{{ ansible_distribution_major_version }}/{{ ansible_architecture }}/
- https://download2.fedoraproject.org/pub/epel/{{ ansible_distribution_major_version }}/{{ ansible_architecture }}/
gpgkey:
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-{{ ansible_distribution_major_version }}
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG2-KEY-EPEL-{{ ansible_distribution_major_version }}
- set_fact:
repofile: "{{ lookup('file', '/etc/yum.repos.d/listtest.repo') }}"
- name: Assert that lists were properly inserted
assert:
that:
- "'download.fedoraproject.org' in repofile"
- "'download2.fedoraproject.org' in repofile"
- "'RPM-GPG-KEY-EPEL' in repofile"
- "'RPM-GPG2-KEY-EPEL' in repofile"
value:
- name: Cleanup list test repo
yum_repository:
name: listtest
state: absent