{"record":{"id":"5c425700cff3f197","repo":"kubernetes/kops","slug":"could-not-list-server-groups-v","errorCode":null,"errorMessage":"could not list server groups %v","messagePattern":"could not list server groups (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/openstack/cloud.go","lineNumber":676,"sourceCode":"\tfor _, instance := range instances {\n\t\terr := c.DeleteInstanceWithID(instance.ID)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"could not delete instance %q: %v\", instance.ID, err)\n\t\t}\n\t}\n\n\terr = deletePorts(c, g.InstanceGroup.Name, cluster.Name)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tsgName := g.InstanceGroup.Name\n\tif name, ok := g.InstanceGroup.Annotations[OS_ANNOTATION+SERVER_GROUP_NAME]; ok {\n\t\tsgName = name\n\t}\n\tsgs, err := c.ListServerGroups(servergroups.ListOpts{})\n\tif err != nil {\n\t\treturn fmt.Errorf(\"could not list server groups %v\", err)\n\t}\n\n\tfor _, sg := range sgs {\n\t\tif fmt.Sprintf(\"%s-%s\", cluster.Name, sgName) == sg.Name {\n\t\t\tif len(sg.Members) == 0 {\n\t\t\t\terr = c.DeleteServerGroup(sg.ID)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"could not delete server group %q: %v\", sg.ID, err)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tklog.Infof(\"Server group %q still has members (IDs: %s), delete not executed\", sg.ID, strings.Join(sg.Members, \", \"))\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\treturn nil\n}\n","sourceCodeStart":658,"sourceCodeEnd":694,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/openstack/cloud.go#L658-L694","documentation":"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.","triggerScenarios":"c.ListServerGroups(servergroups.ListOpts{}) returns an error: Nova compute API unreachable, auth failure, or microversion/negotiation problem with the server-groups endpoint.","commonSituations":"Nova endpoint misconfigured or behind a proxy that blocks the request; expired Keystone token; OpenStack cloud outage; older Nova lacking server-groups list support.","solutions":["Check connectivity to the Nova compute endpoint (`openstack server group list`)","Re-authenticate / refresh OS_* credentials","Confirm the compute API service is healthy in the service catalog","Retry the delete operation; list calls are retried by other paths but this one surfaces directly"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// preflight\n_, err := novaClient.Get(novaClient.ServiceURL(\"os-server-groups\"), nil)\nif err != nil { return fmt.Errorf(\"nova server-groups endpoint unreachable: %v\", err) }","typeGuard":null,"tryCatchPattern":"sgs, err := c.ListServerGroups(servergroups.ListOpts{})\nif err != nil {\n    return fmt.Errorf(\"could not list server groups %v\", err) // inspect wrapped cause, re-auth, retry\n}","preventionTips":["Keep tokens fresh for long teardowns","Verify compute endpoint health before cluster operations","Don't strip server-groups support from a custom Nova deployment used by kOps"],"tags":["openstack","nova","server-groups","api-list"],"backgroundTag":"openstack-api-list-failed","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"}