f5-appsvcs-extension
f5-appsvcs-extension copied to clipboard
"Include" doesn't work with monitor, pool and virtual (Service_HTTP) declarations.
Environment
- Application Services Version: 3.18.0
- BIG-IP Version: 15.1.0.1
Summary
When I define monitor's configuration properties (send and receive strings) as constant and then include them to the monitor, the AS3 creates monitor with default send/receive strings.
Defining "pool" property for Service_HTTP as a constant and then use "include" causes error.
Defining "loadBalancingMode" property for pool as a constant and then use "include" also causes error.
Steps To Reproduce
Steps to reproduce the behavior:
- Submit the following declaration:
{
"class": "AS3",
"action": "patch",
"patchBody": [{
"op": "add",
"path": "/Tenant1/App-1",
"value": {
"class": "Application",
"template": "generic",
"constants": {
"class": "Constants",
"HTTPMonitorParameters1": {
"send": "GET / HTTP/1.1\r\nHost: freebsd-1\r\nConnection: close\r\n\r\n",
"receive": "200"
}
},
"http-mon1": {
"class": "Monitor",
"monitorType": "http",
"include": "/Tenant1/App-1/constants/HTTPMonitorParameters1",
"adaptive": false
}
}
}
]
}
- Observe the following error response:
No errors in response
Expected Behavior
Send string for http-mon1 is "GET / HTTP/1.1\r\nHost: freebsd-1\r\nConnection: close\r\n\r\n" Receive string for http-mon1 is "200"
Actual Behavior
ltm monitor http /Tenant1/App-1/http-mon1 { recv HTTP/1. send "HEAD / HTTP/1.0\r\n\r\n" }
It looks like your steps to reproduce the bug are missing a step. What is the initial declaration that you are now patching?
Here it is: { "class": "AS3", "action": "deploy", "updateMode": "selective", "syncToGroup": "/Common/Sync-Failover", "persist": true, "declaration": { "class": "ADC", "schemaVersion": "3.0.0", "id": "MG-LAB-Tenant-01", "label": "Step 1", "remark": "Tenant 1 creation", "Common": { "class": "Tenant", "Shared": { "class": "Application", "template": "shared", "BasicHTTP": { "class": "HTTP_Profile", "remark": "Custom HTTP profile", "xForwardedFor": true } } }, "Tenant1": { "class": "Tenant", "Shared": { "class": "Application", "template": "shared", "CustomHTTP": { "class": "HTTP_Profile", "remark": "Custom HTTP profile", "xForwardedFor": true } } } } }
I looked into this some more, and it looks like this feature is only intended to be used with Servce_* classes, and is not supported for the Monitor class. Unfortunately the documentation is unclear about this limitation.
In other words, this is more or less "working as intended". Would you like for me to change this to a feature request to add support for the include property on the Monitor class?
Hi, This property should be available for all objects, not only monitors - there can be many patterns (cipher strings, common properties in many profiles etc) which are common, so to have the definition for such patterns "normalised" is very convenient. I don't agree about your classification "working as intended". Please, correct then the documentation first then. Before it is done, it is a bug.