package client import ( "fmt" "strings" "sigs.k8s.io/controller-runtime/pkg/client" "edge-infra.dev/pkg/k8s/meta" ) // ObjectKeyFromRefStr creates an object reference that can be passed to // client operations such as Get() from a standard K8s namespaced reference string // in the format namespace/name func ObjectKeyFromRefStr(s string) (client.ObjectKey, error) { tokens := strings.Split(s, "/") if len(tokens) != 2 || tokens[0] == "" || tokens[1] == "" { return client.ObjectKey{}, fmt.Errorf("invalid object ref string %s, should be in the format of name/namespace", s) } return client.ObjectKey{Namespace: tokens[0], Name: tokens[1]}, nil } // ObjectKeyFromRef is a convenience function for creating an object key from // a namespaced object reference. func ObjectKeyFromRef(ref meta.NamespacedObjectReference) client.ObjectKey { return client.ObjectKey{Name: ref.Name, Namespace: ref.Namespace} } // ObjectKeyFromObject returns the ObjectKey given a runtime.Object. func ObjectKeyFromObject(obj client.Object) client.ObjectKey { return client.ObjectKey{Namespace: obj.GetNamespace(), Name: obj.GetName()} }