Add testcase for ipify_facts (#26421)
Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
This commit is contained in:
parent
50a24cc9d7
commit
b2d609b6f1
5 changed files with 55 additions and 5 deletions
|
@ -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,
|
||||
)
|
||||
|
|
1
test/integration/targets/ipify_facts/aliases
Normal file
1
test/integration/targets/ipify_facts/aliases
Normal file
|
@ -0,0 +1 @@
|
|||
posix/ci/group2
|
39
test/integration/targets/ipify_facts/tasks/main.yml
Normal file
39
test/integration/targets/ipify_facts/tasks/main.yml
Normal 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 }}"
|
2
test/integration/targets/ipify_facts/vars/main.yml
Normal file
2
test/integration/targets/ipify_facts/vars/main.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
validate_certs: true
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue