Merge pull request #31641 from mwielgus/updater-on-failure

Automatic merge from submit-queue

OnError callback function for federated updater

The handler can be useful for precise logging and events recording. Update returns just a single, first received error.

cc: @quinton-hoole @wojtek-t @kubernetes/sig-cluster-federation
pull/6/head
Kubernetes Submit Queue 2016-08-30 04:24:59 -07:00 committed by GitHub
commit 228ba405c5
1 changed files with 9 additions and 0 deletions

View File

@ -47,6 +47,8 @@ type FederatedUpdater interface {
// stopped when it is reached. However the function will return after the timeout
// with a non-nil error.
Update([]FederatedOperation, time.Duration) error
UpdateWithOnError([]FederatedOperation, time.Duration, func(FederatedOperation, error)) error
}
// A function that executes some operation using the passed client and object.
@ -70,6 +72,10 @@ func NewFederatedUpdater(federation FederationView, add, update, del FederatedOp
}
func (fu *federatedUpdaterImpl) Update(ops []FederatedOperation, timeout time.Duration) error {
return fu.UpdateWithOnError(ops, timeout, nil)
}
func (fu *federatedUpdaterImpl) UpdateWithOnError(ops []FederatedOperation, timeout time.Duration, onError func(FederatedOperation, error)) error {
done := make(chan error, len(ops))
for _, op := range ops {
go func(op FederatedOperation) {
@ -90,6 +96,9 @@ func (fu *federatedUpdaterImpl) Update(ops []FederatedOperation, timeout time.Du
case OperationTypeDelete:
err = fu.deleteFunction(clientset, op.Obj)
}
if err != nil && onError != nil {
onError(op, err)
}
done <- err
}(op)
}