package kvm2 import ( "strings" ) // The providerID is hosts//domains/. Host names are validated at // config load to contain no slash, and domain names come from NameFromUID, // so a strict four-segment split is enough to parse it. const ( idHostsSegment = "hosts" idDomainsSegment = "domains" ) func formatProviderID(host, name string) string { return idHostsSegment + "/" + host + "/" + idDomainsSegment + "/" + name } // parseProviderID splits an ID back into host and domain name. Anything // that is not exactly hosts//domains/ with both non-empty is // ErrPermanent: no retry will make it resolve. func parseProviderID(id string) (host, name string, err error) { parts := strings.Split(id, "/") if len(parts) != 4 || parts[0] != idHostsSegment || parts[2] != idDomainsSegment || parts[1] == "" || parts[3] == "" { return "", "", permanentf("malformed providerID %q: want hosts//domains/", id) } return parts[1], parts[3], nil }