kubernetes/kops · error

found multiple recordsets with name: %s, expected 1

Error message

found multiple recordsets with name: %s, expected 1

What it means

Lookup guard in Designate nameToID: multiple record-sets share the queried name, but exactly one is required to unambiguously resolve the name to a record-set ID. Designate's API returned an ambiguous result.

Source

Thrown at dnsprovider/pkg/dnsprovider/providers/openstack/designate/rrchangeset.go:141

func (c *ResourceRecordChangeset) nameToID(name string) (string, error) {
	opts := recordsets.ListOpts{
		Name: name,
	}
	allPages, err := recordsets.ListByZone(c.zone.zones.iface.sc, c.zone.impl.ID, opts).AllPages(context.TODO())
	if err != nil {
		return "", err
	}
	rrs, err := recordsets.ExtractRecordSets(allPages)
	if err != nil {
		return "", err
	}
	switch len(rrs) {
	case 0:
		return "", fmt.Errorf("couldn't find recordset with name: %s, expected 1", name)
	case 1:
		return rrs[0].ID, nil
	default:
		return "", fmt.Errorf("found multiple recordsets with name: %s, expected 1", name)
	}
}

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Deduplicate the recordsets in Designate
  2. Delete stale duplicate records
  3. Inspect the zone with openstack recordset list
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at dnsprovider/pkg/dnsprovider/providers/openstack/designate/rrchangeset.go:141 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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