mirror of https://github.com/k3s-io/k3s
Merge pull request #29187 from soltysh/multiversion_kubectl
Automatic merge from submit-queue Create client from API version passed in config or use default When creating a client read the `GroupVersion` value passed in the `restclient.Config`. If the passed `GroupVersion` does not match current group or is not enabled fallback to default `GroupVersion` for that group. This PR should allow accessing `ScheduledJob` properly in `batch/v2alpha1`. @smarterclayton @deads2k @caesarxuchao @lavalamp ptalpull/6/head
commit
0fbd60fa30
|
@ -17,8 +17,6 @@ limitations under the License.
|
||||||
package unversioned
|
package unversioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/kubernetes/pkg/api"
|
|
||||||
"k8s.io/kubernetes/pkg/apimachinery/registered"
|
|
||||||
"k8s.io/kubernetes/pkg/apis/apps"
|
"k8s.io/kubernetes/pkg/apis/apps"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
)
|
)
|
||||||
|
@ -38,7 +36,7 @@ func (c *AppsClient) PetSets(namespace string) PetSetInterface {
|
||||||
|
|
||||||
func NewApps(c *restclient.Config) (*AppsClient, error) {
|
func NewApps(c *restclient.Config) (*AppsClient, error) {
|
||||||
config := *c
|
config := *c
|
||||||
if err := setAppsDefaults(&config); err != nil {
|
if err := setGroupDefaults(apps.GroupName, &config); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
client, err := restclient.RESTClientFor(&config)
|
client, err := restclient.RESTClientFor(&config)
|
||||||
|
@ -55,22 +53,3 @@ func NewAppsOrDie(c *restclient.Config) *AppsClient {
|
||||||
}
|
}
|
||||||
return client
|
return client
|
||||||
}
|
}
|
||||||
|
|
||||||
func setAppsDefaults(config *restclient.Config) error {
|
|
||||||
g, err := registered.Group(apps.GroupName)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
config.APIPath = defaultAPIPath
|
|
||||||
if config.UserAgent == "" {
|
|
||||||
config.UserAgent = restclient.DefaultKubernetesUserAgent()
|
|
||||||
}
|
|
||||||
// TODO: Unconditionally set the config.Version, until we fix the config.
|
|
||||||
//if config.Version == "" {
|
|
||||||
copyGroupVersion := g.GroupVersion
|
|
||||||
config.GroupVersion = ©GroupVersion
|
|
||||||
//}
|
|
||||||
|
|
||||||
config.NegotiatedSerializer = api.Codecs
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,8 +17,6 @@ limitations under the License.
|
||||||
package unversioned
|
package unversioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/kubernetes/pkg/api"
|
|
||||||
"k8s.io/kubernetes/pkg/apimachinery/registered"
|
|
||||||
"k8s.io/kubernetes/pkg/apis/autoscaling"
|
"k8s.io/kubernetes/pkg/apis/autoscaling"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
)
|
)
|
||||||
|
@ -38,7 +36,7 @@ func (c *AutoscalingClient) HorizontalPodAutoscalers(namespace string) Horizonta
|
||||||
|
|
||||||
func NewAutoscaling(c *restclient.Config) (*AutoscalingClient, error) {
|
func NewAutoscaling(c *restclient.Config) (*AutoscalingClient, error) {
|
||||||
config := *c
|
config := *c
|
||||||
if err := setAutoscalingDefaults(&config); err != nil {
|
if err := setGroupDefaults(autoscaling.GroupName, &config); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
client, err := restclient.RESTClientFor(&config)
|
client, err := restclient.RESTClientFor(&config)
|
||||||
|
@ -55,23 +53,3 @@ func NewAutoscalingOrDie(c *restclient.Config) *AutoscalingClient {
|
||||||
}
|
}
|
||||||
return client
|
return client
|
||||||
}
|
}
|
||||||
|
|
||||||
func setAutoscalingDefaults(config *restclient.Config) error {
|
|
||||||
// if autoscaling group is not registered, return an error
|
|
||||||
g, err := registered.Group(autoscaling.GroupName)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
config.APIPath = defaultAPIPath
|
|
||||||
if config.UserAgent == "" {
|
|
||||||
config.UserAgent = restclient.DefaultKubernetesUserAgent()
|
|
||||||
}
|
|
||||||
// TODO: Unconditionally set the config.Version, until we fix the config.
|
|
||||||
//if config.Version == "" {
|
|
||||||
copyGroupVersion := g.GroupVersion
|
|
||||||
config.GroupVersion = ©GroupVersion
|
|
||||||
//}
|
|
||||||
|
|
||||||
config.NegotiatedSerializer = api.Codecs
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,11 +17,7 @@ limitations under the License.
|
||||||
package unversioned
|
package unversioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/kubernetes/pkg/api"
|
|
||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
|
||||||
"k8s.io/kubernetes/pkg/apimachinery/registered"
|
|
||||||
"k8s.io/kubernetes/pkg/apis/batch"
|
"k8s.io/kubernetes/pkg/apis/batch"
|
||||||
"k8s.io/kubernetes/pkg/apis/batch/v2alpha1"
|
|
||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -45,19 +41,7 @@ func (c *BatchClient) ScheduledJobs(namespace string) ScheduledJobInterface {
|
||||||
|
|
||||||
func NewBatch(c *restclient.Config) (*BatchClient, error) {
|
func NewBatch(c *restclient.Config) (*BatchClient, error) {
|
||||||
config := *c
|
config := *c
|
||||||
if err := setBatchDefaults(&config, nil); err != nil {
|
if err := setGroupDefaults(batch.GroupName, &config); err != nil {
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
client, err := restclient.RESTClientFor(&config)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return &BatchClient{client}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewBatchV2Alpha1(c *restclient.Config) (*BatchClient, error) {
|
|
||||||
config := *c
|
|
||||||
if err := setBatchDefaults(&config, &v2alpha1.SchemeGroupVersion); err != nil {
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
client, err := restclient.RESTClientFor(&config)
|
client, err := restclient.RESTClientFor(&config)
|
||||||
|
@ -68,40 +52,9 @@ func NewBatchV2Alpha1(c *restclient.Config) (*BatchClient, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewBatchOrDie(c *restclient.Config) *BatchClient {
|
func NewBatchOrDie(c *restclient.Config) *BatchClient {
|
||||||
var (
|
client, err := NewBatch(c)
|
||||||
client *BatchClient
|
|
||||||
err error
|
|
||||||
)
|
|
||||||
if c.ContentConfig.GroupVersion != nil && *c.ContentConfig.GroupVersion == v2alpha1.SchemeGroupVersion {
|
|
||||||
client, err = NewBatchV2Alpha1(c)
|
|
||||||
} else {
|
|
||||||
client, err = NewBatch(c)
|
|
||||||
}
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
return client
|
return client
|
||||||
}
|
}
|
||||||
|
|
||||||
func setBatchDefaults(config *restclient.Config, gv *unversioned.GroupVersion) error {
|
|
||||||
// if batch group is not registered, return an error
|
|
||||||
g, err := registered.Group(batch.GroupName)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
config.APIPath = defaultAPIPath
|
|
||||||
if config.UserAgent == "" {
|
|
||||||
config.UserAgent = restclient.DefaultKubernetesUserAgent()
|
|
||||||
}
|
|
||||||
// TODO: Unconditionally set the config.Version, until we fix the config.
|
|
||||||
//if config.Version == "" {
|
|
||||||
copyGroupVersion := g.GroupVersion
|
|
||||||
if gv != nil {
|
|
||||||
copyGroupVersion = *gv
|
|
||||||
}
|
|
||||||
config.GroupVersion = ©GroupVersion
|
|
||||||
//}
|
|
||||||
|
|
||||||
config.NegotiatedSerializer = api.Codecs
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,8 +17,6 @@ limitations under the License.
|
||||||
package unversioned
|
package unversioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/kubernetes/pkg/api"
|
|
||||||
"k8s.io/kubernetes/pkg/apimachinery/registered"
|
|
||||||
"k8s.io/kubernetes/pkg/apis/certificates"
|
"k8s.io/kubernetes/pkg/apis/certificates"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
)
|
)
|
||||||
|
@ -60,22 +58,7 @@ func NewCertificatesOrDie(c *restclient.Config) *CertificatesClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
func setCertificatesDefaults(config *restclient.Config) error {
|
func setCertificatesDefaults(config *restclient.Config) error {
|
||||||
// if certificates group is not registered, return an error
|
setGroupDefaults(certificates.GroupName, config)
|
||||||
g, err := registered.Group(certificates.GroupName)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
config.APIPath = defaultAPIPath
|
|
||||||
if config.UserAgent == "" {
|
|
||||||
config.UserAgent = restclient.DefaultKubernetesUserAgent()
|
|
||||||
}
|
|
||||||
// TODO: Unconditionally set the config.Version, until we fix the config.
|
|
||||||
//if config.Version == "" {
|
|
||||||
copyGroupVersion := g.GroupVersion
|
|
||||||
config.GroupVersion = ©GroupVersion
|
|
||||||
//}
|
|
||||||
|
|
||||||
config.NegotiatedSerializer = api.Codecs
|
|
||||||
if config.QPS == 0 {
|
if config.QPS == 0 {
|
||||||
config.QPS = 5
|
config.QPS = 5
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,8 +17,6 @@ limitations under the License.
|
||||||
package unversioned
|
package unversioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/kubernetes/pkg/api"
|
|
||||||
"k8s.io/kubernetes/pkg/apimachinery/registered"
|
|
||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
)
|
)
|
||||||
|
@ -93,7 +91,7 @@ func (c *ExtensionsClient) StorageClasses() StorageClassInterface {
|
||||||
// incompatible ways at any time.
|
// incompatible ways at any time.
|
||||||
func NewExtensions(c *restclient.Config) (*ExtensionsClient, error) {
|
func NewExtensions(c *restclient.Config) (*ExtensionsClient, error) {
|
||||||
config := *c
|
config := *c
|
||||||
if err := setExtensionsDefaults(&config); err != nil {
|
if err := setGroupDefaults(extensions.GroupName, &config); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
client, err := restclient.RESTClientFor(&config)
|
client, err := restclient.RESTClientFor(&config)
|
||||||
|
@ -114,23 +112,3 @@ func NewExtensionsOrDie(c *restclient.Config) *ExtensionsClient {
|
||||||
}
|
}
|
||||||
return client
|
return client
|
||||||
}
|
}
|
||||||
|
|
||||||
func setExtensionsDefaults(config *restclient.Config) error {
|
|
||||||
// if experimental group is not registered, return an error
|
|
||||||
g, err := registered.Group(extensions.GroupName)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
config.APIPath = defaultAPIPath
|
|
||||||
if config.UserAgent == "" {
|
|
||||||
config.UserAgent = restclient.DefaultKubernetesUserAgent()
|
|
||||||
}
|
|
||||||
// TODO: Unconditionally set the config.Version, until we fix the config.
|
|
||||||
//if config.Version == "" {
|
|
||||||
copyGroupVersion := g.GroupVersion
|
|
||||||
config.GroupVersion = ©GroupVersion
|
|
||||||
//}
|
|
||||||
|
|
||||||
config.NegotiatedSerializer = api.Codecs
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
|
@ -258,16 +258,35 @@ func SetKubernetesDefaults(config *restclient.Config) error {
|
||||||
if config.APIPath == "" {
|
if config.APIPath == "" {
|
||||||
config.APIPath = legacyAPIPath
|
config.APIPath = legacyAPIPath
|
||||||
}
|
}
|
||||||
g, err := registered.Group(api.GroupName)
|
if config.GroupVersion == nil || config.GroupVersion.Group != api.GroupName {
|
||||||
if err != nil {
|
g, err := registered.Group(api.GroupName)
|
||||||
return err
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
copyGroupVersion := g.GroupVersion
|
||||||
|
config.GroupVersion = ©GroupVersion
|
||||||
}
|
}
|
||||||
// TODO: Unconditionally set the config.Version, until we fix the config.
|
|
||||||
copyGroupVersion := g.GroupVersion
|
|
||||||
config.GroupVersion = ©GroupVersion
|
|
||||||
if config.NegotiatedSerializer == nil {
|
if config.NegotiatedSerializer == nil {
|
||||||
config.NegotiatedSerializer = api.Codecs
|
config.NegotiatedSerializer = api.Codecs
|
||||||
}
|
}
|
||||||
|
|
||||||
return restclient.SetKubernetesDefaults(config)
|
return restclient.SetKubernetesDefaults(config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setGroupDefaults(groupName string, config *restclient.Config) error {
|
||||||
|
config.APIPath = defaultAPIPath
|
||||||
|
if config.UserAgent == "" {
|
||||||
|
config.UserAgent = restclient.DefaultKubernetesUserAgent()
|
||||||
|
}
|
||||||
|
if config.GroupVersion == nil || config.GroupVersion.Group != groupName {
|
||||||
|
g, err := registered.Group(groupName)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
copyGroupVersion := g.GroupVersion
|
||||||
|
config.GroupVersion = ©GroupVersion
|
||||||
|
}
|
||||||
|
if config.NegotiatedSerializer == nil {
|
||||||
|
config.NegotiatedSerializer = api.Codecs
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
@ -17,8 +17,6 @@ limitations under the License.
|
||||||
package unversioned
|
package unversioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/kubernetes/pkg/api"
|
|
||||||
"k8s.io/kubernetes/pkg/apimachinery/registered"
|
|
||||||
"k8s.io/kubernetes/pkg/apis/policy"
|
"k8s.io/kubernetes/pkg/apis/policy"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
)
|
)
|
||||||
|
@ -38,7 +36,7 @@ func (c *PolicyClient) PodDisruptionBudgets(namespace string) PodDisruptionBudge
|
||||||
|
|
||||||
func NewPolicy(c *restclient.Config) (*PolicyClient, error) {
|
func NewPolicy(c *restclient.Config) (*PolicyClient, error) {
|
||||||
config := *c
|
config := *c
|
||||||
if err := setPolicyDefaults(&config); err != nil {
|
if err := setGroupDefaults(policy.GroupName, &config); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
client, err := restclient.RESTClientFor(&config)
|
client, err := restclient.RESTClientFor(&config)
|
||||||
|
@ -55,22 +53,3 @@ func NewPolicyOrDie(c *restclient.Config) *PolicyClient {
|
||||||
}
|
}
|
||||||
return client
|
return client
|
||||||
}
|
}
|
||||||
|
|
||||||
func setPolicyDefaults(config *restclient.Config) error {
|
|
||||||
g, err := registered.Group(policy.GroupName)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
config.APIPath = defaultAPIPath
|
|
||||||
if config.UserAgent == "" {
|
|
||||||
config.UserAgent = restclient.DefaultKubernetesUserAgent()
|
|
||||||
}
|
|
||||||
// TODO: Unconditionally set the config.Version, until we fix the config.
|
|
||||||
//if config.Version == "" {
|
|
||||||
copyGroupVersion := g.GroupVersion
|
|
||||||
config.GroupVersion = ©GroupVersion
|
|
||||||
//}
|
|
||||||
|
|
||||||
config.NegotiatedSerializer = api.Codecs
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,8 +17,6 @@ limitations under the License.
|
||||||
package unversioned
|
package unversioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/kubernetes/pkg/api"
|
|
||||||
"k8s.io/kubernetes/pkg/apimachinery/registered"
|
|
||||||
"k8s.io/kubernetes/pkg/apis/rbac"
|
"k8s.io/kubernetes/pkg/apis/rbac"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
)
|
)
|
||||||
|
@ -54,7 +52,7 @@ func (c *RbacClient) ClusterRoles() ClusterRoleInterface {
|
||||||
// NewRbac creates a new RbacClient for the given config.
|
// NewRbac creates a new RbacClient for the given config.
|
||||||
func NewRbac(c *restclient.Config) (*RbacClient, error) {
|
func NewRbac(c *restclient.Config) (*RbacClient, error) {
|
||||||
config := *c
|
config := *c
|
||||||
if err := setRbacDefaults(&config); err != nil {
|
if err := setGroupDefaults(rbac.GroupName, &config); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
client, err := restclient.RESTClientFor(&config)
|
client, err := restclient.RESTClientFor(&config)
|
||||||
|
@ -73,24 +71,3 @@ func NewRbacOrDie(c *restclient.Config) *RbacClient {
|
||||||
}
|
}
|
||||||
return client
|
return client
|
||||||
}
|
}
|
||||||
|
|
||||||
func setRbacDefaults(config *restclient.Config) error {
|
|
||||||
// if rbac group is not registered, return an error
|
|
||||||
g, err := registered.Group(rbac.GroupName)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
config.APIPath = defaultAPIPath
|
|
||||||
if config.UserAgent == "" {
|
|
||||||
config.UserAgent = restclient.DefaultKubernetesUserAgent()
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Unconditionally set the config.Version, until we fix the config.
|
|
||||||
//if config.Version == "" {
|
|
||||||
copyGroupVersion := g.GroupVersion
|
|
||||||
config.GroupVersion = ©GroupVersion
|
|
||||||
//}
|
|
||||||
|
|
||||||
config.NegotiatedSerializer = api.Codecs
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
|
@ -76,12 +76,12 @@ func (c *ClientCache) ClientConfigForVersion(version *unversioned.GroupVersion)
|
||||||
preferredGV = &versionCopy
|
preferredGV = &versionCopy
|
||||||
}
|
}
|
||||||
|
|
||||||
|
client.SetKubernetesDefaults(&config)
|
||||||
negotiatedVersion, err := client.NegotiateVersion(c.defaultClient, &config, preferredGV, registered.EnabledVersions())
|
negotiatedVersion, err := client.NegotiateVersion(c.defaultClient, &config, preferredGV, registered.EnabledVersions())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
config.GroupVersion = negotiatedVersion
|
config.GroupVersion = negotiatedVersion
|
||||||
client.SetKubernetesDefaults(&config)
|
|
||||||
|
|
||||||
if version != nil {
|
if version != nil {
|
||||||
c.configs[*version] = &config
|
c.configs[*version] = &config
|
||||||
|
|
|
@ -349,49 +349,29 @@ func NewFactory(optionalClientConfig clientcmd.ClientConfig) *Factory {
|
||||||
return clients.ClientConfigForVersion(nil)
|
return clients.ClientConfigForVersion(nil)
|
||||||
},
|
},
|
||||||
ClientForMapping: func(mapping *meta.RESTMapping) (resource.RESTClient, error) {
|
ClientForMapping: func(mapping *meta.RESTMapping) (resource.RESTClient, error) {
|
||||||
gvk := mapping.GroupVersionKind
|
cfg, err := clientConfig.ClientConfig()
|
||||||
mappingVersion := mapping.GroupVersionKind.GroupVersion()
|
|
||||||
c, err := clients.ClientForVersion(&mappingVersion)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
switch gvk.Group {
|
if err := client.SetKubernetesDefaults(cfg); err != nil {
|
||||||
case api.GroupName:
|
return nil, err
|
||||||
return c.RESTClient, nil
|
|
||||||
case autoscaling.GroupName:
|
|
||||||
return c.AutoscalingClient.RESTClient, nil
|
|
||||||
case batch.GroupName:
|
|
||||||
return c.BatchClient.RESTClient, nil
|
|
||||||
case policy.GroupName:
|
|
||||||
return c.PolicyClient.RESTClient, nil
|
|
||||||
case apps.GroupName:
|
|
||||||
return c.AppsClient.RESTClient, nil
|
|
||||||
case extensions.GroupName:
|
|
||||||
return c.ExtensionsClient.RESTClient, nil
|
|
||||||
case api.SchemeGroupVersion.Group:
|
|
||||||
return c.RESTClient, nil
|
|
||||||
case extensions.SchemeGroupVersion.Group:
|
|
||||||
return c.ExtensionsClient.RESTClient, nil
|
|
||||||
case federation.GroupName:
|
|
||||||
return clients.FederationClientForVersion(&mappingVersion)
|
|
||||||
case rbac.GroupName:
|
|
||||||
return c.RbacClient.RESTClient, nil
|
|
||||||
case certificates.GroupName:
|
|
||||||
return c.CertificatesClient.RESTClient, nil
|
|
||||||
default:
|
|
||||||
if !registered.IsThirdPartyAPIGroupVersion(gvk.GroupVersion()) {
|
|
||||||
return nil, fmt.Errorf("unknown api group/version: %s", gvk.String())
|
|
||||||
}
|
|
||||||
cfg, err := clientConfig.ClientConfig()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
gv := gvk.GroupVersion()
|
|
||||||
cfg.GroupVersion = &gv
|
|
||||||
cfg.APIPath = "/apis"
|
|
||||||
cfg.NegotiatedSerializer = thirdpartyresourcedata.NewNegotiatedSerializer(api.Codecs, gvk.Kind, gv, gv)
|
|
||||||
return restclient.RESTClientFor(cfg)
|
|
||||||
}
|
}
|
||||||
|
gvk := mapping.GroupVersionKind
|
||||||
|
switch gvk.Group {
|
||||||
|
case federation.GroupName:
|
||||||
|
mappingVersion := mapping.GroupVersionKind.GroupVersion()
|
||||||
|
return clients.FederationClientForVersion(&mappingVersion)
|
||||||
|
case api.GroupName:
|
||||||
|
cfg.APIPath = "/api"
|
||||||
|
default:
|
||||||
|
cfg.APIPath = "/apis"
|
||||||
|
}
|
||||||
|
gv := gvk.GroupVersion()
|
||||||
|
cfg.GroupVersion = &gv
|
||||||
|
if registered.IsThirdPartyAPIGroupVersion(gvk.GroupVersion()) {
|
||||||
|
cfg.NegotiatedSerializer = thirdpartyresourcedata.NewNegotiatedSerializer(api.Codecs, gvk.Kind, gv, gv)
|
||||||
|
}
|
||||||
|
return restclient.RESTClientFor(cfg)
|
||||||
},
|
},
|
||||||
Describer: func(mapping *meta.RESTMapping) (kubectl.Describer, error) {
|
Describer: func(mapping *meta.RESTMapping) (kubectl.Describer, error) {
|
||||||
mappingVersion := mapping.GroupVersionKind.GroupVersion()
|
mappingVersion := mapping.GroupVersionKind.GroupVersion()
|
||||||
|
|
Loading…
Reference in New Issue