diff --git a/.github/BOTMETA.yml b/.github/BOTMETA.yml index f7aae7f272..9582aea4bf 100644 --- a/.github/BOTMETA.yml +++ b/.github/BOTMETA.yml @@ -205,9 +205,6 @@ files: $lookups/manifold.py: maintainers: galanoff labels: manifold - $lookups/nios: - maintainers: $team_networking sganesh-infoblox - labels: infoblox networking $lookups/onepass: maintainers: samdoran labels: onepassword @@ -253,9 +250,6 @@ files: $module_utils/module_helper.py: maintainers: russoz labels: module_helper - $module_utils/net_tools/nios/api.py: - maintainers: $team_networking sganesh-infoblox - labels: infoblox networking $module_utils/oracle/oci_utils.py: maintainers: $team_oracle labels: cloud @@ -647,31 +641,6 @@ files: maintainers: amasolov nerzhul $modules/net_tools/pritunl/: maintainers: Lowess - $modules/net_tools/nios/: - maintainers: $team_networking - labels: infoblox networking - $modules/net_tools/nios/nios_a_record.py: - maintainers: brampling - $modules/net_tools/nios/nios_aaaa_record.py: - maintainers: brampling - $modules/net_tools/nios/nios_cname_record.py: - maintainers: brampling - $modules/net_tools/nios/nios_fixed_address.py: - maintainers: sjaiswal - $modules/net_tools/nios/nios_member.py: - maintainers: krisvasudevan - $modules/net_tools/nios/nios_mx_record.py: - maintainers: brampling - $modules/net_tools/nios/nios_naptr_record.py: - maintainers: brampling - $modules/net_tools/nios/nios_nsgroup.py: - maintainers: ebirn sjaiswal - $modules/net_tools/nios/nios_ptr_record.py: - maintainers: clementtrebuchet - $modules/net_tools/nios/nios_srv_record.py: - maintainers: brampling - $modules/net_tools/nios/nios_txt_record.py: - maintainers: coreywan $modules/net_tools/nmcli.py: maintainers: alcamie101 $modules/net_tools/snmp_facts.py: diff --git a/changelogs/fragments/nios-deprecation.yml b/changelogs/fragments/nios-removal.yml similarity index 50% rename from changelogs/fragments/nios-deprecation.yml rename to changelogs/fragments/nios-removal.yml index bcfc2b4128..84cdcb6a1b 100644 --- a/changelogs/fragments/nios-deprecation.yml +++ b/changelogs/fragments/nios-removal.yml @@ -1,2 +1,2 @@ -deprecated_features: -- "The nios, nios_next_ip, nios_next_network lookup plugins, the nios documentation fragment, and the nios_host_record, nios_ptr_record, nios_mx_record, nios_fixed_address, nios_zone, nios_member, nios_a_record, nios_aaaa_record, nios_network, nios_dns_view, nios_txt_record, nios_naptr_record, nios_srv_record, nios_cname_record, nios_nsgroup, and nios_network_view module have been deprecated and will be removed from community.general 5.0.0. Please install the `infoblox.nios_modules `_ collection instead and use its plugins and modules (https://github.com/ansible-collections/community.general/pull/2458)." +removed_features: +- "The nios, nios_next_ip, nios_next_network lookup plugins, the nios documentation fragment, and the nios_host_record, nios_ptr_record, nios_mx_record, nios_fixed_address, nios_zone, nios_member, nios_a_record, nios_aaaa_record, nios_network, nios_dns_view, nios_txt_record, nios_naptr_record, nios_srv_record, nios_cname_record, nios_nsgroup, and nios_network_view module have been removed from community.general 4.0.0 and were replaced by redirects to the `infoblox.nios_modules `_ collection. Please install the ``infoblox.nios_modules`` collection to continue using these plugins and modules, and update your FQCNs (https://github.com/ansible-collections/community.general/pull/3592)." diff --git a/meta/runtime.yml b/meta/runtime.yml index 8b2a0c0ad6..f593166692 100644 --- a/meta/runtime.yml +++ b/meta/runtime.yml @@ -12,20 +12,11 @@ plugin_routing: hashi_vault: redirect: community.hashi_vault.hashi_vault nios: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.nios lookup plugin has been deprecated. - Please use infoblox.nios_modules.nios_lookup instead. + redirect: infoblox.nios_modules.nios_lookup nios_next_ip: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.nios_next_ip lookup plugin has been deprecated. - Please use infoblox.nios_modules.nios_next_ip instead. + redirect: infoblox.nios_modules.nios_next_ip nios_next_network: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.nios_next_network lookup plugin has been - deprecated. Please use infoblox.nios_modules.nios_next_network instead. + redirect: infoblox.nios_modules.nios_next_network modules: ali_instance_facts: tombstone: @@ -266,85 +257,37 @@ plugin_routing: removal_version: 3.0.0 warning_text: Use community.general.nginx_status_info instead. nios_a_record: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.nios_a_record module has been deprecated. - Please use infoblox.nios_modules.nios_a_record instead. + redirect: infoblox.nios_modules.nios_a_record nios_aaaa_record: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.nios_aaaa_record module has been deprecated. - Please use infoblox.nios_modules.nios_aaaa_record instead. + redirect: infoblox.nios_modules.nios_aaaa_record nios_cname_record: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.nios_cname_record module has been deprecated. - Please use infoblox.nios_modules.nios_cname_record instead. + redirect: infoblox.nios_modules.nios_cname_record nios_dns_view: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.nios_dns_view module has been deprecated. - Please use infoblox.nios_modules.nios_dns_view instead. + redirect: infoblox.nios_modules.nios_dns_view nios_fixed_address: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.nios_fixed_address module has been deprecated. - Please use infoblox.nios_modules.nios_fixed_address instead. + redirect: infoblox.nios_modules.nios_fixed_address nios_host_record: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.nios_host_record module has been deprecated. - Please use infoblox.nios_modules.nios_host_record instead. + redirect: infoblox.nios_modules.nios_host_record nios_member: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.nios_member module has been deprecated. - Please use infoblox.nios_modules.nios_member instead. + redirect: infoblox.nios_modules.nios_member nios_mx_record: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.nios_mx_record module has been deprecated. - Please use infoblox.nios_modules.nios_mx_record instead. + redirect: infoblox.nios_modules.nios_mx_record nios_naptr_record: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.nios_naptr_record module has been deprecated. - Please use infoblox.nios_modules.nios_naptr_record instead. + redirect: infoblox.nios_modules.nios_naptr_record nios_network: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.nios_network module has been deprecated. - Please use infoblox.nios_modules.nios_network instead. + redirect: infoblox.nios_modules.nios_network nios_network_view: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.nios_network_view module has been deprecated. - Please use infoblox.nios_modules.nios_network_view instead. + redirect: infoblox.nios_modules.nios_network_view nios_nsgroup: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.nios_nsgroup module has been deprecated. - Please use infoblox.nios_modules.nios_nsgroup instead. + redirect: infoblox.nios_modules.nios_nsgroup nios_ptr_record: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.nios_ptr_record module has been deprecated. - Please use infoblox.nios_modules.nios_ptr_record instead. + redirect: infoblox.nios_modules.nios_ptr_record nios_srv_record: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.nios_srv_record module has been deprecated. - Please use infoblox.nios_modules.nios_srv_record instead. + redirect: infoblox.nios_modules.nios_srv_record nios_txt_record: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.nios_txt_record module has been deprecated. - Please use infoblox.nios_modules.nios_txt_record instead. + redirect: infoblox.nios_modules.nios_txt_record nios_zone: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.nios_zone module has been deprecated. - Please use infoblox.nios_modules.nios_zone instead. + redirect: infoblox.nios_modules.nios_zone ome_device_info: redirect: dellemc.openmanage.ome_device_info one_image_facts: @@ -628,10 +571,7 @@ plugin_routing: kubevirt_vm_options: redirect: community.kubevirt.kubevirt_vm_options nios: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.nios document fragment has been deprecated. - Please use infoblox.nios_modules.nios instead. + redirect: infoblox.nios_modules.nios postgresql: redirect: community.postgresql.postgresql module_utils: @@ -650,10 +590,7 @@ plugin_routing: kubevirt: redirect: community.kubevirt.kubevirt net_tools.nios.api: - deprecation: - removal_version: 5.0.0 - warning_text: The community.general.net_tools.nios.api module_utils has been - deprecated. Please use infoblox.nios_modules.api instead. + redirect: infoblox.nios_modules.api postgresql: redirect: community.postgresql.postgresql remote_management.dellemc.dellemc_idrac: diff --git a/plugins/doc_fragments/nios.py b/plugins/doc_fragments/nios.py deleted file mode 100644 index 28f83e7333..0000000000 --- a/plugins/doc_fragments/nios.py +++ /dev/null @@ -1,103 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright: (c) 2015, Peter Sprygada -# 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 - - -class ModuleDocFragment(object): - - # Standard files documentation fragment - DOCUMENTATION = r''' -options: - provider: - description: - - A dict object containing connection details. - type: dict - suboptions: - host: - description: - - Specifies the DNS host name or address for connecting to the remote - instance of NIOS WAPI over REST - - Value can also be specified using C(INFOBLOX_HOST) environment - variable. - type: str - username: - description: - - Configures the username to use to authenticate the connection to - the remote instance of NIOS. - - Value can also be specified using C(INFOBLOX_USERNAME) environment - variable. - type: str - password: - description: - - Specifies the password to use to authenticate the connection to - the remote instance of NIOS. - - Value can also be specified using C(INFOBLOX_PASSWORD) environment - variable. - type: str - validate_certs: - description: - - Boolean value to enable or disable verifying SSL certificates - - Value can also be specified using C(INFOBLOX_SSL_VERIFY) environment - variable. - type: bool - default: no - aliases: [ ssl_verify ] - http_request_timeout: - description: - - The amount of time before to wait before receiving a response - - Value can also be specified using C(INFOBLOX_HTTP_REQUEST_TIMEOUT) environment - variable. - type: int - default: 10 - max_retries: - description: - - Configures the number of attempted retries before the connection - is declared usable - - Value can also be specified using C(INFOBLOX_MAX_RETRIES) environment - variable. - type: int - default: 3 - wapi_version: - description: - - Specifies the version of WAPI to use - - Value can also be specified using C(INFOBLOX_WAP_VERSION) environment - variable. - - Until ansible 2.8 the default WAPI was 1.4 - type: str - default: '2.1' - max_results: - description: - - Specifies the maximum number of objects to be returned, - if set to a negative number the appliance will return an error when the - number of returned objects would exceed the setting. - - Value can also be specified using C(INFOBLOX_MAX_RESULTS) environment - variable. - type: int - default: 1000 - http_pool_connections: - description: - - Number of pools to be used by the C(infoblox_client.Connector) object. - - This is passed as-is to the underlying C(requests.adapters.HTTPAdapter) class. - type: int - default: 10 - http_pool_maxsize: - description: - - Maximum number of connections per pool to be used by the C(infoblox_client.Connector) object. - - This is passed as-is to the underlying C(requests.adapters.HTTPAdapter) class. - type: int - default: 10 - silent_ssl_warnings: - description: - - Disable C(urllib3) SSL warnings in the C(infoblox_client.Connector) object. - - This is passed as-is to the underlying C(requests.adapters.HTTPAdapter) class. - type: bool - default: true -notes: - - "This module must be run locally, which can be achieved by specifying C(connection: local)." - - Please read the :ref:`nios_guide` for more detailed information on how to use Infoblox with Ansible. - -''' diff --git a/plugins/lookup/nios.py b/plugins/lookup/nios.py deleted file mode 100644 index 089805c97a..0000000000 --- a/plugins/lookup/nios.py +++ /dev/null @@ -1,126 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright 2018 Red Hat | Ansible -# -# 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 . - -from __future__ import (absolute_import, division, print_function) - -__metaclass__ = type - -DOCUMENTATION = ''' ---- -author: Unknown (!UNKNOWN) -name: nios -short_description: Query Infoblox NIOS objects -deprecated: - why: Please install the infoblox.nios_modules collection and use the corresponding lookup from it. - alternative: infoblox.nios_modules.nios_lookup - removed_in: 5.0.0 -description: - - Uses the Infoblox WAPI API to fetch NIOS specified objects. This lookup - supports adding additional keywords to filter the return data and specify - the desired set of returned fields. -requirements: - - infoblox-client -extends_documentation_fragment: -- community.general.nios - -options: - _terms: - description: The name of the object to return from NIOS - required: True - return_fields: - description: The list of field names to return for the specified object. - filter: - description: a dict object that is used to filter the return objects - extattrs: - description: a dict object that is used to filter on extattrs -''' - -EXAMPLES = """ -- name: fetch all networkview objects - ansible.builtin.set_fact: - networkviews: "{{ lookup('community.general.nios', 'networkview', - provider={'host': 'nios01', 'username': 'admin', 'password': 'password'}) }}" - -- name: fetch the default dns view - ansible.builtin.set_fact: - dns_views: "{{ lookup('community.general.nios', 'view', filter={'name': 'default'}, - provider={'host': 'nios01', 'username': 'admin', 'password': 'password'}) }}" - -# all of the examples below use credentials that are set using env variables -# export INFOBLOX_HOST=nios01 -# export INFOBLOX_USERNAME=admin -# export INFOBLOX_PASSWORD=admin - -- name: fetch all host records and include extended attributes - ansible.builtin.set_fact: - host_records: "{{ lookup('community.general.nios', 'record:host', return_fields=['extattrs', 'name', 'view', 'comment']}) }}" - - -- name: use env variables to pass credentials - ansible.builtin.set_fact: - networkviews: "{{ lookup('community.general.nios', 'networkview') }}" - -- name: get a host record - ansible.builtin.set_fact: - host: "{{ lookup('community.general.nios', 'record:host', filter={'name': 'hostname.ansible.com'}) }}" - -- name: get the authoritative zone from a non default dns view - ansible.builtin.set_fact: - host: "{{ lookup('community.general.nios', 'zone_auth', filter={'fqdn': 'ansible.com', 'view': 'ansible-dns'}) }}" -""" - -RETURN = """ -obj_type: - description: - - The object type specified in the terms argument - type: dictionary - contains: - obj_field: - description: - - One or more obj_type fields as specified by return_fields argument or - the default set of fields as per the object type -""" - -from ansible.plugins.lookup import LookupBase -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import WapiLookup -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import normalize_extattrs, flatten_extattrs -from ansible.errors import AnsibleError - - -class LookupModule(LookupBase): - - def run(self, terms, variables=None, **kwargs): - try: - obj_type = terms[0] - except IndexError: - raise AnsibleError('the object_type must be specified') - - return_fields = kwargs.pop('return_fields', None) - filter_data = kwargs.pop('filter', {}) - extattrs = normalize_extattrs(kwargs.pop('extattrs', {})) - provider = kwargs.pop('provider', {}) - wapi = WapiLookup(provider) - res = wapi.get_object(obj_type, filter_data, return_fields=return_fields, extattrs=extattrs) - if res is not None: - for obj in res: - if 'extattrs' in obj: - obj['extattrs'] = flatten_extattrs(obj['extattrs']) - else: - res = [] - return res diff --git a/plugins/lookup/nios_next_ip.py b/plugins/lookup/nios_next_ip.py deleted file mode 100644 index 8fdbbc6f99..0000000000 --- a/plugins/lookup/nios_next_ip.py +++ /dev/null @@ -1,105 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright 2018 Red Hat | Ansible -# -# 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 . - -from __future__ import (absolute_import, division, print_function) - -__metaclass__ = type - -DOCUMENTATION = ''' ---- -author: Unknown (!UNKNOWN) -name: nios_next_ip -short_description: Return the next available IP address for a network -deprecated: - why: Please install the infoblox.nios_modules collection and use the corresponding lookup from it. - alternative: infoblox.nios_modules.nios_next_ip - removed_in: 5.0.0 -description: - - Uses the Infoblox WAPI API to return the next available IP addresses - for a given network CIDR -requirements: - - infoblox-client -extends_documentation_fragment: -- community.general.nios - -options: - _terms: - description: The CIDR network to retrieve the next addresses from - required: True - num: - description: The number of IP addresses to return - required: false - default: 1 - exclude: - description: List of IP's that need to be excluded from returned IP addresses - required: false -''' - -EXAMPLES = """ -- name: return next available IP address for network 192.168.10.0/24 - ansible.builtin.set_fact: - ipaddr: "{{ lookup('community.general.nios_next_ip', '192.168.10.0/24', provider={'host': 'nios01', 'username': 'admin', 'password': 'password'}) }}" - -- name: return the next 3 available IP addresses for network 192.168.10.0/24 - ansible.builtin.set_fact: - ipaddr: "{{ lookup('community.general.nios_next_ip', '192.168.10.0/24', num=3, provider={'host': 'nios01', 'username': 'admin', 'password': 'password'}) }}" - -- name: return the next 3 available IP addresses for network 192.168.10.0/24 excluding ip addresses - ['192.168.10.1', '192.168.10.2'] - ansible.builtin.set_fact: - ipaddr: "{{ lookup('community.general.nios_next_ip', '192.168.10.0/24', num=3, exclude=['192.168.10.1', '192.168.10.2'], - provider={'host': 'nios01', 'username': 'admin', 'password': 'password'}) }}" -""" - -RETURN = """ -_list: - description: - - The list of next IP addresses available - type: list -""" - -from ansible.plugins.lookup import LookupBase -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import WapiLookup -from ansible.module_utils.common.text.converters import to_text -from ansible.errors import AnsibleError - - -class LookupModule(LookupBase): - - def run(self, terms, variables=None, **kwargs): - try: - network = terms[0] - except IndexError: - raise AnsibleError('missing argument in the form of A.B.C.D/E') - - provider = kwargs.pop('provider', {}) - wapi = WapiLookup(provider) - - network_obj = wapi.get_object('network', {'network': network}) - if network_obj is None: - raise AnsibleError('unable to find network object %s' % network) - - num = kwargs.get('num', 1) - exclude_ip = kwargs.get('exclude', []) - - try: - ref = network_obj[0]['_ref'] - avail_ips = wapi.call_func('next_available_ip', ref, {'num': num, 'exclude': exclude_ip}) - return [avail_ips['ips']] - except Exception as exc: - raise AnsibleError(to_text(exc)) diff --git a/plugins/lookup/nios_next_network.py b/plugins/lookup/nios_next_network.py deleted file mode 100644 index a1c913320a..0000000000 --- a/plugins/lookup/nios_next_network.py +++ /dev/null @@ -1,118 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright 2018 Red Hat | Ansible -# -# 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 . - -from __future__ import (absolute_import, division, print_function) - -__metaclass__ = type - -DOCUMENTATION = ''' ---- -author: Unknown (!UNKNOWN) -name: nios_next_network -short_description: Return the next available network range for a network-container -deprecated: - why: Please install the infoblox.nios_modules collection and use the corresponding lookup from it. - alternative: infoblox.nios_modules.nios_next_network - removed_in: 5.0.0 -description: - - Uses the Infoblox WAPI API to return the next available network addresses for - a given network CIDR -requirements: - - infoblox_client -extends_documentation_fragment: -- community.general.nios - -options: - _terms: - description: The CIDR network to retrieve the next network from next available network within the specified - container. - required: True - cidr: - description: - - The CIDR of the network to retrieve the next network from next available network within the - specified container. Also, Requested CIDR must be specified and greater than the parent CIDR. - required: True - default: 24 - num: - description: The number of network addresses to return from network-container - required: false - default: 1 - exclude: - description: Network addresses returned from network-container excluding list of user's input network range - required: false - default: '' -''' - -EXAMPLES = """ -- name: return next available network for network-container 192.168.10.0/24 - ansible.builtin.set_fact: - networkaddr: "{{ lookup('community.general.nios_next_network', '192.168.10.0/24', cidr=25, - provider={'host': 'nios01', 'username': 'admin', 'password': 'password'}) }}" - -- name: return the next 2 available network addresses for network-container 192.168.10.0/24 - ansible.builtin.set_fact: - networkaddr: "{{ lookup('community.general.nios_next_network', '192.168.10.0/24', cidr=25, num=2, - provider={'host': 'nios01', 'username': 'admin', 'password': 'password'}) }}" - -- name: return the available network addresses for network-container 192.168.10.0/24 excluding network range '192.168.10.0/25' - ansible.builtin.set_fact: - networkaddr: "{{ lookup('community.general.nios_next_network', '192.168.10.0/24', cidr=25, exclude=['192.168.10.0/25'], - provider={'host': 'nios01', 'username': 'admin', 'password': 'password'}) }}" -""" - -RETURN = """ -_list: - description: - - The list of next network addresses available - type: list -""" - -from ansible.plugins.lookup import LookupBase -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import WapiLookup -from ansible.module_utils.common.text.converters import to_text -from ansible.errors import AnsibleError - - -class LookupModule(LookupBase): - - def run(self, terms, variables=None, **kwargs): - try: - network = terms[0] - except IndexError: - raise AnsibleError('missing network argument in the form of A.B.C.D/E') - try: - cidr = kwargs.get('cidr', 24) - except IndexError: - raise AnsibleError('missing CIDR argument in the form of xx') - - provider = kwargs.pop('provider', {}) - wapi = WapiLookup(provider) - network_obj = wapi.get_object('networkcontainer', {'network': network}) - - if network_obj is None: - raise AnsibleError('unable to find network-container object %s' % network) - num = kwargs.get('num', 1) - exclude_ip = kwargs.get('exclude', []) - - try: - ref = network_obj[0]['_ref'] - avail_nets = wapi.call_func('next_available_network', ref, {'cidr': cidr, 'num': num, 'exclude': exclude_ip}) - return [avail_nets['networks']] - except Exception as exc: - raise AnsibleError(to_text(exc)) diff --git a/plugins/module_utils/net_tools/nios/api.py b/plugins/module_utils/net_tools/nios/api.py deleted file mode 100644 index babda7659a..0000000000 --- a/plugins/module_utils/net_tools/nios/api.py +++ /dev/null @@ -1,598 +0,0 @@ -# -*- coding: utf-8 -*- -# This code is part of Ansible, but is an independent component. -# This particular file snippet, and this file snippet only, is BSD licensed. -# Modules you write using this snippet, which is embedded dynamically by Ansible -# still belong to the author of the module, and may assign their own license -# to the complete work. -# -# (c) 2018 Red Hat Inc. -# -# Simplified BSD License (see licenses/simplified_bsd.txt or https://opensource.org/licenses/BSD-2-Clause) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -import os -from functools import partial -from ansible.module_utils.common.text.converters import to_native -from ansible.module_utils.six import iteritems -from ansible.module_utils.common.text.converters import to_text -from ansible.module_utils.basic import env_fallback -from ansible.module_utils.common.validation import check_type_dict - -try: - from infoblox_client.connector import Connector - from infoblox_client.exceptions import InfobloxException - HAS_INFOBLOX_CLIENT = True -except ImportError: - HAS_INFOBLOX_CLIENT = False - -# defining nios constants -NIOS_DNS_VIEW = 'view' -NIOS_NETWORK_VIEW = 'networkview' -NIOS_HOST_RECORD = 'record:host' -NIOS_IPV4_NETWORK = 'network' -NIOS_IPV6_NETWORK = 'ipv6network' -NIOS_ZONE = 'zone_auth' -NIOS_PTR_RECORD = 'record:ptr' -NIOS_A_RECORD = 'record:a' -NIOS_AAAA_RECORD = 'record:aaaa' -NIOS_CNAME_RECORD = 'record:cname' -NIOS_MX_RECORD = 'record:mx' -NIOS_SRV_RECORD = 'record:srv' -NIOS_NAPTR_RECORD = 'record:naptr' -NIOS_TXT_RECORD = 'record:txt' -NIOS_NSGROUP = 'nsgroup' -NIOS_IPV4_FIXED_ADDRESS = 'fixedaddress' -NIOS_IPV6_FIXED_ADDRESS = 'ipv6fixedaddress' -NIOS_NEXT_AVAILABLE_IP = 'func:nextavailableip' -NIOS_IPV4_NETWORK_CONTAINER = 'networkcontainer' -NIOS_IPV6_NETWORK_CONTAINER = 'ipv6networkcontainer' -NIOS_MEMBER = 'member' - -NIOS_PROVIDER_SPEC = { - 'host': dict(fallback=(env_fallback, ['INFOBLOX_HOST'])), - 'username': dict(fallback=(env_fallback, ['INFOBLOX_USERNAME'])), - 'password': dict(fallback=(env_fallback, ['INFOBLOX_PASSWORD']), no_log=True), - 'validate_certs': dict(type='bool', default=False, fallback=(env_fallback, ['INFOBLOX_SSL_VERIFY']), aliases=['ssl_verify']), - 'silent_ssl_warnings': dict(type='bool', default=True), - 'http_request_timeout': dict(type='int', default=10, fallback=(env_fallback, ['INFOBLOX_HTTP_REQUEST_TIMEOUT'])), - 'http_pool_connections': dict(type='int', default=10), - 'http_pool_maxsize': dict(type='int', default=10), - 'max_retries': dict(type='int', default=3, fallback=(env_fallback, ['INFOBLOX_MAX_RETRIES'])), - 'wapi_version': dict(default='2.1', fallback=(env_fallback, ['INFOBLOX_WAP_VERSION'])), - 'max_results': dict(type='int', default=1000, fallback=(env_fallback, ['INFOBLOX_MAX_RETRIES'])) -} - - -def get_connector(*args, **kwargs): - ''' Returns an instance of infoblox_client.connector.Connector - :params args: positional arguments are silently ignored - :params kwargs: dict that is passed to Connector init - :returns: Connector - ''' - if not HAS_INFOBLOX_CLIENT: - raise Exception('infoblox-client is required but does not appear ' - 'to be installed. It can be installed using the ' - 'command `pip install infoblox-client`') - - if not set(kwargs.keys()).issubset(list(NIOS_PROVIDER_SPEC.keys()) + ['ssl_verify']): - raise Exception('invalid or unsupported keyword argument for connector') - for key, value in iteritems(NIOS_PROVIDER_SPEC): - if key not in kwargs: - # apply default values from NIOS_PROVIDER_SPEC since we cannot just - # assume the provider values are coming from AnsibleModule - if 'default' in value: - kwargs[key] = value['default'] - - # override any values with env variables unless they were - # explicitly set - env = ('INFOBLOX_%s' % key).upper() - if env in os.environ: - kwargs[key] = os.environ.get(env) - - if 'validate_certs' in kwargs.keys(): - kwargs['ssl_verify'] = kwargs['validate_certs'] - kwargs.pop('validate_certs', None) - - return Connector(kwargs) - - -def normalize_extattrs(value): - ''' Normalize extattrs field to expected format - The module accepts extattrs as key/value pairs. This method will - transform the key/value pairs into a structure suitable for - sending across WAPI in the format of: - extattrs: { - key: { - value: - } - } - ''' - return dict([(k, {'value': v}) for k, v in iteritems(value)]) - - -def flatten_extattrs(value): - ''' Flatten the key/value struct for extattrs - WAPI returns extattrs field as a dict in form of: - extattrs: { - key: { - value: - } - } - This method will flatten the structure to: - extattrs: { - key: value - } - ''' - return dict([(k, v['value']) for k, v in iteritems(value)]) - - -def member_normalize(member_spec): - ''' Transforms the member module arguments into a valid WAPI struct - This function will transform the arguments into a structure that - is a valid WAPI structure in the format of: - { - key: , - } - It will remove any arguments that are set to None since WAPI will error on - that condition. - The remainder of the value validation is performed by WAPI - Some parameters in ib_spec are passed as a list in order to pass the validation for elements. - In this function, they are converted to dictionary. - ''' - member_elements = ['vip_setting', 'ipv6_setting', 'lan2_port_setting', 'mgmt_port_setting', - 'pre_provisioning', 'network_setting', 'v6_network_setting', - 'ha_port_setting', 'lan_port_setting', 'lan2_physical_setting', - 'lan_ha_port_setting', 'mgmt_network_setting', 'v6_mgmt_network_setting'] - for key in list(member_spec.keys()): - if key in member_elements and member_spec[key] is not None: - member_spec[key] = member_spec[key][0] - if isinstance(member_spec[key], dict): - member_spec[key] = member_normalize(member_spec[key]) - elif isinstance(member_spec[key], list): - for x in member_spec[key]: - if isinstance(x, dict): - x = member_normalize(x) - elif member_spec[key] is None: - del member_spec[key] - return member_spec - - -def normalize_ib_spec(ib_spec): - result = {} - for arg in ib_spec: - result[arg] = dict([(k, v) - for k, v in iteritems(ib_spec[arg]) - if k not in ('ib_req', 'transform', 'update')]) - return result - - -class WapiBase(object): - ''' Base class for implementing Infoblox WAPI API ''' - provider_spec = {'provider': dict(type='dict', options=NIOS_PROVIDER_SPEC)} - - def __init__(self, provider): - self.connector = get_connector(**provider) - - def __getattr__(self, name): - try: - return self.__dict__[name] - except KeyError: - if name.startswith('_'): - raise AttributeError("'%s' object has no attribute '%s'" % (self.__class__.__name__, name)) - return partial(self._invoke_method, name) - - def _invoke_method(self, name, *args, **kwargs): - try: - method = getattr(self.connector, name) - return method(*args, **kwargs) - except InfobloxException as exc: - if hasattr(self, 'handle_exception'): - self.handle_exception(name, exc) - else: - raise - - -class WapiLookup(WapiBase): - ''' Implements WapiBase for lookup plugins ''' - def handle_exception(self, method_name, exc): - if ('text' in exc.response): - raise Exception(exc.response['text']) - else: - raise Exception(exc) - - -class WapiInventory(WapiBase): - ''' Implements WapiBase for dynamic inventory script ''' - pass - - -class WapiModule(WapiBase): - ''' Implements WapiBase for executing a NIOS module ''' - def __init__(self, module): - self.module = module - provider = module.params['provider'] - try: - super(WapiModule, self).__init__(provider) - except Exception as exc: - self.module.fail_json(msg=to_text(exc)) - - def handle_exception(self, method_name, exc): - ''' Handles any exceptions raised - This method will be called if an InfobloxException is raised for - any call to the instance of Connector and also, in case of generic - exception. This method will then gracefully fail the module. - :args exc: instance of InfobloxException - ''' - if ('text' in exc.response): - self.module.fail_json( - msg=exc.response['text'], - type=exc.response['Error'].split(':')[0], - code=exc.response.get('code'), - operation=method_name - ) - else: - self.module.fail_json(msg=to_native(exc)) - - def run(self, ib_obj_type, ib_spec): - ''' Runs the module and performans configuration tasks - :args ib_obj_type: the WAPI object type to operate against - :args ib_spec: the specification for the WAPI object as a dict - :returns: a results dict - ''' - - update = new_name = None - state = self.module.params['state'] - if state not in ('present', 'absent'): - self.module.fail_json(msg='state must be one of `present`, `absent`, got `%s`' % state) - - result = {'changed': False} - - obj_filter = dict([(k, self.module.params[k]) for k, v in iteritems(ib_spec) if v.get('ib_req')]) - - # get object reference - ib_obj_ref, update, new_name = self.get_object_ref(self.module, ib_obj_type, obj_filter, ib_spec) - proposed_object = {} - for key, value in iteritems(ib_spec): - if self.module.params[key] is not None: - if 'transform' in value: - proposed_object[key] = value['transform'](self.module) - else: - proposed_object[key] = self.module.params[key] - - # If configure_by_dns is set to False and view is 'default', then delete the default dns - if not proposed_object.get('configure_for_dns') and proposed_object.get('view') == 'default'\ - and ib_obj_type == NIOS_HOST_RECORD: - del proposed_object['view'] - - if ib_obj_ref: - if len(ib_obj_ref) > 1: - for each in ib_obj_ref: - # To check for existing A_record with same name with input A_record by IP - if each.get('ipv4addr') and each.get('ipv4addr') == proposed_object.get('ipv4addr'): - current_object = each - # To check for existing Host_record with same name with input Host_record by IP - elif each.get('ipv4addrs')[0].get('ipv4addr') and each.get('ipv4addrs')[0].get('ipv4addr')\ - == proposed_object.get('ipv4addrs')[0].get('ipv4addr'): - current_object = each - # Else set the current_object with input value - else: - current_object = obj_filter - ref = None - else: - current_object = ib_obj_ref[0] - if 'extattrs' in current_object: - current_object['extattrs'] = flatten_extattrs(current_object['extattrs']) - if current_object.get('_ref'): - ref = current_object.pop('_ref') - else: - current_object = obj_filter - ref = None - # checks if the object type is member to normalize the attributes being passed - if (ib_obj_type == NIOS_MEMBER): - proposed_object = member_normalize(proposed_object) - - # checks if the name's field has been updated - if update and new_name: - proposed_object['name'] = new_name - - check_remove = [] - if (ib_obj_type == NIOS_HOST_RECORD): - # this check is for idempotency, as if the same ip address shall be passed - # add param will be removed, and same exists true for remove case as well. - if 'ipv4addrs' in [current_object and proposed_object]: - for each in current_object['ipv4addrs']: - if each['ipv4addr'] == proposed_object['ipv4addrs'][0]['ipv4addr']: - if 'add' in proposed_object['ipv4addrs'][0]: - del proposed_object['ipv4addrs'][0]['add'] - break - check_remove += each.values() - if proposed_object['ipv4addrs'][0]['ipv4addr'] not in check_remove: - if 'remove' in proposed_object['ipv4addrs'][0]: - del proposed_object['ipv4addrs'][0]['remove'] - - res = None - modified = not self.compare_objects(current_object, proposed_object) - if 'extattrs' in proposed_object: - proposed_object['extattrs'] = normalize_extattrs(proposed_object['extattrs']) - - # Checks if nios_next_ip param is passed in ipv4addrs/ipv4addr args - proposed_object = self.check_if_nios_next_ip_exists(proposed_object) - - if state == 'present': - if ref is None: - if not self.module.check_mode: - self.create_object(ib_obj_type, proposed_object) - result['changed'] = True - # Check if NIOS_MEMBER and the flag to call function create_token is set - elif (ib_obj_type == NIOS_MEMBER) and (proposed_object['create_token']): - proposed_object = None - # the function creates a token that can be used by a pre-provisioned member to join the grid - result['api_results'] = self.call_func('create_token', ref, proposed_object) - result['changed'] = True - elif modified: - if 'ipv4addrs' in proposed_object: - if ('add' not in proposed_object['ipv4addrs'][0]) and ('remove' not in proposed_object['ipv4addrs'][0]): - self.check_if_recordname_exists(obj_filter, ib_obj_ref, ib_obj_type, current_object, proposed_object) - - if (ib_obj_type in (NIOS_HOST_RECORD, NIOS_NETWORK_VIEW, NIOS_DNS_VIEW)): - run_update = True - proposed_object = self.on_update(proposed_object, ib_spec) - if 'ipv4addrs' in proposed_object: - if ('add' or 'remove') in proposed_object['ipv4addrs'][0]: - run_update, proposed_object = self.check_if_add_remove_ip_arg_exists(proposed_object) - if run_update: - res = self.update_object(ref, proposed_object) - result['changed'] = True - else: - res = ref - if (ib_obj_type in (NIOS_A_RECORD, NIOS_AAAA_RECORD, NIOS_PTR_RECORD, NIOS_SRV_RECORD)): - # popping 'view' key as update of 'view' is not supported with respect to a:record/aaaa:record/srv:record/ptr:record - proposed_object = self.on_update(proposed_object, ib_spec) - del proposed_object['view'] - if not self.module.check_mode: - res = self.update_object(ref, proposed_object) - result['changed'] = True - elif 'network_view' in proposed_object: - proposed_object.pop('network_view') - result['changed'] = True - if not self.module.check_mode and res is None: - proposed_object = self.on_update(proposed_object, ib_spec) - self.update_object(ref, proposed_object) - result['changed'] = True - - elif state == 'absent': - if ref is not None: - if 'ipv4addrs' in proposed_object: - if 'remove' in proposed_object['ipv4addrs'][0]: - self.check_if_add_remove_ip_arg_exists(proposed_object) - self.update_object(ref, proposed_object) - result['changed'] = True - elif not self.module.check_mode: - self.delete_object(ref) - result['changed'] = True - - return result - - def check_if_recordname_exists(self, obj_filter, ib_obj_ref, ib_obj_type, current_object, proposed_object): - ''' Send POST request if host record input name and retrieved ref name is same, - but input IP and retrieved IP is different''' - - if 'name' in (obj_filter and ib_obj_ref[0]) and ib_obj_type == NIOS_HOST_RECORD: - obj_host_name = obj_filter['name'] - ref_host_name = ib_obj_ref[0]['name'] - if 'ipv4addrs' in (current_object and proposed_object): - current_ip_addr = current_object['ipv4addrs'][0]['ipv4addr'] - proposed_ip_addr = proposed_object['ipv4addrs'][0]['ipv4addr'] - elif 'ipv6addrs' in (current_object and proposed_object): - current_ip_addr = current_object['ipv6addrs'][0]['ipv6addr'] - proposed_ip_addr = proposed_object['ipv6addrs'][0]['ipv6addr'] - - if obj_host_name == ref_host_name and current_ip_addr != proposed_ip_addr: - self.create_object(ib_obj_type, proposed_object) - - def check_if_nios_next_ip_exists(self, proposed_object): - ''' Check if nios_next_ip argument is passed in ipaddr while creating - host record, if yes then format proposed object ipv4addrs and pass - func:nextavailableip and ipaddr range to create hostrecord with next - available ip in one call to avoid any race condition ''' - - if 'ipv4addrs' in proposed_object: - if 'nios_next_ip' in proposed_object['ipv4addrs'][0]['ipv4addr']: - ip_range = check_type_dict(proposed_object['ipv4addrs'][0]['ipv4addr'])['nios_next_ip'] - proposed_object['ipv4addrs'][0]['ipv4addr'] = NIOS_NEXT_AVAILABLE_IP + ':' + ip_range - elif 'ipv4addr' in proposed_object: - if 'nios_next_ip' in proposed_object['ipv4addr']: - ip_range = check_type_dict(proposed_object['ipv4addr'])['nios_next_ip'] - proposed_object['ipv4addr'] = NIOS_NEXT_AVAILABLE_IP + ':' + ip_range - - return proposed_object - - def check_if_add_remove_ip_arg_exists(self, proposed_object): - ''' - This function shall check if add/remove param is set to true and - is passed in the args, then we will update the proposed dictionary - to add/remove IP to existing host_record, if the user passes false - param with the argument nothing shall be done. - :returns: True if param is changed based on add/remove, and also the - changed proposed_object. - ''' - update = False - if 'add' in proposed_object['ipv4addrs'][0]: - if proposed_object['ipv4addrs'][0]['add']: - proposed_object['ipv4addrs+'] = proposed_object['ipv4addrs'] - del proposed_object['ipv4addrs'] - del proposed_object['ipv4addrs+'][0]['add'] - update = True - else: - del proposed_object['ipv4addrs'][0]['add'] - elif 'remove' in proposed_object['ipv4addrs'][0]: - if proposed_object['ipv4addrs'][0]['remove']: - proposed_object['ipv4addrs-'] = proposed_object['ipv4addrs'] - del proposed_object['ipv4addrs'] - del proposed_object['ipv4addrs-'][0]['remove'] - update = True - else: - del proposed_object['ipv4addrs'][0]['remove'] - return update, proposed_object - - def issubset(self, item, objects): - ''' Checks if item is a subset of objects - :args item: the subset item to validate - :args objects: superset list of objects to validate against - :returns: True if item is a subset of one entry in objects otherwise - this method will return None - ''' - for obj in objects: - if isinstance(item, dict): - if all(entry in obj.items() for entry in item.items()): - return True - else: - if item in obj: - return True - - def compare_objects(self, current_object, proposed_object): - for key, proposed_item in iteritems(proposed_object): - current_item = current_object.get(key) - - # if proposed has a key that current doesn't then the objects are - # not equal and False will be immediately returned - if current_item is None: - return False - - elif isinstance(proposed_item, list): - if key == 'aliases': - if set(current_item) != set(proposed_item): - return False - for subitem in proposed_item: - if not self.issubset(subitem, current_item): - return False - - elif isinstance(proposed_item, dict): - return self.compare_objects(current_item, proposed_item) - - else: - if current_item != proposed_item: - return False - - return True - - def get_object_ref(self, module, ib_obj_type, obj_filter, ib_spec): - ''' this function gets the reference object of pre-existing nios objects ''' - - update = False - old_name = new_name = None - if ('name' in obj_filter): - # gets and returns the current object based on name/old_name passed - try: - name_obj = check_type_dict(obj_filter['name']) - old_name = name_obj['old_name'] - new_name = name_obj['new_name'] - except TypeError: - name = obj_filter['name'] - - if old_name and new_name: - if (ib_obj_type == NIOS_HOST_RECORD): - test_obj_filter = dict([('name', old_name), ('view', obj_filter['view'])]) - elif (ib_obj_type in (NIOS_AAAA_RECORD, NIOS_A_RECORD)): - test_obj_filter = obj_filter - else: - test_obj_filter = dict([('name', old_name)]) - # get the object reference - ib_obj = self.get_object(ib_obj_type, test_obj_filter, return_fields=list(ib_spec.keys())) - if ib_obj: - obj_filter['name'] = new_name - else: - test_obj_filter['name'] = new_name - ib_obj = self.get_object(ib_obj_type, test_obj_filter, return_fields=list(ib_spec.keys())) - update = True - return ib_obj, update, new_name - if (ib_obj_type == NIOS_HOST_RECORD): - # to check only by name if dns bypassing is set - if not obj_filter['configure_for_dns']: - test_obj_filter = dict([('name', name)]) - else: - test_obj_filter = dict([('name', name), ('view', obj_filter['view'])]) - elif (ib_obj_type == NIOS_IPV4_FIXED_ADDRESS or ib_obj_type == NIOS_IPV6_FIXED_ADDRESS and 'mac' in obj_filter): - test_obj_filter = dict([['mac', obj_filter['mac']]]) - elif (ib_obj_type == NIOS_A_RECORD): - # resolves issue where a_record with uppercase name was returning null and was failing - test_obj_filter = obj_filter - test_obj_filter['name'] = test_obj_filter['name'].lower() - # resolves issue where multiple a_records with same name and different IP address - try: - ipaddr_obj = check_type_dict(obj_filter['ipv4addr']) - ipaddr = ipaddr_obj['old_ipv4addr'] - except TypeError: - ipaddr = obj_filter['ipv4addr'] - test_obj_filter['ipv4addr'] = ipaddr - elif (ib_obj_type == NIOS_TXT_RECORD): - # resolves issue where multiple txt_records with same name and different text - test_obj_filter = obj_filter - try: - text_obj = check_type_dict(obj_filter['text']) - txt = text_obj['old_text'] - except TypeError: - txt = obj_filter['text'] - test_obj_filter['text'] = txt - # check if test_obj_filter is empty copy passed obj_filter - else: - test_obj_filter = obj_filter - ib_obj = self.get_object(ib_obj_type, test_obj_filter.copy(), return_fields=list(ib_spec.keys())) - elif (ib_obj_type == NIOS_A_RECORD): - # resolves issue where multiple a_records with same name and different IP address - test_obj_filter = obj_filter - try: - ipaddr_obj = check_type_dict(obj_filter['ipv4addr']) - ipaddr = ipaddr_obj['old_ipv4addr'] - except TypeError: - ipaddr = obj_filter['ipv4addr'] - test_obj_filter['ipv4addr'] = ipaddr - ib_obj = self.get_object(ib_obj_type, test_obj_filter.copy(), return_fields=list(ib_spec.keys())) - elif (ib_obj_type == NIOS_TXT_RECORD): - # resolves issue where multiple txt_records with same name and different text - test_obj_filter = obj_filter - try: - text_obj = check_type_dict(obj_filter['text']) - txt = text_obj['old_text'] - except TypeError: - txt = obj_filter['text'] - test_obj_filter['text'] = txt - ib_obj = self.get_object(ib_obj_type, test_obj_filter.copy(), return_fields=list(ib_spec.keys())) - elif (ib_obj_type == NIOS_ZONE): - # del key 'restart_if_needed' as nios_zone get_object fails with the key present - temp = ib_spec['restart_if_needed'] - del ib_spec['restart_if_needed'] - ib_obj = self.get_object(ib_obj_type, obj_filter.copy(), return_fields=list(ib_spec.keys())) - # reinstate restart_if_needed if ib_obj is none, meaning there's no existing nios_zone ref - if not ib_obj: - ib_spec['restart_if_needed'] = temp - elif (ib_obj_type == NIOS_MEMBER): - # del key 'create_token' as nios_member get_object fails with the key present - temp = ib_spec['create_token'] - del ib_spec['create_token'] - ib_obj = self.get_object(ib_obj_type, obj_filter.copy(), return_fields=list(ib_spec.keys())) - if temp: - # reinstate 'create_token' key - ib_spec['create_token'] = temp - else: - ib_obj = self.get_object(ib_obj_type, obj_filter.copy(), return_fields=list(ib_spec.keys())) - return ib_obj, update, new_name - - def on_update(self, proposed_object, ib_spec): - ''' Event called before the update is sent to the API endpoing - This method will allow the final proposed object to be changed - and/or keys filtered before it is sent to the API endpoint to - be processed. - :args proposed_object: A dict item that will be encoded and sent - the API endpoint with the updated data structure - :returns: updated object to be sent to API endpoint - ''' - keys = set() - for key, value in iteritems(proposed_object): - update = ib_spec[key].get('update', True) - if not update: - keys.add(key) - return dict([(k, v) for k, v in iteritems(proposed_object) if k not in keys]) diff --git a/plugins/modules/net_tools/nios/nios_a_record.py b/plugins/modules/net_tools/nios/nios_a_record.py deleted file mode 100644 index cc2e70b920..0000000000 --- a/plugins/modules/net_tools/nios/nios_a_record.py +++ /dev/null @@ -1,179 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# 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 - -DOCUMENTATION = ''' ---- -module: nios_a_record -author: "Blair Rampling (@brampling)" -short_description: Configure Infoblox NIOS A records -deprecated: - why: Please install the infoblox.nios_modules collection and use the corresponding module from it. - alternative: infoblox.nios_modules.nios_a_record - removed_in: 5.0.0 -description: - - Adds and/or removes instances of A record objects from - Infoblox NIOS servers. This module manages NIOS C(record:a) objects - using the Infoblox WAPI interface over REST. -requirements: - - infoblox-client -extends_documentation_fragment: -- community.general.nios - -options: - name: - description: - - Specifies the fully qualified hostname to add or remove from - the system - required: true - type: str - view: - description: - - Sets the DNS view to associate this A record with. The DNS - view must already be configured on the system - default: default - aliases: - - dns_view - type: str - ipv4addr: - description: - - Configures the IPv4 address for this A record. Users can dynamically - allocate ipv4 address to A record by passing dictionary containing, - I(nios_next_ip) and I(CIDR network range). See example - aliases: - - ipv4 - type: str - ttl: - description: - - Configures the TTL to be associated with this A record - type: int - 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. - type: dict - 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. - type: str - 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 - type: str -''' - -EXAMPLES = ''' -- name: Configure an A record - community.general.nios_a_record: - name: a.ansible.com - ipv4: 192.168.10.1 - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local - -- name: Add a comment to an existing A record - community.general.nios_a_record: - name: a.ansible.com - ipv4: 192.168.10.1 - comment: this is a test comment - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local - -- name: Remove an A record from the system - community.general.nios_a_record: - name: a.ansible.com - ipv4: 192.168.10.1 - state: absent - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local - -- name: Update an A record name - community.general.nios_a_record: - name: {new_name: a_new.ansible.com, old_name: a.ansible.com} - ipv4: 192.168.10.1 - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local - -- name: Dynamically add a record to next available ip - community.general.nios_a_record: - name: a.ansible.com - ipv4: {nios_next_ip: 192.168.10.0/24} - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -''' - -RETURN = ''' # ''' - -from ansible.module_utils.basic import AnsibleModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import WapiModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import NIOS_A_RECORD -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import normalize_ib_spec - - -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), - - ipv4addr=dict(aliases=['ipv4'], ib_req=True), - - 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(normalize_ib_spec(ib_spec)) - argument_spec.update(WapiModule.provider_spec) - - module = AnsibleModule(argument_spec=argument_spec, - supports_check_mode=True) - - wapi = WapiModule(module) - result = wapi.run(NIOS_A_RECORD, ib_spec) - - module.exit_json(**result) - - -if __name__ == '__main__': - main() diff --git a/plugins/modules/net_tools/nios/nios_aaaa_record.py b/plugins/modules/net_tools/nios/nios_aaaa_record.py deleted file mode 100644 index b6e5ff5fd6..0000000000 --- a/plugins/modules/net_tools/nios/nios_aaaa_record.py +++ /dev/null @@ -1,166 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# 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 - -DOCUMENTATION = ''' ---- -module: nios_aaaa_record -author: "Blair Rampling (@brampling)" -short_description: Configure Infoblox NIOS AAAA records -deprecated: - why: Please install the infoblox.nios_modules collection and use the corresponding module from it. - alternative: infoblox.nios_modules.nios_aaaa_record - removed_in: 5.0.0 -description: - - Adds and/or removes instances of AAAA record objects from - Infoblox NIOS servers. This module manages NIOS C(record:aaaa) objects - using the Infoblox WAPI interface over REST. -requirements: - - infoblox-client -extends_documentation_fragment: -- community.general.nios - -options: - name: - description: - - Specifies the fully qualified hostname to add or remove from - the system - required: true - type: str - view: - description: - - Sets the DNS view to associate this AAAA record with. The DNS - view must already be configured on the system - default: default - aliases: - - dns_view - type: str - ipv6addr: - description: - - Configures the IPv6 address for this AAAA record. - aliases: - - ipv6 - type: str - ttl: - description: - - Configures the TTL to be associated with this AAAA record - type: int - 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. - type: dict - 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. - type: str - 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 - type: str -''' - -EXAMPLES = ''' -- name: Configure an AAAA record - community.general.nios_aaaa_record: - name: aaaa.ansible.com - ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local - -- name: Add a comment to an existing AAAA record - community.general.nios_aaaa_record: - name: aaaa.ansible.com - ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 - comment: this is a test comment - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local - -- name: Remove an AAAA record from the system - community.general.nios_aaaa_record: - name: aaaa.ansible.com - ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 - state: absent - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local - -- name: Update an AAAA record name - community.general.nios_aaaa_record: - name: {new_name: aaaa_new.ansible.com, old_name: aaaa.ansible.com} - ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -''' - -RETURN = ''' # ''' - -from ansible.module_utils.basic import AnsibleModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import WapiModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import NIOS_AAAA_RECORD -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import normalize_ib_spec - - -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), - - ipv6addr=dict(aliases=['ipv6'], ib_req=True), - - 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(normalize_ib_spec(ib_spec)) - argument_spec.update(WapiModule.provider_spec) - - module = AnsibleModule(argument_spec=argument_spec, - supports_check_mode=True) - - wapi = WapiModule(module) - result = wapi.run(NIOS_AAAA_RECORD, ib_spec) - - module.exit_json(**result) - - -if __name__ == '__main__': - main() diff --git a/plugins/modules/net_tools/nios/nios_cname_record.py b/plugins/modules/net_tools/nios/nios_cname_record.py deleted file mode 100644 index c752713663..0000000000 --- a/plugins/modules/net_tools/nios/nios_cname_record.py +++ /dev/null @@ -1,155 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# 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 - -DOCUMENTATION = ''' ---- -module: nios_cname_record -author: "Blair Rampling (@brampling)" -short_description: Configure Infoblox NIOS CNAME records -deprecated: - why: Please install the infoblox.nios_modules collection and use the corresponding module from it. - alternative: infoblox.nios_modules.nios_cname_record - removed_in: 5.0.0 -description: - - Adds and/or removes instances of CNAME record objects from - Infoblox NIOS servers. This module manages NIOS C(record:cname) objects - using the Infoblox WAPI interface over REST. -requirements: - - infoblox-client -extends_documentation_fragment: -- community.general.nios - -options: - name: - description: - - Specifies the fully qualified hostname to add or remove from - the system - required: true - type: str - view: - description: - - Sets the DNS view to associate this CNAME record with. The DNS - view must already be configured on the system - default: default - aliases: - - dns_view - type: str - canonical: - description: - - Configures the canonical name for this CNAME record. - aliases: - - cname - type: str - ttl: - description: - - Configures the TTL to be associated with this CNAME record - type: int - 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. - type: dict - 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. - type: str - 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 - type: str -''' - -EXAMPLES = ''' -- name: Configure a CNAME record - community.general.nios_cname_record: - name: cname.ansible.com - canonical: realhost.ansible.com - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local - -- name: Add a comment to an existing CNAME record - community.general.nios_cname_record: - name: cname.ansible.com - canonical: realhost.ansible.com - comment: this is a test comment - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local - -- name: Remove a CNAME record from the system - community.general.nios_cname_record: - name: cname.ansible.com - canonical: realhost.ansible.com - state: absent - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -''' - -RETURN = ''' # ''' - -from ansible.module_utils.basic import AnsibleModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import WapiModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import NIOS_CNAME_RECORD -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import normalize_ib_spec - - -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), - - canonical=dict(aliases=['cname'], ib_req=True), - - 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(normalize_ib_spec(ib_spec)) - argument_spec.update(WapiModule.provider_spec) - - module = AnsibleModule(argument_spec=argument_spec, - supports_check_mode=True) - - wapi = WapiModule(module) - result = wapi.run(NIOS_CNAME_RECORD, ib_spec) - - module.exit_json(**result) - - -if __name__ == '__main__': - main() diff --git a/plugins/modules/net_tools/nios/nios_dns_view.py b/plugins/modules/net_tools/nios/nios_dns_view.py deleted file mode 100644 index a3bd9db938..0000000000 --- a/plugins/modules/net_tools/nios/nios_dns_view.py +++ /dev/null @@ -1,150 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# 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 - -DOCUMENTATION = ''' ---- -module: nios_dns_view -author: "Peter Sprygada (@privateip)" -short_description: Configure Infoblox NIOS DNS views -deprecated: - why: Please install the infoblox.nios_modules collection and use the corresponding module from it. - alternative: infoblox.nios_modules.nios_dns_view - removed_in: 5.0.0 -description: - - Adds and/or removes instances of DNS view objects from - Infoblox NIOS servers. This module manages NIOS C(view) objects - using the Infoblox WAPI interface over REST. - - Updates instances of DNS view object from Infoblox NIOS servers. -requirements: - - infoblox-client -extends_documentation_fragment: -- community.general.nios - -options: - name: - description: - - Specifies the fully qualified hostname to add or remove from - the system. User can also update the hostname as it is possible - to pass a dict containing I(new_name), I(old_name). See examples. - required: true - aliases: - - view - type: str - network_view: - description: - - Specifies the name of the network view to assign the configured - DNS view to. The network view must already be configured on the - target system. - default: default - type: str - 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. - required: false - type: dict - 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. - required: false - type: str - 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. - required: false - default: present - choices: - - present - - absent - type: str -''' - -EXAMPLES = ''' -- name: Configure a new dns view instance - community.general.nios_dns_view: - name: ansible-dns - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Update the comment for dns view - community.general.nios_dns_view: - name: ansible-dns - comment: this is an example comment - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Remove the dns view instance - community.general.nios_dns_view: - name: ansible-dns - state: absent - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Update the dns view instance - community.general.nios_dns_view: - name: {new_name: ansible-dns-new, old_name: ansible-dns} - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -''' - -RETURN = ''' # ''' - -from ansible.module_utils.basic import AnsibleModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import WapiModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import NIOS_DNS_VIEW -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import normalize_ib_spec - - -def main(): - ''' Main entry point for module execution - ''' - ib_spec = dict( - name=dict(required=True, aliases=['view'], ib_req=True), - network_view=dict(default='default', ib_req=True), - - extattrs=dict(type='dict'), - comment=dict() - ) - - argument_spec = dict( - provider=dict(required=True), - state=dict(default='present', choices=['present', 'absent']) - ) - - argument_spec.update(normalize_ib_spec(ib_spec)) - argument_spec.update(WapiModule.provider_spec) - - module = AnsibleModule(argument_spec=argument_spec, - supports_check_mode=True) - - wapi = WapiModule(module) - result = wapi.run(NIOS_DNS_VIEW, ib_spec) - - module.exit_json(**result) - - -if __name__ == '__main__': - main() diff --git a/plugins/modules/net_tools/nios/nios_fixed_address.py b/plugins/modules/net_tools/nios/nios_fixed_address.py deleted file mode 100644 index 26e3ed7d68..0000000000 --- a/plugins/modules/net_tools/nios/nios_fixed_address.py +++ /dev/null @@ -1,301 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# 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 - -DOCUMENTATION = ''' ---- -module: nios_fixed_address -author: "Sumit Jaiswal (@sjaiswal)" -short_description: Configure Infoblox NIOS DHCP Fixed Address -deprecated: - why: Please install the infoblox.nios_modules collection and use the corresponding module from it. - alternative: infoblox.nios_modules.nios_fixed_address - removed_in: 5.0.0 -description: - - A fixed address is a specific IP address that a DHCP server - always assigns when a lease request comes from a particular - MAC address of the client. - - Supports both IPV4 and IPV6 internet protocols -requirements: - - infoblox-client -extends_documentation_fragment: -- community.general.nios - -options: - name: - description: - - Specifies the hostname with which fixed DHCP ip-address is stored - for respective mac. - required: true - type: str - ipaddr: - description: - - IPV4/V6 address of the fixed address. - required: true - type: str - mac: - description: - - The MAC address of the interface. - required: true - type: str - network: - description: - - Specifies the network range in which ipaddr exists. - required: true - type: str - network_view: - description: - - Configures the name of the network view to associate with this - configured instance. - required: false - default: default - type: str - options: - description: - - Configures the set of DHCP options to be included as part of - the configured network instance. This argument accepts a list - of values (see suboptions). When configuring suboptions at - least one of C(name) or C(num) must be specified. - type: list - elements: dict - suboptions: - name: - description: - - The name of the DHCP option to configure - type: str - num: - description: - - The number of the DHCP option to configure - type: int - value: - description: - - The value of the DHCP option specified by C(name) - required: true - type: str - use_option: - description: - - Only applies to a subset of options (see NIOS API documentation) - type: bool - default: 'yes' - vendor_class: - description: - - The name of the space this DHCP option is associated to - default: DHCP - type: str - 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. - type: dict - 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. - type: str - 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 - type: str -''' - -EXAMPLES = ''' -- name: Configure ipv4 dhcp fixed address - community.general.nios_fixed_address: - name: ipv4_fixed - ipaddr: 192.168.10.1 - mac: 08:6d:41:e8:fd:e8 - network: 192.168.10.0/24 - network_view: default - comment: this is a test comment - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Configure a ipv6 dhcp fixed address - community.general.nios_fixed_address: - name: ipv6_fixed - ipaddr: fe80::1/10 - mac: 08:6d:41:e8:fd:e8 - network: fe80::/64 - network_view: default - comment: this is a test comment - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Set dhcp options for a ipv4 fixed address - community.general.nios_fixed_address: - name: ipv4_fixed - ipaddr: 192.168.10.1 - mac: 08:6d:41:e8:fd:e8 - network: 192.168.10.0/24 - network_view: default - comment: this is a test comment - options: - - name: domain-name - value: ansible.com - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Remove a ipv4 dhcp fixed address - community.general.nios_fixed_address: - name: ipv4_fixed - ipaddr: 192.168.10.1 - mac: 08:6d:41:e8:fd:e8 - network: 192.168.10.0/24 - network_view: default - state: absent - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -''' - -RETURN = ''' # ''' - -import socket - -from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.six import iteritems -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import WapiModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import NIOS_IPV4_FIXED_ADDRESS, NIOS_IPV6_FIXED_ADDRESS -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import normalize_ib_spec - - -def validate_ip_address(address): - try: - socket.inet_aton(address) - except socket.error: - return False - return address.count(".") == 3 - - -def validate_ip_v6_address(address): - try: - socket.inet_pton(socket.AF_INET6, address) - except socket.error: - return False - return True - - -def options(module): - ''' Transforms the module argument into a valid WAPI struct - This function will transform the options argument into a structure that - is a valid WAPI structure in the format of: - { - name: , - num: , - value: , - use_option: , - vendor_class: - } - It will remove any options that are set to None since WAPI will error on - that condition. The use_option field only applies - to special options that are displayed separately from other options and - have a use flag. This function removes the use_option flag from all - other options. It will also verify that either `name` or `num` is - set in the structure but does not validate the values are equal. - The remainder of the value validation is performed by WAPI - ''' - special_options = ['routers', 'router-templates', 'domain-name-servers', - 'domain-name', 'broadcast-address', 'broadcast-address-offset', - 'dhcp-lease-time', 'dhcp6.name-servers'] - options = list() - for item in module.params['options']: - opt = dict([(k, v) for k, v in iteritems(item) if v is not None]) - if 'name' not in opt and 'num' not in opt: - module.fail_json(msg='one of `name` or `num` is required for option value') - if opt['name'] not in special_options: - del opt['use_option'] - options.append(opt) - return options - - -def validate_ip_addr_type(ip, arg_spec, module): - '''This function will check if the argument ip is type v4/v6 and return appropriate infoblox network type - ''' - check_ip = ip.split('/') - - if validate_ip_address(check_ip[0]) and 'ipaddr' in arg_spec: - arg_spec['ipv4addr'] = arg_spec.pop('ipaddr') - module.params['ipv4addr'] = module.params.pop('ipaddr') - return NIOS_IPV4_FIXED_ADDRESS, arg_spec, module - elif validate_ip_v6_address(check_ip[0]) and 'ipaddr' in arg_spec: - arg_spec['ipv6addr'] = arg_spec.pop('ipaddr') - module.params['ipv6addr'] = module.params.pop('ipaddr') - return NIOS_IPV6_FIXED_ADDRESS, arg_spec, module - - -def main(): - ''' Main entry point for module execution - ''' - option_spec = dict( - # one of name or num is required; enforced by the function options() - name=dict(), - num=dict(type='int'), - - value=dict(required=True), - - use_option=dict(type='bool', default=True), - vendor_class=dict(default='DHCP') - ) - - ib_spec = dict( - name=dict(required=True), - ipaddr=dict(required=True, ib_req=True), - mac=dict(required=True, ib_req=True), - network=dict(required=True), - network_view=dict(default='default'), - - options=dict(type='list', elements='dict', options=option_spec, transform=options), - - extattrs=dict(type='dict'), - comment=dict() - ) - - argument_spec = dict( - provider=dict(required=True), - state=dict(default='present', choices=['present', 'absent']) - ) - - argument_spec.update(normalize_ib_spec(ib_spec)) - argument_spec.update(WapiModule.provider_spec) - - module = AnsibleModule(argument_spec=argument_spec, - supports_check_mode=True) - - # to get the argument ipaddr - obj_filter = dict([(k, module.params[k]) for k, v in iteritems(ib_spec) if v.get('ib_req')]) - # to modify argument based on ipaddr type i.e. IPV4/IPV6 - fixed_address_ip_type, ib_spec, module = validate_ip_addr_type(obj_filter['ipaddr'], ib_spec, module) - - wapi = WapiModule(module) - - result = wapi.run(fixed_address_ip_type, ib_spec) - - module.exit_json(**result) - - -if __name__ == '__main__': - main() diff --git a/plugins/modules/net_tools/nios/nios_host_record.py b/plugins/modules/net_tools/nios/nios_host_record.py deleted file mode 100644 index 825ff31765..0000000000 --- a/plugins/modules/net_tools/nios/nios_host_record.py +++ /dev/null @@ -1,361 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# 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 - -DOCUMENTATION = ''' ---- -module: nios_host_record -author: "Peter Sprygada (@privateip)" -short_description: Configure Infoblox NIOS host records -deprecated: - why: Please install the infoblox.nios_modules collection and use the corresponding module from it. - alternative: infoblox.nios_modules.nios_host_record - removed_in: 5.0.0 -description: - - Adds and/or removes instances of host record objects from - Infoblox NIOS servers. This module manages NIOS C(record:host) objects - using the Infoblox WAPI interface over REST. - - Updates instances of host record object from Infoblox NIOS servers. -requirements: - - infoblox-client -extends_documentation_fragment: -- community.general.nios - -options: - name: - description: - - Specifies the fully qualified hostname to add or remove from - the system. User can also update the hostname as it is possible - to pass a dict containing I(new_name), I(old_name). See examples. - required: true - type: str - view: - description: - - Sets the DNS view to associate this host record with. The DNS - view must already be configured on the system - default: default - aliases: - - dns_view - type: str - configure_for_dns: - description: - - Sets the DNS to particular parent. If user needs to bypass DNS - user can make the value to false. - type: bool - required: false - default: true - aliases: - - dns - ipv4addrs: - description: - - Configures the IPv4 addresses for this host record. This argument - accepts a list of values (see suboptions) - aliases: - - ipv4 - type: list - elements: dict - suboptions: - ipv4addr: - description: - - Configures the IPv4 address for the host record. Users can dynamically - allocate ipv4 address to host record by passing dictionary containing, - I(nios_next_ip) and I(CIDR network range). If user wants to add or - remove the ipv4 address from existing record, I(add/remove) - params need to be used. See examples - required: true - aliases: - - address - type: str - configure_for_dhcp: - description: - - Configure the host_record over DHCP instead of DNS, if user - changes it to true, user need to mention MAC address to configure - required: false - aliases: - - dhcp - type: bool - mac: - description: - - Configures the hardware MAC address for the host record. If user makes - DHCP to true, user need to mention MAC address. - required: false - type: str - add: - description: - - If user wants to add the ipv4 address to an existing host record. - Note that with I(add) user will have to keep the I(state) as I(present), - as new IP address is allocated to existing host record. See examples. - type: bool - required: false - version_added: '0.2.0' - remove: - description: - - If user wants to remove the ipv4 address from an existing host record. - Note that with I(remove) user will have to change the I(state) to I(absent), - as IP address is de-allocated from an existing host record. See examples. - type: bool - required: false - version_added: '0.2.0' - ipv6addrs: - description: - - Configures the IPv6 addresses for the host record. This argument - accepts a list of values (see options) - aliases: - - ipv6 - type: list - elements: dict - suboptions: - ipv6addr: - description: - - Configures the IPv6 address for the host record - required: true - aliases: - - address - type: str - configure_for_dhcp: - description: - - Configure the host_record over DHCP instead of DNS, if user - changes it to true, user need to mention MAC address to configure - required: false - type: bool - mac: - description: - - Configures the hardware MAC address for the host record. If user makes - DHCP to true, user need to mention MAC address. - required: false - type: str - aliases: - description: - - Configures an optional list of additional aliases to add to the host - record. These are equivalent to CNAMEs but held within a host - record. Must be in list format. - type: list - elements: str - ttl: - description: - - Configures the TTL to be associated with this host record - type: int - 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. - type: dict - 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. - type: str - 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 - type: str -''' - -EXAMPLES = ''' -- name: Configure an ipv4 host record - community.general.nios_host_record: - name: host.ansible.com - ipv4: - - address: 192.168.10.1 - aliases: - - cname.ansible.com - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Add a comment to an existing host record - community.general.nios_host_record: - name: host.ansible.com - ipv4: - - address: 192.168.10.1 - comment: this is a test comment - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Remove a host record from the system - community.general.nios_host_record: - name: host.ansible.com - state: absent - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Update an ipv4 host record - community.general.nios_host_record: - name: {new_name: host-new.ansible.com, old_name: host.ansible.com} - ipv4: - - address: 192.168.10.1 - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Create an ipv4 host record bypassing DNS - community.general.nios_host_record: - name: new_host - ipv4: - - address: 192.168.10.1 - dns: false - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Create an ipv4 host record over DHCP - community.general.nios_host_record: - name: host.ansible.com - ipv4: - - address: 192.168.10.1 - dhcp: true - mac: 00-80-C8-E3-4C-BD - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Dynamically add host record to next available ip - community.general.nios_host_record: - name: host.ansible.com - ipv4: - - address: {nios_next_ip: 192.168.10.0/24} - comment: this is a test comment - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Add ip to host record - community.general.nios_host_record: - name: host.ansible.com - ipv4: - - address: 192.168.10.2 - add: true - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Remove ip to host record - community.general.nios_host_record: - name: host.ansible.com - ipv4: - - address: 192.168.10.1 - remove: true - state: absent - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -''' - -RETURN = ''' # ''' - -from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.six import iteritems -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import WapiModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import NIOS_HOST_RECORD -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import normalize_ib_spec - - -def ipaddr(module, key, filtered_keys=None): - ''' Transforms the input value into a struct supported by WAPI - This function will transform the input from the playbook into a struct - that is valid for WAPI in the form of: - { - ipv4addr: , - mac: - } - This function does not validate the values are properly formatted or in - the acceptable range, that is left to WAPI. - ''' - filtered_keys = filtered_keys or list() - objects = list() - for item in module.params[key]: - objects.append(dict([(k, v) for k, v in iteritems(item) if v is not None and k not in filtered_keys])) - return objects - - -def ipv4addrs(module): - return ipaddr(module, 'ipv4addrs', filtered_keys=['address', 'dhcp']) - - -def ipv6addrs(module): - return ipaddr(module, 'ipv6addrs', filtered_keys=['address', 'dhcp']) - - -def main(): - ''' Main entry point for module execution - ''' - ipv4addr_spec = dict( - ipv4addr=dict(required=True, aliases=['address']), - configure_for_dhcp=dict(type='bool', required=False, aliases=['dhcp']), - mac=dict(required=False), - add=dict(type='bool', required=False), - remove=dict(type='bool', required=False) - ) - - ipv6addr_spec = dict( - ipv6addr=dict(required=True, aliases=['address']), - configure_for_dhcp=dict(type='bool', required=False), - mac=dict(required=False) - ) - - ib_spec = dict( - name=dict(required=True, ib_req=True), - view=dict(default='default', aliases=['dns_view'], ib_req=True), - - ipv4addrs=dict(type='list', aliases=['ipv4'], elements='dict', options=ipv4addr_spec, transform=ipv4addrs), - ipv6addrs=dict(type='list', aliases=['ipv6'], elements='dict', options=ipv6addr_spec, transform=ipv6addrs), - configure_for_dns=dict(type='bool', default=True, required=False, aliases=['dns'], ib_req=True), - aliases=dict(type='list', elements='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(normalize_ib_spec(ib_spec)) - argument_spec.update(WapiModule.provider_spec) - - module = AnsibleModule(argument_spec=argument_spec, - supports_check_mode=True) - - wapi = WapiModule(module) - result = wapi.run(NIOS_HOST_RECORD, ib_spec) - - module.exit_json(**result) - - -if __name__ == '__main__': - main() diff --git a/plugins/modules/net_tools/nios/nios_member.py b/plugins/modules/net_tools/nios/nios_member.py deleted file mode 100644 index ff9bd5dfa5..0000000000 --- a/plugins/modules/net_tools/nios/nios_member.py +++ /dev/null @@ -1,574 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# 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 - -DOCUMENTATION = ''' ---- -module: nios_member -author: "Krishna Vasudevan (@krisvasudevan)" -short_description: Configure Infoblox NIOS members -deprecated: - why: Please install the infoblox.nios_modules collection and use the corresponding module from it. - alternative: infoblox.nios_modules.nios_member - removed_in: 5.0.0 -description: - - Adds and/or removes Infoblox NIOS servers. This module manages NIOS C(member) objects using the Infoblox WAPI interface over REST. -requirements: - - infoblox-client -extends_documentation_fragment: -- community.general.nios - -options: - host_name: - description: - - Specifies the host name of the member to either add or remove from - the NIOS instance. - required: true - aliases: - - name - type: str - vip_setting: - description: - - Configures the network settings for the grid member. - type: list - elements: dict - suboptions: - address: - description: - - The IPv4 Address of the Grid Member - type: str - subnet_mask: - description: - - The subnet mask for the Grid Member - type: str - gateway: - description: - - The default gateway for the Grid Member - type: str - ipv6_setting: - description: - - Configures the IPv6 settings for the grid member. - type: list - elements: dict - suboptions: - virtual_ip: - description: - - The IPv6 Address of the Grid Member - type: str - cidr_prefix: - description: - - The IPv6 CIDR prefix for the Grid Member - type: int - gateway: - description: - - The gateway address for the Grid Member - type: str - config_addr_type: - description: - - Address configuration type (IPV4/IPV6/BOTH) - default: IPV4 - type: str - comment: - description: - - A descriptive comment of the Grid member. - type: str - extattrs: - description: - - Extensible attributes associated with the object. - type: dict - enable_ha: - description: - - If set to True, the member has two physical nodes (HA pair). - type: bool - default: false - router_id: - description: - - Virtual router identifier. Provide this ID if "ha_enabled" is set to "true". This is a unique VRID number (from 1 to 255) for the local subnet. - type: int - lan2_enabled: - description: - - When set to "true", the LAN2 port is enabled as an independent port or as a port for failover purposes. - type: bool - default: false - lan2_port_setting: - description: - - Settings for the Grid member LAN2 port if 'lan2_enabled' is set to "true". - type: list - elements: dict - suboptions: - enabled: - description: - - If set to True, then it has its own IP settings. - type: bool - network_setting: - description: - - If the 'enable' field is set to True, this defines IPv4 network settings for LAN2. - type: list - elements: dict - suboptions: - address: - description: - - The IPv4 Address of LAN2 - type: str - subnet_mask: - description: - - The subnet mask of LAN2 - type: str - gateway: - description: - - The default gateway of LAN2 - type: str - v6_network_setting: - description: - - If the 'enable' field is set to True, this defines IPv6 network settings for LAN2. - type: list - elements: dict - suboptions: - virtual_ip: - description: - - The IPv6 Address of LAN2 - type: str - cidr_prefix: - description: - - The IPv6 CIDR prefix of LAN2 - type: int - gateway: - description: - - The gateway address of LAN2 - type: str - platform: - description: - - Configures the Hardware Platform. - default: INFOBLOX - type: str - node_info: - description: - - Configures the node information list with detailed status report on the operations of the Grid Member. - type: list - elements: dict - suboptions: - lan2_physical_setting: - description: - - Physical port settings for the LAN2 interface. - type: list - elements: dict - suboptions: - auto_port_setting_enabled: - description: - - Enable or disalbe the auto port setting. - type: bool - duplex: - description: - - The port duplex; if speed is 1000, duplex must be FULL. - type: str - speed: - description: - - The port speed; if speed is 1000, duplex is FULL. - type: str - lan_ha_port_setting: - description: - - LAN/HA port settings for the node. - type: list - elements: dict - suboptions: - ha_ip_address: - description: - - HA IP address. - type: str - ha_port_setting: - description: - - Physical port settings for the HA interface. - type: list - elements: dict - suboptions: - auto_port_setting_enabled: - description: - - Enable or disalbe the auto port setting. - type: bool - duplex: - description: - - The port duplex; if speed is 1000, duplex must be FULL. - type: str - speed: - description: - - The port speed; if speed is 1000, duplex is FULL. - type: str - lan_port_setting: - description: - - Physical port settings for the LAN interface. - type: list - elements: dict - suboptions: - auto_port_setting_enabled: - description: - - Enable or disalbe the auto port setting. - type: bool - duplex: - description: - - The port duplex; if speed is 1000, duplex must be FULL. - type: str - speed: - description: - - The port speed; if speed is 1000, duplex is FULL. - type: str - mgmt_ipv6addr: - description: - - Public IPv6 address for the LAN1 interface. - type: str - mgmt_lan: - description: - - Public IPv4 address for the LAN1 interface. - type: str - mgmt_network_setting: - description: - - Network settings for the MGMT port of the node. - type: list - elements: dict - suboptions: - address: - description: - - The IPv4 Address of MGMT - type: str - subnet_mask: - description: - - The subnet mask of MGMT - type: str - gateway: - description: - - The default gateway of MGMT - type: str - v6_mgmt_network_setting: - description: - - The network settings for the IPv6 MGMT port of the node. - type: list - elements: dict - suboptions: - virtual_ip: - description: - - The IPv6 Address of MGMT - type: str - cidr_prefix: - description: - - The IPv6 CIDR prefix of MGMT - type: int - gateway: - description: - - The gateway address of MGMT - type: str - mgmt_port_setting: - description: - - Settings for the member MGMT port. - type: list - elements: dict - suboptions: - enabled: - description: - - Determines if MGMT port settings should be enabled. - type: bool - security_access_enabled: - description: - - Determines if security access on the MGMT port is enabled or not. - type: bool - vpn_enabled: - description: - - Determines if VPN on the MGMT port is enabled or not. - type: bool - upgrade_group: - description: - - The name of the upgrade group to which this Grid member belongs. - default: Default - type: str - use_syslog_proxy_setting: - description: - - Use flag for external_syslog_server_enable , syslog_servers, syslog_proxy_setting, syslog_size - type: bool - external_syslog_server_enable: - description: - - Determines if external syslog servers should be enabled - type: bool - syslog_servers: - description: - - The list of external syslog servers. - type: list - elements: dict - suboptions: - address: - description: - - The server address. - type: str - category_list: - description: - - The list of all syslog logging categories. - type: list - elements: str - connection_type: - description: - - The connection type for communicating with this server.(STCP/TCP?UDP) - default: UDP - type: str - local_interface: - description: - - The local interface through which the appliance sends syslog messages to the syslog server.(ANY/LAN/MGMT) - default: ANY - type: str - message_node_id: - description: - - Identify the node in the syslog message. (HOSTNAME/IP_HOSTNAME/LAN/MGMT) - default: LAN - type: str - message_source: - description: - - The source of syslog messages to be sent to the external syslog server. - default: ANY - type: str - only_category_list: - description: - - The list of selected syslog logging categories. The appliance forwards syslog messages that belong to the selected categories. - type: bool - port: - description: - - The port this server listens on. - default: 514 - type: int - severity: - description: - - The severity filter. The appliance sends log messages of the specified severity and above to the external syslog server. - default: DEBUG - type: str - pre_provisioning: - description: - - Pre-provisioning information. - type: list - elements: dict - suboptions: - hardware_info: - description: - - An array of structures that describe the hardware being pre-provisioned. - type: list - elements: dict - suboptions: - hwmodel: - description: - - Hardware model - type: str - hwtype: - description: - - Hardware type. - type: str - licenses: - description: - - An array of license types. - type: list - elements: str - create_token: - description: - - Flag for initiating a create token request for pre-provisioned members. - type: bool - default: False - 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 - type: str -''' - -EXAMPLES = ''' -- name: Add a member to the grid with IPv4 address - community.general.nios_member: - host_name: member01.localdomain - vip_setting: - - address: 192.168.1.100 - subnet_mask: 255.255.255.0 - gateway: 192.168.1.1 - config_addr_type: IPV4 - platform: VNIOS - comment: "Created by Ansible" - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Add a HA member to the grid - community.general.nios_member: - host_name: memberha.localdomain - vip_setting: - - address: 192.168.1.100 - subnet_mask: 255.255.255.0 - gateway: 192.168.1.1 - config_addr_type: IPV4 - platform: VNIOS - enable_ha: true - router_id: 150 - node_info: - - lan_ha_port_setting: - - ha_ip_address: 192.168.1.70 - mgmt_lan: 192.168.1.80 - - lan_ha_port_setting: - - ha_ip_address: 192.168.1.71 - mgmt_lan: 192.168.1.81 - comment: "Created by Ansible" - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Update the member with pre-provisioning details specified - community.general.nios_member: - name: member01.localdomain - pre_provisioning: - - hardware_info: - - hwmodel: IB-VM-820 - hwtype: IB-VNIOS - licenses: - - dns - - dhcp - - enterprise - - vnios - comment: "Updated by Ansible" - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Remove the member - community.general.nios_member: - name: member01.localdomain - state: absent - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -''' - -RETURN = ''' # ''' - -from ansible.module_utils.basic import AnsibleModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import WapiModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import NIOS_MEMBER -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import normalize_ib_spec - - -def main(): - ''' Main entry point for module execution - ''' - ipv4_spec = dict( - address=dict(), - subnet_mask=dict(), - gateway=dict(), - ) - - ipv6_spec = dict( - virtual_ip=dict(), - cidr_prefix=dict(type='int'), - gateway=dict(), - ) - - port_spec = dict( - auto_port_setting_enabled=dict(type='bool'), - duplex=dict(), - speed=dict(), - ) - - lan2_port_spec = dict( - enabled=dict(type='bool'), - network_setting=dict(type='list', elements='dict', options=ipv4_spec), - v6_network_setting=dict(type='list', elements='dict', options=ipv6_spec), - ) - - ha_port_spec = dict( - ha_ip_address=dict(), - ha_port_setting=dict(type='list', elements='dict', options=port_spec), - lan_port_setting=dict(type='list', elements='dict', options=port_spec), - mgmt_lan=dict(), - mgmt_ipv6addr=dict(), - ) - - node_spec = dict( - lan2_physical_setting=dict(type='list', elements='dict', options=port_spec), - lan_ha_port_setting=dict(type='list', elements='dict', options=ha_port_spec), - mgmt_network_setting=dict(type='list', elements='dict', options=ipv4_spec), - v6_mgmt_network_setting=dict(type='list', elements='dict', options=ipv6_spec), - ) - - mgmt_port_spec = dict( - enabled=dict(type='bool'), - security_access_enabled=dict(type='bool'), - vpn_enabled=dict(type='bool'), - ) - - syslog_spec = dict( - address=dict(), - category_list=dict(type='list', elements='str'), - connection_type=dict(default='UDP'), - local_interface=dict(default='ANY'), - message_node_id=dict(default='LAN'), - message_source=dict(default='ANY'), - only_category_list=dict(type='bool'), - port=dict(type='int', default=514), - severity=dict(default='DEBUG'), - ) - - hw_spec = dict( - hwmodel=dict(), - hwtype=dict(), - ) - - pre_prov_spec = dict( - hardware_info=dict(type='list', elements='dict', options=hw_spec), - licenses=dict(type='list', elements='str'), - ) - - ib_spec = dict( - host_name=dict(required=True, aliases=['name'], ib_req=True), - vip_setting=dict(type='list', elements='dict', options=ipv4_spec), - ipv6_setting=dict(type='list', elements='dict', options=ipv6_spec), - config_addr_type=dict(default='IPV4'), - comment=dict(), - enable_ha=dict(type='bool', default=False), - router_id=dict(type='int'), - lan2_enabled=dict(type='bool', default=False), - lan2_port_setting=dict(type='list', elements='dict', options=lan2_port_spec), - platform=dict(default='INFOBLOX'), - node_info=dict(type='list', elements='dict', options=node_spec), - mgmt_port_setting=dict(type='list', elements='dict', options=mgmt_port_spec), - upgrade_group=dict(default='Default'), - use_syslog_proxy_setting=dict(type='bool'), - external_syslog_server_enable=dict(type='bool'), - syslog_servers=dict(type='list', elements='dict', options=syslog_spec), - pre_provisioning=dict(type='list', elements='dict', options=pre_prov_spec), - extattrs=dict(type='dict'), - create_token=dict(type='bool', default=False), - ) - - argument_spec = dict( - provider=dict(required=True), - state=dict(default='present', choices=['present', 'absent']) - ) - - argument_spec.update(normalize_ib_spec(ib_spec)) - argument_spec.update(WapiModule.provider_spec) - - module = AnsibleModule(argument_spec=argument_spec, - supports_check_mode=True) - - wapi = WapiModule(module) - result = wapi.run(NIOS_MEMBER, ib_spec) - module.exit_json(**result) - - -if __name__ == '__main__': - main() diff --git a/plugins/modules/net_tools/nios/nios_mx_record.py b/plugins/modules/net_tools/nios/nios_mx_record.py deleted file mode 100644 index a34a1fdc78..0000000000 --- a/plugins/modules/net_tools/nios/nios_mx_record.py +++ /dev/null @@ -1,163 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# 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 - -DOCUMENTATION = ''' ---- -module: nios_mx_record -author: "Blair Rampling (@brampling)" -short_description: Configure Infoblox NIOS MX records -deprecated: - why: Please install the infoblox.nios_modules collection and use the corresponding module from it. - alternative: infoblox.nios_modules.nios_mx_record - removed_in: 5.0.0 -description: - - Adds and/or removes instances of MX record objects from - Infoblox NIOS servers. This module manages NIOS C(record:mx) objects - using the Infoblox WAPI interface over REST. -requirements: - - infoblox-client -extends_documentation_fragment: -- community.general.nios - -options: - name: - description: - - Specifies the fully qualified hostname to add or remove from - the system - required: true - type: str - view: - description: - - Sets the DNS view to associate this a record with. The DNS - view must already be configured on the system - default: default - aliases: - - dns_view - type: str - mail_exchanger: - description: - - Configures the mail exchanger FQDN for this MX record. - aliases: - - mx - type: str - preference: - description: - - Configures the preference (0-65535) for this MX record. - type: int - ttl: - description: - - Configures the TTL to be associated with this host record - type: int - 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. - type: dict - 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. - type: str - 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 - type: str -''' - -EXAMPLES = ''' -- name: Configure an MX record - community.general.nios_mx_record: - name: ansible.com - mx: mailhost.ansible.com - preference: 0 - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local - -- name: Add a comment to an existing MX record - community.general.nios_mx_record: - name: ansible.com - mx: mailhost.ansible.com - preference: 0 - comment: this is a test comment - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local - -- name: Remove an MX record from the system - community.general.nios_mx_record: - name: ansible.com - mx: mailhost.ansible.com - preference: 0 - state: absent - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -''' - -RETURN = ''' # ''' - -from ansible.module_utils.basic import AnsibleModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import WapiModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import NIOS_MX_RECORD -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import normalize_ib_spec - - -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), - - mail_exchanger=dict(aliases=['mx'], ib_req=True), - preference=dict(type='int', ib_req=True), - - 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(normalize_ib_spec(ib_spec)) - argument_spec.update(WapiModule.provider_spec) - - module = AnsibleModule(argument_spec=argument_spec, - supports_check_mode=True) - - wapi = WapiModule(module) - result = wapi.run(NIOS_MX_RECORD, ib_spec) - - module.exit_json(**result) - - -if __name__ == '__main__': - main() diff --git a/plugins/modules/net_tools/nios/nios_naptr_record.py b/plugins/modules/net_tools/nios/nios_naptr_record.py deleted file mode 100644 index e2e5e164d7..0000000000 --- a/plugins/modules/net_tools/nios/nios_naptr_record.py +++ /dev/null @@ -1,200 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# 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 - -DOCUMENTATION = ''' ---- -module: nios_naptr_record -author: "Blair Rampling (@brampling)" -short_description: Configure Infoblox NIOS NAPTR records -deprecated: - why: Please install the infoblox.nios_modules collection and use the corresponding module from it. - alternative: infoblox.nios_modules.nios_naptr_record - removed_in: 5.0.0 -description: - - Adds and/or removes instances of NAPTR record objects from - Infoblox NIOS servers. This module manages NIOS C(record:naptr) objects - using the Infoblox WAPI interface over REST. -requirements: - - infoblox_client -extends_documentation_fragment: -- community.general.nios - -options: - name: - description: - - Specifies the fully qualified hostname to add or remove from - the system - required: true - type: str - view: - description: - - Sets the DNS view to associate this a record with. The DNS - view must already be configured on the system - default: default - aliases: - - dns_view - type: str - order: - description: - - Configures the order (0-65535) for this NAPTR record. This parameter - specifies the order in which the NAPTR rules are applied when - multiple rules are present. - type: int - preference: - description: - - Configures the preference (0-65535) for this NAPTR record. The - preference field determines the order NAPTR records are processed - when multiple records with the same order parameter are present. - type: int - replacement: - description: - - Configures the replacement field for this NAPTR record. - For nonterminal NAPTR records, this field specifies the - next domain name to look up. - type: str - services: - description: - - Configures the services field (128 characters maximum) for this - NAPTR record. The services field contains protocol and service - identifiers, such as "http+E2U" or "SIPS+D2T". - required: false - type: str - flags: - description: - - Configures the flags field for this NAPTR record. These control the - interpretation of the fields for an NAPTR record object. Supported - values for the flags field are "U", "S", "P" and "A". - required: false - type: str - regexp: - description: - - Configures the regexp field for this NAPTR record. This is the - regular expression-based rewriting rule of the NAPTR record. This - should be a POSIX compliant regular expression, including the - substitution rule and flags. Refer to RFC 2915 for the field syntax - details. - required: false - type: str - ttl: - description: - - Configures the TTL to be associated with this NAPTR record - type: int - 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. - type: dict - 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. - type: str - 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 - type: str -''' - -EXAMPLES = ''' -- name: Configure a NAPTR record - community.general.nios_naptr_record: - name: '*.subscriber-100.ansiblezone.com' - order: 1000 - preference: 10 - replacement: replacement1.network.ansiblezone.com - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local - -- name: Add a comment to an existing NAPTR record - community.general.nios_naptr_record: - name: '*.subscriber-100.ansiblezone.com' - order: 1000 - preference: 10 - replacement: replacement1.network.ansiblezone.com - comment: this is a test comment - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local - -- name: Remove a NAPTR record from the system - community.general.nios_naptr_record: - name: '*.subscriber-100.ansiblezone.com' - order: 1000 - preference: 10 - replacement: replacement1.network.ansiblezone.com - state: absent - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -''' - -RETURN = ''' # ''' - -from ansible.module_utils.basic import AnsibleModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import WapiModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import normalize_ib_spec - - -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), - - order=dict(type='int', ib_req=True), - preference=dict(type='int', ib_req=True), - replacement=dict(ib_req=True), - services=dict(), - flags=dict(), - regexp=dict(), - - 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(normalize_ib_spec(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:naptr', ib_spec) - - module.exit_json(**result) - - -if __name__ == '__main__': - main() diff --git a/plugins/modules/net_tools/nios/nios_network.py b/plugins/modules/net_tools/nios/nios_network.py deleted file mode 100644 index 458e45dd8d..0000000000 --- a/plugins/modules/net_tools/nios/nios_network.py +++ /dev/null @@ -1,334 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# 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 - -DOCUMENTATION = ''' ---- -module: nios_network -author: "Peter Sprygada (@privateip)" -short_description: Configure Infoblox NIOS network object -deprecated: - why: Please install the infoblox.nios_modules collection and use the corresponding module from it. - alternative: infoblox.nios_modules.nios_network - removed_in: 5.0.0 -description: - - Adds and/or removes instances of network objects from - Infoblox NIOS servers. This module manages NIOS C(network) objects - using the Infoblox WAPI interface over REST. - - Supports both IPV4 and IPV6 internet protocols -requirements: - - infoblox-client -extends_documentation_fragment: -- community.general.nios - -options: - network: - description: - - Specifies the network to add or remove from the system. The value - should use CIDR notation. - required: true - aliases: - - name - - cidr - type: str - network_view: - description: - - Configures the name of the network view to associate with this - configured instance. - default: default - type: str - options: - description: - - Configures the set of DHCP options to be included as part of - the configured network instance. This argument accepts a list - of values (see suboptions). When configuring suboptions at - least one of C(name) or C(num) must be specified. - type: list - elements: dict - suboptions: - name: - description: - - The name of the DHCP option to configure. The standard options are - C(router), C(router-templates), C(domain-name-servers), C(domain-name), - C(broadcast-address), C(broadcast-address-offset), C(dhcp-lease-time), - and C(dhcp6.name-servers). - type: str - num: - description: - - The number of the DHCP option to configure - type: int - value: - description: - - The value of the DHCP option specified by C(name) - required: true - type: str - use_option: - description: - - Only applies to a subset of options (see NIOS API documentation) - type: bool - default: 'yes' - vendor_class: - description: - - The name of the space this DHCP option is associated to - default: DHCP - type: str - 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. - type: dict - 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. - type: str - container: - description: - - If set to true it'll create the network container to be added or removed - from the system. - type: bool - 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 - type: str -''' - -EXAMPLES = ''' -- name: Configure a network ipv4 - community.general.nios_network: - network: 192.168.10.0/24 - comment: this is a test comment - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Configure a network ipv6 - community.general.nios_network: - network: fe80::/64 - comment: this is a test comment - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Set dhcp options for a network ipv4 - community.general.nios_network: - network: 192.168.10.0/24 - comment: this is a test comment - options: - - name: domain-name - value: ansible.com - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Remove a network ipv4 - community.general.nios_network: - network: 192.168.10.0/24 - state: absent - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Configure a ipv4 network container - community.general.nios_network: - network: 192.168.10.0/24 - container: true - comment: test network container - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Configure a ipv6 network container - community.general.nios_network: - network: fe80::/64 - container: true - comment: test network container - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Remove a ipv4 network container - community.general.nios_network: - networkr: 192.168.10.0/24 - container: true - comment: test network container - state: absent - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -''' - -RETURN = ''' # ''' - -import socket - -from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.six import iteritems -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import WapiModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import NIOS_IPV4_NETWORK, NIOS_IPV6_NETWORK -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import NIOS_IPV4_NETWORK_CONTAINER, NIOS_IPV6_NETWORK_CONTAINER -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import normalize_ib_spec - - -# The following function validate_ip_address has been taken from -# https://github.com/ansible-collections/ansible.netcommon/blob/20124ecbb420daa0f5bb9cdaa865a952657aa0e7/plugins/module_utils/network/common/utils.py#L496 -# The code there is licensed under BSD 2-clause. -# Copyright (c) 2016 Red Hat Inc. -def validate_ip_address(address): - try: - socket.inet_aton(address) - except socket.error: - return False - return address.count(".") == 3 - - -# The following function validate_ip_v6_address has been taken from -# https://github.com/ansible-collections/ansible.netcommon/blob/20124ecbb420daa0f5bb9cdaa865a952657aa0e7/plugins/module_utils/network/common/utils.py#L504 -# The code there is licensed under BSD 2-clause. -# Copyright (c) 2016 Red Hat Inc. -def validate_ip_v6_address(address): - try: - socket.inet_pton(socket.AF_INET6, address) - except socket.error: - return False - return True - - -def options(module): - ''' Transforms the module argument into a valid WAPI struct - This function will transform the options argument into a structure that - is a valid WAPI structure in the format of: - { - name: , - num: , - value: , - use_option: , - vendor_class: - } - It will remove any options that are set to None since WAPI will error on - that condition. It will also verify that either `name` or `num` is - set in the structure but does not validate the values are equal. - The remainder of the value validation is performed by WAPI - ''' - options = list() - for item in module.params['options']: - opt = dict([(k, v) for k, v in iteritems(item) if v is not None]) - if 'name' not in opt and 'num' not in opt: - module.fail_json(msg='one of `name` or `num` is required for option value') - options.append(opt) - return options - - -def check_ip_addr_type(obj_filter, ib_spec): - '''This function will check if the argument ip is type v4/v6 and return appropriate infoblox - network/networkcontainer type - ''' - - ip = obj_filter['network'] - if 'container' in obj_filter and obj_filter['container']: - check_ip = ip.split('/') - del ib_spec['container'] # removing the container key from post arguments - del ib_spec['options'] # removing option argument as for network container it's not supported - if validate_ip_address(check_ip[0]): - return NIOS_IPV4_NETWORK_CONTAINER, ib_spec - elif validate_ip_v6_address(check_ip[0]): - return NIOS_IPV6_NETWORK_CONTAINER, ib_spec - else: - check_ip = ip.split('/') - del ib_spec['container'] # removing the container key from post arguments - if validate_ip_address(check_ip[0]): - return NIOS_IPV4_NETWORK, ib_spec - elif validate_ip_v6_address(check_ip[0]): - return NIOS_IPV6_NETWORK, ib_spec - - -def check_vendor_specific_dhcp_option(module, ib_spec): - '''This function will check if the argument dhcp option belongs to vendor-specific and if yes then will remove - use_options flag which is not supported with vendor-specific dhcp options. - ''' - for key, value in iteritems(ib_spec): - if isinstance(module.params[key], list): - temp_dict = module.params[key][0] - if 'num' in temp_dict: - if temp_dict['num'] in (43, 124, 125): - del module.params[key][0]['use_option'] - return ib_spec - - -def main(): - ''' Main entry point for module execution - ''' - option_spec = dict( - # one of name or num is required; enforced by the function options() - name=dict(), - num=dict(type='int'), - - value=dict(required=True), - - use_option=dict(type='bool', default=True), - vendor_class=dict(default='DHCP') - ) - - ib_spec = dict( - network=dict(required=True, aliases=['name', 'cidr'], ib_req=True), - network_view=dict(default='default', ib_req=True), - - options=dict(type='list', elements='dict', options=option_spec, transform=options), - - extattrs=dict(type='dict'), - comment=dict(), - container=dict(type='bool', ib_req=True) - ) - - argument_spec = dict( - provider=dict(required=True), - state=dict(default='present', choices=['present', 'absent']) - ) - - argument_spec.update(normalize_ib_spec(ib_spec)) - argument_spec.update(WapiModule.provider_spec) - - module = AnsibleModule(argument_spec=argument_spec, - supports_check_mode=True) - - # to get the argument ipaddr - obj_filter = dict([(k, module.params[k]) for k, v in iteritems(ib_spec) if v.get('ib_req')]) - network_type, ib_spec = check_ip_addr_type(obj_filter, ib_spec) - - wapi = WapiModule(module) - # to check for vendor specific dhcp option - ib_spec = check_vendor_specific_dhcp_option(module, ib_spec) - - result = wapi.run(network_type, ib_spec) - - module.exit_json(**result) - - -if __name__ == '__main__': - main() diff --git a/plugins/modules/net_tools/nios/nios_network_view.py b/plugins/modules/net_tools/nios/nios_network_view.py deleted file mode 100644 index f4a18bcd26..0000000000 --- a/plugins/modules/net_tools/nios/nios_network_view.py +++ /dev/null @@ -1,138 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# 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 - -DOCUMENTATION = ''' ---- -module: nios_network_view -author: "Peter Sprygada (@privateip)" -short_description: Configure Infoblox NIOS network views -deprecated: - why: Please install the infoblox.nios_modules collection and use the corresponding module from it. - alternative: infoblox.nios_modules.nios_network_view - removed_in: 5.0.0 -description: - - Adds and/or removes instances of network view objects from - Infoblox NIOS servers. This module manages NIOS C(networkview) objects - using the Infoblox WAPI interface over REST. - - Updates instances of network view object from Infoblox NIOS servers. -requirements: - - infoblox-client -extends_documentation_fragment: -- community.general.nios - -options: - name: - description: - - Specifies the fully qualified hostname to add or remove from - the system. User can also update the hostname as it is possible - to pass a dict containing I(new_name), I(old_name). See examples. - required: true - aliases: - - network_view - type: str - 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. - type: dict - 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. - type: str - 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 - type: str -''' - -EXAMPLES = ''' -- name: Configure a new network view - community.general.nios_network_view: - name: ansible - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Update the comment for network view - community.general.nios_network_view: - name: ansible - comment: this is an example comment - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Remove the network view - community.general.nios_network_view: - name: ansible - state: absent - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Update a existing network view - community.general.nios_network_view: - name: {new_name: ansible-new, old_name: ansible} - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -''' - -RETURN = ''' # ''' - -from ansible.module_utils.basic import AnsibleModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import WapiModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import NIOS_NETWORK_VIEW -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import normalize_ib_spec - - -def main(): - ''' Main entry point for module execution - ''' - ib_spec = dict( - name=dict(required=True, aliases=['network_view'], ib_req=True), - extattrs=dict(type='dict'), - comment=dict(), - ) - - argument_spec = dict( - provider=dict(required=True), - state=dict(default='present', choices=['present', 'absent']) - ) - - argument_spec.update(normalize_ib_spec(ib_spec)) - argument_spec.update(WapiModule.provider_spec) - - module = AnsibleModule(argument_spec=argument_spec, - supports_check_mode=True) - - wapi = WapiModule(module) - result = wapi.run(NIOS_NETWORK_VIEW, ib_spec) - - module.exit_json(**result) - - -if __name__ == '__main__': - main() diff --git a/plugins/modules/net_tools/nios/nios_nsgroup.py b/plugins/modules/net_tools/nios/nios_nsgroup.py deleted file mode 100644 index 8e8cde399c..0000000000 --- a/plugins/modules/net_tools/nios/nios_nsgroup.py +++ /dev/null @@ -1,446 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -# 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 - -DOCUMENTATION = ''' ---- -module: nios_nsgroup -short_description: Configure InfoBlox DNS Nameserver Groups -deprecated: - why: Please install the infoblox.nios_modules collection and use the corresponding module from it. - alternative: infoblox.nios_modules.nios_nsgroup - removed_in: 5.0.0 -extends_documentation_fragment: -- community.general.nios - -author: - - Erich Birngruber (@ebirn) - - Sumit Jaiswal (@sjaiswal) -description: - - Adds and/or removes nameserver groups form Infoblox NIOS servers. - This module manages NIOS C(nsgroup) objects using the Infoblox. WAPI interface over REST. -requirements: - - infoblox_client -options: - name: - description: - - Specifies the name of the NIOS nameserver group to be managed. - required: true - type: str - grid_primary: - description: - - This host is to be used as primary server in this nameserver group. It must be a grid member. - This option is required when setting I(use_external_primaries) to C(false). - type: list - elements: dict - suboptions: - name: - description: - - Provide the name of the grid member to identify the host. - required: true - type: str - enable_preferred_primaries: - description: - - This flag represents whether the preferred_primaries field values of this member are used (see Infoblox WAPI docs). - default: false - type: bool - grid_replicate: - description: - - Use DNS zone transfers if set to C(True) or ID Grid Replication if set to C(False). - type: bool - default: false - lead: - description: - - This flag controls if the grid lead secondary nameserver performs zone transfers to non lead secondaries. - type: bool - default: false - stealth: - description: - - Configure the external nameserver as stealth server (without NS record) in the zones. - type: bool - default: false - preferred_primaries: - description: - - Provide a list of elements like in I(external_primaries) to set the precedence of preferred primary nameservers. - type: list - elements: dict - suboptions: - address: - description: - - Configures the IP address of the preferred primary nameserver. - required: true - type: str - name: - description: - - Set a label for the preferred primary nameserver. - required: true - type: str - stealth: - description: - - Configure the preferred primary nameserver as stealth server (without NS record) in the zones. - type: bool - default: false - tsig_key_name: - description: - - Sets a label for the I(tsig_key) value. - required: true - type: str - tsig_key_alg: - description: - - Provides the algorithm used for the I(tsig_key) in use. - choices: ['HMAC-MD5', 'HMAC-SHA256'] - default: 'HMAC-MD5' - type: str - tsig_key: - description: - - Set a DNS TSIG key for the nameserver to secure zone transfers (AFXRs). - type: str - grid_secondaries: - description: - - Configures the list of grid member hosts that act as secondary nameservers. - This option is required when setting I(use_external_primaries) to C(true). - type: list - elements: dict - suboptions: - name: - description: - - Provide the name of the grid member to identify the host. - required: true - type: str - enable_preferred_primaries: - description: - - This flag represents whether the preferred_primaries field values of this member are used (see Infoblox WAPI docs). - default: false - type: bool - grid_replicate: - description: - - Use DNS zone transfers if set to C(True) or ID Grid Replication if set to C(False) - type: bool - default: false - lead: - description: - - This flag controls if the grid lead secondary nameserver performs zone transfers to non lead secondaries. - type: bool - default: false - stealth: - description: - - Configure the external nameserver as stealth server (without NS record) in the zones. - type: bool - default: false - preferred_primaries: - description: - - Provide a list of elements like in I(external_primaries) to set the precedence of preferred primary nameservers. - type: list - elements: dict - suboptions: - address: - description: - - Configures the IP address of the preferred primary nameserver. - required: true - type: str - name: - description: - - Set a label for the preferred primary nameserver. - required: true - type: str - stealth: - description: - - Configure the preferred primary nameserver as stealth server (without NS record) in the zones. - type: bool - default: false - tsig_key_name: - description: - - Sets a label for the I(tsig_key) value. - type: str - required: true - tsig_key_alg: - description: - - Provides the algorithm used for the I(tsig_key) in use. - choices: ['HMAC-MD5', 'HMAC-SHA256'] - default: 'HMAC-MD5' - type: str - tsig_key: - description: - - Set a DNS TSIG key for the nameserver to secure zone transfers (AFXRs). - type: str - is_grid_default: - description: - - If set to C(True) this nsgroup will become the default nameserver group for new zones. - type: bool - required: false - default: false - use_external_primary: - description: - - This flag controls whether the group is using an external primary nameserver. - Note that modification of this field requires passing values for I(grid_secondaries) and I(external_primaries). - type: bool - required: false - default: false - external_primaries: - description: - - Configures a list of external nameservers (non-members of the grid). - This option is required when setting I(use_external_primaries) to C(true). - type: list - elements: dict - suboptions: - address: - description: - - Configures the IP address of the external nameserver - required: true - type: str - name: - description: - - Set a label for the external nameserver - required: true - type: str - stealth: - description: - - Configure the external nameserver as stealth server (without NS record) in the zones. - type: bool - default: false - tsig_key_name: - description: - - Sets a label for the I(tsig_key) value - type: str - required: true - tsig_key_alg: - description: - - Provides the algorithm used for the I(tsig_key) in use. - choices: ['HMAC-MD5', 'HMAC-SHA256'] - default: 'HMAC-MD5' - type: str - tsig_key: - description: - - Set a DNS TSIG key for the nameserver to secure zone transfers (AFXRs). - type: str - required: false - external_secondaries: - description: - - Allows to provide a list of external secondary nameservers, that are not members of the grid. - type: list - elements: dict - suboptions: - address: - description: - - Configures the IP address of the external nameserver - required: true - type: str - name: - description: - - Set a label for the external nameserver - required: true - type: str - stealth: - description: - - Configure the external nameserver as stealth server (without NS record) in the zones. - type: bool - default: false - tsig_key_name: - description: - - Sets a label for the I(tsig_key) value - type: str - required: true - tsig_key_alg: - description: - - Provides the algorithm used for the I(tsig_key) in use. - choices: ['HMAC-MD5', 'HMAC-SHA256'] - default: 'HMAC-MD5' - type: str - tsig_key: - description: - - Set a DNS TSIG key for the nameserver to secure zone transfers (AFXRs). - type: str - 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. - required: false - type: str - 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. - required: false - type: str - 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. - choices: [present, absent] - default: present - type: str - ''' - -EXAMPLES = ''' -- name: Create simple infoblox nameserver group - community.general.nios_nsgroup: - name: my-simple-group - comment: "this is a simple nameserver group" - grid_primary: - - name: infoblox-test.example.com - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local - -- name: Create infoblox nameserver group with external primaries - community.general.nios_nsgroup: - name: my-example-group - use_external_primary: true - comment: "this is my example nameserver group" - external_primaries: "{{ ext_nameservers }}" - grid_secondaries: - - name: infoblox-test.example.com - lead: True - preferred_primaries: "{{ ext_nameservers }}" - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local - -- name: Delete infoblox nameserver group - community.general.nios_nsgroup: - name: my-simple-group - comment: "this is a simple nameserver group" - grid_primary: - - name: infoblox-test.example.com - state: absent - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -''' - -RETURN = ''' # ''' - -from ansible.module_utils.basic import AnsibleModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import WapiModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import NIOS_NSGROUP -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import normalize_ib_spec - - -# from infoblox documentation -# Fields List -# Field Type Req R/O Base Search -# comment String N N Y : = ~ -# extattrs Extattr N N N ext -# external_primaries [struct] N N N N/A -# external_secondaries [struct] N N N N/A -# grid_primary [struct] N N N N/A -# grid_secondaries [struct] N N N N/A -# is_grid_default Bool N N N N/A -# is_multimaster Bool N Y N N/A -# name String Y N Y : = ~ -# use_external_primary Bool N N N N/A - - -def main(): - '''entrypoint for module execution.''' - argument_spec = dict( - provider=dict(required=True), - state=dict(default='present', choices=['present', 'absent']), - ) - - # cleanup tsig fields - def clean_tsig(ext): - if 'tsig_key' in ext and not ext['tsig_key']: - del ext['tsig_key'] - if 'tsig_key' not in ext and 'tsig_key_name' in ext and not ext['tsig_key_name']: - del ext['tsig_key_name'] - if 'tsig_key' not in ext and 'tsig_key_alg' in ext: - del ext['tsig_key_alg'] - - def clean_grid_member(member): - if member['preferred_primaries']: - for ext in member['preferred_primaries']: - clean_tsig(ext) - if member['enable_preferred_primaries'] is False: - del member['enable_preferred_primaries'] - del member['preferred_primaries'] - if member['lead'] is False: - del member['lead'] - if member['grid_replicate'] is False: - del member['grid_replicate'] - - def ext_primaries_transform(module): - if module.params['external_primaries']: - for ext in module.params['external_primaries']: - clean_tsig(ext) - return module.params['external_primaries'] - - def ext_secondaries_transform(module): - if module.params['external_secondaries']: - for ext in module.params['external_secondaries']: - clean_tsig(ext) - return module.params['external_secondaries'] - - def grid_primary_preferred_transform(module): - for member in module.params['grid_primary']: - clean_grid_member(member) - return module.params['grid_primary'] - - def grid_secondaries_preferred_primaries_transform(module): - for member in module.params['grid_secondaries']: - clean_grid_member(member) - return module.params['grid_secondaries'] - - extserver_spec = dict( - address=dict(required=True), - name=dict(required=True), - stealth=dict(type='bool', default=False), - tsig_key=dict(no_log=True), - tsig_key_alg=dict(choices=['HMAC-MD5', 'HMAC-SHA256'], default='HMAC-MD5'), - tsig_key_name=dict(required=True) - ) - - memberserver_spec = dict( - name=dict(required=True, ), - enable_preferred_primaries=dict(type='bool', default=False), - grid_replicate=dict(type='bool', default=False), - lead=dict(type='bool', default=False), - preferred_primaries=dict(type='list', elements='dict', options=extserver_spec, default=[]), - stealth=dict(type='bool', default=False), - ) - - ib_spec = dict( - name=dict(required=True, ib_req=True), - grid_primary=dict(type='list', elements='dict', options=memberserver_spec, - transform=grid_primary_preferred_transform), - grid_secondaries=dict(type='list', elements='dict', options=memberserver_spec, - transform=grid_secondaries_preferred_primaries_transform), - external_primaries=dict(type='list', elements='dict', options=extserver_spec, transform=ext_primaries_transform), - external_secondaries=dict(type='list', elements='dict', options=extserver_spec, - transform=ext_secondaries_transform), - is_grid_default=dict(type='bool', default=False), - use_external_primary=dict(type='bool', default=False), - extattrs=dict(), - comment=dict(), - ) - - argument_spec.update(normalize_ib_spec(ib_spec)) - argument_spec.update(WapiModule.provider_spec) - - module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True) - - wapi = WapiModule(module) - result = wapi.run(NIOS_NSGROUP, ib_spec) - - module.exit_json(**result) - - -if __name__ == '__main__': - main() diff --git a/plugins/modules/net_tools/nios/nios_ptr_record.py b/plugins/modules/net_tools/nios/nios_ptr_record.py deleted file mode 100644 index a0c3e63270..0000000000 --- a/plugins/modules/net_tools/nios/nios_ptr_record.py +++ /dev/null @@ -1,168 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# 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 - -DOCUMENTATION = ''' ---- -module: nios_ptr_record -author: "Trebuchet Clement (@clementtrebuchet)" -short_description: Configure Infoblox NIOS PTR records -deprecated: - why: Please install the infoblox.nios_modules collection and use the corresponding module from it. - alternative: infoblox.nios_modules.nios_ptr_record - removed_in: 5.0.0 -description: - - Adds and/or removes instances of PTR record objects from - Infoblox NIOS servers. This module manages NIOS C(record:ptr) objects - using the Infoblox WAPI interface over REST. -requirements: - - infoblox_client -extends_documentation_fragment: -- community.general.nios - -options: - name: - description: - - The name of the DNS PTR record in FQDN format to add or remove from - the system. - The field is required only for an PTR object in Forward Mapping Zone. - required: false - type: str - view: - description: - - Sets the DNS view to associate this a record with. The DNS - view must already be configured on the system - required: false - aliases: - - dns_view - type: str - ipv4addr: - description: - - The IPv4 Address of the record. Mutually exclusive with the ipv6addr. - aliases: - - ipv4 - type: str - ipv6addr: - description: - - The IPv6 Address of the record. Mutually exclusive with the ipv4addr. - aliases: - - ipv6 - type: str - ptrdname: - description: - - The domain name of the DNS PTR record in FQDN format. - type: str - ttl: - description: - - Time To Live (TTL) value for the record. - A 32-bit unsigned integer that represents the duration, in seconds, that the record is valid (cached). - Zero indicates that the record should not be cached. - type: int - 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. - type: dict - 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. Maximum 256 characters. - type: str - 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 - type: str -''' - -EXAMPLES = ''' -- name: Create a PTR Record - community.general.nios_ptr_record: - ipv4: 192.168.10.1 - ptrdname: host.ansible.com - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local - -- name: Delete a PTR Record - community.general.nios_ptr_record: - ipv4: 192.168.10.1 - ptrdname: host.ansible.com - state: absent - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -''' - -RETURN = ''' # ''' - -from ansible.module_utils.basic import AnsibleModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import WapiModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import NIOS_PTR_RECORD -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import normalize_ib_spec - - -def main(): - # Module entry point - ib_spec = dict( - name=dict(required=False), - view=dict(aliases=['dns_view'], ib_req=True), - ipv4addr=dict(aliases=['ipv4'], ib_req=True), - ipv6addr=dict(aliases=['ipv6'], ib_req=True), - ptrdname=dict(ib_req=True), - - 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(normalize_ib_spec(ib_spec)) - argument_spec.update(WapiModule.provider_spec) - - mutually_exclusive = [('ipv4addr', 'ipv6addr')] - required_one_of = [ - ['ipv4addr', 'ipv6addr'] - ] - - module = AnsibleModule(argument_spec=argument_spec, - mutually_exclusive=mutually_exclusive, - supports_check_mode=True, - required_one_of=required_one_of) - - if module.params['ipv4addr']: - del ib_spec['ipv6addr'] - elif module.params['ipv6addr']: - del ib_spec['ipv4addr'] - - wapi = WapiModule(module) - result = wapi.run(NIOS_PTR_RECORD, ib_spec) - - module.exit_json(**result) - - -if __name__ == '__main__': - main() diff --git a/plugins/modules/net_tools/nios/nios_srv_record.py b/plugins/modules/net_tools/nios/nios_srv_record.py deleted file mode 100644 index 9c0247d49d..0000000000 --- a/plugins/modules/net_tools/nios/nios_srv_record.py +++ /dev/null @@ -1,177 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# 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 - -DOCUMENTATION = ''' ---- -module: nios_srv_record -author: "Blair Rampling (@brampling)" -short_description: Configure Infoblox NIOS SRV records -deprecated: - why: Please install the infoblox.nios_modules collection and use the corresponding module from it. - alternative: infoblox.nios_modules.nios_srv_record - removed_in: 5.0.0 -description: - - Adds and/or removes instances of SRV record objects from - Infoblox NIOS servers. This module manages NIOS C(record:srv) objects - using the Infoblox WAPI interface over REST. -requirements: - - infoblox-client -extends_documentation_fragment: -- community.general.nios - -options: - name: - description: - - Specifies the fully qualified hostname to add or remove from - the system - required: true - type: str - view: - description: - - Sets the DNS view to associate this a record with. The DNS - view must already be configured on the system - default: default - aliases: - - dns_view - type: str - port: - description: - - Configures the port (0-65535) of this SRV record. - type: int - priority: - description: - - Configures the priority (0-65535) for this SRV record. - type: int - target: - description: - - Configures the target FQDN for this SRV record. - type: str - weight: - description: - - Configures the weight (0-65535) for this SRV record. - type: int - ttl: - description: - - Configures the TTL to be associated with this host record - type: int - 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. - type: dict - 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. - type: str - 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 - type: str -''' - -EXAMPLES = ''' -- name: Configure an SRV record - community.general.nios_srv_record: - name: _sip._tcp.service.ansible.com - port: 5080 - priority: 10 - target: service1.ansible.com - weight: 10 - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local - -- name: Add a comment to an existing SRV record - community.general.nios_srv_record: - name: _sip._tcp.service.ansible.com - port: 5080 - priority: 10 - target: service1.ansible.com - weight: 10 - comment: this is a test comment - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local - -- name: Remove an SRV record from the system - community.general.nios_srv_record: - name: _sip._tcp.service.ansible.com - port: 5080 - priority: 10 - target: service1.ansible.com - weight: 10 - state: absent - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -''' - -RETURN = ''' # ''' - -from ansible.module_utils.basic import AnsibleModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import WapiModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import NIOS_SRV_RECORD -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import normalize_ib_spec - - -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), - - port=dict(type='int', ib_req=True), - priority=dict(type='int', ib_req=True), - target=dict(ib_req=True), - weight=dict(type='int', ib_req=True), - - 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(normalize_ib_spec(ib_spec)) - argument_spec.update(WapiModule.provider_spec) - - module = AnsibleModule(argument_spec=argument_spec, - supports_check_mode=True) - - wapi = WapiModule(module) - result = wapi.run(NIOS_SRV_RECORD, ib_spec) - - module.exit_json(**result) - - -if __name__ == '__main__': - main() diff --git a/plugins/modules/net_tools/nios/nios_txt_record.py b/plugins/modules/net_tools/nios/nios_txt_record.py deleted file mode 100644 index 6cb1d64d35..0000000000 --- a/plugins/modules/net_tools/nios/nios_txt_record.py +++ /dev/null @@ -1,140 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# 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 - -DOCUMENTATION = ''' ---- -module: nios_txt_record -author: "Corey Wanless (@coreywan)" -short_description: Configure Infoblox NIOS txt records -deprecated: - why: Please install the infoblox.nios_modules collection and use the corresponding module from it. - alternative: infoblox.nios_modules.nios_txt_record - removed_in: 5.0.0 -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: -- community.general.nios - -options: - name: - description: - - Specifies the fully qualified hostname to add or remove from - the system - required: true - type: str - view: - description: - - Sets the DNS view to associate this tst record with. The DNS - view must already be configured on the system - default: default - aliases: - - dns_view - type: str - 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. - type: str - ttl: - description: - - Configures the TTL to be associated with this tst record - type: int - 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. - type: dict - 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. - type: str - 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 - type: str -''' - -EXAMPLES = ''' - - name: Ensure a text Record Exists - community.general.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 - community.general.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_collections.community.general.plugins.module_utils.net_tools.nios.api import WapiModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import normalize_ib_spec - - -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(ib_req=True), - 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(normalize_ib_spec(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/plugins/modules/net_tools/nios/nios_zone.py b/plugins/modules/net_tools/nios/nios_zone.py deleted file mode 100644 index 463c68c8ac..0000000000 --- a/plugins/modules/net_tools/nios/nios_zone.py +++ /dev/null @@ -1,241 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# 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 - -DOCUMENTATION = ''' ---- -module: nios_zone -author: "Peter Sprygada (@privateip)" -short_description: Configure Infoblox NIOS DNS zones -deprecated: - why: Please install the infoblox.nios_modules collection and use the corresponding module from it. - alternative: infoblox.nios_modules.nios_zone - removed_in: 5.0.0 -description: - - Adds and/or removes instances of DNS zone objects from - Infoblox NIOS servers. This module manages NIOS C(zone_auth) objects - using the Infoblox WAPI interface over REST. -requirements: - - infoblox-client -extends_documentation_fragment: -- community.general.nios - -options: - fqdn: - description: - - Specifies the qualified domain name to either add or remove from - the NIOS instance based on the configured C(state) value. - required: true - aliases: - - name - type: str - view: - description: - - Configures the DNS view name for the configured resource. The - specified DNS zone must already exist on the running NIOS instance - prior to configuring zones. - default: default - aliases: - - dns_view - type: str - grid_primary: - description: - - Configures the grid primary servers for this zone. - type: list - elements: dict - suboptions: - name: - description: - - The name of the grid primary server - required: true - type: str - grid_secondaries: - description: - - Configures the grid secondary servers for this zone. - type: list - elements: dict - suboptions: - name: - description: - - The name of the grid secondary server - required: true - type: str - ns_group: - description: - - Configures the name server group for this zone. Name server group is - mutually exclusive with grid primary and grid secondaries. - type: str - restart_if_needed: - description: - - If set to true, causes the NIOS DNS service to restart and load the - new zone configuration - type: bool - zone_format: - description: - - Create an authorative Reverse-Mapping Zone which is an area of network - space for which one or more name servers-primary and secondary-have the - responsibility to respond to address-to-name queries. It supports - reverse-mapping zones for both IPv4 and IPv6 addresses. - default: FORWARD - type: str - 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. - type: dict - 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. - type: str - 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 - type: str -''' - -EXAMPLES = ''' -- name: Configure a zone on the system using grid primary and secondaries - community.general.nios_zone: - name: ansible.com - grid_primary: - - name: gridprimary.grid.com - grid_secondaries: - - name: gridsecondary1.grid.com - - name: gridsecondary2.grid.com - restart_if_needed: true - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Configure a zone on the system using a name server group - community.general.nios_zone: - name: ansible.com - ns_group: examplensg - restart_if_needed: true - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Configure a reverse mapping zone on the system using IPV4 zone format - community.general.nios_zone: - name: 10.10.10.0/24 - zone_format: IPV4 - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Configure a reverse mapping zone on the system using IPV6 zone format - community.general.nios_zone: - name: 100::1/128 - zone_format: IPV6 - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Update the comment and ext attributes for an existing zone - community.general.nios_zone: - name: ansible.com - comment: this is an example comment - extattrs: - Site: west-dc - state: present - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Remove the dns zone - community.general.nios_zone: - name: ansible.com - state: absent - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -- name: Remove the reverse mapping dns zone from the system with IPV4 zone format - community.general.nios_zone: - name: 10.10.10.0/24 - zone_format: IPV4 - state: absent - provider: - host: "{{ inventory_hostname_short }}" - username: admin - password: admin - connection: local -''' - -RETURN = ''' # ''' - -from ansible.module_utils.basic import AnsibleModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import WapiModule -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import NIOS_ZONE -from ansible_collections.community.general.plugins.module_utils.net_tools.nios.api import normalize_ib_spec - - -def main(): - ''' Main entry point for module execution - ''' - grid_spec = dict( - name=dict(required=True), - ) - - ib_spec = dict( - fqdn=dict(required=True, aliases=['name'], ib_req=True, update=False), - zone_format=dict(default='FORWARD', ib_req=False), - view=dict(default='default', aliases=['dns_view'], ib_req=True), - - grid_primary=dict(type='list', elements='dict', options=grid_spec), - grid_secondaries=dict(type='list', elements='dict', options=grid_spec), - ns_group=dict(), - restart_if_needed=dict(type='bool'), - - extattrs=dict(type='dict'), - comment=dict() - ) - - argument_spec = dict( - provider=dict(required=True), - state=dict(default='present', choices=['present', 'absent']) - ) - - argument_spec.update(normalize_ib_spec(ib_spec)) - argument_spec.update(WapiModule.provider_spec) - - module = AnsibleModule(argument_spec=argument_spec, - supports_check_mode=True, - mutually_exclusive=[ - ['ns_group', 'grid_primary'], - ['ns_group', 'grid_secondaries'] - ]) - - wapi = WapiModule(module) - result = wapi.run(NIOS_ZONE, ib_spec) - - module.exit_json(**result) - - -if __name__ == '__main__': - main() diff --git a/plugins/modules/nios_a_record.py b/plugins/modules/nios_a_record.py deleted file mode 120000 index 382a2df2a4..0000000000 --- a/plugins/modules/nios_a_record.py +++ /dev/null @@ -1 +0,0 @@ -./net_tools/nios/nios_a_record.py \ No newline at end of file diff --git a/plugins/modules/nios_aaaa_record.py b/plugins/modules/nios_aaaa_record.py deleted file mode 120000 index 2a004b37bf..0000000000 --- a/plugins/modules/nios_aaaa_record.py +++ /dev/null @@ -1 +0,0 @@ -./net_tools/nios/nios_aaaa_record.py \ No newline at end of file diff --git a/plugins/modules/nios_cname_record.py b/plugins/modules/nios_cname_record.py deleted file mode 120000 index 6fdbdd9bd0..0000000000 --- a/plugins/modules/nios_cname_record.py +++ /dev/null @@ -1 +0,0 @@ -./net_tools/nios/nios_cname_record.py \ No newline at end of file diff --git a/plugins/modules/nios_dns_view.py b/plugins/modules/nios_dns_view.py deleted file mode 120000 index 623fa4c348..0000000000 --- a/plugins/modules/nios_dns_view.py +++ /dev/null @@ -1 +0,0 @@ -./net_tools/nios/nios_dns_view.py \ No newline at end of file diff --git a/plugins/modules/nios_fixed_address.py b/plugins/modules/nios_fixed_address.py deleted file mode 120000 index f306251861..0000000000 --- a/plugins/modules/nios_fixed_address.py +++ /dev/null @@ -1 +0,0 @@ -./net_tools/nios/nios_fixed_address.py \ No newline at end of file diff --git a/plugins/modules/nios_host_record.py b/plugins/modules/nios_host_record.py deleted file mode 120000 index 7925d03af9..0000000000 --- a/plugins/modules/nios_host_record.py +++ /dev/null @@ -1 +0,0 @@ -./net_tools/nios/nios_host_record.py \ No newline at end of file diff --git a/plugins/modules/nios_member.py b/plugins/modules/nios_member.py deleted file mode 120000 index acd9e8fd58..0000000000 --- a/plugins/modules/nios_member.py +++ /dev/null @@ -1 +0,0 @@ -./net_tools/nios/nios_member.py \ No newline at end of file diff --git a/plugins/modules/nios_mx_record.py b/plugins/modules/nios_mx_record.py deleted file mode 120000 index 8e0399b0bc..0000000000 --- a/plugins/modules/nios_mx_record.py +++ /dev/null @@ -1 +0,0 @@ -./net_tools/nios/nios_mx_record.py \ No newline at end of file diff --git a/plugins/modules/nios_naptr_record.py b/plugins/modules/nios_naptr_record.py deleted file mode 120000 index d3f8abe46c..0000000000 --- a/plugins/modules/nios_naptr_record.py +++ /dev/null @@ -1 +0,0 @@ -./net_tools/nios/nios_naptr_record.py \ No newline at end of file diff --git a/plugins/modules/nios_network.py b/plugins/modules/nios_network.py deleted file mode 120000 index 15d05be8e2..0000000000 --- a/plugins/modules/nios_network.py +++ /dev/null @@ -1 +0,0 @@ -./net_tools/nios/nios_network.py \ No newline at end of file diff --git a/plugins/modules/nios_network_view.py b/plugins/modules/nios_network_view.py deleted file mode 120000 index 09ddfb3af4..0000000000 --- a/plugins/modules/nios_network_view.py +++ /dev/null @@ -1 +0,0 @@ -./net_tools/nios/nios_network_view.py \ No newline at end of file diff --git a/plugins/modules/nios_nsgroup.py b/plugins/modules/nios_nsgroup.py deleted file mode 120000 index c2250edb9f..0000000000 --- a/plugins/modules/nios_nsgroup.py +++ /dev/null @@ -1 +0,0 @@ -./net_tools/nios/nios_nsgroup.py \ No newline at end of file diff --git a/plugins/modules/nios_ptr_record.py b/plugins/modules/nios_ptr_record.py deleted file mode 120000 index 9684ff77e7..0000000000 --- a/plugins/modules/nios_ptr_record.py +++ /dev/null @@ -1 +0,0 @@ -./net_tools/nios/nios_ptr_record.py \ No newline at end of file diff --git a/plugins/modules/nios_srv_record.py b/plugins/modules/nios_srv_record.py deleted file mode 120000 index a77c66087b..0000000000 --- a/plugins/modules/nios_srv_record.py +++ /dev/null @@ -1 +0,0 @@ -./net_tools/nios/nios_srv_record.py \ No newline at end of file diff --git a/plugins/modules/nios_txt_record.py b/plugins/modules/nios_txt_record.py deleted file mode 120000 index f86823e8d2..0000000000 --- a/plugins/modules/nios_txt_record.py +++ /dev/null @@ -1 +0,0 @@ -./net_tools/nios/nios_txt_record.py \ No newline at end of file diff --git a/plugins/modules/nios_zone.py b/plugins/modules/nios_zone.py deleted file mode 120000 index fcb61b349a..0000000000 --- a/plugins/modules/nios_zone.py +++ /dev/null @@ -1 +0,0 @@ -./net_tools/nios/nios_zone.py \ No newline at end of file diff --git a/tests/integration/targets/nios_a_record/aliases b/tests/integration/targets/nios_a_record/aliases deleted file mode 100644 index b3138dc764..0000000000 --- a/tests/integration/targets/nios_a_record/aliases +++ /dev/null @@ -1,3 +0,0 @@ -shippable/cloud/group1 -cloud/nios -destructive diff --git a/tests/integration/targets/nios_a_record/defaults/main.yaml b/tests/integration/targets/nios_a_record/defaults/main.yaml deleted file mode 100644 index 9ef5ba5165..0000000000 --- a/tests/integration/targets/nios_a_record/defaults/main.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -testcase: "*" -test_items: [] diff --git a/tests/integration/targets/nios_a_record/meta/main.yaml b/tests/integration/targets/nios_a_record/meta/main.yaml deleted file mode 100644 index 1b01a972fe..0000000000 --- a/tests/integration/targets/nios_a_record/meta/main.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - prepare_nios_tests diff --git a/tests/integration/targets/nios_a_record/tasks/main.yml b/tests/integration/targets/nios_a_record/tasks/main.yml deleted file mode 100644 index aa6c4e7d85..0000000000 --- a/tests/integration/targets/nios_a_record/tasks/main.yml +++ /dev/null @@ -1,6 +0,0 @@ -#################################################################### -# WARNING: These are designed specifically for Ansible tests # -# and should not be used as examples of how to write Ansible roles # -#################################################################### - -- include: nios_a_record_idempotence.yml diff --git a/tests/integration/targets/nios_a_record/tasks/nios_a_record_idempotence.yml b/tests/integration/targets/nios_a_record/tasks/nios_a_record_idempotence.yml deleted file mode 100644 index 0bbf106cec..0000000000 --- a/tests/integration/targets/nios_a_record/tasks/nios_a_record_idempotence.yml +++ /dev/null @@ -1,77 +0,0 @@ -- 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 a_record - nios_a_record: - name: a.ansible.com - ipv4: 192.168.10.1 - state: absent - provider: "{{ nios_provider }}" - -- name: create an a_record - nios_a_record: - name: a.ansible.com - ipv4: 192.168.10.1 - state: present - provider: "{{ nios_provider }}" - register: a_record_create1 - -- name: recreate an a_record - nios_a_record: - name: a.ansible.com - ipv4: 192.168.10.1 - state: present - provider: "{{ nios_provider }}" - register: a_record_create2 - -- name: add a comment to an existing a_record - nios_a_record: - name: a.ansible.com - ipv4: 192.168.10.1 - comment: this is a test comment - state: present - provider: "{{ nios_provider }}" - register: a_record_update1 - -- name: add a comment to an existing a_record - nios_a_record: - name: a.ansible.com - ipv4: 192.168.10.1 - comment: this is a test comment - state: present - provider: "{{ nios_provider }}" - register: a_record_update2 - -- name: remove a a_record from the system - nios_a_record: - name: a.ansible.com - ipv4: 192.168.10.1 - state: absent - provider: "{{ nios_provider }}" - register: a_record_delete1 - -- name: remove a a_record from the system - nios_a_record: - name: a.ansible.com - ipv4: 192.168.10.1 - state: absent - provider: "{{ nios_provider }}" - register: a_record_delete2 - -- assert: - that: - - "a_record_create1.changed" - - "not a_record_create2.changed" - - "a_record_update1.changed" - - "not a_record_update2.changed" - - "a_record_delete1.changed" - - "not a_record_delete2.changed" diff --git a/tests/integration/targets/nios_aaaa_record/aliases b/tests/integration/targets/nios_aaaa_record/aliases deleted file mode 100644 index b3138dc764..0000000000 --- a/tests/integration/targets/nios_aaaa_record/aliases +++ /dev/null @@ -1,3 +0,0 @@ -shippable/cloud/group1 -cloud/nios -destructive diff --git a/tests/integration/targets/nios_aaaa_record/defaults/main.yaml b/tests/integration/targets/nios_aaaa_record/defaults/main.yaml deleted file mode 100644 index 9ef5ba5165..0000000000 --- a/tests/integration/targets/nios_aaaa_record/defaults/main.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -testcase: "*" -test_items: [] diff --git a/tests/integration/targets/nios_aaaa_record/meta/main.yaml b/tests/integration/targets/nios_aaaa_record/meta/main.yaml deleted file mode 100644 index 1b01a972fe..0000000000 --- a/tests/integration/targets/nios_aaaa_record/meta/main.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - prepare_nios_tests diff --git a/tests/integration/targets/nios_aaaa_record/tasks/main.yml b/tests/integration/targets/nios_aaaa_record/tasks/main.yml deleted file mode 100644 index 87cd4ffa8e..0000000000 --- a/tests/integration/targets/nios_aaaa_record/tasks/main.yml +++ /dev/null @@ -1,6 +0,0 @@ -#################################################################### -# WARNING: These are designed specifically for Ansible tests # -# and should not be used as examples of how to write Ansible roles # -#################################################################### - -- include: nios_aaaa_record_idempotence.yml diff --git a/tests/integration/targets/nios_aaaa_record/tasks/nios_aaaa_record_idempotence.yml b/tests/integration/targets/nios_aaaa_record/tasks/nios_aaaa_record_idempotence.yml deleted file mode 100644 index 2df01d34bd..0000000000 --- a/tests/integration/targets/nios_aaaa_record/tasks/nios_aaaa_record_idempotence.yml +++ /dev/null @@ -1,77 +0,0 @@ -- 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 aaaa record - nios_aaaa_record: - name: aaaa.ansible.com - ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 - state: absent - provider: "{{ nios_provider }}" - -- name: create an aaaa record - nios_aaaa_record: - name: aaaa.ansible.com - ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 - state: present - provider: "{{ nios_provider }}" - register: aaaa_record_create1 - -- name: recreate an aaaa record - nios_aaaa_record: - name: aaaa.ansible.com - ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 - state: present - provider: "{{ nios_provider }}" - register: aaaa_record_create2 - -- name: add a comment to an existing aaaa record - nios_aaaa_record: - name: aaaa.ansible.com - ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 - comment: this is a test comment - state: present - provider: "{{ nios_provider }}" - register: aaaa_record_update1 - -- name: add a comment to an existing aaaa record - nios_aaaa_record: - name: aaaa.ansible.com - ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 - comment: this is a test comment - state: present - provider: "{{ nios_provider }}" - register: aaaa_record_update2 - -- name: remove a aaaa record from the system - nios_aaaa_record: - name: aaaa.ansible.com - ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 - state: absent - provider: "{{ nios_provider }}" - register: aaaa_record_delete1 - -- name: remove a aaaa record from the system - nios_aaaa_record: - name: aaaa.ansible.com - ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 - state: absent - provider: "{{ nios_provider }}" - register: aaaa_record_delete2 - -- assert: - that: - - "aaaa_record_create1.changed" - - "not aaaa_record_create2.changed" - - "aaaa_record_update1.changed" - - "not aaaa_record_update2.changed" - - "aaaa_record_delete1.changed" - - "not aaaa_record_delete2.changed" diff --git a/tests/integration/targets/nios_cname_record/aliases b/tests/integration/targets/nios_cname_record/aliases deleted file mode 100644 index b3138dc764..0000000000 --- a/tests/integration/targets/nios_cname_record/aliases +++ /dev/null @@ -1,3 +0,0 @@ -shippable/cloud/group1 -cloud/nios -destructive diff --git a/tests/integration/targets/nios_cname_record/defaults/main.yaml b/tests/integration/targets/nios_cname_record/defaults/main.yaml deleted file mode 100644 index 9ef5ba5165..0000000000 --- a/tests/integration/targets/nios_cname_record/defaults/main.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -testcase: "*" -test_items: [] diff --git a/tests/integration/targets/nios_cname_record/meta/main.yaml b/tests/integration/targets/nios_cname_record/meta/main.yaml deleted file mode 100644 index 1b01a972fe..0000000000 --- a/tests/integration/targets/nios_cname_record/meta/main.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - prepare_nios_tests diff --git a/tests/integration/targets/nios_cname_record/tasks/main.yml b/tests/integration/targets/nios_cname_record/tasks/main.yml deleted file mode 100644 index 4c7612ad59..0000000000 --- a/tests/integration/targets/nios_cname_record/tasks/main.yml +++ /dev/null @@ -1,6 +0,0 @@ -#################################################################### -# WARNING: These are designed specifically for Ansible tests # -# and should not be used as examples of how to write Ansible roles # -#################################################################### - -- include: nios_cname_record_idempotence.yml diff --git a/tests/integration/targets/nios_cname_record/tasks/nios_cname_record_idempotence.yml b/tests/integration/targets/nios_cname_record/tasks/nios_cname_record_idempotence.yml deleted file mode 100644 index f450c7166b..0000000000 --- a/tests/integration/targets/nios_cname_record/tasks/nios_cname_record_idempotence.yml +++ /dev/null @@ -1,77 +0,0 @@ -- 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 cname record - nios_cname_record: - name: cname.ansible.com - canonical: realhost.ansible.com - state: absent - provider: "{{ nios_provider }}" - -- name: create an cname record - nios_cname_record: - name: cname.ansible.com - canonical: realhost.ansible.com - state: present - provider: "{{ nios_provider }}" - register: cname_record_create1 - -- name: recreate an cname record - nios_cname_record: - name: cname.ansible.com - canonical: realhost.ansible.com - state: present - provider: "{{ nios_provider }}" - register: cname_record_create2 - -- name: add a comment to an existing cname record - nios_cname_record: - name: cname.ansible.com - canonical: realhost.ansible.com - comment: this is a test comment - state: present - provider: "{{ nios_provider }}" - register: cname_record_update1 - -- name: add a comment to an existing cname record - nios_cname_record: - name: cname.ansible.com - canonical: realhost.ansible.com - comment: this is a test comment - state: present - provider: "{{ nios_provider }}" - register: cname_record_update2 - -- name: remove a cname record from the system - nios_cname_record: - name: cname.ansible.com - canonical: realhost.ansible.com - state: absent - provider: "{{ nios_provider }}" - register: cname_record_delete1 - -- name: remove a cname record from the system - nios_cname_record: - name: cname.ansible.com - canonical: realhost.ansible.com - state: absent - provider: "{{ nios_provider }}" - register: cname_record_delete2 - -- assert: - that: - - "cname_record_create1.changed" - - "not cname_record_create2.changed" - - "cname_record_update1.changed" - - "not cname_record_update2.changed" - - "cname_record_delete1.changed" - - "not cname_record_delete2.changed" diff --git a/tests/integration/targets/nios_dns_view/aliases b/tests/integration/targets/nios_dns_view/aliases deleted file mode 100644 index b3138dc764..0000000000 --- a/tests/integration/targets/nios_dns_view/aliases +++ /dev/null @@ -1,3 +0,0 @@ -shippable/cloud/group1 -cloud/nios -destructive diff --git a/tests/integration/targets/nios_dns_view/defaults/main.yaml b/tests/integration/targets/nios_dns_view/defaults/main.yaml deleted file mode 100644 index ebf6ffc903..0000000000 --- a/tests/integration/targets/nios_dns_view/defaults/main.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -testcase: "*" -test_items: [] \ No newline at end of file diff --git a/tests/integration/targets/nios_dns_view/meta/main.yaml b/tests/integration/targets/nios_dns_view/meta/main.yaml deleted file mode 100644 index 9472935b7c..0000000000 --- a/tests/integration/targets/nios_dns_view/meta/main.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - prepare_nios_tests \ No newline at end of file diff --git a/tests/integration/targets/nios_dns_view/tasks/main.yml b/tests/integration/targets/nios_dns_view/tasks/main.yml deleted file mode 100644 index 9dbc7f6e85..0000000000 --- a/tests/integration/targets/nios_dns_view/tasks/main.yml +++ /dev/null @@ -1,6 +0,0 @@ -#################################################################### -# WARNING: These are designed specifically for Ansible tests # -# and should not be used as examples of how to write Ansible roles # -#################################################################### - -- include: nios_dns_view_idempotence.yml diff --git a/tests/integration/targets/nios_dns_view/tasks/nios_dns_view_idempotence.yml b/tests/integration/targets/nios_dns_view/tasks/nios_dns_view_idempotence.yml deleted file mode 100644 index b9dc9fec4a..0000000000 --- a/tests/integration/targets/nios_dns_view/tasks/nios_dns_view_idempotence.yml +++ /dev/null @@ -1,58 +0,0 @@ -- name: delete dns view instance - nios_dns_view: - name: ansible-dns - state: absent - provider: "{{ nios_provider }}" - -- name: configure a new dns view instance - nios_dns_view: - name: ansible-dns - state: present - provider: "{{ nios_provider }}" - register: nios_dns_create1 - -- name: configure a new dns view instance - nios_dns_view: - name: ansible-dns - state: present - provider: "{{ nios_provider }}" - register: nios_dns_create2 - -- name: update the comment for dns view - nios_dns_view: - name: ansible-dns - comment: this is an example comment - state: present - provider: "{{ nios_provider }}" - register: nios_dns_update1 - -- name: update the comment for dns view - nios_dns_view: - name: ansible-dns - comment: this is an example comment - state: present - provider: "{{ nios_provider }}" - register: nios_dns_update2 - -- name: delete dns view instance - nios_dns_view: - name: ansible-dns - state: absent - provider: "{{ nios_provider }}" - register: nios_dns_delete1 - -- name: delete dns view instance - nios_dns_view: - name: ansible-dns - state: absent - provider: "{{ nios_provider }}" - register: nios_dns_delete2 - -- assert: - that: - - "nios_dns_create1.changed" - - "not nios_dns_create2.changed" - - "nios_dns_update1.changed" - - "not nios_dns_update2.changed" - - "nios_dns_delete1.changed" - - "not nios_dns_delete2.changed" diff --git a/tests/integration/targets/nios_host_record/aliases b/tests/integration/targets/nios_host_record/aliases deleted file mode 100644 index b3138dc764..0000000000 --- a/tests/integration/targets/nios_host_record/aliases +++ /dev/null @@ -1,3 +0,0 @@ -shippable/cloud/group1 -cloud/nios -destructive diff --git a/tests/integration/targets/nios_host_record/defaults/main.yaml b/tests/integration/targets/nios_host_record/defaults/main.yaml deleted file mode 100644 index ebf6ffc903..0000000000 --- a/tests/integration/targets/nios_host_record/defaults/main.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -testcase: "*" -test_items: [] \ No newline at end of file diff --git a/tests/integration/targets/nios_host_record/meta/main.yaml b/tests/integration/targets/nios_host_record/meta/main.yaml deleted file mode 100644 index 9472935b7c..0000000000 --- a/tests/integration/targets/nios_host_record/meta/main.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - prepare_nios_tests \ No newline at end of file diff --git a/tests/integration/targets/nios_host_record/tasks/main.yml b/tests/integration/targets/nios_host_record/tasks/main.yml deleted file mode 100644 index 18f1c6e45b..0000000000 --- a/tests/integration/targets/nios_host_record/tasks/main.yml +++ /dev/null @@ -1,6 +0,0 @@ -#################################################################### -# WARNING: These are designed specifically for Ansible tests # -# and should not be used as examples of how to write Ansible roles # -#################################################################### - -- include: nios_host_record_idempotence.yml diff --git a/tests/integration/targets/nios_host_record/tasks/nios_host_record_idempotence.yml b/tests/integration/targets/nios_host_record/tasks/nios_host_record_idempotence.yml deleted file mode 100644 index 636431ee5b..0000000000 --- a/tests/integration/targets/nios_host_record/tasks/nios_host_record_idempotence.yml +++ /dev/null @@ -1,126 +0,0 @@ -- 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 ipv4 host record - nios_host_record: - name: host.ansible.com - ipv4: - - address: 192.168.10.1 - state: absent - provider: "{{ nios_provider }}" - -- name: create an ipv4 host record - nios_host_record: - name: host.ansible.com - ipv4: - - address: 192.168.10.1 - state: present - provider: "{{ nios_provider }}" - register: ipv4_create1 - -- name: recreate an ipv4 host record - nios_host_record: - name: host.ansible.com - ipv4: - - address: 192.168.10.1 - state: present - provider: "{{ nios_provider }}" - register: ipv4_create2 - -- name: add a comment to an existing host record - nios_host_record: - name: host.ansible.com - ipv4: - - address: 192.168.10.1 - comment: this is a test comment - state: present - provider: "{{ nios_provider }}" - register: ipv4_update1 - -- name: add a comment to an existing host record - nios_host_record: - name: host.ansible.com - ipv4: - - address: 192.168.10.1 - comment: this is a test comment - state: present - provider: "{{ nios_provider }}" - register: ipv4_update2 - -- name: remove a host record from the system - nios_host_record: - name: host.ansible.com - state: absent - provider: "{{ nios_provider }}" - register: ipv4_delete1 - -- name: remove a host record from the system - nios_host_record: - name: host.ansible.com - state: absent - provider: "{{ nios_provider }}" - register: ipv4_delete2 - -- name: create an ipv4 host record bypassing DNS - nios_host_record: - name: host - ipv4: - - address: 192.168.10.1 - dns: false - state: present - provider: "{{ nios_provider }}" - register: ipv4_create3 - -- name: recreate an ipv4 host record bypassing DNS - nios_host_record: - name: host - ipv4: - - address: 192.168.10.1 - dns: false - state: present - provider: "{{ nios_provider }}" - register: ipv4_create4 - -- name: create an ipv4 host record via DHCP and MAC - nios_host_record: - name: host - ipv4: - - address: 192.168.10.1 - dhcp: true - mac: 00-80-C8-E3-4C-BD - state: present - provider: "{{ nios_provider }}" - register: ipv4_create5 - -- name: recreate an ipv4 host record via DHCP and MAC - nios_host_record: - name: host - ipv4: - - address: 192.168.10.1 - dhcp: true - mac: 00-80-C8-E3-4C-BD - state: present - provider: "{{ nios_provider }}" - register: ipv4_create6 - -- assert: - that: - - "ipv4_create1.changed" - - "not ipv4_create2.changed" - - "ipv4_update1.changed" - - "not ipv4_update2.changed" - - "ipv4_delete1.changed" - - "not ipv4_delete2.changed" - - "ipv4_create3.changed" - - "not ipv4_create4.changed" - - "ipv4_create5.changed" - - "not ipv4_create6.changed" diff --git a/tests/integration/targets/nios_mx_record/aliases b/tests/integration/targets/nios_mx_record/aliases deleted file mode 100644 index b3138dc764..0000000000 --- a/tests/integration/targets/nios_mx_record/aliases +++ /dev/null @@ -1,3 +0,0 @@ -shippable/cloud/group1 -cloud/nios -destructive diff --git a/tests/integration/targets/nios_mx_record/defaults/main.yaml b/tests/integration/targets/nios_mx_record/defaults/main.yaml deleted file mode 100644 index 9ef5ba5165..0000000000 --- a/tests/integration/targets/nios_mx_record/defaults/main.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -testcase: "*" -test_items: [] diff --git a/tests/integration/targets/nios_mx_record/meta/main.yaml b/tests/integration/targets/nios_mx_record/meta/main.yaml deleted file mode 100644 index 1b01a972fe..0000000000 --- a/tests/integration/targets/nios_mx_record/meta/main.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - prepare_nios_tests diff --git a/tests/integration/targets/nios_mx_record/tasks/main.yml b/tests/integration/targets/nios_mx_record/tasks/main.yml deleted file mode 100644 index cc4159f2d4..0000000000 --- a/tests/integration/targets/nios_mx_record/tasks/main.yml +++ /dev/null @@ -1,6 +0,0 @@ -#################################################################### -# WARNING: These are designed specifically for Ansible tests # -# and should not be used as examples of how to write Ansible roles # -#################################################################### - -- include: nios_mx_record_idempotence.yml diff --git a/tests/integration/targets/nios_mx_record/tasks/nios_mx_record_idempotence.yml b/tests/integration/targets/nios_mx_record/tasks/nios_mx_record_idempotence.yml deleted file mode 100644 index 65b1e8f44e..0000000000 --- a/tests/integration/targets/nios_mx_record/tasks/nios_mx_record_idempotence.yml +++ /dev/null @@ -1,84 +0,0 @@ -- 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 mx record - nios_mx_record: - name: ansible.com - mx: mailhost.ansible.com - preference: 0 - state: absent - provider: "{{ nios_provider }}" - -- name: create an mx record - nios_mx_record: - name: ansible.com - mx: mailhost.ansible.com - preference: 0 - state: present - provider: "{{ nios_provider }}" - register: mx_record_create1 - -- name: recreate an mx record - nios_mx_record: - name: ansible.com - mx: mailhost.ansible.com - preference: 0 - state: present - provider: "{{ nios_provider }}" - register: mx_record_create2 - -- name: add a comment to an existing mx record - nios_mx_record: - name: ansible.com - mx: mailhost.ansible.com - preference: 0 - comment: this is a test comment - state: present - provider: "{{ nios_provider }}" - register: mx_record_update1 - -- name: add a comment to an existing mx record - nios_mx_record: - name: ansible.com - mx: mailhost.ansible.com - preference: 0 - comment: this is a test comment - state: present - provider: "{{ nios_provider }}" - register: mx_record_update2 - -- name: remove a mx record from the system - nios_mx_record: - name: ansible.com - mx: mailhost.ansible.com - preference: 0 - state: absent - provider: "{{ nios_provider }}" - register: mx_record_delete1 - -- name: remove a mx record from the system - nios_mx_record: - name: ansible.com - mx: mailhost.ansible.com - preference: 0 - state: absent - provider: "{{ nios_provider }}" - register: mx_record_delete2 - -- assert: - that: - - "mx_record_create1.changed" - - "not mx_record_create2.changed" - - "mx_record_update1.changed" - - "not mx_record_update2.changed" - - "mx_record_delete1.changed" - - "not mx_record_delete2.changed" diff --git a/tests/integration/targets/nios_naptr_record/aliases b/tests/integration/targets/nios_naptr_record/aliases deleted file mode 100644 index b3138dc764..0000000000 --- a/tests/integration/targets/nios_naptr_record/aliases +++ /dev/null @@ -1,3 +0,0 @@ -shippable/cloud/group1 -cloud/nios -destructive diff --git a/tests/integration/targets/nios_naptr_record/defaults/main.yaml b/tests/integration/targets/nios_naptr_record/defaults/main.yaml deleted file mode 100644 index 9ef5ba5165..0000000000 --- a/tests/integration/targets/nios_naptr_record/defaults/main.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -testcase: "*" -test_items: [] diff --git a/tests/integration/targets/nios_naptr_record/meta/main.yaml b/tests/integration/targets/nios_naptr_record/meta/main.yaml deleted file mode 100644 index 1b01a972fe..0000000000 --- a/tests/integration/targets/nios_naptr_record/meta/main.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - prepare_nios_tests diff --git a/tests/integration/targets/nios_naptr_record/tasks/main.yml b/tests/integration/targets/nios_naptr_record/tasks/main.yml deleted file mode 100644 index 2ba8327925..0000000000 --- a/tests/integration/targets/nios_naptr_record/tasks/main.yml +++ /dev/null @@ -1,6 +0,0 @@ -#################################################################### -# WARNING: These are designed specifically for Ansible tests # -# and should not be used as examples of how to write Ansible roles # -#################################################################### - -- include: nios_naptr_record_idempotence.yml diff --git a/tests/integration/targets/nios_naptr_record/tasks/nios_naptr_record_idempotence.yml b/tests/integration/targets/nios_naptr_record/tasks/nios_naptr_record_idempotence.yml deleted file mode 100644 index 2303eff589..0000000000 --- a/tests/integration/targets/nios_naptr_record/tasks/nios_naptr_record_idempotence.yml +++ /dev/null @@ -1,91 +0,0 @@ -- 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 naptr record - nios_naptr_record: - name: '*.subscriber-100.ansiblezone.com' - order: 1000 - preference: 10 - replacement: replacement1.network.ansiblezone.com - state: absent - provider: "{{ nios_provider }}" - -- name: create an naptr record - nios_naptr_record: - name: '*.subscriber-100.ansiblezone.com' - order: 1000 - preference: 10 - replacement: replacement1.network.ansiblezone.com - state: present - provider: "{{ nios_provider }}" - register: naptr_record_create1 - -- name: recreate an naptr record - nios_naptr_record: - name: '*.subscriber-100.ansiblezone.com' - order: 1000 - preference: 10 - replacement: replacement1.network.ansiblezone.com - state: present - provider: "{{ nios_provider }}" - register: naptr_record_create2 - -- name: add a comment to an existing naptr record - nios_naptr_record: - name: '*.subscriber-100.ansiblezone.com' - order: 1000 - preference: 10 - replacement: replacement1.network.ansiblezone.com - comment: this is a test comment - state: present - provider: "{{ nios_provider }}" - register: naptr_record_update1 - -- name: add a comment to an existing naptr record - nios_naptr_record: - name: '*.subscriber-100.ansiblezone.com' - order: 1000 - preference: 10 - replacement: replacement1.network.ansiblezone.com - comment: this is a test comment - state: present - provider: "{{ nios_provider }}" - register: naptr_record_update2 - -- name: remove a naptr record from the system - nios_naptr_record: - name: '*.subscriber-100.ansiblezone.com' - order: 1000 - preference: 10 - replacement: replacement1.network.ansiblezone.com - state: absent - provider: "{{ nios_provider }}" - register: naptr_record_delete1 - -- name: remove a naptr record from the system - nios_naptr_record: - name: '*.subscriber-100.ansiblezone.com' - order: 1000 - preference: 10 - replacement: replacement1.network.ansiblezone.com - state: absent - provider: "{{ nios_provider }}" - register: naptr_record_delete2 - -- assert: - that: - - "naptr_record_create1.changed" - - "not naptr_record_create2.changed" - - "naptr_record_update1.changed" - - "not naptr_record_update2.changed" - - "naptr_record_delete1.changed" - - "not naptr_record_delete2.changed" diff --git a/tests/integration/targets/nios_network/aliases b/tests/integration/targets/nios_network/aliases deleted file mode 100644 index b3138dc764..0000000000 --- a/tests/integration/targets/nios_network/aliases +++ /dev/null @@ -1,3 +0,0 @@ -shippable/cloud/group1 -cloud/nios -destructive diff --git a/tests/integration/targets/nios_network/defaults/main.yaml b/tests/integration/targets/nios_network/defaults/main.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/integration/targets/nios_network/meta/main.yaml b/tests/integration/targets/nios_network/meta/main.yaml deleted file mode 100644 index 9472935b7c..0000000000 --- a/tests/integration/targets/nios_network/meta/main.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - prepare_nios_tests \ No newline at end of file diff --git a/tests/integration/targets/nios_network/tasks/main.yml b/tests/integration/targets/nios_network/tasks/main.yml deleted file mode 100644 index 6a98008464..0000000000 --- a/tests/integration/targets/nios_network/tasks/main.yml +++ /dev/null @@ -1,6 +0,0 @@ -#################################################################### -# WARNING: These are designed specifically for Ansible tests # -# and should not be used as examples of how to write Ansible roles # -#################################################################### - -- include: nios_network_idempotence.yml diff --git a/tests/integration/targets/nios_network/tasks/nios_network_idempotence.yml b/tests/integration/targets/nios_network/tasks/nios_network_idempotence.yml deleted file mode 100644 index 3b5dbc4b5a..0000000000 --- a/tests/integration/targets/nios_network/tasks/nios_network_idempotence.yml +++ /dev/null @@ -1,80 +0,0 @@ -- name: cleanup a network ipv4 - nios_network: - network: 192.168.10.0/24 - comment: this is a test comment - state: absent - provider: "{{ nios_provider }}" - -- name: configure a network ipv4 - nios_network: - network: 192.168.10.0/24 - comment: this is a test comment - state: present - provider: "{{ nios_provider }}" - register: nios_ipv4_create1 - -- name: configure a network ipv4 - nios_network: - network: 192.168.10.0/24 - comment: this is a test comment - state: present - provider: "{{ nios_provider }}" - register: nios_ipv4_create2 - -#- assert: -# that: -# - "nios_ipv4_create1.changed" -# - "not nios_ipv4_create2.changed" - -- name: set dhcp options for a network ipv4 - nios_network: - network: 192.168.10.0/24 - comment: this is a test comment - options: - - name: domain-name - value: ansible.com - state: present - provider: "{{ nios_provider }}" - register: nios_ipv4_update1 - -- name: set dhcp options for a network ipv4 - nios_network: - network: 192.168.10.0/24 - comment: this is a test comment - options: - - name: domain-name - value: ansible.com - state: present - provider: "{{ nios_provider }}" - register: nios_ipv4_update2 - -- name: remove a network ipv4 - nios_network: - network: 192.168.10.0/24 - state: absent - provider: "{{ nios_provider }}" - register: nios_ipv4_remove1 - -- name: remove a network ipv4 - nios_network: - network: 192.168.10.0/24 - state: absent - provider: "{{ nios_provider }}" - register: nios_ipv4_remove2 - -- name: configure a network ipv6 - nios_network: - network: fe80::/64 - comment: this is a test comment - state: present - provider: "{{ nios_provider }}" - register: nios_ipv6_create1 - -- assert: - that: - - "nios_ipv4_create1.changed" - - "not nios_ipv4_create2.changed" - - "nios_ipv4_update1.changed" - - "not nios_ipv4_update2.changed" - - "nios_ipv4_remove1.changed" - - "not nios_ipv4_remove2.changed" diff --git a/tests/integration/targets/nios_network_view/aliases b/tests/integration/targets/nios_network_view/aliases deleted file mode 100644 index b3138dc764..0000000000 --- a/tests/integration/targets/nios_network_view/aliases +++ /dev/null @@ -1,3 +0,0 @@ -shippable/cloud/group1 -cloud/nios -destructive diff --git a/tests/integration/targets/nios_network_view/defaults/main.yaml b/tests/integration/targets/nios_network_view/defaults/main.yaml deleted file mode 100644 index ebf6ffc903..0000000000 --- a/tests/integration/targets/nios_network_view/defaults/main.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -testcase: "*" -test_items: [] \ No newline at end of file diff --git a/tests/integration/targets/nios_network_view/meta/main.yaml b/tests/integration/targets/nios_network_view/meta/main.yaml deleted file mode 100644 index 9472935b7c..0000000000 --- a/tests/integration/targets/nios_network_view/meta/main.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - prepare_nios_tests \ No newline at end of file diff --git a/tests/integration/targets/nios_network_view/tasks/main.yml b/tests/integration/targets/nios_network_view/tasks/main.yml deleted file mode 100644 index be20b77a1a..0000000000 --- a/tests/integration/targets/nios_network_view/tasks/main.yml +++ /dev/null @@ -1,6 +0,0 @@ -#################################################################### -# WARNING: These are designed specifically for Ansible tests # -# and should not be used as examples of how to write Ansible roles # -#################################################################### - -- include: nios_network_view_idempotence.yml diff --git a/tests/integration/targets/nios_network_view/tasks/nios_network_view_idempotence.yml b/tests/integration/targets/nios_network_view/tasks/nios_network_view_idempotence.yml deleted file mode 100644 index ad13e3a33d..0000000000 --- a/tests/integration/targets/nios_network_view/tasks/nios_network_view_idempotence.yml +++ /dev/null @@ -1,58 +0,0 @@ -- name: cleanup a new network view - nios_network_view: - name: ansible - state: absent - provider: "{{ nios_provider }}" - -- name: configure a new network view - nios_network_view: - name: ansible - state: present - provider: "{{ nios_provider }}" - register: nios_network_view_create1 - -- name: configure a new network view - nios_network_view: - name: ansible - state: present - provider: "{{ nios_provider }}" - register: nios_network_view_create2 - -- name: update the comment for network view - nios_network_view: - name: ansible - comment: this is an example comment - state: present - provider: "{{ nios_provider }}" - register: nios_network_view_update1 - -- name: update the comment for network view - nios_network_view: - name: ansible - comment: this is an example comment - state: present - provider: "{{ nios_provider }}" - register: nios_network_view_update2 - -- name: remove the network view - nios_network_view: - name: ansible - state: absent - provider: "{{ nios_provider }}" - register: nios_network_view_delete1 - -- name: remove the network view - nios_network_view: - name: ansible - state: absent - provider: "{{ nios_provider }}" - register: nios_network_view_delete2 - -- assert: - that: - - "nios_network_view_create1.changed" - - "not nios_network_view_create2.changed" - - "nios_network_view_update1.changed" - - "not nios_network_view_update2.changed" - - "nios_network_view_delete1.changed" - - "not nios_network_view_delete2.changed" diff --git a/tests/integration/targets/nios_ptr_record/aliases b/tests/integration/targets/nios_ptr_record/aliases deleted file mode 100644 index b3138dc764..0000000000 --- a/tests/integration/targets/nios_ptr_record/aliases +++ /dev/null @@ -1,3 +0,0 @@ -shippable/cloud/group1 -cloud/nios -destructive diff --git a/tests/integration/targets/nios_ptr_record/defaults/main.yaml b/tests/integration/targets/nios_ptr_record/defaults/main.yaml deleted file mode 100644 index 9ef5ba5165..0000000000 --- a/tests/integration/targets/nios_ptr_record/defaults/main.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -testcase: "*" -test_items: [] diff --git a/tests/integration/targets/nios_ptr_record/meta/main.yaml b/tests/integration/targets/nios_ptr_record/meta/main.yaml deleted file mode 100644 index 1b01a972fe..0000000000 --- a/tests/integration/targets/nios_ptr_record/meta/main.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - prepare_nios_tests diff --git a/tests/integration/targets/nios_ptr_record/tasks/main.yml b/tests/integration/targets/nios_ptr_record/tasks/main.yml deleted file mode 100644 index 15e8dad0b7..0000000000 --- a/tests/integration/targets/nios_ptr_record/tasks/main.yml +++ /dev/null @@ -1,6 +0,0 @@ -#################################################################### -# WARNING: These are designed specifically for Ansible tests # -# and should not be used as examples of how to write Ansible roles # -#################################################################### - -- include: nios_ptr_record_idempotence.yml diff --git a/tests/integration/targets/nios_ptr_record/tasks/nios_ptr_record_idempotence.yml b/tests/integration/targets/nios_ptr_record/tasks/nios_ptr_record_idempotence.yml deleted file mode 100644 index a233d80f55..0000000000 --- a/tests/integration/targets/nios_ptr_record/tasks/nios_ptr_record_idempotence.yml +++ /dev/null @@ -1,83 +0,0 @@ ---- - -- name: create an ipv4 ptr record - nios_ptr_record: - name: ptr.ansible.com - ptrdname: ptr.ansible.com - ipv4: 192.168.10.1 - state: present - provider: "{{ nios_provider }}" - view: default - register: ipv4_ptr_create1 - -- name: create the same ipv4 ptr record - nios_ptr_record: - name: ptr.ansible.com - ptrdname: ptr.ansible.com - ipv4: 192.168.10.1 - state: present - view: default - provider: "{{ nios_provider }}" - register: ipv4_ptr_create2 - -- name: add a comment to an existing ipv4 ptr record - nios_ptr_record: - name: ptr.ansible.com - ptrdname: ptr.ansible.com - ipv4: 192.168.10.1 - comment: this is a test comment - view: default - state: present - provider: "{{ nios_provider }}" - register: ipv4_ptr_update1 - -- name: add the same comment to the same ipv4 ptr host record - nios_ptr_record: - name: ptr.ansible.com - ptrdname: ptr.ansible.com - ipv4: 192.168.10.1 - comment: this is a test comment - view: default - state: present - provider: "{{ nios_provider }}" - register: ipv4_ptr_update2 - -- name: remove a ptr record from the system - nios_ptr_record: - name: ptr.ansible.com - ptrdname: ptr.ansible.com - ipv4: 192.168.10.1 - view: default - state: absent - provider: "{{ nios_provider }}" - register: ipv4_ptr_delete1 - -- name: remove the same ptr record from the system - nios_ptr_record: - ptrdname: ptr.ansible.com - name: ptr.ansible.com - ipv4: 192.168.10.1 - view: default - state: absent - provider: "{{ nios_provider }}" - register: ipv4_ptr_delete2 - -- name: create an ipv6 ptr record - nios_ptr_record: - ptrdname: ptr6.ansible.com - name: ptr6.ansible.com - ipv6: "2002:8ac3:802d:1242:20d:60ff:fe38:6d16" - view: default - state: present - provider: "{{ nios_provider }}" - register: ipv6_ptr_create1 - -- assert: - that: - - "ipv4_ptr_create1.changed" - - "not ipv4_ptr_create2.changed" - - "ipv4_ptr_update1.changed" - - "not ipv4_ptr_update2.changed" - - "ipv4_ptr_delete1.changed" - - "not ipv4_ptr_delete2.changed" - - "ipv6_ptr_create1.changed" diff --git a/tests/integration/targets/nios_srv_record/aliases b/tests/integration/targets/nios_srv_record/aliases deleted file mode 100644 index b3138dc764..0000000000 --- a/tests/integration/targets/nios_srv_record/aliases +++ /dev/null @@ -1,3 +0,0 @@ -shippable/cloud/group1 -cloud/nios -destructive diff --git a/tests/integration/targets/nios_srv_record/defaults/main.yaml b/tests/integration/targets/nios_srv_record/defaults/main.yaml deleted file mode 100644 index 9ef5ba5165..0000000000 --- a/tests/integration/targets/nios_srv_record/defaults/main.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -testcase: "*" -test_items: [] diff --git a/tests/integration/targets/nios_srv_record/meta/main.yaml b/tests/integration/targets/nios_srv_record/meta/main.yaml deleted file mode 100644 index 1b01a972fe..0000000000 --- a/tests/integration/targets/nios_srv_record/meta/main.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - prepare_nios_tests diff --git a/tests/integration/targets/nios_srv_record/tasks/main.yml b/tests/integration/targets/nios_srv_record/tasks/main.yml deleted file mode 100644 index 25f4cc9d93..0000000000 --- a/tests/integration/targets/nios_srv_record/tasks/main.yml +++ /dev/null @@ -1,6 +0,0 @@ -#################################################################### -# WARNING: These are designed specifically for Ansible tests # -# and should not be used as examples of how to write Ansible roles # -#################################################################### - -- include: nios_srv_record_idempotence.yml diff --git a/tests/integration/targets/nios_srv_record/tasks/nios_srv_record_idempotence.yml b/tests/integration/targets/nios_srv_record/tasks/nios_srv_record_idempotence.yml deleted file mode 100644 index 8f3dbfc73e..0000000000 --- a/tests/integration/targets/nios_srv_record/tasks/nios_srv_record_idempotence.yml +++ /dev/null @@ -1,98 +0,0 @@ -- 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 srv record - nios_srv_record: - name: ansible.com - port: 5080 - priority: 10 - target: service1.ansible.com - weight: 10 - state: absent - provider: "{{ nios_provider }}" - -- name: create an srv record - nios_srv_record: - name: ansible.com - port: 5080 - priority: 10 - target: service1.ansible.com - weight: 10 - state: present - provider: "{{ nios_provider }}" - register: srv_record_create1 - -- name: recreate an srv record - nios_srv_record: - name: ansible.com - port: 5080 - priority: 10 - target: service1.ansible.com - weight: 10 - state: present - provider: "{{ nios_provider }}" - register: srv_record_create2 - -- name: add a comment to an existing srv record - nios_srv_record: - name: ansible.com - port: 5080 - priority: 10 - target: service1.ansible.com - weight: 10 - comment: this is a test comment - state: present - provider: "{{ nios_provider }}" - register: srv_record_update1 - -- name: add a comment to an existing srv record - nios_srv_record: - name: ansible.com - port: 5080 - priority: 10 - target: service1.ansible.com - weight: 10 - comment: this is a test comment - state: present - provider: "{{ nios_provider }}" - register: srv_record_update2 - -- name: remove a srv record from the system - nios_srv_record: - name: ansible.com - port: 5080 - priority: 10 - target: service1.ansible.com - weight: 10 - state: absent - provider: "{{ nios_provider }}" - register: srv_record_delete1 - -- name: remove a srv record from the system - nios_srv_record: - name: ansible.com - port: 5080 - priority: 10 - target: service1.ansible.com - weight: 10 - state: absent - provider: "{{ nios_provider }}" - register: srv_record_delete2 - -- assert: - that: - - "srv_record_create1.changed" - - "not srv_record_create2.changed" - - "srv_record_update1.changed" - - "not srv_record_update2.changed" - - "srv_record_delete1.changed" - - "not srv_record_delete2.changed" diff --git a/tests/integration/targets/nios_txt_record/aliases b/tests/integration/targets/nios_txt_record/aliases deleted file mode 100644 index b3138dc764..0000000000 --- a/tests/integration/targets/nios_txt_record/aliases +++ /dev/null @@ -1,3 +0,0 @@ -shippable/cloud/group1 -cloud/nios -destructive diff --git a/tests/integration/targets/nios_txt_record/defaults/main.yaml b/tests/integration/targets/nios_txt_record/defaults/main.yaml deleted file mode 100644 index ebf6ffc903..0000000000 --- a/tests/integration/targets/nios_txt_record/defaults/main.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -testcase: "*" -test_items: [] \ No newline at end of file diff --git a/tests/integration/targets/nios_txt_record/meta/main.yaml b/tests/integration/targets/nios_txt_record/meta/main.yaml deleted file mode 100644 index 9472935b7c..0000000000 --- a/tests/integration/targets/nios_txt_record/meta/main.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - prepare_nios_tests \ No newline at end of file diff --git a/tests/integration/targets/nios_txt_record/tasks/main.yml b/tests/integration/targets/nios_txt_record/tasks/main.yml deleted file mode 100644 index d5023c664a..0000000000 --- a/tests/integration/targets/nios_txt_record/tasks/main.yml +++ /dev/null @@ -1,6 +0,0 @@ -#################################################################### -# WARNING: These are designed specifically for Ansible tests # -# and should not be used as examples of how to write Ansible roles # -#################################################################### - -- include: nios_txt_record_idempotence.yml diff --git a/tests/integration/targets/nios_txt_record/tasks/nios_txt_record_idempotence.yml b/tests/integration/targets/nios_txt_record/tasks/nios_txt_record_idempotence.yml deleted file mode 100644 index 3b7357afaf..0000000000 --- a/tests/integration/targets/nios_txt_record/tasks/nios_txt_record_idempotence.yml +++ /dev/null @@ -1,80 +0,0 @@ -- 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" diff --git a/tests/integration/targets/nios_zone/aliases b/tests/integration/targets/nios_zone/aliases deleted file mode 100644 index b3138dc764..0000000000 --- a/tests/integration/targets/nios_zone/aliases +++ /dev/null @@ -1,3 +0,0 @@ -shippable/cloud/group1 -cloud/nios -destructive diff --git a/tests/integration/targets/nios_zone/defaults/main.yaml b/tests/integration/targets/nios_zone/defaults/main.yaml deleted file mode 100644 index ebf6ffc903..0000000000 --- a/tests/integration/targets/nios_zone/defaults/main.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -testcase: "*" -test_items: [] \ No newline at end of file diff --git a/tests/integration/targets/nios_zone/meta/main.yaml b/tests/integration/targets/nios_zone/meta/main.yaml deleted file mode 100644 index 9472935b7c..0000000000 --- a/tests/integration/targets/nios_zone/meta/main.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - prepare_nios_tests \ No newline at end of file diff --git a/tests/integration/targets/nios_zone/tasks/main.yml b/tests/integration/targets/nios_zone/tasks/main.yml deleted file mode 100644 index e346a3cb29..0000000000 --- a/tests/integration/targets/nios_zone/tasks/main.yml +++ /dev/null @@ -1,6 +0,0 @@ -#################################################################### -# WARNING: These are designed specifically for Ansible tests # -# and should not be used as examples of how to write Ansible roles # -#################################################################### - -- include: nios_zone_idempotence.yml diff --git a/tests/integration/targets/nios_zone/tasks/nios_zone_idempotence.yml b/tests/integration/targets/nios_zone/tasks/nios_zone_idempotence.yml deleted file mode 100644 index 03d40aaf28..0000000000 --- a/tests/integration/targets/nios_zone/tasks/nios_zone_idempotence.yml +++ /dev/null @@ -1,68 +0,0 @@ -- name: cleanup dns view instance - nios_dns_view: - name: ansible-dns - state: absent - provider: "{{ nios_provider }}" - -- name: cleanup test zone - nios_zone: - name: ansible-dns - state: absent - provider: "{{ nios_provider }}" - -- name: configure a zone on the system - nios_zone: - name: ansible-dns - state: present - provider: "{{ nios_provider }}" - register: zone_create1 - -- name: configure a zone on the system - nios_zone: - name: ansible-dns - state: present - provider: "{{ nios_provider }}" - register: zone_create2 - -- name: update the comment and ext attributes for an existing zone - nios_zone: - name: ansible-dns - comment: this is an example comment - extattrs: - Site: west-dc - state: present - provider: "{{ nios_provider }}" - register: zone_update1 - -- name: update the comment and ext attributes for an existing zone - nios_zone: - name: ansible-dns - comment: this is an example comment - extattrs: - Site: west-dc - state: present - provider: "{{ nios_provider }}" - register: zone_update2 - -- name: remove the dns zone - nios_zone: - name: ansible-dns - state: absent - provider: "{{ nios_provider }}" - register: zone_delete1 - -- name: remove the dns zone - nios_zone: - name: ansible-dns - state: absent - provider: "{{ nios_provider }}" - register: zone_delete2 - -- assert: - that: - - "zone_create1.changed" - - "not zone_create2.changed" - - "zone_update1.changed" - - "not zone_update2.changed" - - "zone_delete1.changed" - - "not zone_delete2.changed" diff --git a/tests/integration/targets/prepare_nios_tests/tasks/main.yml b/tests/integration/targets/prepare_nios_tests/tasks/main.yml deleted file mode 100644 index f8f55f38af..0000000000 --- a/tests/integration/targets/prepare_nios_tests/tasks/main.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- -- name: Install - pip: - name: infoblox-client diff --git a/tests/sanity/ignore-2.9.txt b/tests/sanity/ignore-2.9.txt index 03ab305795..9b352f2f72 100644 --- a/tests/sanity/ignore-2.9.txt +++ b/tests/sanity/ignore-2.9.txt @@ -28,38 +28,6 @@ plugins/modules/remote_management/manageiq/manageiq_provider.py validate-modules plugins/modules/remote_management/manageiq/manageiq_provider.py validate-modules:doc-missing-type # missing docs on suboptions plugins/modules/remote_management/manageiq/manageiq_provider.py validate-modules:parameter-type-not-in-doc # missing docs on suboptions plugins/modules/remote_management/manageiq/manageiq_provider.py validate-modules:undocumented-parameter # missing docs on suboptions -plugins/modules/net_tools/nios/nios_a_record.py validate-modules:deprecation-mismatch -plugins/modules/net_tools/nios/nios_a_record.py validate-modules:invalid-documentation -plugins/modules/net_tools/nios/nios_aaaa_record.py validate-modules:deprecation-mismatch -plugins/modules/net_tools/nios/nios_aaaa_record.py validate-modules:invalid-documentation -plugins/modules/net_tools/nios/nios_cname_record.py validate-modules:deprecation-mismatch -plugins/modules/net_tools/nios/nios_cname_record.py validate-modules:invalid-documentation -plugins/modules/net_tools/nios/nios_dns_view.py validate-modules:deprecation-mismatch -plugins/modules/net_tools/nios/nios_dns_view.py validate-modules:invalid-documentation -plugins/modules/net_tools/nios/nios_fixed_address.py validate-modules:deprecation-mismatch -plugins/modules/net_tools/nios/nios_fixed_address.py validate-modules:invalid-documentation -plugins/modules/net_tools/nios/nios_host_record.py validate-modules:deprecation-mismatch -plugins/modules/net_tools/nios/nios_host_record.py validate-modules:invalid-documentation -plugins/modules/net_tools/nios/nios_member.py validate-modules:deprecation-mismatch -plugins/modules/net_tools/nios/nios_member.py validate-modules:invalid-documentation -plugins/modules/net_tools/nios/nios_mx_record.py validate-modules:deprecation-mismatch -plugins/modules/net_tools/nios/nios_mx_record.py validate-modules:invalid-documentation -plugins/modules/net_tools/nios/nios_naptr_record.py validate-modules:deprecation-mismatch -plugins/modules/net_tools/nios/nios_naptr_record.py validate-modules:invalid-documentation -plugins/modules/net_tools/nios/nios_network.py validate-modules:deprecation-mismatch -plugins/modules/net_tools/nios/nios_network.py validate-modules:invalid-documentation -plugins/modules/net_tools/nios/nios_network_view.py validate-modules:deprecation-mismatch -plugins/modules/net_tools/nios/nios_network_view.py validate-modules:invalid-documentation -plugins/modules/net_tools/nios/nios_nsgroup.py validate-modules:deprecation-mismatch -plugins/modules/net_tools/nios/nios_nsgroup.py validate-modules:invalid-documentation -plugins/modules/net_tools/nios/nios_ptr_record.py validate-modules:deprecation-mismatch -plugins/modules/net_tools/nios/nios_ptr_record.py validate-modules:invalid-documentation -plugins/modules/net_tools/nios/nios_srv_record.py validate-modules:deprecation-mismatch -plugins/modules/net_tools/nios/nios_srv_record.py validate-modules:invalid-documentation -plugins/modules/net_tools/nios/nios_txt_record.py validate-modules:deprecation-mismatch -plugins/modules/net_tools/nios/nios_txt_record.py validate-modules:invalid-documentation -plugins/modules/net_tools/nios/nios_zone.py validate-modules:deprecation-mismatch -plugins/modules/net_tools/nios/nios_zone.py validate-modules:invalid-documentation plugins/modules/source_control/github/github_deploy_key.py validate-modules:parameter-invalid plugins/modules/system/iptables_state.py validate-modules:undocumented-parameter plugins/modules/system/puppet.py use-argspec-type-path diff --git a/tests/unit/plugins/module_utils/net_tools/nios/__init__.py b/tests/unit/plugins/module_utils/net_tools/nios/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/unit/plugins/module_utils/net_tools/nios/test_api.py b/tests/unit/plugins/module_utils/net_tools/nios/test_api.py deleted file mode 100644 index 09cb1deb79..0000000000 --- a/tests/unit/plugins/module_utils/net_tools/nios/test_api.py +++ /dev/null @@ -1,254 +0,0 @@ -# (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 - -import copy - -from ansible_collections.community.general.tests.unit.compat import unittest -from ansible_collections.community.general.tests.unit.compat.mock import patch, MagicMock, Mock -from ansible_collections.community.general.plugins.module_utils.net_tools.nios import api - - -class TestNiosApi(unittest.TestCase): - - def setUp(self): - super(TestNiosApi, self).setUp() - - self.module = MagicMock(name='AnsibleModule') - self.module.check_mode = False - self.module.params = {'provider': None} - - self.mock_connector = patch('ansible_collections.community.general.plugins.module_utils.net_tools.nios.api.get_connector') - self.mock_connector.start() - self.mock_check_type_dict = patch('ansible_collections.community.general.plugins.module_utils.net_tools.nios.api.check_type_dict') - self.mock_check_type_dict_obj = self.mock_check_type_dict.start() - - def tearDown(self): - super(TestNiosApi, self).tearDown() - - self.mock_connector.stop() - self.mock_check_type_dict.stop() - - def test_get_provider_spec(self): - provider_options = ['host', 'username', 'password', 'validate_certs', 'silent_ssl_warnings', - 'http_request_timeout', 'http_pool_connections', - 'http_pool_maxsize', 'max_retries', 'wapi_version', 'max_results'] - res = api.WapiBase.provider_spec - self.assertIsNotNone(res) - self.assertIn('provider', res) - self.assertIn('options', res['provider']) - returned_options = res['provider']['options'] - self.assertEqual(sorted(provider_options), sorted(returned_options.keys())) - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def test_wapi_no_change(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'default', - 'comment': 'test comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": self.mock_check_type_dict_obj().__getitem__(), - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertFalse(res['changed']) - - def test_wapi_change(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'default', - 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "default", - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.called_once_with(test_object) - - def test_wapi_change_false(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'default', - 'comment': 'updated comment', 'extattrs': None, 'fqdn': 'foo'} - - test_object = [ - { - "comment": "test comment", - "_ref": "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "default", - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "fqdn": {"ib_req": True, 'update': False}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.called_once_with(test_object) - - def test_wapi_extattrs_change(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'default', - 'comment': 'test comment', 'extattrs': {'Site': 'update'}} - - ref = "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "name": "default", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - kwargs = copy.deepcopy(test_object[0]) - kwargs['extattrs']['Site']['value'] = 'update' - kwargs['name'] = self.mock_check_type_dict_obj().__getitem__() - del kwargs['_ref'] - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.assert_called_once_with(ref, kwargs) - - def test_wapi_extattrs_nochange(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'default', - 'comment': 'test comment', 'extattrs': {'Site': 'test'}} - - test_object = [{ - "comment": "test comment", - "_ref": "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": self.mock_check_type_dict_obj().__getitem__(), - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertFalse(res['changed']) - - def test_wapi_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible', - 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.mock_check_type_dict_obj().__getitem__()}) - - def test_wapi_delete(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'ansible', - 'comment': None, 'extattrs': None} - - ref = "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "name": "ansible", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_wapi_strip_network_view(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible', - 'comment': 'updated comment', 'extattrs': None, - 'network_view': 'default'} - - test_object = [{ - "comment": "test comment", - "_ref": "view/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/true", - "name": "ansible", - "extattrs": {}, - "network_view": "default" - }] - - test_spec = { - "name": {"ib_req": True}, - "network_view": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - kwargs = test_object[0].copy() - ref = kwargs.pop('_ref') - kwargs['comment'] = 'updated comment' - kwargs['name'] = self.mock_check_type_dict_obj().__getitem__() - del kwargs['network_view'] - del kwargs['extattrs'] - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.assert_called_once_with(ref, kwargs) diff --git a/tests/unit/plugins/modules/net_tools/nios/__init__.py b/tests/unit/plugins/modules/net_tools/nios/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/unit/plugins/modules/net_tools/nios/fixtures/nios_result.txt b/tests/unit/plugins/modules/net_tools/nios/fixtures/nios_result.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/unit/plugins/modules/net_tools/nios/test_nios_a_record.py b/tests/unit/plugins/modules/net_tools/nios/test_nios_a_record.py deleted file mode 100644 index a1f9097854..0000000000 --- a/tests/unit/plugins/modules/net_tools/nios/test_nios_a_record.py +++ /dev/null @@ -1,162 +0,0 @@ -# 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 . - -# Make coding more python3-ish - - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible_collections.community.general.plugins.modules.net_tools.nios import nios_a_record -from ansible_collections.community.general.plugins.module_utils.net_tools.nios import api -from ansible_collections.community.general.tests.unit.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosARecordModule(TestNiosModule): - - module = nios_a_record - - def setUp(self): - super(TestNiosARecordModule, self).setUp() - self.module = MagicMock(name='ansible_collections.community.general.plugins.modules.net_tools.nios.nios_a_record.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_a_record.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_a_record.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - self.mock_check_type_dict = patch('ansible_collections.community.general.plugins.module_utils.net_tools.nios.api.check_type_dict') - self.mock_check_type_dict_obj = self.mock_check_type_dict.start() - - def tearDown(self): - super(TestNiosARecordModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - self.mock_check_type_dict.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_a_record_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'a.ansible.com', - 'ipv4': '192.168.10.1', 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "name": {"ib_req": True}, - "ipv4": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi.__dict__) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.mock_check_type_dict_obj().__getitem__(), - 'ipv4': '192.168.10.1'}) - - def test_nios_a_record_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'a.ansible.com', 'ipv4': '192.168.10.1', - 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "arecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "a.ansible.com", - "ipv4": "192.168.10.1", - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "ipv4": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_a_record_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'a.ansible.com', 'ipv4': '192.168.10.1', - 'comment': None, 'extattrs': None} - - ref = "arecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "name": "a.ansible.com", - "ipv4": "192.168.10.1", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {"ib_req": True}, - "ipv4": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_a_record_update_record_name(self): - self.module.params = {'provider': None, 'state': 'present', 'name': {'new_name': 'a_new.ansible.com', 'old_name': 'a.ansible.com'}, - 'comment': 'comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "arecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "a_new.ansible.com", - "old_name": "a.ansible.com", - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.called_once_with(test_object) diff --git a/tests/unit/plugins/modules/net_tools/nios/test_nios_aaaa_record.py b/tests/unit/plugins/modules/net_tools/nios/test_nios_aaaa_record.py deleted file mode 100644 index efc67a2273..0000000000 --- a/tests/unit/plugins/modules/net_tools/nios/test_nios_aaaa_record.py +++ /dev/null @@ -1,162 +0,0 @@ -# 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 . - -# Make coding more python3-ish - - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible_collections.community.general.plugins.modules.net_tools.nios import nios_aaaa_record -from ansible_collections.community.general.plugins.module_utils.net_tools.nios import api -from ansible_collections.community.general.tests.unit.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosAAAARecordModule(TestNiosModule): - - module = nios_aaaa_record - - def setUp(self): - super(TestNiosAAAARecordModule, self).setUp() - self.module = MagicMock(name='ansible_collections.community.general.plugins.modules.net_tools.nios.nios_aaaa_record.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_aaaa_record.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_aaaa_record.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - self.mock_check_type_dict = patch('ansible_collections.community.general.plugins.module_utils.net_tools.nios.api.check_type_dict') - self.mock_check_type_dict_obj = self.mock_check_type_dict.start() - - def tearDown(self): - super(TestNiosAAAARecordModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - self.mock_check_type_dict.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_aaaa_record_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'aaaa.ansible.com', - 'ipv6': '2001:0db8:85a3:0000:0000:8a2e:0370:7334', 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "name": {"ib_req": True}, - "ipv6": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi.__dict__) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.mock_check_type_dict_obj().__getitem__(), - 'ipv6': '2001:0db8:85a3:0000:0000:8a2e:0370:7334'}) - - def test_nios_aaaa_record_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'aaaa.ansible.com', - 'ipv6': '2001:0db8:85a3:0000:0000:8a2e:0370:7334', 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "aaaarecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "aaaa.ansible.com", - "ipv6": "2001:0db8:85a3:0000:0000:8a2e:0370:7334", - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "ipv6": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_aaaa_record_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'aaaa.ansible.com', - 'ipv6': '2001:0db8:85a3:0000:0000:8a2e:0370:7334', 'comment': None, 'extattrs': None} - - ref = "aaaarecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "name": "aaaa.ansible.com", - "ipv6": "2001:0db8:85a3:0000:0000:8a2e:0370:7334", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {"ib_req": True}, - "ipv6": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_aaaa_record_update_record_name(self): - self.module.params = {'provider': None, 'state': 'present', 'name': {'new_name': 'aaaa_new.ansible.com', 'old_name': 'aaaa.ansible.com'}, - 'comment': 'comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "aaaarecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "aaaa_new.ansible.com", - "old_name": "aaaa.ansible.com", - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.called_once_with(test_object) diff --git a/tests/unit/plugins/modules/net_tools/nios/test_nios_cname_record.py b/tests/unit/plugins/modules/net_tools/nios/test_nios_cname_record.py deleted file mode 100644 index b66520dd39..0000000000 --- a/tests/unit/plugins/modules/net_tools/nios/test_nios_cname_record.py +++ /dev/null @@ -1,136 +0,0 @@ -# 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 . - -# Make coding more python3-ish - - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible_collections.community.general.plugins.modules.net_tools.nios import nios_cname_record -from ansible_collections.community.general.plugins.module_utils.net_tools.nios import api -from ansible_collections.community.general.tests.unit.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosCNameRecordModule(TestNiosModule): - - module = nios_cname_record - - def setUp(self): - super(TestNiosCNameRecordModule, self).setUp() - self.module = MagicMock(name='ansible_collections.community.general.plugins.modules.net_tools.nios.nios_cname_record.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_cname_record.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_cname_record.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - self.mock_check_type_dict = patch('ansible_collections.community.general.plugins.module_utils.net_tools.nios.api.check_type_dict') - self.mock_check_type_dict_obj = self.mock_check_type_dict.start() - - def tearDown(self): - super(TestNiosCNameRecordModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - self.mock_check_type_dict.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_a_record_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'cname.ansible.com', - 'canonical': 'realhost.ansible.com', 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "name": {"ib_req": True}, - "canonical": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi.__dict__) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.mock_check_type_dict_obj().__getitem__(), - 'canonical': 'realhost.ansible.com'}) - - def test_nios_a_record_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'cname.ansible.com', - 'canonical': 'realhost.ansible.com', 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "cnamerecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "cname.ansible.com", - "canonical": "realhost.ansible.com", - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "canonical": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_a_record_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'cname.ansible.com', - 'canonical': 'realhost.ansible.com', 'comment': None, 'extattrs': None} - - ref = "cnamerecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "name": "cname.ansible.com", - "canonical": "realhost.ansible.com", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {"ib_req": True}, - "canonical": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) diff --git a/tests/unit/plugins/modules/net_tools/nios/test_nios_dns_view.py b/tests/unit/plugins/modules/net_tools/nios/test_nios_dns_view.py deleted file mode 100644 index fa67d59440..0000000000 --- a/tests/unit/plugins/modules/net_tools/nios/test_nios_dns_view.py +++ /dev/null @@ -1,130 +0,0 @@ -# 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 . - -# Make coding more python3-ish - - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible_collections.community.general.plugins.modules.net_tools.nios import nios_dns_view -from ansible_collections.community.general.plugins.module_utils.net_tools.nios import api -from ansible_collections.community.general.tests.unit.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosDnsViewModule(TestNiosModule): - - module = nios_dns_view - - def setUp(self): - super(TestNiosDnsViewModule, self).setUp() - self.module = MagicMock(name='ansible_collections.community.general.plugins.modules.net_tools.nios.nios_dns_view.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_dns_view.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_dns_view.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - self.mock_check_type_dict = patch('ansible_collections.community.general.plugins.module_utils.net_tools.nios.api.check_type_dict') - self.mock_check_type_dict_obj = self.mock_check_type_dict.start() - - def tearDown(self): - super(TestNiosDnsViewModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - self.mock_check_type_dict.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_dns_view_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible-dns', - 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.mock_check_type_dict_obj().__getitem__()}) - - def test_nios_dns_view_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible-dns', - 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "dnsview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "ansible-dns", - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_dns_view_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'ansible-dns', - 'comment': None, 'extattrs': None} - - ref = "dnsview/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "name": "ansible-dns", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) diff --git a/tests/unit/plugins/modules/net_tools/nios/test_nios_fixed_address.py b/tests/unit/plugins/modules/net_tools/nios/test_nios_fixed_address.py deleted file mode 100644 index 2be401f7ce..0000000000 --- a/tests/unit/plugins/modules/net_tools/nios/test_nios_fixed_address.py +++ /dev/null @@ -1,201 +0,0 @@ -# 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 . - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible_collections.community.general.plugins.module_utils.net_tools.nios import api -from ansible_collections.community.general.plugins.modules.net_tools.nios import nios_fixed_address -from ansible_collections.community.general.tests.unit.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosFixedAddressModule(TestNiosModule): - - module = nios_fixed_address - - def setUp(self): - super(TestNiosFixedAddressModule, self).setUp() - self.module = MagicMock(name='ansible_collections.community.general.plugins.modules.net_tools.nios.nios_fixed_address.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_fixed_address.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_fixed_address.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - - def tearDown(self): - super(TestNiosFixedAddressModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def test_nios_fixed_address_ipv4_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'test_fa', 'ipaddr': '192.168.10.1', 'mac': '08:6d:41:e8:fd:e8', - 'network': '192.168.10.0/24', 'network_view': 'default', 'comment': None, 'extattrs': None} - - test_object = None - test_spec = { - "name": {}, - "ipaddr": {"ib_req": True}, - "mac": {"ib_req": True}, - "network": {"ib_req": True}, - "network_view": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': 'test_fa', 'ipaddr': '192.168.10.1', 'mac': '08:6d:41:e8:fd:e8', - 'network': '192.168.10.0/24', 'network_view': 'default'}) - - def test_nios_fixed_address_ipv4_dhcp_update(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'test_fa', 'ipaddr': '192.168.10.1', 'mac': '08:6d:41:e8:fd:e8', - 'network': '192.168.10.0/24', 'network_view': 'default', 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "name": "test_fa", - "_ref": "network/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "ipaddr": "192.168.10.1", - "mac": "08:6d:41:e8:fd:e8", - "network": "192.168.10.0/24", - "network_view": "default", - "extattrs": {'options': {'name': 'test', 'value': 'ansible.com'}} - } - ] - - test_spec = { - "name": {}, - "ipaddr": {"ib_req": True}, - "mac": {"ib_req": True}, - "network": {"ib_req": True}, - "network_view": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_fixed_address_ipv4_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'test_fa', 'ipaddr': '192.168.10.1', 'mac': '08:6d:41:e8:fd:e8', - 'network': '192.168.10.0/24', 'network_view': 'default', 'comment': None, 'extattrs': None} - - ref = "fixedaddress/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "name": "test_fa", - "_ref": ref, - "ipaddr": "192.168.10.1", - "mac": "08:6d:41:e8:fd:e8", - "network": "192.168.10.0/24", - "network_view": "default", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {}, - "ipaddr": {"ib_req": True}, - "mac": {"ib_req": True}, - "network": {"ib_req": True}, - "network_view": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_fixed_address_ipv6_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'test_fa', 'ipaddr': 'fe80::1/10', 'mac': '08:6d:41:e8:fd:e8', - 'network': 'fe80::/64', 'network_view': 'default', 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "name": {}, - "ipaddr": {"ib_req": True}, - "mac": {"ib_req": True}, - "network": {"ib_req": True}, - "network_view": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': 'test_fa', 'ipaddr': 'fe80::1/10', 'mac': '08:6d:41:e8:fd:e8', - 'network': 'fe80::/64', 'network_view': 'default'}) - - def test_nios_fixed_address_ipv6_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'test_fa', 'ipaddr': 'fe80::1/10', 'mac': '08:6d:41:e8:fd:e8', - 'network': 'fe80::/64', 'network_view': 'default', 'comment': None, 'extattrs': None} - - ref = "ipv6fixedaddress/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "name": "test_fa", - "_ref": ref, - "ipaddr": "fe80::1/10", - "mac": "08:6d:41:e8:fd:e8", - "network": "fe80::/64", - "network_view": "default", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {}, - "ipaddr": {"ib_req": True}, - "mac": {"ib_req": True}, - "network": {"ib_req": True}, - "network_view": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) diff --git a/tests/unit/plugins/modules/net_tools/nios/test_nios_host_record.py b/tests/unit/plugins/modules/net_tools/nios/test_nios_host_record.py deleted file mode 100644 index 05f29348e3..0000000000 --- a/tests/unit/plugins/modules/net_tools/nios/test_nios_host_record.py +++ /dev/null @@ -1,155 +0,0 @@ -# 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 . - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible_collections.community.general.plugins.modules.net_tools.nios import nios_host_record -from ansible_collections.community.general.plugins.module_utils.net_tools.nios import api -from ansible_collections.community.general.tests.unit.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosHostRecordModule(TestNiosModule): - - module = nios_host_record - - def setUp(self): - - super(TestNiosHostRecordModule, self).setUp() - self.module = MagicMock(name='ansible_collections.community.general.plugins.modules.net_tools.nios.nios_host_record.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - - self.mock_wapi = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_host_record.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_host_record.WapiModule.run') - self.mock_wapi_run.start() - - self.load_config = self.mock_wapi_run.start() - self.mock_check_type_dict = patch('ansible_collections.community.general.plugins.module_utils.net_tools.nios.api.check_type_dict') - self.mock_check_type_dict_obj = self.mock_check_type_dict.start() - - def tearDown(self): - super(TestNiosHostRecordModule, self).tearDown() - self.mock_wapi.stop() - self.mock_check_type_dict.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_host_record_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible', - 'comment': None, 'extattrs': None} - - test_object = None - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.mock_check_type_dict_obj().__getitem__()}) - - def test_nios_host_record_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'ansible', - 'comment': None, 'extattrs': None} - - ref = "record:host/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "name": "ansible", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_host_record_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'default', - 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "record:host/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "default", - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.called_once_with(test_object) - - def test_nios_host_record_update_record_name(self): - self.module.params = {'provider': None, 'state': 'present', 'name': {'new_name': 'default', 'old_name': 'old_default'}, - 'comment': 'comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "record:host/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "default", - "old_name": "old_default", - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.called_once_with(test_object) diff --git a/tests/unit/plugins/modules/net_tools/nios/test_nios_member.py b/tests/unit/plugins/modules/net_tools/nios/test_nios_member.py deleted file mode 100644 index e181b70d17..0000000000 --- a/tests/unit/plugins/modules/net_tools/nios/test_nios_member.py +++ /dev/null @@ -1,162 +0,0 @@ -# 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 . - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible_collections.community.general.plugins.module_utils.net_tools.nios import api -from ansible_collections.community.general.plugins.modules.net_tools.nios import nios_member -from ansible_collections.community.general.tests.unit.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosMemberModule(TestNiosModule): - - module = nios_member - - def setUp(self): - super(TestNiosMemberModule, self).setUp() - self.module = MagicMock(name='ansible_collections.community.general.plugins.modules.net_tools.nios.nios_member.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_member.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_member.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - - def tearDown(self): - super(TestNiosMemberModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def test_nios_member_create(self): - self.module.params = {'provider': None, 'state': 'present', 'host_name': 'test_member', - 'vip_setting': {'address': '192.168.1.110', 'subnet_mask': '255.255.255.0', 'gateway': '192.168.1.1'}, - 'config_addr_type': 'IPV4', 'platform': 'VNIOS', 'comment': None, 'extattrs': None} - - test_object = None - test_spec = { - "host_name": {"ib_req": True}, - "vip_setting": {}, - "config_addr_type": {}, - "platform": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'host_name': 'test_member', - 'vip_setting': {'address': '192.168.1.110', 'subnet_mask': '255.255.255.0', - 'gateway': '192.168.1.1'}, - 'config_addr_type': 'IPV4', 'platform': 'VNIOS'}) - - def test_nios_member_update(self): - self.module.params = {'provider': None, 'state': 'present', 'host_name': 'test_member', - 'vip_setting': {'address': '192.168.1.110', 'subnet_mask': '255.255.255.0', 'gateway': '192.168.1.1'}, - 'config_addr_type': 'IPV4', 'platform': 'VNIOS', 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "Created with Ansible", - "_ref": "member/b25lLnZpcnR1YWxfbm9kZSQ3:member01.ansible-dev.com", - "config_addr_type": "IPV4", - "host_name": "member01.ansible-dev.com", - "platform": "VNIOS", - "service_type_configuration": "ALL_V4", - "vip_setting": - { - "address": "192.168.1.100", - "dscp": 0, - "gateway": "192.168.1.1", - "primary": True, - "subnet_mask": "255.255.255.0", - "use_dscp": False - } - } - ] - - test_spec = { - "host_name": {"ib_req": True}, - "vip_setting": {}, - "config_addr_type": {}, - "platform": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_member_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'host_name': 'test_member', - 'vip_setting': {'address': '192.168.1.110', 'subnet_mask': '255.255.255.0', 'gateway': '192.168.1.1'}, - 'config_addr_type': 'IPV4', 'platform': 'VNIOS', 'comment': 'updated comment', 'extattrs': None} - - ref = "member/b25lLnZpcnR1YWxfbm9kZSQ3:member01.ansible-dev.com" - - test_object = [ - { - "comment": "Created with Ansible", - "_ref": "member/b25lLnZpcnR1YWxfbm9kZSQ3:member01.ansible-dev.com", - "config_addr_type": "IPV4", - "host_name": "member01.ansible-dev.com", - "platform": "VNIOS", - "service_type_configuration": "ALL_V4", - "vip_setting": - { - "address": "192.168.1.100", - "dscp": 0, - "gateway": "192.168.1.1", - "primary": True, - "subnet_mask": "255.255.255.0", - "use_dscp": False - } - } - ] - - test_spec = { - "host_name": {"ib_req": True}, - "vip_setting": {}, - "config_addr_type": {}, - "platform": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) diff --git a/tests/unit/plugins/modules/net_tools/nios/test_nios_module.py b/tests/unit/plugins/modules/net_tools/nios/test_nios_module.py deleted file mode 100644 index 545d243748..0000000000 --- a/tests/unit/plugins/modules/net_tools/nios/test_nios_module.py +++ /dev/null @@ -1,88 +0,0 @@ -# (c) 2018 Red Hat Inc. -# -# 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 . - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json - -from ansible_collections.community.general.tests.unit.plugins.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestNiosModule(ModuleTestCase): - - def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False): - - self.load_fixtures(commands) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if sort: - self.assertEqual(sorted(commands), sorted(result['commands']), result['commands']) - else: - self.assertEqual(commands, result['commands'], result['commands']) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None): - pass diff --git a/tests/unit/plugins/modules/net_tools/nios/test_nios_mx_record.py b/tests/unit/plugins/modules/net_tools/nios/test_nios_mx_record.py deleted file mode 100644 index 87f944ff4b..0000000000 --- a/tests/unit/plugins/modules/net_tools/nios/test_nios_mx_record.py +++ /dev/null @@ -1,140 +0,0 @@ -# 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 . - -# Make coding more python3-ish - - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible_collections.community.general.plugins.modules.net_tools.nios import nios_mx_record -from ansible_collections.community.general.plugins.module_utils.net_tools.nios import api -from ansible_collections.community.general.tests.unit.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosMXRecordModule(TestNiosModule): - - module = nios_mx_record - - def setUp(self): - super(TestNiosMXRecordModule, self).setUp() - self.module = MagicMock(name='ansible_collections.community.general.plugins.modules.net_tools.nios.nios_mx_record.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_mx_record.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_mx_record.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - self.mock_check_type_dict = patch('ansible_collections.community.general.plugins.module_utils.net_tools.nios.api.check_type_dict') - self.mock_check_type_dict_obj = self.mock_check_type_dict.start() - - def tearDown(self): - super(TestNiosMXRecordModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - self.mock_check_type_dict.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_mx_record_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible.com', - 'mx': 'mailhost.ansible.com', 'preference': 0, 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "name": {"ib_req": True}, - "mx": {"ib_req": True}, - "preference": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.mock_check_type_dict_obj().__getitem__(), - 'mx': 'mailhost.ansible.com', 'preference': 0}) - - def test_nios_mx_record_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible.com', 'mx': 'mailhost.ansible.com', - 'preference': 0, 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "mxrecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "ansible.com", - "mx": "mailhost.ansible.com", - "preference": 0, - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "mx": {"ib_req": True}, - "preference": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_mx_record_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'ansible.com', 'mx': 'mailhost.ansible.com', - 'preference': 0, 'comment': None, 'extattrs': None} - - ref = "mxrecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "name": "ansible.com", - "mx": "mailhost.ansible.com", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {"ib_req": True}, - "mx": {"ib_req": True}, - "preference": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) diff --git a/tests/unit/plugins/modules/net_tools/nios/test_nios_naptr_record.py b/tests/unit/plugins/modules/net_tools/nios/test_nios_naptr_record.py deleted file mode 100644 index de2a6df5e5..0000000000 --- a/tests/unit/plugins/modules/net_tools/nios/test_nios_naptr_record.py +++ /dev/null @@ -1,150 +0,0 @@ -# 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 . - -# Make coding more python3-ish - - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible_collections.community.general.plugins.modules.net_tools.nios import nios_naptr_record -from ansible_collections.community.general.plugins.module_utils.net_tools.nios import api -from ansible_collections.community.general.tests.unit.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosNAPTRRecordModule(TestNiosModule): - - module = nios_naptr_record - - def setUp(self): - super(TestNiosNAPTRRecordModule, self).setUp() - self.module = MagicMock(name='ansible_collections.community.general.plugins.modules.net_tools.nios.nios_naptr_record.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_naptr_record.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_naptr_record.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - self.mock_check_type_dict = patch('ansible_collections.community.general.plugins.module_utils.net_tools.nios.api.check_type_dict') - self.mock_check_type_dict_obj = self.mock_check_type_dict.start() - - def tearDown(self): - super(TestNiosNAPTRRecordModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - self.mock_check_type_dict.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_naptr_record_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': '*.subscriber-100.ansiblezone.com', - 'order': '1000', 'preference': '10', 'replacement': 'replacement1.network.ansiblezone.com', - 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "name": {"ib_req": True}, - "order": {"ib_req": True}, - "preference": {"ib_req": True}, - "replacement": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi.__dict__) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.mock_check_type_dict_obj().__getitem__(), - 'order': '1000', 'preference': '10', - 'replacement': 'replacement1.network.ansiblezone.com'}) - - def test_nios_naptr_record_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'name': '*.subscriber-100.ansiblezone.com', - 'order': '1000', 'preference': '10', 'replacement': 'replacement1.network.ansiblezone.com', - 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "naptrrecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "*.subscriber-100.ansiblezone.com", - "order": "1000", - "preference": "10", - "replacement": "replacement1.network.ansiblezone.com", - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "order": {"ib_req": True}, - "preference": {"ib_req": True}, - "replacement": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_naptr_record_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': '*.subscriber-100.ansiblezone.com', - 'order': '1000', 'preference': '10', 'replacement': 'replacement1.network.ansiblezone.com', - 'comment': None, 'extattrs': None} - - ref = "naptrrecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "name": "*.subscriber-100.ansiblezone.com", - "order": "1000", - "preference": "10", - "replacement": "replacement1.network.ansiblezone.com", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {"ib_req": True}, - "order": {"ib_req": True}, - "preference": {"ib_req": True}, - "replacement": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) diff --git a/tests/unit/plugins/modules/net_tools/nios/test_nios_network.py b/tests/unit/plugins/modules/net_tools/nios/test_nios_network.py deleted file mode 100644 index e14d39f54c..0000000000 --- a/tests/unit/plugins/modules/net_tools/nios/test_nios_network.py +++ /dev/null @@ -1,248 +0,0 @@ -# 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 . - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible_collections.community.general.plugins.module_utils.net_tools.nios import api -from ansible_collections.community.general.plugins.modules.net_tools.nios import nios_network -from ansible_collections.community.general.tests.unit.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosNetworkModule(TestNiosModule): - - module = nios_network - - def setUp(self): - super(TestNiosNetworkModule, self).setUp() - self.module = MagicMock(name='ansible_collections.community.general.plugins.modules.net_tools.nios.nios_network.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_network.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_network.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - - def tearDown(self): - super(TestNiosNetworkModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def test_nios_network_ipv4_create(self): - self.module.params = {'provider': None, 'state': 'present', 'network': '192.168.10.0/24', - 'comment': None, 'extattrs': None} - - test_object = None - test_spec = { - "network": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'network': '192.168.10.0/24'}) - - def test_nios_network_ipv4_dhcp_update(self): - self.module.params = {'provider': None, 'state': 'present', 'network': '192.168.10.0/24', - 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "network/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "network": "192.168.10.0/24", - "extattrs": {'options': {'name': 'test', 'value': 'ansible.com'}} - } - ] - - test_spec = { - "network": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_network_ipv6_dhcp_update(self): - self.module.params = {'provider': None, 'state': 'present', 'ipv6network': 'fe80::/64', - 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "ipv6network/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "ipv6network": "fe80::/64", - "extattrs": {'options': {'name': 'test', 'value': 'ansible.com'}} - } - ] - - test_spec = { - "ipv6network": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - self.assertTrue(res['changed']) - - def test_nios_network_ipv4_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'network': '192.168.10.0/24', - 'comment': None, 'extattrs': None} - - ref = "network/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "network": "192.168.10.0/24", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "network": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_network_ipv6_create(self): - self.module.params = {'provider': None, 'state': 'present', 'ipv6network': 'fe80::/64', - 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "ipv6network": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'ipv6network': 'fe80::/64'}) - - def test_nios_network_ipv6_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'ipv6network': 'fe80::/64', - 'comment': None, 'extattrs': None} - - ref = "ipv6network/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "ipv6network": "fe80::/64", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "ipv6network": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_networkcontainer_ipv4_create(self): - self.module.params = {'provider': None, 'state': 'present', 'networkcontainer': '192.168.10.0/24', - 'comment': None, 'extattrs': None} - - test_object = None - test_spec = { - "networkcontainer": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'networkcontainer': '192.168.10.0/24'}) - - def test_nios_networkcontainer_ipv4_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'networkcontainer': '192.168.10.0/24', - 'comment': None, 'extattrs': None} - - ref = "networkcontainer/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "networkcontainer": "192.168.10.0/24" - }] - - test_spec = { - "networkcontainer": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_networkcontainer_ipv6_create(self): - self.module.params = {'provider': None, 'state': 'present', 'ipv6networkcontainer': 'fe80::/64', - 'comment': None, 'extattrs': None} - - test_object = None - test_spec = { - "ipv6networkcontainer": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'ipv6networkcontainer': 'fe80::/64'}) diff --git a/tests/unit/plugins/modules/net_tools/nios/test_nios_network_view.py b/tests/unit/plugins/modules/net_tools/nios/test_nios_network_view.py deleted file mode 100644 index dc9b166bc7..0000000000 --- a/tests/unit/plugins/modules/net_tools/nios/test_nios_network_view.py +++ /dev/null @@ -1,159 +0,0 @@ -# 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 . - -# Make coding more python3-ish - - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible_collections.community.general.plugins.modules.net_tools.nios import nios_network_view -from ansible_collections.community.general.plugins.module_utils.net_tools.nios import api -from ansible_collections.community.general.tests.unit.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosNetworkViewModule(TestNiosModule): - - module = nios_network_view - - def setUp(self): - super(TestNiosNetworkViewModule, self).setUp() - self.module = MagicMock(name='ansible_collections.community.general.plugins.modules.net_tools.nios.nios_network_view.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_network_view.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_network_view.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - self.mock_check_type_dict = patch('ansible_collections.community.general.plugins.module_utils.net_tools.nios.api.check_type_dict') - self.mock_check_type_dict_obj = self.mock_check_type_dict.start() - - def tearDown(self): - super(TestNiosNetworkViewModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - self.mock_check_type_dict.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_network_view_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible', - 'comment': None, 'extattrs': None} - - test_object = None - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {}, - - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.mock_check_type_dict_obj().__getitem__()}) - - def test_nios_network_view_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'default', - 'comment': 'updated comment', 'extattrs': None, 'network_view': 'default'} - - test_object = [ - { - "comment": "test comment", - "_ref": "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "default", - "extattrs": {}, - "network_view": "default" - } - ] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.called_once_with(test_object) - - def test_nios_network_view_update_name(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'default', 'old_name': 'old_default', - 'comment': 'updated comment', 'extattrs': None, 'network_view': 'default'} - - test_object = [ - { - "comment": "test comment", - "_ref": "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "default", - "old_name": "old_default", - "extattrs": {}, - "network_view": "default" - } - ] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.called_once_with(test_object) - - def test_nios_network_view_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'ansible', - 'comment': None, 'extattrs': None} - - ref = "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "name": "ansible", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) diff --git a/tests/unit/plugins/modules/net_tools/nios/test_nios_nsgroup.py b/tests/unit/plugins/modules/net_tools/nios/test_nios_nsgroup.py deleted file mode 100644 index 6320f970c2..0000000000 --- a/tests/unit/plugins/modules/net_tools/nios/test_nios_nsgroup.py +++ /dev/null @@ -1,129 +0,0 @@ -# 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 . - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible_collections.community.general.plugins.modules.net_tools.nios import nios_nsgroup -from ansible_collections.community.general.plugins.module_utils.net_tools.nios import api -from ansible_collections.community.general.tests.unit.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosNSGroupModule(TestNiosModule): - - module = nios_nsgroup - - def setUp(self): - - super(TestNiosNSGroupModule, self).setUp() - self.module = MagicMock(name='ansible_collections.community.general.plugins.modules.net_tools.nios.nios_nsgroup.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - - self.mock_wapi = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_nsgroup.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_nsgroup.WapiModule.run') - self.mock_wapi_run.start() - - self.load_config = self.mock_wapi_run.start() - - self.mock_check_type_dict = patch('ansible_collections.community.general.plugins.module_utils.net_tools.nios.api.check_type_dict') - self.mock_check_type_dict_obj = self.mock_check_type_dict.start() - - def tearDown(self): - super(TestNiosNSGroupModule, self).tearDown() - self.mock_wapi.stop() - self.mock_check_type_dict.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_nsgroup_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'my-simple-group', - 'comment': None, 'grid_primary': None} - - test_object = None - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "grid_primary": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.mock_check_type_dict_obj().__getitem__()}) - - def test_nios_nsgroup_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'my-simple-group', - 'comment': None, 'grid_primary': None} - - ref = "nsgroup/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "name": "my-simple-group", - "grid_primary": {'name': 'infoblox-test.example.com'} - }] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "grid_primary": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_nsgroup_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'default', - 'comment': 'updated comment', 'grid_primary': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "nsgroup/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "default", - "grid_primary": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "grid_primary": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.called_once_with(test_object) diff --git a/tests/unit/plugins/modules/net_tools/nios/test_nios_ptr_record.py b/tests/unit/plugins/modules/net_tools/nios/test_nios_ptr_record.py deleted file mode 100644 index 7d51057dad..0000000000 --- a/tests/unit/plugins/modules/net_tools/nios/test_nios_ptr_record.py +++ /dev/null @@ -1,184 +0,0 @@ -# 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 . - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible_collections.community.general.plugins.modules.net_tools.nios import nios_ptr_record -from ansible_collections.community.general.plugins.module_utils.net_tools.nios import api -from ansible_collections.community.general.tests.unit.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosPTRRecordModule(TestNiosModule): - - module = nios_ptr_record - - def setUp(self): - - super(TestNiosPTRRecordModule, self).setUp() - self.module = MagicMock(name='ansible_collections.community.general.plugins.modules.net_tools.nios.nios_ptr_record.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - - self.mock_wapi = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_ptr_record.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_ptr_record.WapiModule.run') - self.mock_wapi_run.start() - - self.load_config = self.mock_wapi_run.start() - - def tearDown(self): - super(TestNiosPTRRecordModule, self).tearDown() - self.mock_wapi.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_ptr_record_create(self): - self.module.params = {'provider': None, 'state': 'present', 'ptrdname': 'ansible.test.com', - 'ipv4addr': '10.36.241.14', 'comment': None, 'extattrs': None, 'view': 'default'} - - test_object = None - test_spec = { - "ipv4addr": {"ib_req": True}, - "ptrdname": {"ib_req": True}, - "comment": {}, - "extattrs": {}, - "view": {"ib_req": True} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'ipv4addr': '10.36.241.14', 'ptrdname': 'ansible.test.com', 'view': 'default'}) - - def test_nios_ptr_record_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'ptrdname': 'ansible.test.com', - 'ipv4addr': '10.36.241.14', 'comment': None, 'extattrs': None, 'view': 'default'} - - ref = "record:ptr/ZG5zLm5ldHdvcmtfdmlldyQw:14.241.36.10.in-addr.arpa/default" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "ptrdname": "ansible.test.com", - "ipv4addr": "10.36.241.14", - "view": "default", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "ipv4addr": {"ib_req": True}, - "ptrdname": {"ib_req": True}, - "comment": {}, - "extattrs": {}, - "view": {"ib_req": True} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_ptr_record_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'ptrdname': 'ansible.test.com', - 'ipv4addr': '10.36.241.14', 'comment': 'updated comment', 'extattrs': None, 'view': 'default'} - - test_object = [ - { - "comment": "test comment", - "_ref": "record:ptr/ZG5zLm5ldHdvcmtfdmlldyQw:14.241.36.10.in-addr.arpa/default", - "ptrdname": "ansible.test.com", - "ipv4addr": "10.36.241.14", - "extattrs": {}, - "view": "default" - } - ] - - test_spec = { - "ipv4addr": {"ib_req": True}, - "ptrdname": {"ib_req": True}, - "comment": {}, - "extattrs": {}, - "view": {"ib_req": True} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.called_once_with(test_object) - - def test_nios_ptr_record_update_record_ptrdname(self): - self.module.params = {'provider': None, 'state': 'present', 'ptrdname': 'ansible.test.org', - 'ipv4addr': '10.36.241.14', 'comment': 'comment', 'extattrs': None, 'view': 'default'} - - test_object = [ - { - "comment": "test comment", - "_ref": "record:ptr/ZG5zLm5ldHdvcmtfdmlldyQw:14.241.36.10.in-addr.arpa/default", - "ptrdname": "ansible.test.com", - "ipv4addr": "10.36.241.14", - "extattrs": {}, - "view": "default" - } - ] - - test_spec = { - "ipv4addr": {"ib_req": True}, - "ptrdname": {"ib_req": True}, - "comment": {}, - "extattrs": {}, - "view": {"ib_req": True} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.called_once_with(test_object) - - def test_nios_ptr6_record_create(self): - self.module.params = {'provider': None, 'state': 'present', 'ptrdname': 'ansible6.test.com', - 'ipv6addr': '2002:8ac3:802d:1242:20d:60ff:fe38:6d16', 'comment': None, 'extattrs': None, 'view': 'default'} - - test_object = None - test_spec = {"ipv6addr": {"ib_req": True}, - "ptrdname": {"ib_req": True}, - "comment": {}, - "extattrs": {}, - "view": {"ib_req": True}} - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'ipv6addr': '2002:8ac3:802d:1242:20d:60ff:fe38:6d16', - 'ptrdname': 'ansible6.test.com', 'view': 'default'}) diff --git a/tests/unit/plugins/modules/net_tools/nios/test_nios_srv_record.py b/tests/unit/plugins/modules/net_tools/nios/test_nios_srv_record.py deleted file mode 100644 index 48079d3a78..0000000000 --- a/tests/unit/plugins/modules/net_tools/nios/test_nios_srv_record.py +++ /dev/null @@ -1,156 +0,0 @@ -# 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 . - -# Make coding more python3-ish - - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible_collections.community.general.plugins.modules.net_tools.nios import nios_srv_record -from ansible_collections.community.general.plugins.module_utils.net_tools.nios import api -from ansible_collections.community.general.tests.unit.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosSRVRecordModule(TestNiosModule): - - module = nios_srv_record - - def setUp(self): - super(TestNiosSRVRecordModule, self).setUp() - self.module = MagicMock(name='ansible_collections.community.general.plugins.modules.net_tools.nios.nios_srv_record.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_srv_record.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_srv_record.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - self.mock_check_type_dict = patch('ansible_collections.community.general.plugins.module_utils.net_tools.nios.api.check_type_dict') - self.mock_check_type_dict_obj = self.mock_check_type_dict.start() - - def tearDown(self): - super(TestNiosSRVRecordModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - self.mock_check_type_dict.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_srv_record_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': '_sip._tcp.service.ansible.com', - 'port': 5080, 'target': 'service1.ansible.com', 'priority': 10, 'weight': 10, - 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "name": {"ib_req": True}, - "port": {"ib_req": True}, - "target": {"ib_req": True}, - "priority": {"ib_req": True}, - "weight": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.mock_check_type_dict_obj().__getitem__(), - 'port': 5080, 'target': 'service1.ansible.com', 'priority': 10, 'weight': 10}) - - def test_nios_srv_record_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'name': '_sip._tcp.service.ansible.com', - 'port': 5080, 'target': 'service1.ansible.com', 'priority': 10, 'weight': 10, - 'comment': None, 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "srvrecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "_sip._tcp.service.ansible.com", - 'port': 5080, - "target": "mailhost.ansible.com", - "priority": 10, - 'weight': 10, - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "port": {"ib_req": True}, - "target": {"ib_req": True}, - "priority": {"ib_req": True}, - "weight": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_srv_record_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': '_sip._tcp.service.ansible.com', - 'port': 5080, 'target': 'service1.ansible.com', 'priority': 10, 'weight': 10, - 'comment': None, 'extattrs': None} - - ref = "srvrecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/false" - - test_object = [ - { - "comment": "test comment", - "_ref": ref, - "name": "_sip._tcp.service.ansible.com", - "port": 5080, - "target": "mailhost.ansible.com", - "priority": 10, - "weight": 10, - "extattrs": {'Site': {'value': 'test'}} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "port": {"ib_req": True}, - "target": {"ib_req": True}, - "priority": {"ib_req": True}, - "weight": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) diff --git a/tests/unit/plugins/modules/net_tools/nios/test_nios_zone.py b/tests/unit/plugins/modules/net_tools/nios/test_nios_zone.py deleted file mode 100644 index a660b50ed0..0000000000 --- a/tests/unit/plugins/modules/net_tools/nios/test_nios_zone.py +++ /dev/null @@ -1,287 +0,0 @@ -# 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 . - -# Make coding more python3-ish - - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible_collections.community.general.plugins.modules.net_tools.nios import nios_zone -from ansible_collections.community.general.plugins.module_utils.net_tools.nios import api -from ansible_collections.community.general.tests.unit.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosZoneModule(TestNiosModule): - - module = nios_zone - - def setUp(self): - super(TestNiosZoneModule, self).setUp() - self.module = MagicMock(name='ansible_collections.community.general.plugins.modules.net_tools.nios.nios_zone.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_zone.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible_collections.community.general.plugins.modules.net_tools.nios.nios_zone.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - - def tearDown(self): - super(TestNiosZoneModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_zone_create(self): - self.module.params = {'provider': None, 'state': 'present', 'fqdn': 'ansible.com', - 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "fqdn": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'fqdn': 'ansible.com'}) - - def test_nios_zone_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'fqdn': 'ansible.com', - 'comment': None, 'extattrs': None} - - ref = "zone/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "fqdn": "ansible.com", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "fqdn": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_zone_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'fqdn': 'ansible.com', - 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "zone/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "fqdn": "ansible.com", - "extattrs": {'Site': {'value': 'test'}} - } - ] - - test_spec = { - "fqdn": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_zone_create_using_grid_primary_secondaries(self): - self.module.params = {'provider': None, 'state': 'present', 'fqdn': 'ansible.com', - 'grid_primary': [{"name": "gridprimary.grid.com"}], - 'grid_secondaries': [{"name": "gridsecondary1.grid.com"}, - {"name": "gridsecondary2.grid.com"}], - 'restart_if_needed': True, - 'comment': None, 'extattrs': None} - - test_object = None - grid_spec = dict( - name=dict(required=True), - ) - test_spec = { - "fqdn": {"ib_req": True}, - "grid_primary": {}, - "grid_secondaries": {}, - "restart_if_needed": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'fqdn': 'ansible.com', - "grid_primary": [{"name": "gridprimary.grid.com"}], - "grid_secondaries": [{"name": "gridsecondary1.grid.com"}, - {"name": "gridsecondary2.grid.com"}], - "restart_if_needed": True - }) - - def test_nios_zone_remove_using_grid_primary_secondaries(self): - self.module.params = {'provider': None, 'state': 'absent', 'fqdn': 'ansible.com', - 'grid_primary': [{"name": "gridprimary.grid.com"}], - 'grid_secondaries': [{"name": "gridsecondary1.grid.com"}, - {"name": "gridsecondary2.grid.com"}], - 'restart_if_needed': True, - 'comment': None, 'extattrs': None} - - ref = "zone/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "fqdn": "ansible.com", - "grid_primary": [{"name": "gridprimary.grid.com"}], - "grid_secondaries": [{"name": "gridsecondary1.grid.com"}, {"name": "gridsecondary2.grid.com"}], - "restart_if_needed": True, - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "fqdn": {"ib_req": True}, - "grid_primary": {}, - "grid_secondaries": {}, - "restart_if_needed": {}, - "comment": {}, - "extattrs": {} - } - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_zone_create_using_name_server_group(self): - self.module.params = {'provider': None, 'state': 'present', 'fqdn': 'ansible.com', - 'ns_group': 'examplensg', 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "fqdn": {"ib_req": True}, - "ns_group": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'fqdn': 'ansible.com', - 'ns_group': 'examplensg'}) - - def test_nios_zone_remove_using_name_server_group(self): - self.module.params = {'provider': None, 'state': 'absent', 'fqdn': 'ansible.com', - 'ns_group': 'examplensg', 'comment': None, 'extattrs': None} - - ref = "zone/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "fqdn": "ansible.com", - "ns_group": "examplensg", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "fqdn": {"ib_req": True}, - "ns_group": {}, - "comment": {}, - "extattrs": {} - } - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_zone_create_using_zone_format(self): - self.module.params = {'provider': None, 'state': 'present', 'fqdn': '10.10.10.in-addr.arpa', - 'zone_format': 'IPV4', 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "fqdn": {"ib_req": True}, - "zone_format": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'fqdn': '10.10.10.in-addr.arpa', - 'zone_format': 'IPV4'}) - - def test_nios_zone_remove_using_using_zone_format(self): - self.module.params = {'provider': None, 'state': 'absent', 'fqdn': 'ansible.com', - 'zone_format': 'IPV4', 'comment': None, 'extattrs': None} - - ref = "zone/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "fqdn": "ansible.com", - "zone_format": "IPV4", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "fqdn": {"ib_req": True}, - "zone_format": {}, - "comment": {}, - "extattrs": {} - } - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref)