Add testcase for ipify_facts (#26421)

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
This commit is contained in:
Abhijeet Kasurde 2017-07-26 15:46:10 +05:30 committed by René Moser
parent 50a24cc9d7
commit b2d609b6f1
5 changed files with 55 additions and 5 deletions

View file

@ -44,6 +44,12 @@ options:
required: false
default: 10
version_added: "2.3"
validate_certs:
description:
- When set to C(NO), SSL certificates will not be validated.
required: false
default: "yes"
version_added: "2.4"
notes:
- "Visit https://www.ipify.org to get more information."
'''
@ -80,6 +86,7 @@ except ImportError:
from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.urls import fetch_url
from ansible.module_utils._text import to_text
class IpifyFacts(object):
@ -92,21 +99,23 @@ class IpifyFacts(object):
result = {
'ipify_public_ip': None
}
(response, info) = fetch_url(module=module, url=self.api_url + "?format=json" , force=True, timeout=self.timeout)
(response, info) = fetch_url(module=module, url=self.api_url + "?format=json", force=True, timeout=self.timeout)
if not response:
module.fail_json(msg="No valid or no response from url %s within %s seconds (timeout)" % (self.api_url, self.timeout))
data = json.loads(response.read())
data = json.loads(to_text(response.read()))
result['ipify_public_ip'] = data.get('ip')
return result
def main():
global module
module = AnsibleModule(
argument_spec = dict(
api_url=dict(default='https://api.ipify.org'),
argument_spec=dict(
api_url=dict(default='https://api.ipify.org/'),
timeout=dict(type='int', default=10),
validate_certs=dict(type='bool', default=True),
),
supports_check_mode=True,
)

View file

@ -0,0 +1 @@
posix/ci/group2

View file

@ -0,0 +1,39 @@
# Test code for the ipify_facts
# (c) 2017, Abhijeet Kasurde <akasurde@redhat.com>
# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
#
- debug: var=ansible_distribution
- debug: var=ansible_distribution_version
- set_fact:
validate_certs: false
when: (ansible_distribution == "MacOSX" and ansible_distribution_version == "10.11.1")
- name: get information about current IP using ipify facts
ipify_facts:
timeout: 30
validate_certs: "{{ validate_certs }}"
register: external_ip
- debug: var="{{ external_ip }}"
- name: check if task was successful
assert:
that:
- "{{ external_ip.changed == false }}"
- "{{ external_ip['ansible_facts'] is defined }}"
- "{{ external_ip['ansible_facts']['ipify_public_ip'] is defined }}"

View file

@ -0,0 +1,2 @@
---
validate_certs: true

View file

@ -323,7 +323,6 @@ lib/ansible/modules/network/iosxr/iosxr_command.py
lib/ansible/modules/network/iosxr/iosxr_config.py
lib/ansible/modules/network/iosxr/iosxr_facts.py
lib/ansible/modules/network/iosxr/iosxr_system.py
lib/ansible/modules/net_tools/ipify_facts.py
lib/ansible/modules/net_tools/ipinfoio_facts.py
lib/ansible/modules/network/lenovo/cnos_conditional_template.py
lib/ansible/modules/network/lenovo/cnos_template.py