netscaler/ansible-collection-netscaleradc

[Bug]: gslbservice module breaks idempotency due to "ip" parameter not handled correctly

Closed this issue · 1 comments

Summary

Simple configuration of gslbservice fails when applied a second time because the module does not process the "ip" parameter correctly when it comes to idempotency.

Issue Type

Bug Report

Component Name

gslbservice

Python Version

$ python --version # or python3 --version
3.11

Ansible Version

$ ansible --version
ansible-core 2.16.3

Ansible Configuration

$ ansible-config dump --only-changed

netscaler.adc Collection Version

$ ansible-galaxy collection list netscaler.adc
2.5.0

Target NetScaler Version

> show ns version

Equivalent NetScaler CLI Command

Steps to Reproduce

Consider the following example task:

- delegate_to: localhost
  name: 'Configure gslbservice'
  netscaler.adc.gslbservice:
    ip: 10.33.20.86
    nitro_auth_token: '##682B0F1B2A28F37996FA5103C1024084B20D87F899954AB7901CCDEF3DCDA03BC853F749354EF855BB1A561EAD6F1F0FCC62D7581CBD271ABCDEFRSASD94EE144D4DA931715A5D04D33ECCBDF290F97F8384EB3DBB341C8C2961D4E84EA12F563D1A5D352B6CCFCBA17'
    nitro_protocol: https
    nsip: 10.1.226.122
    port: 65530
    save_config: false
    servicename: GSVC_APP_SCOTTOPO2_AAA
    servicetype: TCP
    sitename: gslb1-T002-GLG1
    validate_certs: false

Because of the IP parameter, this task would fail on subsequent runs, because the module is not able to compare current vs expected value, since the "ip" parameter is not returned on NITRO GET call.

Expected Results

The module should return OK if no changes needed

Actual Results

ASK [netscaler_configure : Configure gslbservice (present) on gslb1 (partition: T002-GLG1)] ********

fatal: [gslb1 -> localhost({{ inventory_hostname }}.{{ country_code }}.{{ domain }})]: FAILED! => changed=false

  diff_list:

  - 'Attribute `ip` differs. Desired: (<class ''str''>) 10.33.20.86. Existing: (<class ''NoneType''>) None'

  loglines:

  - 'DEBUG: Initializing ModuleExecutor for resource gslbservice'

  - 'TRACE: ENTRY: common.get_valid_desired_states() called with (''gslbservice'',), {}'

  - 'TRACE: EXIT: common.get_valid_desired_states() returned {''absent'', ''present'', ''unset''}'

  - 'TRACE: ENTRY: common.get_netscaler_version() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f0345c0a200>,), {}'

  - 'TRACE: ENTRY: common.get_resource() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f0345c0a200>, ''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 0x7f0345c0a200>,), {''resource'': ''nsversion'', ''id'': None, ''args'': {}}'

  - 'TRACE: ENTRY: client.url_builder() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f0345c0a200>, ''nsversion''), {''id'': None, ''args'': {}, ''attrs'': None, ''filter'': None}'

  - 'TRACE: EXIT: client.url_builder() returned https://10.1.226.122/nitro/v1/config/nsversion'

  - 'TRACE: ENTRY: client.send() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f0345c0a200>, ''GET'', ''https://10.1.226.122/nitro/v1/config/nsversion''), {}'

  - 'DEBUG: self={''_module'': <ansible.module_utils.basic.AnsibleModule object at 0x7f0345bbd600>, ''check_mode'': True, ''api_path'': ''nitro/v1/config'', ''_headers'': {''Content-Type'': ''application/json'', ''User-Agent'': ''ansible-ctxadc'', ''Cookie'': ''NITRO_AUTH_TOKEN=********''}}'

  - 'DEBUG: fetch_url()-resonse-info= GET: {''url'': ''https://10.1.226.122/nitro/v1/config/nsversion'', ''status'': 200, ''date'': ''Thu, 29 Feb 2024 15:33:16 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'', ''connection'': ''close'', ''content-type'': ''application/json; charset=utf-8'', ''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 [50.23.nc](http://50.23.nc/), Date: Oct 18 2023, 00:53:13   (64-bit)'', ''mode'': ''1''}})'

  - 'TRACE: EXIT: client.get() returned (200, {''errorcode'': 0, ''message'': ''Done'', ''severity'': ''NONE'', ''nsversion'': {''installedversion'': False, ''version'': ''NetScaler NS13.1: Build [50.23.nc](http://50.23.nc/), Date: Oct 18 2023, 00:53:13   (64-bit)'', ''mode'': ''1''}})'

  - 'TRACE: ENTRY: common.fix_nitro_anomolies() called with (''nsversion'', {}, [{''installedversion'': False, ''version'': ''NetScaler NS13.1: Build [50.23.nc](http://50.23.nc/), Date: Oct 18 2023, 00:53:13   (64-bit)'', ''mode'': ''1''}]), {}'

  - 'TRACE: EXIT: common.fix_nitro_anomolies() returned [{''installedversion'': False, ''version'': ''NetScaler NS13.1: Build [50.23.nc](http://50.23.nc/), Date: Oct 18 2023, 00:53:13   (64-bit)'', ''mode'': ''1''}]'

  - 'TRACE: EXIT: common.get_resource() returned (True, [{''installedversion'': False, ''version'': ''NetScaler NS13.1: Build [50.23.nc](http://50.23.nc/), Date: Oct 18 2023, 00:53:13   (64-bit)'', ''mode'': ''1''}])'

  - 'TRACE: EXIT: common.get_netscaler_version() returned (13.1, 50.23)'

  - 'INFO: NetScaler version: 13.1-50.23'

  - 'DEBUG: All params (including non module-specific params) are: {''ip'': ''10.33.20.86'', ''nitro_auth_token'': ''********'', ''nitro_protocol'': ''https'', ''nsip'': ''10.1.226.122'', ''port'': 65530, ''save_config'': False, ''servicename'': ''GSVC_APP_SCOTTOPO2_AAA'', ''servicetype'': ''TCP'', ''sitename'': ''gslb1-T002-GLG1'', ''validate_certs'': False, ''api_path'': ''nitro/v1/config'', ''state'': ''present'', ''nitro_user'': None, ''nitro_pass'': None, ''appflowlog'': None, ''cip'': None, ''cipheader'': None, ''clttimeout'': None, ''cnameentry'': None, ''comment'': None, ''cookietimeout'': None, ''downstateflush'': None, ''gslbservice_dnsview_binding'': None, ''gslbservice_lbmonitor_binding'': None, ''gslbservicegroup_gslbservicegroupmember_binding'': None, ''gslbservicegroup_lbmonitor_binding'': None, ''hashid'': None, ''healthmonitor'': None, ''ipaddress'': None, ''maxaaausers'': None, ''maxbandwidth'': None, ''maxclient'': None, ''monitor_name_svc'': None,

    ''monthreshold'': None, ''naptrdomainttl'': None, ''naptrorder'': None, ''naptrpreference'': None, ''naptrreplacement'': None, ''naptrservices'': None, ''newname'': None, ''publicip'': None, ''publicport'': None, ''servername'': None, ''sitepersistence'': None, ''siteprefix'': None, ''svrtimeout'': None, ''viewip'': None, ''viewname'': None, ''weight'': None}'

  - 'TRACE: ENTRY: module_executor._filter_resource_module_params() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f0345bbc5b0>,), {}'

  - 'DEBUG: self.module.params: {''ip'': ''10.33.20.86'', ''nitro_auth_token'': ''********'', ''nitro_protocol'': ''https'', ''nsip'': ''10.1.226.122'', ''port'': 65530, ''save_config'': False, ''servicename'': ''GSVC_APP_SCOTTOPO2_AAA'', ''servicetype'': ''TCP'', ''sitename'': ''gslb1-T002-GLG1'', ''validate_certs'': False, ''api_path'': ''nitro/v1/config'', ''state'': ''present'', ''nitro_user'': None, ''nitro_pass'': None, ''appflowlog'': None, ''cip'': None, ''cipheader'': None, ''clttimeout'': None, ''cnameentry'': None, ''comment'': None, ''cookietimeout'': None, ''downstateflush'': None, ''gslbservice_dnsview_binding'': None, ''gslbservice_lbmonitor_binding'': None, ''gslbservicegroup_gslbservicegroupmember_binding'': None, ''gslbservicegroup_lbmonitor_binding'': None, ''hashid'': None, ''healthmonitor'': None, ''ipaddress'': None, ''maxaaausers'': None, ''maxbandwidth'': None, ''maxclient'': None, ''monitor_name_svc'': None, ''monthreshold'': None, ''naptrdomainttl'':

    None, ''naptrorder'': None, ''naptrpreference'': None, ''naptrreplacement'': None, ''naptrservices'': None, ''newname'': None, ''publicip'': None, ''publicport'': None, ''servername'': None, ''sitepersistence'': None, ''siteprefix'': None, ''svrtimeout'': None, ''viewip'': None, ''viewname'': None, ''weight'': None}'

  - 'DEBUG: Desired `gslbservice` module specific params are: {''ip'': ''10.33.20.86'', ''port'': 65530, ''servicename'': ''GSVC_APP_SCOTTOPO2_AAA'', ''servicetype'': ''TCP'', ''sitename'': ''gslb1-T002-GLG1''}'

  - '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 0x7f0345bbc5b0>,), {}'

  - 'DEBUG: Desired `gslbservice` 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 0x7f0345bbc5b0>,), {}'

  - 'TRACE: ENTRY: common.get_resource() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f0345c0a200>,), {''resource_name'': ''gslbservice'', ''resource_id'': ''GSVC_APP_SCOTTOPO2_AAA'', ''resource_module_params'': {''ip'': ''10.33.20.86'', ''port'': 65530, ''servicename'': ''GSVC_APP_SCOTTOPO2_AAA'', ''servicetype'': ''TCP'', ''sitename'': ''gslb1-T002-GLG1''}}'

  - 'TRACE: ENTRY: client.get() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f0345c0a200>,), {''resource'': ''gslbservice'', ''id'': ''GSVC_APP_SCOTTOPO2_AAA'', ''args'': {}}'

  - 'TRACE: ENTRY: client.url_builder() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f0345c0a200>, ''gslbservice''), {''id'': ''GSVC_APP_SCOTTOPO2_AAA'', ''args'': {}, ''attrs'': None, ''filter'': None}'

  - 'TRACE: EXIT: client.url_builder() returned https://10.1.226.122/nitro/v1/config/gslbservice/GSVC_APP_SCOTTOPO2_AAA'

  - 'TRACE: ENTRY: client.send() called with (<ansible_collections.netscaler.adc.plugins.module_utils.client.NitroAPIClient object at 0x7f0345c0a200>, ''GET'', ''https://10.1.226.122/nitro/v1/config/gslbservice/GSVC_APP_SCOTTOPO2_AAA''), {}'

  - 'DEBUG: self={''_module'': <ansible.module_utils.basic.AnsibleModule object at 0x7f0345bbd600>, ''check_mode'': True, ''api_path'': ''nitro/v1/config'', ''_headers'': {''Content-Type'': ''application/json'', ''User-Agent'': ''ansible-ctxadc'', ''Cookie'': ''NITRO_AUTH_TOKEN=********''}}'

  - 'DEBUG: fetch_url()-resonse-info= GET: {''url'': ''https://10.1.226.122/nitro/v1/config/gslbservice/GSVC_APP_SCOTTOPO2_AAA'', ''status'': 200, ''date'': ''Thu, 29 Feb 2024 15:33:16 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'': ''1198'', ''connection'': ''close'', ''content-type'': ''application/json; charset=utf-8'', ''cookies_string'': '''', ''cookies'': {}, ''msg'': ''OK (1198 bytes)''}'

  - 'TRACE: EXIT: client.send() returned (200, {''errorcode'': 0, ''message'': ''Done'', ''severity'': ''NONE'', ''gslbservice'': [{''servicename'': ''GSVC_APP_SCOTTOPO2_AAA'', ''gslb'': ''REMOTE'', ''ipaddress'': ''10.33.20.86'', ''servername'': ''10.33.20.86'', ''servicetype'': ''TCP'', ''port'': 65530, ''publicip'': ''10.33.20.86'', ''publicport'': 65530, ''maxclient'': ''0'', ''maxaaausers'': ''0'', ''sitename'': ''gslb1-T002-GLG1'', ''svrstate'': ''DOWN'', ''svreffgslbstate'': ''DOWN'', ''gslbthreshold'': 0, ''gslbsvcstats'': 0, ''state'': ''ENABLED'', ''monstate'': ''ENABLED'', ''cip'': ''DISABLED'', ''sitepersistence'': ''NONE'', ''clttimeout'': 9000, ''svrtimeout'': 9000, ''totalfailedprobes'': ''9000'', ''maxbandwidth'': ''0'', ''downstateflush'': ''ENABLED'', ''viewip'': ''0.0.0.0'', ''monthreshold'': ''0'', ''failedprobes'': ''0'', ''monstatcode'': 0, ''monstatparam1'': 0, ''monstatparam2'': 0, ''monstatparam3'': 0, ''responsetime'': ''0'', ''monitor_state'':

    ''Unknown'', ''healthmonitor'': ''YES'', ''appflowlog'': ''ENABLED'', ''monitortotalprobes'': ''0'', ''monitortotalfailedprobes'': ''0'', ''monitorcurrentfailedprobes'': ''0'', ''statechangetimesec'': ''Thu Feb 29 15:32:59 2024'', ''tickssincelaststatechange'': ''1683'', ''threshold'': ''BELOW'', ''clmonowner'': ''0'', ''clmonview'': ''0'', ''gslbsvchealth'': 0, ''nodefaultbindings'': ''NO''}]})'

  - 'TRACE: EXIT: client.get() returned (200, {''errorcode'': 0, ''message'': ''Done'', ''severity'': ''NONE'', ''gslbservice'': [{''servicename'': ''GSVC_APP_SCOTTOPO2_AAA'', ''gslb'': ''REMOTE'', ''ipaddress'': ''10.33.20.86'', ''servername'': ''10.33.20.86'', ''servicetype'': ''TCP'', ''port'': 65530, ''publicip'': ''10.33.20.86'', ''publicport'': 65530, ''maxclient'': ''0'', ''maxaaausers'': ''0'', ''sitename'': ''gslb1-T002-GLG1'', ''svrstate'': ''DOWN'', ''svreffgslbstate'': ''DOWN'', ''gslbthreshold'': 0, ''gslbsvcstats'': 0, ''state'': ''ENABLED'', ''monstate'': ''ENABLED'', ''cip'': ''DISABLED'', ''sitepersistence'': ''NONE'', ''clttimeout'': 9000, ''svrtimeout'': 9000, ''totalfailedprobes'': ''9000'', ''maxbandwidth'': ''0'', ''downstateflush'': ''ENABLED'', ''viewip'': ''0.0.0.0'', ''monthreshold'': ''0'', ''failedprobes'': ''0'', ''monstatcode'': 0, ''monstatparam1'': 0, ''monstatparam2'': 0, ''monstatparam3'': 0, ''responsetime'': ''0'', ''monitor_state'':

    ''Unknown'', ''healthmonitor'': ''YES'', ''appflowlog'': ''ENABLED'', ''monitortotalprobes'': ''0'', ''monitortotalfailedprobes'': ''0'', ''monitorcurrentfailedprobes'': ''0'', ''statechangetimesec'': ''Thu Feb 29 15:32:59 2024'', ''tickssincelaststatechange'': ''1683'', ''threshold'': ''BELOW'', ''clmonowner'': ''0'', ''clmonview'': ''0'', ''gslbsvchealth'': 0, ''nodefaultbindings'': ''NO''}]})'

  - 'TRACE: ENTRY: common.fix_nitro_anomolies() called with (''gslbservice'', {''ip'': ''10.33.20.86'', ''port'': 65530, ''servicename'': ''GSVC_APP_SCOTTOPO2_AAA'', ''servicetype'': ''TCP'', ''sitename'': ''gslb1-T002-GLG1''}, [{''servicename'': ''GSVC_APP_SCOTTOPO2_AAA'', ''gslb'': ''REMOTE'', ''ipaddress'': ''10.33.20.86'', ''servername'': ''10.33.20.86'', ''servicetype'': ''TCP'', ''port'': 65530, ''publicip'': ''10.33.20.86'', ''publicport'': 65530, ''maxclient'': ''0'', ''maxaaausers'': ''0'', ''sitename'': ''gslb1-T002-GLG1'', ''svrstate'': ''DOWN'', ''svreffgslbstate'': ''DOWN'', ''gslbthreshold'': 0, ''gslbsvcstats'': 0, ''state'': ''ENABLED'', ''monstate'': ''ENABLED'', ''cip'': ''DISABLED'', ''sitepersistence'': ''NONE'', ''clttimeout'': 9000, ''svrtimeout'': 9000, ''totalfailedprobes'': ''9000'', ''maxbandwidth'': ''0'', ''downstateflush'': ''ENABLED'', ''viewip'': ''0.0.0.0'', ''monthreshold'': ''0'', ''failedprobes'': ''0'',

    ''monstatcode'': 0, ''monstatparam1'': 0, ''monstatparam2'': 0, ''monstatparam3'': 0, ''responsetime'': ''0'', ''monitor_state'': ''Unknown'', ''healthmonitor'': ''YES'', ''appflowlog'': ''ENABLED'', ''monitortotalprobes'': ''0'', ''monitortotalfailedprobes'': ''0'', ''monitorcurrentfailedprobes'': ''0'', ''statechangetimesec'': ''Thu Feb 29 15:32:59 2024'', ''tickssincelaststatechange'': ''1683'', ''threshold'': ''BELOW'', ''clmonowner'': ''0'', ''clmonview'': ''0'', ''gslbsvchealth'': 0, ''nodefaultbindings'': ''NO''}]), {}'

  - 'TRACE: EXIT: common.fix_nitro_anomolies() returned [{''servicename'': ''GSVC_APP_SCOTTOPO2_AAA'', ''gslb'': ''REMOTE'', ''ipaddress'': ''10.33.20.86'', ''servername'': ''10.33.20.86'', ''servicetype'': ''TCP'', ''port'': 65530, ''publicip'': ''10.33.20.86'', ''publicport'': 65530, ''maxclient'': ''0'', ''maxaaausers'': ''0'', ''sitename'': ''gslb1-T002-GLG1'', ''svrstate'': ''DOWN'', ''svreffgslbstate'': ''DOWN'', ''gslbthreshold'': 0, ''gslbsvcstats'': 0, ''state'': ''ENABLED'', ''monstate'': ''ENABLED'', ''cip'': ''DISABLED'', ''sitepersistence'': ''NONE'', ''clttimeout'': 9000, ''svrtimeout'': 9000, ''totalfailedprobes'': ''9000'', ''maxbandwidth'': ''0'', ''downstateflush'': ''ENABLED'', ''viewip'': ''0.0.0.0'', ''monthreshold'': ''0'', ''failedprobes'': ''0'', ''monstatcode'': 0, ''monstatparam1'': 0, ''monstatparam2'': 0, ''monstatparam3'': 0, ''responsetime'': ''0'', ''monitor_state'': ''Unknown'', ''healthmonitor'': ''YES'', ''appflowlog'': ''ENABLED'',

    ''monitortotalprobes'': ''0'', ''monitortotalfailedprobes'': ''0'', ''monitorcurrentfailedprobes'': ''0'', ''statechangetimesec'': ''Thu Feb 29 15:32:59 2024'', ''tickssincelaststatechange'': ''1683'', ''threshold'': ''BELOW'', ''clmonowner'': ''0'', ''clmonview'': ''0'', ''gslbsvchealth'': 0, ''nodefaultbindings'': ''NO''}]'

  - 'TRACE: EXIT: common.get_resource() returned (True, [{''servicename'': ''GSVC_APP_SCOTTOPO2_AAA'', ''gslb'': ''REMOTE'', ''ipaddress'': ''10.33.20.86'', ''servername'': ''10.33.20.86'', ''servicetype'': ''TCP'', ''port'': 65530, ''publicip'': ''10.33.20.86'', ''publicport'': 65530, ''maxclient'': ''0'', ''maxaaausers'': ''0'', ''sitename'': ''gslb1-T002-GLG1'', ''svrstate'': ''DOWN'', ''svreffgslbstate'': ''DOWN'', ''gslbthreshold'': 0, ''gslbsvcstats'': 0, ''state'': ''ENABLED'', ''monstate'': ''ENABLED'', ''cip'': ''DISABLED'', ''sitepersistence'': ''NONE'', ''clttimeout'': 9000, ''svrtimeout'': 9000, ''totalfailedprobes'': ''9000'', ''maxbandwidth'': ''0'', ''downstateflush'': ''ENABLED'', ''viewip'': ''0.0.0.0'', ''monthreshold'': ''0'', ''failedprobes'': ''0'', ''monstatcode'': 0, ''monstatparam1'': 0, ''monstatparam2'': 0, ''monstatparam3'': 0, ''responsetime'': ''0'', ''monitor_state'': ''Unknown'', ''healthmonitor'': ''YES'', ''appflowlog'': ''ENABLED'',

    ''monitortotalprobes'': ''0'', ''monitortotalfailedprobes'': ''0'', ''monitorcurrentfailedprobes'': ''0'', ''statechangetimesec'': ''Thu Feb 29 15:32:59 2024'', ''tickssincelaststatechange'': ''1683'', ''threshold'': ''BELOW'', ''clmonowner'': ''0'', ''clmonview'': ''0'', ''gslbsvchealth'': 0, ''nodefaultbindings'': ''NO''}])'

  - 'TRACE: EXIT: module_executor.get_existing_resource() returned {''servicename'': ''GSVC_APP_SCOTTOPO2_AAA'', ''gslb'': ''REMOTE'', ''ipaddress'': ''10.33.20.86'', ''servername'': ''10.33.20.86'', ''servicetype'': ''TCP'', ''port'': 65530, ''publicip'': ''10.33.20.86'', ''publicport'': 65530, ''maxclient'': ''0'', ''maxaaausers'': ''0'', ''sitename'': ''gslb1-T002-GLG1'', ''svrstate'': ''DOWN'', ''svreffgslbstate'': ''DOWN'', ''gslbthreshold'': 0, ''gslbsvcstats'': 0, ''state'': ''ENABLED'', ''monstate'': ''ENABLED'', ''cip'': ''DISABLED'', ''sitepersistence'': ''NONE'', ''clttimeout'': 9000, ''svrtimeout'': 9000, ''totalfailedprobes'': ''9000'', ''maxbandwidth'': ''0'', ''downstateflush'': ''ENABLED'', ''viewip'': ''0.0.0.0'', ''monthreshold'': ''0'', ''failedprobes'': ''0'', ''monstatcode'': 0, ''monstatparam1'': 0, ''monstatparam2'': 0, ''monstatparam3'': 0, ''responsetime'': ''0'', ''monitor_state'': ''Unknown'', ''healthmonitor'': ''YES'', ''appflowlog'':

    ''ENABLED'', ''monitortotalprobes'': ''0'', ''monitortotalfailedprobes'': ''0'', ''monitorcurrentfailedprobes'': ''0'', ''statechangetimesec'': ''Thu Feb 29 15:32:59 2024'', ''tickssincelaststatechange'': ''1683'', ''threshold'': ''BELOW'', ''clmonowner'': ''0'', ''clmonview'': ''0'', ''gslbsvchealth'': 0, ''nodefaultbindings'': ''NO''}'

  - 'TRACE: ENTRY: module_executor.main() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f0345bbc5b0>,), {}'

  - 'TRACE: ENTRY: module_executor.create_or_update() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f0345bbc5b0>,), {}'

  - 'TRACE: ENTRY: module_executor.update_diff_list() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f0345bbc5b0>,), {''existing'': {''servicename'': ''GSVC_APP_SCOTTOPO2_AAA'', ''gslb'': ''REMOTE'', ''ipaddress'': ''10.33.20.86'', ''servername'': ''10.33.20.86'', ''servicetype'': ''TCP'', ''port'': 65530, ''publicip'': ''10.33.20.86'', ''publicport'': 65530, ''maxclient'': ''0'', ''maxaaausers'': ''0'', ''sitename'': ''gslb1-T002-GLG1'', ''svrstate'': ''DOWN'', ''svreffgslbstate'': ''DOWN'', ''gslbthreshold'': 0, ''gslbsvcstats'': 0, ''state'': ''ENABLED'', ''monstate'': ''ENABLED'', ''cip'': ''DISABLED'', ''sitepersistence'': ''NONE'', ''clttimeout'': 9000, ''svrtimeout'': 9000, ''totalfailedprobes'': ''9000'', ''maxbandwidth'': ''0'', ''downstateflush'': ''ENABLED'', ''viewip'': ''0.0.0.0'', ''monthreshold'': ''0'', ''failedprobes'': ''0'', ''monstatcode'': 0, ''monstatparam1'': 0, ''monstatparam2'':

    0, ''monstatparam3'': 0, ''responsetime'': ''0'', ''monitor_state'': ''Unknown'', ''healthmonitor'': ''YES'', ''appflowlog'': ''ENABLED'', ''monitortotalprobes'': ''0'', ''monitortotalfailedprobes'': ''0'', ''monitorcurrentfailedprobes'': ''0'', ''statechangetimesec'': ''Thu Feb 29 15:32:59 2024'', ''tickssincelaststatechange'': ''1683'', ''threshold'': ''BELOW'', ''clmonowner'': ''0'', ''clmonview'': ''0'', ''gslbsvchealth'': 0, ''nodefaultbindings'': ''NO''}, ''desired'': {''ip'': ''10.33.20.86'', ''port'': 65530, ''servicename'': ''GSVC_APP_SCOTTOPO2_AAA'', ''servicetype'': ''TCP'', ''sitename'': ''gslb1-T002-GLG1''}}'

  - 'TRACE: EXIT: module_executor.update_diff_list() returned None'

  - 'TRACE: ENTRY: module_executor.is_resource_identical() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f0345bbc5b0>,), {}'

  - 'TRACE: ENTRY: module_executor.is_attribute_equal() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f0345bbc5b0>, ''ip'', None, ''10.33.20.86''), {}'

  - 'TRACE: EXIT: module_executor.is_attribute_equal() returned False'

  - 'DEBUG: Attribute `ip` differs. Desired: (<class ''str''>) 10.33.20.86. Existing: (<class ''NoneType''>) None'

  - 'TRACE: ENTRY: module_executor.is_attribute_equal() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f0345bbc5b0>, ''port'', 65530, 65530), {}'

  - 'TRACE: EXIT: module_executor.is_attribute_equal() returned True'

  - 'TRACE: ENTRY: module_executor.is_attribute_equal() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f0345bbc5b0>, ''servicename'', ''GSVC_APP_SCOTTOPO2_AAA'', ''GSVC_APP_SCOTTOPO2_AAA''), {}'

  - 'TRACE: EXIT: module_executor.is_attribute_equal() returned True'

  - 'TRACE: ENTRY: module_executor.is_attribute_equal() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f0345bbc5b0>, ''servicetype'', ''TCP'', ''TCP''), {}'

  - 'TRACE: EXIT: module_executor.is_attribute_equal() returned True'

  - 'TRACE: ENTRY: module_executor.is_attribute_equal() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f0345bbc5b0>, ''sitename'', ''gslb1-T002-GLG1'', ''gslb1-T002-GLG1''), {}'

  - 'TRACE: EXIT: module_executor.is_attribute_equal() returned True'

  - 'TRACE: ENTRY: module_executor.return_failure() called with (<ansible_collections.netscaler.adc.plugins.module_utils.module_executor.ModuleExecutor object at 0x7f0345bbc5b0>, "Cannot change value for the following non-updateable attributes [''ip'']"), {}'

  msg: Cannot change value for the following non-updateable attributes ['ip']

Additioinal Notes

No response

Please install the latest version 2.5.1