netscaler/ansible-collection-netscaleradc

[Bug]: unable to delete lbvserver (netscaler.adc 2.1.0)

pkodzis opened this issue · 2 comments

Summary

unable to delete lbvserver if relateed service was deleted prior and the bidnig definition reference not-existing service:

"ERROR: update_resource FAILED; status_code: 404; Reason:{'errorcode': 344, 'message': 'No Service', 'severity': 'ERROR'}"}

Issue Type

Bug Report

Component Name

lbvserver

Python Version

$  python3 --version
Python 3.9.5

3.9

Ansible Version

$ansible --version
ansible [core 2.15.6]
  config file = None
  configured module search path = ['/home/pkodzis/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/pkodzis/.local/lib/python3.9/site-packages/ansible
  ansible collection location = /home/pkodzis/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/pkodzis/.local/bin/ansible
  python version = 3.9.5 (default, Nov 18 2021, 16:00:48) [GCC 10.3.0] (/usr/bin/python3)
  jinja version = 3.1.2
  libyaml = True

Ansible Configuration

$ ansible-config dump --only-changed
CONFIG_FILE() = None

netscaler.adc Collection Version

$ ansible-galaxy collection list netscaler.adc

# /home/pkodzis/.ansible/collections/ansible_collections
Collection    Version
------------- -------
netscaler.adc 2.1.0

Target NetScaler Version

> show ns version
13.1

Equivalent NetScaler CLI Command

rm lb vserver <name>

Steps to Reproduce

CREATE (it works):

- name: netscaler.adc.service (add/modify/delete)
  delegate_to: localhost
  netscaler.adc.service:
    state: present
    ipaddress: 100.100.100.123
    name: 100.100.100.123-tcp-11451
    port: 11451
    service_lbmonitor_binding:
      binding_members:
        - monitor_name: 100.100.100.123-tcp-11451-monitor-tcp-1
          name: 100.100.100.123-tcp-11451
      mode: desired
    servicetype: TCP
- name: netscaler.adc.lbvserver (add/modify/delete)
  delegate_to: localhost
  netscaler.adc.lbvserver:
    state: present
    connfailover: STATEFUL
    ipv46: 192.168.200.123
    lbvserver_service_binding:
      binding_members:
        - name: cae2cust-foo-test-cert-192.168.200.123-tcp-12345
          servicename: 100.100.100.123-tcp-11451
      mode: desired
    name: cae2cust-foo-test-cert-192.168.200.123-tcp-12345
    netprofile: foo2cust-default-cert-snat-ip
    port: 12345
    rhistate: PASSIVE
    servicetype: TCP

THEN DELETE IT (fails with lbvserver step):

- name: netscaler.adc.service (add/modify/delete)
  delegate_to: localhost
  netscaler.adc.service:
    state: absent
    ipaddress: 100.100.100.123
    name: 100.100.100.123-tcp-11451
    port: 11451
    service_lbmonitor_binding:
      binding_members:
        - monitor_name: 100.100.100.123-tcp-11451-monitor-tcp-1
          name: 100.100.100.123-tcp-11451
      mode: desired
    servicetype: TCP
- name: netscaler.adc.lbvserver (add/modify/delete)
  delegate_to: localhost
  netscaler.adc.lbvserver:
    state: absent
    connfailover: STATEFUL
    ipv46: 192.168.200.123
    lbvserver_service_binding:
      binding_members:
        - name: cae2cust-foo-test-cert-192.168.200.123-tcp-12345
          servicename: 100.100.100.123-tcp-11451
      mode: desired
    name: cae2cust-foo-test-cert-192.168.200.123-tcp-12345
    netprofile: foo2cust-default-cert-snat-ip
    port: 12345
    rhistate: PASSIVE
    servicetype: TCP

Expected Results

lbvserver deleted

Actual Results

CREATE WORKS:

TASK [netscaler.adc.service (add/modify/delete)] ****************************************************************************************************************************************************************
--- before
+++ after
@@ -1 +1,7 @@
-{}
+{

  • "comment": "DO NOT MODIFY MANUALY! ansible source: _0.yml",

  • "ipaddress": "100.100.100.123",

  • "name": "100.100.100.123-tcp-11451",

  • "port": 11451,

  • "servicetype": "TCP"
    +}

  • service_lbmonitor_binding--100.100.100.123-tcp-11451:100.100.100.123-tcp-11451-monitor-tcp-1 ADDED
    changed: [SY4-LB-C3G -> localhost] => (item={'data': {'comment': 'DO NOT MODIFY MANUALY! ansible source: _0.yml', 'ipaddress': '100.100.100.123', 'name': '100.100.100.123-tcp-11451', 'port': 11451, 'service_lbmonitor_binding': {'binding_members': [{'monitor_name': '100.100.100.123-tcp-11451-monitor-tcp-1', 'name': '100.100.100.123-tcp-11451'}], 'mode': 'desired'}, 'servicetype': 'TCP', 'state': 'present', 'nsip': '192.168.254.35', 'nitro_protocol': 'https', 'validate_certs': False, 'nitro_auth_token': '##xxxxx'}, 'destination_device': 'sy4-lb-c3g', 'module': 'netscaler.adc.service'})

TASK [netscaler.adc.lbvserver (add/modify/delete)] **************************************************************************************************************************************************************
--- before
+++ after
@@ -1 +1,10 @@
-{}
+{

  • "comment": "DO NOT MODIFY MANUALY! ansible source: _0.yml",

  • "connfailover": "STATEFUL",

  • "ipv46": "192.168.200.123",

  • "name": "cae2cust-foo-test-cert-192.168.200.123-tcp-12345",

  • "netprofile": "foo2cust-default-cert-snat-ip",

  • "port": 12345,

  • "rhistate": "PASSIVE",

  • "servicetype": "TCP"
    +}

  • lbvserver_service_binding--cae2cust-foo-test-cert-192.168.200.123-tcp-12345:100.100.100.123-tcp-11451 ADDED
    changed: [SY4-LB-C3G -> localhost] => (item={'data': {'comment': 'DO NOT MODIFY MANUALY! ansible source: _0.yml', 'connfailover': 'STATEFUL', 'ipv46': '192.168.200.123', 'lbvserver_service_binding': {'binding_members': [{'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'servicename': '100.100.100.123-tcp-11451'}], 'mode': 'desired'}, 'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'netprofile': 'foo2cust-default-cert-snat-ip', 'port': 12345, 'rhistate': 'PASSIVE', 'servicetype': 'TCP', 'nsip': '192.168.254.35', 'nitro_protocol': 'https', 'validate_certs': False, 'nitro_auth_token': '##xxxxx'}, 'destination_device': 'sy4-lb-c3g', 'module': 'netscaler.adc.lbvserver'})

THEN DELETE FAILS:

TASK [netscaler.adc.service (add/modify/delete)] ****************************************************************************************************************************************************************
--- before
+++ after
@@ -1,7 +1 @@
-{

  • "comment": "DO NOT MODIFY MANUALY! ansible source: _0.yml",
  • "ipaddress": "100.100.100.123",
  • "name": "100.100.100.123-tcp-11451",
  • "port": 11451,
  • "servicetype": "TCP"
    -}
    +{}

changed: [SY4-LB-C3G -> localhost] => (item={'data': {'comment': 'DO NOT MODIFY MANUALY! ansible source: _0.yml.rollback', 'ipaddress': '100.100.100.123', 'name': '100.100.100.123-tcp-11451', 'port': 11451, 'service_lbmonitor_binding': {'binding_members': [{'monitor_name': '100.100.100.123-tcp-11451-monitor-tcp-1', 'name': '100.100.100.123-tcp-11451'}], 'mode': 'desired'}, 'servicetype': 'TCP', 'state': 'absent', 'nsip': '192.168.254.35', 'nitro_protocol': 'https', 'validate_certs': False, 'nitro_auth_token': '##xxxxxxx'}, 'destination_device': 'sy4-lb-c3g', 'module': 'netscaler.adc.service'})

TASK [netscaler.adc.lbvserver (add/modify/delete)] **************************************************************************************************************************************************************
failed: [SY4-LB-C3G -> localhost] (item={'data': {'comment': 'DO NOT MODIFY MANUALY! ansible source: _0.yml.rollback', 'connfailover': 'STATEFUL', 'ipv46': '192.168.200.123', 'lbvserver_service_binding': {'binding_members': [{'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'servicename': '100.100.100.123-tcp-11451'}], 'mode': 'desired'}, 'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'netprofile': 'foo2cust-default-cert-snat-ip', 'port': 12345, 'rhistate': 'PASSIVE', 'servicetype': 'TCP', 'nsip': '192.168.254.35', 'nitro_protocol': 'https', 'validate_certs': False, 'nitro_auth_token': '##xxxxxxx'}, 'destination_device': 'sy4-lb-c3g', 'module': 'netscaler.adc.lbvserver'}) => {"ansible_loop_var": "item", "changed": true, "diff_list": ["Attribute comment differs. Desired: (<class 'str'>) DO NOT MODIFY MANUALY! ansible source: _0.yml.rollback. Existing: (<class 'str'>) DO NOT MODIFY MANUALY! ansible source: _0.yml"], "item": {"data": {"comment": "DO NOT MODIFY MANUALY! ansible source: _0.yml.rollback", "connfailover": "STATEFUL", "ipv46": "192.168.200.123", "lbvserver_service_binding": {"binding_members": [{"name": "cae2cust-foo-test-cert-192.168.200.123-tcp-12345", "servicename": "100.100.100.123-tcp-11451"}], "mode": "desired"}, "name": "cae2cust-foo-test-cert-192.168.200.123-tcp-12345", "netprofile": "foo2cust-default-cert-snat-ip", "nitro_auth_token": "##xxxxxxx", "nitro_protocol": "https", "nsip": "192.168.254.35", "port": 12345, "rhistate": "PASSIVE", "servicetype": "TCP", "validate_certs": false}, "destination_device": "sy4-lb-c3g", "module": "netscaler.adc.lbvserver"}, "loglines": ["DEBUG: Initializing ModuleExecutor for resource lbvserver", "TRACE: ENTRY: get_valid_desired_states() called with ('lbvserver',), {}", "TRACE: EXIT: get_valid_desired_states() returned {'enabled', 'absent', 'disabled', 'present'}", "TRACE: ENTRY: get_netscaler_version() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>,), {}", "TRACE: ENTRY: get_resource() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>, 'nsversion'), {}", "TRACE: ENTRY: get() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>,), {'resource': 'nsversion', 'id': None, 'args': None, 'attrs': None, 'filter': None}", "TRACE: ENTRY: url_builder() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>, 'nsversion'), {'id': None, 'args': None, 'attrs': None, 'filter': None}", "TRACE: EXIT: url_builder() returned https://192.168.254.35/nitro/v1/config/nsversion", "TRACE: ENTRY: send() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>, 'GET', 'https://192.168.254.35/nitro/v1/config/nsversion'), {}", "DEBUG: self={'_module': <ansible.module_utils.basic.AnsibleModule object at 0x7f526e5ec100>, 'check_mode': False, 'api_path': 'nitro/v1/config', '_headers': {'Content-Type': 'application/json', 'User-Agent': 'ansible-ctxadc', 'Cookie': 'NITRO_AUTH_TOKEN='}}", "DEBUG: fetch_url()-resonse-info={'url': 'https://192.168.254.35/nitro/v1/config/nsversion', 'status': 200, 'date': 'Tue, 19 Dec 2023 11:20:20 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: send() returned (200, {'errorcode': 0, 'message': 'Done', 'severity': 'NONE', 'nsversion': {'installedversion': False, 'version': 'NetScaler NS13.1: Build 42.47.nc, Date: Feb 22 2023, 08:08:13 (64-bit)', 'mode': '1'}})", "TRACE: EXIT: get() returned (200, {'errorcode': 0, 'message': 'Done', 'severity': 'NONE', 'nsversion': {'installedversion': False, 'version': 'NetScaler NS13.1: Build 42.47.nc, Date: Feb 22 2023, 08:08:13 (64-bit)', 'mode': '1'}})", "TRACE: EXIT: get_resource() returned [{'installedversion': False, 'version': 'NetScaler NS13.1: Build 42.47.nc, Date: Feb 22 2023, 08:08:13 (64-bit)', 'mode': '1'}]", "TRACE: EXIT: get_netscaler_version() returned (13.1, 42.47)", "INFO: NetScaler version: 13.1-42.47", "DEBUG: All params (including non module-specific params) are: {'comment': 'DO NOT MODIFY MANUALY! ansible source: _0.yml.rollback', 'connfailover': 'STATEFUL', 'ipv46': '192.168.200.123', 'lbvserver_service_binding': {'binding_members': [{'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'servicename': '100.100.100.123-tcp-11451'}], 'mode': 'desired'}, 'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'netprofile': 'foo2cust-default-cert-snat-ip', 'port': 12345, 'rhistate': 'PASSIVE', 'servicetype': 'TCP', 'nsip': '192.168.254.35', 'nitro_protocol': 'https', 'validate_certs': False, 'nitro_auth_token': '', 'save_config': False, 'api_path': 'nitro/v1/config', 'state': 'present', 'nitro_user': None, 'nitro_pass': None, 'adfsproxyprofile': None, 'appflowlog': None, 'authentication': None, 'authenticationhost': None, 'authn401': None, 'authnprofile': None, 'authnvsname': None, 'backuplbmethod': None, 'backuppersistencetimeout': None, 'backupvserver': None, 'bypassaaaa': None, 'cacheable': None, 'clttimeout': None, 'cookiename': None, 'datalength': None, 'dataoffset': None, 'dbprofilename': None, 'dbslb': None, 'disableprimaryondown': None, 'dns64': None, 'dnsprofilename': None, 'downstateflush': None, 'hashlength': None, 'healththreshold': None, 'httpprofilename': None, 'httpsredirecturl': None, 'icmpvsrresponse': None, 'insertvserveripport': None, 'ipmask': None, 'ippattern': None, 'ipset': None, 'l2conn': None, 'lbmethod': None, 'lbprofilename': None, 'lbvserver_analyticsprofile_binding': None, 'lbvserver_appflowpolicy_binding': None, 'lbvserver_appfwpolicy_binding': None, 'lbvserver_appqoepolicy_binding': None, 'lbvserver_auditnslogpolicy_binding': None, 'lbvserver_auditsyslogpolicy_binding': None, 'lbvserver_authorizationpolicy_binding': None, 'lbvserver_botpolicy_binding': None, 'lbvserver_cachepolicy_binding': None, 'lbvserver_cmppolicy_binding': None, 'lbvserver_contentinspectionpolicy_binding': None, 'lbvserver_dnspolicy64_binding': None, 'lbvserver_feopolicy_binding': None, 'lbvserver_lbpolicy_binding': None, 'lbvserver_responderpolicy_binding': None, 'lbvserver_rewritepolicy_binding': None, 'lbvserver_servicegroup_binding': None, 'lbvserver_spilloverpolicy_binding': None, 'lbvserver_tmtrafficpolicy_binding': None, 'lbvserver_transformpolicy_binding': None, 'lbvserver_videooptimizationdetectionpolicy_binding': None, 'lbvserver_videooptimizationpacingpolicy_binding': None, 'listenpolicy': None, 'listenpriority': None, 'm': None, 'macmoderetainvlan': None, 'maxautoscalemembers': None, 'minautoscalemembers': None, 'mssqlserverversion': None, 'mysqlcharacterset': None, 'mysqlprotocolversion': None, 'mysqlservercapabilities': None, 'mysqlserverversion': None, 'netmask': None, 'newname': None, 'newservicerequest': None, 'newservicerequestincrementinterval': None, 'newservicerequestunit': None, 'oracleserverversion': None, 'order': None, 'orderthreshold': None, 'persistavpno': None, 'persistencebackup': None, 'persistencetype': None, 'persistmask': None, 'probeport': None, 'probeprotocol': None, 'probesuccessresponsecode': None, 'processlocal': None, 'push': None, 'pushlabel': None, 'pushmulticlients': None, 'pushvserver': None, 'quicbridgeprofilename': None, 'quicprofilename': None, 'range': None, 'recursionavailable': None, 'redirectfromport': None, 'redirectportrewrite': None, 'redirurl': None, 'redirurlflags': None, 'resrule': None, 'retainconnectionsoncluster': None, 'rtspnat': None, 'rule': None, 'servicename': None, 'sessionless': None, 'skippersistency': None, 'sobackupaction': None, 'somethod': None, 'sopersistence': None, 'sopersistencetimeout': None, 'sothreshold': None, 'tcpprobeport': None, 'tcpprofilename': None, 'td': None, 'timeout': None, 'toggleorder': None, 'tosid': None, 'trofspersistence': None, 'v6netmasklen': None, 'v6persistmasklen': None, 'vipheader': None, 'weight': None}", "TRACE: ENTRY: _filter_resource_module_params() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f526e6737c0>,), {}", "DEBUG: self.module.params: {'comment': 'DO NOT MODIFY MANUALY! ansible source: _0.yml.rollback', 'connfailover': 'STATEFUL', 'ipv46': '192.168.200.123', 'lbvserver_service_binding': {'binding_members': [{'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'servicename': '100.100.100.123-tcp-11451'}], 'mode': 'desired'}, 'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'netprofile': 'foo2cust-default-cert-snat-ip', 'port': 12345, 'rhistate': 'PASSIVE', 'servicetype': 'TCP', 'nsip': '192.168.254.35', 'nitro_protocol': 'https', 'validate_certs': False, 'nitro_auth_token': '', 'save_config': False, 'api_path': 'nitro/v1/config', 'state': 'present', 'nitro_user': None, 'nitro_pass': None, 'adfsproxyprofile': None, 'appflowlog': None, 'authentication': None, 'authenticationhost': None, 'authn401': None, 'authnprofile': None, 'authnvsname': None, 'backuplbmethod': None, 'backuppersistencetimeout': None, 'backupvserver': None, 'bypassaaaa': None, 'cacheable': None, 'clttimeout': None, 'cookiename': None, 'datalength': None, 'dataoffset': None, 'dbprofilename': None, 'dbslb': None, 'disableprimaryondown': None, 'dns64': None, 'dnsprofilename': None, 'downstateflush': None, 'hashlength': None, 'healththreshold': None, 'httpprofilename': None, 'httpsredirecturl': None, 'icmpvsrresponse': None, 'insertvserveripport': None, 'ipmask': None, 'ippattern': None, 'ipset': None, 'l2conn': None, 'lbmethod': None, 'lbprofilename': None, 'lbvserver_analyticsprofile_binding': None, 'lbvserver_appflowpolicy_binding': None, 'lbvserver_appfwpolicy_binding': None, 'lbvserver_appqoepolicy_binding': None, 'lbvserver_auditnslogpolicy_binding': None, 'lbvserver_auditsyslogpolicy_binding': None, 'lbvserver_authorizationpolicy_binding': None, 'lbvserver_botpolicy_binding': None, 'lbvserver_cachepolicy_binding': None, 'lbvserver_cmppolicy_binding': None, 'lbvserver_contentinspectionpolicy_binding': None, 'lbvserver_dnspolicy64_binding': None, 'lbvserver_feopolicy_binding': None, 'lbvserver_lbpolicy_binding': None, 'lbvserver_responderpolicy_binding': None, 'lbvserver_rewritepolicy_binding': None, 'lbvserver_servicegroup_binding': None, 'lbvserver_spilloverpolicy_binding': None, 'lbvserver_tmtrafficpolicy_binding': None, 'lbvserver_transformpolicy_binding': None, 'lbvserver_videooptimizationdetectionpolicy_binding': None, 'lbvserver_videooptimizationpacingpolicy_binding': None, 'listenpolicy': None, 'listenpriority': None, 'm': None, 'macmoderetainvlan': None, 'maxautoscalemembers': None, 'minautoscalemembers': None, 'mssqlserverversion': None, 'mysqlcharacterset': None, 'mysqlprotocolversion': None, 'mysqlservercapabilities': None, 'mysqlserverversion': None, 'netmask': None, 'newname': None, 'newservicerequest': None, 'newservicerequestincrementinterval': None, 'newservicerequestunit': None, 'oracleserverversion': None, 'order': None, 'orderthreshold': None, 'persistavpno': None, 'persistencebackup': None, 'persistencetype': None, 'persistmask': None, 'probeport': None, 'probeprotocol': None, 'probesuccessresponsecode': None, 'processlocal': None, 'push': None, 'pushlabel': None, 'pushmulticlients': None, 'pushvserver': None, 'quicbridgeprofilename': None, 'quicprofilename': None, 'range': None, 'recursionavailable': None, 'redirectfromport': None, 'redirectportrewrite': None, 'redirurl': None, 'redirurlflags': None, 'resrule': None, 'retainconnectionsoncluster': None, 'rtspnat': None, 'rule': None, 'servicename': None, 'sessionless': None, 'skippersistency': None, 'sobackupaction': None, 'somethod': None, 'sopersistence': None, 'sopersistencetimeout': None, 'sothreshold': None, 'tcpprobeport': None, 'tcpprofilename': None, 'td': None, 'timeout': None, 'toggleorder': None, 'tosid': None, 'trofspersistence': None, 'v6netmasklen': None, 'v6persistmasklen': None, 'vipheader': None, 'weight': None}", "DEBUG: k: comment, v: DO NOT MODIFY MANUALY! ansible source: _0.yml.rollback", "DEBUG: k: connfailover, v: STATEFUL", "DEBUG: k: ipv46, v: 192.168.200.123", "DEBUG: k: lbvserver_service_binding, v: {'binding_members': [{'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'servicename': '100.100.100.123-tcp-11451'}], 'mode': 'desired'}", "DEBUG: k: name, v: cae2cust-foo-test-cert-192.168.200.123-tcp-12345", "DEBUG: k: netprofile, v: foo2cust-default-cert-snat-ip", "DEBUG: k: port, v: 12345", "DEBUG: k: rhistate, v: PASSIVE", "DEBUG: k: servicetype, v: TCP", "DEBUG: k: nsip, v: 192.168.254.35", "DEBUG: k: nitro_protocol, v: https", "DEBUG: k: validate_certs, v: False", "DEBUG: k: nitro_auth_token, v: ", "DEBUG: k: save_config, v: False", "DEBUG: k: api_path, v: nitro/v1/config", "DEBUG: k: state, v: present", "DEBUG: k: nitro_user, v: None", "DEBUG: k: nitro_pass, v: None", "DEBUG: k: adfsproxyprofile, v: None", "DEBUG: k: appflowlog, v: None", "DEBUG: k: authentication, v: None", "DEBUG: k: authenticationhost, v: None", "DEBUG: k: authn401, v: None", "DEBUG: k: authnprofile, v: None", "DEBUG: k: authnvsname, v: None", "DEBUG: k: backuplbmethod, v: None", "DEBUG: k: backuppersistencetimeout, v: None", "DEBUG: k: backupvserver, v: None", "DEBUG: k: bypassaaaa, v: None", "DEBUG: k: cacheable, v: None", "DEBUG: k: clttimeout, v: None", "DEBUG: k: cookiename, v: None", "DEBUG: k: datalength, v: None", "DEBUG: k: dataoffset, v: None", "DEBUG: k: dbprofilename, v: None", "DEBUG: k: dbslb, v: None", "DEBUG: k: disableprimaryondown, v: None", "DEBUG: k: dns64, v: None", "DEBUG: k: dnsprofilename, v: None", "DEBUG: k: downstateflush, v: None", "DEBUG: k: hashlength, v: None", "DEBUG: k: healththreshold, v: None", "DEBUG: k: httpprofilename, v: None", "DEBUG: k: httpsredirecturl, v: None", "DEBUG: k: icmpvsrresponse, v: None", "DEBUG: k: insertvserveripport, v: None", "DEBUG: k: ipmask, v: None", "DEBUG: k: ippattern, v: None", "DEBUG: k: ipset, v: None", "DEBUG: k: l2conn, v: None", "DEBUG: k: lbmethod, v: None", "DEBUG: k: lbprofilename, v: None", "DEBUG: k: lbvserver_analyticsprofile_binding, v: None", "DEBUG: k: lbvserver_appflowpolicy_binding, v: None", "DEBUG: k: lbvserver_appfwpolicy_binding, v: None", "DEBUG: k: lbvserver_appqoepolicy_binding, v: None", "DEBUG: k: lbvserver_auditnslogpolicy_binding, v: None", "DEBUG: k: lbvserver_auditsyslogpolicy_binding, v: None", "DEBUG: k: lbvserver_authorizationpolicy_binding, v: None", "DEBUG: k: lbvserver_botpolicy_binding, v: None", "DEBUG: k: lbvserver_cachepolicy_binding, v: None", "DEBUG: k: lbvserver_cmppolicy_binding, v: None", "DEBUG: k: lbvserver_contentinspectionpolicy_binding, v: None", "DEBUG: k: lbvserver_dnspolicy64_binding, v: None", "DEBUG: k: lbvserver_feopolicy_binding, v: None", "DEBUG: k: lbvserver_lbpolicy_binding, v: None", "DEBUG: k: lbvserver_responderpolicy_binding, v: None", "DEBUG: k: lbvserver_rewritepolicy_binding, v: None", "DEBUG: k: lbvserver_servicegroup_binding, v: None", "DEBUG: k: lbvserver_spilloverpolicy_binding, v: None", "DEBUG: k: lbvserver_tmtrafficpolicy_binding, v: None", "DEBUG: k: lbvserver_transformpolicy_binding, v: None", "DEBUG: k: lbvserver_videooptimizationdetectionpolicy_binding, v: None", "DEBUG: k: lbvserver_videooptimizationpacingpolicy_binding, v: None", "DEBUG: k: listenpolicy, v: None", "DEBUG: k: listenpriority, v: None", "DEBUG: k: m, v: None", "DEBUG: k: macmoderetainvlan, v: None", "DEBUG: k: maxautoscalemembers, v: None", "DEBUG: k: minautoscalemembers, v: None", "DEBUG: k: mssqlserverversion, v: None", "DEBUG: k: mysqlcharacterset, v: None", "DEBUG: k: mysqlprotocolversion, v: None", "DEBUG: k: mysqlservercapabilities, v: None", "DEBUG: k: mysqlserverversion, v: None", "DEBUG: k: netmask, v: None", "DEBUG: k: newname, v: None", "DEBUG: k: newservicerequest, v: None", "DEBUG: k: newservicerequestincrementinterval, v: None", "DEBUG: k: newservicerequestunit, v: None", "DEBUG: k: oracleserverversion, v: None", "DEBUG: k: order, v: None", "DEBUG: k: orderthreshold, v: None", "DEBUG: k: persistavpno, v: None", "DEBUG: k: persistencebackup, v: None", "DEBUG: k: persistencetype, v: None", "DEBUG: k: persistmask, v: None", "DEBUG: k: probeport, v: None", "DEBUG: k: probeprotocol, v: None", "DEBUG: k: probesuccessresponsecode, v: None", "DEBUG: k: processlocal, v: None", "DEBUG: k: push, v: None", "DEBUG: k: pushlabel, v: None", "DEBUG: k: pushmulticlients, v: None", "DEBUG: k: pushvserver, v: None", "DEBUG: k: quicbridgeprofilename, v: None", "DEBUG: k: quicprofilename, v: None", "DEBUG: k: range, v: None", "DEBUG: k: recursionavailable, v: None", "DEBUG: k: redirectfromport, v: None", "DEBUG: k: redirectportrewrite, v: None", "DEBUG: k: redirurl, v: None", "DEBUG: k: redirurlflags, v: None", "DEBUG: k: resrule, v: None", "DEBUG: k: retainconnectionsoncluster, v: None", "DEBUG: k: rtspnat, v: None", "DEBUG: k: rule, v: None", "DEBUG: k: servicename, v: None", "DEBUG: k: sessionless, v: None", "DEBUG: k: skippersistency, v: None", "DEBUG: k: sobackupaction, v: None", "DEBUG: k: somethod, v: None", "DEBUG: k: sopersistence, v: None", "DEBUG: k: sopersistencetimeout, v: None", "DEBUG: k: sothreshold, v: None", "DEBUG: k: tcpprobeport, v: None", "DEBUG: k: tcpprofilename, v: None", "DEBUG: k: td, v: None", "DEBUG: k: timeout, v: None", "DEBUG: k: toggleorder, v: None", "DEBUG: k: tosid, v: None", "DEBUG: k: trofspersistence, v: None", "DEBUG: k: v6netmasklen, v: None", "DEBUG: k: v6persistmasklen, v: None", "DEBUG: k: vipheader, v: None", "DEBUG: k: weight, v: None", "DEBUG: Desired lbvserver module specific params are: {'comment': 'DO NOT MODIFY MANUALY! ansible source: _0.yml.rollback', 'connfailover': 'STATEFUL', 'ipv46': '192.168.200.123', 'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'netprofile': 'foo2cust-default-cert-snat-ip', 'port': 12345, 'rhistate': 'PASSIVE', 'servicetype': 'TCP'}", "TRACE: EXIT: _filter_resource_module_params() returned None", "TRACE: ENTRY: _filter_desired_bindings() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f526e6737c0>,), {}", "DEBUG: Desired lbvserver module specific bindings are: ['lbvserver_service_binding']", "TRACE: EXIT: _filter_desired_bindings() returned None", "TRACE: ENTRY: get_existing_resource() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f526e6737c0>,), {}", "TRACE: ENTRY: get_resource() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>,), {'resource_name': 'lbvserver', 'resource_id': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'args': {}, 'filter': {}}", "TRACE: ENTRY: get() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>,), {'resource': 'lbvserver', 'id': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'args': {}, 'attrs': None, 'filter': {}}", "TRACE: ENTRY: url_builder() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>, 'lbvserver'), {'id': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'args': {}, 'attrs': None, 'filter': {}}", "TRACE: EXIT: url_builder() returned https://192.168.254.35/nitro/v1/config/lbvserver/cae2cust-foo-test-cert-192.168.200.123-tcp-12345", "TRACE: ENTRY: send() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>, 'GET', 'https://192.168.254.35/nitro/v1/config/lbvserver/cae2cust-foo-test-cert-192.168.200.123-tcp-12345'), {}", "DEBUG: self={'_module': <ansible.module_utils.basic.AnsibleModule object at 0x7f526e5ec100>, 'check_mode': False, 'api_path': 'nitro/v1/config', '_headers': {'Content-Type': 'application/json', 'User-Agent': 'ansible-ctxadc', 'Cookie': 'NITRO_AUTH_TOKEN='}}", "DEBUG: fetch_url()-resonse-info={'url': 'https://192.168.254.35/nitro/v1/config/lbvserver/cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'status': 200, 'date': 'Tue, 19 Dec 2023 11:20:21 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': '2350', 'content-type': 'application/json; charset=utf-8', 'connection': 'close', 'cookies_string': '', 'cookies': {}, 'msg': 'OK (2350 bytes)'}", "TRACE: EXIT: send() returned (200, {'errorcode': 0, 'message': 'Done', 'severity': 'NONE', 'lbvserver': [{'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'insertvserveripport': 'OFF', 'ipv46': '192.168.200.123', 'ippattern': '0.0.0.0', 'ipmask': '', 'listenpolicy': 'NONE', 'ipmapping': '0.0.0.0', 'port': 12345, 'range': '1', 'servicetype': 'TCP', 'type': 'ADDRESS', 'curstate': 'DOWN', 'effectivestate': 'DOWN', 'status': 1, 'lbrrreason': 0, 'cachetype': 'SERVER', 'authentication': 'OFF', 'authn401': 'OFF', 'dynamicweight': '0', 'priority': '0', 'clttimeout': '9000', 'somethod': 'NONE', 'sopersistence': 'DISABLED', 'sopersistencetimeout': '2', 'healththreshold': '0', 'lbmethod': 'LEASTCONNECTION', 'backuplbmethod': 'ROUNDROBIN', 'dataoffset': '0', 'health': '0', 'datalength': '0', 'ruletype': '0', 'm': 'IP', 'persistencetype': 'NONE', 'timeout': 2, 'persistmask': '255.255.255.255', 'v6persistmasklen': '128', 'persistencebackup': 'NONE', 'backuppersistencetimeout': 2, 'cacheable': 'NO', 'rtspnat': 'OFF', 'sessionless': 'DISABLED', 'trofspersistence': 'ENABLED', 'map': 'OFF', 'connfailover': 'STATEFUL', 'redirectportrewrite': 'DISABLED', 'downstateflush': 'ENABLED', 'disableprimaryondown': 'DISABLED', 'gt2gb': 'DISABLED', 'consolidatedlconn': 'GLOBAL', 'consolidatedlconngbl': 'YES', 'thresholdvalue': 0, 'invoke': False, 'version': 0, 'totalservices': '0', 'activeservices': '0', 'statechangetimesec': 'Tue Dec 19 10:34:02 2023', 'statechangetimeseconds': '1702982042', 'statechangetimemsec': '692', 'tickssincelaststatechange': '277922', 'hits': '0', 'pipolicyhits': '0', 'push': 'DISABLED', 'pushlabel': 'none', 'pushmulticlients': 'NO', 'comment': 'DO NOT MODIFY MANUALY! ansible source: _0.yml', 'policysubtype': '0', 'l2conn': 'OFF', 'appflowlog': 'ENABLED', 'netprofile': 'foo2cust-default-cert-snat-ip', 'isgslb': False, 'icmpvsrresponse': 'PASSIVE', 'rhistate': 'PASSIVE', 'newservicerequestunit': 'PER_SECOND', 'vsvrbindsvcip': '192.168.200.123', 'vsvrbindsvcport': 0, 'skippersistency': 'None', 'td': '0', 'minautoscalemembers': '0', 'maxautoscalemembers': '0', 'macmoderetainvlan': 'DISABLED', 'dns64': 'DISABLED', 'bypassaaaa': 'NO', 'processlocal': 'DISABLED', 'vsvrdynconnsothreshold': '0', 'retainconnectionsoncluster': 'NO', 'nodefaultbindings': 'NO', 'toggleorder': 'ASCENDING', 'orderthreshold': '0', 'currentactiveorder': 'None'}]})", "TRACE: EXIT: get() returned (200, {'errorcode': 0, 'message': 'Done', 'severity': 'NONE', 'lbvserver': [{'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'insertvserveripport': 'OFF', 'ipv46': '192.168.200.123', 'ippattern': '0.0.0.0', 'ipmask': '', 'listenpolicy': 'NONE', 'ipmapping': '0.0.0.0', 'port': 12345, 'range': '1', 'servicetype': 'TCP', 'type': 'ADDRESS', 'curstate': 'DOWN', 'effectivestate': 'DOWN', 'status': 1, 'lbrrreason': 0, 'cachetype': 'SERVER', 'authentication': 'OFF', 'authn401': 'OFF', 'dynamicweight': '0', 'priority': '0', 'clttimeout': '9000', 'somethod': 'NONE', 'sopersistence': 'DISABLED', 'sopersistencetimeout': '2', 'healththreshold': '0', 'lbmethod': 'LEASTCONNECTION', 'backuplbmethod': 'ROUNDROBIN', 'dataoffset': '0', 'health': '0', 'datalength': '0', 'ruletype': '0', 'm': 'IP', 'persistencetype': 'NONE', 'timeout': 2, 'persistmask': '255.255.255.255', 'v6persistmasklen': '128', 'persistencebackup': 'NONE', 'backuppersistencetimeout': 2, 'cacheable': 'NO', 'rtspnat': 'OFF', 'sessionless': 'DISABLED', 'trofspersistence': 'ENABLED', 'map': 'OFF', 'connfailover': 'STATEFUL', 'redirectportrewrite': 'DISABLED', 'downstateflush': 'ENABLED', 'disableprimaryondown': 'DISABLED', 'gt2gb': 'DISABLED', 'consolidatedlconn': 'GLOBAL', 'consolidatedlconngbl': 'YES', 'thresholdvalue': 0, 'invoke': False, 'version': 0, 'totalservices': '0', 'activeservices': '0', 'statechangetimesec': 'Tue Dec 19 10:34:02 2023', 'statechangetimeseconds': '1702982042', 'statechangetimemsec': '692', 'tickssincelaststatechange': '277922', 'hits': '0', 'pipolicyhits': '0', 'push': 'DISABLED', 'pushlabel': 'none', 'pushmulticlients': 'NO', 'comment': 'DO NOT MODIFY MANUALY! ansible source: _0.yml', 'policysubtype': '0', 'l2conn': 'OFF', 'appflowlog': 'ENABLED', 'netprofile': 'foo2cust-default-cert-snat-ip', 'isgslb': False, 'icmpvsrresponse': 'PASSIVE', 'rhistate': 'PASSIVE', 'newservicerequestunit': 'PER_SECOND', 'vsvrbindsvcip': '192.168.200.123', 'vsvrbindsvcport': 0, 'skippersistency': 'None', 'td': '0', 'minautoscalemembers': '0', 'maxautoscalemembers': '0', 'macmoderetainvlan': 'DISABLED', 'dns64': 'DISABLED', 'bypassaaaa': 'NO', 'processlocal': 'DISABLED', 'vsvrdynconnsothreshold': '0', 'retainconnectionsoncluster': 'NO', 'nodefaultbindings': 'NO', 'toggleorder': 'ASCENDING', 'orderthreshold': '0', 'currentactiveorder': 'None'}]})", "TRACE: EXIT: get_resource() returned [{'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'insertvserveripport': 'OFF', 'ipv46': '192.168.200.123', 'ippattern': '0.0.0.0', 'ipmask': '', 'listenpolicy': 'NONE', 'ipmapping': '0.0.0.0', 'port': 12345, 'range': '1', 'servicetype': 'TCP', 'type': 'ADDRESS', 'curstate': 'DOWN', 'effectivestate': 'DOWN', 'status': 1, 'lbrrreason': 0, 'cachetype': 'SERVER', 'authentication': 'OFF', 'authn401': 'OFF', 'dynamicweight': '0', 'priority': '0', 'clttimeout': '9000', 'somethod': 'NONE', 'sopersistence': 'DISABLED', 'sopersistencetimeout': '2', 'healththreshold': '0', 'lbmethod': 'LEASTCONNECTION', 'backuplbmethod': 'ROUNDROBIN', 'dataoffset': '0', 'health': '0', 'datalength': '0', 'ruletype': '0', 'm': 'IP', 'persistencetype': 'NONE', 'timeout': 2, 'persistmask': '255.255.255.255', 'v6persistmasklen': '128', 'persistencebackup': 'NONE', 'backuppersistencetimeout': 2, 'cacheable': 'NO', 'rtspnat': 'OFF', 'sessionless': 'DISABLED', 'trofspersistence': 'ENABLED', 'map': 'OFF', 'connfailover': 'STATEFUL', 'redirectportrewrite': 'DISABLED', 'downstateflush': 'ENABLED', 'disableprimaryondown': 'DISABLED', 'gt2gb': 'DISABLED', 'consolidatedlconn': 'GLOBAL', 'consolidatedlconngbl': 'YES', 'thresholdvalue': 0, 'invoke': False, 'version': 0, 'totalservices': '0', 'activeservices': '0', 'statechangetimesec': 'Tue Dec 19 10:34:02 2023', 'statechangetimeseconds': '1702982042', 'statechangetimemsec': '692', 'tickssincelaststatechange': '277922', 'hits': '0', 'pipolicyhits': '0', 'push': 'DISABLED', 'pushlabel': 'none', 'pushmulticlients': 'NO', 'comment': 'DO NOT MODIFY MANUALY! ansible source: _0.yml', 'policysubtype': '0', 'l2conn': 'OFF', 'appflowlog': 'ENABLED', 'netprofile': 'foo2cust-default-cert-snat-ip', 'isgslb': False, 'icmpvsrresponse': 'PASSIVE', 'rhistate': 'PASSIVE', 'newservicerequestunit': 'PER_SECOND', 'vsvrbindsvcip': '192.168.200.123', 'vsvrbindsvcport': 0, 'skippersistency': 'None', 'td': '0', 'minautoscalemembers': '0', 'maxautoscalemembers': '0', 'macmoderetainvlan': 'DISABLED', 'dns64': 'DISABLED', 'bypassaaaa': 'NO', 'processlocal': 'DISABLED', 'vsvrdynconnsothreshold': '0', 'retainconnectionsoncluster': 'NO', 'nodefaultbindings': 'NO', 'toggleorder': 'ASCENDING', 'orderthreshold': '0', 'currentactiveorder': 'None'}]", "TRACE: EXIT: get_existing_resource() returned {'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'insertvserveripport': 'OFF', 'ipv46': '192.168.200.123', 'ippattern': '0.0.0.0', 'ipmask': '', 'listenpolicy': 'NONE', 'ipmapping': '0.0.0.0', 'port': 12345, 'range': '1', 'servicetype': 'TCP', 'type': 'ADDRESS', 'curstate': 'DOWN', 'effectivestate': 'DOWN', 'status': 1, 'lbrrreason': 0, 'cachetype': 'SERVER', 'authentication': 'OFF', 'authn401': 'OFF', 'dynamicweight': '0', 'priority': '0', 'clttimeout': '9000', 'somethod': 'NONE', 'sopersistence': 'DISABLED', 'sopersistencetimeout': '2', 'healththreshold': '0', 'lbmethod': 'LEASTCONNECTION', 'backuplbmethod': 'ROUNDROBIN', 'dataoffset': '0', 'health': '0', 'datalength': '0', 'ruletype': '0', 'm': 'IP', 'persistencetype': 'NONE', 'timeout': 2, 'persistmask': '255.255.255.255', 'v6persistmasklen': '128', 'persistencebackup': 'NONE', 'backuppersistencetimeout': 2, 'cacheable': 'NO', 'rtspnat': 'OFF', 'sessionless': 'DISABLED', 'trofspersistence': 'ENABLED', 'map': 'OFF', 'connfailover': 'STATEFUL', 'redirectportrewrite': 'DISABLED', 'downstateflush': 'ENABLED', 'disableprimaryondown': 'DISABLED', 'gt2gb': 'DISABLED', 'consolidatedlconn': 'GLOBAL', 'consolidatedlconngbl': 'YES', 'thresholdvalue': 0, 'invoke': False, 'version': 0, 'totalservices': '0', 'activeservices': '0', 'statechangetimesec': 'Tue Dec 19 10:34:02 2023', 'statechangetimeseconds': '1702982042', 'statechangetimemsec': '692', 'tickssincelaststatechange': '277922', 'hits': '0', 'pipolicyhits': '0', 'push': 'DISABLED', 'pushlabel': 'none', 'pushmulticlients': 'NO', 'comment': 'DO NOT MODIFY MANUALY! ansible source: _0.yml', 'policysubtype': '0', 'l2conn': 'OFF', 'appflowlog': 'ENABLED', 'netprofile': 'foo2cust-default-cert-snat-ip', 'isgslb': False, 'icmpvsrresponse': 'PASSIVE', 'rhistate': 'PASSIVE', 'newservicerequestunit': 'PER_SECOND', 'vsvrbindsvcip': '192.168.200.123', 'vsvrbindsvcport': 0, 'skippersistency': 'None', 'td': '0', 'minautoscalemembers': '0', 'maxautoscalemembers': '0', 'macmoderetainvlan': 'DISABLED', 'dns64': 'DISABLED', 'bypassaaaa': 'NO', 'processlocal': 'DISABLED', 'vsvrdynconnsothreshold': '0', 'retainconnectionsoncluster': 'NO', 'nodefaultbindings': 'NO', 'toggleorder': 'ASCENDING', 'orderthreshold': '0', 'currentactiveorder': 'None'}", "TRACE: ENTRY: main() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f526e6737c0>,), {}", "TRACE: ENTRY: create_or_update() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f526e6737c0>,), {}", "TRACE: ENTRY: update_diff_list() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f526e6737c0>,), {'existing': {'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'insertvserveripport': 'OFF', 'ipv46': '192.168.200.123', 'ippattern': '0.0.0.0', 'ipmask': '*', 'listenpolicy': 'NONE', 'ipmapping': '0.0.0.0', 'port': 12345, 'range': '1', 'servicetype': 'TCP', 'type': 'ADDRESS', 'curstate': 'DOWN', 'effectivestate': 'DOWN', 'status': 1, 'lbrrreason': 0, 'cachetype': 'SERVER', 'authentication': 'OFF', 'authn401': 'OFF', 'dynamicweight': '0', 'priority': '0', 'clttimeout': '9000', 'somethod': 'NONE', 'sopersistence': 'DISABLED', 'sopersistencetimeout': '2', 'healththreshold': '0', 'lbmethod': 'LEASTCONNECTION', 'backuplbmethod': 'ROUNDROBIN', 'dataoffset': '0', 'health': '0', 'datalength': '0', 'ruletype': '0', 'm': 'IP', 'persistencetype': 'NONE', 'timeout': 2, 'persistmask': '255.255.255.255', 'v6persistmasklen': '128', 'persistencebackup': 'NONE', 'backuppersistencetimeout': 2, 'cacheable': 'NO', 'rtspnat': 'OFF', 'sessionless': 'DISABLED', 'trofspersistence': 'ENABLED', 'map': 'OFF', 'connfailover': 'STATEFUL', 'redirectportrewrite': 'DISABLED', 'downstateflush': 'ENABLED', 'disableprimaryondown': 'DISABLED', 'gt2gb': 'DISABLED', 'consolidatedlconn': 'GLOBAL', 'consolidatedlconngbl': 'YES', 'thresholdvalue': 0, 'invoke': False, 'version': 0, 'totalservices': '0', 'activeservices': '0', 'statechangetimesec': 'Tue Dec 19 10:34:02 2023', 'statechangetimeseconds': '1702982042', 'statechangetimemsec': '692', 'tickssincelaststatechange': '277922', 'hits': '0', 'pipolicyhits': '0', 'push': 'DISABLED', 'pushlabel': 'none', 'pushmulticlients': 'NO', 'comment': 'DO NOT MODIFY MANUALY! ansible source: _0.yml', 'policysubtype': '0', 'l2conn': 'OFF', 'appflowlog': 'ENABLED', 'netprofile': 'foo2cust-default-cert-snat-ip', 'isgslb': False, 'icmpvsrresponse': 'PASSIVE', 'rhistate': 'PASSIVE', 'newservicerequestunit': 'PER_SECOND', 'vsvrbindsvcip': '192.168.200.123', 'vsvrbindsvcport': 0, 'skippersistency': 'None', 'td': '0', 'minautoscalemembers': '0', 'maxautoscalemembers': '0', 'macmoderetainvlan': 'DISABLED', 'dns64': 'DISABLED', 'bypassaaaa': 'NO', 'processlocal': 'DISABLED', 'vsvrdynconnsothreshold': '0', 'retainconnectionsoncluster': 'NO', 'nodefaultbindings': 'NO', 'toggleorder': 'ASCENDING', 'orderthreshold': '0', 'currentactiveorder': 'None'}, 'desired': {'comment': 'DO NOT MODIFY MANUALY! ansible source: _0.yml.rollback', 'connfailover': 'STATEFUL', 'ipv46': '192.168.200.123', 'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'netprofile': 'foo2cust-default-cert-snat-ip', 'port': 12345, 'rhistate': 'PASSIVE', 'servicetype': 'TCP'}}", "TRACE: EXIT: update_diff_list() returned None", "TRACE: ENTRY: is_resource_identical() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f526e6737c0>,), {}", "TRACE: ENTRY: is_attribute_equal() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f526e6737c0>, 'comment', 'DO NOT MODIFY MANUALY! ansible source: _0.yml', 'DO NOT MODIFY MANUALY! ansible source: _0.yml.rollback'), {}", "TRACE: EXIT: is_attribute_equal() returned False", "DEBUG: Attribute comment differs. Desired: (<class 'str'>) DO NOT MODIFY MANUALY! ansible source: _0.yml.rollback. Existing: (<class 'str'>) DO NOT MODIFY MANUALY! ansible source: _0.yml", "TRACE: ENTRY: is_attribute_equal() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f526e6737c0>, 'connfailover', 'STATEFUL', 'STATEFUL'), {}", "TRACE: EXIT: is_attribute_equal() returned True", "TRACE: ENTRY: is_attribute_equal() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f526e6737c0>, 'ipv46', '192.168.200.123', '192.168.200.123'), {}", "TRACE: EXIT: is_attribute_equal() returned True", "TRACE: ENTRY: is_attribute_equal() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f526e6737c0>, 'name', 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345'), {}", "TRACE: EXIT: is_attribute_equal() returned True", "TRACE: ENTRY: is_attribute_equal() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f526e6737c0>, 'netprofile', 'foo2cust-default-cert-snat-ip', 'foo2cust-default-cert-snat-ip'), {}", "TRACE: EXIT: is_attribute_equal() returned True", "TRACE: ENTRY: is_attribute_equal() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f526e6737c0>, 'port', 12345, 12345), {}", "TRACE: EXIT: is_attribute_equal() returned True", "TRACE: ENTRY: is_attribute_equal() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f526e6737c0>, 'rhistate', 'PASSIVE', 'PASSIVE'), {}", "TRACE: EXIT: is_attribute_equal() returned True", "TRACE: ENTRY: is_attribute_equal() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f526e6737c0>, 'servicetype', 'TCP', 'TCP'), {}", "TRACE: EXIT: is_attribute_equal() returned True", "TRACE: EXIT: is_resource_identical() returned False", "INFO: Resource lbvserver:cae2cust-foo-test-cert-192.168.200.123-tcp-12345 exists. Will be UPDATED.", "TRACE: ENTRY: update_resource() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>, 'lbvserver', {'comment': 'DO NOT MODIFY MANUALY! ansible source: _0.yml.rollback', 'connfailover': 'STATEFUL', 'ipv46': '192.168.200.123', 'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'netprofile': 'foo2cust-default-cert-snat-ip', 'port': 12345, 'rhistate': 'PASSIVE', 'servicetype': 'TCP'}), {}", "TRACE: ENTRY: _check_update_resource_params() called with ('lbvserver', {'comment': 'DO NOT MODIFY MANUALY! ansible source: _0.yml.rollback', 'connfailover': 'STATEFUL', 'ipv46': '192.168.200.123', 'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'netprofile': 'foo2cust-default-cert-snat-ip', 'port': 12345, 'rhistate': 'PASSIVE', 'servicetype': 'TCP'}), {}", "WARNING: Key port is not allowed for the resource lbvserver for the UPDATE operation. Skipping the key for the operation", "WARNING: Key servicetype is not allowed for the resource lbvserver for the UPDATE operation. Skipping the key for the operation", "TRACE: EXIT: _check_update_resource_params() returned (True, None, {'comment': 'DO NOT MODIFY MANUALY! ansible source: _0.yml.rollback', 'connfailover': 'STATEFUL', 'ipv46': '192.168.200.123', 'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'netprofile': 'foo2cust-default-cert-snat-ip', 'rhistate': 'PASSIVE'})", "TRACE: ENTRY: put() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>,), {'put_data': {'lbvserver': {'comment': 'DO NOT MODIFY MANUALY! ansible source: _0.yml.rollback', 'connfailover': 'STATEFUL', 'ipv46': '192.168.200.123', 'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'netprofile': 'foo2cust-default-cert-snat-ip', 'rhistate': 'PASSIVE'}}, 'resource': 'lbvserver'}", "TRACE: ENTRY: url_builder() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>, 'lbvserver'), {'id': None}", "TRACE: EXIT: url_builder() returned https://192.168.254.35/nitro/v1/config/lbvserver", "TRACE: ENTRY: send() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>, 'PUT', 'https://192.168.254.35/nitro/v1/config/lbvserver', '{"lbvserver": {"comment": "DO NOT MODIFY MANUALY! ansible source: _0.yml.rollback", "connfailover": "STATEFUL", "ipv46": "192.168.200.123", "name": "cae2cust-foo-test-cert-192.168.200.123-tcp-12345", "netprofile": "foo2cust-default-cert-snat-ip", "rhistate": "PASSIVE"}}'), {}", "DEBUG: self={'_module': <ansible.module_utils.basic.AnsibleModule object at 0x7f526e5ec100>, 'check_mode': False, 'api_path': 'nitro/v1/config', '_headers': {'Content-Type': 'application/json', 'User-Agent': 'ansible-ctxadc', 'Cookie': 'NITRO_AUTH_TOKEN='}}", "DEBUG: fetch_url()-resonse-info={'url': 'https://192.168.254.35/nitro/v1/config/lbvserver', 'status': 200, 'date': 'Tue, 19 Dec 2023 11:20:24 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': '57', 'content-type': 'application/json; charset=utf-8', 'connection': 'close', 'cookies_string': '', 'cookies': {}, 'msg': 'OK (57 bytes)'}", "TRACE: EXIT: send() returned (200, {'errorcode': 0, 'message': 'Done', 'severity': 'NONE'})", "TRACE: EXIT: put() returned (200, {'errorcode': 0, 'message': 'Done', 'severity': 'NONE'})", "TRACE: ENTRY: return_response() called with (), {'status_code': 200, 'response_body': {'errorcode': 0, 'message': 'Done', 'severity': 'NONE'}, 'operation': 'update_resource', 'resource_name': 'lbvserver'}", "DEBUG: update_resource lbvserver SUCCESS", "TRACE: EXIT: return_response() returned (True, {'errorcode': 0, 'message': 'Done', 'severity': 'NONE'})", "TRACE: EXIT: update_resource() returned (True, {'errorcode': 0, 'message': 'Done', 'severity': 'NONE'})", "TRACE: EXIT: create_or_update() returned None", "TRACE: ENTRY: sync_all_bindings() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f526e6737c0>,), {}", "TRACE: ENTRY: sync_single_binding() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f526e6737c0>, 'lbvserver_service_binding'), {}", "INFO: Binding mode is desired", "DEBUG: Desired binding members: [{'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'servicename': '100.100.100.123-tcp-11451'}]", "TRACE: ENTRY: get_bindings() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>,), {'binding_name': 'lbvserver_service_binding', 'binding_id': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345'}", "TRACE: ENTRY: get_resource() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>,), {'resource_name': 'lbvserver_service_binding', 'resource_id': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345'}", "TRACE: ENTRY: get() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>,), {'resource': 'lbvserver_service_binding', 'id': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'args': None, 'attrs': None, 'filter': None}", "TRACE: ENTRY: url_builder() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>, 'lbvserver_service_binding'), {'id': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'args': None, 'attrs': None, 'filter': None}", "TRACE: EXIT: url_builder() returned https://192.168.254.35/nitro/v1/config/lbvserver_service_binding/cae2cust-foo-test-cert-192.168.200.123-tcp-12345", "TRACE: ENTRY: send() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>, 'GET', 'https://192.168.254.35/nitro/v1/config/lbvserver_service_binding/cae2cust-foo-test-cert-192.168.200.123-tcp-12345'), {}", "DEBUG: self={'_module': <ansible.module_utils.basic.AnsibleModule object at 0x7f526e5ec100>, 'check_mode': False, 'api_path': 'nitro/v1/config', '_headers': {'Content-Type': 'application/json', 'User-Agent': 'ansible-ctxadc', 'Cookie': 'NITRO_AUTH_TOKEN='}}", "DEBUG: fetch_url()-resonse-info={'url': 'https://192.168.254.35/nitro/v1/config/lbvserver_service_binding/cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'status': 200, 'date': 'Tue, 19 Dec 2023 11:20:26 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': '57', 'content-type': 'application/json; charset=utf-8', 'connection': 'close', 'cookies_string': '', 'cookies': {}, 'msg': 'OK (57 bytes)'}", "TRACE: EXIT: send() returned (200, {'errorcode': 0, 'message': 'Done', 'severity': 'NONE'})", "TRACE: EXIT: get() returned (200, {'errorcode': 0, 'message': 'Done', 'severity': 'NONE'})", "TRACE: EXIT: get_resource() returned []", "TRACE: EXIT: get_bindings() returned []", "DEBUG: Existing lbvserver_service_binding bindings: []", "DEBUG: to_be_deleted_bindings bindings: set()", "DEBUG: to_be_added_bindings bindings: {'100.100.100.123-tcp-11451'}", "DEBUG: to_be_updated_bindings bindings: set()", "TRACE: ENTRY: add_bindings() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f526e6737c0>,), {'binding_name': 'lbvserver_service_binding', 'bindprimary_key': 'servicename', 'to_be_added_bindings': {'100.100.100.123-tcp-11451'}, 'desired_bindings': [{'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'servicename': '100.100.100.123-tcp-11451'}]}", "TRACE: ENTRY: bind_resource() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>,), {'binding_name': 'lbvserver_service_binding', 'binding_module_params': {'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'servicename': '100.100.100.123-tcp-11451'}}", "TRACE: ENTRY: update_resource() called with (), {'client': <ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>, 'resource_name': 'lbvserver_service_binding', 'resource_module_params': {'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'servicename': '100.100.100.123-tcp-11451'}}", "TRACE: ENTRY: _check_update_resource_params() called with ('lbvserver_service_binding', {'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'servicename': '100.100.100.123-tcp-11451'}), {}", "TRACE: EXIT: _check_update_resource_params() returned (True, None, {'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'servicename': '100.100.100.123-tcp-11451'})", "TRACE: ENTRY: put() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>,), {'put_data': {'lbvserver_service_binding': {'name': 'cae2cust-foo-test-cert-192.168.200.123-tcp-12345', 'servicename': '100.100.100.123-tcp-11451'}}, 'resource': 'lbvserver_service_binding'}", "TRACE: ENTRY: url_builder() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>, 'lbvserver_service_binding'), {'id': None}", "TRACE: EXIT: url_builder() returned https://192.168.254.35/nitro/v1/config/lbvserver_service_binding", "TRACE: ENTRY: send() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f526d58f730>, 'PUT', 'https://192.168.254.35/nitro/v1/config/lbvserver_service_binding', '{"lbvserver_service_binding": {"name": "cae2cust-foo-test-cert-192.168.200.123-tcp-12345", "servicename": "100.100.100.123-tcp-11451"}}'), {}", "DEBUG: self={'_module': <ansible.module_utils.basic.AnsibleModule object at 0x7f526e5ec100>, 'check_mode': False, 'api_path': 'nitro/v1/config', '_headers': {'Content-Type': 'application/json', 'User-Agent': 'ansible-ctxadc', 'Cookie': 'NITRO_AUTH_TOKEN='}}", "DEBUG: fetch_url()-resonse-info={'url': 'https://192.168.254.35/nitro/v1/config/lbvserver_service_binding', 'status': 404, 'date': 'Tue, 19 Dec 2023 11:20:28 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': '66', 'content-type': 'application/json; charset=utf-8', 'connection': 'close', 'msg': 'HTTP Error 404: Not Found', 'body': b'{ "errorcode": 344, "message": "No Service", "severity": "ERROR" }'}", "TRACE: EXIT: send() returned (404, {'errorcode': 344, 'message': 'No Service', 'severity': 'ERROR'})", "TRACE: EXIT: put() returned (404, {'errorcode': 344, 'message': 'No Service', 'severity': 'ERROR'})", "TRACE: ENTRY: return_response() called with (), {'status_code': 404, 'response_body': {'errorcode': 344, 'message': 'No Service', 'severity': 'ERROR'}, 'operation': 'update_resource', 'resource_name': 'lbvserver_service_binding'}", "ERROR: update_resource FAILED; status_code: 404; Reason:{'errorcode': 344, 'message': 'No Service', 'severity': 'ERROR'}", "TRACE: EXIT: return_response() returned (False, "ERROR: update_resource FAILED; status_code: 404; Reason:{'errorcode': 344, 'message': 'No Service', 'severity': 'ERROR'}")", "TRACE: EXIT: update_resource() returned (False, "ERROR: update_resource FAILED; status_code: 404; Reason:{'errorcode': 344, 'message': 'No Service', 'severity': 'ERROR'}")", "TRACE: EXIT: bind_resource() returned (False, "ERROR: update_resource FAILED; status_code: 404; Reason:{'errorcode': 344, 'message': 'No Service', 'severity': 'ERROR'}")", "TRACE: EXIT: add_bindings() returned (False, "ERROR: update_resource FAILED; status_code: 404; Reason:{'errorcode': 344, 'message': 'No Service', 'severity': 'ERROR'}")", "TRACE: ENTRY: return_failure() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f526e6737c0>, "ERROR: update_resource FAILED; status_code: 404; Reason:{'errorcode': 344, 'message': 'No Service', 'severity': 'ERROR'}"), {}"], "msg": "ERROR: update_resource FAILED; status_code: 404; Reason:{'errorcode': 344, 'message': 'No Service', 'severity': 'ERROR'}"}

Additioinal Notes

No response

BTW, important: only lbvservers with not-existing "service" refrence in bindings seem to be affected. I just tested and I had no issues to delete lbvserver with not-existing "servicegroup" reference in binging. This worked:

  • name: netscaler.adc.servicegroup (add/modify/delete)
    delegate_to: localhost
    netscaler.adc.servicegroup:
    autoscale: DNS
    servicegroup_servicegroupmember_binding:
    binding_members:
    - port: 443
    servername: test.ap-southeast-1.foo.com
    servicegroupname: cae2cust-jp-test-cert-192.168.200.123-tcp-23456-1
    mode: desired
    servicegroupname: cae2cust-jp-test-cert-192.168.200.123-tcp-23456-1
    servicetype: TCP
    state: absent
  • name: netscaler.adc.lbvserver (add/modify/delete)
    delegate_to: localhost
    netscaler.adc.lbvserver:
    connfailover: STATEFUL
    ipv46: 192.168.200.123
    lbvserver_servicegroup_binding:
    binding_members:
    - name: cae2cust-jp-test-cert-192.168.200.123-tcp-23456
    servicename: cae2cust-jp-test-cert-192.168.200.123-tcp-23456-1
    mode: desired
    name: cae2cust-jp-test-cert-192.168.200.123-tcp-23456
    netprofile: foo2cust-default-cert-snat-ip
    port: 23456
    rhistate: PASSIVE
    servicetype: TCP
    state: absent

I must have been doing something wrong. I can'r reproduce the case on my env anymore and all seem to work as expected.