{"record":{"id":"0ccf4e944fa36312","repo":"kubernetes/kops","slug":"failed-to-loadbalancer-active-provisioning-status","errorCode":null,"errorMessage":"failed to loadbalancer ACTIVE provisioning status %v: %v","messagePattern":"failed to loadbalancer ACTIVE provisioning status (.+?): (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/openstacktasks/lbpool.go","lineNumber":132,"sourceCode":"\t\t}\n\t} else {\n\t\tif changes.ID != nil {\n\t\t\treturn fi.CannotChangeField(\"ID\")\n\t\t}\n\t\tif changes.Name != nil {\n\t\t\treturn fi.CannotChangeField(\"Name\")\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (_ *LBPool) RenderOpenstack(t *openstack.OpenstackAPITarget, a, e, changes *LBPool) error {\n\tif a == nil {\n\n\t\t// wait that lb is in ACTIVE state\n\t\tprovisioningStatus, err := waitLoadbalancerActiveProvisioningStatus(t.Cloud.LoadBalancerClient(), fi.ValueOf(e.Loadbalancer.ID))\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to loadbalancer ACTIVE provisioning status %v: %v\", provisioningStatus, err)\n\t\t}\n\n\t\tLbMethod := v2pools.LBMethodRoundRobin\n\t\tif fi.ValueOf(e.Loadbalancer.Provider) == \"ovn\" {\n\t\t\tLbMethod = v2pools.LBMethodSourceIpPort\n\t\t}\n\t\tpoolopts := v2pools.CreateOpts{\n\t\t\tName:           fi.ValueOf(e.Name),\n\t\t\tLBMethod:       LbMethod,\n\t\t\tProtocol:       v2pools.ProtocolTCP,\n\t\t\tLoadbalancerID: fi.ValueOf(e.Loadbalancer.ID),\n\t\t}\n\t\tpool, err := t.Cloud.CreatePool(poolopts)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error creating LB pool: %v\", err)\n\t\t}\n\t\te.ID = new(pool.ID)\n","sourceCodeStart":114,"sourceCodeEnd":150,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/openstacktasks/lbpool.go#L114-L150","documentation":"When creating a new LBPool, RenderOpenstack first waits for the parent load balancer to reach ACTIVE provisioning status via waitLoadbalancerActiveProvisioningStatus. If the wait times out or the LB transitions to ERROR, the error is wrapped with the last observed provisioning status. Creating a pool against a non-ACTIVE LB would be rejected by Octavia anyway.","triggerScenarios":"The parent LB stays in PENDING_CREATE/PENDING_UPDATE beyond the polling timeout, or its provisioning_status becomes ERROR after a failed earlier operation (listener/member creation) — then pool creation is aborted.","commonSituations":"Octavia amphora stuck booting (capacity/network issues); a previous task failed leaving LB in ERROR; slow cloud with default wait timeout too short; provider ovn LBs taking long to activate.","solutions":["Inspect LB state: openstack loadbalancer status show <lb-id>; fix the fault that left it in ERROR (often a failed listener/member).","Delete and let kops recreate an LB stuck in ERROR: openstack loadbalancer delete --wait, then re-run kops update.","Retry later if it is transient PENDING_* — amphora capacity issues often resolve after minutes.","Check octavia control-plane/amphora health (agent list, image availability) in the cloud."],"exampleFix":"// before: LB stuck in ERROR after failed listener\nfailed to loadbalancer ACTIVE provisioning status ERROR: timed out waiting\n// after\n$ openstack loadbalancer delete <lb-id> --wait\n$ kops update cluster --name mycluster --yes  # recreates LB then pool","handlingStrategy":"retry","validationCode":"lb := octaviaLBShow(lbID)\nif lb.ProvisioningStatus == \"ERROR\" {\n\treturn fmt.Errorf(\"LB %s is in ERROR state; fix or delete it before pool creation\", lbID)\n}","typeGuard":null,"tryCatchPattern":"if err := kopsUpdate(); err != nil {\n\tif strings.Contains(err.Error(), \"ACTIVE provisioning status\") {\n\t\t// LB stuck in PENDING_*/ERROR: investigate, possibly delete and recreate\n\t\treturn inspectOrRecreateLoadBalancer()\n\t}\n\treturn err\n}","preventionTips":["Check `openstack loadbalancer status show` before updates to catch ERROR state early.","Ensure amphora capacity/images are healthy in the cloud.","Avoid overlapping kops runs that keep the LB in PENDING_* states."],"tags":["openstack","octavia","provisioning-status","timeout"],"backgroundTag":"loadbalancer-not-active","analyzedSha":"4c8573c808a73d578c5eadc86d410646ea0b0d73","analyzedAt":"2026-09-05T04:13:19.212Z","contentChangedAt":"2026-09-05T04:13:19.212Z","schemaVersion":2},"datasetVersion":"2026-09-12T07:17:12.445Z"}