From e215b67dbcb43d6313e9f35cf2c1ea6b47e13470 Mon Sep 17 00:00:00 2001
From: Thomas Woerner <twoerner@redhat.com>
Date: Fri, 8 Dec 2017 13:36:26 +0100
Subject: [PATCH] module_utils/ansible_ipa_server.py: New function
 ansible_module_get_parsed_ip_addresses

This methods creates a list of ipautil.CheckedIPAddress from the provided
ip string list.
---
 module_utils/ansible_ipa_server.py              | 11 +++++++++++
 roles/ipaserver/library/ipaserver_prepare.py    |  3 ++-
 roles/ipaserver/library/ipaserver_setup_ca.py   |  3 ++-
 roles/ipaserver/library/ipaserver_setup_http.py |  3 ++-
 roles/ipaserver/library/ipaserver_setup_krb.py  |  3 ++-
 roles/ipaserver/library/ipaserver_test.py       |  3 ++-
 6 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/module_utils/ansible_ipa_server.py b/module_utils/ansible_ipa_server.py
index 8da79a1c..0dafd754 100644
--- a/module_utils/ansible_ipa_server.py
+++ b/module_utils/ansible_ipa_server.py
@@ -217,3 +217,14 @@ def ds_init_info(ansible_log, fstore, domainlevel, dirsrv_config_file,
                          setup_pkinit=not no_pkinit)
 
     return ds
+
+def ansible_module_get_parsed_ip_addresses(ansible_module,
+                                           param='ip_addresses'):
+    ip_addrs = [ ]
+    for ip in ansible_module.params.get(param):
+        try:
+            ip_parsed = ipautil.CheckedIPAddress(ip)
+        except Exception as e:
+            ansible_module.fail_json(msg="Invalid IP Address %s: %s" % (ip, e))
+        ip_addrs.append(ip_parsed)
+    return ip_addrs
diff --git a/roles/ipaserver/library/ipaserver_prepare.py b/roles/ipaserver/library/ipaserver_prepare.py
index 44c533ba..1e12aa85 100644
--- a/roles/ipaserver/library/ipaserver_prepare.py
+++ b/roles/ipaserver/library/ipaserver_prepare.py
@@ -129,7 +129,8 @@ def main():
 
     options.dm_password = ansible_module.params.get('dm_password')
     options.admin_password = ansible_module.params.get('password')
-    options.ip_addresses = ansible_module.params.get('ip_addresses')
+    options.ip_addresses = ansible_module_get_parsed_ip_addresses(
+        ansible_module)
     options.domain_name = ansible_module.params.get('domain')
     options.realm_name = ansible_module.params.get('realm')
     options.host_name = ansible_module.params.get('hostname')
diff --git a/roles/ipaserver/library/ipaserver_setup_ca.py b/roles/ipaserver/library/ipaserver_setup_ca.py
index d8e11398..c1ff47a5 100644
--- a/roles/ipaserver/library/ipaserver_setup_ca.py
+++ b/roles/ipaserver/library/ipaserver_setup_ca.py
@@ -130,7 +130,8 @@ def main():
     options.dm_password = ansible_module.params.get('dm_password')
     options.admin_password = ansible_module.params.get('password')
     options.master_password = ansible_module.params.get('master_password')
-    options.ip_addresses = ansible_module.params.get('ip_addresses')
+    options.ip_addresses = ansible_module_get_parsed_ip_addresses(
+        ansible_module)
     options.domain_name = ansible_module.params.get('domain')
     options.realm_name = ansible_module.params.get('realm')
     options.host_name = ansible_module.params.get('hostname')
diff --git a/roles/ipaserver/library/ipaserver_setup_http.py b/roles/ipaserver/library/ipaserver_setup_http.py
index 987fc416..0228920a 100644
--- a/roles/ipaserver/library/ipaserver_setup_http.py
+++ b/roles/ipaserver/library/ipaserver_setup_http.py
@@ -107,7 +107,8 @@ def main():
     options.realm_name = ansible_module.params.get('realm')
     options.host_name = ansible_module.params.get('hostname')
 
-    options.ip_addresses = ansible_module.params.get('ip_addresses')
+    options.ip_addresses = ansible_module_get_parsed_ip_addresses(
+        ansible_module)
     options.reverse_zones = ansible_module.params.get('reverse_zones')
     options.http_cert_files = ansible_module.params.get('http_cert_files')
 
diff --git a/roles/ipaserver/library/ipaserver_setup_krb.py b/roles/ipaserver/library/ipaserver_setup_krb.py
index 31591275..e16f6fc8 100644
--- a/roles/ipaserver/library/ipaserver_setup_krb.py
+++ b/roles/ipaserver/library/ipaserver_setup_krb.py
@@ -98,7 +98,8 @@ def main():
     options.realm_name = ansible_module.params.get('realm')
     options.host_name = ansible_module.params.get('hostname')
 
-    options.ip_addresses = ansible_module.params.get('ip_addresses')
+    options.ip_addresses = ansible_module_get_parsed_ip_addresses(
+        ansible_module)
     options.reverse_zones = ansible_module.params.get('reverse_zones')
 
     options.setup_adtrust = ansible_module.params.get('setup_adtrust')
diff --git a/roles/ipaserver/library/ipaserver_test.py b/roles/ipaserver/library/ipaserver_test.py
index cc0cf4c8..bcb9bc38 100644
--- a/roles/ipaserver/library/ipaserver_test.py
+++ b/roles/ipaserver/library/ipaserver_test.py
@@ -132,7 +132,8 @@ def main():
     options.dm_password = ansible_module.params.get('dm_password')
     options.admin_password = ansible_module.params.get('password')
     options.master_password = ansible_module.params.get('master_password')
-    options.ip_addresses = ansible_module.params.get('ip_addresses')
+    options.ip_addresses = ansible_module_get_parsed_ip_addresses(
+        ansible_module)
     options.domain_name = ansible_module.params.get('domain')
     options.realm_name = ansible_module.params.get('realm')
     options.host_name = ansible_module.params.get('hostname')
-- 
GitLab