F5Networks / f5-declarative-onboarding

F5 BIG-IP Declarative Onboarding
Apache License 2.0
59 stars 22 forks source link

Invalid subnet error after first onboarding run when using self-IPs with Route Domains #349

Open lynxx131 opened 1 year ago

lynxx131 commented 1 year ago

Environment

Summary

We are onboarding a device that has multiple route domains with a self IP in each route domain, the first declaration works successfully however subsequent declarations fail with the following error:

some subnets are not valid IP addresses: 10.12.221.80%40/24

The impact is we can't make changes to the device's declaration after the first successful onboarding run.

Steps To Reproduce

Steps to reproduce the behavior:

  1. Submit the following declaration which should succeed:

    {
    "async": true,
    "class": "Device",
    "schemaVersion": "1.36.0",
    "Common": {
    "class": "Tenant",
    "external": {
      "class": "VLAN",
      "interfaces": [{"name":"1.1","tagged":false}],
      "tag": 1001
    },
    "internal": {
      "class": "VLAN",
      "interfaces": [{"name":"1.2","tagged":false}],
      "tag": 1002
    },
    "integration": {
      "class": "VLAN",
      "interfaces": [{"name":"1.3","tagged":false}],
      "tag": 1003
    },
    "qa": {
      "class": "VLAN",
      "interfaces": [{"name":"1.4","tagged":false}],
      "tag": 1004
    },
    "uat": {
      "class": "VLAN",
      "interfaces": [{"name":"1.5","tagged":false}],
      "tag": 1005
    },
    "EXTERNAL_IPV4": {
      "address": "10.12.227.80/24",
      "allowService": "none",
      "class": "SelfIp",
      "trafficGroup": "traffic-group-local-only",
      "vlan": "/Common/external"
    },
    "INTEGRATION_IPV4": {
      "address": "10.12.219.80%20/24",
      "allowService": "none",
      "class": "SelfIp",
      "trafficGroup": "traffic-group-local-only",
      "vlan": "/Common/integration"
    },
    "INTERNAL_IPV4": {
      "address": "10.12.225.80/24",
      "allowService": ["tcp:4353"],
      "class": "SelfIp",
      "trafficGroup": "traffic-group-local-only",
      "vlan": "/Common/internal"
    },
    "QA_IPV4": {
      "address": "10.12.220.80%30/24",
      "allowService": "none",
      "class": "SelfIp",
      "trafficGroup": "traffic-group-local-only",
      "vlan": "/Common/qa"
    },
    "UAT_IPV4": {
      "address": "10.12.221.80%40/24",
      "allowService": "none",
      "class": "SelfIp",
      "trafficGroup": "traffic-group-local-only",
      "vlan": "/Common/uat"
    },
    "traffic-group-1": {
      "class": "TrafficGroup"
    },
    "traffic-group-local-only": {
      "class": "TrafficGroup"
    },
    "default_route": {
      "class": "Route",
      "gw": "10.12.225.1%0",
      "network": "default"
    },
    "RouteDomain_INTEGRATION": {
      "class": "RouteDomain",
      "id": 20,
      "routingProtocols": [],
      "vlans": ["integration"]
    },
    "RD20_0.0.0.0_0": {
      "class": "Route",
      "network": "0.0.0.0%20/0",
      "gw": "10.12.219.1%20"
    },
    "RouteDomain_QA": {
      "class": "RouteDomain",
      "id": 30,
      "routingProtocols": [],
      "vlans": ["qa"]
    },
    "RD30_0.0.0.0_0": {
      "class": "Route",
      "network": "0.0.0.0%30/0",
      "gw": "10.12.220.1%30"
    },
    "RouteDomain_UAT": {
      "class": "RouteDomain",
      "id": 40,
      "routingProtocols": [],
      "vlans": ["uat"]
    },
    "RD40_0.0.0.0_0": {
      "class": "Route",
      "network": "0.0.0.0%40/0",
      "gw": "10.12.221.1%40"
    },
    "system": {
      "autoCheck": true,
      "autoPhonehome": true,
      "class": "System",
      "guiAuditLog": true,
      "hostname": "bigip.local",
      "tmshAuditLog": true
    },
    "ManagementIp_IPv4": {
      "address": "10.12.217.80/24",
      "class": "ManagementIp",
      "remark": "configured-statically"
    },
    "default": {
      "class": "ManagementRoute",
      "gw": "10.12.217.1",
      "mtu": 1500,
      "network": "default",
      "remark": "configured-statically"
    },
    "MGMT_10.12.34.222_32": {
      "class": "ManagementRoute",
      "gw": "10.12.217.1",
      "mtu": 1500,
      "network": "10.12.34.222/32",
      "remark": "configured-statically"
    },
    "MGMT_10.12.34.221_32": {
      "class": "ManagementRoute",
      "gw": "10.12.217.1",
      "mtu": 1500,
      "network": "10.12.34.221/32",
      "remark": "configured-statically"
    },
    "MGMT_10.12.162.222_32": {
      "class": "ManagementRoute",
      "gw": "10.12.217.1",
      "mtu": 1500,
      "network": "10.12.162.222/32",
      "remark": "configured-statically"
    },
    "MGMT_10.12.162.221_32": {
      "class": "ManagementRoute",
      "gw": "10.12.217.1",
      "mtu": 1500,
      "network": "10.12.162.221/32",
      "remark": "configured-statically"
    },
    "MGMT_10.12.162.33_32": {
      "class": "ManagementRoute",
      "gw": "10.12.217.1",
      "mtu": 1500,
      "network": "10.12.162.33/32",
      "remark": "configured-statically"
    },
    "MGMT_10.12.119.209_32": {
      "class": "ManagementRoute",
      "gw": "10.12.217.1",
      "mtu": 1500,
      "network": "10.12.119.209/32",
      "remark": "configured-statically"
    },
    "MGMT_10.12.245.214_32": {
      "class": "ManagementRoute",
      "gw": "10.12.217.1",
      "mtu": 1500,
      "network": "10.12.245.214/32",
      "remark": "configured-statically"
    },
    "MGMT_10.36.5.10_32": {
      "class": "ManagementRoute",
      "gw": "10.12.217.1",
      "mtu": 1500,
      "network": "10.36.5.10/32",
      "remark": "configured-statically"
    },
    "MGMT_10.10.10.10_32": {
      "class": "ManagementRoute",
      "gw": "10.12.217.1",
      "mtu": 1500,
      "network": "10.10.10.10/32",
      "remark": "configured-statically"
    },
    "MGMT_10.7.34.15_32": {
      "class": "ManagementRoute",
      "gw": "10.12.217.1",
      "mtu": 1500,
      "network": "10.7.34.15/32",
      "remark": "configured-statically"
    },
    "MGMT_10.8.7.15_32": {
      "class": "ManagementRoute",
      "gw": "10.12.217.1",
      "mtu": 1500,
      "network": "10.8.7.15/32",
      "remark": "configured-statically"
    },
    "MGMT_10.12.34.0_24": {
      "class": "ManagementRoute",
      "gw": "10.12.217.1",
      "mtu": 1500,
      "network": "10.12.34.0/24",
      "remark": "configured-statically"
    },
    "MGMT_10.12.162.0_24": {
      "class": "ManagementRoute",
      "gw": "10.12.217.1",
      "mtu": 1500,
      "network": "10.12.162.0/24",
      "remark": "configured-statically"
    },
    "DNS": {
      "class": "DNS",
      "nameServers": ["1.1.1.1"],
      "search": ["example.com"]
    },
    "Provision": {
      "class": "Provision",
        "ltm": "nominal"
        ,"gtm": "nominal"
        ,"apm": "nominal"
        ,"afm": "nominal"
        ,"avr": "nominal"
    }
    }
    }
  2. Make a change to the declaration, in our case it was adding a new management route

  3. POST the updated declaration

  4. Observe the following error response:

    {
    "id": "0bc7360c-fba9-4d7b-886f-cb62b1cb0ec2",
    "selfLink": "https://localhost/mgmt/shared/declarative-onboarding/task/0bc7360c-fba9-4d7b-886f-cb62b1cb0ec2",
    "code": 500,
    "status": "ERROR",
    "message": "invalid config - rolled back",
    "errors": [
        "some subnets are not valid IP addresses: 10.12.221.80%40/24",
        "some subnets are not valid IP addresses: 10.12.221.80%40/24"
    ],
    "result": {
        "class": "Result",
        "code": 500,
        "status": "ERROR",
        "message": "invalid config - rolled back",
        "errors": [
            "some subnets are not valid IP addresses: 10.12.221.80%40/24",
            "some subnets are not valid IP addresses: 10.12.221.80%40/24"
        ]
    },
    "declaration": {}
    }

Expected Behavior

The declaration to succeed on subsequent runs after the initial successful run.

Actual Behavior

Initial run succeeds but then subsequent POSTs fail with the invalid subnet error for the non-default route domain IPs

mdditt2000 commented 8 months ago

Jira AUTOTOOL-3832