f5-appsvcs-extension icon indicating copy to clipboard operation
f5-appsvcs-extension copied to clipboard

"Include" doesn't work with monitor, pool and virtual (Service_HTTP) declarations.

Open mgaliulin opened this issue 4 years ago • 4 comments

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:

  1. 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
                }
            }
        }
    ]
}
  1. 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" }

mgaliulin avatar Apr 16 '20 16:04 mgaliulin

It looks like your steps to reproduce the bug are missing a step. What is the initial declaration that you are now patching?

dstokesf5 avatar Apr 16 '20 16:04 dstokesf5

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 } } } } }

mgaliulin avatar Apr 16 '20 16:04 mgaliulin

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?

dstokesf5 avatar Apr 23 '20 21:04 dstokesf5

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.

mgaliulin avatar Apr 27 '20 09:04 mgaliulin