Skip to content

Instantly share code, notes, and snippets.

@bryanl
Created July 1, 2019 14:40
Show Gist options
  • Save bryanl/0ae490bcf5f75516d2e2efee500da6c5 to your computer and use it in GitHub Desktop.
Save bryanl/0ae490bcf5f75516d2e2efee500da6c5 to your computer and use it in GitHub Desktop.
func (dc *DynamicCache) Update(ctx context.Context, key store.Key, mutator func(*unstructured.Unstructured) error) error {
if mutator == nil {
return errors.New("can't update object")
}
err := kretry.RetryOnConflict(kretry.DefaultRetry, func() error {
object, err := dc.Get(ctx, key)
if err != nil {
return err
}
gvk := object.GroupVersionKind()
gvr, err := dc.client.Resource(gvk.GroupKind())
if err != nil {
return err
}
dynamicClient, err := dc.client.DynamicClient()
if err != nil {
return err
}
if err := mutator(object); err != nil {
return err
}
client := dynamicClient.Resource(gvr).Namespace(object.GetNamespace())
_, err = client.Update(object, metav1.UpdateOptions{})
return err
})
return err
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment