kubernetes/kops · error
failed to list members: %v
Error message
failed to list members: %v
What it means
Wraps an error from the OpenStack Octavia v2 pools.ListMembers paginated call inside listPoolMembers. The retry loop aborts when AllPages fails, attaching the underlying API error (auth, 404 pool, connectivity, etc.).
Source
Thrown at upup/pkg/fi/cloudup/openstack/loadbalancer.go:468
}
return pool, err
}
return pool, nil
}
func (c *openstackCloud) ListPoolMembers(poolID string, opts v2pools.ListMembersOpts) (memberList []v2pools.Member, err error) {
return listPoolMembers(c, poolID, opts)
}
func listPoolMembers(c OpenstackCloud, poolID string, opts v2pools.ListMembersOpts) (memberList []v2pools.Member, err error) {
if c.LoadBalancerClient() == nil {
return memberList, fmt.Errorf("loadbalancer support not available in this deployment")
}
done, err := vfs.RetryWithBackoff(readBackoff, func() (bool, error) {
memberPage, err := v2pools.ListMembers(c.LoadBalancerClient(), poolID, opts).AllPages(context.TODO())
if err != nil {
return false, fmt.Errorf("failed to list members: %v", err)
}
memberList, err = v2pools.ExtractMembers(memberPage)
if err != nil {
return false, fmt.Errorf("failed to extract members: %v", err)
}
return true, nil
})
if !done {
if err == nil {
err = wait.ErrWaitTimeout
}
return memberList, err
}
return memberList, nil
}
func (c *openstackCloud) ListPools(opts v2pools.ListOpts) (poolList []v2pools.Pool, err error) {
return listPools(c, opts)View on GitHub (pinned to 4c8573c808)
Solutions
- Inspect the wrapped inner error for the root cause (auth vs 404 vs connectivity)
- Re-authenticate: verify OS_USERNAME/OS_PASSWORD/OS_TOKEN and project scope are valid
- Confirm the poolID exists via `openstack loadbalancer member list <pool>`
- Verify connectivity to the Octavia public endpoint and that Octavia service is healthy
Example fix
null
Defensive patterns
Strategy: retry
Validate before calling
// validate pool exists first
pools, err := cloud.ListPools(v2pools.ListOpts{Name: poolName})
if err != nil || len(pools) == 0 { return fmt.Errorf("pool %q not found", poolName) } Try / catch
members, err := cloud.ListPoolMembers(poolID, opts)
if err != nil {
if strings.Contains(err.Error(), "401") || strings.Contains(err.Error(), "authentication") {
// re-authenticate and retry once
}
return fmt.Errorf("listing members for pool %s: %w", poolID, err)
} Prevention
- Pre-validate poolID existence before listing members
- Keep Keystone tokens fresh / use a re-authenticating provider
- Monitor Octavia API health before reconciliation loops
When it happens
Trigger: v2pools.ListMembers(...).AllPages(context.TODO()) returns a non-nil error: invalid/expired token, nonexistent pool ID, Octavia endpoint unreachable, timeout, or API returning 4xx/5xx — retried readBackoff times before being returned wrapped.
Common situations: Wrong OS_* credentials or expired token; pool deleted concurrently by another reconciler; Octavia service down or endpoint misconfigured; network partition between kops and the OpenStack API.
Related errors
- error deleting loadbalancer: %v
- error creating loadbalancer: %v
- failed to list loadbalancers: %s
- failed to list pools: %v
- failed to list listeners: %v
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/7482a874a454cb8c.
Report an issue: GitHub.