kubernetes/kops · error

could not list server groups %v

Error message

could not list server groups %v

What it means

Error returned when listing OpenStack server groups (via servergroups.ListOpts) fails during instance-group deletion. kOps needs the group list to find the cluster's server group for cleanup; an API failure here prevents any deletion proceeding.

Source

Thrown at upup/pkg/fi/cloudup/openstack/cloud.go:676

	for _, instance := range instances {
		err := c.DeleteInstanceWithID(instance.ID)
		if err != nil {
			return fmt.Errorf("could not delete instance %q: %v", instance.ID, err)
		}
	}

	err = deletePorts(c, g.InstanceGroup.Name, cluster.Name)
	if err != nil {
		return err
	}

	sgName := g.InstanceGroup.Name
	if name, ok := g.InstanceGroup.Annotations[OS_ANNOTATION+SERVER_GROUP_NAME]; ok {
		sgName = name
	}
	sgs, err := c.ListServerGroups(servergroups.ListOpts{})
	if err != nil {
		return fmt.Errorf("could not list server groups %v", err)
	}

	for _, sg := range sgs {
		if fmt.Sprintf("%s-%s", cluster.Name, sgName) == sg.Name {
			if len(sg.Members) == 0 {
				err = c.DeleteServerGroup(sg.ID)
				if err != nil {
					return fmt.Errorf("could not delete server group %q: %v", sg.ID, err)
				}
			} else {
				klog.Infof("Server group %q still has members (IDs: %s), delete not executed", sg.ID, strings.Join(sg.Members, ", "))
			}
			break
		}
	}
	return nil
}

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Check connectivity to the Nova compute endpoint (`openstack server group list`)
  2. Re-authenticate / refresh OS_* credentials
  3. Confirm the compute API service is healthy in the service catalog
  4. Retry the delete operation; list calls are retried by other paths but this one surfaces directly
Defensive patterns

Strategy: retry

Validate before calling

// preflight
_, err := novaClient.Get(novaClient.ServiceURL("os-server-groups"), nil)
if err != nil { return fmt.Errorf("nova server-groups endpoint unreachable: %v", err) }

Try / catch

sgs, err := c.ListServerGroups(servergroups.ListOpts{})
if err != nil {
    return fmt.Errorf("could not list server groups %v", err) // inspect wrapped cause, re-auth, retry
}

Prevention

When it happens

Trigger: c.ListServerGroups(servergroups.ListOpts{}) returns an error: Nova compute API unreachable, auth failure, or microversion/negotiation problem with the server-groups endpoint.

Common situations: Nova endpoint misconfigured or behind a proxy that blocks the request; expired Keystone token; OpenStack cloud outage; older Nova lacking server-groups list support.

Related errors


AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05). Data as JSON: /api/errors/5c425700cff3f197. Report an issue: GitHub.