kubernetes/kops · error
error listing servers
Error message
error listing servers %v: %v
What it means
listInstances wraps any error from the Nova servers.List AllPages call — i.e. the paged query of servers matching the given ListOptsBuilder failed. It is retried via vfs.RetryWithBackoff(readBackoff) and the final error is wrapped with the list options for context.
Solutions
- Check the wrapped %v error: a 400 usually means an invalid filter in the ListOpts — verify the filter fields are supported by your Nova version
- Re-authenticate and confirm the compute endpoint is reachable (`openstack server list` works with the same credentials)
- Retry later if it's a 5xx/service outage; the built-in readBackoff already retries transiently
- Reduce filter complexity or page size if large listings time out
Example fix
// before: unsupported filter field
opt := servers.ListOpts{"invalid-field": "x"}
// after: use supported filters, e.g. tags
opt := servers.ListOpts{"tags": kopsTag} Defensive patterns
Strategy: retry
Validate before calling
// validate list options before calling
opts := servers.ListOpts{"tags": kopsTag}
for k := range opts {
if !supportedNovaListFilters[k] { return fmt.Errorf("unsupported filter: %s", k) }
} Try / catch
instances, err := ListInstances(cloud, opts)
if err != nil && strings.Contains(err.Error(), "error listing servers") {
// transient API issue — retry read-only list
time.Sleep(5 * time.Second)
instances, err = ListInstances(cloud, opts)
} Prevention
- Only use Nova-supported filter fields in servers.ListOpts
- Verify `openstack server list` works with the same credentials before automation
- Handle 5xx from the compute API as transient
- Avoid huge unfiltered listings; scope by tag/name
When it happens
Trigger: servers.List(...).AllPages fails: compute API endpoint unreachable, auth/token failure, invalid or unsupported filter fields in the ListOpts (400), or Nova returning 5xx while paging.
Common situations: Invalid tags/name filters in ListOpts that Nova rejects; Keystone credentials expired; OpenStack compute service outage; paginated listing hitting a timeout on very large deployments.
Related errors
- failed to list flavors
- could not delete instance
- Could not delete instance
- could not delete server group
- Could not extract flavors
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/312a129b3840a187.
Report an issue: GitHub.
Appendix: source
Thrown at upup/pkg/fi/cloudup/openstack/instance.go:352
return server, err
} else if done {
return server, nil
} else {
return server, wait.ErrWaitTimeout
}
}
func (c *openstackCloud) ListInstances(opt servers.ListOptsBuilder) ([]servers.Server, error) {
return listInstances(c, opt)
}
func listInstances(c OpenstackCloud, opt servers.ListOptsBuilder) ([]servers.Server, error) {
var instances []servers.Server
done, err := vfs.RetryWithBackoff(readBackoff, func() (bool, error) {
allPages, err := servers.List(c.ComputeClient(), opt).AllPages(context.TODO())
if err != nil {
return false, fmt.Errorf("error listing servers %v: %v", opt, err)
}
ss, err := servers.ExtractServers(allPages)
if err != nil {
return false, fmt.Errorf("error extracting servers from pages: %v", err)
}
instances = ss
return true, nil
})
if err != nil {
return instances, err
} else if done {
return instances, nil
} else {
return instances, wait.ErrWaitTimeout
}
}
View on GitHub (pinned to 4c8573c808)