diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index 00a29df2877b..4d7d06ee491d 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -387,32 +387,32 @@ }, { "ImportPath": "github.com/containernetworking/cni/libcni", - "Comment": "spec-v0.3.1", + "Comment": "v0.5.2", "Rev": "137b4975ecab6e1f0c24c1e3c228a50a3cfba75e" }, { "ImportPath": "github.com/containernetworking/cni/pkg/invoke", - "Comment": "spec-v0.3.1", + "Comment": "v0.5.2", "Rev": "137b4975ecab6e1f0c24c1e3c228a50a3cfba75e" }, { "ImportPath": "github.com/containernetworking/cni/pkg/types", - "Comment": "spec-v0.3.1", + "Comment": "v0.5.2", "Rev": "137b4975ecab6e1f0c24c1e3c228a50a3cfba75e" }, { "ImportPath": "github.com/containernetworking/cni/pkg/types/020", - "Comment": "spec-v0.3.1", + "Comment": "v0.5.2", "Rev": "137b4975ecab6e1f0c24c1e3c228a50a3cfba75e" }, { "ImportPath": "github.com/containernetworking/cni/pkg/types/current", - "Comment": "spec-v0.3.1", + "Comment": "v0.5.2", "Rev": "137b4975ecab6e1f0c24c1e3c228a50a3cfba75e" }, { "ImportPath": "github.com/containernetworking/cni/pkg/version", - "Comment": "spec-v0.3.1", + "Comment": "v0.5.2", "Rev": "137b4975ecab6e1f0c24c1e3c228a50a3cfba75e" }, { @@ -1190,32 +1190,26 @@ }, { "ImportPath": "github.com/golang/protobuf/jsonpb", - "Comment": "list-38-g4bd1920", "Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" }, { "ImportPath": "github.com/golang/protobuf/proto", - "Comment": "list-38-g4bd1920", "Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" }, { "ImportPath": "github.com/golang/protobuf/ptypes", - "Comment": "list-38-g4bd1920", "Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" }, { "ImportPath": "github.com/golang/protobuf/ptypes/any", - "Comment": "list-38-g4bd1920", "Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" }, { "ImportPath": "github.com/golang/protobuf/ptypes/duration", - "Comment": "list-38-g4bd1920", "Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" }, { "ImportPath": "github.com/golang/protobuf/ptypes/timestamp", - "Comment": "list-38-g4bd1920", "Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" }, { @@ -1690,7 +1684,6 @@ }, { "ImportPath": "github.com/inconshreveable/mousetrap", - "Comment": "v1.0", "Rev": "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75" }, { @@ -1943,7 +1936,6 @@ }, { "ImportPath": "github.com/pelletier/go-buffruneio", - "Comment": "v0.1.0", "Rev": "df1e16fde7fc330a0ca68167c23bf7ed6ac31d6d" }, { @@ -2010,17 +2002,17 @@ }, { "ImportPath": "github.com/r2d4/external-storage/lib/controller", - "Comment": "v1.0.0-20-g066bf16", + "Comment": "v1.0.0-20-g066bf161", "Rev": "066bf1613ae2b6e7024ba94fffca35f8b3c83f5b" }, { "ImportPath": "github.com/r2d4/external-storage/lib/leaderelection", - "Comment": "v1.0.0-20-g066bf16", + "Comment": "v1.0.0-20-g066bf161", "Rev": "066bf1613ae2b6e7024ba94fffca35f8b3c83f5b" }, { "ImportPath": "github.com/r2d4/external-storage/lib/leaderelection/resourcelock", - "Comment": "v1.0.0-20-g066bf16", + "Comment": "v1.0.0-20-g066bf161", "Rev": "066bf1613ae2b6e7024ba94fffca35f8b3c83f5b" }, { @@ -2207,7 +2199,7 @@ }, { "ImportPath": "github.com/spf13/viper", - "Rev": "25b30aa063fc18e48662b86996252eabdcf2f0c7" + "Rev": "7fb2782df3d83e0036cc89f461ed0422628776f4" }, { "ImportPath": "github.com/square/go-jose", @@ -2369,7 +2361,6 @@ }, { "ImportPath": "github.com/xiang90/probing", - "Comment": "0.0.1", "Rev": "07dd2e8dfe18522e9c447ba95f2fe95262f63bb2" }, { @@ -2708,3353 +2699,3353 @@ }, { "ImportPath": "k8s.io/kubernetes/cmd/kube-apiserver/app", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/cmd/kube-apiserver/app/options", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/cmd/kube-apiserver/app/preflight", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/cmd/kube-controller-manager/app", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/cmd/kube-controller-manager/app/options", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/cmd/kube-proxy/app", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/cmd/kubeadm/app/constants", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/cmd/kubelet/app", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/cmd/kubelet/app/options", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/federation/apis/federation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/federation/apis/federation/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/federation/apis/federation/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/scheme", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/autoscaling/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/batch/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/core/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/extensions/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/federation/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/endpoints", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/events", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/helper", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/helper/qos", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/persistentvolume", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/pod", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/ref", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/resource", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/service", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/util", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/v1/endpoints", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/v1/helper", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/v1/helper/qos", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/v1/node", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/v1/pod", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/v1/ref", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/v1/resource", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/v1/service", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/v1/validation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/validation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/abac", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/abac/latest", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/abac/v0", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/abac/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/admission", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/admission/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/admission/v1alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/admissionregistration", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/admissionregistration/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/admissionregistration/v1alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/admissionregistration/validation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/apps", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/apps/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/apps/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/apps/validation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/authentication", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/authentication/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/authentication/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/authentication/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/authorization", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/authorization/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/authorization/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/authorization/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/authorization/validation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/autoscaling", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/autoscaling/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/autoscaling/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/autoscaling/v2alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/autoscaling/validation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/batch", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/batch/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/batch/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/batch/v2alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/batch/validation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/certificates", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/certificates/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/certificates/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/certificates/validation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/componentconfig", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/componentconfig/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/extensions", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/extensions/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/extensions/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/extensions/validation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/imagepolicy", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/imagepolicy/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/imagepolicy/v1alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/networking", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/networking/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/networking/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/networking/validation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/policy", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/policy/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/policy/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/policy/validation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/rbac", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/rbac/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/rbac/v1alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/rbac/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/rbac/validation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/settings", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/settings/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/settings/v1alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/settings/validation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/storage/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/storage/util", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/storage/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/storage/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/storage/validation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/auth/authorizer/abac", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/auth/nodeidentifier", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/bootstrap/api", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/capabilities", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/chaosclient", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/scheme", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/admissionregistration/v1alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/apps/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/authentication/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/authentication/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/authorization/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/authorization/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/autoscaling/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/autoscaling/v2alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/batch/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/batch/v2alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/certificates/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/extensions/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/networking/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/policy/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/rbac/v1alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/rbac/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/settings/v1alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/storage/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/storage/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authentication/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authorization/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/autoscaling/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/batch/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/certificates/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/networking/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/policy/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/rbac/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/settings/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/storage/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/admissionregistration", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/admissionregistration/v1alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/apps", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/apps/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/autoscaling", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/autoscaling/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/autoscaling/v2alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/batch", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/batch/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/batch/v2alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/certificates", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/certificates/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/core", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/core/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/extensions", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/extensions/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/internalinterfaces", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/networking", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/networking/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/policy", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/policy/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/rbac", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/rbac/v1alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/rbac/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/settings", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/settings/v1alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/storage/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/storage/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/admissionregistration", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/apps", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/apps/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/autoscaling", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/autoscaling/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/batch", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/batch/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/certificates", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/certificates/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/core", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/core/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/extensions", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/extensions/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/networking", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/networking/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/policy", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/policy/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/rbac", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/rbac/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/settings", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/settings/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/storage/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/leaderelection", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/leaderelection/resourcelock", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/admissionregistration/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/admissionregistration/v1alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/apps/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/apps/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/autoscaling/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/autoscaling/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/autoscaling/v2alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/batch/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/batch/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/batch/v2alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/certificates/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/certificates/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/core/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/core/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/extensions/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/extensions/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/networking/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/networking/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/policy/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/policy/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/rbac/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/rbac/v1alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/rbac/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/settings/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/settings/v1alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/storage/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/storage/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/storage/v1beta1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/retry", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/unversioned", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/aws", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/azure", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/cloudstack", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/gce", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/mesos", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/openstack", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/ovirt", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/photon", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/rackspace", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/bootstrap", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/certificates", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/certificates/approver", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/certificates/signer", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/cronjob", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/daemon", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/daemon/util", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/deployment", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/deployment/util", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/disruption", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/endpoint", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/garbagecollector", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/garbagecollector/metaonly", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/history", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/job", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/namespace", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/namespace/deletion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/node", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/podautoscaler", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/podautoscaler/metrics", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/podgc", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/replicaset", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/replication", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/resourcequota", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/route", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/service", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/serviceaccount", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/statefulset", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/ttl", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/volume/attachdetach", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/volume/attachdetach/populator", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/volume/attachdetach/reconciler", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/volume/attachdetach/statusupdater", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/volume/attachdetach/util", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/volume/events", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/volume/persistentvolume", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/credentialprovider", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/credentialprovider/aws", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/credentialprovider/azure", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/credentialprovider/gcp", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/credentialprovider/rancher", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/features", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/fieldpath", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/generated/openapi", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubeapiserver", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubeapiserver/admission", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubeapiserver/admission/configuration", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubeapiserver/authenticator", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubeapiserver/authorizer", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubeapiserver/authorizer/modes", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubeapiserver/options", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubeapiserver/server", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubectl", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubectl/cmd/util", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubectl/plugins", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubectl/resource", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubectl/util", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/cri", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/cadvisor", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/certificate", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/client", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/cm", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/cm/util", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/config", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/configmap", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/container", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim/cm", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim/errors", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim/remote", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim/securitycontext", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/envvars", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/events", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/eviction", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/eviction/api", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/gpu", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/gpu/nvidia", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/images", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/kuberuntime", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/leaky", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/lifecycle", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/metrics", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/network", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/network/cni", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/network/hairpin", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/network/hostport", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/network/kubenet", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/pleg", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/pod", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/preemption", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/prober", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/prober/results", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/qos", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/remote", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/rkt", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/secret", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/server", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/server/portforward", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/server/remotecommand", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/server/stats", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/server/streaming", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/status", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/sysctl", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/types", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/util", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/cache", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/csr", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/format", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/ioutils", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/queue", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/sliceutils", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/volumemanager", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/volumemanager/cache", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/volumemanager/populator", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/volumemanager/reconciler", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/master", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/master/ports", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/master/thirdparty", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/master/tunneler", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/printers", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/printers/internalversion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/printers/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/probe", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/probe/exec", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/probe/http", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/probe/tcp", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy/config", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy/healthcheck", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy/iptables", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy/userspace", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy/util", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy/winuserspace", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/quota", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/quota/evaluator/core", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/quota/generic", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/quota/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/admissionregistration/externaladmissionhookconfiguration", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/admissionregistration/externaladmissionhookconfiguration/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/admissionregistration/initializerconfiguration", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/admissionregistration/initializerconfiguration/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/admissionregistration/rest", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/apps/controllerrevision", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/apps/controllerrevision/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/apps/rest", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/apps/statefulset", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/apps/statefulset/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/authentication/rest", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/authentication/tokenreview", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/authorization/localsubjectaccessreview", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/authorization/rest", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/authorization/selfsubjectaccessreview", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/authorization/subjectaccessreview", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/authorization/util", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/autoscaling/horizontalpodautoscaler", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/autoscaling/horizontalpodautoscaler/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/autoscaling/rest", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/batch/cronjob", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/batch/cronjob/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/batch/job", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/batch/job/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/batch/rest", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/cachesize", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/certificates/certificates", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/certificates/certificates/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/certificates/rest", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/componentstatus", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/configmap", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/configmap/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/endpoint", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/endpoint/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/event", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/event/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/limitrange", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/limitrange/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/namespace", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/namespace/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/node", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/node/rest", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/node/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/persistentvolume", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/persistentvolume/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/persistentvolumeclaim", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/persistentvolumeclaim/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/pod", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/pod/rest", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/pod/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/podtemplate", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/podtemplate/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/rangeallocation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/replicationcontroller", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/replicationcontroller/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/resourcequota", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/resourcequota/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/rest", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/secret", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/secret/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/service", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/service/allocator", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/service/allocator/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/service/ipallocator", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/service/ipallocator/controller", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/service/portallocator", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/service/portallocator/controller", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/service/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/serviceaccount", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/core/serviceaccount/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/controller/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/daemonset", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/daemonset/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/deployment", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/deployment/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/ingress", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/ingress/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/networkpolicy", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/networkpolicy/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/podsecuritypolicy", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/podsecuritypolicy/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/replicaset", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/replicaset/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/rest", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/thirdpartyresource", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/thirdpartyresource/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/thirdpartyresourcedata", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/thirdpartyresourcedata/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/networking/networkpolicy", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/networking/networkpolicy/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/networking/rest", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/policy/poddisruptionbudget", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/policy/poddisruptionbudget/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/policy/rest", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/rbac", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/clusterrole", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/clusterrole/policybased", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/clusterrole/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/clusterrolebinding", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/clusterrolebinding/policybased", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/clusterrolebinding/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/reconciliation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/rest", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/role", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/role/policybased", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/role/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/rolebinding", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/rolebinding/policybased", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/rolebinding/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/validation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/settings/podpreset", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/settings/podpreset/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/settings/rest", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/storage/rest", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/storage/storageclass", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/storage/storageclass/storage", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/routes", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/security/apparmor", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy/apparmor", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy/capabilities", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy/group", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy/seccomp", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy/selinux", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy/sysctl", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy/user", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy/util", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/securitycontext", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/serviceaccount", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/ssh", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/async", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/bandwidth", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/config", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/configz", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/dbus", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/ebtables", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/env", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/exec", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/flock", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/goroutinemap", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/goroutinemap/exponentialbackoff", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/hash", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/interrupt", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/io", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/ipconfig", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/iptables", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/keymutex", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/labels", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/limitwriter", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/maps", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/metrics", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/mount", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/net/sets", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/netsh", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/node", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/oom", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/parsers", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/procfs", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/removeall", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/resourcecontainer", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/rlimit", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/selinux", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/slice", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/strings", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/sysctl", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/system", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/tail", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/taints", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/term", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/tolerations", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/version", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/workqueue/prometheus", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/version", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/version/verflag", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/aws_ebs", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/azure_dd", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/azure_file", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/cephfs", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/cinder", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/configmap", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/downwardapi", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/empty_dir", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/fc", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/flexvolume", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/flocker", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/gce_pd", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/git_repo", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/glusterfs", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/host_path", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/iscsi", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/local", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/nfs", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/photon_pd", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/portworx", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/projected", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/quobyte", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/rbd", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/scaleio", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/secret", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/storageos", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/util", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/util/nestedpendingoperations", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/util/operationexecutor", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/util/types", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/util/volumehelper", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/validation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/vsphere_volume", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/cmd/kube-scheduler/app", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/cmd/kube-scheduler/app/options", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/admit", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/alwayspullimages", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/antiaffinity", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/defaulttolerationseconds", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/deny", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/exec", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/gc", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/imagepolicy", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/initialization", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/initialresources", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/limitranger", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/namespace/autoprovision", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/namespace/exists", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/noderestriction", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/persistentvolume/label", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/podnodeselector", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/podpreset", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/v1alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/validation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/resourcequota", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/resourcequota/apis/resourcequota", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/resourcequota/apis/resourcequota/install", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/resourcequota/apis/resourcequota/v1alpha1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/resourcequota/apis/resourcequota/validation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/security/podsecuritypolicy", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/securitycontext/scdeny", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/serviceaccount", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/storageclass/setdefault", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/webhook", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/auth/authenticator/token/bootstrap", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/auth/authorizer/node", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/auth/authorizer/rbac", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/auth/authorizer/rbac/bootstrappolicy", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/predicates", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/priorities", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/priorities/util", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/algorithmprovider", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/algorithmprovider/defaults", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/api", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/api/latest", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/api/v1", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/api/validation", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/core", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/factory", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/metrics", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/schedulercache", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/util", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/third_party/forked/golang/expansion", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/third_party/forked/gonum/graph", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/third_party/forked/gonum/graph/internal/linear", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/third_party/forked/gonum/graph/simple", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "k8s.io/kubernetes/third_party/forked/gonum/graph/traverse", - "Comment": "v1.7.4", - "Rev": "793658f2d7ca7f064d2bdf606519f9fe1229c381" + "Comment": "v1.7.5", + "Rev": "17d7182a7ccbb167074be7a87f0a68bd00d58d97" }, { "ImportPath": "vbom.ml/util/sortorder", diff --git a/vendor/github.com/spf13/viper/.gitignore b/vendor/github.com/spf13/viper/.gitignore index 352a34a566c5..836562412fe8 100644 --- a/vendor/github.com/spf13/viper/.gitignore +++ b/vendor/github.com/spf13/viper/.gitignore @@ -21,4 +21,3 @@ _testmain.go *.exe *.test -*.bench \ No newline at end of file diff --git a/vendor/github.com/spf13/viper/.travis.yml b/vendor/github.com/spf13/viper/.travis.yml index f1deac3d74fa..e793edbab85f 100644 --- a/vendor/github.com/spf13/viper/.travis.yml +++ b/vendor/github.com/spf13/viper/.travis.yml @@ -2,8 +2,9 @@ go_import_path: github.com/spf13/viper language: go go: - - 1.7.5 - - 1.8 + - 1.5.4 + - 1.6.3 + - 1.7 - tip os: @@ -17,7 +18,6 @@ matrix: script: - go install ./... - - diff -u <(echo -n) <(gofmt -d .) - go test -v ./... after_success: diff --git a/vendor/github.com/spf13/viper/README.md b/vendor/github.com/spf13/viper/README.md index 848d92d6b87b..4ebd8ddb8155 100644 --- a/vendor/github.com/spf13/viper/README.md +++ b/vendor/github.com/spf13/viper/README.md @@ -6,19 +6,18 @@ Many Go projects are built using Viper including: * [Hugo](http://gohugo.io) * [EMC RexRay](http://rexray.readthedocs.org/en/stable/) -* [Imgur’s Incus](https://github.com/Imgur/incus) +* [Imgur's Incus](https://github.com/Imgur/incus) * [Nanobox](https://github.com/nanobox-io/nanobox)/[Nanopack](https://github.com/nanopack) * [Docker Notary](https://github.com/docker/Notary) * [BloomApi](https://www.bloomapi.com/) -* [doctl](https://github.com/digitalocean/doctl) -* [Clairctl](https://github.com/jgsqware/clairctl) +* [doctl(https://github.com/digitalocean/doctl) -[![Build Status](https://travis-ci.org/spf13/viper.svg)](https://travis-ci.org/spf13/viper) [![Join the chat at https://gitter.im/spf13/viper](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/spf13/viper?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![GoDoc](https://godoc.org/github.com/spf13/viper?status.svg)](https://godoc.org/github.com/spf13/viper) + [![Build Status](https://travis-ci.org/spf13/viper.svg)](https://travis-ci.org/spf13/viper) [![Join the chat at https://gitter.im/spf13/viper](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/spf13/viper?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) ## What is Viper? -Viper is a complete configuration solution for Go applications including 12-Factor apps. It is designed +Viper is a complete configuration solution for go applications including 12 factor apps. It is designed to work within an application, and can handle all types of configuration needs and formats. It supports: @@ -69,7 +68,7 @@ Viper configuration keys are case insensitive. ### Establishing Defaults A good configuration system will support default values. A default value is not -required for a key, but it’s useful in the event that a key hasn’t been set via +required for a key, but it's useful in the event that a key hasn’t been set via config file, environment variable, remote configuration or flag. Examples: @@ -111,16 +110,16 @@ Gone are the days of needing to restart a server to have a config take effect, viper powered applications can read an update to a config file while running and not miss a beat. -Simply tell the viper instance to watchConfig. +Simply tell the viper instance to watchConfig. Optionally you can provide a function for Viper to run each time a change occurs. **Make sure you add all of the configPaths prior to calling `WatchConfig()`** ```go -viper.WatchConfig() -viper.OnConfigChange(func(e fsnotify.Event) { - fmt.Println("Config file changed:", e.Name) -}) + viper.WatchConfig() + viper.OnConfigChange(func(e fsnotify.Event) { + fmt.Println("Config file changed:", e.Name) + }) ``` ### Reading Config from io.Reader @@ -237,7 +236,7 @@ Like `BindEnv`, the value is not set when the binding method is called, but when it is accessed. This means you can bind as early as you want, even in an `init()` function. -For individual flags, the `BindPFlag()` method provides this functionality. +The `BindPFlag()` method provides this functionality. Example: @@ -246,19 +245,6 @@ serverCmd.Flags().Int("port", 1138, "Port to run Application server on") viper.BindPFlag("port", serverCmd.Flags().Lookup("port")) ``` -You can also bind an existing set of pflags (pflag.FlagSet): - -Example: - -```go -pflag.Int("flagname", 1234, "help message for flagname") - -pflag.Parse() -viper.BindPFlags(pflag.CommandLine) - -i := viper.GetInt("flagname") // retrieve values from viper instead of pflag -``` - The use of [pflag](https://github.com/spf13/pflag/) in Viper does not preclude the use of other packages that use the [flag](https://golang.org/pkg/flag/) package from the standard library. The pflag package can handle the flags @@ -277,32 +263,24 @@ import ( ) func main() { - - // using standard library "flag" package - flag.Int("flagname", 1234, "help message for flagname") - pflag.CommandLine.AddGoFlagSet(flag.CommandLine) pflag.Parse() - viper.BindPFlags(pflag.CommandLine) - - i := viper.GetInt("flagname") // retrieve value from viper - - ... + ... } ``` #### Flag interfaces -Viper provides two Go interfaces to bind other flag systems if you don’t use `Pflags`. +Viper provides two Go interfaces to bind other flag systems if you don't use `Pflags`. `FlagValue` represents a single flag. This is a very simple example on how to implement this interface: ```go type myFlag struct {} -func (f myFlag) HasChanged() bool { return false } -func (f myFlag) Name() string { return "my-flag-name" } -func (f myFlag) ValueString() string { return "my-flag-value" } -func (f myFlag) ValueType() string { return "string" } +func (f myFlag) IsChanged() { return false } +func (f myFlag) Name() { return "my-flag-name" } +func (f myFlag) ValueString() { return "my-flag-value" } +func (f myFlag) ValueType() { return "string" } ``` Once your flag implements this interface, you can simply tell Viper to bind it: @@ -320,7 +298,7 @@ type myFlagSet struct { func (f myFlagSet) VisitAll(fn func(FlagValue)) { for _, flag := range flags { - fn(flag) + fn(flag) } } ``` @@ -423,7 +401,7 @@ go func(){ ## Getting Values From Viper -In Viper, there are a few ways to get a value depending on the value’s type. +In Viper, there are a few ways to get a value depending on the value's type. The following functions and methods exist: * `Get(key string) : interface{}` @@ -480,17 +458,16 @@ Viper can access a nested field by passing a `.` delimited path of keys: GetString("datastore.metric.host") // (returns "127.0.0.1") ``` -This obeys the precedence rules established above; the search for the path -will cascade through the remaining configuration registries until found. +This obeys the precedence rules established above; the search for the root key +(in this example, `datastore`) will cascade through the remaining configuration +registries until found. The search for the sub-keys (`metric` and `host`), +however, will not. -For example, given this configuration file, both `datastore.metric.host` and -`datastore.metric.port` are already defined (and may be overridden). If in addition -`datastore.metric.protocol` was defined in the defaults, Viper would also find it. +For example, if the `metric` key was not defined in the configuration loaded +from file, but was defined in the defaults, Viper would return the zero value. -However, if `datastore.metric` was overridden (by a flag, an environment variable, -the `Set()` method, …) with an immediate value, then all sub-keys of -`datastore.metric` become undefined, they are “shadowed” by the higher-priority -configuration level. +On the other hand, if the primary key was not defined, Viper would go through +the remaining registries looking for it. Lastly, if there exists a key that matches the delimited key path, its value will be returned instead. E.g. @@ -514,7 +491,7 @@ will be returned instead. E.g. } } -GetString("datastore.metric.host") // returns "0.0.0.0" +GetString("datastore.metric.host") //returns "0.0.0.0" ``` ### Extract sub-tree @@ -553,7 +530,7 @@ func NewCache(cfg *Viper) *Cache {...} ``` which creates a cache based on config information formatted as `subv`. -Now it’s easy to create these 2 caches separately as: +Now it's easy to create these 2 caches separately as: ```go cfg1 := viper.Sub("app.cache1") @@ -597,13 +574,13 @@ initialization needed to begin using Viper. Since most applications will want to use a single central repository for their configuration, the viper package provides this. It is similar to a singleton. -In all of the examples above, they demonstrate using viper in its singleton +In all of the examples above, they demonstrate using viper in it's singleton style approach. ### Working with multiple vipers You can also create many different vipers for use in your application. Each will -have its own unique set of configurations and values. Each can read from a +have it’s own unique set of configurations and values. Each can read from a different config file, key value store, etc. All of the functions that viper package supports are mirrored as methods on a viper. diff --git a/vendor/github.com/spf13/viper/util.go b/vendor/github.com/spf13/viper/util.go index 3ebada91abdd..fe6cb4594631 100644 --- a/vendor/github.com/spf13/viper/util.go +++ b/vendor/github.com/spf13/viper/util.go @@ -29,68 +29,23 @@ import ( "gopkg.in/yaml.v2" ) -// ConfigParseError denotes failing to parse configuration file. +// Denotes failing to parse configuration file. type ConfigParseError struct { err error } -// Error returns the formatted configuration error. +// Returns the formatted configuration error. func (pe ConfigParseError) Error() string { return fmt.Sprintf("While parsing config: %s", pe.err.Error()) } -// toCaseInsensitiveValue checks if the value is a map; -// if so, create a copy and lower-case the keys recursively. -func toCaseInsensitiveValue(value interface{}) interface{} { - switch v := value.(type) { - case map[interface{}]interface{}: - value = copyAndInsensitiviseMap(cast.ToStringMap(v)) - case map[string]interface{}: - value = copyAndInsensitiviseMap(v) - } - - return value -} - -// copyAndInsensitiviseMap behaves like insensitiviseMap, but creates a copy of -// any map it makes case insensitive. -func copyAndInsensitiviseMap(m map[string]interface{}) map[string]interface{} { - nm := make(map[string]interface{}) - - for key, val := range m { - lkey := strings.ToLower(key) - switch v := val.(type) { - case map[interface{}]interface{}: - nm[lkey] = copyAndInsensitiviseMap(cast.ToStringMap(v)) - case map[string]interface{}: - nm[lkey] = copyAndInsensitiviseMap(v) - default: - nm[lkey] = v - } - } - - return nm -} - func insensitiviseMap(m map[string]interface{}) { for key, val := range m { - switch val.(type) { - case map[interface{}]interface{}: - // nested map: cast and recursively insensitivise - val = cast.ToStringMap(val) - insensitiviseMap(val.(map[string]interface{})) - case map[string]interface{}: - // nested map: recursively insensitivise - insensitiviseMap(val.(map[string]interface{})) - } - lower := strings.ToLower(key) if key != lower { - // remove old key (not lower-cased) delete(m, key) + m[lower] = val } - // update map - m[lower] = val } } @@ -113,10 +68,10 @@ func absPathify(inPath string) string { p, err := filepath.Abs(inPath) if err == nil { return filepath.Clean(p) + } else { + jww.ERROR.Println("Couldn't discover absolute path") + jww.ERROR.Println(err) } - - jww.ERROR.Println("Couldn't discover absolute path") - jww.ERROR.Println(err) return "" } @@ -152,6 +107,29 @@ func userHomeDir() string { return os.Getenv("HOME") } +func findCWD() (string, error) { + serverFile, err := filepath.Abs(os.Args[0]) + + if err != nil { + return "", fmt.Errorf("Can't get absolute path for executable: %v", err) + } + + path := filepath.Dir(serverFile) + realFile, err := filepath.EvalSymlinks(serverFile) + + if err != nil { + if _, err = os.Stat(serverFile + ".exe"); err == nil { + realFile = filepath.Clean(serverFile + ".exe") + } + } + + if err == nil && realFile != serverFile { + path = filepath.Dir(realFile) + } + + return path, nil +} + func unmarshallConfigReader(in io.Reader, c map[string]interface{}, configType string) error { buf := new(bytes.Buffer) buf.ReadFrom(in) @@ -194,12 +172,7 @@ func unmarshallConfigReader(in io.Reader, c map[string]interface{}, configType s } for _, key := range p.Keys() { value, _ := p.Get(key) - // recursively build nested maps - path := strings.Split(key, ".") - lastKey := strings.ToLower(path[len(path)-1]) - deepestMap := deepSearch(c, path[0:len(path)-1]) - // set innermost value - deepestMap[lastKey] = value + c[key] = value } } @@ -249,34 +222,3 @@ func parseSizeInBytes(sizeStr string) uint { return safeMul(uint(size), multiplier) } - -// deepSearch scans deep maps, following the key indexes listed in the -// sequence "path". -// The last value is expected to be another map, and is returned. -// -// In case intermediate keys do not exist, or map to a non-map value, -// a new map is created and inserted, and the search continues from there: -// the initial map "m" may be modified! -func deepSearch(m map[string]interface{}, path []string) map[string]interface{} { - for _, k := range path { - m2, ok := m[k] - if !ok { - // intermediate key does not exist - // => create it and continue from there - m3 := make(map[string]interface{}) - m[k] = m3 - m = m3 - continue - } - m3, ok := m2.(map[string]interface{}) - if !ok { - // intermediate key is a value - // => replace with a new map - m3 = make(map[string]interface{}) - m[k] = m3 - } - // continue search from here - m = m3 - } - return m -} diff --git a/vendor/github.com/spf13/viper/viper.go b/vendor/github.com/spf13/viper/viper.go index 2a221e53cb00..f17790e7607f 100644 --- a/vendor/github.com/spf13/viper/viper.go +++ b/vendor/github.com/spf13/viper/viper.go @@ -21,7 +21,6 @@ package viper import ( "bytes" - "encoding/csv" "fmt" "io" "log" @@ -41,11 +40,6 @@ import ( var v *Viper -type RemoteResponse struct { - Value []byte - Error error -} - func init() { v = New() } @@ -53,45 +47,45 @@ func init() { type remoteConfigFactory interface { Get(rp RemoteProvider) (io.Reader, error) Watch(rp RemoteProvider) (io.Reader, error) - WatchChannel(rp RemoteProvider) (<-chan *RemoteResponse, chan bool) } // RemoteConfig is optional, see the remote package var RemoteConfig remoteConfigFactory -// UnsupportedConfigError denotes encountering an unsupported +// Denotes encountering an unsupported // configuration filetype. type UnsupportedConfigError string -// Error returns the formatted configuration error. +// Returns the formatted configuration error. func (str UnsupportedConfigError) Error() string { return fmt.Sprintf("Unsupported Config Type %q", string(str)) } -// UnsupportedRemoteProviderError denotes encountering an unsupported remote -// provider. Currently only etcd and Consul are supported. +// Denotes encountering an unsupported remote +// provider. Currently only etcd and Consul are +// supported. type UnsupportedRemoteProviderError string -// Error returns the formatted remote provider error. +// Returns the formatted remote provider error. func (str UnsupportedRemoteProviderError) Error() string { return fmt.Sprintf("Unsupported Remote Provider Type %q", string(str)) } -// RemoteConfigError denotes encountering an error while trying to +// Denotes encountering an error while trying to // pull the configuration from the remote provider. type RemoteConfigError string -// Error returns the formatted remote provider error +// Returns the formatted remote provider error func (rce RemoteConfigError) Error() string { return fmt.Sprintf("Remote Configurations Error: %s", string(rce)) } -// ConfigFileNotFoundError denotes failing to find configuration file. +// Denotes failing to find configuration file. type ConfigFileNotFoundError struct { name, locations string } -// Error returns the formatted configuration error. +// Returns the formatted configuration error. func (fnfe ConfigFileNotFoundError) Error() string { return fmt.Sprintf("Config File %q Not Found in %q", fnfe.name, fnfe.locations) } @@ -113,11 +107,11 @@ func (fnfe ConfigFileNotFoundError) Error() string { // Defaults : { // "secret": "", // "user": "default", -// "endpoint": "https://localhost" +// "endpoint": "https://localhost" // } // Config : { // "user": "root" -// "secret": "defaultsecret" +// "secret": "defaultsecret" // } // Env : { // "secret": "somesecretkey" @@ -165,7 +159,7 @@ type Viper struct { onConfigChange func(fsnotify.Event) } -// New returns an initialized Viper instance. +// Returns an initialized Viper instance. func New() *Viper { v := new(Viper) v.keyDelim = "." @@ -226,11 +220,11 @@ type RemoteProvider interface { SecretKeyring() string } -// SupportedExts are universally supported extensions. -var SupportedExts = []string{"json", "toml", "yaml", "yml", "properties", "props", "prop", "hcl"} +// Universally supported extensions. +var SupportedExts []string = []string{"json", "toml", "yaml", "yml", "properties", "props", "prop", "hcl"} -// SupportedRemoteProviders are universally supported remote providers. -var SupportedRemoteProviders = []string{"etcd", "consul"} +// Universally supported remote providers. +var SupportedRemoteProviders []string = []string{"etcd", "consul"} func OnConfigChange(run func(in fsnotify.Event)) { v.OnConfigChange(run) } func (v *Viper) OnConfigChange(run func(in fsnotify.Event)) { @@ -247,13 +241,7 @@ func (v *Viper) WatchConfig() { defer watcher.Close() // we have to watch the entire directory to pick up renames/atomic saves in a cross-platform way - filename, err := v.getConfigFile() - if err != nil { - log.Println("error:", err) - return - } - - configFile := filepath.Clean(filename) + configFile := filepath.Clean(v.getConfigFile()) configDir, _ := filepath.Split(configFile) done := make(chan bool) @@ -282,8 +270,8 @@ func (v *Viper) WatchConfig() { }() } -// SetConfigFile explicitly defines the path, name and extension of the config file. -// Viper will use this and not check any of the config paths. +// Explicitly define the path, name and extension of the config file +// Viper will use this and not check any of the config paths func SetConfigFile(in string) { v.SetConfigFile(in) } func (v *Viper) SetConfigFile(in string) { if in != "" { @@ -291,9 +279,9 @@ func (v *Viper) SetConfigFile(in string) { } } -// SetEnvPrefix defines a prefix that ENVIRONMENT variables will use. -// E.g. if your prefix is "spf", the env registry will look for env -// variables that start with "SPF_". +// Define a prefix that ENVIRONMENT variables will use. +// E.g. if your prefix is "spf", the env registry +// will look for env. variables that start with "SPF_" func SetEnvPrefix(in string) { v.SetEnvPrefix(in) } func (v *Viper) SetEnvPrefix(in string) { if in != "" { @@ -311,11 +299,11 @@ func (v *Viper) mergeWithEnvPrefix(in string) string { // TODO: should getEnv logic be moved into find(). Can generalize the use of // rewriting keys many things, Ex: Get('someKey') -> some_key -// (camel case to snake case for JSON keys perhaps) +// (cammel case to snake case for JSON keys perhaps) -// getEnv is a wrapper around os.Getenv which replaces characters in the original -// key. This allows env vars which have different keys than the config object -// keys. +// getEnv s a wrapper around os.Getenv which replaces characters in the original +// key. This allows env vars which have different keys then the config object +// keys func (v *Viper) getEnv(key string) string { if v.envKeyReplacer != nil { key = v.envKeyReplacer.Replace(key) @@ -323,11 +311,11 @@ func (v *Viper) getEnv(key string) string { return os.Getenv(key) } -// ConfigFileUsed returns the file used to populate the config registry. +// Return the file used to populate the config registry func ConfigFileUsed() string { return v.ConfigFileUsed() } func (v *Viper) ConfigFileUsed() string { return v.configFile } -// AddConfigPath adds a path for Viper to search for the config file in. +// Add a path for Viper to search for the config file in. // Can be called multiple times to define multiple search paths. func AddConfigPath(in string) { v.AddConfigPath(in) } func (v *Viper) AddConfigPath(in string) { @@ -411,22 +399,23 @@ func (v *Viper) providerPathExists(p *defaultRemoteProvider) bool { return false } -// searchMap recursively searches for a value for path in source map. -// Returns nil if not found. -// Note: This assumes that the path entries and map keys are lower cased. func (v *Viper) searchMap(source map[string]interface{}, path []string) interface{} { + if len(path) == 0 { return source } - next, ok := source[path[0]] - if ok { - // Fast path - if len(path) == 1 { - return next + var ok bool + var next interface{} + for k, v := range source { + if strings.ToLower(k) == strings.ToLower(path[0]) { + ok = true + next = v + break } + } - // Nested case + if ok { switch next.(type) { case map[interface{}]interface{}: return v.searchMap(cast.ToStringMap(next), path[1:]) @@ -435,126 +424,11 @@ func (v *Viper) searchMap(source map[string]interface{}, path []string) interfac // if the type of `next` is the same as the type being asserted return v.searchMap(next.(map[string]interface{}), path[1:]) default: - // got a value but nested key expected, return "nil" for not found - return nil - } - } - return nil -} - -// searchMapWithPathPrefixes recursively searches for a value for path in source map. -// -// While searchMap() considers each path element as a single map key, this -// function searches for, and prioritizes, merged path elements. -// e.g., if in the source, "foo" is defined with a sub-key "bar", and "foo.bar" -// is also defined, this latter value is returned for path ["foo", "bar"]. -// -// This should be useful only at config level (other maps may not contain dots -// in their keys). -// -// Note: This assumes that the path entries and map keys are lower cased. -func (v *Viper) searchMapWithPathPrefixes(source map[string]interface{}, path []string) interface{} { - if len(path) == 0 { - return source - } - - // search for path prefixes, starting from the longest one - for i := len(path); i > 0; i-- { - prefixKey := strings.ToLower(strings.Join(path[0:i], v.keyDelim)) - - next, ok := source[prefixKey] - if ok { - // Fast path - if i == len(path) { - return next - } - - // Nested case - var val interface{} - switch next.(type) { - case map[interface{}]interface{}: - val = v.searchMapWithPathPrefixes(cast.ToStringMap(next), path[i:]) - case map[string]interface{}: - // Type assertion is safe here since it is only reached - // if the type of `next` is the same as the type being asserted - val = v.searchMapWithPathPrefixes(next.(map[string]interface{}), path[i:]) - default: - // got a value but nested key expected, do nothing and look for next prefix - } - if val != nil { - return val - } - } - } - - // not found - return nil -} - -// isPathShadowedInDeepMap makes sure the given path is not shadowed somewhere -// on its path in the map. -// e.g., if "foo.bar" has a value in the given map, it “shadows” -// "foo.bar.baz" in a lower-priority map -func (v *Viper) isPathShadowedInDeepMap(path []string, m map[string]interface{}) string { - var parentVal interface{} - for i := 1; i < len(path); i++ { - parentVal = v.searchMap(m, path[0:i]) - if parentVal == nil { - // not found, no need to add more path elements - return "" - } - switch parentVal.(type) { - case map[interface{}]interface{}: - continue - case map[string]interface{}: - continue - default: - // parentVal is a regular value which shadows "path" - return strings.Join(path[0:i], v.keyDelim) - } - } - return "" -} - -// isPathShadowedInFlatMap makes sure the given path is not shadowed somewhere -// in a sub-path of the map. -// e.g., if "foo.bar" has a value in the given map, it “shadows” -// "foo.bar.baz" in a lower-priority map -func (v *Viper) isPathShadowedInFlatMap(path []string, mi interface{}) string { - // unify input map - var m map[string]interface{} - switch mi.(type) { - case map[string]string, map[string]FlagValue: - m = cast.ToStringMap(mi) - default: - return "" - } - - // scan paths - var parentKey string - for i := 1; i < len(path); i++ { - parentKey = strings.Join(path[0:i], v.keyDelim) - if _, ok := m[parentKey]; ok { - return parentKey - } - } - return "" -} - -// isPathShadowedInAutoEnv makes sure the given path is not shadowed somewhere -// in the environment, when automatic env is on. -// e.g., if "foo.bar" has a value in the environment, it “shadows” -// "foo.bar.baz" in a lower-priority map -func (v *Viper) isPathShadowedInAutoEnv(path []string) string { - var parentKey string - var val string - for i := 1; i < len(path); i++ { - parentKey = strings.Join(path[0:i], v.keyDelim) - if val = v.getEnv(v.mergeWithEnvPrefix(parentKey)); val != "" { - return parentKey + return next } + } else { + return nil } - return "" } // SetTypeByDefaultValue enables or disables the inference of a key value's @@ -581,8 +455,8 @@ func GetViper() *Viper { return v } -// Get can retrieve any value given the key to use. -// Get is case-insensitive for a key. +// Viper is essentially repository for configurations +// Get can retrieve any value given the key to use // Get has the behavior of returning the value associated with the first // place from where it is set. Viper will check in the following order: // override, flag, env, config file, key/value store, default @@ -590,126 +464,151 @@ func GetViper() *Viper { // Get returns an interface. For a specific value use one of the Get____ methods. func Get(key string) interface{} { return v.Get(key) } func (v *Viper) Get(key string) interface{} { + path := strings.Split(key, v.keyDelim) + lcaseKey := strings.ToLower(key) val := v.find(lcaseKey) + if val == nil { - return nil + source := v.find(strings.ToLower(path[0])) + if source != nil { + if reflect.TypeOf(source).Kind() == reflect.Map { + val = v.searchMap(cast.ToStringMap(source), path[1:]) + } + } } - if v.typeByDefValue { - // TODO(bep) this branch isn't covered by a single test. - valType := val - path := strings.Split(lcaseKey, v.keyDelim) - defVal := v.searchMap(v.defaults, path) - if defVal != nil { - valType = defVal + // if no other value is returned and a flag does exist for the value, + // get the flag's value even if the flag's value has not changed + if val == nil { + if flag, exists := v.pflags[lcaseKey]; exists { + jww.TRACE.Println(key, "get pflag default", val) + switch flag.ValueType() { + case "int", "int8", "int16", "int32", "int64": + val = cast.ToInt(flag.ValueString()) + case "bool": + val = cast.ToBool(flag.ValueString()) + default: + val = flag.ValueString() + } } + } + + if val == nil { + return nil + } - switch valType.(type) { - case bool: - return cast.ToBool(val) - case string: - return cast.ToString(val) - case int64, int32, int16, int8, int: - return cast.ToInt(val) - case float64, float32: - return cast.ToFloat64(val) - case time.Time: - return cast.ToTime(val) - case time.Duration: - return cast.ToDuration(val) - case []string: - return cast.ToStringSlice(val) + var valType interface{} + if !v.typeByDefValue { + valType = val + } else { + defVal, defExists := v.defaults[lcaseKey] + if defExists { + valType = defVal + } else { + valType = val } } + switch valType.(type) { + case bool: + return cast.ToBool(val) + case string: + return cast.ToString(val) + case int64, int32, int16, int8, int: + return cast.ToInt(val) + case float64, float32: + return cast.ToFloat64(val) + case time.Time: + return cast.ToTime(val) + case time.Duration: + return cast.ToDuration(val) + case []string: + return cast.ToStringSlice(val) + } return val } -// Sub returns new Viper instance representing a sub tree of this instance. -// Sub is case-insensitive for a key. +// Returns new Viper instance representing a sub tree of this instance func Sub(key string) *Viper { return v.Sub(key) } func (v *Viper) Sub(key string) *Viper { subv := New() data := v.Get(key) - if data == nil { - return nil - } - if reflect.TypeOf(data).Kind() == reflect.Map { subv.config = cast.ToStringMap(data) return subv + } else { + return nil } - return nil } -// GetString returns the value associated with the key as a string. +// Returns the value associated with the key as a string func GetString(key string) string { return v.GetString(key) } func (v *Viper) GetString(key string) string { return cast.ToString(v.Get(key)) } -// GetBool returns the value associated with the key as a boolean. +// Returns the value associated with the key as a boolean func GetBool(key string) bool { return v.GetBool(key) } func (v *Viper) GetBool(key string) bool { return cast.ToBool(v.Get(key)) } -// GetInt returns the value associated with the key as an integer. +// Returns the value associated with the key as an integer func GetInt(key string) int { return v.GetInt(key) } func (v *Viper) GetInt(key string) int { return cast.ToInt(v.Get(key)) } -// GetInt64 returns the value associated with the key as an integer. +// Returns the value associated with the key as an integer func GetInt64(key string) int64 { return v.GetInt64(key) } func (v *Viper) GetInt64(key string) int64 { return cast.ToInt64(v.Get(key)) } -// GetFloat64 returns the value associated with the key as a float64. +// Returns the value associated with the key as a float64 func GetFloat64(key string) float64 { return v.GetFloat64(key) } func (v *Viper) GetFloat64(key string) float64 { return cast.ToFloat64(v.Get(key)) } -// GetTime returns the value associated with the key as time. +// Returns the value associated with the key as time func GetTime(key string) time.Time { return v.GetTime(key) } func (v *Viper) GetTime(key string) time.Time { return cast.ToTime(v.Get(key)) } -// GetDuration returns the value associated with the key as a duration. +// Returns the value associated with the key as a duration func GetDuration(key string) time.Duration { return v.GetDuration(key) } func (v *Viper) GetDuration(key string) time.Duration { return cast.ToDuration(v.Get(key)) } -// GetStringSlice returns the value associated with the key as a slice of strings. +// Returns the value associated with the key as a slice of strings func GetStringSlice(key string) []string { return v.GetStringSlice(key) } func (v *Viper) GetStringSlice(key string) []string { return cast.ToStringSlice(v.Get(key)) } -// GetStringMap returns the value associated with the key as a map of interfaces. +// Returns the value associated with the key as a map of interfaces func GetStringMap(key string) map[string]interface{} { return v.GetStringMap(key) } func (v *Viper) GetStringMap(key string) map[string]interface{} { return cast.ToStringMap(v.Get(key)) } -// GetStringMapString returns the value associated with the key as a map of strings. +// Returns the value associated with the key as a map of strings func GetStringMapString(key string) map[string]string { return v.GetStringMapString(key) } func (v *Viper) GetStringMapString(key string) map[string]string { return cast.ToStringMapString(v.Get(key)) } -// GetStringMapStringSlice returns the value associated with the key as a map to a slice of strings. +// Returns the value associated with the key as a map to a slice of strings. func GetStringMapStringSlice(key string) map[string][]string { return v.GetStringMapStringSlice(key) } func (v *Viper) GetStringMapStringSlice(key string) map[string][]string { return cast.ToStringMapStringSlice(v.Get(key)) } -// GetSizeInBytes returns the size of the value associated with the given key +// Returns the size of the value associated with the given key // in bytes. func GetSizeInBytes(key string) uint { return v.GetSizeInBytes(key) } func (v *Viper) GetSizeInBytes(key string) uint { @@ -717,25 +616,17 @@ func (v *Viper) GetSizeInBytes(key string) uint { return parseSizeInBytes(sizeStr) } -// UnmarshalKey takes a single key and unmarshals it into a Struct. +// Takes a single key and unmarshals it into a Struct func UnmarshalKey(key string, rawVal interface{}) error { return v.UnmarshalKey(key, rawVal) } func (v *Viper) UnmarshalKey(key string, rawVal interface{}) error { - err := decode(v.Get(key), defaultDecoderConfig(rawVal)) - - if err != nil { - return err - } - - v.insensitiviseMaps() - - return nil + return mapstructure.Decode(v.Get(key), rawVal) } -// Unmarshal unmarshals the config into a Struct. Make sure that the tags +// Unmarshals the config into a Struct. Make sure that the tags // on the fields of the structure are properly set. func Unmarshal(rawVal interface{}) error { return v.Unmarshal(rawVal) } func (v *Viper) Unmarshal(rawVal interface{}) error { - err := decode(v.AllSettings(), defaultDecoderConfig(rawVal)) + err := mapstructure.WeakDecode(v.AllSettings(), rawVal) if err != nil { return err @@ -746,19 +637,16 @@ func (v *Viper) Unmarshal(rawVal interface{}) error { return nil } -// defaultDecoderConfig returns default mapsstructure.DecoderConfig with suppot -// of time.Duration values -func defaultDecoderConfig(output interface{}) *mapstructure.DecoderConfig { - return &mapstructure.DecoderConfig{ +// A wrapper around mapstructure.Decode that mimics the WeakDecode functionality +// while erroring on non existing vals in the destination struct +func weakDecodeExact(input, output interface{}) error { + config := &mapstructure.DecoderConfig{ + ErrorUnused: true, Metadata: nil, Result: output, WeaklyTypedInput: true, - DecodeHook: mapstructure.StringToTimeDurationHookFunc(), } -} -// A wrapper around mapstructure.Decode that mimics the WeakDecode functionality -func decode(input interface{}, config *mapstructure.DecoderConfig) error { decoder, err := mapstructure.NewDecoder(config) if err != nil { return err @@ -766,13 +654,10 @@ func decode(input interface{}, config *mapstructure.DecoderConfig) error { return decoder.Decode(input) } -// UnmarshalExact unmarshals the config into a Struct, erroring if a field is nonexistent -// in the destination struct. +// Unmarshals the config into a Struct, erroring if a field is non-existant +// in the destination struct func (v *Viper) UnmarshalExact(rawVal interface{}) error { - config := defaultDecoderConfig(rawVal) - config.ErrorUnused = true - - err := decode(v.AllSettings(), config) + err := weakDecodeExact(v.AllSettings(), rawVal) if err != nil { return err @@ -783,27 +668,27 @@ func (v *Viper) UnmarshalExact(rawVal interface{}) error { return nil } -// BindPFlags binds a full flag set to the configuration, using each flag's long +// Bind a full flag set to the configuration, using each flag's long // name as the config key. -func BindPFlags(flags *pflag.FlagSet) error { return v.BindPFlags(flags) } -func (v *Viper) BindPFlags(flags *pflag.FlagSet) error { +func BindPFlags(flags *pflag.FlagSet) (err error) { return v.BindPFlags(flags) } +func (v *Viper) BindPFlags(flags *pflag.FlagSet) (err error) { return v.BindFlagValues(pflagValueSet{flags}) } -// BindPFlag binds a specific key to a pflag (as used by cobra). +// Bind a specific key to a pflag (as used by cobra). // Example (where serverCmd is a Cobra instance): // // serverCmd.Flags().Int("port", 1138, "Port to run Application server on") // Viper.BindPFlag("port", serverCmd.Flags().Lookup("port")) // -func BindPFlag(key string, flag *pflag.Flag) error { return v.BindPFlag(key, flag) } -func (v *Viper) BindPFlag(key string, flag *pflag.Flag) error { +func BindPFlag(key string, flag *pflag.Flag) (err error) { return v.BindPFlag(key, flag) } +func (v *Viper) BindPFlag(key string, flag *pflag.Flag) (err error) { return v.BindFlagValue(key, pflagValue{flag}) } -// BindFlagValues binds a full FlagValue set to the configuration, using each flag's long +// Bind a full FlagValue set to the configuration, using each flag's long // name as the config key. -func BindFlagValues(flags FlagValueSet) error { return v.BindFlagValues(flags) } +func BindFlagValues(flags FlagValueSet) (err error) { return v.BindFlagValues(flags) } func (v *Viper) BindFlagValues(flags FlagValueSet) (err error) { flags.VisitAll(func(flag FlagValue) { if err = v.BindFlagValue(flag.Name(), flag); err != nil { @@ -813,14 +698,14 @@ func (v *Viper) BindFlagValues(flags FlagValueSet) (err error) { return nil } -// BindFlagValue binds a specific key to a FlagValue. -// Example (where serverCmd is a Cobra instance): +// Bind a specific key to a FlagValue. +// Example(where serverCmd is a Cobra instance): // // serverCmd.Flags().Int("port", 1138, "Port to run Application server on") // Viper.BindFlagValue("port", serverCmd.Flags().Lookup("port")) // -func BindFlagValue(key string, flag FlagValue) error { return v.BindFlagValue(key, flag) } -func (v *Viper) BindFlagValue(key string, flag FlagValue) error { +func BindFlagValue(key string, flag FlagValue) (err error) { return v.BindFlagValue(key, flag) } +func (v *Viper) BindFlagValue(key string, flag FlagValue) (err error) { if flag == nil { return fmt.Errorf("flag for %q is nil", key) } @@ -828,12 +713,12 @@ func (v *Viper) BindFlagValue(key string, flag FlagValue) error { return nil } -// BindEnv binds a Viper key to a ENV variable. -// ENV variables are case sensitive. +// Binds a Viper key to a ENV variable +// ENV variables are case sensitive // If only a key is provided, it will use the env key matching the key, uppercased. // EnvPrefix will be used when set when env name is not provided. -func BindEnv(input ...string) error { return v.BindEnv(input...) } -func (v *Viper) BindEnv(input ...string) error { +func BindEnv(input ...string) (err error) { return v.BindEnv(input...) } +func (v *Viper) BindEnv(input ...string) (err error) { var key, envkey string if len(input) == 0 { return fmt.Errorf("BindEnv missing key to bind to") @@ -852,149 +737,113 @@ func (v *Viper) BindEnv(input ...string) error { return nil } -// Given a key, find the value. +// Given a key, find the value // Viper will check in the following order: -// flag, env, config file, key/value store, default. -// Viper will check to see if an alias exists first. -// Note: this assumes a lower-cased key given. -func (v *Viper) find(lcaseKey string) interface{} { - - var ( - val interface{} - exists bool - path = strings.Split(lcaseKey, v.keyDelim) - nested = len(path) > 1 - ) - - // compute the path through the nested maps to the nested value - if nested && v.isPathShadowedInDeepMap(path, castMapStringToMapInterface(v.aliases)) != "" { - return nil - } +// flag, env, config file, key/value store, default +// Viper will check to see if an alias exists first +func (v *Viper) find(key string) interface{} { + var val interface{} + var exists bool // if the requested key is an alias, then return the proper key - lcaseKey = v.realKey(lcaseKey) - path = strings.Split(lcaseKey, v.keyDelim) - nested = len(path) > 1 - - // Set() override first - val = v.searchMap(v.override, path) - if val != nil { - return val - } - if nested && v.isPathShadowedInDeepMap(path, v.override) != "" { - return nil - } + key = v.realKey(key) - // PFlag override next - flag, exists := v.pflags[lcaseKey] + // PFlag Override first + flag, exists := v.pflags[key] if exists && flag.HasChanged() { + jww.TRACE.Println(key, "found in override (via pflag):", flag.ValueString()) switch flag.ValueType() { case "int", "int8", "int16", "int32", "int64": return cast.ToInt(flag.ValueString()) case "bool": return cast.ToBool(flag.ValueString()) - case "stringSlice": - s := strings.TrimPrefix(flag.ValueString(), "[") - s = strings.TrimSuffix(s, "]") - res, _ := readAsCSV(s) - return res default: return flag.ValueString() } } - if nested && v.isPathShadowedInFlatMap(path, v.pflags) != "" { - return nil + + val, exists = v.override[key] + if exists { + jww.TRACE.Println(key, "found in override:", val) + return val } - // Env override next if v.automaticEnvApplied { // even if it hasn't been registered, if automaticEnv is used, // check any Get request - if val = v.getEnv(v.mergeWithEnvPrefix(lcaseKey)); val != "" { + if val = v.getEnv(v.mergeWithEnvPrefix(key)); val != "" { + jww.TRACE.Println(key, "found in environment with val:", val) return val } - if nested && v.isPathShadowedInAutoEnv(path) != "" { - return nil - } } - envkey, exists := v.env[lcaseKey] + + envkey, exists := v.env[key] if exists { + jww.TRACE.Println(key, "registered as env var", envkey) if val = v.getEnv(envkey); val != "" { + jww.TRACE.Println(envkey, "found in environment with val:", val) return val + } else { + jww.TRACE.Println(envkey, "env value unset:") } } - if nested && v.isPathShadowedInFlatMap(path, v.env) != "" { - return nil - } - // Config file next - val = v.searchMapWithPathPrefixes(v.config, path) - if val != nil { + val, exists = v.config[key] + if exists { + jww.TRACE.Println(key, "found in config:", val) return val } - if nested && v.isPathShadowedInDeepMap(path, v.config) != "" { - return nil - } - // K/V store next - val = v.searchMap(v.kvstore, path) - if val != nil { - return val - } - if nested && v.isPathShadowedInDeepMap(path, v.kvstore) != "" { - return nil + // Test for nested config parameter + if strings.Contains(key, v.keyDelim) { + path := strings.Split(key, v.keyDelim) + + source := v.find(path[0]) + if source != nil { + if reflect.TypeOf(source).Kind() == reflect.Map { + val := v.searchMap(cast.ToStringMap(source), path[1:]) + jww.TRACE.Println(key, "found in nested config:", val) + return val + } + } } - // Default next - val = v.searchMap(v.defaults, path) - if val != nil { + val, exists = v.kvstore[key] + if exists { + jww.TRACE.Println(key, "found in key/value store:", val) return val } - if nested && v.isPathShadowedInDeepMap(path, v.defaults) != "" { - return nil - } - // last chance: if no other value is returned and a flag does exist for the value, - // get the flag's value even if the flag's value has not changed - if flag, exists := v.pflags[lcaseKey]; exists { - switch flag.ValueType() { - case "int", "int8", "int16", "int32", "int64": - return cast.ToInt(flag.ValueString()) - case "bool": - return cast.ToBool(flag.ValueString()) - case "stringSlice": - s := strings.TrimPrefix(flag.ValueString(), "[") - s = strings.TrimSuffix(s, "]") - res, _ := readAsCSV(s) - return res - default: - return flag.ValueString() - } + val, exists = v.defaults[key] + if exists { + jww.TRACE.Println(key, "found in defaults:", val) + return val } - // last item, no need to check shadowing return nil } -func readAsCSV(val string) ([]string, error) { - if val == "" { - return []string{}, nil - } - stringReader := strings.NewReader(val) - csvReader := csv.NewReader(stringReader) - return csvReader.Read() -} - -// IsSet checks to see if the key has been set in any of the data locations. -// IsSet is case-insensitive for a key. +// Check to see if the key has been set in any of the data locations func IsSet(key string) bool { return v.IsSet(key) } func (v *Viper) IsSet(key string) bool { + path := strings.Split(key, v.keyDelim) + lcaseKey := strings.ToLower(key) val := v.find(lcaseKey) + + if val == nil { + source := v.find(strings.ToLower(path[0])) + if source != nil { + if reflect.TypeOf(source).Kind() == reflect.Map { + val = v.searchMap(cast.ToStringMap(source), path[1:]) + } + } + } + return val != nil } -// AutomaticEnv has Viper check ENV variables for all. +// Have Viper check ENV variables for all // keys set in config, default & flags func AutomaticEnv() { v.AutomaticEnv() } func (v *Viper) AutomaticEnv() { @@ -1053,11 +902,12 @@ func (v *Viper) realKey(key string) string { if exists { jww.DEBUG.Println("Alias", key, "to", newkey) return v.realKey(newkey) + } else { + return key } - return key } -// InConfig checks to see if the given key (or an alias) is in the config file. +// Check to see if the given key (or an alias) is in the config file func InConfig(key string) bool { return v.InConfig(key) } func (v *Viper) InConfig(key string) bool { // if the requested key is an alias, then return the proper key @@ -1067,85 +917,53 @@ func (v *Viper) InConfig(key string) bool { return exists } -// SetDefault sets the default value for this key. -// SetDefault is case-insensitive for a key. +// Set the default value for this key. // Default only used when no value is provided by the user via flag, config or ENV. func SetDefault(key string, value interface{}) { v.SetDefault(key, value) } func (v *Viper) SetDefault(key string, value interface{}) { // If alias passed in, then set the proper default key = v.realKey(strings.ToLower(key)) - value = toCaseInsensitiveValue(value) - - path := strings.Split(key, v.keyDelim) - lastKey := strings.ToLower(path[len(path)-1]) - deepestMap := deepSearch(v.defaults, path[0:len(path)-1]) - - // set innermost value - deepestMap[lastKey] = value + v.defaults[key] = value } -// Set sets the value for the key in the override regiser. -// Set is case-insensitive for a key. +// Sets the value for the key in the override regiser. // Will be used instead of values obtained via -// flags, config file, ENV, default, or key/value store. +// flags, config file, ENV, default, or key/value store func Set(key string, value interface{}) { v.Set(key, value) } func (v *Viper) Set(key string, value interface{}) { // If alias passed in, then set the proper override key = v.realKey(strings.ToLower(key)) - value = toCaseInsensitiveValue(value) - - path := strings.Split(key, v.keyDelim) - lastKey := strings.ToLower(path[len(path)-1]) - deepestMap := deepSearch(v.override, path[0:len(path)-1]) - - // set innermost value - deepestMap[lastKey] = value + v.override[key] = value } -// ReadInConfig will discover and load the configuration file from disk +// Viper will discover and load the configuration file from disk // and key/value stores, searching in one of the defined paths. func ReadInConfig() error { return v.ReadInConfig() } func (v *Viper) ReadInConfig() error { jww.INFO.Println("Attempting to read in config file") - filename, err := v.getConfigFile() - if err != nil { - return err - } - if !stringInSlice(v.getConfigType(), SupportedExts) { return UnsupportedConfigError(v.getConfigType()) } - file, err := afero.ReadFile(v.fs, filename) + file, err := afero.ReadFile(v.fs, v.getConfigFile()) if err != nil { return err } - config := make(map[string]interface{}) - - err = v.unmarshalReader(bytes.NewReader(file), config) - if err != nil { - return err - } + v.config = make(map[string]interface{}) - v.config = config - return nil + return v.unmarshalReader(bytes.NewReader(file), v.config) } // MergeInConfig merges a new configuration with an existing config. func MergeInConfig() error { return v.MergeInConfig() } func (v *Viper) MergeInConfig() error { jww.INFO.Println("Attempting to merge in config file") - filename, err := v.getConfigFile() - if err != nil { - return err - } - if !stringInSlice(v.getConfigType(), SupportedExts) { return UnsupportedConfigError(v.getConfigType()) } - file, err := afero.ReadFile(v.fs, filename) + file, err := afero.ReadFile(v.fs, v.getConfigFile()) if err != nil { return err } @@ -1153,7 +971,7 @@ func (v *Viper) MergeInConfig() error { return v.MergeConfig(bytes.NewReader(file)) } -// ReadConfig will read a configuration file, setting existing keys to nil if the +// Viper will read a configuration file, setting existing keys to nil if the // key does not exist in the file. func ReadConfig(in io.Reader) error { return v.ReadConfig(in) } func (v *Viper) ReadConfig(in io.Reader) error { @@ -1195,22 +1013,6 @@ func castToMapStringInterface( return tgt } -func castMapStringToMapInterface(src map[string]string) map[string]interface{} { - tgt := map[string]interface{}{} - for k, v := range src { - tgt[k] = v - } - return tgt -} - -func castMapFlagToMapInterface(src map[string]FlagValue) map[string]interface{} { - tgt := map[string]interface{}{} - for k, v := range src { - tgt[k] = v - } - return tgt -} - // mergeMaps merges two maps. The `itgt` parameter is for handling go-yaml's // insistence on parsing nested structures as `map[interface{}]interface{}` // instead of using a `string` as the key for nest structures beyond one level @@ -1271,24 +1073,34 @@ func mergeMaps( } } -// ReadRemoteConfig attempts to get configuration from a remote source +// func ReadBufConfig(buf *bytes.Buffer) error { return v.ReadBufConfig(buf) } +// func (v *Viper) ReadBufConfig(buf *bytes.Buffer) error { +// v.config = make(map[string]interface{}) +// return v.unmarshalReader(buf, v.config) +// } + +// Attempts to get configuration from a remote source // and read it in the remote configuration registry. func ReadRemoteConfig() error { return v.ReadRemoteConfig() } func (v *Viper) ReadRemoteConfig() error { - return v.getKeyValueConfig() + err := v.getKeyValueConfig() + if err != nil { + return err + } + return nil } func WatchRemoteConfig() error { return v.WatchRemoteConfig() } func (v *Viper) WatchRemoteConfig() error { - return v.watchKeyValueConfig() -} - -func (v *Viper) WatchRemoteConfigOnChannel() error { - return v.watchKeyValueConfigOnChannel() + err := v.watchKeyValueConfig() + if err != nil { + return err + } + return nil } -// Unmarshal a Reader into a map. -// Should probably be an unexported function. +// Unmarshall a Reader into a map +// Should probably be an unexported function func unmarshalReader(in io.Reader, c map[string]interface{}) error { return v.unmarshalReader(in, c) } @@ -1304,7 +1116,7 @@ func (v *Viper) insensitiviseMaps() { insensitiviseMap(v.kvstore) } -// Retrieve the first found remote configuration. +// retrieve the first found remote configuration func (v *Viper) getKeyValueConfig() error { if RemoteConfig == nil { return RemoteConfigError("Enable the remote features by doing a blank import of the viper/remote package: '_ github.com/spf13/viper/remote'") @@ -1321,7 +1133,8 @@ func (v *Viper) getKeyValueConfig() error { return RemoteConfigError("No Files Found") } -func (v *Viper) getRemoteConfig(provider RemoteProvider) (map[string]interface{}, error) { +func (v *Viper) getRemoteConfig(provider *defaultRemoteProvider) (map[string]interface{}, error) { + reader, err := RemoteConfig.Get(provider) if err != nil { return nil, err @@ -1330,24 +1143,7 @@ func (v *Viper) getRemoteConfig(provider RemoteProvider) (map[string]interface{} return v.kvstore, err } -// Retrieve the first found remote configuration. -func (v *Viper) watchKeyValueConfigOnChannel() error { - for _, rp := range v.remoteProviders { - respc, _ := RemoteConfig.WatchChannel(rp) - //Todo: Add quit channel - go func(rc <-chan *RemoteResponse) { - for { - b := <-rc - reader := bytes.NewReader(b.Value) - v.unmarshalReader(reader, v.kvstore) - } - }(respc) - return nil - } - return RemoteConfigError("No Files Found") -} - -// Retrieve the first found remote configuration. +// retrieve the first found remote configuration func (v *Viper) watchKeyValueConfig() error { for _, rp := range v.remoteProviders { val, err := v.watchRemoteConfig(rp) @@ -1360,7 +1156,7 @@ func (v *Viper) watchKeyValueConfig() error { return RemoteConfigError("No Files Found") } -func (v *Viper) watchRemoteConfig(provider RemoteProvider) (map[string]interface{}, error) { +func (v *Viper) watchRemoteConfig(provider *defaultRemoteProvider) (map[string]interface{}, error) { reader, err := RemoteConfig.Watch(provider) if err != nil { return nil, err @@ -1369,115 +1165,65 @@ func (v *Viper) watchRemoteConfig(provider RemoteProvider) (map[string]interface return v.kvstore, err } -// AllKeys returns all keys holding a value, regardless of where they are set. -// Nested keys are returned with a v.keyDelim (= ".") separator +// Return all keys regardless where they are set func AllKeys() []string { return v.AllKeys() } func (v *Viper) AllKeys() []string { - m := map[string]bool{} - // add all paths, by order of descending priority to ensure correct shadowing - m = v.flattenAndMergeMap(m, castMapStringToMapInterface(v.aliases), "") - m = v.flattenAndMergeMap(m, v.override, "") - m = v.mergeFlatMap(m, castMapFlagToMapInterface(v.pflags)) - m = v.mergeFlatMap(m, castMapStringToMapInterface(v.env)) - m = v.flattenAndMergeMap(m, v.config, "") - m = v.flattenAndMergeMap(m, v.kvstore, "") - m = v.flattenAndMergeMap(m, v.defaults, "") - - // convert set of paths to list - a := []string{} - for x := range m { - a = append(a, x) + m := map[string]struct{}{} + + for key, _ := range v.defaults { + m[strings.ToLower(key)] = struct{}{} } - return a -} -// flattenAndMergeMap recursively flattens the given map into a map[string]bool -// of key paths (used as a set, easier to manipulate than a []string): -// - each path is merged into a single key string, delimited with v.keyDelim (= ".") -// - if a path is shadowed by an earlier value in the initial shadow map, -// it is skipped. -// The resulting set of paths is merged to the given shadow set at the same time. -func (v *Viper) flattenAndMergeMap(shadow map[string]bool, m map[string]interface{}, prefix string) map[string]bool { - if shadow != nil && prefix != "" && shadow[prefix] { - // prefix is shadowed => nothing more to flatten - return shadow + for key, _ := range v.pflags { + m[strings.ToLower(key)] = struct{}{} } - if shadow == nil { - shadow = make(map[string]bool) + + for key, _ := range v.env { + m[strings.ToLower(key)] = struct{}{} } - var m2 map[string]interface{} - if prefix != "" { - prefix += v.keyDelim + for key, _ := range v.config { + m[strings.ToLower(key)] = struct{}{} } - for k, val := range m { - fullKey := prefix + k - switch val.(type) { - case map[string]interface{}: - m2 = val.(map[string]interface{}) - case map[interface{}]interface{}: - m2 = cast.ToStringMap(val) - default: - // immediate value - shadow[strings.ToLower(fullKey)] = true - continue - } - // recursively merge to shadow map - shadow = v.flattenAndMergeMap(shadow, m2, fullKey) - } - return shadow -} - -// mergeFlatMap merges the given maps, excluding values of the second map -// shadowed by values from the first map. -func (v *Viper) mergeFlatMap(shadow map[string]bool, m map[string]interface{}) map[string]bool { - // scan keys -outer: - for k, _ := range m { - path := strings.Split(k, v.keyDelim) - // scan intermediate paths - var parentKey string - for i := 1; i < len(path); i++ { - parentKey = strings.Join(path[0:i], v.keyDelim) - if shadow[parentKey] { - // path is shadowed, continue - continue outer - } - } - // add key - shadow[strings.ToLower(k)] = true + + for key, _ := range v.kvstore { + m[strings.ToLower(key)] = struct{}{} + } + + for key, _ := range v.override { + m[strings.ToLower(key)] = struct{}{} } - return shadow + + for key, _ := range v.aliases { + m[strings.ToLower(key)] = struct{}{} + } + + a := []string{} + for x, _ := range m { + a = append(a, x) + } + + return a } -// AllSettings merges all settings and returns them as a map[string]interface{}. +// Return all settings as a map[string]interface{} func AllSettings() map[string]interface{} { return v.AllSettings() } func (v *Viper) AllSettings() map[string]interface{} { m := map[string]interface{}{} - // start from the list of keys, and construct the map one value at a time - for _, k := range v.AllKeys() { - value := v.Get(k) - if value == nil { - // should not happen, since AllKeys() returns only keys holding a value, - // check just in case anything changes - continue - } - path := strings.Split(k, v.keyDelim) - lastKey := strings.ToLower(path[len(path)-1]) - deepestMap := deepSearch(m, path[0:len(path)-1]) - // set innermost value - deepestMap[lastKey] = value + for _, x := range v.AllKeys() { + m[x] = v.Get(x) } + return m } -// SetFs sets the filesystem to use to read configuration. +// Se the filesystem to use to read configuration. func SetFs(fs afero.Fs) { v.SetFs(fs) } func (v *Viper) SetFs(fs afero.Fs) { v.fs = fs } -// SetConfigName sets name for the config file. +// Name for the config file. // Does not include extension. func SetConfigName(in string) { v.SetConfigName(in) } func (v *Viper) SetConfigName(in string) { @@ -1487,7 +1233,7 @@ func (v *Viper) SetConfigName(in string) { } } -// SetConfigType sets the type of the configuration returned by the +// Sets the type of the configuration returned by the // remote source, e.g. "json". func SetConfigType(in string) { v.SetConfigType(in) } func (v *Viper) SetConfigType(in string) { @@ -1501,29 +1247,25 @@ func (v *Viper) getConfigType() string { return v.configType } - cf, err := v.getConfigFile() - if err != nil { - return "" - } - + cf := v.getConfigFile() ext := filepath.Ext(cf) if len(ext) > 1 { return ext[1:] + } else { + return "" } - - return "" } -func (v *Viper) getConfigFile() (string, error) { +func (v *Viper) getConfigFile() string { // if explicitly set, then use it if v.configFile != "" { - return v.configFile, nil + return v.configFile } cf, err := v.findConfigFile() if err != nil { - return "", err + return "" } v.configFile = cf @@ -1543,9 +1285,10 @@ func (v *Viper) searchInPath(in string) (filename string) { return "" } -// Search all configPaths for any config file. -// Returns the first path that exists (and is a config file). +// search all configPaths for any config file. +// Returns the first path that exists (and is a config file) func (v *Viper) findConfigFile() (string, error) { + jww.INFO.Println("Searching for config in ", v.configPaths) for _, cp := range v.configPaths { @@ -1557,10 +1300,11 @@ func (v *Viper) findConfigFile() (string, error) { return "", ConfigFileNotFoundError{v.configName, fmt.Sprintf("%s", v.configPaths)} } -// Debug prints all configuration registries for debugging +// Prints all configuration registries for debugging // purposes. func Debug() { v.Debug() } func (v *Viper) Debug() { + fmt.Println("Aliases:") fmt.Printf("Aliases:\n%#v\n", v.aliases) fmt.Printf("Override:\n%#v\n", v.override) fmt.Printf("PFlags:\n%#v\n", v.pflags) diff --git a/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/patch.go b/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/patch.go index 828df44351b6..8884c738ed93 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/patch.go +++ b/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/patch.go @@ -1138,7 +1138,7 @@ func mergePatchIntoOriginal(original, patch map[string]interface{}, t reflect.Ty return err } case !foundOriginal && !foundPatch: - return nil + continue } // Split all items into patch items and server-only items and then enforce the order. diff --git a/vendor/k8s.io/apiserver/pkg/registry/generic/registry/store.go b/vendor/k8s.io/apiserver/pkg/registry/generic/registry/store.go index 2dcea903a0a5..2153c16c5bd4 100644 --- a/vendor/k8s.io/apiserver/pkg/registry/generic/registry/store.go +++ b/vendor/k8s.io/apiserver/pkg/registry/generic/registry/store.go @@ -403,12 +403,8 @@ func (e *Store) WaitForInitialized(ctx genericapirequest.Context, obj runtime.Ob // shouldDeleteDuringUpdate checks if a Update is removing all the object's // finalizers. If so, it further checks if the object's -// DeletionGracePeriodSeconds is 0. If so, it returns true. If garbage collection -// is disabled it always returns false. +// DeletionGracePeriodSeconds is 0. If so, it returns true. func (e *Store) shouldDeleteDuringUpdate(ctx genericapirequest.Context, key string, obj, existing runtime.Object) bool { - if !e.EnableGarbageCollection { - return false - } newMeta, err := meta.Accessor(obj) if err != nil { utilruntime.HandleError(err) @@ -719,9 +715,18 @@ func shouldUpdateFinalizerDeleteDependents(e *Store, accessor metav1.Object, opt return shouldUpdate, shouldDeleteDependentInForeground } -// shouldUpdateFinalizers returns if we need to update the finalizers of the -// object, and the desired list of finalizers. -func shouldUpdateFinalizers(e *Store, accessor metav1.Object, options *metav1.DeleteOptions) (shouldUpdate bool, newFinalizers []string) { +// deletionFinalizersForGarbageCollection analyzes the object and delete options +// to determine whether the object is in need of finalization by the garbage +// collector. If so, returns the set of deletion finalizers to apply and a bool +// indicating whether the finalizer list has changed and is in need of updating. +// +// The finalizers returned are intended to be handled by the garbage collector. +// If garbage collection is disabled for the store, this function returns false +// to ensure finalizers aren't set which will never be cleared. +func deletionFinalizersForGarbageCollection(e *Store, accessor metav1.Object, options *metav1.DeleteOptions) (shouldUpdate bool, newFinalizers []string) { + if !e.EnableGarbageCollection { + return false, []string{} + } shouldUpdate1, shouldOrphan := shouldUpdateFinalizerOrphanDependents(e, accessor, options) shouldUpdate2, shouldDeleteDependentInForeground := shouldUpdateFinalizerDeleteDependents(e, accessor, options) oldFinalizers := accessor.GetFinalizers() @@ -766,72 +771,6 @@ func markAsDeleting(obj runtime.Object) (err error) { return nil } -// updateForGracefulDeletion and updateForGracefulDeletionAndFinalizers both -// implement deletion flows for graceful deletion. Graceful deletion is -// implemented as setting the deletion timestamp in an update. If the -// implementation of graceful deletion is changed, both of these methods -// should be changed together. - -// updateForGracefulDeletion updates the given object for graceful deletion by -// setting the deletion timestamp and grace period seconds and returns: -// -// 1. an error -// 2. a boolean indicating that the object was not found, but it should be -// ignored -// 3. a boolean indicating that the object's grace period is exhausted and it -// should be deleted immediately -// 4. a new output object with the state that was updated -// 5. a copy of the last existing state of the object -func (e *Store) updateForGracefulDeletion(ctx genericapirequest.Context, name, key string, options *metav1.DeleteOptions, preconditions storage.Preconditions, in runtime.Object) (err error, ignoreNotFound, deleteImmediately bool, out, lastExisting runtime.Object) { - lastGraceful := int64(0) - out = e.NewFunc() - err = e.Storage.GuaranteedUpdate( - ctx, - key, - out, - false, /* ignoreNotFound */ - &preconditions, - storage.SimpleUpdate(func(existing runtime.Object) (runtime.Object, error) { - graceful, pendingGraceful, err := rest.BeforeDelete(e.DeleteStrategy, ctx, existing, options) - if err != nil { - return nil, err - } - if pendingGraceful { - return nil, errAlreadyDeleting - } - if !graceful { - return nil, errDeleteNow - } - lastGraceful = *options.GracePeriodSeconds - lastExisting = existing - return existing, nil - }), - ) - switch err { - case nil: - if lastGraceful > 0 { - return nil, false, false, out, lastExisting - } - // If we are here, the registry supports grace period mechanism and - // we are intentionally delete gracelessly. In this case, we may - // enter a race with other k8s components. If other component wins - // the race, the object will not be found, and we should tolerate - // the NotFound error. See - // https://github.com/kubernetes/kubernetes/issues/19403 for - // details. - return nil, true, true, out, lastExisting - case errDeleteNow: - // we've updated the object to have a zero grace period, or it's already at 0, so - // we should fall through and truly delete the object. - return nil, false, true, out, lastExisting - case errAlreadyDeleting: - out, err = e.finalizeDelete(in, true) - return err, false, false, out, lastExisting - default: - return storeerr.InterpretUpdateError(err, e.QualifiedResource, name), false, false, out, lastExisting - } -} - // updateForGracefulDeletionAndFinalizers updates the given object for // graceful deletion and finalization by setting the deletion timestamp and // grace period seconds (graceful deletion) and updating the list of @@ -871,7 +810,7 @@ func (e *Store) updateForGracefulDeletionAndFinalizers(ctx genericapirequest.Con if err != nil { return nil, err } - shouldUpdate, newFinalizers := shouldUpdateFinalizers(e, existingAccessor, options) + shouldUpdate, newFinalizers := deletionFinalizersForGarbageCollection(e, existingAccessor, options) if shouldUpdate { existingAccessor.SetFinalizers(newFinalizers) } @@ -963,18 +902,12 @@ func (e *Store) Delete(ctx genericapirequest.Context, name string, options *meta // Handle combinations of graceful deletion and finalization by issuing // the correct updates. - if e.EnableGarbageCollection { - shouldUpdateFinalizers, _ := shouldUpdateFinalizers(e, accessor, options) - // TODO: remove the check, because we support no-op updates now. - if graceful || pendingFinalizers || shouldUpdateFinalizers { - err, ignoreNotFound, deleteImmediately, out, lastExisting = e.updateForGracefulDeletionAndFinalizers(ctx, name, key, options, preconditions, obj) - } - } else { - // TODO: remove the check on graceful, because we support no-op updates now. - if graceful { - err, ignoreNotFound, deleteImmediately, out, lastExisting = e.updateForGracefulDeletion(ctx, name, key, options, preconditions, obj) - } + shouldUpdateFinalizers, _ := deletionFinalizersForGarbageCollection(e, accessor, options) + // TODO: remove the check, because we support no-op updates now. + if graceful || pendingFinalizers || shouldUpdateFinalizers { + err, ignoreNotFound, deleteImmediately, out, lastExisting = e.updateForGracefulDeletionAndFinalizers(ctx, name, key, options, preconditions, obj) } + // !deleteImmediately covers all cases where err != nil. We keep both to be future-proof. if !deleteImmediately || err != nil { return out, false, err diff --git a/vendor/k8s.io/client-go/discovery/discovery_client.go b/vendor/k8s.io/client-go/discovery/discovery_client.go index 0ee46b863b4d..011dd9ecf27c 100644 --- a/vendor/k8s.io/client-go/discovery/discovery_client.go +++ b/vendor/k8s.io/client-go/discovery/discovery_client.go @@ -183,7 +183,7 @@ func (d *DiscoveryClient) ServerResourcesForGroupVersion(groupVersion string) (r } // serverResources returns the supported resources for all groups and versions. -func (d *DiscoveryClient) serverResources(failEarly bool) ([]*metav1.APIResourceList, error) { +func (d *DiscoveryClient) serverResources() ([]*metav1.APIResourceList, error) { apiGroups, err := d.ServerGroups() if err != nil { return nil, err @@ -199,9 +199,6 @@ func (d *DiscoveryClient) serverResources(failEarly bool) ([]*metav1.APIResource if err != nil { // TODO: maybe restrict this to NotFound errors failedGroups[gv] = err - if failEarly { - return nil, &ErrGroupDiscoveryFailed{Groups: failedGroups} - } continue } @@ -245,7 +242,7 @@ func IsGroupDiscoveryFailedError(err error) bool { } // serverPreferredResources returns the supported resources with the version preferred by the server. -func (d *DiscoveryClient) serverPreferredResources(failEarly bool) ([]*metav1.APIResourceList, error) { +func (d *DiscoveryClient) serverPreferredResources() ([]*metav1.APIResourceList, error) { serverGroupList, err := d.ServerGroups() if err != nil { return nil, err @@ -265,9 +262,6 @@ func (d *DiscoveryClient) serverPreferredResources(failEarly bool) ([]*metav1.AP if err != nil { // TODO: maybe restrict this to NotFound errors failedGroups[groupVersion] = err - if failEarly { - return nil, &ErrGroupDiscoveryFailed{Groups: failedGroups} - } continue } @@ -312,9 +306,7 @@ func (d *DiscoveryClient) serverPreferredResources(failEarly bool) ([]*metav1.AP // ServerPreferredResources returns the supported resources with the version preferred by the // server. func (d *DiscoveryClient) ServerPreferredResources() ([]*metav1.APIResourceList, error) { - return withRetries(defaultRetries, func(retryEarly bool) ([]*metav1.APIResourceList, error) { - return d.serverPreferredResources(retryEarly) - }) + return withRetries(defaultRetries, d.serverPreferredResources) } // ServerPreferredNamespacedResources returns the supported namespaced resources with the @@ -391,12 +383,11 @@ func (d *DiscoveryClient) OpenAPISchema() (*spec.Swagger, error) { } // withRetries retries the given recovery function in case the groups supported by the server change after ServerGroup() returns. -func withRetries(maxRetries int, f func(failEarly bool) ([]*metav1.APIResourceList, error)) ([]*metav1.APIResourceList, error) { +func withRetries(maxRetries int, f func() ([]*metav1.APIResourceList, error)) ([]*metav1.APIResourceList, error) { var result []*metav1.APIResourceList var err error for i := 0; i < maxRetries; i++ { - failEarly := i < maxRetries-1 - result, err = f(failEarly) + result, err = f() if err == nil { return result, nil } diff --git a/vendor/k8s.io/client-go/pkg/version/base.go b/vendor/k8s.io/client-go/pkg/version/base.go index 341b9d6b7880..937443864607 100644 --- a/vendor/k8s.io/client-go/pkg/version/base.go +++ b/vendor/k8s.io/client-go/pkg/version/base.go @@ -51,7 +51,7 @@ var ( // semantic version is a git hash, but the version itself is no // longer the direct output of "git describe", but a slight // translation to be semver compliant. - gitVersion string = "v1.7.4+$Format:%h$" + gitVersion string = "v1.7.5+$Format:%h$" gitCommit string = "$Format:%H$" // sha1 from git, output of $(git rev-parse HEAD) gitTreeState string = "not a git tree" // state of git tree, either "clean" or "dirty" diff --git a/vendor/k8s.io/kubernetes/cmd/kube-controller-manager/app/BUILD b/vendor/k8s.io/kubernetes/cmd/kube-controller-manager/app/BUILD index 4a757a8e3dbb..5109e1da5d6f 100644 --- a/vendor/k8s.io/kubernetes/cmd/kube-controller-manager/app/BUILD +++ b/vendor/k8s.io/kubernetes/cmd/kube-controller-manager/app/BUILD @@ -99,6 +99,7 @@ go_library( "//vendor/github.com/spf13/pflag:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/k8s.io/apiserver/pkg/server/healthz:go_default_library", diff --git a/vendor/k8s.io/kubernetes/cmd/kube-controller-manager/app/controllermanager.go b/vendor/k8s.io/kubernetes/cmd/kube-controller-manager/app/controllermanager.go index f30df0fa2e15..e5bf649d3bca 100644 --- a/vendor/k8s.io/kubernetes/cmd/kube-controller-manager/app/controllermanager.go +++ b/vendor/k8s.io/kubernetes/cmd/kube-controller-manager/app/controllermanager.go @@ -33,6 +33,7 @@ import ( "time" "k8s.io/apimachinery/pkg/runtime/schema" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/wait" @@ -365,7 +366,10 @@ func GetAvailableResources(clientBuilder controller.ControllerClientBuilder) (ma resourceMap, err := discoveryClient.ServerResources() if err != nil { - return nil, fmt.Errorf("failed to get supported resources from server: %v", err) + utilruntime.HandleError(fmt.Errorf("unable to get all supported resources from server: %v", err)) + } + if len(resourceMap) == 0 { + return nil, fmt.Errorf("unable to get any supported resources from server") } allResources := map[schema.GroupVersionResource]bool{} diff --git a/vendor/k8s.io/kubernetes/cmd/kube-controller-manager/app/core.go b/vendor/k8s.io/kubernetes/cmd/kube-controller-manager/app/core.go index 6d56428e15cc..f4e896c5242a 100644 --- a/vendor/k8s.io/kubernetes/cmd/kube-controller-manager/app/core.go +++ b/vendor/k8s.io/kubernetes/cmd/kube-controller-manager/app/core.go @@ -29,6 +29,7 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/serializer" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/discovery" "k8s.io/client-go/dynamic" @@ -285,7 +286,10 @@ func startGarbageCollectorController(ctx ControllerContext) (bool, error) { gcClientset := ctx.ClientBuilder.ClientOrDie("generic-garbage-collector") preferredResources, err := gcClientset.Discovery().ServerPreferredResources() if err != nil { - return true, fmt.Errorf("failed to get supported resources from server: %v", err) + utilruntime.HandleError(fmt.Errorf("unable to get all supported resources from server: %v", err)) + } + if len(preferredResources) == 0 { + return true, fmt.Errorf("unable to get any supported resources from server: %v", err) } deletableResources := discovery.FilteredBy(discovery.SupportsAllVerbs{Verbs: []string{"get", "list", "watch", "patch", "update", "delete"}}, preferredResources) deletableGroupVersionResources, err := discovery.GroupVersionResources(deletableResources) diff --git a/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure.go b/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure.go index 0281aceccd4c..448f0643f1f5 100644 --- a/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure.go +++ b/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure.go @@ -107,6 +107,12 @@ type Config struct { CloudProviderRateLimitQPS float32 `json:"cloudProviderRateLimitQPS" yaml:"cloudProviderRateLimitQPS"` // Rate limit Bucket Size CloudProviderRateLimitBucket int `json:"cloudProviderRateLimitBucket" yaml:"cloudProviderRateLimitBucket"` + + // Use instance metadata service where possible + UseInstanceMetadata bool `json:"useInstanceMetadata" yaml:"useInstanceMetadata"` + + // Use managed service identity for the virtual machine to access Azure ARM APIs + UseManagedIdentityExtension bool `json:"useManagedIdentityExtension"` } // Cloud holds the config and clients @@ -150,62 +156,62 @@ func decodePkcs12(pkcs []byte, password string) (*x509.Certificate, *rsa.Private return certificate, rsaPrivateKey, nil } -// newServicePrincipalToken creates a new service principal token based on the configuration -func newServicePrincipalToken(az *Cloud) (*adal.ServicePrincipalToken, error) { - oauthConfig, err := adal.NewOAuthConfig(az.Environment.ActiveDirectoryEndpoint, az.TenantID) +// GetServicePrincipalToken creates a new service principal token based on the configuration +func GetServicePrincipalToken(config *Config, env *azure.Environment) (*adal.ServicePrincipalToken, error) { + oauthConfig, err := adal.NewOAuthConfig(env.ActiveDirectoryEndpoint, config.TenantID) if err != nil { return nil, fmt.Errorf("creating the OAuth config: %v", err) } - if len(az.AADClientSecret) > 0 { + if config.UseManagedIdentityExtension { + glog.V(2).Infoln("azure: using managed identity extension to retrieve access token") + return adal.NewServicePrincipalTokenFromMSI( + *oauthConfig, + env.ServiceManagementEndpoint) + } + + if len(config.AADClientSecret) > 0 { + glog.V(2).Infoln("azure: using client_id+client_secret to retrieve access token") return adal.NewServicePrincipalToken( *oauthConfig, - az.AADClientID, - az.AADClientSecret, - az.Environment.ServiceManagementEndpoint) - } else if len(az.AADClientCertPath) > 0 && len(az.AADClientCertPassword) > 0 { - certData, err := ioutil.ReadFile(az.AADClientCertPath) + config.AADClientID, + config.AADClientSecret, + env.ServiceManagementEndpoint) + } + + if len(config.AADClientCertPath) > 0 && len(config.AADClientCertPassword) > 0 { + glog.V(2).Infoln("azure: using jwt client_assertion (client_cert+client_private_key) to retrieve access token") + certData, err := ioutil.ReadFile(config.AADClientCertPath) if err != nil { - return nil, fmt.Errorf("reading the client certificate from file %s: %v", az.AADClientCertPath, err) + return nil, fmt.Errorf("reading the client certificate from file %s: %v", config.AADClientCertPath, err) } - certificate, privateKey, err := decodePkcs12(certData, az.AADClientCertPassword) + certificate, privateKey, err := decodePkcs12(certData, config.AADClientCertPassword) if err != nil { return nil, fmt.Errorf("decoding the client certificate: %v", err) } return adal.NewServicePrincipalTokenFromCertificate( *oauthConfig, - az.AADClientID, + config.AADClientID, certificate, privateKey, - az.Environment.ServiceManagementEndpoint) - } else { - return nil, fmt.Errorf("No credentials provided for AAD application %s", az.AADClientID) + env.ServiceManagementEndpoint) } + + return nil, fmt.Errorf("No credentials provided for AAD application %s", config.AADClientID) } // NewCloud returns a Cloud with initialized clients func NewCloud(configReader io.Reader) (cloudprovider.Interface, error) { - var az Cloud - - configContents, err := ioutil.ReadAll(configReader) + config, env, err := ParseConfig(configReader) if err != nil { return nil, err } - err = yaml.Unmarshal(configContents, &az) - if err != nil { - return nil, err + az := Cloud{ + Config: *config, + Environment: *env, } - if az.Cloud == "" { - az.Environment = azure.PublicCloud - } else { - az.Environment, err = azure.EnvironmentFromName(az.Cloud) - if err != nil { - return nil, err - } - } - - servicePrincipalToken, err := newServicePrincipalToken(&az) + servicePrincipalToken, err := GetServicePrincipalToken(config, env) if err != nil { return nil, err } @@ -320,6 +326,31 @@ func NewCloud(configReader io.Reader) (cloudprovider.Interface, error) { return &az, nil } +// ParseConfig returns a parsed configuration and azure.Environment for an Azure cloudprovider config file +func ParseConfig(configReader io.Reader) (*Config, *azure.Environment, error) { + var config Config + + configContents, err := ioutil.ReadAll(configReader) + if err != nil { + return nil, nil, err + } + err = yaml.Unmarshal(configContents, &config) + if err != nil { + return nil, nil, err + } + + var env azure.Environment + if config.Cloud == "" { + env = azure.PublicCloud + } else { + env, err = azure.EnvironmentFromName(config.Cloud) + if err != nil { + return nil, nil, err + } + } + return &config, &env, nil +} + // Initialize passes a Kubernetes clientBuilder interface to the cloud provider func (az *Cloud) Initialize(clientBuilder controller.ControllerClientBuilder) {} diff --git a/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vsphere.go b/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vsphere.go index e400046761f7..457872b6a65a 100644 --- a/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vsphere.go +++ b/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vsphere.go @@ -19,6 +19,7 @@ package vsphere import ( "errors" "fmt" + "hash/fnv" "io" "io/ioutil" "net" @@ -806,7 +807,7 @@ func (vs *VSphere) AttachDisk(vmDiskPath string, storagePolicyID string, nodeNam } scsiControllersOfRequiredType := getSCSIControllersOfType(vmDevices, diskControllerType) - scsiController := getAvailableSCSIController(scsiControllersOfRequiredType) + scsiController = getAvailableSCSIController(scsiControllersOfRequiredType) if scsiController == nil { glog.Errorf("cannot find SCSI controller in VM") // attempt clean up of scsi controller @@ -1401,7 +1402,9 @@ func (vs *VSphere) CreateVolume(volumeOptions *VolumeOptions) (volumePath string // Check if the VM exists in kubernetes cluster folder. // The kubernetes cluster folder - vs.cfg.Global.WorkingDir is where all the nodes in the kubernetes cluster are created. - dummyVMFullName := DummyVMPrefixName + "-" + volumeOptions.Name + fnvHash := fnv.New32a() + fnvHash.Write([]byte(volumeOptions.Name)) + dummyVMFullName := DummyVMPrefixName + "-" + fmt.Sprint(fnvHash.Sum32()) vmRegex := vs.cfg.Global.WorkingDir + dummyVMFullName dummyVM, err := f.VirtualMachine(ctx, vmRegex) if err != nil { diff --git a/vendor/k8s.io/kubernetes/pkg/controller/namespace/deletion/BUILD b/vendor/k8s.io/kubernetes/pkg/controller/namespace/deletion/BUILD index af0663379f30..c9dbe75caf1d 100644 --- a/vendor/k8s.io/kubernetes/pkg/controller/namespace/deletion/BUILD +++ b/vendor/k8s.io/kubernetes/pkg/controller/namespace/deletion/BUILD @@ -21,6 +21,7 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/k8s.io/client-go/discovery:go_default_library", "//vendor/k8s.io/client-go/dynamic:go_default_library", diff --git a/vendor/k8s.io/kubernetes/pkg/controller/namespace/deletion/namespaced_resources_deleter.go b/vendor/k8s.io/kubernetes/pkg/controller/namespace/deletion/namespaced_resources_deleter.go index 2593428bb454..fcdc69ff4445 100644 --- a/vendor/k8s.io/kubernetes/pkg/controller/namespace/deletion/namespaced_resources_deleter.go +++ b/vendor/k8s.io/kubernetes/pkg/controller/namespace/deletion/namespaced_resources_deleter.go @@ -29,6 +29,7 @@ import ( "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime/schema" utilerrors "k8s.io/apimachinery/pkg/util/errors" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/client-go/discovery" "k8s.io/client-go/dynamic" @@ -165,7 +166,10 @@ func (d *namespacedResourcesDeleter) initOpCache() { // TODO(sttts): get rid of opCache and http 405 logic around it and trust discovery info resources, err := d.discoverResourcesFn() if err != nil { - glog.Fatalf("Failed to get supported resources: %v", err) + utilruntime.HandleError(fmt.Errorf("unable to get all supported resources from server: %v", err)) + } + if len(resources) == 0 { + glog.Fatalf("Unable to get any supported resources from server: %v", err) } deletableGroupVersionResources := []schema.GroupVersionResource{} for _, rl := range resources { diff --git a/vendor/k8s.io/kubernetes/pkg/controller/statefulset/stateful_set_utils.go b/vendor/k8s.io/kubernetes/pkg/controller/statefulset/stateful_set_utils.go index c55a1e0455fc..7d240c6cd3e0 100644 --- a/vendor/k8s.io/kubernetes/pkg/controller/statefulset/stateful_set_utils.go +++ b/vendor/k8s.io/kubernetes/pkg/controller/statefulset/stateful_set_utils.go @@ -116,9 +116,7 @@ func identityMatches(set *apps.StatefulSet, pod *v1.Pod) bool { return ordinal >= 0 && set.Name == parent && pod.Name == getPodName(set, ordinal) && - pod.Namespace == set.Namespace && - pod.Spec.Hostname == pod.Name && - pod.Spec.Subdomain == set.Spec.ServiceName + pod.Namespace == set.Namespace } // storageMatches returns true if pod's Volumes cover the set of PersistentVolumeClaims @@ -186,12 +184,18 @@ func updateStorage(set *apps.StatefulSet, pod *v1.Pod) { pod.Spec.Volumes = newVolumes } +func initIdentity(set *apps.StatefulSet, pod *v1.Pod) { + updateIdentity(set, pod) + // Set these immutable fields only on initial Pod creation, not updates. + pod.Spec.Hostname = pod.Name + pod.Spec.Subdomain = set.Spec.ServiceName +} + // updateIdentity updates pod's name, hostname, and subdomain to conform to set's name and headless service. func updateIdentity(set *apps.StatefulSet, pod *v1.Pod) { pod.Name = getPodName(set, getOrdinal(pod)) pod.Namespace = set.Namespace - pod.Spec.Hostname = pod.Name - pod.Spec.Subdomain = set.Spec.ServiceName + } // isRunningAndReady returns true if pod is in the PodRunning Phase, if it has a condition of PodReady, and if the init @@ -276,7 +280,7 @@ func getPodRevision(pod *v1.Pod) string { func newStatefulSetPod(set *apps.StatefulSet, ordinal int) *v1.Pod { pod, _ := controller.GetPodFromTemplate(&set.Spec.Template, set, newControllerRef(set)) pod.Name = getPodName(set, ordinal) - updateIdentity(set, pod) + initIdentity(set, pod) updateStorage(set, pod) return pod } diff --git a/vendor/k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache/actual_state_of_world.go b/vendor/k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache/actual_state_of_world.go index 552530170fbf..3bffc60a6016 100644 --- a/vendor/k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache/actual_state_of_world.go +++ b/vendor/k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache/actual_state_of_world.go @@ -125,10 +125,6 @@ type ActualStateOfWorld interface { // GetNodesToUpdateStatusFor returns the map of nodeNames to nodeToUpdateStatusFor GetNodesToUpdateStatusFor() map[types.NodeName]nodeToUpdateStatusFor - - // Removes the given node from the record of attach updates. The node's entire - // volumesToReportAsAttached list is removed. - RemoveNodeFromAttachUpdates(nodeName types.NodeName) error } // AttachedVolume represents a volume that is attached to a node. @@ -264,19 +260,6 @@ func (asw *actualStateOfWorld) AddVolumeToReportAsAttached( asw.addVolumeToReportAsAttached(volumeName, nodeName) } -func (asw *actualStateOfWorld) RemoveNodeFromAttachUpdates(nodeName types.NodeName) error { - asw.Lock() - defer asw.Unlock() - - _, nodeToUpdateExists := asw.nodesToUpdateStatusFor[nodeName] - if nodeToUpdateExists { - delete(asw.nodesToUpdateStatusFor, nodeName) - return nil - } - return fmt.Errorf("node %q does not exist in volumesToReportAsAttached list", - nodeName) -} - func (asw *actualStateOfWorld) AddVolumeNode( uniqueName v1.UniqueVolumeName, volumeSpec *volume.Spec, nodeName types.NodeName, devicePath string) (v1.UniqueVolumeName, error) { asw.Lock() diff --git a/vendor/k8s.io/kubernetes/pkg/controller/volume/attachdetach/reconciler/reconciler.go b/vendor/k8s.io/kubernetes/pkg/controller/volume/attachdetach/reconciler/reconciler.go index e66253cfd0ff..66169be4f908 100644 --- a/vendor/k8s.io/kubernetes/pkg/controller/volume/attachdetach/reconciler/reconciler.go +++ b/vendor/k8s.io/kubernetes/pkg/controller/volume/attachdetach/reconciler/reconciler.go @@ -148,6 +148,11 @@ func (rc *reconciler) isMultiAttachForbidden(volumeSpec *volume.Spec) bool { // Only if this volume is a persistent volume, we have reliable information on wether it's allowed or not to // multi-attach. We trust in the individual volume implementations to not allow unsupported access modes if volumeSpec.PersistentVolume != nil { + // Check for persistent volume types which do not fail when trying to multi-attach + if volumeSpec.PersistentVolume.Spec.VsphereVolume != nil { + return false + } + if len(volumeSpec.PersistentVolume.Spec.AccessModes) == 0 { // No access mode specified so we don't know for sure. Let the attacher fail if needed return false diff --git a/vendor/k8s.io/kubernetes/pkg/controller/volume/attachdetach/statusupdater/node_status_updater.go b/vendor/k8s.io/kubernetes/pkg/controller/volume/attachdetach/statusupdater/node_status_updater.go index 94db1f2b6b14..818f3c6d9c1e 100644 --- a/vendor/k8s.io/kubernetes/pkg/controller/volume/attachdetach/statusupdater/node_status_updater.go +++ b/vendor/k8s.io/kubernetes/pkg/controller/volume/attachdetach/statusupdater/node_status_updater.go @@ -68,13 +68,11 @@ func (nsu *nodeStatusUpdater) UpdateNodeStatuses() error { nodeObj, err := nsu.nodeLister.Get(string(nodeName)) if errors.IsNotFound(err) { // If node does not exist, its status cannot be updated. - // Remove the node entry from the collection of attach updates, preventing the - // status updater from unnecessarily updating the node. + // Do nothing so that there is no retry until node is created. glog.V(2).Infof( "Could not update node status. Failed to find node %q in NodeInformer cache. Error: '%v'", nodeName, err) - nsu.actualStateOfWorld.RemoveNodeFromAttachUpdates(nodeName) continue } else if err != nil { // For all other errors, log error and reset flag statusUpdateNeeded diff --git a/vendor/k8s.io/kubernetes/pkg/credentialprovider/azure/BUILD b/vendor/k8s.io/kubernetes/pkg/credentialprovider/azure/BUILD index 4f52afc4d366..aacd43a55aa9 100644 --- a/vendor/k8s.io/kubernetes/pkg/credentialprovider/azure/BUILD +++ b/vendor/k8s.io/kubernetes/pkg/credentialprovider/azure/BUILD @@ -17,11 +17,9 @@ go_library( "//pkg/credentialprovider:go_default_library", "//vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry:go_default_library", "//vendor/github.com/Azure/go-autorest/autorest:go_default_library", - "//vendor/github.com/Azure/go-autorest/autorest/adal:go_default_library", "//vendor/github.com/Azure/go-autorest/autorest/azure:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", - "//vendor/gopkg.in/yaml.v2:go_default_library", ], ) diff --git a/vendor/k8s.io/kubernetes/pkg/credentialprovider/azure/azure_credentials.go b/vendor/k8s.io/kubernetes/pkg/credentialprovider/azure/azure_credentials.go index bdf618b96d33..257cbee5b81e 100644 --- a/vendor/k8s.io/kubernetes/pkg/credentialprovider/azure/azure_credentials.go +++ b/vendor/k8s.io/kubernetes/pkg/credentialprovider/azure/azure_credentials.go @@ -17,14 +17,12 @@ limitations under the License. package azure import ( - "io/ioutil" + "io" + "os" "time" - yaml "gopkg.in/yaml.v2" - "github.com/Azure/azure-sdk-for-go/arm/containerregistry" "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/adal" azureapi "github.com/Azure/go-autorest/autorest/azure" "github.com/golang/glog" "github.com/spf13/pflag" @@ -47,10 +45,12 @@ func init() { }) } +// RegistriesClient is a testable interface for the ACR client List operation. type RegistriesClient interface { List() (containerregistry.RegistryListResult, error) } +// NewACRProvider parses the specified configFile and returns a DockerConfigProvider func NewACRProvider(configFile *string) credentialprovider.DockerConfigProvider { return &acrProvider{ file: configFile, @@ -59,24 +59,16 @@ func NewACRProvider(configFile *string) credentialprovider.DockerConfigProvider type acrProvider struct { file *string - config azure.Config - environment azureapi.Environment + config *azure.Config + environment *azureapi.Environment registryClient RegistriesClient } -func (a *acrProvider) loadConfig(contents []byte) error { - err := yaml.Unmarshal(contents, &a.config) +func (a *acrProvider) loadConfig(rdr io.Reader) error { + var err error + a.config, a.environment, err = azure.ParseConfig(rdr) if err != nil { - return err - } - - if a.config.Cloud == "" { - a.environment = azureapi.PublicCloud - } else { - a.environment, err = azureapi.EnvironmentFromName(a.config.Cloud) - if err != nil { - return err - } + glog.Errorf("Failed to load azure credential file: %v", err) } return nil } @@ -86,27 +78,21 @@ func (a *acrProvider) Enabled() bool { glog.V(5).Infof("Azure config unspecified, disabling") return false } - contents, err := ioutil.ReadFile(*a.file) + + f, err := os.Open(*a.file) if err != nil { - glog.Errorf("Failed to load azure credential file: %v", err) - return false - } - if err := a.loadConfig(contents); err != nil { - glog.Errorf("Failed to parse azure credential file: %v", err) + glog.Errorf("Failed to load config from file: %s", *a.file) return false } + defer f.Close() - oauthConfig, err := adal.NewOAuthConfig(a.environment.ActiveDirectoryEndpoint, a.config.TenantID) + err = a.loadConfig(f) if err != nil { - glog.Errorf("Failed to get oauth config: %v", err) + glog.Errorf("Failed to load config from file: %s", *a.file) return false } - servicePrincipalToken, err := adal.NewServicePrincipalToken( - *oauthConfig, - a.config.AADClientID, - a.config.AADClientSecret, - a.environment.ServiceManagementEndpoint) + servicePrincipalToken, err := azure.GetServicePrincipalToken(a.config, a.environment) if err != nil { glog.Errorf("Failed to create service principal token: %v", err) return false diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/exec.go b/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/exec.go index 1d73a8a8d5c6..f7344eb727be 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/exec.go +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/exec.go @@ -135,6 +135,9 @@ func (*NsenterExecHandler) ExecInContainer(client libdocker.Interface, container type NativeExecHandler struct{} func (*NativeExecHandler) ExecInContainer(client libdocker.Interface, container *dockertypes.ContainerJSON, cmd []string, stdin io.Reader, stdout, stderr io.WriteCloser, tty bool, resize <-chan remotecommand.TerminalSize, timeout time.Duration) error { + done := make(chan struct{}) + defer close(done) + createOpts := dockertypes.ExecConfig{ Cmd: cmd, AttachStdin: stdin != nil, @@ -149,9 +152,23 @@ func (*NativeExecHandler) ExecInContainer(client libdocker.Interface, container // Have to start this before the call to client.StartExec because client.StartExec is a blocking // call :-( Otherwise, resize events don't get processed and the terminal never resizes. - kubecontainer.HandleResizing(resize, func(size remotecommand.TerminalSize) { - client.ResizeExecTTY(execObj.ID, int(size.Height), int(size.Width)) - }) + // + // We also have to delay attempting to send a terminal resize request to docker until after the + // exec has started; otherwise, the initial resize request will fail. + execStarted := make(chan struct{}) + go func() { + select { + case <-execStarted: + // client.StartExec has started the exec, so we can start resizing + case <-done: + // ExecInContainer has returned, so short-circuit + return + } + + kubecontainer.HandleResizing(resize, func(size remotecommand.TerminalSize) { + client.ResizeExecTTY(execObj.ID, int(size.Height), int(size.Width)) + }) + }() startOpts := dockertypes.ExecStartCheck{Detach: false, Tty: tty} streamOpts := libdocker.StreamOptions{ @@ -159,6 +176,7 @@ func (*NativeExecHandler) ExecInContainer(client libdocker.Interface, container OutputStream: stdout, ErrorStream: stderr, RawTerminal: tty, + ExecStarted: execStarted, } err = client.StartExec(execObj.ID, startOpts, streamOpts) if err != nil { diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker/kube_docker_client.go b/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker/kube_docker_client.go index f3bbc3f0536e..7fdfb03e1ca0 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker/kube_docker_client.go +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker/kube_docker_client.go @@ -463,6 +463,15 @@ func (d *kubeDockerClient) StartExec(startExec string, opts dockertypes.ExecStar return err } defer resp.Close() + + if sopts.ExecStarted != nil { + // Send a message to the channel indicating that the exec has started. This is needed so + // interactive execs can handle resizing correctly - the request to resize the TTY has to happen + // after the call to d.client.ContainerExecAttach, and because d.holdHijackedConnection below + // blocks, we use sopts.ExecStarted to signal the caller that it's ok to resize. + sopts.ExecStarted <- struct{}{} + } + return d.holdHijackedConnection(sopts.RawTerminal || opts.Tty, sopts.InputStream, sopts.OutputStream, sopts.ErrorStream, resp) } @@ -593,6 +602,7 @@ type StreamOptions struct { InputStream io.Reader OutputStream io.Writer ErrorStream io.Writer + ExecStarted chan struct{} } // operationTimeout is the error returned when the docker operations are timeout. diff --git a/vendor/k8s.io/kubernetes/pkg/version/base.go b/vendor/k8s.io/kubernetes/pkg/version/base.go index 341b9d6b7880..937443864607 100644 --- a/vendor/k8s.io/kubernetes/pkg/version/base.go +++ b/vendor/k8s.io/kubernetes/pkg/version/base.go @@ -51,7 +51,7 @@ var ( // semantic version is a git hash, but the version itself is no // longer the direct output of "git describe", but a slight // translation to be semver compliant. - gitVersion string = "v1.7.4+$Format:%h$" + gitVersion string = "v1.7.5+$Format:%h$" gitCommit string = "$Format:%H$" // sha1 from git, output of $(git rev-parse HEAD) gitTreeState string = "not a git tree" // state of git tree, either "clean" or "dirty" diff --git a/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/unmounter.go b/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/unmounter.go index 2959b53f9489..2f1e189b1c78 100644 --- a/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/unmounter.go +++ b/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/unmounter.go @@ -51,23 +51,15 @@ func (f *flexVolumeUnmounter) TearDownAt(dir string) error { return nil } - notmnt, err := isNotMounted(f.mounter, dir) + call := f.plugin.NewDriverCall(unmountCmd) + call.Append(dir) + _, err := call.Run() + if isCmdNotSupportedErr(err) { + err = (*unmounterDefaults)(f).TearDownAt(dir) + } if err != nil { return err } - if notmnt { - glog.Warningf("Warning: Path: %v already unmounted", dir) - } else { - call := f.plugin.NewDriverCall(unmountCmd) - call.Append(dir) - _, err := call.Run() - if isCmdNotSupportedErr(err) { - err = (*unmounterDefaults)(f).TearDownAt(dir) - } - if err != nil { - return err - } - } // Flexvolume driver may remove the directory. Ignore if it does. if pathExists, pathErr := util.PathExists(dir); pathErr != nil { diff --git a/vendor/k8s.io/kubernetes/pkg/volume/scaleio/BUILD b/vendor/k8s.io/kubernetes/pkg/volume/scaleio/BUILD index 99d375f8de3d..58825b407632 100644 --- a/vendor/k8s.io/kubernetes/pkg/volume/scaleio/BUILD +++ b/vendor/k8s.io/kubernetes/pkg/volume/scaleio/BUILD @@ -24,6 +24,7 @@ go_test( "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", "//vendor/github.com/codedellemc/goscaleio/types/v1:go_default_library", + "//vendor/github.com/golang/glog:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/k8s.io/client-go/util/testing:go_default_library", diff --git a/vendor/k8s.io/kubernetes/pkg/volume/scaleio/sio_client.go b/vendor/k8s.io/kubernetes/pkg/volume/scaleio/sio_client.go index bfcb6f0d062b..8742905ed09d 100644 --- a/vendor/k8s.io/kubernetes/pkg/volume/scaleio/sio_client.go +++ b/vendor/k8s.io/kubernetes/pkg/volume/scaleio/sio_client.go @@ -45,7 +45,7 @@ type sioInterface interface { FindVolume(name string) (*siotypes.Volume, error) Volume(sioVolumeID) (*siotypes.Volume, error) CreateVolume(name string, sizeGB int64) (*siotypes.Volume, error) - AttachVolume(sioVolumeID) error + AttachVolume(sioVolumeID, bool) error DetachVolume(sioVolumeID) error DeleteVolume(sioVolumeID) error IID() (string, error) @@ -217,8 +217,9 @@ func (c *sioClient) CreateVolume(name string, sizeGB int64) (*siotypes.Volume, e return c.Volume(sioVolumeID(createResponse.ID)) } -// AttachVolume maps the scaleio volume to an sdc node. -func (c *sioClient) AttachVolume(id sioVolumeID) error { +// AttachVolume maps the scaleio volume to an sdc node. If the multipleMappings flag +// is true, ScaleIO will allow other SDC to map to that volume. +func (c *sioClient) AttachVolume(id sioVolumeID, multipleMappings bool) error { if err := c.init(); err != nil { glog.Error(log("failed to init'd client in attach volume: %v", err)) return err @@ -232,7 +233,7 @@ func (c *sioClient) AttachVolume(id sioVolumeID) error { params := &siotypes.MapVolumeSdcParam{ SdcID: iid, - AllowMultipleMappings: "false", + AllowMultipleMappings: strconv.FormatBool(multipleMappings), AllSdcs: "", } volClient := sio.NewVolume(c.client) diff --git a/vendor/k8s.io/kubernetes/pkg/volume/scaleio/sio_mgr.go b/vendor/k8s.io/kubernetes/pkg/volume/scaleio/sio_mgr.go index ca10677dd718..83d5e498dc87 100644 --- a/vendor/k8s.io/kubernetes/pkg/volume/scaleio/sio_mgr.go +++ b/vendor/k8s.io/kubernetes/pkg/volume/scaleio/sio_mgr.go @@ -27,7 +27,7 @@ import ( type storageInterface interface { CreateVolume(string, int64) (*siotypes.Volume, error) - AttachVolume(string) (string, error) + AttachVolume(string, bool) (string, error) IsAttached(string) (bool, error) DetachVolume(string) error DeleteVolume(string) error @@ -103,8 +103,9 @@ func (m *sioMgr) CreateVolume(volName string, sizeGB int64) (*siotypes.Volume, e return vol, nil } -// AttachVolume maps a ScaleIO volume to the running node -func (m *sioMgr) AttachVolume(volName string) (string, error) { +// AttachVolume maps a ScaleIO volume to the running node. If flag multiMaps, +// ScaleIO will allow other SDC to map to volume. +func (m *sioMgr) AttachVolume(volName string, multipleMappings bool) (string, error) { client, err := m.getClient() if err != nil { glog.Error(log("attach volume failed: %v", err)) @@ -139,7 +140,7 @@ func (m *sioMgr) AttachVolume(volName string) (string, error) { } // attach volume, get deviceName - if err := client.AttachVolume(sioVolumeID(vol.ID)); err != nil { + if err := client.AttachVolume(sioVolumeID(vol.ID), multipleMappings); err != nil { glog.Error(log("attachment for volume %s failed :%v", volName, err)) return "", err } diff --git a/vendor/k8s.io/kubernetes/pkg/volume/scaleio/sio_plugin.go b/vendor/k8s.io/kubernetes/pkg/volume/scaleio/sio_plugin.go index ff45c41b0220..04bf70793280 100644 --- a/vendor/k8s.io/kubernetes/pkg/volume/scaleio/sio_plugin.go +++ b/vendor/k8s.io/kubernetes/pkg/volume/scaleio/sio_plugin.go @@ -149,6 +149,7 @@ var _ volume.PersistentVolumePlugin = &sioPlugin{} func (p *sioPlugin) GetAccessModes() []api.PersistentVolumeAccessMode { return []api.PersistentVolumeAccessMode{ api.ReadWriteOnce, + api.ReadOnlyMany, } } diff --git a/vendor/k8s.io/kubernetes/pkg/volume/scaleio/sio_util.go b/vendor/k8s.io/kubernetes/pkg/volume/scaleio/sio_util.go index 42cc31c9f4ee..2ee7d918dcc1 100644 --- a/vendor/k8s.io/kubernetes/pkg/volume/scaleio/sio_util.go +++ b/vendor/k8s.io/kubernetes/pkg/volume/scaleio/sio_util.go @@ -68,11 +68,13 @@ var ( nsSep = "%" sdcRootPath = "/opt/emc/scaleio/sdc/bin" - secretNotFoundErr = errors.New("secret not found") - configMapNotFoundErr = errors.New("configMap not found") - gatewayNotProvidedErr = errors.New("gateway not provided") - secretRefNotProvidedErr = errors.New("secret ref not provided") - systemNotProvidedErr = errors.New("secret not provided") + secretNotFoundErr = errors.New("secret not found") + configMapNotFoundErr = errors.New("configMap not found") + gatewayNotProvidedErr = errors.New("ScaleIO gateway not provided") + secretRefNotProvidedErr = errors.New("secret ref not provided") + systemNotProvidedErr = errors.New("ScaleIO system not provided") + storagePoolNotProvidedErr = errors.New("ScaleIO storage pool not provided") + protectionDomainNotProvidedErr = errors.New("ScaleIO protection domain not provided") ) // mapScaleIOVolumeSource maps attributes from a ScaleIOVolumeSource to config @@ -107,6 +109,12 @@ func validateConfigs(config map[string]string) error { if config[confKey.system] == "" { return systemNotProvidedErr } + if config[confKey.storagePool] == "" { + return storagePoolNotProvidedErr + } + if config[confKey.protectionDomain] == "" { + return protectionDomainNotProvidedErr + } return nil } @@ -119,8 +127,6 @@ func applyConfigDefaults(config map[string]string) { b = false } config[confKey.sslEnabled] = strconv.FormatBool(b) - config[confKey.protectionDomain] = defaultString(config[confKey.protectionDomain], "default") - config[confKey.storagePool] = defaultString(config[confKey.storagePool], "default") config[confKey.storageMode] = defaultString(config[confKey.storageMode], "ThinProvisioned") config[confKey.fsType] = defaultString(config[confKey.fsType], "xfs") b, err = strconv.ParseBool(config[confKey.readOnly]) diff --git a/vendor/k8s.io/kubernetes/pkg/volume/scaleio/sio_volume.go b/vendor/k8s.io/kubernetes/pkg/volume/scaleio/sio_volume.go index 3abebd6a3829..b3c2177b8df6 100644 --- a/vendor/k8s.io/kubernetes/pkg/volume/scaleio/sio_volume.go +++ b/vendor/k8s.io/kubernetes/pkg/volume/scaleio/sio_volume.go @@ -88,7 +88,7 @@ func (v *sioVolume) SetUpAt(dir string, fsGroup *int64) error { v.plugin.volumeMtx.LockKey(v.volSpecName) defer v.plugin.volumeMtx.UnlockKey(v.volSpecName) - glog.V(4).Info(log("setting up volume %s", v.volSpecName)) + glog.V(4).Info(log("setting up volume for PV.spec %s", v.volSpecName)) if err := v.setSioMgr(); err != nil { glog.Error(log("setup failed to create scalio manager: %v", err)) return err @@ -104,18 +104,36 @@ func (v *sioVolume) SetUpAt(dir string, fsGroup *int64) error { return nil } - // attach the volume and mount + // should multiple-mapping be enabled + enableMultiMaps := false + isROM := false + if v.spec.PersistentVolume != nil { + ams := v.spec.PersistentVolume.Spec.AccessModes + for _, am := range ams { + if am == api.ReadOnlyMany { + enableMultiMaps = true + isROM = true + } + } + } + glog.V(4).Info(log("multiple mapping enabled = %v", enableMultiMaps)) + volName := v.volName - devicePath, err := v.sioMgr.AttachVolume(volName) + devicePath, err := v.sioMgr.AttachVolume(volName, enableMultiMaps) if err != nil { glog.Error(log("setup of volume %v: %v", v.volSpecName, err)) return err } options := []string{} - if v.source.ReadOnly { - options = append(options, "ro") - } else { + switch { + default: + options = append(options, "rw") + case isROM && !v.source.ReadOnly: options = append(options, "rw") + case isROM: + options = append(options, "ro") + case v.source.ReadOnly: + options = append(options, "ro") } glog.V(4).Info(log("mounting device %s -> %s", devicePath, dir)) @@ -140,7 +158,12 @@ func (v *sioVolume) SetUpAt(dir string, fsGroup *int64) error { return err } - glog.V(4).Info(log("successfully setup volume %s attached %s:%s as %s", v.volSpecName, v.volName, devicePath, dir)) + if !v.readOnly && fsGroup != nil { + glog.V(4).Info(log("applying value FSGroup ownership")) + volume.SetVolumeOwnership(v, fsGroup) + } + + glog.V(4).Info(log("successfully setup PV %s: volume %s mapped as %s mounted at %s", v.volSpecName, v.volName, devicePath, dir)) return nil } @@ -191,7 +214,7 @@ func (v *sioVolume) TearDownAt(dir string) error { // use "last attempt wins" strategy to detach volume from node // only allow volume to detach when it is not busy (not being used by other pods) if !deviceBusy { - glog.V(4).Info(log("teardown is attempting to detach/unmap volume for %s", v.volSpecName)) + glog.V(4).Info(log("teardown is attempting to detach/unmap volume for PV %s", v.volSpecName)) if err := v.resetSioMgr(); err != nil { glog.Error(log("teardown failed, unable to reset scalio mgr: %v", err)) } @@ -224,7 +247,7 @@ func (v *sioVolume) Delete() error { return err } - glog.V(4).Info(log("successfully deleted pvc %s", v.volSpecName)) + glog.V(4).Info(log("successfully deleted PV %s with volume %s", v.volSpecName, v.volName)) return nil } @@ -234,17 +257,30 @@ func (v *sioVolume) Delete() error { var _ volume.Provisioner = &sioVolume{} func (v *sioVolume) Provision() (*api.PersistentVolume, error) { - glog.V(4).Info(log("attempting to dynamically provision pvc %v", v.options.PVName)) + glog.V(4).Info(log("attempting to dynamically provision pvc %v", v.options.PVC.Name)) if !volume.AccessModesContainedInAll(v.plugin.GetAccessModes(), v.options.PVC.Spec.AccessModes) { return nil, fmt.Errorf("invalid AccessModes %v: only AccessModes %v are supported", v.options.PVC.Spec.AccessModes, v.plugin.GetAccessModes()) } // setup volume attrributes - name := v.generateVolName() + genName := v.generateName("k8svol", 11) + var oneGig int64 = 1024 * 1024 * 1024 + var eightGig int64 = 8 * oneGig + capacity := v.options.PVC.Spec.Resources.Requests[api.ResourceName(api.ResourceStorage)] volSizeBytes := capacity.Value() - volSizeGB := int64(volume.RoundUpSize(volSizeBytes, 1024*1024*1024)) + volSizeGB := int64(volume.RoundUpSize(volSizeBytes, oneGig)) + + if volSizeBytes == 0 { + return nil, fmt.Errorf("invalid volume size of 0 specified") + } + + if volSizeBytes < eightGig { + volSizeGB = int64(volume.RoundUpSize(eightGig, oneGig)) + glog.V(4).Info(log("capacity less than 8Gi found, adjusted to %dGi", volSizeGB)) + + } // create sio manager if err := v.setSioMgrFromConfig(); err != nil { @@ -253,14 +289,15 @@ func (v *sioVolume) Provision() (*api.PersistentVolume, error) { } // create volume - vol, err := v.sioMgr.CreateVolume(name, volSizeGB) + volName := genName + vol, err := v.sioMgr.CreateVolume(volName, volSizeGB) if err != nil { glog.Error(log("provision failed while creating volume: %v", err)) return nil, err } // prepare data for pv - v.configData[confKey.volumeName] = name + v.configData[confKey.volumeName] = volName sslEnabled, err := strconv.ParseBool(v.configData[confKey.sslEnabled]) if err != nil { glog.Warning(log("failed to parse parameter sslEnabled, setting to false")) @@ -273,9 +310,10 @@ func (v *sioVolume) Provision() (*api.PersistentVolume, error) { } // describe created pv + pvName := genName pv := &api.PersistentVolume{ ObjectMeta: meta.ObjectMeta{ - Name: v.options.PVName, + Name: pvName, Namespace: v.options.PVC.Namespace, Labels: map[string]string{}, Annotations: map[string]string{ @@ -299,7 +337,7 @@ func (v *sioVolume) Provision() (*api.PersistentVolume, error) { ProtectionDomain: v.configData[confKey.protectionDomain], StoragePool: v.configData[confKey.storagePool], StorageMode: v.configData[confKey.storageMode], - VolumeName: name, + VolumeName: volName, FSType: v.configData[confKey.fsType], ReadOnly: readOnly, }, @@ -310,14 +348,14 @@ func (v *sioVolume) Provision() (*api.PersistentVolume, error) { pv.Spec.AccessModes = v.plugin.GetAccessModes() } - glog.V(4).Info(log("provisioner dynamically created pvc %v with volume %s successfully", pv.Name, vol.Name)) + glog.V(4).Info(log("provisioner created pv %v and volume %s successfully", pvName, vol.Name)) return pv, nil } // setSioMgr creates scaleio mgr from cached config data if found // otherwise, setups new config data and create mgr func (v *sioVolume) setSioMgr() error { - glog.V(4).Info(log("setting up sio mgr for vol %s", v.volSpecName)) + glog.V(4).Info(log("setting up sio mgr for spec %s", v.volSpecName)) podDir := v.plugin.host.GetPodPluginDir(v.podUID, sioPluginName) configName := path.Join(podDir, sioConfigFileName) if v.sioMgr == nil { @@ -455,6 +493,6 @@ func (v *sioVolume) setSioMgrFromSpec() error { return nil } -func (v *sioVolume) generateVolName() string { - return "sio-" + strings.Replace(string(uuid.NewUUID()), "-", "", -1)[0:25] +func (v *sioVolume) generateName(prefix string, size int) string { + return fmt.Sprintf("%s-%s", prefix, strings.Replace(string(uuid.NewUUID()), "-", "", -1)[0:size]) }