F5Networks / f5-appsvcs-extension

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

GTM objects are not reflecting under /Common/Shared partition in Big-IP GUI #781

Open Sravanthibollu1993 opened 10 months ago

Sravanthibollu1993 commented 10 months ago

When we deploy gtm objects using AS3, they are not displaying the partition as Common/Shared like LTM objects.

GTM objects created using AS3 with path image

LTM objects created using AS3 image

Please find the information in the below document regarding AS3 creates any GSLB objects in /Common/Shared image https://clouddocs.f5.com/products/extensions/f5-appsvcs-extension/latest/declarations/gslb.html#using-gslb-features-in-a-declaration -->

Environment

Application Services Version: v3.46.0 BIG-IP Version: 15.1.10

Summary

In our AS3 config we are creating gtm objects under shared partition. After deploying them in Big-IP GUI, we could see they are not getting placed in common/partition as specified in AS3 config. But with LTM objects we are not seeing any issue. they getting placed in Common/Shared as specifed in AS3 config.

Steps To Reproduce

Steps to reproduce the behavior:

  1. Submit the following declaration:
#{
  "$schema": "https://raw.githubusercontent.com/F5Networks/f5-appsvcs-extension/master/schema/3.34.0/as3-schema.json",
  "class": "AS3",
  "action": "deploy",
  "persist": true,
  "declaration": {
    "class": "ADC",
    "schemaVersion": "3.34.0",
    "Common": {
      "class": "Tenant",
      "Shared": {
        "class": "Application",
        "template": "shared",
        "DeviceGroupName1_ltm": {
          "class": "GSLB_Server",
          "dataCenter": {
            "use": "DC1"
          },
          "proberPreferred": "pool",
          "proberPool": {
            "use": "custom_proberpool"
          },
          "devices": [
            {
              "label": "dc1-ltm1-edirect",
              "address": "1.1.1.1"
            },
            {
              "label": "dc1-ltm2-edirect",
              "address": "1.1.1.2"
            }
          ],
          "serverType": "bigip",
          "virtualServerDiscoveryMode": "enabled-no-delete"
        },
        "prober_device01": {
          "class": "GSLB_Server",
          "dataCenter": {
            "use": "DC1"
          },
          "proberPreferred": "pool",
          "proberPool": {
            "use": "custom_proberpool"
          },
          "devices": [
            {
              "label": "dc1-ltm-probe1",
              "address": "3.1.1.1"
            },
            {
              "label": "dc1-ltm-probe2",
              "address": "3.1.1.2"
            }
          ],
          "serverType": "bigip",
          "virtualServerDiscoveryMode": "enabled-no-delete"
        },
        "DC1": {
          "class": "GSLB_Data_Center"
        },
        "custom_proberpool": {
          "class": "GSLB_Prober_Pool",
          "enabled": true,
          "members": [
            {
              "server": {
                "use": "prober_device01"
              },
              "memberOrder": 0
            }
          ],
          "lbMode": "global-availability"
        }
      }
    }
  }
}

2. Observe the following error response:
```json
{
No error
}

Expected Behavior

GSLB server should be created under /Common/shared just like other LTM objects.

Actual Behavior

They are creating under /Common/

thepowercoders commented 10 months ago

I've also noticed this but I think the text in the guide is a little confusing. GSLB datacenters and servers have to be in /Common/Shared in AS3 but this is because everything in AS3 has to be in a partition due to the schema. However, I think certain GSLB stuff HAS to be in /Common as this is a requirement of the underlying tmm resources - referenced here: https://my.f5.com/manage/s/article/K01990709.

mdditt2000 commented 10 months ago

Please reach out to automation_toolchain_pm@f5.com so i can prioritize this request

Sravanthibollu1993 commented 9 months ago

I have dropped an email to automation_toolchain_pm@f5.com on 22 November as asked. Can you please prioritize this issue. Thanks in advance.

dstokesf5 commented 8 months ago

@thepowercoders Has the right idea. Those GSLB items are required to be in /Common/Shared in the AS3 declaration because AS3 is required to but them in the root of the Common partition. This restriction is coming from the gtm module on BIG-IP. Are you encountering any issues with the GSLB objects being created in /Common instead of /Common/Shared on the BIG-IP?

samualblair commented 5 months ago

@thepowercoders Has the right idea. Those GSLB items are required to be in /Common/Shared in the AS3 declaration because AS3 is required to but them in the root of the Common partition. This restriction is coming from the gtm module on BIG-IP. Are you encountering any issues with the GSLB objects being created in /Common instead of /Common/Shared on the BIG-IP?

I'm having issues which I suspect are related to this. When attempting to deploy a declaration that specifics everything: a prober pool, a data center, gtm servers, uses the servers in the prober pool, and finally uses the prober pool in the datacenter. The declaration consistently fails due to the prober pool missing.

As a workaround, if I post without the prober pool first things are created (except the datacenter uses the wrong probing). I can then post again, but with "bigip": "xxx" instead of "use": "xxx" to call the prober pool that already exists.

This workaround breaks the declarative nature of AS3, as I am now posting twice in a given order, and if there are future issues may have to deal with the fact that I posted twice.

I tried many things to determine the issue (initially assuming it was my declaration at fault) but it would seem the problem is related to the prober pools being created in /Common/ instead of /Common/Shared and this seems to prevent the "use": "xxx" from working correctly.

Note: this same issue / behavior confirmed in AS3 versions 3.33 and versions 3.50.2