kubernetes/kops · error
error building nova client: %w
Error message
error building nova client: %w
What it means
buildClients (upup/pkg/fi/cloudup/openstack/cloud.go:402) builds the Nova compute v2 client with openstack.NewComputeV2 and EndpointOpts{Type: "compute", Region: region}; on success it pins Microversion 2.47 because the compute API /servers/detail only returns flavor names from that microversion on. Failure means no compute endpoint for the type+region could be resolved from the Keystone catalog. Wrapped with %w so the gophercloud root error is preserved.
Source
Thrown at upup/pkg/fi/cloudup/openstack/cloud.go:402
})
if err != nil {
return nil, fmt.Errorf("error building cinder client: %w", err)
}
neutronClient, err := openstack.NewNetworkV2(provider, gophercloud.EndpointOpts{
Type: "network",
Region: region,
})
if err != nil {
return nil, fmt.Errorf("error building neutron client: %w", err)
}
novaClient, err := openstack.NewComputeV2(provider, gophercloud.EndpointOpts{
Type: "compute",
Region: region,
})
if err != nil {
return nil, fmt.Errorf("error building nova client: %w", err)
}
// 2.47 is the minimum version where the compute API /server/details returns flavor names
novaClient.Microversion = "2.47"
glanceClient, err := openstack.NewImageV2(provider, gophercloud.EndpointOpts{
Type: "image",
Region: region,
})
if err != nil {
return nil, fmt.Errorf("error building glance client: %w", err)
}
var dnsClient *gophercloud.ServiceClient
if hasDNS {
dnsClient, err = openstack.NewDNSV2(provider, gophercloud.EndpointOpts{
Type: "dns",
Region: region,
})View on GitHub (pinned to 4c8573c808)
Solutions
- Confirm with `openstack endpoint list --service compute --region <region>` that a compute endpoint exists
- Fix OS_REGION_NAME to match a region with Nova deployed
- If the endpoint exists but is filtered, check the project's service catalog permissions/interface (public vs internal)
- Verify Nova supports microversion >= 2.47 for the flavor-name feature kops relies on
Defensive patterns
Strategy: validation
Validate before calling
endpoints, err := catalogEndpoints(token, "compute")
if err != nil || len(endpoints) == 0 {
return fmt.Errorf("no compute endpoint for region %q", region)
}
return nil Prevention
- Verify `openstack endpoint list --service compute --region <region>` before kops
- Ensure Nova supports microversion >= 2.47 (needed for flavor names in /servers/detail)
- Use exact region names from `openstack region list`
- Confirm the project can see the compute service in its catalog
When it happens
Trigger: The catalog lacks a 'compute' endpoint in the region; Nova not deployed there; region string mismatch; the resolved compute endpoint's supported microversions are below 2.47 in downstream checks (the error here specifically is endpoint resolution).
Common situations: Regions without Nova (storage-only regions); typo'd OS_REGION_NAME; custom catalogs where the compute service is registered with an unexpected type; clouds behind restricted catalogs exposing only a subset of services to the project.
Related errors
- error building cinder client: %w
- error building neutron client: %w
- error building glance client: %w
- Could not extract flavors: %v
- error building nova client: %v
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/179e120f26a1f31b.
Report an issue: GitHub.