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

The requested Pool Member already exists in partition <name> when using shareNodes

Open kingb33 opened this issue 1 year ago • 8 comments

Environment

  • Application Services Version: 3.52.0
  • BIG-IP Version: 17.1.1.1

Summary

When creating a pool with a member that is defined in "servers" property, it results in an error message saying that the node exists in the Partition relating to the pool itself.

Steps To Reproduce

Steps to reproduce the behavior:

  1. Submit the following declaration:
{
  "class": "AS3",
  "action": "deploy",
  "persist": true,
  "declaration": {
    "class": "ADC",
    "schemaVersion": "3.52.0",
    "id": "id",
    "label": "WebApp",
    "IAM": {
      "class": "Tenant",
      "Shared": {
        "class": "Application",
        "template":"shared"
      }, 
      "PROD": {
        "class": "Application",
        "myPool": {
          "class": "Pool", 
          "label": "Pool for myVS", 
          "members": [{"servers": [{"address": "1.1.1.1", "name": "localGateway"}], "servicePort": 161, "shareNodes": true}], 
          "remark": "Pool for myVS"
        }, 
      }
    }
  }
}
  1. Submit the declaration a 2nd time
  2. Observe the following error response:
 "The operation for IAM has returned code: 422 with the following message: 01020066:3: The requested Pool Member (/IAM/PROD/myPool /Common/localGateway 161) already exists in partition IAM."}

Expected Behavior

I have several other pools using this methodology using FQDN nodes and it doesn't cause issues. For example, replace the pool with

        "myPool2": {
          "class": "Pool", 
          "members": [{"hostname": "slp-fram-003.stholdco.com", "servicePort": 8443, "addressDiscovery": "fqdn", "autoPopulate": true, "shareNodes": true}]
        }

If using this, you can re-issue the declaration and it will work.

Actual Behavior

You get the error from #3.

Work around

You can avoid this if you are okay with not naming your nodes. For example, if using "serverAddresses"

        "myPool": {
          "class": "Pool", 
          "members": [{"serverAddresses": ["1.1.1.1"], "servicePort": 161, "addressDiscovery": "static", "shareNodes": true}],
        }

kingb33 avatar Aug 15 '24 18:08 kingb33