F5Networks / f5-appsvcs-extension

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

GSLB_Server class does not delete out of band changes #850

Open megamattzilla opened 2 weeks ago

megamattzilla commented 2 weeks ago

Environment

Summary

GSLB_Server class does not detect or delete out of band changes.

((Semi-Related background information)) I came across this BZ while trying to make an out-of-band change to an AS3 object (GTM server -> Virtual Server) and then make that same change in AS3 schema to bring the current configuration in-line with AS3 desired configuration. AS3 should detect the out-of-band change on the Big-IP, and then see that it matches AS3 desired state so there would be no change. This works as expected for classes such as Data_Group or Policy_WAF. Instead, class GSLB_Server does NOT detect the out of band change and wants to re-create the change that was already performed out of band.

Example of this, is adding a net-new GTM server -> Virtual server OOB, then add the same entity to AS3 state, and then POST AS3. AS3 should come back with no change (like it does for class Data_Group) however its trying to make the same change of adding a GTM server -> Virtual server.

A more practical example of this issue is that class GSLB_Server does not delete out-of-band changes, so I focused this git issue on that, with hopes that it also gives me the behavior I want for handing OOB changes.

Steps To Reproduce

Steps to reproduce the behavior:

  1. Submit the following declaration:

    {
    "class": "ADC",
    "schemaVersion": "3.25.0",
    "id": "GSLB_Sample",
    "Common": {
        "class": "Tenant",
        "Shared": {
            "class": "Application",
            "template": "shared",
            "testDataCenter": {
                "class": "GSLB_Data_Center"
            },
            "testServer": {
                "class": "GSLB_Server",
                "dataCenter": {
                    "use": "testDataCenter"
                },
                "devices": [
                    {
                        "address": "1.2.3.7"
                    }
                ],
                "virtualServers": [
                    {
                        "address": "1.2.3.8",
                        "port": 5050
                    },
                    {
                        "address": "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
                        "port": 5051
                    },
                    {
                        "address": "1.2.3.9",
                        "port": 5050
                    }
                ]
            },
            "testDomain": {
                "class": "GSLB_Domain",
                "domainName": "OTHER.edu",
                "resourceRecordType": "A"
            }
        }
    }
    }
  2. Add a virtual server to the GTM object out of band: tmsh modify gtm server testServer virtual-servers add { 5 { destination 1.2.3.12:5050 } }

  3. Re-POST same AS3 as step # 1

Expected Behavior

AS3 response of 200 Success and the out of band change is removed on Big-IP. AS3 state is enforced.

Actual Behavior

AS3 response of 200 no change. The out-of-band change is still present on Big-IP. AS3 state is not enforced.

mdditt2000 commented 2 weeks ago

@megamattzilla i will repo this tomorrow.

megamattzilla commented 2 weeks ago

Thanks Mark! Let me know if you have any issues with repro or would like me to demo.