diff --git a/.travis.yml b/.travis.yml index a3aafaefd4..02c152726a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ services: - docker go: -- 1.10.1 +- 1.10.3 jobs: include: diff --git a/Gopkg.lock b/Gopkg.lock index b745be52b7..d66faa77f2 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -3,19 +3,19 @@ [[projects]] branch = "master" - digest = "1:c0bec5f9b98d0bc872ff5e834fac186b807b656683bd29cb82fb207a1513fabb" + digest = "1:fca298802a2ab834d6eb0e284788ae037ebc324c0f325ff92c5eea592d189cc5" name = "github.com/beorn7/perks" packages = ["quantile"] pruneopts = "" revision = "3a771d992973f24aa725d07868b467d1ddfceafb" [[projects]] - digest = "1:56c130d885a4aacae1dd9c7b71cfe39912c7ebc1ff7d2b46083c8812996dc43b" + digest = "1:9266e031a5977527595a04e4e5d44edef92f384e04f29eebbd77be3c09c78918" name = "github.com/davecgh/go-spew" packages = ["spew"] pruneopts = "" - revision = "346938d642f2ec3594ed81d874461961cd0faa76" - version = "v1.1.0" + revision = "8991bc29aa16c548c550c7ff78260e27b9ab7c73" + version = "v1.1.1" [[projects]] digest = "1:b13707423743d41665fd23f0c36b2f37bb49c30e94adb813319c44188a51ba22" @@ -26,15 +26,15 @@ version = "v1.0.0" [[projects]] - digest = "1:0a3f6a0c68ab8f3d455f8892295503b179e571b7fefe47cc6c556405d1f83411" + digest = "1:673df1d02ca0c6f51458fe94bbb6fae0b05e54084a31db2288f1c4321255c2da" name = "github.com/gogo/protobuf" packages = [ "proto", "sortkeys", ] pruneopts = "" - revision = "1adfc126b41513cc696b209667c8656ea7aac67c" - version = "v1.0.0" + revision = "636bf0302bc95575d69441b25a2603156ffdddf1" + version = "v1.1.1" [[projects]] branch = "master" @@ -45,7 +45,7 @@ revision = "23def4e6c14b4da8ac2ed8007337bc5eb5007998" [[projects]] - digest = "1:f958a1c137db276e52f0b50efee41a1a389dcdded59a69711f3e872757dab34b" + digest = "1:815d45503dceeca8ffecce0081d7edeae5e75b126107ef763d1c617154d72359" name = "github.com/golang/protobuf" packages = [ "proto", @@ -55,8 +55,16 @@ "ptypes/timestamp", ] pruneopts = "" - revision = "b4deda0973fb4c70b50d226b1af49f3da59f5265" - version = "v1.1.0" + revision = "aa810b61a9c79d51363740d207bb46cf8e620ed5" + version = "v1.2.0" + +[[projects]] + branch = "master" + digest = "1:1e5b1e14524ed08301977b7b8e10c719ed853cbf3f24ecb66fae783a46f207a6" + name = "github.com/google/btree" + packages = ["."] + pruneopts = "" + revision = "4030bb1f1f0c35b30ca7009e9ebd06849dd45306" [[projects]] branch = "master" @@ -67,7 +75,7 @@ revision = "24818f796faf91cd76ec7bddd72458fbced7a6c1" [[projects]] - digest = "1:16b2837c8b3cf045fa2cdc82af0cf78b19582701394484ae76b2c3bc3c99ad73" + digest = "1:1962b5d00f5285d08504697049627d45ad876912894528d31cdc1c05cdc853f6" name = "github.com/googleapis/gnostic" packages = [ "OpenAPIv2", @@ -80,30 +88,33 @@ [[projects]] branch = "master" - digest = "1:9c776d7d9c54b7ed89f119e449983c3f24c0023e75001d6092442412ebca6b94" - name = "github.com/hashicorp/golang-lru" + digest = "1:8c4d156acec272201ffc4d1bdb9302de1c48314e0451eb38c70150cf11bdb33a" + name = "github.com/gregjones/httpcache" packages = [ ".", - "simplelru", + "diskcache", ] pruneopts = "" - revision = "0fb14efe8c47ae851c0034ed7a448854d3d34cf3" + revision = "9cad4c3443a7200dd6400aef47183728de563a38" [[projects]] - branch = "master" - digest = "1:f81c8d7354cc0c6340f2f7a48724ee6c2b3db3e918ecd441c985b4d2d97dd3e7" - name = "github.com/howeyc/gopass" - packages = ["."] + digest = "1:3313a63031ae281e5f6fd7b0bbca733dfa04d2429df86519e3b4d4c016ccb836" + name = "github.com/hashicorp/golang-lru" + packages = [ + ".", + "simplelru", + ] pruneopts = "" - revision = "bf9dde6d0d2c004a008c27aaee91170c786f6db8" + revision = "20f1fb78b0740ba8c3cb143a61e86ba5c8669768" + version = "v0.5.0" [[projects]] - digest = "1:302c6eb8e669c997bec516a138b8fc496018faa1ece4c13e445a2749fbe079bb" + digest = "1:7ab38c15bd21e056e3115c8b526d201eaf74e0308da9370997c6b3c187115d36" name = "github.com/imdario/mergo" packages = ["."] pruneopts = "" - revision = "9316a62528ac99aaecb4e47eadd6dc8aa6533d58" - version = "v0.3.5" + revision = "9f23e2d6bd2a77f959b2bf6acdbefd708a83a4a4" + version = "v0.3.6" [[projects]] digest = "1:870d441fe217b8e689d7949fef6e43efbc787e50f200cb1e70dbca9204a1d6be" @@ -114,15 +125,15 @@ version = "v1.0" [[projects]] - digest = "1:53ac4e911e12dde0ab68655e2006449d207a5a681f084974da2b06e5dbeaca72" + digest = "1:78c8b7738bc04b822e6779c31f21b08c8662a0b78f42a1636f91fe6af3742038" name = "github.com/json-iterator/go" packages = ["."] pruneopts = "" - revision = "ab8a2e0c74be9d3be70b3184d9acc634935ded82" - version = "1.1.4" + revision = "1624edc4454b8682399def8740d46db5e4362ba4" + version = "v1.1.5" [[projects]] - digest = "1:63722a4b1e1717be7b98fc686e0b30d5e7f734b9e93d7dee86293b6deab7ea28" + digest = "1:49a8b01a6cd6558d504b65608214ca40a78000e1b343ed0da5c6a9ccd83d6d30" name = "github.com/matttproud/golang_protobuf_extensions" packages = ["pbutil"] pruneopts = "" @@ -146,7 +157,23 @@ version = "1.0.1" [[projects]] - digest = "1:4142d94383572e74b42352273652c62afec5b23f325222ed09198f46009022d1" + branch = "master" + digest = "1:b7be9a944fe102bf466420fa8a064534dd12547a0482f5b684d228425b559b56" + name = "github.com/petar/GoLLRB" + packages = ["llrb"] + pruneopts = "" + revision = "53be0d36a84c2a886ca057d34b6aa4468df9ccb4" + +[[projects]] + digest = "1:6db21ad64a13fe79220e47fcc895e13b8da923676a3a024f98210fca57a10d9a" + name = "github.com/peterbourgon/diskv" + packages = ["."] + pruneopts = "" + revision = "5f041e8faa004a95c88a202771f4cc3e991971e6" + version = "v2.0.1" + +[[projects]] + digest = "1:981835985f655d1d380cc6aa7d9fa9ad7abfaf40c75da200fd40d864cd05a7c3" name = "github.com/prometheus/client_golang" packages = [ "prometheus", @@ -158,15 +185,15 @@ [[projects]] branch = "master" - digest = "1:60aca47f4eeeb972f1b9da7e7db51dee15ff6c59f7b401c1588b8e6771ba15ef" + digest = "1:562d53e436b244a9bb5c1ff43bcaf4882e007575d34ec37717b15751c65cc63a" name = "github.com/prometheus/client_model" packages = ["go"] pruneopts = "" - revision = "99fa1f4be8e564e8a6b613da7fa6f46c9edafc6c" + revision = "5c3871d89910bfb32f5fcab2aa4b9ec68e65a99f" [[projects]] branch = "master" - digest = "1:bfbc121ef802d245ef67421cff206615357d9202337a3d492b8f668906b485a8" + digest = "1:8a871dca636f82a927daffe10e9866fee6aa97a215905d56e97ecc73c07d5d44" name = "github.com/prometheus/common" packages = [ "expfmt", @@ -174,11 +201,11 @@ "model", ] pruneopts = "" - revision = "7600349dcfe1abd18d72d3a1770870d9800a7801" + revision = "c7de2306084e37d54b8be01f3541a8464345e9a5" [[projects]] branch = "master" - digest = "1:b694a6bdecdace488f507cff872b30f6f490fdaf988abd74d87ea56406b23b6e" + digest = "1:7f298639cea3d8fe88aeefe6a7af1d642bca295cd125e172d320f57064c956c2" name = "github.com/prometheus/procfs" packages = [ ".", @@ -187,10 +214,10 @@ "xfs", ] pruneopts = "" - revision = "ae68e2d4c00fed4943b5f6698d504a5fe083da8a" + revision = "05ee40e3a273f7245e8777337fc7b46e533a9a92" [[projects]] - digest = "1:3962f553b77bf6c03fc07cd687a22dd3b00fe11aa14d31194f5505f5bb65cdc8" + digest = "1:1ebe873a8dc99e3316c30fea2e211038c4d1fcb605eee17e00a5e91b8817925e" name = "github.com/sergi/go-diff" packages = ["diffmatchpatch"] pruneopts = "" @@ -198,15 +225,15 @@ version = "v1.0.0" [[projects]] - digest = "1:8cf46b6c18a91068d446e26b67512cf16f1540b45d90b28b9533706a127f0ca6" + digest = "1:2c38661f5fb038bfb95197e0e5bc7a8f050d1f992c5ddaa01945e58fe2ef00de" name = "github.com/sirupsen/logrus" packages = ["."] pruneopts = "" - revision = "c155da19408a8799da419ed3eeb0cb5db0ad5dbc" - version = "v1.0.5" + revision = "3e01752db0189b9157070a0e1668a620f9a85da2" + version = "v1.0.6" [[projects]] - digest = "1:a1403cc8a94b8d7956ee5e9694badef0e7b051af289caad1cf668331e3ffa4f6" + digest = "1:39c598f67d5d68846c05832bb351e897091edcbee4689c57d3697f68f25f928d" name = "github.com/spf13/cobra" packages = ["."] pruneopts = "" @@ -214,24 +241,24 @@ version = "v0.0.3" [[projects]] - digest = "1:8e243c568f36b09031ec18dff5f7d2769dcf5ca4d624ea511c8e3197dc3d352d" + digest = "1:0a52bcb568386d98f4894575d53ce3e456f56471de6897bb8b9de13c33d9340e" name = "github.com/spf13/pflag" packages = ["."] pruneopts = "" - revision = "583c0c0531f06d5278b7d917446061adc344b5cd" - version = "v1.0.1" + revision = "9a97c102cda95a86cec2345a6f09f55a939babf5" + version = "v1.0.2" [[projects]] branch = "master" - digest = "1:6ef14be530be39b6b9d75d54ce1d546ae9231e652d9e3eef198cbb19ce8ed3e7" + digest = "1:c7440071aa1c80fd099481375212142d70f9f9073caa8cfbc18e49367b75d5b7" name = "golang.org/x/crypto" packages = ["ssh/terminal"] pruneopts = "" - revision = "a49355c7e3f8fe157a85be2f77e6e269a0f89602" + revision = "0e37d006457bf46f9e6692014ba72ef82c33022c" [[projects]] branch = "master" - digest = "1:4c719bca528f83d5d42fd271bec965a9b10b8592c59ddd8acb19f381ec657016" + digest = "1:f942e3d08471d28b73bcc90311fd712e8896782107b98f29cc63ec5511c78a07" name = "golang.org/x/net" packages = [ "context", @@ -241,21 +268,21 @@ "idna", ] pruneopts = "" - revision = "6a8eb5e2b1816b30aa88d7e3ecf9eb7c4559d9e6" + revision = "26e67e76b6c3f6ce91f7c52def5af501b4e0f3a2" [[projects]] branch = "master" - digest = "1:19f072f12708aaafef9064b49432953e3f813a98fcb356b30831cf2b0f5272b3" + digest = "1:d18776165877265b52d30d5369e0a21f49ddd2a9e357651b1ae6603afdaf7e3c" name = "golang.org/x/sys" packages = [ "unix", "windows", ] pruneopts = "" - revision = "1b2967e3c290b7c545b3db0deeda16e9be4f98a2" + revision = "d0be0721c37eeb5299f245a996a483160fc36940" [[projects]] - digest = "1:5acd3512b047305d49e8763eef7ba423901e85d5dd2fd1e71778a0ea8de10bd4" + digest = "1:af9bfca4298ef7502c52b1459df274eed401a4f5498b900e9a92d28d3d87ac5a" name = "golang.org/x/text" packages = [ "collate", @@ -302,7 +329,7 @@ version = "v2.2.1" [[projects]] - digest = "1:4d235221f43d5243b4929e098993fba365cd9a6448c613f4f8e59ea869ac094f" + digest = "1:8f89631b1625a24683016256e9096157d02af5976093afb0b6772c24b62b82cb" name = "k8s.io/api" packages = [ "admissionregistration/v1alpha1", @@ -329,17 +356,18 @@ "rbac/v1alpha1", "rbac/v1beta1", "scheduling/v1alpha1", + "scheduling/v1beta1", "settings/v1alpha1", "storage/v1", "storage/v1alpha1", "storage/v1beta1", ] pruneopts = "" - revision = "73d903622b7391f3312dcbac6483fed484e185f8" - version = "kubernetes-1.10.1" + revision = "2d6f90ab1293a1fb871cf149423ebb72aa7423aa" + version = "kubernetes-1.11.2" [[projects]] - digest = "1:34dff545860050793802bc3245899316d11ea036d37d3b396deff3785a66196a" + digest = "1:2a832592c70277cd7663c392599900935f42b3fe2c9003e2bed1347c0035ce41" name = "k8s.io/apiextensions-apiserver" packages = [ "pkg/apis/apiextensions", @@ -349,11 +377,11 @@ "pkg/client/clientset/clientset/typed/apiextensions/v1beta1", ] pruneopts = "" - revision = "4347b330d0ff094db860f2f75fa725b4f4b53618" - version = "kubernetes-1.10.1" + revision = "408db4a50408e2149acbd657bceb2480c13cb0a4" + version = "kubernetes-1.11.2" [[projects]] - digest = "1:9b07c796baf391a2dfa8c64bd5ddc28cbeb00723389f2f3da2e3d09b961f2e31" + digest = "1:a855f74be59f83ed0950a9a2b70d8c8af01fb5782d060c7dec67ae39033f30dc" name = "k8s.io/apimachinery" packages = [ "pkg/api/errors", @@ -396,11 +424,11 @@ "third_party/forked/golang/reflect", ] pruneopts = "" - revision = "302974c03f7e50f16561ba237db776ab93594ef6" - version = "kubernetes-1.10.1" + revision = "103fd098999dc9c0c88536f5c9ad2e5da39373ae" + version = "kubernetes-1.11.2" [[projects]] - digest = "1:28504a7311d90506af4c62697951d66173c1b95b5b87368c42b06c143ce13e4a" + digest = "1:422d473b5bf92124ad74045e94691e67498f7f80bb2903980190a69d0458bb3d" name = "k8s.io/client-go" packages = [ "discovery", @@ -432,16 +460,19 @@ "kubernetes/typed/rbac/v1alpha1", "kubernetes/typed/rbac/v1beta1", "kubernetes/typed/scheduling/v1alpha1", + "kubernetes/typed/scheduling/v1beta1", "kubernetes/typed/settings/v1alpha1", "kubernetes/typed/storage/v1", "kubernetes/typed/storage/v1alpha1", "kubernetes/typed/storage/v1beta1", "pkg/apis/clientauthentication", "pkg/apis/clientauthentication/v1alpha1", + "pkg/apis/clientauthentication/v1beta1", "pkg/version", "plugin/pkg/client/auth/exec", "rest", "rest/watch", + "restmapper", "tools/auth", "tools/cache", "tools/clientcmd", @@ -454,6 +485,7 @@ "transport", "util/buffer", "util/cert", + "util/connrotation", "util/flowcontrol", "util/homedir", "util/integer", @@ -461,18 +493,19 @@ "util/workqueue", ] pruneopts = "" - revision = "989be4278f353e42f26c416c53757d16fcff77db" - version = "kubernetes-1.10.1" + revision = "1f13a808da65775f22cbf47862c4e5898d8f4ca1" + version = "kubernetes-1.11.2" [[projects]] - digest = "1:33b8dd2f2532df51be174418a1971fbaca14c1730b8d8476f33e2232787e057d" + digest = "1:9491096cc75abedadaf21bb38ad555e2b25c9646c98a3267635886f0f525bcd4" name = "sigs.k8s.io/controller-runtime" packages = [ "pkg/client", "pkg/client/apiutil", ] pruneopts = "" - revision = "60bb251ad86f9b313653618aad0c2c53f41a6625" + revision = "2ef903b2a5ed4cf8adde14a27994a291388a1789" + version = "v0.1.2" [solve-meta] analyzer-name = "dep" @@ -485,10 +518,7 @@ "github.com/sirupsen/logrus", "github.com/spf13/cobra", "gopkg.in/yaml.v2", - "k8s.io/api/apps/v1", "k8s.io/api/core/v1", - "k8s.io/api/rbac/v1beta1", - "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1", "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset", "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme", "k8s.io/apimachinery/pkg/api/errors", @@ -508,6 +538,7 @@ "k8s.io/client-go/kubernetes", "k8s.io/client-go/kubernetes/scheme", "k8s.io/client-go/rest", + "k8s.io/client-go/restmapper", "k8s.io/client-go/tools/cache", "k8s.io/client-go/tools/clientcmd", "k8s.io/client-go/util/workqueue", diff --git a/Gopkg.toml b/Gopkg.toml index a71e178248..ff71c3f7c5 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -4,23 +4,23 @@ [[constraint]] name = "github.com/spf13/cobra" - version = "0.0.2" + version = "0.0.3" [[override]] name = "k8s.io/api" - version = "kubernetes-1.10.1" + version = "kubernetes-1.11.2" [[override]] name = "k8s.io/apimachinery" - version = "kubernetes-1.10.1" + version = "kubernetes-1.11.2" [[override]] name = "k8s.io/apiextensions-apiserver" - version = "kubernetes-1.10.1" + version = "kubernetes-1.11.2" [[override]] name = "k8s.io/client-go" - version = "kubernetes-1.10.1" + version = "kubernetes-1.11.2" [[constraint]] name = "github.com/sergi/go-diff" @@ -28,4 +28,4 @@ [[constraint]] name = "sigs.k8s.io/controller-runtime" - revision = "60bb251ad86f9b313653618aad0c2c53f41a6625" + version = "v0.1.2" diff --git a/pkg/generator/templates.go b/pkg/generator/templates.go index e803bc8a2e..66324628bf 100644 --- a/pkg/generator/templates.go +++ b/pkg/generator/templates.go @@ -255,13 +255,13 @@ required = [ [[override]] name = "k8s.io/code-generator" - # revision for tag "kubernetes-1.10.1" - revision = "7ead8f38b01cf8653249f5af80ce7b2c8aba12e2" + # revision for tag "kubernetes-1.11.2" + revision = "6702109cc68eb6fe6350b83e14407c8d7309fd1a" [[override]] name = "k8s.io/api" - # revision for tag "kubernetes-1.10.1" - revision = "73d903622b7391f3312dcbac6483fed484e185f8" + # revision for tag "kubernetes-1.11.2" + revision = "2d6f90ab1293a1fb871cf149423ebb72aa7423aa" [[override]] name = "k8s.io/apiextensions-apiserver" @@ -270,13 +270,13 @@ required = [ [[override]] name = "k8s.io/apimachinery" - # revision for tag "kubernetes-1.10.1" - revision = "302974c03f7e50f16561ba237db776ab93594ef6" + # revision for tag "kubernetes-1.11.2" + revision = "103fd098999dc9c0c88536f5c9ad2e5da39373ae" [[override]] name = "k8s.io/client-go" - # revision for tag "kubernetes-1.10.1" - revision = "989be4278f353e42f26c416c53757d16fcff77db" + # revision for tag "kubernetes-1.11.2" + revision = "1f13a808da65775f22cbf47862c4e5898d8f4ca1" [[override]] name = "sigs.k8s.io/controller-runtime" diff --git a/pkg/k8sclient/client.go b/pkg/k8sclient/client.go index fc78f67952..53bd0fe197 100644 --- a/pkg/k8sclient/client.go +++ b/pkg/k8sclient/client.go @@ -23,22 +23,20 @@ import ( "github.com/operator-framework/operator-sdk/pkg/util/k8sutil" - "k8s.io/apimachinery/pkg/api/meta" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + //"k8s.io/apimachinery/pkg/api/meta" + //metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime/schema" - "k8s.io/client-go/discovery" "k8s.io/client-go/discovery/cached" "k8s.io/client-go/dynamic" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" + "k8s.io/client-go/restmapper" "k8s.io/client-go/tools/clientcmd" ) type resourceClientFactory struct { - restMapper *discovery.DeferredDiscoveryRESTMapper - clientPool dynamic.ClientPool - kubeClient kubernetes.Interface - kubeConfig *rest.Config + dynamicClient dynamic.Interface + restMapper *restmapper.DeferredDiscoveryRESTMapper } var ( @@ -51,16 +49,17 @@ var ( func newSingletonFactory() { kubeClient, kubeConfig := mustNewKubeClientAndConfig() cachedDiscoveryClient := cached.NewMemCacheClient(kubeClient.Discovery()) - restMapper := discovery.NewDeferredDiscoveryRESTMapper(cachedDiscoveryClient, meta.InterfacesForUnstructured) + restMapper := restmapper.NewDeferredDiscoveryRESTMapper(cachedDiscoveryClient) restMapper.Reset() - kubeConfig.ContentConfig = dynamic.ContentConfig() - clientPool := dynamic.NewClientPool(kubeConfig, restMapper, dynamic.LegacyAPIPathResolverFunc) + + dynamicClient, err := dynamic.NewForConfig(kubeConfig) + if err != nil { + panic(err) + } singletonFactory = &resourceClientFactory{ - kubeClient: kubeClient, - kubeConfig: kubeConfig, - restMapper: restMapper, - clientPool: clientPool, + dynamicClient: dynamicClient, + restMapper: restMapper, } singletonFactory.runBackgroundCacheReset(1 * time.Minute) } @@ -71,18 +70,6 @@ func GetResourceClient(apiVersion, kind, namespace string) (dynamic.ResourceInte return singletonFactory.GetResourceClient(apiVersion, kind, namespace) } -// GetKubeClient returns the kubernetes client used to create the dynamic client -func GetKubeClient() kubernetes.Interface { - once.Do(newSingletonFactory) - return singletonFactory.kubeClient -} - -// GetKubeConfig returns the kubernetes rest configuration -func GetKubeConfig() *rest.Config { - once.Do(newSingletonFactory) - return singletonFactory.kubeConfig -} - // GetResourceClient returns the dynamic client and pluralName for the resource specified by the apiVersion and kind func (c *resourceClientFactory) GetResourceClient(apiVersion, kind, namespace string) (dynamic.ResourceInterface, string, error) { gv, err := schema.ParseGroupVersion(apiVersion) @@ -95,31 +82,28 @@ func (c *resourceClientFactory) GetResourceClient(apiVersion, kind, namespace st Kind: kind, } - client, err := c.clientPool.ClientForGroupVersionKind(gvk) - if err != nil { - return nil, "", fmt.Errorf("failed to get client for GroupVersionKind(%s): %v", gvk.String(), err) - } - resource, err := apiResource(gvk, c.restMapper) + gvr, err := gvkToGVR(gvk, c.restMapper) if err != nil { return nil, "", fmt.Errorf("failed to get resource type: %v", err) } - pluralName := resource.Name - resourceClient := client.Resource(resource, namespace) + pluralName := gvr.Resource + + resourceClient := c.dynamicClient.Resource(*gvr).Namespace(namespace) return resourceClient, pluralName, nil } -// apiResource consults the REST mapper to translate an tuple to a metav1.APIResource struct. -func apiResource(gvk schema.GroupVersionKind, restMapper *discovery.DeferredDiscoveryRESTMapper) (*metav1.APIResource, error) { +// apiResource consults the REST mapper to translate an tuple to a GroupVersionResource +func gvkToGVR(gvk schema.GroupVersionKind, restMapper *restmapper.DeferredDiscoveryRESTMapper) (*schema.GroupVersionResource, error) { mapping, err := restMapper.RESTMapping(gvk.GroupKind(), gvk.Version) if err != nil { return nil, fmt.Errorf("failed to get the resource REST mapping for GroupVersionKind(%s): %v", gvk.String(), err) } - resource := &metav1.APIResource{ - Name: mapping.Resource, - Namespaced: mapping.Scope == meta.RESTScopeNamespace, - Kind: gvk.Kind, + gvr := &schema.GroupVersionResource{ + Group: gvk.Group, + Version: gvk.Version, + Resource: mapping.Resource.String(), } - return resource, nil + return gvr, nil } // mustNewKubeClientAndConfig returns the in-cluster config and kubernetes client