ansible-collection-netscaleradc icon indicating copy to clipboard operation
ansible-collection-netscaleradc copied to clipboard

[Bug]: dnsnsrec module is not itempotent

Open greg-redell opened this issue 1 year ago • 0 comments

Summary

When running a dnsnsrec playbook a second time, the module errors out as resources already exist instead of reporting ok.

Issue Type

Bug Report

Component Name

dnsnsrec

Python Version

Python 3.11.9

Ansible Version

ansible [core 2.16.9]
  config file = /runner/ansible.cfg
  configured module search path = ['/runner/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.11/site-packages/ansible
  ansible collection location = /runner/collections
  executable location = /usr/local/bin/ansible
  python version = 3.11.9 (main, Jul 18 2024, 00:00:00) [GCC 11.4.1 20231218 (Red Hat 11.4.1-3)] (/usr/bin/python3.11)
  jinja version = 3.1.4
  libyaml = True

Ansible Configuration

$ ansible-config dump --only-changed
COLLECTIONS_PATHS(/runner/ansible.cfg) = ['/runner/collections']
CONFIG_FILE() = /runner/ansible.cfg
DEFAULT_FILTER_PLUGIN_PATH(/runner/ansible.cfg) = ['/runner/custom_filters']
DEFAULT_ROLES_PATH(/runner/ansible.cfg) = ['/runner/roles']
DEFAULT_STRATEGY_PLUGIN_PATH(/runner/ansible.cfg) = ['/runner/custom_plugins/mitogen-0.3.4/ansible_mitogen/plugins/strategy']
DEFAULT_TIMEOUT(/runner/ansible.cfg) = 40
HOST_KEY_CHECKING(/runner/ansible.cfg) = False
PARAMIKO_LOOK_FOR_KEYS(/runner/ansible.cfg) = False

netscaler.adc Collection Version

$ ansible-galaxy collection list netscaler.adc
Collection    Version
------------- -------
netscaler.adc 2.6.1 

Target NetScaler Version

> show ns version

Equivalent NetScaler CLI Command

show ns version
        NetScaler NS13.1: Build 53.24.nc, Date: Jul  4 2024, 07:57:01   (64-bit)

Steps to Reproduce

---
- name: Test dnsrec module
  hosts: all
  gather_facts: false
  module_defaults:  
    group/netscaler.adc.default_args:
      nsip: "{{ nsip }}"
      validate_certs: false

  tasks:
    - name: Sample Task | dnsnsRec 1
      delegate_to: localhost
      netscaler.adc.dnsnsrec:
        state: present
        domain: example.com
        nameserver: ns1.example.com
        type: ADNS
        ttl: 3600

    - name: Sample Task | dnsnsRec 2
      delegate_to: localhost
      netscaler.adc.dnsnsrec:
        state: present
        domain: example.com
        nameserver: ns2.example.com
        type: ADNS
        ttl: 3600


Expected Results

Module should report that resources exist, The module currrently tries to create the resources that already exist, as shown with --check option.

PLAY [Test dnsrec module] ***********************************************************************************************************************************************************************************************************************************

TASK [Sample Task | dnsnsRec 1] ***************************************************************************************************************************************************************************************************************************** changed: [netscaler-> localhost]

TASK [Sample Task | dnsnsRec 2] ***************************************************************************************************************************************************************************************************************************** changed: [netscaler -> localhost]

PLAY RECAP ************************************************************************************************************************************************************************************************************************************************** netscaler : ok=2 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

Actual Results


bash-5.1$ ansible-playbook -i Netscaler/NetscalerInventory Netscaler/dnsrsrec.yml -l netscaler -vvvv  
/usr/local/lib/python3.11/site-packages/paramiko/pkey.py:100: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from this module in 48.0.0.
  "cipher": algorithms.TripleDES,
/usr/local/lib/python3.11/site-packages/paramiko/transport.py:259: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from this module in 48.0.0.
  "class": algorithms.TripleDES,
ansible-playbook [core 2.16.9]
  config file = /runner/ansible.cfg
  configured module search path = ['/runner/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.11/site-packages/ansible
  ansible collection location = /runner/collections
  executable location = /usr/local/bin/ansible-playbook
  python version = 3.11.9 (main, Jul 18 2024, 00:00:00) [GCC 11.4.1 20231218 (Red Hat 11.4.1-3)] (/usr/bin/python3.11)
  jinja version = 3.1.4
  libyaml = True
Using /runner/ansible.cfg as config file
setting up inventory plugins
Loading collection ansible.builtin from 
host_list declined parsing /runner/Netscaler/NetscalerInventory as it did not pass its verify_file() method
script declined parsing /runner/Netscaler/NetscalerInventory as it did not pass its verify_file() method
auto declined parsing /runner/Netscaler/NetscalerInventory as it did not pass its verify_file() method
Parsed /runner/Netscaler/NetscalerInventory inventory source with ini plugin
Loading collection netscaler.adc from /runner/collections/ansible_collections/netscaler/adc
Loading callback plugin default of type stdout, v2.0 from /usr/local/lib/python3.11/site-packages/ansible/plugins/callback/default.py
Skipping callback 'default', as we already have a stdout callback.
Skipping callback 'minimal', as we already have a stdout callback.
Skipping callback 'oneline', as we already have a stdout callback.

PLAYBOOK: dnsrsrec.yml **************************************************************************************************************************************************************************************************************************************
Positional arguments: Netscaler/dnsrsrec.yml
verbosity: 4
connection: ssh
become_method: sudo
tags: ('all',)
inventory: ('/runner/Netscaler/NetscalerInventory',)
subset: netscaler
forks: 5
1 plays in Netscaler/dnsrsrec.yml

PLAY [Test dnsrec module] ***********************************************************************************************************************************************************************************************************************************

TASK [Sample Task | dnsnsRec 1] *****************************************************************************************************************************************************************************************************************************
task path: /runner/Netscaler/dnsrsrec.yml:11
<localhost> ESTABLISH LOCAL CONNECTION FOR USER: 1178739
<localhost> EXEC /bin/sh -c 'echo ~1178739 && sleep 0'
<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /runner/.ansible/tmp `"&& mkdir "` echo /runner/.ansible/tmp/ansible-tmp-1723221916.2522118-5821-31210353684070 `" && echo ansible-tmp-1723221916.2522118-5821-31210353684070="` echo /runner/.ansible/tmp/ansible-tmp-1723221916.2522118-5821-31210353684070 `" ) && sleep 0'
Using module file /runner/collections/ansible_collections/netscaler/adc/plugins/modules/dnsnsrec.py
<localhost> PUT /runner/.ansible/tmp/ansible-local-58182fiie6gn/tmp88le3atf TO /runner/.ansible/tmp/ansible-tmp-1723221916.2522118-5821-31210353684070/AnsiballZ_dnsnsrec.py
<localhost> EXEC /bin/sh -c 'chmod u+x /runner/.ansible/tmp/ansible-tmp-1723221916.2522118-5821-31210353684070/ /runner/.ansible/tmp/ansible-tmp-1723221916.2522118-5821-31210353684070/AnsiballZ_dnsnsrec.py && sleep 0'
<localhost> EXEC /bin/sh -c '/usr/bin/python3.11 /runner/.ansible/tmp/ansible-tmp-1723221916.2522118-5821-31210353684070/AnsiballZ_dnsnsrec.py && sleep 0'
<localhost> EXEC /bin/sh -c 'rm -f -r /runner/.ansible/tmp/ansible-tmp-1723221916.2522118-5821-31210353684070/ > /dev/null 2>&1 && sleep 0'
fatal: [netscaler -> localhost]: FAILED! => {
    "changed": true,
    "invocation": {
        "module_args": {
            "api_path": "nitro/v1/config",
            "domain": "example.com",
            "ecssubnet": null,
            "managed_netscaler_instance_id": null,
            "managed_netscaler_instance_ip": null,
            "managed_netscaler_instance_name": null,
            "managed_netscaler_instance_password": null,
            "managed_netscaler_instance_username": null,
            "nameserver": "ns1.example.com",
            "netscaler_console_as_proxy_server": false,
            "nitro_auth_token": null,
            "nitro_pass": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
            "nitro_protocol": "https",
            "nitro_user": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
            "nodeid": null,
            "nsip": "10.9.91.16",
            "save_config": false,
            "state": "present",
            "ttl": 3600.0,
            "type": "ADNS",
            "validate_certs": false
        }
    },
    "loglines": [
        "DEBUG: Initializing ModuleExecutor for resource dnsnsrec",
        "TRACE: ENTRY: common.get_valid_desired_states() called with ('dnsnsrec',), {}",
        "TRACE: EXIT: common.get_valid_desired_states() returned {'present', 'absent'}",
        "TRACE: ENTRY: common.get_netscaler_version() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7fafecc93510>,), {}",
        "TRACE: ENTRY: common.get_resource() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7fafecc93510>, 'nsversion'), {}",
        "WARNING: Resource name nsversion not found in NITRO_RESOURCE_MAP to get get_arg_keys",
        "TRACE: ENTRY: client.get() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7fafecc93510>,), {'resource': 'nsversion', 'id': None, 'args': {}}",
        "TRACE: ENTRY: client.url_builder() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7fafecc93510>, 'nsversion'), {'id': None, 'args': {}, 'attrs': None, 'filter': None}",
        "TRACE: EXIT: client.url_builder() returned https://10.9.91.16/nitro/v1/config/nsversion",
        "TRACE: ENTRY: client.send() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7fafecc93510>, 'GET', 'https://10.9.91.16/nitro/v1/config/nsversion'), {}",
        "DEBUG: self={'_module': <ansible.module_utils.basic.AnsibleModule object at 0x7fafecc935d0>, 'check_mode': False, 'api_path': 'nitro/v1/config', 'resource_name': 'dnsnsrec', '_headers': {'Content-Type': 'application/json', 'User-Agent': 'ansible-ctxadc', 'X-NITRO-USER': '********', 'X-NITRO-PASS': \"********\"}}",
        "DEBUG: fetch_url()-resonse-info= GET: {'url': 'https://10.9.91.16/nitro/v1/config/nsversion', 'status': 200, 'date': 'Fri, 09 Aug 2024 16:45:17 GMT', 'server': 'Apache', 'x-frame-options': 'SAMEORIGIN', 'expires': 'Thu, 19 Nov 1981 08:52:00 GMT', 'cache-control': 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0', 'pragma': 'no-cache', 'vary': 'Accept-Encoding', 'feature-policy': \"camera 'none'; microphone 'none'; geolocation 'none'\", 'referrer-policy': 'no-referrer', 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'content-length': '201', 'content-type': 'application/json; charset=utf-8', 'connection': 'close', 'cookies_string': '', 'cookies': {}, 'msg': 'OK (201 bytes)'}",
        "TRACE: EXIT: client.send() returned (200, {'errorcode': 0, 'message': 'Done', 'severity': 'NONE', 'nsversion': {'installedversion': False, 'version': 'NetScaler NS13.1: Build 53.24.nc, Date: Jul  4 2024, 07:57:01   (64-bit)', 'mode': '1'}})",
        "TRACE: EXIT: client.get() returned (200, {'errorcode': 0, 'message': 'Done', 'severity': 'NONE', 'nsversion': {'installedversion': False, 'version': 'NetScaler NS13.1: Build 53.24.nc, Date: Jul  4 2024, 07:57:01   (64-bit)', 'mode': '1'}})",
        "TRACE: ENTRY: common.fix_nitro_anomolies() called with ('nsversion', {}, [{'installedversion': False, 'version': 'NetScaler NS13.1: Build 53.24.nc, Date: Jul  4 2024, 07:57:01   (64-bit)', 'mode': '1'}]), {}",
        "TRACE: EXIT: common.fix_nitro_anomolies() returned [{'installedversion': False, 'version': 'NetScaler NS13.1: Build 53.24.nc, Date: Jul  4 2024, 07:57:01   (64-bit)', 'mode': '1'}]",
        "TRACE: EXIT: common.get_resource() returned (True, [{'installedversion': False, 'version': 'NetScaler NS13.1: Build 53.24.nc, Date: Jul  4 2024, 07:57:01   (64-bit)', 'mode': '1'}])",
        "TRACE: EXIT: common.get_netscaler_version() returned (13.1, 53.24)",
        "INFO: NetScaler version: 13.1-53.24",
        "DEBUG: All params (including non module-specific params) are: {'nsip': '10.9.91.16', 'validate_certs': False, 'state': 'present', 'domain': 'example.com', 'nameserver': 'ns1.example.com', 'type': 'ADNS', 'ttl': 3600.0, 'nitro_user': '********', 'nitro_pass': \"********\", 'nitro_protocol': 'https', 'save_config': False, 'api_path': 'nitro/v1/config', 'netscaler_console_as_proxy_server': False, 'nitro_auth_token': None, 'managed_netscaler_instance_name': None, 'managed_netscaler_instance_ip': None, 'managed_netscaler_instance_id': None, 'managed_netscaler_instance_username': None, 'managed_netscaler_instance_password': None, 'ecssubnet': None, 'nodeid': None}",
        "TRACE: ENTRY: module_executor._filter_resource_module_params() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7fafed2c1010>,), {}",
        "DEBUG: self.module.params: {'nsip': '10.9.91.16', 'validate_certs': False, 'state': 'present', 'domain': 'example.com', 'nameserver': 'ns1.example.com', 'type': 'ADNS', 'ttl': 3600.0, 'nitro_user': '********', 'nitro_pass': \"********\", 'nitro_protocol': 'https', 'save_config': False, 'api_path': 'nitro/v1/config', 'netscaler_console_as_proxy_server': False, 'nitro_auth_token': None, 'managed_netscaler_instance_name': None, 'managed_netscaler_instance_ip': None, 'managed_netscaler_instance_id': None, 'managed_netscaler_instance_username': None, 'managed_netscaler_instance_password': None, 'ecssubnet': None, 'nodeid': None}",
        "DEBUG: Desired `dnsnsrec` module specific params are: {'domain': 'example.com', 'nameserver': 'ns1.example.com', 'type': 'ADNS', 'ttl': 3600.0}",
        "TRACE: EXIT: module_executor._filter_resource_module_params() returned None",
        "TRACE: ENTRY: module_executor._filter_desired_bindings() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7fafed2c1010>,), {}",
        "DEBUG: Desired `dnsnsrec` module specific bindings are: {}",
        "TRACE: EXIT: module_executor._filter_desired_bindings() returned None",
        "TRACE: ENTRY: module_executor.get_existing_resource() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7fafed2c1010>,), {}",
        "TRACE: ENTRY: common.get_resource() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7fafecc93510>,), {'resource_name': 'dnsnsrec', 'resource_id': 'example.com', 'resource_module_params': {'domain': 'example.com', 'nameserver': 'ns1.example.com', 'type': 'ADNS', 'ttl': 3600.0}}",
        "TRACE: ENTRY: client.get() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7fafecc93510>,), {'resource': 'dnsnsrec', 'id': 'example.com', 'args': {'type': 'ADNS'}}",
        "TRACE: ENTRY: client.url_builder() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7fafecc93510>, 'dnsnsrec'), {'id': 'example.com', 'args': {'type': 'ADNS'}, 'attrs': None, 'filter': None}",
        "TRACE: EXIT: client.url_builder() returned https://10.9.91.16/nitro/v1/config/dnsnsrec/example.com?args=type:ADNS",
        "TRACE: ENTRY: client.send() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7fafecc93510>, 'GET', 'https://10.9.91.16/nitro/v1/config/dnsnsrec/example.com?args=type:ADNS'), {}",
        "DEBUG: self={'_module': <ansible.module_utils.basic.AnsibleModule object at 0x7fafecc935d0>, 'check_mode': False, 'api_path': 'nitro/v1/config', 'resource_name': 'dnsnsrec', '_headers': {'Content-Type': 'application/json', 'User-Agent': 'ansible-ctxadc', 'X-NITRO-USER': '********', 'X-NITRO-PASS': \"********\"}}",
        "DEBUG: fetch_url()-resonse-info= GET: {'url': 'https://10.9.91.16/nitro/v1/config/dnsnsrec/example.com?args=type:ADNS', 'status': 400, 'date': 'Fri, 09 Aug 2024 16:45:17 GMT', 'server': 'Apache', 'x-frame-options': 'SAMEORIGIN', 'expires': 'Thu, 19 Nov 1981 08:52:00 GMT', 'cache-control': 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0', 'pragma': 'no-cache', 'vary': 'Accept-Encoding', 'feature-policy': \"camera 'none'; microphone 'none'; geolocation 'none'\", 'referrer-policy': 'no-referrer', 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'content-length': '106', 'connection': 'close', 'content-type': 'application/json; charset=utf-8', 'msg': 'HTTP Error 400: Bad Request', 'body': b'{ \"errorcode\": 1092, \"message\": \"Arguments cannot both be specified [type, domain]\", \"severity\": \"ERROR\" }'}",
        "TRACE: EXIT: client.send() returned (400, {'errorcode': 1092, 'message': 'Arguments cannot both be specified [type, domain]', 'severity': 'ERROR'})",
        "TRACE: EXIT: client.get() returned (400, {'errorcode': 1092, 'message': 'Arguments cannot both be specified [type, domain]', 'severity': 'ERROR'})",
        "TRACE: EXIT: common.get_resource() returned (False, [])",
        "TRACE: EXIT: module_executor.get_existing_resource() returned {}",
        "TRACE: ENTRY: module_executor.main() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7fafed2c1010>,), {}",
        "TRACE: ENTRY: module_executor.create_or_update() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7fafed2c1010>,), {}",
        "TRACE: ENTRY: module_executor.update_diff_list() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7fafed2c1010>,), {'existing': {}, 'desired': {'domain': 'example.com', 'nameserver': 'ns1.example.com', 'type': 'ADNS', 'ttl': 3600.0}}",
        "TRACE: EXIT: module_executor.update_diff_list() returned None",
        "INFO: Resource dnsnsrec:example.com does not exist. Will be CREATED.",
        "TRACE: ENTRY: common.create_resource() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7fafecc93510>, 'dnsnsrec', {'domain': 'example.com', 'nameserver': 'ns1.example.com', 'type': 'ADNS', 'ttl': 3600.0}), {}",
        "TRACE: ENTRY: common._check_create_resource_params() called with ('dnsnsrec', {'domain': 'example.com', 'nameserver': 'ns1.example.com', 'type': 'ADNS', 'ttl': 3600.0}), {}",
        "WARNING: Key `type` is not allowed for the resource `dnsnsrec` for CREATE operation. Skipping the key for the operation",
        "TRACE: EXIT: common._check_create_resource_params() returned (True, None, {'domain': 'example.com', 'nameserver': 'ns1.example.com', 'ttl': 3600.0})",
        "TRACE: ENTRY: client.post() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7fafecc93510>,), {'post_data': {'dnsnsrec': {'domain': 'example.com', 'nameserver': 'ns1.example.com', 'ttl': 3600.0}}, 'resource': 'dnsnsrec', 'action': None}",
        "TRACE: ENTRY: client.url_builder() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7fafecc93510>, 'dnsnsrec'), {'action': None}",
        "TRACE: EXIT: client.url_builder() returned https://10.9.91.16/nitro/v1/config/dnsnsrec",
        "TRACE: ENTRY: client.send() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7fafecc93510>, 'POST', 'https://10.9.91.16/nitro/v1/config/dnsnsrec', '{\"dnsnsrec\": {\"domain\": \"example.com\", \"nameserver\": \"ns1.example.com\", \"ttl\": 3600.0}}'), {}",
        "DEBUG: self={'_module': <ansible.module_utils.basic.AnsibleModule object at 0x7fafecc935d0>, 'check_mode': False, 'api_path': 'nitro/v1/config', 'resource_name': 'dnsnsrec', '_headers': {'Content-Type': 'application/json', 'User-Agent': 'ansible-ctxadc', 'X-NITRO-USER': '********', 'X-NITRO-PASS': \"********\"}}",
        "DEBUG: fetch_url()-resonse-info= POST: {'url': 'https://10.9.91.16/nitro/v1/config/dnsnsrec', 'status': 409, 'date': 'Fri, 09 Aug 2024 16:45:17 GMT', 'server': 'Apache', 'x-frame-options': 'SAMEORIGIN', 'expires': 'Thu, 19 Nov 1981 08:52:00 GMT', 'cache-control': 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0', 'pragma': 'no-cache', 'feature-policy': \"camera 'none'; microphone 'none'; geolocation 'none'\", 'referrer-policy': 'no-referrer', 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'content-length': '78', 'content-type': 'application/json; charset=utf-8', 'connection': 'close', 'msg': 'HTTP Error 409: Conflict', 'body': b'{ \"errorcode\": 304, \"message\": \"Address already in use\", \"severity\": \"ERROR\" }'}",
        "TRACE: EXIT: client.send() returned (409, {'errorcode': 304, 'message': 'Address already in use', 'severity': 'ERROR'})",
        "TRACE: EXIT: client.post() returned (409, {'errorcode': 304, 'message': 'Address already in use', 'severity': 'ERROR'})",
        "TRACE: ENTRY: common.return_response() called with (), {'status_code': 409, 'response_body': {'errorcode': 304, 'message': 'Address already in use', 'severity': 'ERROR'}, 'operation': 'create_resource', 'resource_name': 'dnsnsrec'}",
        "ERROR: create_resource FAILED; status_code: 409; Reason:{'errorcode': 304, 'message': 'Address already in use', 'severity': 'ERROR'}",
        "TRACE: EXIT: common.return_response() returned (False, \"ERROR: create_resource FAILED; status_code: 409; Reason:{'errorcode': 304, 'message': 'Address already in use', 'severity': 'ERROR'}\")",
        "TRACE: EXIT: common.create_resource() returned (False, \"ERROR: create_resource FAILED; status_code: 409; Reason:{'errorcode': 304, 'message': 'Address already in use', 'severity': 'ERROR'}\")",
        "TRACE: ENTRY: module_executor.return_failure() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7fafed2c1010>, \"ERROR: create_resource FAILED; status_code: 409; Reason:{'errorcode': 304, 'message': 'Address already in use', 'severity': 'ERROR'}\"), {}"
    ],
    "msg": "ERROR: create_resource FAILED; status_code: 409; Reason:{'errorcode': 304, 'message': 'Address already in use', 'severity': 'ERROR'}"
}

PLAY RECAP **************************************************************************************************************************************************************************************************************************************************
netscaler            : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0   

Additional Notes

No response

greg-redell avatar Aug 09 '24 16:08 greg-redell