Skip to content

Instantly share code, notes, and snippets.

@Duologic
Created July 16, 2020 23:45
Show Gist options
  • Save Duologic/93a16e5892185baa15df76fc0568e781 to your computer and use it in GitHub Desktop.
Save Duologic/93a16e5892185baa15df76fc0568e781 to your computer and use it in GitHub Desktop.
func traverseControllerRef(controllerRef *metav1.OwnerReference, namespace string) (*metav1.OwnerReference, error) {
obj, err := client.
AppsV1().
RESTClient().
Get().
Resource(fmt.Sprintf("%ss", controllerRef.Kind)).
Name(controllerRef.Name).
Namespace(namespace).
Do().Raw()
if err != nil {
return nil, err
}
type ControllerMetadata struct {
OwnerReference *metav1.OwnerReference `json:"metadata"`
}
controllerMetadata := ControllerMetadata{}
if err := json.Unmarshal(obj, &controllerMetadata); err != nil {
return nil, err
}
ref := controllerMetadata.OwnerReference
if *ref.Controller {
return traverseControllerRef(ref, namespace)
}
return controllerRef, nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment