F5Networks / f5-appsvcs-extension

F5 BIG-IP Application Services 3 Extension
Apache License 2.0
164 stars 53 forks source link

GSLB_Domain remark statement doesn't update Wide-IP description field #789

Closed GWilczek closed 7 months ago

GWilczek commented 9 months ago

Environment

Summary

"remark" key does not update GSLB_Domain description field as it does for other services like Service_TCP or Service_HTTPS...

Steps To Reproduce

Steps to reproduce the behavior:

  1. Submit the following declaration:
    
    {
    "$schema": "https://raw.githubusercontent.com/F5Networks/f5-appsvcs-extension/master/schema/latest/as3-schema.json",
    "class": "AS3",
    "action": "deploy",
    "declaration": {
    "class": "ADC",
    "schemaVersion": "3.41.0",
    "gslb_wide_ip_01_tenant": {
      "class": "Tenant",
      "gslb_wide_ip_01_app": {
        "class": "Application",
        "gslb_wide_ip_01_local_domain": {
          "class": "GSLB_Domain",
          "remark": "WIDE_IP DESCRIPTION",
          "domainName": "myexample.labs",
          "resourceRecordType": "A",
          "poolLbMode": "ratio",
          "pools": [
            {
              "use": "gslb_wide_ip_01_local_pool"
            }
          ],
          "iRules": [],
          "persistCidrIpv4": 24,
          "persistenceEnabled": false,
          "ttlPersistence": 3600
        },
        "gslb_wide_ip_01_local_pool": {
          "class": "GSLB_Pool",
          "members": [
            {
              "ratio": 10,
              "server": {
                "bigip": "/Common/dc1-bigip1"
              },
              "virtualServer": "/labs_labs_fqdn_sni_tenant/labs_labs_fqdn-sni_443_https_app/serviceMain",
              "enabled": true,
              "dependsOn": "none"
            }
          ],
          "resourceRecordType": "A",
          "enabled": true,
          "lbModePreferred": "topology",
          "lbModeAlternate": "round-robin",
          "lbModeFallback": "return-to-dns",
          "ttl": 30,
          "verifyMemberEnabled": true,
          "maxAnswersReturned": 1
        }
      }
    }
    }
    }

2. Observe the following error response:

No error, response is correct:

```json
{
    "id": "a6c1956d-39a0-465e-916f-b342a6e10c9e",
    "results": [
        {
            "code": 200,
            "message": "success",
            "lineCount": 18,
            "host": "localhost",
            "tenant": "gslb_wide_ip_01_tenant",
            "runTime": 1458
        }
    ],
    "declaration": {
        "gslb_wide_ip_01_tenant": {
            "class": "Tenant",
            "gslb_wide_ip_01_app": {
                "class": "Application",
                "gslb_wide_ip_01_local_domain": {
                    "class": "GSLB_Domain",
                    "remark": "WIDE_IP DESCRIPTION",
                    "domainName": "myexample.labs",
                    "resourceRecordType": "A",
                    "poolLbMode": "ratio",
                    "pools": [
                        {
                            "use": "gslb_wide_ip_01_local_pool"
                        }
                    ],
                    "iRules": [],
                    "persistCidrIpv4": 24,
                    "persistenceEnabled": false,
                    "ttlPersistence": 3600
                },
                "gslb_wide_ip_01_local_pool": {
                    "class": "GSLB_Pool",
                    "members": [
                        {
                            "ratio": 10,
                            "server": {
                                "bigip": "/Common/dc1-bigip1"
                            },
                            "virtualServer": "/labs_labs_fqdn_sni_tenant/labs_labs_fqdn-sni_443_https_app/serviceMain",
                            "enabled": true,
                            "dependsOn": "none"
                        }
                    ],
                    "resourceRecordType": "A",
                    "enabled": true,
                    "lbModePreferred": "topology",
                    "lbModeAlternate": "round-robin",
                    "lbModeFallback": "return-to-dns",
                    "ttl": 30,
                    "verifyMemberEnabled": true,
                    "maxAnswersReturned": 1
                }
            }
        },
        "class": "ADC",
        "schemaVersion": "3.41.0",
        "controls": {
            "class": "Controls",
            "userAgent": "vscode-f5/3.15.1",
            "archiveTimestamp": "2023-12-18T18:58:11.059Z"
        },
        "id": "autogen_bfcc3bbb-e85f-48f5-9bbc-95f232c6c057",
        "updateMode": "selective"
    }
}

Expected Behavior

root@(dc1-gtm01)(cfg-sync In Sync)(Active)(/Common)(tmos)# list gtm wideip a /gslb_wide_ip_01_tenant/gslb_wide_ip_01_app/myexample.labs description
gtm wideip a /gslb_wide_ip_01_tenant/gslb_wide_ip_01_app/myexample.labs {
    description WIDE_IP DESCRIPTION
}

Actual Behavior

root@(dc1-gtm01)(cfg-sync In Sync)(Active)(/Common)(tmos)# list gtm wideip a /gslb_wide_ip_01_tenant/gslb_wide_ip_01_app/myexample.labs description
gtm wideip a /gslb_wide_ip_01_tenant/gslb_wide_ip_01_app/myexample.labs {
    description none
}
RobCupples commented 9 months ago

This has entered our system as AUTOTOOL-4128 but this seems to have already been fixed for 3.49 (to be released in January) as part of AUTOTOOL-4056 adding support for the NAPTR record resource type in the GSLB_Domain class.

sunitharonan commented 7 months ago

This has been fixed in AS3 3.49