{"record":{"id":"406d99fed0fd3d76","repo":"kubernetes/kops","slug":"loadbalancer-api-versions-not-found","errorCode":null,"errorMessage":"loadbalancer API versions not found","messagePattern":"loadbalancer API versions not found","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/openstack/cloud.go","lineNumber":741,"sourceCode":"\t}\n\tc.useVIPACL = &use\n\treturn use, nil\n}\n\nfunc useLoadBalancerVIPACL(c OpenstackCloud) (bool, error) {\n\tif c.LoadBalancerClient() == nil {\n\t\treturn false, nil\n\t}\n\tallPages, err := apiversions.List(c.LoadBalancerClient()).AllPages(context.TODO())\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tversions, err := apiversions.ExtractAPIVersions(allPages)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tif len(versions) == 0 {\n\t\treturn false, fmt.Errorf(\"loadbalancer API versions not found\")\n\t}\n\tver, err := semver.ParseTolerant(versions[len(versions)-1].ID)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\t// https://github.com/kubernetes/cloud-provider-openstack/blob/721615aa256bbddbd481cfb4a887c3ab180c5563/pkg/util/openstack/loadbalancer.go#L108\n\treturn ver.Compare(semver.MustParse(\"2.12.0\")) > 0, nil\n}\n\ntype Address struct {\n\tIPType string `mapstructure:\"OS-EXT-IPS:type\"`\n\tAddr   string\n}\n\nfunc (c *openstackCloud) GetApiIngressStatus(cluster *kops.Cluster) ([]fi.ApiIngressStatus, error) {\n\treturn getApiIngressStatus(c, cluster)\n}\n","sourceCodeStart":723,"sourceCodeEnd":759,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/openstack/cloud.go#L723-L759","documentation":"Error indicating the OpenStack load-balancer (Octavia/Neutron-LBaaS) API returned zero versions when probing whether v2 load balancer support exists. kOps treats an empty version list as unusable and fails the check rather than guessing.","triggerScenarios":"apiversions.List against the load-balancer endpoint succeeds but ExtractAPIVersions yields an empty slice — the endpoint exists but publishes no API versions.","commonSituations":"Octavia service misregistered in the catalog pointing to a wrong/empty endpoint; lb-service-type misconfiguration; proxy or load balancer in front of Octavia returning an empty body; Octavia not actually deployed.","solutions":["Verify the load-balancer service endpoint in the Keystone catalog: `openstack endpoint list | grep load-balancer`","Confirm Octavia is deployed and responds: `curl <octavia-endpoint>/` or `openstack loadbalancer list`","Check the cloud config's lb-service-type/octavia settings match the deployment","Retry after fixing the endpoint; this is a configuration not a transient fault"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// preflight before kops create\nallPages, err := apiversions.List(lbClient).AllPages(ctx)\nif err != nil || len(apiversions.ExtractAPIVersions(allPages)) == 0 {\n    return fmt.Errorf(\"octavia endpoint returned no API versions; check catalog\")\n}","typeGuard":null,"tryCatchPattern":"if len(versions) == 0 {\n    return false, fmt.Errorf(\"loadbalancer API versions not found\") // fix endpoint, don't retry blindly\n}","preventionTips":["Run `openstack endpoint list | grep load-balancer` before cluster creation","Confirm Octavia is actually deployed, not just configured","Keep the lb-service-type cloud config aligned with the deployed service"],"tags":["openstack","octavia","loadbalancer","api-version"],"backgroundTag":"openstack-service-endpoint-misconfigured","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"}