diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index ecb19d01..8e803f2d 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -1,7 +1,7 @@ { "ImportPath": "k8s.io/sample-controller", "GoVersion": "go1.11", - "GodepVersion": "v80-k8s-r1", + "GodepVersion": "v80", "Packages": [ "./..." ], @@ -176,979 +176,979 @@ }, { "ImportPath": "k8s.io/api/admissionregistration/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/admissionregistration/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/apps/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/apps/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/apps/v1beta2", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/auditregistration/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/authentication/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/authentication/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/authorization/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/authorization/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/autoscaling/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/autoscaling/v2beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/autoscaling/v2beta2", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/batch/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/batch/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/batch/v2alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/certificates/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/coordination/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/core/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/events/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/extensions/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/networking/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/policy/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/rbac/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/rbac/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/rbac/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/scheduling/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/scheduling/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/settings/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/storage/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/storage/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/api/storage/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "a61488babbd64b32da2ed985e2e70fe7b4ffc05a" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/errors", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/meta", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/resource", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/internalversion", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/conversion", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/fields", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/labels", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/schema", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/selection", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/types", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/cache", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/clock", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/diff", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/errors", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/framer", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/intstr", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/json", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/naming", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/net", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/runtime", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/sets", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/validation", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/validation/field", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/wait", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/yaml", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/version", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/pkg/watch", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "86fb29eff6288413d76bd8506874fddd9fccdff0" }, { "ImportPath": "k8s.io/client-go/discovery", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/discovery/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/admissionregistration", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/admissionregistration/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/admissionregistration/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/apps", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/apps/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/apps/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/apps/v1beta2", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/auditregistration", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/auditregistration/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/autoscaling", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/autoscaling/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/autoscaling/v2beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/autoscaling/v2beta2", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/batch", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/batch/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/batch/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/batch/v2alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/certificates", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/certificates/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/coordination", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/coordination/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/core", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/core/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/events", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/events/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/extensions", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/extensions/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/internalinterfaces", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/networking", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/networking/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/policy", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/policy/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/rbac", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/rbac/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/rbac/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/rbac/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/scheduling", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/scheduling/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/scheduling/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/settings", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/settings/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/storage", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/storage/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/storage/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/informers/storage/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/scheme", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta2", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v2alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/certificates/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/coordination/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/core/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/core/v1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/events/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/events/v1beta1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/extensions/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/networking/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/networking/v1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/policy/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/scheduling/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/settings/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/admissionregistration/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/admissionregistration/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/apps/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/apps/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/apps/v1beta2", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/auditregistration/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/autoscaling/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/autoscaling/v2beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/autoscaling/v2beta2", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/batch/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/batch/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/batch/v2alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/certificates/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/coordination/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/core/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/events/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/extensions/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/networking/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/policy/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/rbac/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/rbac/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/rbac/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/scheduling/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/scheduling/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/settings/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/storage/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/storage/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/listers/storage/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/pkg/apis/clientauthentication", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/pkg/apis/clientauthentication/v1beta1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/pkg/version", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/plugin/pkg/client/auth/exec", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/rest", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/rest/watch", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/testing", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/tools/auth", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/tools/cache", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/tools/clientcmd", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/tools/clientcmd/api", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/tools/clientcmd/api/latest", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/tools/clientcmd/api/v1", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/tools/metrics", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/tools/pager", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/tools/record", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/tools/reference", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/transport", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/util/buffer", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/util/cert", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/util/connrotation", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/util/flowcontrol", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/util/homedir", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/util/integer", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/util/retry", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/client-go/util/workqueue", - "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "Rev": "f8e521c159ad09e73f31e5c977e40cb711b56f17" }, { "ImportPath": "k8s.io/klog", diff --git a/vendor/github.com/evanphx/json-patch/README.md b/vendor/github.com/evanphx/json-patch/README.md index 13b90420..9c7f87f7 100644 --- a/vendor/github.com/evanphx/json-patch/README.md +++ b/vendor/github.com/evanphx/json-patch/README.md @@ -25,6 +25,19 @@ go get -u github.com/evanphx/json-patch * [Comparing JSON documents](#comparing-json-documents) * [Combine merge patches](#combine-merge-patches) + +# Configuration + +* There is a global configuration variable `jsonpatch.SupportNegativeIndices`. + This defaults to `true` and enables the non-standard practice of allowing + negative indices to mean indices starting at the end of an array. This + functionality can be disabled by setting `jsonpatch.SupportNegativeIndices = + false`. + +* There is a global configuration variable `jsonpatch.AccumulatedCopySizeLimit`, + which limits the total size increase in bytes caused by "copy" operations in a + patch. It defaults to 0, which means there is no limit. + ## Create and apply a merge patch Given both an original JSON document and a modified JSON document, you can create a [Merge Patch](https://tools.ietf.org/html/rfc7396) document. diff --git a/vendor/github.com/evanphx/json-patch/errors.go b/vendor/github.com/evanphx/json-patch/errors.go new file mode 100644 index 00000000..75304b44 --- /dev/null +++ b/vendor/github.com/evanphx/json-patch/errors.go @@ -0,0 +1,38 @@ +package jsonpatch + +import "fmt" + +// AccumulatedCopySizeError is an error type returned when the accumulated size +// increase caused by copy operations in a patch operation has exceeded the +// limit. +type AccumulatedCopySizeError struct { + limit int64 + accumulated int64 +} + +// NewAccumulatedCopySizeError returns an AccumulatedCopySizeError. +func NewAccumulatedCopySizeError(l, a int64) *AccumulatedCopySizeError { + return &AccumulatedCopySizeError{limit: l, accumulated: a} +} + +// Error implements the error interface. +func (a *AccumulatedCopySizeError) Error() string { + return fmt.Sprintf("Unable to complete the copy, the accumulated size increase of copy is %d, exceeding the limit %d", a.accumulated, a.limit) +} + +// ArraySizeError is an error type returned when the array size has exceeded +// the limit. +type ArraySizeError struct { + limit int + size int +} + +// NewArraySizeError returns an ArraySizeError. +func NewArraySizeError(l, s int) *ArraySizeError { + return &ArraySizeError{limit: l, size: s} +} + +// Error implements the error interface. +func (a *ArraySizeError) Error() string { + return fmt.Sprintf("Unable to create array of size %d, limit is %d", a.size, a.limit) +} diff --git a/vendor/github.com/evanphx/json-patch/patch.go b/vendor/github.com/evanphx/json-patch/patch.go index 3d76e9e3..c9cf5902 100644 --- a/vendor/github.com/evanphx/json-patch/patch.go +++ b/vendor/github.com/evanphx/json-patch/patch.go @@ -14,6 +14,16 @@ const ( eAry ) +var ( + // SupportNegativeIndices decides whether to support non-standard practice of + // allowing negative indices to mean indices starting at the end of an array. + // Default to true. + SupportNegativeIndices bool = true + // AccumulatedCopySizeLimit limits the total size increase in bytes caused by + // "copy" operations in a patch. + AccumulatedCopySizeLimit int64 = 0 +) + type lazyNode struct { raw *json.RawMessage doc partialDoc @@ -61,6 +71,20 @@ func (n *lazyNode) UnmarshalJSON(data []byte) error { return nil } +func deepCopy(src *lazyNode) (*lazyNode, int, error) { + if src == nil { + return nil, 0, nil + } + a, err := src.MarshalJSON() + if err != nil { + return nil, 0, err + } + sz := len(a) + ra := make(json.RawMessage, sz) + copy(ra, a) + return newLazyNode(&ra), sz, nil +} + func (n *lazyNode) intoDoc() (*partialDoc, error) { if n.which == eDoc { return &n.doc, nil @@ -342,35 +366,14 @@ func (d *partialDoc) remove(key string) error { return nil } +// set should only be used to implement the "replace" operation, so "key" must +// be an already existing index in "d". func (d *partialArray) set(key string, val *lazyNode) error { - if key == "-" { - *d = append(*d, val) - return nil - } - idx, err := strconv.Atoi(key) if err != nil { return err } - - sz := len(*d) - if idx+1 > sz { - sz = idx + 1 - } - - ary := make([]*lazyNode, sz) - - cur := *d - - copy(ary, cur) - - if idx >= len(ary) { - return fmt.Errorf("Unable to access invalid index: %d", idx) - } - - ary[idx] = val - - *d = ary + (*d)[idx] = val return nil } @@ -385,17 +388,26 @@ func (d *partialArray) add(key string, val *lazyNode) error { return err } - ary := make([]*lazyNode, len(*d)+1) + sz := len(*d) + 1 + + ary := make([]*lazyNode, sz) cur := *d - if idx < -len(ary) || idx >= len(ary) { + if idx >= len(ary) { return fmt.Errorf("Unable to access invalid index: %d", idx) } - if idx < 0 { - idx += len(ary) + if SupportNegativeIndices { + if idx < -len(ary) { + return fmt.Errorf("Unable to access invalid index: %d", idx) + } + + if idx < 0 { + idx += len(ary) + } } + copy(ary[0:idx], cur[0:idx]) ary[idx] = val copy(ary[idx+1:], cur[idx:]) @@ -426,11 +438,18 @@ func (d *partialArray) remove(key string) error { cur := *d - if idx < -len(cur) || idx >= len(cur) { - return fmt.Errorf("Unable to remove invalid index: %d", idx) + if idx >= len(cur) { + return fmt.Errorf("Unable to access invalid index: %d", idx) } - if idx < 0 { - idx += len(cur) + + if SupportNegativeIndices { + if idx < -len(cur) { + return fmt.Errorf("Unable to access invalid index: %d", idx) + } + + if idx < 0 { + idx += len(cur) + } } ary := make([]*lazyNode, len(cur)-1) @@ -511,7 +530,7 @@ func (p Patch) move(doc *container, op operation) error { return fmt.Errorf("jsonpatch move operation does not apply: doc is missing destination path: %s", path) } - return con.set(key, val) + return con.add(key, val) } func (p Patch) test(doc *container, op operation) error { @@ -545,7 +564,7 @@ func (p Patch) test(doc *container, op operation) error { return fmt.Errorf("Testing value %s failed", path) } -func (p Patch) copy(doc *container, op operation) error { +func (p Patch) copy(doc *container, op operation, accumulatedCopySize *int64) error { from := op.from() con, key := findObject(doc, from) @@ -567,7 +586,16 @@ func (p Patch) copy(doc *container, op operation) error { return fmt.Errorf("jsonpatch copy operation does not apply: doc is missing destination path: %s", path) } - return con.set(key, val) + valCopy, sz, err := deepCopy(val) + if err != nil { + return err + } + (*accumulatedCopySize) += int64(sz) + if AccumulatedCopySizeLimit > 0 && *accumulatedCopySize > AccumulatedCopySizeLimit { + return NewAccumulatedCopySizeError(AccumulatedCopySizeLimit, *accumulatedCopySize) + } + + return con.add(key, valCopy) } // Equal indicates if 2 JSON documents have the same structural equality. @@ -620,6 +648,8 @@ func (p Patch) ApplyIndent(doc []byte, indent string) ([]byte, error) { err = nil + var accumulatedCopySize int64 + for _, op := range p { switch op.kind() { case "add": @@ -633,7 +663,7 @@ func (p Patch) ApplyIndent(doc []byte, indent string) ([]byte, error) { case "test": err = p.test(&pd, op) case "copy": - err = p.copy(&pd, op) + err = p.copy(&pd, op, &accumulatedCopySize) default: err = fmt.Errorf("Unexpected kind: %s", op.kind()) } diff --git a/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go b/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go index e736a986..48c1104d 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go +++ b/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go @@ -341,6 +341,17 @@ func NewTooManyRequestsError(message string) *StatusError { }} } +// NewRequestEntityTooLargeError returns an error indicating that the request +// entity was too large. +func NewRequestEntityTooLargeError(message string) *StatusError { + return &StatusError{metav1.Status{ + Status: metav1.StatusFailure, + Code: http.StatusRequestEntityTooLarge, + Reason: metav1.StatusReasonRequestEntityTooLarge, + Message: fmt.Sprintf("Request entity too large: %s", message), + }} +} + // NewGenericServerResponse returns a new error for server responses that are not in a recognizable form. func NewGenericServerResponse(code int, verb string, qualifiedResource schema.GroupResource, name, serverMessage string, retryAfterSeconds int, isUnexpectedResponse bool) *StatusError { reason := metav1.StatusReasonUnknown @@ -527,6 +538,19 @@ func IsTooManyRequests(err error) bool { return false } +// IsRequestEntityTooLargeError determines if err is an error which indicates +// the request entity is too large. +func IsRequestEntityTooLargeError(err error) bool { + if ReasonForError(err) == metav1.StatusReasonRequestEntityTooLarge { + return true + } + switch t := err.(type) { + case APIStatus: + return t.Status().Code == http.StatusRequestEntityTooLarge + } + return false +} + // IsUnexpectedServerError returns true if the server response was not in the expected API format, // and may be the result of another HTTP actor. func IsUnexpectedServerError(err error) bool { diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go index 8f488ba7..65f87546 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go @@ -713,6 +713,10 @@ const ( // Status code 406 StatusReasonNotAcceptable StatusReason = "NotAcceptable" + // StatusReasonRequestEntityTooLarge means that the request entity is too large. + // Status code 413 + StatusReasonRequestEntityTooLarge StatusReason = "RequestEntityTooLarge" + // StatusReasonUnsupportedMediaType means that the content type sent by the client is not acceptable // to the server - for instance, attempting to send protobuf for a resource that supports only json and yaml. // API calls that return UnsupportedMediaType can never succeed. diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/codec.go b/vendor/k8s.io/apimachinery/pkg/runtime/codec.go index 6b859b28..284e32bc 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/codec.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/codec.go @@ -283,6 +283,7 @@ var _ GroupVersioner = multiGroupVersioner{} type multiGroupVersioner struct { target schema.GroupVersion acceptedGroupKinds []schema.GroupKind + coerce bool } // NewMultiGroupVersioner returns the provided group version for any kind that matches one of the provided group kinds. @@ -294,6 +295,22 @@ func NewMultiGroupVersioner(gv schema.GroupVersion, groupKinds ...schema.GroupKi return multiGroupVersioner{target: gv, acceptedGroupKinds: groupKinds} } +// NewCoercingMultiGroupVersioner returns the provided group version for any incoming kind. +// Incoming kinds that match the provided groupKinds are preferred. +// Kind may be empty in the provided group kind, in which case any kind will match. +// Examples: +// gv=mygroup/__internal, groupKinds=mygroup/Foo, anothergroup/Bar +// KindForGroupVersionKinds(yetanother/v1/Baz, anothergroup/v1/Bar) -> mygroup/__internal/Bar (matched preferred group/kind) +// +// gv=mygroup/__internal, groupKinds=mygroup, anothergroup +// KindForGroupVersionKinds(yetanother/v1/Baz, anothergroup/v1/Bar) -> mygroup/__internal/Bar (matched preferred group) +// +// gv=mygroup/__internal, groupKinds=mygroup, anothergroup +// KindForGroupVersionKinds(yetanother/v1/Baz, yetanother/v1/Bar) -> mygroup/__internal/Baz (no preferred group/kind match, uses first kind in list) +func NewCoercingMultiGroupVersioner(gv schema.GroupVersion, groupKinds ...schema.GroupKind) GroupVersioner { + return multiGroupVersioner{target: gv, acceptedGroupKinds: groupKinds, coerce: true} +} + // KindForGroupVersionKinds returns the target group version if any kind matches any of the original group kinds. It will // use the originating kind where possible. func (v multiGroupVersioner) KindForGroupVersionKinds(kinds []schema.GroupVersionKind) (schema.GroupVersionKind, bool) { @@ -308,5 +325,8 @@ func (v multiGroupVersioner) KindForGroupVersionKinds(kinds []schema.GroupVersio return v.target.WithKind(src.Kind), true } } + if v.coerce && len(kinds) > 0 { + return v.target.WithKind(kinds[0].Kind), true + } return schema.GroupVersionKind{}, false } diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/streaming.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/streaming.go index 91fd4ed4..a60a7c04 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/streaming.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/streaming.go @@ -64,7 +64,7 @@ func NewDecoder(r io.ReadCloser, d runtime.Decoder) Decoder { reader: r, decoder: d, buf: make([]byte, 1024), - maxBytes: 1024 * 1024, + maxBytes: 16 * 1024 * 1024, } } diff --git a/vendor/k8s.io/client-go/rest/config.go b/vendor/k8s.io/client-go/rest/config.go index 438eb3be..072e7392 100644 --- a/vendor/k8s.io/client-go/rest/config.go +++ b/vendor/k8s.io/client-go/rest/config.go @@ -70,6 +70,11 @@ type Config struct { // TODO: demonstrate an OAuth2 compatible client. BearerToken string + // Path to a file containing a BearerToken. + // If set, the contents are periodically read. + // The last successfully read value takes precedence over BearerToken. + BearerTokenFile string + // Impersonate is the configuration that RESTClient will use for impersonation. Impersonate ImpersonationConfig @@ -322,9 +327,8 @@ func InClusterConfig() (*Config, error) { return nil, ErrNotInCluster } - ts := NewCachedFileTokenSource(tokenFile) - - if _, err := ts.Token(); err != nil { + token, err := ioutil.ReadFile(tokenFile) + if err != nil { return nil, err } @@ -340,7 +344,8 @@ func InClusterConfig() (*Config, error) { // TODO: switch to using cluster DNS. Host: "https://" + net.JoinHostPort(host, port), TLSClientConfig: tlsClientConfig, - WrapTransport: TokenSourceWrapTransport(ts), + BearerToken: string(token), + BearerTokenFile: tokenFile, }, nil } @@ -430,12 +435,13 @@ func AnonymousClientConfig(config *Config) *Config { // CopyConfig returns a copy of the given config func CopyConfig(config *Config) *Config { return &Config{ - Host: config.Host, - APIPath: config.APIPath, - ContentConfig: config.ContentConfig, - Username: config.Username, - Password: config.Password, - BearerToken: config.BearerToken, + Host: config.Host, + APIPath: config.APIPath, + ContentConfig: config.ContentConfig, + Username: config.Username, + Password: config.Password, + BearerToken: config.BearerToken, + BearerTokenFile: config.BearerTokenFile, Impersonate: ImpersonationConfig{ Groups: config.Impersonate.Groups, Extra: config.Impersonate.Extra, diff --git a/vendor/k8s.io/client-go/tools/clientcmd/client_config.go b/vendor/k8s.io/client-go/tools/clientcmd/client_config.go index dea229c9..a7b8c1c6 100644 --- a/vendor/k8s.io/client-go/tools/clientcmd/client_config.go +++ b/vendor/k8s.io/client-go/tools/clientcmd/client_config.go @@ -229,11 +229,12 @@ func (config *DirectClientConfig) getUserIdentificationPartialConfig(configAuthI if len(configAuthInfo.Token) > 0 { mergedConfig.BearerToken = configAuthInfo.Token } else if len(configAuthInfo.TokenFile) > 0 { - ts := restclient.NewCachedFileTokenSource(configAuthInfo.TokenFile) - if _, err := ts.Token(); err != nil { + tokenBytes, err := ioutil.ReadFile(configAuthInfo.TokenFile) + if err != nil { return nil, err } - mergedConfig.WrapTransport = restclient.TokenSourceWrapTransport(ts) + mergedConfig.BearerToken = string(tokenBytes) + mergedConfig.BearerTokenFile = configAuthInfo.TokenFile } if len(configAuthInfo.Impersonate) > 0 { mergedConfig.Impersonate = restclient.ImpersonationConfig{ diff --git a/vendor/k8s.io/client-go/transport/config.go b/vendor/k8s.io/client-go/transport/config.go index 4081c23e..acb126d8 100644 --- a/vendor/k8s.io/client-go/transport/config.go +++ b/vendor/k8s.io/client-go/transport/config.go @@ -39,6 +39,11 @@ type Config struct { // Bearer token for authentication BearerToken string + // Path to a file containing a BearerToken. + // If set, the contents are periodically read. + // The last successfully read value takes precedence over BearerToken. + BearerTokenFile string + // Impersonate is the config that this Config will impersonate using Impersonate ImpersonationConfig @@ -80,7 +85,7 @@ func (c *Config) HasBasicAuth() bool { // HasTokenAuth returns whether the configuration has token authentication or not. func (c *Config) HasTokenAuth() bool { - return len(c.BearerToken) != 0 + return len(c.BearerToken) != 0 || len(c.BearerTokenFile) != 0 } // HasCertAuth returns whether the configuration has certificate authentication or not. diff --git a/vendor/k8s.io/client-go/transport/round_trippers.go b/vendor/k8s.io/client-go/transport/round_trippers.go index da417cf9..117a9c8c 100644 --- a/vendor/k8s.io/client-go/transport/round_trippers.go +++ b/vendor/k8s.io/client-go/transport/round_trippers.go @@ -22,6 +22,7 @@ import ( "strings" "time" + "golang.org/x/oauth2" "k8s.io/klog" utilnet "k8s.io/apimachinery/pkg/util/net" @@ -44,7 +45,11 @@ func HTTPWrappersForConfig(config *Config, rt http.RoundTripper) (http.RoundTrip case config.HasBasicAuth() && config.HasTokenAuth(): return nil, fmt.Errorf("username/password or bearer token may be set, but not both") case config.HasTokenAuth(): - rt = NewBearerAuthRoundTripper(config.BearerToken, rt) + var err error + rt, err = NewBearerAuthWithRefreshRoundTripper(config.BearerToken, config.BearerTokenFile, rt) + if err != nil { + return nil, err + } case config.HasBasicAuth(): rt = NewBasicAuthRoundTripper(config.Username, config.Password, rt) } @@ -265,13 +270,35 @@ func (rt *impersonatingRoundTripper) WrappedRoundTripper() http.RoundTripper { r type bearerAuthRoundTripper struct { bearer string + source oauth2.TokenSource rt http.RoundTripper } // NewBearerAuthRoundTripper adds the provided bearer token to a request // unless the authorization header has already been set. func NewBearerAuthRoundTripper(bearer string, rt http.RoundTripper) http.RoundTripper { - return &bearerAuthRoundTripper{bearer, rt} + return &bearerAuthRoundTripper{bearer, nil, rt} +} + +// NewBearerAuthRoundTripper adds the provided bearer token to a request +// unless the authorization header has already been set. +// If tokenFile is non-empty, it is periodically read, +// and the last successfully read content is used as the bearer token. +// If tokenFile is non-empty and bearer is empty, the tokenFile is read +// immediately to populate the initial bearer token. +func NewBearerAuthWithRefreshRoundTripper(bearer string, tokenFile string, rt http.RoundTripper) (http.RoundTripper, error) { + if len(tokenFile) == 0 { + return &bearerAuthRoundTripper{bearer, nil, rt}, nil + } + source := NewCachedFileTokenSource(tokenFile) + if len(bearer) == 0 { + token, err := source.Token() + if err != nil { + return nil, err + } + bearer = token.AccessToken + } + return &bearerAuthRoundTripper{bearer, source, rt}, nil } func (rt *bearerAuthRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { @@ -280,7 +307,13 @@ func (rt *bearerAuthRoundTripper) RoundTrip(req *http.Request) (*http.Response, } req = utilnet.CloneRequest(req) - req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", rt.bearer)) + token := rt.bearer + if rt.source != nil { + if refreshedToken, err := rt.source.Token(); err == nil { + token = refreshedToken.AccessToken + } + } + req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", token)) return rt.rt.RoundTrip(req) } diff --git a/vendor/k8s.io/client-go/rest/token_source.go b/vendor/k8s.io/client-go/transport/token_source.go similarity index 87% rename from vendor/k8s.io/client-go/rest/token_source.go rename to vendor/k8s.io/client-go/transport/token_source.go index c251b5eb..8595df27 100644 --- a/vendor/k8s.io/client-go/rest/token_source.go +++ b/vendor/k8s.io/client-go/transport/token_source.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package rest +package transport import ( "fmt" @@ -47,14 +47,14 @@ func TokenSourceWrapTransport(ts oauth2.TokenSource) func(http.RoundTripper) htt func NewCachedFileTokenSource(path string) oauth2.TokenSource { return &cachingTokenSource{ now: time.Now, - leeway: 1 * time.Minute, + leeway: 10 * time.Second, base: &fileTokenSource{ path: path, - // This period was picked because it is half of the minimum validity - // duration for a token provisioned by they TokenRequest API. This is - // unsophisticated and should induce rotation at a frequency that should - // work with the token volume source. - period: 5 * time.Minute, + // This period was picked because it is half of the duration between when the kubelet + // refreshes a projected service account token and when the original token expires. + // Default token lifetime is 10 minutes, and the kubelet starts refreshing at 80% of lifetime. + // This should induce re-reading at a frequency that works with the token volume source. + period: time.Minute, }, } }