summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcoreywan <coreywanless@gmail.com>2018-08-26 07:25:16 -0500
committerSumit Jaiswal <sjaiswal@redhat.com>2018-08-26 12:25:16 +0000
commit50750c7363836217e2ba64cf3db9975d15734a2a (patch)
tree67f1a062aedad523f6a06fbb4a76a6b1c943c478
parent24a379f0b7310fa60f147451b2f49e374e555331 (diff)
downloadansible-50750c7363836217e2ba64cf3db9975d15734a2a.tar.gz
Added nios_txt_record module (#39264)
* Added nios_txt_record module Whitespace cleanup and version fix First stab at txt record integration test Fix for CI version requirement Added nios_txt_record module Whitespace cleanup and version fix First stab at txt record integration test Fix for CI version requirement force re-run * added alias for cloud group1
-rw-r--r--lib/ansible/modules/net_tools/nios/nios_txt_record.py133
-rw-r--r--test/integration/targets/nios_txt_record/aliases4
-rw-r--r--test/integration/targets/nios_txt_record/defaults/main.yaml3
-rw-r--r--test/integration/targets/nios_txt_record/meta/main.yaml2
-rw-r--r--test/integration/targets/nios_txt_record/tasks/main.yml1
-rw-r--r--test/integration/targets/nios_txt_record/tasks/nios_txt_record_idempotence.yml80
6 files changed, 223 insertions, 0 deletions
diff --git a/lib/ansible/modules/net_tools/nios/nios_txt_record.py b/lib/ansible/modules/net_tools/nios/nios_txt_record.py
new file mode 100644
index 0000000000..3b73a9154c
--- /dev/null
+++ b/lib/ansible/modules/net_tools/nios/nios_txt_record.py
@@ -0,0 +1,133 @@
+#!/usr/bin/python
+# Copyright (c) 2018 Red Hat, Inc.
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'}
+
+
+DOCUMENTATION = '''
+---
+module: nios_txt_record
+version_added: "2.7"
+author: "Corey Wanless"
+short_description: Configure Infoblox NIOS txt records
+description:
+ - Adds and/or removes instances of txt record objects from
+ Infoblox NIOS servers. This module manages NIOS C(record:txt) objects
+ using the Infoblox WAPI interface over REST.
+requirements:
+ - infoblox_client
+extends_documentation_fragment: nios
+options:
+ name:
+ description:
+ - Specifies the fully qualified hostname to add or remove from
+ the system
+ required: true
+ view:
+ description:
+ - Sets the DNS view to associate this tst record with. The DNS
+ view must already be configured on the system
+ required: true
+ default: default
+ aliases:
+ - dns_view
+ text:
+ description:
+ - Text associated with the record. It can contain up to 255 bytes
+ per substring, up to a total of 512 bytes. To enter leading,
+ trailing, or embedded spaces in the text, add quotes around the
+ text to preserve the spaces.
+ ttl:
+ description:
+ - Configures the TTL to be associated with this tst record
+ extattrs:
+ description:
+ - Allows for the configuration of Extensible Attributes on the
+ instance of the object. This argument accepts a set of key / value
+ pairs for configuration.
+ comment:
+ description:
+ - Configures a text string comment to be associated with the instance
+ of this object. The provided text string will be configured on the
+ object instance.
+ state:
+ description:
+ - Configures the intended state of the instance of the object on
+ the NIOS server. When this value is set to C(present), the object
+ is configured on the device and when this value is set to C(absent)
+ the value is removed (if necessary) from the device.
+ default: present
+ choices:
+ - present
+ - absent
+'''
+
+EXAMPLES = '''
+ - name: Ensure a text Record Exists
+ nios_txt_record:
+ name: fqdn.txt.record.com
+ text: mytext
+ state: present
+ view: External
+ provider:
+ host: "{{ inventory_hostname_short }}"
+ username: admin
+ password: admin
+
+ - name: Ensure a text Record does not exist
+ nios_txt_record:
+ name: fqdn.txt.record.com
+ text: mytext
+ state: absent
+ view: External
+ provider:
+ host: "{{ inventory_hostname_short }}"
+ username: admin
+ password: admin
+'''
+
+RETURN = ''' # '''
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.six import iteritems
+from ansible.module_utils.net_tools.nios.api import WapiModule
+
+
+def main():
+ ''' Main entry point for module execution
+ '''
+
+ ib_spec = dict(
+ name=dict(required=True, ib_req=True),
+ view=dict(default='default', aliases=['dns_view'], ib_req=True),
+ text=dict(type='str'),
+ ttl=dict(type='int'),
+ extattrs=dict(type='dict'),
+ comment=dict(),
+ )
+
+ argument_spec = dict(
+ provider=dict(required=True),
+ state=dict(default='present', choices=['present', 'absent'])
+ )
+
+ argument_spec.update(ib_spec)
+ argument_spec.update(WapiModule.provider_spec)
+
+ module = AnsibleModule(argument_spec=argument_spec,
+ supports_check_mode=True)
+
+ wapi = WapiModule(module)
+ result = wapi.run('record:txt', ib_spec)
+
+ module.exit_json(**result)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/test/integration/targets/nios_txt_record/aliases b/test/integration/targets/nios_txt_record/aliases
new file mode 100644
index 0000000000..1d00bb350e
--- /dev/null
+++ b/test/integration/targets/nios_txt_record/aliases
@@ -0,0 +1,4 @@
+shippable/cloud/group1
+posix/ci/cloud/group4/nios
+cloud/nios
+destructive
diff --git a/test/integration/targets/nios_txt_record/defaults/main.yaml b/test/integration/targets/nios_txt_record/defaults/main.yaml
new file mode 100644
index 0000000000..ebf6ffc903
--- /dev/null
+++ b/test/integration/targets/nios_txt_record/defaults/main.yaml
@@ -0,0 +1,3 @@
+---
+testcase: "*"
+test_items: [] \ No newline at end of file
diff --git a/test/integration/targets/nios_txt_record/meta/main.yaml b/test/integration/targets/nios_txt_record/meta/main.yaml
new file mode 100644
index 0000000000..9472935b7c
--- /dev/null
+++ b/test/integration/targets/nios_txt_record/meta/main.yaml
@@ -0,0 +1,2 @@
+dependencies:
+ - prepare_nios_tests \ No newline at end of file
diff --git a/test/integration/targets/nios_txt_record/tasks/main.yml b/test/integration/targets/nios_txt_record/tasks/main.yml
new file mode 100644
index 0000000000..e15b4c55db
--- /dev/null
+++ b/test/integration/targets/nios_txt_record/tasks/main.yml
@@ -0,0 +1 @@
+- include: nios_txt_record_idempotence.yml
diff --git a/test/integration/targets/nios_txt_record/tasks/nios_txt_record_idempotence.yml b/test/integration/targets/nios_txt_record/tasks/nios_txt_record_idempotence.yml
new file mode 100644
index 0000000000..3b7357afaf
--- /dev/null
+++ b/test/integration/targets/nios_txt_record/tasks/nios_txt_record_idempotence.yml
@@ -0,0 +1,80 @@
+- name: cleanup the parent object
+ nios_zone:
+ name: ansible.com
+ state: absent
+ provider: "{{ nios_provider }}"
+
+- name: create the parent object
+ nios_zone:
+ name: ansible.com
+ state: present
+ provider: "{{ nios_provider }}"
+
+- name: cleanup txt record
+ nios_txt_record:
+ name: txt.ansible.com
+ text: mytext
+ state: absent
+ provider: "{{ nios_provider }}"
+
+- name: create txt record
+ nios_txt_record:
+ name: txt.ansible.com
+ text: mytext
+ state: present
+ provider: "{{ nios_provider }}"
+ register: txt_create1
+
+- name: create txt record
+ nios_txt_record:
+ name: txt.ansible.com
+ text: mytext
+ state: present
+ provider: "{{ nios_provider }}"
+ register: txt_create2
+
+- assert:
+ that:
+ - "txt_create1.changed"
+ - "not txt_create2.changed"
+
+- name: add a comment to an existing txt record
+ nios_txt_record:
+ name: txt.ansible.com
+ text: mytext
+ state: present
+ comment: mycomment
+ provider: "{{ nios_provider }}"
+ register: txt_update1
+
+- name: add a comment to an existing txt record
+ nios_txt_record:
+ name: txt.ansible.com
+ text: mytext
+ state: present
+ comment: mycomment
+ provider: "{{ nios_provider }}"
+ register: txt_update2
+
+- name: remove a txt record from the system
+ nios_txt_record:
+ name: txt.ansible.com
+ state: absent
+ provider: "{{ nios_provider }}"
+ register: txt_delete1
+
+- name: remove a txt record from the system
+ nios_txt_record:
+ name: txt.ansible.com
+ state: absent
+ provider: "{{ nios_provider }}"
+ register: txt_delete2
+
+- assert:
+ that:
+ - "txt_create1.changed"
+ - "not txt_create2.changed"
+ - "txt_update1.changed"
+ - "not txt_update2.changed"
+ - "txt_delete1.changed"
+ - "not txt_delete2.changed"