F5Networks / f5-appsvcs-extension

F5 BIG-IP Application Services 3 Extension
Apache License 2.0
163 stars 52 forks source link

422 error when trying to update load balancing method for a pool member to ratio-member with ratio other than default from round robin #847

Open vidyasagar-m opened 1 week ago

vidyasagar-m commented 1 week ago

Environment

Summary

Getting 422 error when trying to update the load balancing method for a pool member to ratio-member with the ratio other than default from round-robin.

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.50.2/as3-schema-3.50.2-3.json",
    "class": "AS3",
    "declaration": {
        "class": "ADC",
        "controls": {
            "class": "Controls",
            "userAgent": "CIS/v2.17.0 K8S/v1.30.1"
        },
        "id": "urn:uuid:85626792-9ee7-46bb-8fc8-4ba708cfdc1d",
        "label": "CIS Declaration",
        "remark": "Auto-generated by CIS",
        "schemaVersion": "3.50.0",
        "test": {
            "Shared": {
                "class": "Application",
                "crd_10_8_0_4_1344": {
                    "class": "Service_UDP",
                    "persistenceMethods": [],
                    "pool": {
                        "use": "/test/Shared/pytest_svc_udp_1_1344_default"
                    },
                    "profileL4": "basic",
                    "snat": "auto",
                    "virtualAddresses": [
                        "10.8.0.4"
                    ],
                    "virtualPort": 1344
                },
                "pytest_svc_udp_1_1344_default": {
                    "class": "Pool",
                    "members": [
                        {
                            "addressDiscovery": "static",
                            "serverAddresses": [
                                "10.244.2.105"
                            ],
                            "servicePort": 1344
                        }],
                    "minimumMonitors": 1,
                    "monitors": [
                        {
                            "use": "/test/Shared/pytest_svc_udp_1_default_udp_1344"
                        }
                    ]
                },
                "pytest_svc_udp_1_default_udp_1344": {
                    "adaptive": false,
                    "class": "Monitor",
                    "interval": 20,
                    "monitorType": "udp",
                    "receive": "",
                    "send": "",
                    "targetAddress": "",
                    "timeout": 10
                },
                "template": "shared"
            },
            "class": "Tenant",
            "defaultRouteDomain": 0,
            "label": "test"
        }
    }
    }
  2. And then submit the below declaration

    {
    "$schema": "https://raw.githubusercontent.com/F5Networks/f5-appsvcs-extension/master/schema/3.50.2/as3-schema-3.50.2-3.json",
    "class": "AS3",
    "declaration": {
        "class": "ADC",
        "controls": {
            "class": "Controls",
            "userAgent": "CIS/v2.17.0 K8S/v1.30.1"
        },
        "id": "urn:uuid:85626792-9ee7-46bb-8fc8-4ba708cfdc1d",
        "label": "CIS Declaration",
        "remark": "Auto-generated by CIS",
        "schemaVersion": "3.50.0",
        "test": {
            "Shared": {
                "class": "Application",
                "crd_10_8_0_4_1344": {
                    "class": "Service_UDP",
                    "persistenceMethods": [],
                    "pool": {
                        "use": "/test/Shared/pytest_svc_udp_1_1344_default"
                    },
                    "profileL4": "basic",
                    "snat": "auto",
                    "virtualAddresses": [
                        "10.8.0.4"
                    ],
                    "virtualPort": 1344
                },
                "pytest_svc_udp_1_1344_default": {
                    "class": "Pool",
                    "loadBalancingMode": "ratio-member",
                    "members": [
                        {
                            "addressDiscovery": "static",
                            "serverAddresses": [
                                "10.244.2.105"
                            ],
                            "servicePort": 1344,
                            "ratio": 100
                        },
                        {
                            "addressDiscovery": "static",
                            "ratio": 30,
                            "serverAddresses": [
                                "10.244.1.51"
                            ],
                            "servicePort": 1344
                        },
                        {
                            "addressDiscovery": "static",
                            "ratio": 40,
                            "serverAddresses": [
                                "10.244.2.106"
                            ],
                            "servicePort": 1344
                        }
                    ],
                    "minimumMonitors": 1,
                    "monitors": [
                        {
                            "use": "/test/Shared/pytest_svc_udp_1_default_udp_1344"
                        }
                    ]
                },
                "pytest_svc_udp_1_default_udp_1344": {
                    "adaptive": false,
                    "class": "Monitor",
                    "interval": 20,
                    "monitorType": "udp",
                    "receive": "",
                    "send": "",
                    "targetAddress": "",
                    "timeout": 10
                },
                "template": "shared"
            },
            "class": "Tenant",
            "defaultRouteDomain": 0,
            "label": "test"
        }
    }
    }
  3. Observe the following error response:

    {
            "code": 422,
            "message": "declaration failed",
            "response": "01020066:3: The requested Pool Member (/test/Shared/pytest_svc_udp_1_1344_default /test/10.244.1.51 1344) already exists in partition test.",
            "host": "localhost",
            "tenant": "test",
            "runTime": 1826,
            "declarationId": "urn:uuid:85626792-9ee7-46bb-8fc8-4ba708cfdc1d"
    }

Expected Behavior

BIGIP should be configured with the ratio member load balancing method of the pool member from round robin.

Actual Behavior

Getting 422 error when trying to apply the above config.

mdditt2000 commented 1 week ago

@sunitharonan this is Auto-generated by CIS. Can we add this Jira to a upcoming sprint.