diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index 15e17b9a0..673918bbc 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -1,618 +1,618 @@ { - "ImportPath": "k8s.io/client-go", - "GoVersion": "go1.9", - "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": "d4e6b95c12a08b4de2d48b45d5b4d594e5d32fab" - }, - { - "ImportPath": "github.com/Azure/go-autorest/autorest/adal", - "Rev": "d4e6b95c12a08b4de2d48b45d5b4d594e5d32fab" - }, - { - "ImportPath": "github.com/Azure/go-autorest/autorest/azure", - "Rev": "d4e6b95c12a08b4de2d48b45d5b4d594e5d32fab" - }, - { - "ImportPath": "github.com/Azure/go-autorest/autorest/date", - "Rev": "d4e6b95c12a08b4de2d48b45d5b4d594e5d32fab" - }, - { - "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/ghodss/yaml", - "Rev": "73d445a93680fa1a78ae23a5839bad48f32ba1ee" - }, - { - "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": "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9" - }, - { - "ImportPath": "github.com/golang/protobuf/ptypes", - "Rev": "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9" - }, - { - "ImportPath": "github.com/golang/protobuf/ptypes/any", - "Rev": "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9" - }, - { - "ImportPath": "github.com/golang/protobuf/ptypes/duration", - "Rev": "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9" - }, - { - "ImportPath": "github.com/golang/protobuf/ptypes/timestamp", - "Rev": "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9" - }, - { - "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": "8e59687aa4b27ab22a0bf3295f1e165ff7bd5f97" - }, - { - "ImportPath": "github.com/gophercloud/gophercloud/openstack", - "Rev": "8e59687aa4b27ab22a0bf3295f1e165ff7bd5f97" - }, - { - "ImportPath": "github.com/gophercloud/gophercloud/openstack/identity/v2/tenants", - "Rev": "8e59687aa4b27ab22a0bf3295f1e165ff7bd5f97" - }, - { - "ImportPath": "github.com/gophercloud/gophercloud/openstack/identity/v2/tokens", - "Rev": "8e59687aa4b27ab22a0bf3295f1e165ff7bd5f97" - }, - { - "ImportPath": "github.com/gophercloud/gophercloud/openstack/identity/v3/tokens", - "Rev": "8e59687aa4b27ab22a0bf3295f1e165ff7bd5f97" - }, - { - "ImportPath": "github.com/gophercloud/gophercloud/openstack/utils", - "Rev": "8e59687aa4b27ab22a0bf3295f1e165ff7bd5f97" - }, - { - "ImportPath": "github.com/gophercloud/gophercloud/pagination", - "Rev": "8e59687aa4b27ab22a0bf3295f1e165ff7bd5f97" - }, - { - "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": "13f86432b882000a51c6e610c620974462691a97" - }, - { - "ImportPath": "github.com/pmezard/go-difflib/difflib", - "Rev": "d8ed2627bdf02c080bf22230dbb337003b7aba2d" - }, - { - "ImportPath": "github.com/spf13/pflag", - "Rev": "4c012f6dcd9546820e378d0bdda4d8fc772cdfea" - }, - { - "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": "95c6576299259db960f6c5b9b69ea52422860fce" - }, - { - "ImportPath": "golang.org/x/sys/windows", - "Rev": "95c6576299259db960f6c5b9b69ea52422860fce" - }, - { - "ImportPath": "golang.org/x/text/secure/bidirule", - "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/time/rate", - "Rev": "f51c12702a4d776e4c1fa9b0fabab841babae631" - }, - { - "ImportPath": "gopkg.in/inf.v0", - "Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" - }, - { - "ImportPath": "gopkg.in/yaml.v2", - "Rev": "670d4cfef0544295bc27a114dbac37980d83185a" - }, - { - "ImportPath": "k8s.io/api/admissionregistration/v1alpha1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/admissionregistration/v1beta1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/apps/v1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/apps/v1beta1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/apps/v1beta2", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/authentication/v1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/authentication/v1beta1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/authorization/v1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/authorization/v1beta1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/autoscaling/v1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/autoscaling/v2beta1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/batch/v1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/batch/v1beta1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/batch/v2alpha1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/certificates/v1beta1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/core/v1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/events/v1beta1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/extensions/v1beta1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/imagepolicy/v1alpha1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/networking/v1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/policy/v1beta1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/rbac/v1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/rbac/v1alpha1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/rbac/v1beta1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/scheduling/v1alpha1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/settings/v1alpha1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/storage/v1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/storage/v1alpha1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/api/storage/v1beta1", - "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/api/equality", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/api/errors", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/api/meta", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/api/resource", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/api/testing", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/api/testing/fuzzer", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/api/testing/roundtrip", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/apimachinery", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/apimachinery/announced", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/apimachinery/registered", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/fuzzer", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/internalversion", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1beta1", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/conversion", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/fields", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/labels", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/runtime", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/runtime/schema", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/selection", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/types", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/cache", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/clock", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/diff", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/errors", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/framer", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/httpstream", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/httpstream/spdy", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/intstr", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/json", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/net", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/remotecommand", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/runtime", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/sets", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/validation", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/validation/field", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/wait", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/util/yaml", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/version", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/watch", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/netutil", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect", - "Rev": "f3f6382e538abd0b5cf2070eb28b9ce70a65e93b" - }, - { - "ImportPath": "k8s.io/kube-openapi/pkg/util/proto", - "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3" - } - ] + "ImportPath": "k8s.io/client-go", + "GoVersion": "go1.9", + "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": "d4e6b95c12a08b4de2d48b45d5b4d594e5d32fab" + }, + { + "ImportPath": "github.com/Azure/go-autorest/autorest/adal", + "Rev": "d4e6b95c12a08b4de2d48b45d5b4d594e5d32fab" + }, + { + "ImportPath": "github.com/Azure/go-autorest/autorest/azure", + "Rev": "d4e6b95c12a08b4de2d48b45d5b4d594e5d32fab" + }, + { + "ImportPath": "github.com/Azure/go-autorest/autorest/date", + "Rev": "d4e6b95c12a08b4de2d48b45d5b4d594e5d32fab" + }, + { + "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/ghodss/yaml", + "Rev": "73d445a93680fa1a78ae23a5839bad48f32ba1ee" + }, + { + "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": "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9" + }, + { + "ImportPath": "github.com/golang/protobuf/ptypes", + "Rev": "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9" + }, + { + "ImportPath": "github.com/golang/protobuf/ptypes/any", + "Rev": "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9" + }, + { + "ImportPath": "github.com/golang/protobuf/ptypes/duration", + "Rev": "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9" + }, + { + "ImportPath": "github.com/golang/protobuf/ptypes/timestamp", + "Rev": "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9" + }, + { + "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": "8e59687aa4b27ab22a0bf3295f1e165ff7bd5f97" + }, + { + "ImportPath": "github.com/gophercloud/gophercloud/openstack", + "Rev": "8e59687aa4b27ab22a0bf3295f1e165ff7bd5f97" + }, + { + "ImportPath": "github.com/gophercloud/gophercloud/openstack/identity/v2/tenants", + "Rev": "8e59687aa4b27ab22a0bf3295f1e165ff7bd5f97" + }, + { + "ImportPath": "github.com/gophercloud/gophercloud/openstack/identity/v2/tokens", + "Rev": "8e59687aa4b27ab22a0bf3295f1e165ff7bd5f97" + }, + { + "ImportPath": "github.com/gophercloud/gophercloud/openstack/identity/v3/tokens", + "Rev": "8e59687aa4b27ab22a0bf3295f1e165ff7bd5f97" + }, + { + "ImportPath": "github.com/gophercloud/gophercloud/openstack/utils", + "Rev": "8e59687aa4b27ab22a0bf3295f1e165ff7bd5f97" + }, + { + "ImportPath": "github.com/gophercloud/gophercloud/pagination", + "Rev": "8e59687aa4b27ab22a0bf3295f1e165ff7bd5f97" + }, + { + "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": "13f86432b882000a51c6e610c620974462691a97" + }, + { + "ImportPath": "github.com/pmezard/go-difflib/difflib", + "Rev": "d8ed2627bdf02c080bf22230dbb337003b7aba2d" + }, + { + "ImportPath": "github.com/spf13/pflag", + "Rev": "4c012f6dcd9546820e378d0bdda4d8fc772cdfea" + }, + { + "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": "95c6576299259db960f6c5b9b69ea52422860fce" + }, + { + "ImportPath": "golang.org/x/sys/windows", + "Rev": "95c6576299259db960f6c5b9b69ea52422860fce" + }, + { + "ImportPath": "golang.org/x/text/secure/bidirule", + "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/time/rate", + "Rev": "f51c12702a4d776e4c1fa9b0fabab841babae631" + }, + { + "ImportPath": "gopkg.in/inf.v0", + "Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" + }, + { + "ImportPath": "gopkg.in/yaml.v2", + "Rev": "670d4cfef0544295bc27a114dbac37980d83185a" + }, + { + "ImportPath": "k8s.io/api/admissionregistration/v1alpha1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/admissionregistration/v1beta1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/apps/v1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/apps/v1beta1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/apps/v1beta2", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/authentication/v1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/authentication/v1beta1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/authorization/v1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/authorization/v1beta1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/autoscaling/v1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/autoscaling/v2beta1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/batch/v1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/batch/v1beta1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/batch/v2alpha1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/certificates/v1beta1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/core/v1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/events/v1beta1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/extensions/v1beta1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/imagepolicy/v1alpha1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/networking/v1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/policy/v1beta1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/rbac/v1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/rbac/v1alpha1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/rbac/v1beta1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/scheduling/v1alpha1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/settings/v1alpha1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/storage/v1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/storage/v1alpha1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/api/storage/v1beta1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/equality", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/errors", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/meta", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/resource", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/testing", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/testing/fuzzer", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/testing/roundtrip", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apimachinery", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apimachinery/announced", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apimachinery/registered", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/fuzzer", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/internalversion", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1beta1", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/conversion", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/fields", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/labels", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/schema", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/selection", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/types", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/cache", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/clock", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/diff", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/errors", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/framer", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/httpstream", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/httpstream/spdy", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/intstr", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/json", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/net", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/remotecommand", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/runtime", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/sets", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/validation", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/validation/field", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/wait", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/yaml", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/version", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/watch", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/netutil", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect", + "Rev": "a76984c1dabfff00e1886a859bef647bcfb9a17a" + }, + { + "ImportPath": "k8s.io/kube-openapi/pkg/util/proto", + "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3" + } + ] } diff --git a/dynamic/client.go b/dynamic/client.go index 370c20664..b93a0ff19 100644 --- a/dynamic/client.go +++ b/dynamic/client.go @@ -145,6 +145,19 @@ type ResourceClient struct { parameterCodec runtime.ParameterCodec } +func (rc *ResourceClient) parseResourceSubresourceName() (string, []string) { + var resourceName string + var subresourceName []string + if strings.Contains(rc.resource.Name, "/") { + resourceName = strings.Split(rc.resource.Name, "/")[0] + subresourceName = strings.Split(rc.resource.Name, "/")[1:] + } else { + resourceName = rc.resource.Name + } + + return resourceName, subresourceName +} + // List returns a list of objects for this resource. func (rc *ResourceClient) List(opts metav1.ListOptions) (runtime.Object, error) { parameterEncoder := rc.parameterCodec @@ -166,9 +179,11 @@ func (rc *ResourceClient) Get(name string, opts metav1.GetOptions) (*unstructure parameterEncoder = defaultParameterEncoder } result := new(unstructured.Unstructured) + resourceName, subresourceName := rc.parseResourceSubresourceName() err := rc.cl.Get(). NamespaceIfScoped(rc.ns, rc.resource.Namespaced). - Resource(rc.resource.Name). + Resource(resourceName). + SubResource(subresourceName...). VersionedParams(&opts, parameterEncoder). Name(name). Do(). @@ -205,11 +220,26 @@ func (rc *ResourceClient) DeleteCollection(deleteOptions *metav1.DeleteOptions, // Create creates the provided resource. func (rc *ResourceClient) Create(obj *unstructured.Unstructured) (*unstructured.Unstructured, error) { result := new(unstructured.Unstructured) - err := rc.cl.Post(). + resourceName, subresourceName := rc.parseResourceSubresourceName() + req := rc.cl.Post(). NamespaceIfScoped(rc.ns, rc.resource.Namespaced). - Resource(rc.resource.Name). - Body(obj). - Do(). + Resource(resourceName). + Body(obj) + if len(subresourceName) > 0 { + // If the provided resource is a subresource, the POST request should contain + // object name. Examples of subresources that support Create operation: + // core/v1/pods/{name}/binding + // core/v1/pods/{name}/eviction + // extensions/v1beta1/deployments/{name}/rollback + // apps/v1beta1/deployments/{name}/rollback + // NOTE: Currently our system assumes every subresource object has the same + // name as the parent resource object. E.g. a pods/binding object having + // metadada.name "foo" means pod "foo" is being bound. We may need to + // change this if we break the assumption in the future. + req = req.SubResource(subresourceName...). + Name(obj.GetName()) + } + err := req.Do(). Into(result) return result, err } @@ -220,9 +250,15 @@ func (rc *ResourceClient) Update(obj *unstructured.Unstructured) (*unstructured. if len(obj.GetName()) == 0 { return result, errors.New("object missing name") } + resourceName, subresourceName := rc.parseResourceSubresourceName() err := rc.cl.Put(). NamespaceIfScoped(rc.ns, rc.resource.Namespaced). - Resource(rc.resource.Name). + Resource(resourceName). + SubResource(subresourceName...). + // NOTE: Currently our system assumes every subresource object has the same + // name as the parent resource object. E.g. a pods/binding object having + // metadada.name "foo" means pod "foo" is being bound. We may need to + // change this if we break the assumption in the future. Name(obj.GetName()). Body(obj). Do(). @@ -246,9 +282,11 @@ func (rc *ResourceClient) Watch(opts metav1.ListOptions) (watch.Interface, error func (rc *ResourceClient) Patch(name string, pt types.PatchType, data []byte) (*unstructured.Unstructured, error) { result := new(unstructured.Unstructured) + resourceName, subresourceName := rc.parseResourceSubresourceName() err := rc.cl.Patch(pt). NamespaceIfScoped(rc.ns, rc.resource.Namespaced). - Resource(rc.resource.Name). + Resource(resourceName). + SubResource(subresourceName...). Name(name). Body(data). Do(). diff --git a/dynamic/client_test.go b/dynamic/client_test.go index 1459429c0..ffa550ed5 100644 --- a/dynamic/client_test.go +++ b/dynamic/client_test.go @@ -150,6 +150,7 @@ func TestList(t *testing.T) { func TestGet(t *testing.T) { tcs := []struct { + resource string namespace string name string path string @@ -157,22 +158,39 @@ func TestGet(t *testing.T) { want *unstructured.Unstructured }{ { - name: "normal_get", - path: "/api/gtest/vtest/rtest/normal_get", - resp: getJSON("vTest", "rTest", "normal_get"), - want: getObject("vTest", "rTest", "normal_get"), + resource: "rtest", + name: "normal_get", + path: "/api/gtest/vtest/rtest/normal_get", + resp: getJSON("vTest", "rTest", "normal_get"), + want: getObject("vTest", "rTest", "normal_get"), }, { + resource: "rtest", namespace: "nstest", name: "namespaced_get", path: "/api/gtest/vtest/namespaces/nstest/rtest/namespaced_get", resp: getJSON("vTest", "rTest", "namespaced_get"), want: getObject("vTest", "rTest", "namespaced_get"), }, + { + resource: "rtest/srtest", + name: "normal_subresource_get", + path: "/api/gtest/vtest/rtest/normal_subresource_get/srtest", + resp: getJSON("vTest", "srTest", "normal_subresource_get"), + want: getObject("vTest", "srTest", "normal_subresource_get"), + }, + { + resource: "rtest/srtest", + namespace: "nstest", + name: "namespaced_subresource_get", + path: "/api/gtest/vtest/namespaces/nstest/rtest/namespaced_subresource_get/srtest", + resp: getJSON("vTest", "srTest", "namespaced_subresource_get"), + want: getObject("vTest", "srTest", "namespaced_subresource_get"), + }, } for _, tc := range tcs { gv := &schema.GroupVersion{Group: "gtest", Version: "vtest"} - resource := &metav1.APIResource{Name: "rtest", Namespaced: len(tc.namespace) != 0} + resource := &metav1.APIResource{Name: tc.resource, Namespaced: len(tc.namespace) != 0} cl, srv, err := getClientServer(gv, func(w http.ResponseWriter, r *http.Request) { if r.Method != "GET" { t.Errorf("Get(%q) got HTTP method %s. wanted GET", tc.name, r.Method) @@ -303,26 +321,42 @@ func TestDeleteCollection(t *testing.T) { func TestCreate(t *testing.T) { tcs := []struct { + resource string name string namespace string obj *unstructured.Unstructured path string }{ { - name: "normal_create", - path: "/api/gtest/vtest/rtest", - obj: getObject("vTest", "rTest", "normal_create"), + resource: "rtest", + name: "normal_create", + path: "/api/gtest/vtest/rtest", + obj: getObject("vTest", "rTest", "normal_create"), }, { + resource: "rtest", name: "namespaced_create", namespace: "nstest", path: "/api/gtest/vtest/namespaces/nstest/rtest", obj: getObject("vTest", "rTest", "namespaced_create"), }, + { + resource: "rtest/srtest", + name: "normal_subresource_create", + path: "/api/gtest/vtest/rtest/normal_subresource_create/srtest", + obj: getObject("vTest", "srTest", "normal_subresource_create"), + }, + { + resource: "rtest/srtest", + name: "namespaced_subresource_create", + namespace: "nstest", + path: "/api/gtest/vtest/namespaces/nstest/rtest/namespaced_subresource_create/srtest", + obj: getObject("vTest", "srTest", "namespaced_subresource_create"), + }, } for _, tc := range tcs { gv := &schema.GroupVersion{Group: "gtest", Version: "vtest"} - resource := &metav1.APIResource{Name: "rtest", Namespaced: len(tc.namespace) != 0} + resource := &metav1.APIResource{Name: tc.resource, Namespaced: len(tc.namespace) != 0} cl, srv, err := getClientServer(gv, func(w http.ResponseWriter, r *http.Request) { if r.Method != "POST" { t.Errorf("Create(%q) got HTTP method %s. wanted POST", tc.name, r.Method) @@ -362,26 +396,42 @@ func TestCreate(t *testing.T) { func TestUpdate(t *testing.T) { tcs := []struct { + resource string name string namespace string obj *unstructured.Unstructured path string }{ { - name: "normal_update", - path: "/api/gtest/vtest/rtest/normal_update", - obj: getObject("vTest", "rTest", "normal_update"), + resource: "rtest", + name: "normal_update", + path: "/api/gtest/vtest/rtest/normal_update", + obj: getObject("vTest", "rTest", "normal_update"), }, { + resource: "rtest", name: "namespaced_update", namespace: "nstest", path: "/api/gtest/vtest/namespaces/nstest/rtest/namespaced_update", obj: getObject("vTest", "rTest", "namespaced_update"), }, + { + resource: "rtest/srtest", + name: "normal_subresource_update", + path: "/api/gtest/vtest/rtest/normal_update/srtest", + obj: getObject("vTest", "srTest", "normal_update"), + }, + { + resource: "rtest/srtest", + name: "namespaced_subresource_update", + namespace: "nstest", + path: "/api/gtest/vtest/namespaces/nstest/rtest/namespaced_update/srtest", + obj: getObject("vTest", "srTest", "namespaced_update"), + }, } for _, tc := range tcs { gv := &schema.GroupVersion{Group: "gtest", Version: "vtest"} - resource := &metav1.APIResource{Name: "rtest", Namespaced: len(tc.namespace) != 0} + resource := &metav1.APIResource{Name: tc.resource, Namespaced: len(tc.namespace) != 0} cl, srv, err := getClientServer(gv, func(w http.ResponseWriter, r *http.Request) { if r.Method != "PUT" { t.Errorf("Update(%q) got HTTP method %s. wanted PUT", tc.name, r.Method) @@ -492,6 +542,7 @@ func TestWatch(t *testing.T) { func TestPatch(t *testing.T) { tcs := []struct { + resource string name string namespace string patch []byte @@ -499,22 +550,39 @@ func TestPatch(t *testing.T) { path string }{ { - name: "normal_patch", - path: "/api/gtest/vtest/rtest/normal_patch", - patch: getJSON("vTest", "rTest", "normal_patch"), - want: getObject("vTest", "rTest", "normal_patch"), + resource: "rtest", + name: "normal_patch", + path: "/api/gtest/vtest/rtest/normal_patch", + patch: getJSON("vTest", "rTest", "normal_patch"), + want: getObject("vTest", "rTest", "normal_patch"), }, { + resource: "rtest", name: "namespaced_patch", namespace: "nstest", path: "/api/gtest/vtest/namespaces/nstest/rtest/namespaced_patch", patch: getJSON("vTest", "rTest", "namespaced_patch"), want: getObject("vTest", "rTest", "namespaced_patch"), }, + { + resource: "rtest/srtest", + name: "normal_subresource_patch", + path: "/api/gtest/vtest/rtest/normal_subresource_patch/srtest", + patch: getJSON("vTest", "srTest", "normal_subresource_patch"), + want: getObject("vTest", "srTest", "normal_subresource_patch"), + }, + { + resource: "rtest/srtest", + name: "namespaced_subresource_patch", + namespace: "nstest", + path: "/api/gtest/vtest/namespaces/nstest/rtest/namespaced_subresource_patch/srtest", + patch: getJSON("vTest", "srTest", "namespaced_subresource_patch"), + want: getObject("vTest", "srTest", "namespaced_subresource_patch"), + }, } for _, tc := range tcs { gv := &schema.GroupVersion{Group: "gtest", Version: "vtest"} - resource := &metav1.APIResource{Name: "rtest", Namespaced: len(tc.namespace) != 0} + resource := &metav1.APIResource{Name: tc.resource, Namespaced: len(tc.namespace) != 0} cl, srv, err := getClientServer(gv, func(w http.ResponseWriter, r *http.Request) { if r.Method != "PATCH" { t.Errorf("Patch(%q) got HTTP method %s. wanted PATCH", tc.name, r.Method)