From 8b416abb4915b680a67c6b2c998a64ff29e993d8 Mon Sep 17 00:00:00 2001 From: Martin Krizek Date: Fri, 22 Sep 2017 13:44:26 +0200 Subject: [PATCH] Allow for creating yum repo based on metalink only (#30736) --- .../modules/packaging/os/yum_repository.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/ansible/modules/packaging/os/yum_repository.py b/lib/ansible/modules/packaging/os/yum_repository.py index ddded0f2146..0bebffd6232 100644 --- a/lib/ansible/modules/packaging/os/yum_repository.py +++ b/lib/ansible/modules/packaging/os/yum_repository.py @@ -49,7 +49,7 @@ options: - URL to the directory where the yum repository's 'repodata' directory 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, the I(metalink) or I(mirrorlist) parameters are required if I(state) is set to C(present). cost: required: false @@ -219,12 +219,14 @@ options: - Specifies a URL to a metalink file for the repomd.xml, a list of mirrors for the entire repository are generated by converting the mirrors for the repomd.xml file to a I(baseurl). + - This, the I(baseurl) or I(mirrorlist) parameters are required if I(state) is set to + C(present). mirrorlist: required: false default: null description: - Specifies a URL to a file containing a list of baseurls. - - This or the I(baseurl) parameter is required if I(state) is set to + - This, the I(baseurl) or I(metalink) parameters are required if I(state) is set to C(present). mirrorlist_expire: required: false @@ -563,10 +565,11 @@ class YumRepo(object): # Baseurl/mirrorlist is not required because for removal we need only # the repo name. This is why we check if the baseurl/mirrorlist is # defined. - if (self.params['baseurl'], self.params['mirrorlist']) == (None, None): + req_params = (self.params['baseurl'], self.params['metalink'], self.params['mirrorlist']) + if req_params == (None, None, None): self.module.fail_json( - msg='Parameter "baseurl" or "mirrorlist" is required for ' - 'adding a new repo.') + msg="Parameter 'baseurl', 'metalink' or 'mirrorlist' is required for " + "adding a new repo.") # Set options for key, value in sorted(self.params.items()): @@ -709,9 +712,10 @@ def main(): if state == 'present': if ( module.params['baseurl'] is None and + module.params['metalink'] is None and module.params['mirrorlist'] is None): module.fail_json( - msg="Parameter 'baseurl' or 'mirrorlist' is required.") + msg="Parameter 'baseurl', 'metalink' or 'mirrorlist' is required.") if module.params['description'] is None: module.fail_json( msg="Parameter 'description' is required.")