in kubernetes/controllers/expectation.go [89:131]
func onDependentDeleteFunc(r reconcile.Reconciler) func(event.DeleteEvent) bool {
return func(e event.DeleteEvent) bool {
ejr, ok := r.(*ElasticJobReconciler)
if !ok {
return true
}
// Reconcile any ElasticJob delete Event
if _, ok := e.Object.(*v1alpha1.ElasticJob); ok {
return true
}
// Predicates are provided to filter events before they are given to the EventHandler.
// Events will be passed to the EventHandler iff all provided Predicates evaluate to true.
// In this case, it won't filter out pods/services whose owner are not ElasticJob,
// we need to check group label to filter them out.
value := e.Meta.GetLabels()[v1.GroupNameLabel]
if value == "" || value != ejr.GetAPIGroupVersion().Group {
return false
}
ejr.Log.Info(fmt.Sprintf("Update on delete function: %s create object %s", ejr.ControllerName(), e.Meta.GetName()))
rtype := e.Meta.GetLabels()[v1.ReplicaTypeLabel]
if len(rtype) == 0 {
return false
}
if controllerRef := metav1.GetControllerOf(e.Meta); controllerRef != nil {
var expectKey string
if _, ok := e.Object.(*corev1.Pod); ok {
expectKey = common.GenExpectationPodsKey(e.Meta.GetNamespace()+"/"+controllerRef.Name, rtype)
}
if _, ok := e.Object.(*corev1.Service); ok {
expectKey = common.GenExpectationServicesKey(e.Meta.GetNamespace()+"/"+controllerRef.Name, rtype)
}
ejr.jobController.Expectations.DeleteExpectations(expectKey)
return true
}
return true
}
}