diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index 291246c8..edadf7ce 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -1,698 +1,698 @@ { - "ImportPath": "k8s.io/client-go", - "GoVersion": "go1.8", - "GodepVersion": "v79", - "Packages": [ - "./..." - ], - "Deps": [ - { - "ImportPath": "cloud.google.com/go/compute/metadata", - "Rev": "3b1ae45394a234c385be014e9a488f2bb6eef821" - }, - { - "ImportPath": "cloud.google.com/go/internal", - "Rev": "3b1ae45394a234c385be014e9a488f2bb6eef821" - }, - { - "ImportPath": "github.com/Azure/go-autorest/autorest", - "Rev": "58f6f26e200fa5dfb40c9cd1c83f3e2c860d779d" - }, - { - "ImportPath": "github.com/Azure/go-autorest/autorest/adal", - "Rev": "58f6f26e200fa5dfb40c9cd1c83f3e2c860d779d" - }, - { - "ImportPath": "github.com/Azure/go-autorest/autorest/azure", - "Rev": "58f6f26e200fa5dfb40c9cd1c83f3e2c860d779d" - }, - { - "ImportPath": "github.com/Azure/go-autorest/autorest/date", - "Rev": "58f6f26e200fa5dfb40c9cd1c83f3e2c860d779d" - }, - { - "ImportPath": "github.com/PuerkitoBio/purell", - "Rev": "8a290539e2e8629dbc4e6bad948158f790ec31f4" - }, - { - "ImportPath": "github.com/PuerkitoBio/urlesc", - "Rev": "5bd2802263f21d8788851d5305584c82a5c75d7e" - }, - { - "ImportPath": "github.com/coreos/go-oidc/http", - "Rev": "a4973d9a4225417aecf5d450a9522f00c1f7130f" - }, - { - "ImportPath": "github.com/coreos/go-oidc/jose", - "Rev": "a4973d9a4225417aecf5d450a9522f00c1f7130f" - }, - { - "ImportPath": "github.com/coreos/go-oidc/key", - "Rev": "a4973d9a4225417aecf5d450a9522f00c1f7130f" - }, - { - "ImportPath": "github.com/coreos/go-oidc/oauth2", - "Rev": "a4973d9a4225417aecf5d450a9522f00c1f7130f" - }, - { - "ImportPath": "github.com/coreos/go-oidc/oidc", - "Rev": "a4973d9a4225417aecf5d450a9522f00c1f7130f" - }, - { - "ImportPath": "github.com/coreos/pkg/health", - "Rev": "fa29b1d70f0beaddd4c7021607cc3c3be8ce94b8" - }, - { - "ImportPath": "github.com/coreos/pkg/httputil", - "Rev": "fa29b1d70f0beaddd4c7021607cc3c3be8ce94b8" - }, - { - "ImportPath": "github.com/coreos/pkg/timeutil", - "Rev": "fa29b1d70f0beaddd4c7021607cc3c3be8ce94b8" - }, - { - "ImportPath": "github.com/davecgh/go-spew/spew", - "Rev": "782f4967f2dc4564575ca782fe2d04090b5faca8" - }, - { - "ImportPath": "github.com/dgrijalva/jwt-go", - "Rev": "01aeca54ebda6e0fbfafd0a524d234159c05ec20" - }, - { - "ImportPath": "github.com/docker/spdystream", - "Rev": "449fdfce4d962303d702fec724ef0ad181c92528" - }, - { - "ImportPath": "github.com/docker/spdystream/spdy", - "Rev": "449fdfce4d962303d702fec724ef0ad181c92528" - }, - { - "ImportPath": "github.com/emicklei/go-restful", - "Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46" - }, - { - "ImportPath": "github.com/emicklei/go-restful/log", - "Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46" - }, - { - "ImportPath": "github.com/ghodss/yaml", - "Rev": "73d445a93680fa1a78ae23a5839bad48f32ba1ee" - }, - { - "ImportPath": "github.com/go-openapi/jsonpointer", - "Rev": "46af16f9f7b149af66e5d1bd010e3574dc06de98" - }, - { - "ImportPath": "github.com/go-openapi/jsonreference", - "Rev": "13c6e3589ad90f49bd3e3bbe2c2cb3d7a4142272" - }, - { - "ImportPath": "github.com/go-openapi/spec", - "Rev": "7abd5745472fff5eb3685386d5fb8bf38683154d" - }, - { - "ImportPath": "github.com/go-openapi/swag", - "Rev": "f3f9494671f93fcff853e3c6e9e948b3eb71e590" - }, - { - "ImportPath": "github.com/gogo/protobuf/proto", - "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" - }, - { - "ImportPath": "github.com/gogo/protobuf/sortkeys", - "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" - }, - { - "ImportPath": "github.com/golang/glog", - "Rev": "44145f04b68cf362d9c4df2182967c2275eaefed" - }, - { - "ImportPath": "github.com/golang/groupcache/lru", - "Rev": "02826c3e79038b59d737d3b1c0a1d937f71a4433" - }, - { - "ImportPath": "github.com/golang/protobuf/proto", - "Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" - }, - { - "ImportPath": "github.com/golang/protobuf/ptypes", - "Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" - }, - { - "ImportPath": "github.com/golang/protobuf/ptypes/any", - "Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" - }, - { - "ImportPath": "github.com/golang/protobuf/ptypes/duration", - "Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" - }, - { - "ImportPath": "github.com/golang/protobuf/ptypes/timestamp", - "Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" - }, - { - "ImportPath": "github.com/google/btree", - "Rev": "7d79101e329e5a3adf994758c578dab82b90c017" - }, - { - "ImportPath": "github.com/google/gofuzz", - "Rev": "44d81051d367757e1c7c6a5a86423ece9afcf63c" - }, - { - "ImportPath": "github.com/googleapis/gnostic/OpenAPIv2", - "Rev": "0c5108395e2debce0d731cf0287ddf7242066aba" - }, - { - "ImportPath": "github.com/googleapis/gnostic/compiler", - "Rev": "0c5108395e2debce0d731cf0287ddf7242066aba" - }, - { - "ImportPath": "github.com/googleapis/gnostic/extensions", - "Rev": "0c5108395e2debce0d731cf0287ddf7242066aba" - }, - { - "ImportPath": "github.com/gophercloud/gophercloud", - "Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194" - }, - { - "ImportPath": "github.com/gophercloud/gophercloud/openstack", - "Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194" - }, - { - "ImportPath": "github.com/gophercloud/gophercloud/openstack/identity/v2/tenants", - "Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194" - }, - { - "ImportPath": "github.com/gophercloud/gophercloud/openstack/identity/v2/tokens", - "Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194" - }, - { - "ImportPath": "github.com/gophercloud/gophercloud/openstack/identity/v3/tokens", - "Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194" - }, - { - "ImportPath": "github.com/gophercloud/gophercloud/openstack/utils", - "Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194" - }, - { - "ImportPath": "github.com/gophercloud/gophercloud/pagination", - "Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194" - }, - { - "ImportPath": "github.com/gregjones/httpcache", - "Rev": "787624de3eb7bd915c329cba748687a3b22666a6" - }, - { - "ImportPath": "github.com/gregjones/httpcache/diskcache", - "Rev": "787624de3eb7bd915c329cba748687a3b22666a6" - }, - { - "ImportPath": "github.com/hashicorp/golang-lru", - "Rev": "a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4" - }, - { - "ImportPath": "github.com/hashicorp/golang-lru/simplelru", - "Rev": "a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4" - }, - { - "ImportPath": "github.com/howeyc/gopass", - "Rev": "bf9dde6d0d2c004a008c27aaee91170c786f6db8" - }, - { - "ImportPath": "github.com/imdario/mergo", - "Rev": "6633656539c1639d9d78127b7d47c622b5d7b6dc" - }, - { - "ImportPath": "github.com/jonboulle/clockwork", - "Rev": "72f9bd7c4e0c2a40055ab3d0f09654f730cce982" - }, - { - "ImportPath": "github.com/json-iterator/go", - "Rev": "36b14963da70d11297d313183d7e6388c8510e1e" - }, - { - "ImportPath": "github.com/juju/ratelimit", - "Rev": "5b9ff866471762aa2ab2dced63c9fb6f53921342" - }, - { - "ImportPath": "github.com/mailru/easyjson/buffer", - "Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d" - }, - { - "ImportPath": "github.com/mailru/easyjson/jlexer", - "Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d" - }, - { - "ImportPath": "github.com/mailru/easyjson/jwriter", - "Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d" - }, - { - "ImportPath": "github.com/peterbourgon/diskv", - "Rev": "5f041e8faa004a95c88a202771f4cc3e991971e6" - }, - { - "ImportPath": "github.com/pmezard/go-difflib/difflib", - "Rev": "d8ed2627bdf02c080bf22230dbb337003b7aba2d" - }, - { - "ImportPath": "github.com/spf13/pflag", - "Rev": "9ff6c6923cfffbcd502984b8e0c80539a94968b7" - }, - { - "ImportPath": "github.com/stretchr/testify/assert", - "Rev": "f6abca593680b2315d2075e0f5e2a9751e3f431a" - }, - { - "ImportPath": "golang.org/x/crypto/ssh/terminal", - "Rev": "81e90905daefcd6fd217b62423c0908922eadb30" - }, - { - "ImportPath": "golang.org/x/net/context", - "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" - }, - { - "ImportPath": "golang.org/x/net/context/ctxhttp", - "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" - }, - { - "ImportPath": "golang.org/x/net/http2", - "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" - }, - { - "ImportPath": "golang.org/x/net/http2/hpack", - "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" - }, - { - "ImportPath": "golang.org/x/net/idna", - "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" - }, - { - "ImportPath": "golang.org/x/net/lex/httplex", - "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" - }, - { - "ImportPath": "golang.org/x/oauth2", - "Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" - }, - { - "ImportPath": "golang.org/x/oauth2/google", - "Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" - }, - { - "ImportPath": "golang.org/x/oauth2/internal", - "Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" - }, - { - "ImportPath": "golang.org/x/oauth2/jws", - "Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" - }, - { - "ImportPath": "golang.org/x/oauth2/jwt", - "Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" - }, - { - "ImportPath": "golang.org/x/sys/unix", - "Rev": "7ddbeae9ae08c6a06a59597f0c9edbc5ff2444ce" - }, - { - "ImportPath": "golang.org/x/sys/windows", - "Rev": "7ddbeae9ae08c6a06a59597f0c9edbc5ff2444ce" - }, - { - "ImportPath": "golang.org/x/text/cases", - "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" - }, - { - "ImportPath": "golang.org/x/text/internal", - "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" - }, - { - "ImportPath": "golang.org/x/text/internal/tag", - "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" - }, - { - "ImportPath": "golang.org/x/text/language", - "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" - }, - { - "ImportPath": "golang.org/x/text/runes", - "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" - }, - { - "ImportPath": "golang.org/x/text/secure/bidirule", - "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" - }, - { - "ImportPath": "golang.org/x/text/secure/precis", - "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" - }, - { - "ImportPath": "golang.org/x/text/transform", - "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" - }, - { - "ImportPath": "golang.org/x/text/unicode/bidi", - "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" - }, - { - "ImportPath": "golang.org/x/text/unicode/norm", - "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" - }, - { - "ImportPath": "golang.org/x/text/width", - "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" - }, - { - "ImportPath": "gopkg.in/inf.v0", - "Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" - }, - { - "ImportPath": "gopkg.in/yaml.v2", - "Rev": "53feefa2559fb8dfa8d81baad31be332c97d6c77" - }, - { - "ImportPath": "k8s.io/api/admissionregistration/v1alpha1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/apps/v1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/apps/v1beta1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/apps/v1beta2", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/authentication/v1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/authentication/v1beta1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/authorization/v1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/authorization/v1beta1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/autoscaling/v1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/autoscaling/v2beta1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/batch/v1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/batch/v1beta1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/batch/v2alpha1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/certificates/v1beta1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/core/v1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/extensions/v1beta1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/imagepolicy/v1alpha1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/networking/v1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/policy/v1beta1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/rbac/v1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/rbac/v1alpha1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/rbac/v1beta1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/scheduling/v1alpha1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/settings/v1alpha1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/storage/v1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/api/storage/v1beta1", - "Rev": "858c4b937c6f0bd144f800f3fc659ee4e52790db" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/api/equality", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/api/errors", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/api/meta", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/api/resource", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/api/testing", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/api/testing/fuzzer", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/api/testing/roundtrip", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/apimachinery", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/apimachinery/announced", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/apimachinery/registered", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/fuzzer", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/internalversion", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1alpha1", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/conversion", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/conversion/unstructured", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/fields", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/labels", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/runtime", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/runtime/schema", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/selection", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/types", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/cache", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/clock", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/diff", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/errors", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/framer", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/httpstream", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/httpstream/spdy", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/intstr", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/json", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/net", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/remotecommand", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/runtime", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/sets", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/validation", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/validation/field", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/wait", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/yaml", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/version", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/watch", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/netutil", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect", - "Rev": "2daf8da27592e02bcfc0eae6e9b5045be9c1b9da" - }, - { - "ImportPath": "k8s.io/kube-openapi/pkg/common", - "Rev": "89ae48fe8691077463af5b7fb3b6f194632c5946" - } - ] + "ImportPath": "k8s.io/client-go", + "GoVersion": "go1.8", + "GodepVersion": "v79", + "Packages": [ + "./..." + ], + "Deps": [ + { + "ImportPath": "cloud.google.com/go/compute/metadata", + "Rev": "3b1ae45394a234c385be014e9a488f2bb6eef821" + }, + { + "ImportPath": "cloud.google.com/go/internal", + "Rev": "3b1ae45394a234c385be014e9a488f2bb6eef821" + }, + { + "ImportPath": "github.com/Azure/go-autorest/autorest", + "Rev": "58f6f26e200fa5dfb40c9cd1c83f3e2c860d779d" + }, + { + "ImportPath": "github.com/Azure/go-autorest/autorest/adal", + "Rev": "58f6f26e200fa5dfb40c9cd1c83f3e2c860d779d" + }, + { + "ImportPath": "github.com/Azure/go-autorest/autorest/azure", + "Rev": "58f6f26e200fa5dfb40c9cd1c83f3e2c860d779d" + }, + { + "ImportPath": "github.com/Azure/go-autorest/autorest/date", + "Rev": "58f6f26e200fa5dfb40c9cd1c83f3e2c860d779d" + }, + { + "ImportPath": "github.com/PuerkitoBio/purell", + "Rev": "8a290539e2e8629dbc4e6bad948158f790ec31f4" + }, + { + "ImportPath": "github.com/PuerkitoBio/urlesc", + "Rev": "5bd2802263f21d8788851d5305584c82a5c75d7e" + }, + { + "ImportPath": "github.com/coreos/go-oidc/http", + "Rev": "a4973d9a4225417aecf5d450a9522f00c1f7130f" + }, + { + "ImportPath": "github.com/coreos/go-oidc/jose", + "Rev": "a4973d9a4225417aecf5d450a9522f00c1f7130f" + }, + { + "ImportPath": "github.com/coreos/go-oidc/key", + "Rev": "a4973d9a4225417aecf5d450a9522f00c1f7130f" + }, + { + "ImportPath": "github.com/coreos/go-oidc/oauth2", + "Rev": "a4973d9a4225417aecf5d450a9522f00c1f7130f" + }, + { + "ImportPath": "github.com/coreos/go-oidc/oidc", + "Rev": "a4973d9a4225417aecf5d450a9522f00c1f7130f" + }, + { + "ImportPath": "github.com/coreos/pkg/health", + "Rev": "fa29b1d70f0beaddd4c7021607cc3c3be8ce94b8" + }, + { + "ImportPath": "github.com/coreos/pkg/httputil", + "Rev": "fa29b1d70f0beaddd4c7021607cc3c3be8ce94b8" + }, + { + "ImportPath": "github.com/coreos/pkg/timeutil", + "Rev": "fa29b1d70f0beaddd4c7021607cc3c3be8ce94b8" + }, + { + "ImportPath": "github.com/davecgh/go-spew/spew", + "Rev": "782f4967f2dc4564575ca782fe2d04090b5faca8" + }, + { + "ImportPath": "github.com/dgrijalva/jwt-go", + "Rev": "01aeca54ebda6e0fbfafd0a524d234159c05ec20" + }, + { + "ImportPath": "github.com/docker/spdystream", + "Rev": "449fdfce4d962303d702fec724ef0ad181c92528" + }, + { + "ImportPath": "github.com/docker/spdystream/spdy", + "Rev": "449fdfce4d962303d702fec724ef0ad181c92528" + }, + { + "ImportPath": "github.com/emicklei/go-restful", + "Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46" + }, + { + "ImportPath": "github.com/emicklei/go-restful/log", + "Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46" + }, + { + "ImportPath": "github.com/ghodss/yaml", + "Rev": "73d445a93680fa1a78ae23a5839bad48f32ba1ee" + }, + { + "ImportPath": "github.com/go-openapi/jsonpointer", + "Rev": "46af16f9f7b149af66e5d1bd010e3574dc06de98" + }, + { + "ImportPath": "github.com/go-openapi/jsonreference", + "Rev": "13c6e3589ad90f49bd3e3bbe2c2cb3d7a4142272" + }, + { + "ImportPath": "github.com/go-openapi/spec", + "Rev": "7abd5745472fff5eb3685386d5fb8bf38683154d" + }, + { + "ImportPath": "github.com/go-openapi/swag", + "Rev": "f3f9494671f93fcff853e3c6e9e948b3eb71e590" + }, + { + "ImportPath": "github.com/gogo/protobuf/proto", + "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" + }, + { + "ImportPath": "github.com/gogo/protobuf/sortkeys", + "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" + }, + { + "ImportPath": "github.com/golang/glog", + "Rev": "44145f04b68cf362d9c4df2182967c2275eaefed" + }, + { + "ImportPath": "github.com/golang/groupcache/lru", + "Rev": "02826c3e79038b59d737d3b1c0a1d937f71a4433" + }, + { + "ImportPath": "github.com/golang/protobuf/proto", + "Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" + }, + { + "ImportPath": "github.com/golang/protobuf/ptypes", + "Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" + }, + { + "ImportPath": "github.com/golang/protobuf/ptypes/any", + "Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" + }, + { + "ImportPath": "github.com/golang/protobuf/ptypes/duration", + "Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" + }, + { + "ImportPath": "github.com/golang/protobuf/ptypes/timestamp", + "Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" + }, + { + "ImportPath": "github.com/google/btree", + "Rev": "7d79101e329e5a3adf994758c578dab82b90c017" + }, + { + "ImportPath": "github.com/google/gofuzz", + "Rev": "44d81051d367757e1c7c6a5a86423ece9afcf63c" + }, + { + "ImportPath": "github.com/googleapis/gnostic/OpenAPIv2", + "Rev": "0c5108395e2debce0d731cf0287ddf7242066aba" + }, + { + "ImportPath": "github.com/googleapis/gnostic/compiler", + "Rev": "0c5108395e2debce0d731cf0287ddf7242066aba" + }, + { + "ImportPath": "github.com/googleapis/gnostic/extensions", + "Rev": "0c5108395e2debce0d731cf0287ddf7242066aba" + }, + { + "ImportPath": "github.com/gophercloud/gophercloud", + "Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194" + }, + { + "ImportPath": "github.com/gophercloud/gophercloud/openstack", + "Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194" + }, + { + "ImportPath": "github.com/gophercloud/gophercloud/openstack/identity/v2/tenants", + "Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194" + }, + { + "ImportPath": "github.com/gophercloud/gophercloud/openstack/identity/v2/tokens", + "Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194" + }, + { + "ImportPath": "github.com/gophercloud/gophercloud/openstack/identity/v3/tokens", + "Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194" + }, + { + "ImportPath": "github.com/gophercloud/gophercloud/openstack/utils", + "Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194" + }, + { + "ImportPath": "github.com/gophercloud/gophercloud/pagination", + "Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194" + }, + { + "ImportPath": "github.com/gregjones/httpcache", + "Rev": "787624de3eb7bd915c329cba748687a3b22666a6" + }, + { + "ImportPath": "github.com/gregjones/httpcache/diskcache", + "Rev": "787624de3eb7bd915c329cba748687a3b22666a6" + }, + { + "ImportPath": "github.com/hashicorp/golang-lru", + "Rev": "a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4" + }, + { + "ImportPath": "github.com/hashicorp/golang-lru/simplelru", + "Rev": "a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4" + }, + { + "ImportPath": "github.com/howeyc/gopass", + "Rev": "bf9dde6d0d2c004a008c27aaee91170c786f6db8" + }, + { + "ImportPath": "github.com/imdario/mergo", + "Rev": "6633656539c1639d9d78127b7d47c622b5d7b6dc" + }, + { + "ImportPath": "github.com/jonboulle/clockwork", + "Rev": "72f9bd7c4e0c2a40055ab3d0f09654f730cce982" + }, + { + "ImportPath": "github.com/json-iterator/go", + "Rev": "36b14963da70d11297d313183d7e6388c8510e1e" + }, + { + "ImportPath": "github.com/juju/ratelimit", + "Rev": "5b9ff866471762aa2ab2dced63c9fb6f53921342" + }, + { + "ImportPath": "github.com/mailru/easyjson/buffer", + "Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d" + }, + { + "ImportPath": "github.com/mailru/easyjson/jlexer", + "Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d" + }, + { + "ImportPath": "github.com/mailru/easyjson/jwriter", + "Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d" + }, + { + "ImportPath": "github.com/peterbourgon/diskv", + "Rev": "5f041e8faa004a95c88a202771f4cc3e991971e6" + }, + { + "ImportPath": "github.com/pmezard/go-difflib/difflib", + "Rev": "d8ed2627bdf02c080bf22230dbb337003b7aba2d" + }, + { + "ImportPath": "github.com/spf13/pflag", + "Rev": "9ff6c6923cfffbcd502984b8e0c80539a94968b7" + }, + { + "ImportPath": "github.com/stretchr/testify/assert", + "Rev": "f6abca593680b2315d2075e0f5e2a9751e3f431a" + }, + { + "ImportPath": "golang.org/x/crypto/ssh/terminal", + "Rev": "81e90905daefcd6fd217b62423c0908922eadb30" + }, + { + "ImportPath": "golang.org/x/net/context", + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" + }, + { + "ImportPath": "golang.org/x/net/context/ctxhttp", + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" + }, + { + "ImportPath": "golang.org/x/net/http2", + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" + }, + { + "ImportPath": "golang.org/x/net/http2/hpack", + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" + }, + { + "ImportPath": "golang.org/x/net/idna", + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" + }, + { + "ImportPath": "golang.org/x/net/lex/httplex", + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" + }, + { + "ImportPath": "golang.org/x/oauth2", + "Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" + }, + { + "ImportPath": "golang.org/x/oauth2/google", + "Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" + }, + { + "ImportPath": "golang.org/x/oauth2/internal", + "Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" + }, + { + "ImportPath": "golang.org/x/oauth2/jws", + "Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" + }, + { + "ImportPath": "golang.org/x/oauth2/jwt", + "Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" + }, + { + "ImportPath": "golang.org/x/sys/unix", + "Rev": "7ddbeae9ae08c6a06a59597f0c9edbc5ff2444ce" + }, + { + "ImportPath": "golang.org/x/sys/windows", + "Rev": "7ddbeae9ae08c6a06a59597f0c9edbc5ff2444ce" + }, + { + "ImportPath": "golang.org/x/text/cases", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/internal", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/internal/tag", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/language", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/runes", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/secure/bidirule", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/secure/precis", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/transform", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/unicode/bidi", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/unicode/norm", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/width", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "gopkg.in/inf.v0", + "Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" + }, + { + "ImportPath": "gopkg.in/yaml.v2", + "Rev": "53feefa2559fb8dfa8d81baad31be332c97d6c77" + }, + { + "ImportPath": "k8s.io/api/admissionregistration/v1alpha1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/apps/v1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/apps/v1beta1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/apps/v1beta2", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/authentication/v1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/authentication/v1beta1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/authorization/v1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/authorization/v1beta1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/autoscaling/v1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/autoscaling/v2beta1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/batch/v1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/batch/v1beta1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/batch/v2alpha1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/certificates/v1beta1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/core/v1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/extensions/v1beta1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/imagepolicy/v1alpha1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/networking/v1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/policy/v1beta1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/rbac/v1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/rbac/v1alpha1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/rbac/v1beta1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/scheduling/v1alpha1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/settings/v1alpha1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/storage/v1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/api/storage/v1beta1", + "Rev": "9e94033b59b468be6b19ecf16d643134f7512166" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/equality", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/errors", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/meta", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/resource", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/testing", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/testing/fuzzer", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/testing/roundtrip", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apimachinery", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apimachinery/announced", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apimachinery/registered", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/fuzzer", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/internalversion", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1alpha1", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/conversion", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/conversion/unstructured", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/fields", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/labels", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/schema", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/selection", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/types", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/cache", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/clock", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/diff", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/errors", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/framer", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/httpstream", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/httpstream/spdy", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/intstr", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/json", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/net", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/remotecommand", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/runtime", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/sets", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/validation", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/validation/field", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/wait", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/yaml", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/version", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/watch", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/netutil", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect", + "Rev": "0622870c23fc807836ffbf35f1827e479b15365b" + }, + { + "ImportPath": "k8s.io/kube-openapi/pkg/common", + "Rev": "89ae48fe8691077463af5b7fb3b6f194632c5946" + } + ] } diff --git a/examples/create-update-delete-deployment/BUILD b/examples/create-update-delete-deployment/BUILD index 106adfe4..741403b3 100644 --- a/examples/create-update-delete-deployment/BUILD +++ b/examples/create-update-delete-deployment/BUILD @@ -19,10 +19,11 @@ go_library( deps = [ "//vendor/k8s.io/api/apps/v1beta1:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/client-go/kubernetes:go_default_library", "//vendor/k8s.io/client-go/tools/clientcmd:go_default_library", + "//vendor/k8s.io/client-go/util/homedir:go_default_library", + "//vendor/k8s.io/client-go/util/retry:go_default_library", ], ) diff --git a/examples/create-update-delete-deployment/README.md b/examples/create-update-delete-deployment/README.md index 6b7ed4ea..e9c11a93 100644 --- a/examples/create-update-delete-deployment/README.md +++ b/examples/create-update-delete-deployment/README.md @@ -22,6 +22,8 @@ go build -o ./app Now, run this application on your workstation with your local kubeconfig file: ``` +./app +# or specify a kubeconfig file with flag ./app -kubeconfig=$HOME/.kube/config ``` @@ -30,13 +32,19 @@ Running this command will execute the following operations on your cluster: 1. **Create Deployment:** This will create a 2 replica Deployment. Verify with `kubectl get pods`. 2. **Update Deployment:** This will update the Deployment resource created in - previous step to set the replica count to 1 and add annotations. You are - encouraged to inspect the retry loop that handles conflicts. Verify the new - replica count and `foo=bar` annotation with `kubectl describe deployment - demo`. -3. **List Deployments:** This will retrieve Deployments in the `default` + previous step by setting the replica count to 1 and changing the container + image to `nginx:1.13`. You are encouraged to inspect the retry loop that + handles conflicts. Verify the new replica count and container image with + `kubectl describe deployment demo`. +3. **Rollback Deployment:** This will rollback the Deployment to the last + revision. In this case, it's the revision that was created in Step 1. + Use `kubectl describe` to verify the container image is now `nginx:1.12`. + Also note that the Deployment's replica count is still 1; this is because a + Deployment revision is created if and only if the Deployment's pod template + (`.spec.template`) is changed. +4. **List Deployments:** This will retrieve Deployments in the `default` namespace and print their names and replica counts. -4. **Delete Deployment:** This will delete the Deployment object and its +5. **Delete Deployment:** This will delete the Deployment object and its dependent ReplicaSet resource. Verify with `kubectl get deployments`. Each step is separated by an interactive prompt. You must hit the @@ -55,6 +63,10 @@ Updating deployment... Updated deployment... -> Press Return key to continue. +Rolling back deployment... +Rolled back deployment... +-> Press Return key to continue. + Listing deployments in namespace "default": * demo-deployment (1 replicas) -> Press Return key to continue. diff --git a/examples/create-update-delete-deployment/main.go b/examples/create-update-delete-deployment/main.go index 722a3945..f6d62274 100644 --- a/examples/create-update-delete-deployment/main.go +++ b/examples/create-update-delete-deployment/main.go @@ -22,23 +22,28 @@ import ( "flag" "fmt" "os" + "path/filepath" appsv1beta1 "k8s.io/api/apps/v1beta1" apiv1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/clientcmd" + "k8s.io/client-go/util/homedir" + "k8s.io/client-go/util/retry" // Uncomment the following line to load the gcp plugin (only required to authenticate against GKE clusters). // _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" ) func main() { - kubeconfig := flag.String("kubeconfig", "", "absolute path to the kubeconfig file") - flag.Parse() - if *kubeconfig == "" { - panic("-kubeconfig not specified") + var kubeconfig *string + if home := homedir.HomeDir(); home != "" { + kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file") + } else { + kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file") } + flag.Parse() + config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig) if err != nil { panic(err) @@ -66,7 +71,7 @@ func main() { Containers: []apiv1.Container{ { Name: "web", - Image: "nginx:1.13", + Image: "nginx:1.12", Ports: []apiv1.ContainerPort{ { Name: "http", @@ -97,36 +102,53 @@ func main() { // 1. Modify the "deployment" variable and call: Update(deployment). // This works like the "kubectl replace" command and it overwrites/loses changes // made by other clients between you Create() and Update() the object. - // 2. Modify the "result" returned by Create()/Get() and retry Update(result) until + // 2. Modify the "result" returned by Get() and retry Update(result) until // you no longer get a conflict error. This way, you can preserve changes made - // by other clients between Create() and Update(). This is implemented below: + // by other clients between Create() and Update(). This is implemented below + // using the retry utility package included with client-go. (RECOMMENDED) + // + // More Info: + // https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#concurrency-control-and-consistency - for { - result.Spec.Replicas = int32Ptr(1) // reduce replica count - result.Spec.Template.Annotations = map[string]string{ // add annotations - "foo": "bar", + retryErr := retry.RetryOnConflict(retry.DefaultRetry, func() error { + // Retrieve the latest version of Deployment before attempting update + // RetryOnConflict uses exponential backoff to avoid exhausting the apiserver + result, getErr := deploymentsClient.Get("demo-deployment", metav1.GetOptions{}) + if getErr != nil { + panic(fmt.Errorf("Failed to get latest version of Deployment: %v", getErr)) } - if _, err := deploymentsClient.Update(result); errors.IsConflict(err) { - // Deployment is modified in the meanwhile, query the latest version - // and modify the retrieved object. - fmt.Println("encountered conflict, retrying") - result, err = deploymentsClient.Get("demo-deployment", metav1.GetOptions{}) - if err != nil { - panic(fmt.Errorf("Get failed: %+v", err)) - } - } else if err != nil { - panic(err) - } else { - break - } - - // TODO: You should sleep here with an exponential backoff to avoid - // exhausting the apiserver, and add a limit/timeout on the retries to - // avoid getting stuck in this loop indefintiely. + result.Spec.Replicas = int32Ptr(1) // reduce replica count + result.Spec.Template.Spec.Containers[0].Image = "nginx:1.13" // change nginx version + _, updateErr := deploymentsClient.Update(result) + return updateErr + }) + if retryErr != nil { + panic(fmt.Errorf("Update failed: %v", retryErr)) } fmt.Println("Updated deployment...") + // Rollback Deployment + prompt() + fmt.Println("Rolling back deployment...") + // Once again use RetryOnConflict to avoid update conflicts + retryErr = retry.RetryOnConflict(retry.DefaultRetry, func() error { + result, getErr := deploymentsClient.Get("demo-deployment", metav1.GetOptions{}) + if getErr != nil { + panic(fmt.Errorf("Failed to get latest version of Deployment: %v", getErr)) + } + + result.Spec.RollbackTo = &appsv1beta1.RollbackConfig{ + Revision: 0, // can be specific revision number, or 0 for last revision + } + _, updateErr := deploymentsClient.Update(result) + return updateErr + }) + if retryErr != nil { + panic(fmt.Errorf("Rollback failed: %v", retryErr)) + } + fmt.Println("Rolled back deployment...") + // List Deployments prompt() fmt.Printf("Listing deployments in namespace %q:\n", apiv1.NamespaceDefault)