Skip to content

Commit

Permalink
Pass Object's GVK version when reconcile.
Browse files Browse the repository at this point in the history
  • Loading branch information
haosdent committed Jun 27, 2021
1 parent 985e819 commit c35caf6
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 23 deletions.
55 changes: 35 additions & 20 deletions pkg/handler/enqueue.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,25 +41,34 @@ func (e *EnqueueRequestForObject) Create(evt event.CreateEvent, q workqueue.Rate
enqueueLog.Error(nil, "CreateEvent received with no metadata", "event", evt)
return
}
q.Add(reconcile.Request{NamespacedName: types.NamespacedName{
Name: evt.Object.GetName(),
Namespace: evt.Object.GetNamespace(),
}})
q.Add(reconcile.Request{
NamespacedName: types.NamespacedName{
Name: evt.Object.GetName(),
Namespace: evt.Object.GetNamespace(),
},
GroupVersionKind: evt.Object.GetObjectKind().GroupVersionKind(),
})
}

// Update implements EventHandler.
func (e *EnqueueRequestForObject) Update(evt event.UpdateEvent, q workqueue.RateLimitingInterface) {
switch {
case evt.ObjectNew != nil:
q.Add(reconcile.Request{NamespacedName: types.NamespacedName{
Name: evt.ObjectNew.GetName(),
Namespace: evt.ObjectNew.GetNamespace(),
}})
q.Add(reconcile.Request{
NamespacedName: types.NamespacedName{
Name: evt.ObjectNew.GetName(),
Namespace: evt.ObjectNew.GetNamespace(),
},
GroupVersionKind: evt.ObjectNew.GetObjectKind().GroupVersionKind(),
})
case evt.ObjectOld != nil:
q.Add(reconcile.Request{NamespacedName: types.NamespacedName{
Name: evt.ObjectOld.GetName(),
Namespace: evt.ObjectOld.GetNamespace(),
}})
q.Add(reconcile.Request{
NamespacedName: types.NamespacedName{
Name: evt.ObjectOld.GetName(),
Namespace: evt.ObjectOld.GetNamespace(),
},
GroupVersionKind: evt.ObjectOld.GetObjectKind().GroupVersionKind(),
})
default:
enqueueLog.Error(nil, "UpdateEvent received with no metadata", "event", evt)
}
Expand All @@ -71,10 +80,13 @@ func (e *EnqueueRequestForObject) Delete(evt event.DeleteEvent, q workqueue.Rate
enqueueLog.Error(nil, "DeleteEvent received with no metadata", "event", evt)
return
}
q.Add(reconcile.Request{NamespacedName: types.NamespacedName{
Name: evt.Object.GetName(),
Namespace: evt.Object.GetNamespace(),
}})
q.Add(reconcile.Request{
NamespacedName: types.NamespacedName{
Name: evt.Object.GetName(),
Namespace: evt.Object.GetNamespace(),
},
GroupVersionKind: evt.Object.GetObjectKind().GroupVersionKind(),
})
}

// Generic implements EventHandler.
Expand All @@ -83,8 +95,11 @@ func (e *EnqueueRequestForObject) Generic(evt event.GenericEvent, q workqueue.Ra
enqueueLog.Error(nil, "GenericEvent received with no metadata", "event", evt)
return
}
q.Add(reconcile.Request{NamespacedName: types.NamespacedName{
Name: evt.Object.GetName(),
Namespace: evt.Object.GetNamespace(),
}})
q.Add(reconcile.Request{
NamespacedName: types.NamespacedName{
Name: evt.Object.GetName(),
Namespace: evt.Object.GetNamespace(),
},
GroupVersionKind: evt.Object.GetObjectKind().GroupVersionKind(),
})
}
13 changes: 10 additions & 3 deletions pkg/handler/enqueue_owner.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,9 +134,16 @@ func (e *EnqueueRequestForOwner) getOwnerReconcileRequest(object metav1.Object,
// object in the event.
if ref.Kind == e.groupKind.Kind && refGV.Group == e.groupKind.Group {
// Match found - add a Request for the object referred to in the OwnerReference
request := reconcile.Request{NamespacedName: types.NamespacedName{
Name: ref.Name,
}}
request := reconcile.Request{
NamespacedName: types.NamespacedName{
Name: ref.Name,
},
GroupVersionKind: schema.GroupVersionKind{
Group: refGV.Group,
Version: refGV.Version,
Kind: ref.Kind,
},
}

// if owner is not namespaced then we should set the namespace to the empty
mapping, err := e.mapper.RESTMapping(e.groupKind, refGV.Version)
Expand Down
2 changes: 2 additions & 0 deletions pkg/reconcile/reconcile.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"context"
"time"

"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/types"
)

Expand Down Expand Up @@ -47,6 +48,7 @@ func (r *Result) IsZero() bool {
type Request struct {
// NamespacedName is the name and namespace of the object to reconcile.
types.NamespacedName
schema.GroupVersionKind
}

/*
Expand Down

0 comments on commit c35caf6

Please sign in to comment.