GTM objects are not reflecting under /Common/Shared partition in Big-IP GUI
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
LTM objects created using AS3
Please find the information in the below document regarding AS3 creates any GSLB objects in /Common/Shared
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:
- 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/
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.
Please reach out to [email protected] so i can prioritize this request
I have dropped an email to [email protected] on 22 November as asked. Can you please prioritize this issue. Thanks in advance.
@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?
@thepowercoders Has the right idea. Those GSLB items are required to be in
/Common/Sharedin the AS3 declaration because AS3 is required to but them in the root of the Common partition. This restriction is coming from thegtmmodule on BIG-IP. Are you encountering any issues with the GSLB objects being created in/Commoninstead of/Common/Sharedon 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