diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index 96454a6f..be4ad2b4 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -272,335 +272,335 @@ }, { "ImportPath": "k8s.io/api/admissionregistration/v1alpha1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/admissionregistration/v1beta1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/apps/v1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/apps/v1beta1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/apps/v1beta2", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/authentication/v1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/authentication/v1beta1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/authorization/v1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/authorization/v1beta1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/autoscaling/v1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/autoscaling/v2beta1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/autoscaling/v2beta2", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/batch/v1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/batch/v1beta1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/batch/v2alpha1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/certificates/v1beta1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/coordination/v1beta1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/core/v1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/events/v1beta1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/extensions/v1beta1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/imagepolicy/v1alpha1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/networking/v1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/policy/v1beta1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/rbac/v1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/rbac/v1alpha1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/rbac/v1beta1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/scheduling/v1alpha1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/scheduling/v1beta1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/settings/v1alpha1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/storage/v1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/storage/v1alpha1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/api/storage/v1beta1", - "Rev": "fcb01e9febf3e72ae9b6eff41f2d02ffdea4dda1" + "Rev": "89dfcd0b11286f217f32aa407276dc34f2c61fa9" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/apitesting", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/apitesting/fuzzer", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/apitesting/roundtrip", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/equality", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/errors", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/meta", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/resource", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/fuzzer", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/internalversion", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1beta1", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/conversion", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/fields", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/labels", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/schema", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/selection", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/types", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/cache", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/clock", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/diff", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/errors", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/framer", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/httpstream", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/httpstream/spdy", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/intstr", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/json", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/naming", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/net", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/remotecommand", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/runtime", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/sets", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/validation", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/validation/field", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/wait", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/yaml", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/version", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/pkg/watch", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/netutil", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect", - "Rev": "9dc1de72c0f3996657ffc88895f89f3844d8cf01" + "Rev": "6429050ef506887d121f3e7306e894f8900d8a63" }, { "ImportPath": "k8s.io/kube-openapi/pkg/util/proto", diff --git a/util/workqueue/parallelizer.go b/util/workqueue/parallelizer.go index be668c42..526bd244 100644 --- a/util/workqueue/parallelizer.go +++ b/util/workqueue/parallelizer.go @@ -17,6 +17,7 @@ limitations under the License. package workqueue import ( + "context" "sync" utilruntime "k8s.io/apimachinery/pkg/util/runtime" @@ -24,9 +25,20 @@ import ( type DoWorkPieceFunc func(piece int) -// Parallelize is a very simple framework that allow for parallelizing +// Parallelize is a very simple framework that allows for parallelizing // N independent pieces of work. func Parallelize(workers, pieces int, doWorkPiece DoWorkPieceFunc) { + ParallelizeUntil(nil, workers, pieces, doWorkPiece) +} + +// ParallelizeUntil is a framework that allows for parallelizing N +// independent pieces of work until done or the context is canceled. +func ParallelizeUntil(ctx context.Context, workers, pieces int, doWorkPiece DoWorkPieceFunc) { + var stop <-chan struct{} + if ctx != nil { + stop = ctx.Done() + } + toProcess := make(chan int, pieces) for i := 0; i < pieces; i++ { toProcess <- i @@ -44,7 +56,12 @@ func Parallelize(workers, pieces int, doWorkPiece DoWorkPieceFunc) { defer utilruntime.HandleCrash() defer wg.Done() for piece := range toProcess { - doWorkPiece(piece) + select { + case <-stop: + return + default: + doWorkPiece(piece) + } } }() }