mirror of https://github.com/k3s-io/k3s
udpate some examples to use external types
parent
b8aa7baa7d
commit
a53a72e238
|
@ -591,7 +591,7 @@ type pruner struct {
|
|||
}
|
||||
|
||||
func (p *pruner) prune(f cmdutil.Factory, namespace string, mapping *meta.RESTMapping, includeUninitialized bool) error {
|
||||
objList, err := p.dynamicClient.Resource(mapping.GroupVersionKind.GroupVersion().WithResource(mapping.Resource)).
|
||||
objList, err := p.dynamicClient.Resource(mapping.Resource).
|
||||
Namespace(namespace).
|
||||
List(metav1.ListOptions{
|
||||
LabelSelector: p.labelSelector,
|
||||
|
@ -647,7 +647,7 @@ func (p *pruner) delete(namespace, name string, mapping *meta.RESTMapping, scale
|
|||
|
||||
func runDelete(namespace, name string, mapping *meta.RESTMapping, c dynamic.DynamicInterface, cascade bool, gracePeriod int, clientsetFunc func() (internalclientset.Interface, error), scaleClient scaleclient.ScalesGetter) error {
|
||||
if !cascade {
|
||||
return c.Resource(mapping.GroupVersionKind.GroupVersion().WithResource(mapping.Resource)).Namespace(namespace).Delete(name, nil)
|
||||
return c.Resource(mapping.Resource).Namespace(namespace).Delete(name, nil)
|
||||
}
|
||||
cs, err := clientsetFunc()
|
||||
if err != nil {
|
||||
|
@ -658,7 +658,7 @@ func runDelete(namespace, name string, mapping *meta.RESTMapping, c dynamic.Dyna
|
|||
if _, ok := err.(*kubectl.NoSuchReaperError); !ok {
|
||||
return err
|
||||
}
|
||||
return c.Resource(mapping.GroupVersionKind.GroupVersion().WithResource(mapping.Resource)).Namespace(namespace).Delete(name, nil)
|
||||
return c.Resource(mapping.Resource).Namespace(namespace).Delete(name, nil)
|
||||
}
|
||||
var options *metav1.DeleteOptions
|
||||
if gracePeriod >= 0 {
|
||||
|
|
|
@ -421,7 +421,7 @@ func RunCreateSubcommand(f cmdutil.Factory, options *CreateSubcommandOptions) er
|
|||
if mapping.Scope.Name() == meta.RESTScopeNameRoot {
|
||||
namespace = ""
|
||||
}
|
||||
actualObject, err := dynamicClient.Resource(mapping.GroupVersionKind.GroupVersion().WithResource(mapping.Resource)).Namespace(namespace).Create(asUnstructured)
|
||||
actualObject, err := dynamicClient.Resource(mapping.Resource).Namespace(namespace).Create(asUnstructured)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -346,7 +346,7 @@ func (o *ExposeServiceOptions) RunExpose(cmd *cobra.Command, args []string) erro
|
|||
return err
|
||||
}
|
||||
// Serialize the object with the annotation applied.
|
||||
actualObject, err := o.DynamicClient.Resource(objMapping.GroupVersionKind.GroupVersion().WithResource(objMapping.Resource)).Namespace(o.Namespace).Create(asUnstructured)
|
||||
actualObject, err := o.DynamicClient.Resource(objMapping.Resource).Namespace(o.Namespace).Create(asUnstructured)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -27,12 +27,14 @@ go_library(
|
|||
"//pkg/kubectl/cmd/util/env:go_default_library",
|
||||
"//pkg/kubectl/genericclioptions:go_default_library",
|
||||
"//pkg/kubectl/resource:go_default_library",
|
||||
"//pkg/kubectl/scheme:go_default_library",
|
||||
"//pkg/kubectl/util/i18n:go_default_library",
|
||||
"//pkg/printers:go_default_library",
|
||||
"//vendor/github.com/golang/glog:go_default_library",
|
||||
"//vendor/github.com/spf13/cobra: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/api/meta:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||
|
@ -81,6 +83,7 @@ go_test(
|
|||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
|
||||
"//vendor/k8s.io/client-go/rest:go_default_library",
|
||||
"//vendor/k8s.io/client-go/rest/fake:go_default_library",
|
||||
],
|
||||
|
|
|
@ -30,12 +30,12 @@ import (
|
|||
"k8s.io/apimachinery/pkg/types"
|
||||
utilerrors "k8s.io/apimachinery/pkg/util/errors"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
|
||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||
envutil "k8s.io/kubernetes/pkg/kubectl/cmd/util/env"
|
||||
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
|
||||
"k8s.io/kubernetes/pkg/kubectl/resource"
|
||||
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
||||
"k8s.io/kubernetes/pkg/printers"
|
||||
)
|
||||
|
||||
|
@ -241,7 +241,7 @@ func (o *EnvOptions) RunEnv() error {
|
|||
|
||||
if len(o.From) != 0 {
|
||||
b := o.builder().
|
||||
WithScheme(legacyscheme.Scheme).
|
||||
WithScheme(scheme.Scheme, scheme.Registry.RegisteredGroupVersions()...).
|
||||
LocalParam(o.Local).
|
||||
ContinueOnError().
|
||||
NamespaceParam(o.namespace).DefaultNamespace().
|
||||
|
@ -261,11 +261,7 @@ func (o *EnvOptions) RunEnv() error {
|
|||
}
|
||||
|
||||
for _, info := range infos {
|
||||
versionedObject, err := legacyscheme.Scheme.ConvertToVersion(info.Object, info.Mapping.GroupVersionKind.GroupVersion())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
switch from := versionedObject.(type) {
|
||||
switch from := info.Object.(type) {
|
||||
case *v1.Secret:
|
||||
for key := range from.Data {
|
||||
envVar := v1.EnvVar{
|
||||
|
@ -309,7 +305,7 @@ func (o *EnvOptions) RunEnv() error {
|
|||
}
|
||||
|
||||
b := o.builder().
|
||||
WithScheme(legacyscheme.Scheme).
|
||||
WithScheme(scheme.Scheme, scheme.Registry.RegisteredGroupVersions()...).
|
||||
LocalParam(o.Local).
|
||||
ContinueOnError().
|
||||
NamespaceParam(o.namespace).DefaultNamespace().
|
||||
|
@ -326,8 +322,7 @@ func (o *EnvOptions) RunEnv() error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
patches := CalculatePatches(infos, cmdutil.InternalVersionJSONEncoder(), func(info *resource.Info) ([]byte, error) {
|
||||
info.Object = cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping)
|
||||
patches := CalculatePatches(infos, scheme.DefaultJSONEncoder(), func(info *resource.Info) ([]byte, error) {
|
||||
_, err := o.updatePodSpecForObject(info.Object, func(spec *v1.PodSpec) error {
|
||||
resolutionErrorsEncountered := false
|
||||
containers, _ := selectContainers(spec.Containers, o.ContainerSelector)
|
||||
|
@ -394,7 +389,7 @@ func (o *EnvOptions) RunEnv() error {
|
|||
})
|
||||
|
||||
if err == nil {
|
||||
return runtime.Encode(cmdutil.InternalVersionJSONEncoder(), info.Object)
|
||||
return runtime.Encode(scheme.DefaultJSONEncoder(), info.Object)
|
||||
}
|
||||
return nil, err
|
||||
})
|
||||
|
@ -418,7 +413,7 @@ func (o *EnvOptions) RunEnv() error {
|
|||
}
|
||||
|
||||
if o.Local || o.dryRun {
|
||||
if err := o.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(patch.Info.Object, patch.Info.Mapping), o.Out); err != nil {
|
||||
if err := o.PrintObj(patch.Info.Object, o.Out); err != nil {
|
||||
return err
|
||||
}
|
||||
continue
|
||||
|
@ -437,7 +432,7 @@ func (o *EnvOptions) RunEnv() error {
|
|||
return fmt.Errorf("at least one environment variable must be provided")
|
||||
}
|
||||
|
||||
if err := o.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping), o.Out); err != nil {
|
||||
if err := o.PrintObj(info.Object, o.Out); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,9 +36,9 @@ import (
|
|||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||
restclient "k8s.io/client-go/rest"
|
||||
"k8s.io/client-go/rest/fake"
|
||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||
"k8s.io/kubernetes/pkg/api/testapi"
|
||||
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
||||
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
|
||||
|
@ -50,7 +50,7 @@ func TestSetEnvLocal(t *testing.T) {
|
|||
tf := cmdtesting.NewTestFactory()
|
||||
defer tf.Cleanup()
|
||||
|
||||
ns := legacyscheme.Codecs
|
||||
ns := serializer.DirectCodecFactory{CodecFactory: scheme.Codecs}
|
||||
tf.Client = &fake.RESTClient{
|
||||
GroupVersion: schema.GroupVersion{Version: ""},
|
||||
NegotiatedSerializer: ns,
|
||||
|
@ -93,7 +93,7 @@ func TestSetMultiResourcesEnvLocal(t *testing.T) {
|
|||
tf := cmdtesting.NewTestFactory()
|
||||
defer tf.Cleanup()
|
||||
|
||||
ns := legacyscheme.Codecs
|
||||
ns := serializer.DirectCodecFactory{CodecFactory: scheme.Codecs}
|
||||
tf.Client = &fake.RESTClient{
|
||||
GroupVersion: schema.GroupVersion{Version: ""},
|
||||
NegotiatedSerializer: ns,
|
||||
|
@ -464,7 +464,7 @@ func TestSetEnvRemote(t *testing.T) {
|
|||
defer tf.Cleanup()
|
||||
|
||||
codec := scheme.Codecs.CodecForVersions(scheme.Codecs.LegacyCodec(groupVersion), scheme.Codecs.UniversalDecoder(groupVersion), groupVersion, groupVersion)
|
||||
ns := legacyscheme.Codecs
|
||||
ns := serializer.DirectCodecFactory{CodecFactory: scheme.Codecs}
|
||||
tf.Namespace = "test"
|
||||
tf.Client = &fake.RESTClient{
|
||||
GroupVersion: groupVersion,
|
||||
|
|
|
@ -19,11 +19,9 @@ package set
|
|||
import (
|
||||
"fmt"
|
||||
|
||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||
"k8s.io/kubernetes/pkg/printers"
|
||||
|
||||
"github.com/golang/glog"
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
|
@ -32,7 +30,9 @@ import (
|
|||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
|
||||
"k8s.io/kubernetes/pkg/kubectl/resource"
|
||||
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
||||
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
||||
"k8s.io/kubernetes/pkg/printers"
|
||||
)
|
||||
|
||||
// ImageOptions is the start of the data required to perform the operation. As new fields are added, add them here instead of
|
||||
|
@ -161,7 +161,7 @@ func (o *SetImageOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [
|
|||
|
||||
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
||||
builder := f.NewBuilder().
|
||||
WithScheme(legacyscheme.Scheme).
|
||||
WithScheme(scheme.Scheme, scheme.Registry.RegisteredGroupVersions()...).
|
||||
LocalParam(o.Local).
|
||||
ContinueOnError().
|
||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||
|
@ -209,9 +209,8 @@ func (o *SetImageOptions) Validate() error {
|
|||
func (o *SetImageOptions) Run() error {
|
||||
allErrs := []error{}
|
||||
|
||||
patches := CalculatePatches(o.Infos, cmdutil.InternalVersionJSONEncoder(), func(info *resource.Info) ([]byte, error) {
|
||||
patches := CalculatePatches(o.Infos, scheme.DefaultJSONEncoder(), func(info *resource.Info) ([]byte, error) {
|
||||
transformed := false
|
||||
info.Object = cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping)
|
||||
_, err := o.UpdatePodSpecForObject(info.Object, func(spec *v1.PodSpec) error {
|
||||
for name, image := range o.ContainerImages {
|
||||
var (
|
||||
|
@ -259,7 +258,7 @@ func (o *SetImageOptions) Run() error {
|
|||
glog.V(4).Infof("error recording current command: %v", err)
|
||||
}
|
||||
|
||||
return runtime.Encode(cmdutil.InternalVersionJSONEncoder(), info.Object)
|
||||
return runtime.Encode(scheme.DefaultJSONEncoder(), info.Object)
|
||||
})
|
||||
|
||||
for _, patch := range patches {
|
||||
|
@ -275,7 +274,7 @@ func (o *SetImageOptions) Run() error {
|
|||
}
|
||||
|
||||
if o.Local || o.DryRun {
|
||||
if err := o.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(patch.Info.Object, patch.Info.Mapping), o.Out); err != nil {
|
||||
if err := o.PrintObj(patch.Info.Object, o.Out); err != nil {
|
||||
return err
|
||||
}
|
||||
continue
|
||||
|
@ -289,7 +288,7 @@ func (o *SetImageOptions) Run() error {
|
|||
}
|
||||
info.Refresh(obj, true)
|
||||
|
||||
if err := o.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping), o.Out); err != nil {
|
||||
if err := o.PrintObj(info.Object, o.Out); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,9 +24,8 @@ import (
|
|||
"strings"
|
||||
"testing"
|
||||
|
||||
"k8s.io/kubernetes/pkg/printers"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
appsv1beta1 "k8s.io/api/apps/v1beta1"
|
||||
appsv1beta2 "k8s.io/api/apps/v1beta2"
|
||||
|
@ -36,21 +35,22 @@ import (
|
|||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||
restclient "k8s.io/client-go/rest"
|
||||
"k8s.io/client-go/rest/fake"
|
||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||
"k8s.io/kubernetes/pkg/api/testapi"
|
||||
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
||||
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
|
||||
"k8s.io/kubernetes/pkg/kubectl/resource"
|
||||
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
||||
"k8s.io/kubernetes/pkg/printers"
|
||||
)
|
||||
|
||||
func TestImageLocal(t *testing.T) {
|
||||
tf := cmdtesting.NewTestFactory()
|
||||
defer tf.Cleanup()
|
||||
|
||||
ns := legacyscheme.Codecs
|
||||
ns := serializer.DirectCodecFactory{CodecFactory: scheme.Codecs}
|
||||
|
||||
tf.Client = &fake.RESTClient{
|
||||
GroupVersion: schema.GroupVersion{Version: ""},
|
||||
|
@ -173,7 +173,7 @@ func TestSetMultiResourcesImageLocal(t *testing.T) {
|
|||
tf := cmdtesting.NewTestFactory()
|
||||
defer tf.Cleanup()
|
||||
|
||||
ns := legacyscheme.Codecs
|
||||
ns := serializer.DirectCodecFactory{CodecFactory: scheme.Codecs}
|
||||
|
||||
tf.Client = &fake.RESTClient{
|
||||
GroupVersion: schema.GroupVersion{Version: ""},
|
||||
|
@ -554,7 +554,7 @@ func TestSetImageRemote(t *testing.T) {
|
|||
defer tf.Cleanup()
|
||||
|
||||
codec := scheme.Codecs.CodecForVersions(scheme.Codecs.LegacyCodec(groupVersion), scheme.Codecs.UniversalDecoder(groupVersion), groupVersion, groupVersion)
|
||||
ns := legacyscheme.Codecs
|
||||
ns := serializer.DirectCodecFactory{CodecFactory: scheme.Codecs}
|
||||
tf.Namespace = "test"
|
||||
tf.Client = &fake.RESTClient{
|
||||
GroupVersion: groupVersion,
|
||||
|
|
|
@ -257,6 +257,7 @@ func (f *ring0Factory) UpdatePodSpecForObject(obj runtime.Object, fn func(*v1.Po
|
|||
t.Spec.Template = &v1.PodTemplateSpec{}
|
||||
}
|
||||
return true, fn(&t.Spec.Template.Spec)
|
||||
|
||||
// Deployment
|
||||
case *extensionsv1beta1.Deployment:
|
||||
return true, fn(&t.Spec.Template.Spec)
|
||||
|
@ -266,6 +267,7 @@ func (f *ring0Factory) UpdatePodSpecForObject(obj runtime.Object, fn func(*v1.Po
|
|||
return true, fn(&t.Spec.Template.Spec)
|
||||
case *appsv1.Deployment:
|
||||
return true, fn(&t.Spec.Template.Spec)
|
||||
|
||||
// DaemonSet
|
||||
case *extensionsv1beta1.DaemonSet:
|
||||
return true, fn(&t.Spec.Template.Spec)
|
||||
|
@ -273,6 +275,7 @@ func (f *ring0Factory) UpdatePodSpecForObject(obj runtime.Object, fn func(*v1.Po
|
|||
return true, fn(&t.Spec.Template.Spec)
|
||||
case *appsv1.DaemonSet:
|
||||
return true, fn(&t.Spec.Template.Spec)
|
||||
|
||||
// ReplicaSet
|
||||
case *extensionsv1beta1.ReplicaSet:
|
||||
return true, fn(&t.Spec.Template.Spec)
|
||||
|
@ -280,6 +283,7 @@ func (f *ring0Factory) UpdatePodSpecForObject(obj runtime.Object, fn func(*v1.Po
|
|||
return true, fn(&t.Spec.Template.Spec)
|
||||
case *appsv1.ReplicaSet:
|
||||
return true, fn(&t.Spec.Template.Spec)
|
||||
|
||||
// StatefulSet
|
||||
case *appsv1beta1.StatefulSet:
|
||||
return true, fn(&t.Spec.Template.Spec)
|
||||
|
@ -287,14 +291,17 @@ func (f *ring0Factory) UpdatePodSpecForObject(obj runtime.Object, fn func(*v1.Po
|
|||
return true, fn(&t.Spec.Template.Spec)
|
||||
case *appsv1.StatefulSet:
|
||||
return true, fn(&t.Spec.Template.Spec)
|
||||
|
||||
// Job
|
||||
case *batchv1.Job:
|
||||
return true, fn(&t.Spec.Template.Spec)
|
||||
|
||||
// CronJob
|
||||
case *batchv1beta1.CronJob:
|
||||
return true, fn(&t.Spec.JobTemplate.Spec.Template.Spec)
|
||||
case *batchv2alpha1.CronJob:
|
||||
return true, fn(&t.Spec.JobTemplate.Spec.Template.Spec)
|
||||
|
||||
default:
|
||||
return false, fmt.Errorf("the object is not a pod or does not have a pod template")
|
||||
}
|
||||
|
|
|
@ -27,7 +27,13 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
appsv1beta1 "k8s.io/api/apps/v1beta1"
|
||||
appsv1beta2 "k8s.io/api/apps/v1beta2"
|
||||
batchv1 "k8s.io/api/batch/v1"
|
||||
"k8s.io/api/core/v1"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
|
||||
"k8s.io/apimachinery/pkg/api/meta"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
|
@ -38,6 +44,7 @@ import (
|
|||
"k8s.io/kubernetes/pkg/apis/apps"
|
||||
"k8s.io/kubernetes/pkg/apis/batch"
|
||||
api "k8s.io/kubernetes/pkg/apis/core"
|
||||
apiv1 "k8s.io/kubernetes/pkg/apis/core/v1"
|
||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||
"k8s.io/kubernetes/pkg/controller"
|
||||
"k8s.io/kubernetes/pkg/kubectl"
|
||||
|
@ -198,6 +205,8 @@ func (f *ring1Factory) LogsForObject(object, options runtime.Object, timeout tim
|
|||
switch t := object.(type) {
|
||||
case *api.Pod:
|
||||
return clientset.Core().Pods(t.Namespace).GetLogs(t.Name, opts), nil
|
||||
case *corev1.Pod:
|
||||
return clientset.Core().Pods(t.Namespace).GetLogs(t.Name, opts), nil
|
||||
}
|
||||
|
||||
namespace, selector, err := selectorsForObject(object)
|
||||
|
@ -223,10 +232,31 @@ func selectorsForObject(object runtime.Object) (namespace string, selector label
|
|||
if err != nil {
|
||||
return "", nil, fmt.Errorf("invalid label selector: %v", err)
|
||||
}
|
||||
case *extensionsv1beta1.ReplicaSet:
|
||||
namespace = t.Namespace
|
||||
selector, err = metav1.LabelSelectorAsSelector(t.Spec.Selector)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("invalid label selector: %v", err)
|
||||
}
|
||||
case *appsv1.ReplicaSet:
|
||||
namespace = t.Namespace
|
||||
selector, err = metav1.LabelSelectorAsSelector(t.Spec.Selector)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("invalid label selector: %v", err)
|
||||
}
|
||||
case *appsv1beta2.ReplicaSet:
|
||||
namespace = t.Namespace
|
||||
selector, err = metav1.LabelSelectorAsSelector(t.Spec.Selector)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("invalid label selector: %v", err)
|
||||
}
|
||||
|
||||
case *api.ReplicationController:
|
||||
namespace = t.Namespace
|
||||
selector = labels.SelectorFromSet(t.Spec.Selector)
|
||||
case *corev1.ReplicationController:
|
||||
namespace = t.Namespace
|
||||
selector = labels.SelectorFromSet(t.Spec.Selector)
|
||||
|
||||
case *apps.StatefulSet:
|
||||
namespace = t.Namespace
|
||||
|
@ -234,6 +264,24 @@ func selectorsForObject(object runtime.Object) (namespace string, selector label
|
|||
if err != nil {
|
||||
return "", nil, fmt.Errorf("invalid label selector: %v", err)
|
||||
}
|
||||
case *appsv1.StatefulSet:
|
||||
namespace = t.Namespace
|
||||
selector, err = metav1.LabelSelectorAsSelector(t.Spec.Selector)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("invalid label selector: %v", err)
|
||||
}
|
||||
case *appsv1beta1.StatefulSet:
|
||||
namespace = t.Namespace
|
||||
selector, err = metav1.LabelSelectorAsSelector(t.Spec.Selector)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("invalid label selector: %v", err)
|
||||
}
|
||||
case *appsv1beta2.StatefulSet:
|
||||
namespace = t.Namespace
|
||||
selector, err = metav1.LabelSelectorAsSelector(t.Spec.Selector)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("invalid label selector: %v", err)
|
||||
}
|
||||
|
||||
case *extensions.DaemonSet:
|
||||
namespace = t.Namespace
|
||||
|
@ -241,6 +289,24 @@ func selectorsForObject(object runtime.Object) (namespace string, selector label
|
|||
if err != nil {
|
||||
return "", nil, fmt.Errorf("invalid label selector: %v", err)
|
||||
}
|
||||
case *extensionsv1beta1.DaemonSet:
|
||||
namespace = t.Namespace
|
||||
selector, err = metav1.LabelSelectorAsSelector(t.Spec.Selector)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("invalid label selector: %v", err)
|
||||
}
|
||||
case *appsv1.DaemonSet:
|
||||
namespace = t.Namespace
|
||||
selector, err = metav1.LabelSelectorAsSelector(t.Spec.Selector)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("invalid label selector: %v", err)
|
||||
}
|
||||
case *appsv1beta2.DaemonSet:
|
||||
namespace = t.Namespace
|
||||
selector, err = metav1.LabelSelectorAsSelector(t.Spec.Selector)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("invalid label selector: %v", err)
|
||||
}
|
||||
|
||||
case *extensions.Deployment:
|
||||
namespace = t.Namespace
|
||||
|
@ -248,6 +314,30 @@ func selectorsForObject(object runtime.Object) (namespace string, selector label
|
|||
if err != nil {
|
||||
return "", nil, fmt.Errorf("invalid label selector: %v", err)
|
||||
}
|
||||
case *extensionsv1beta1.Deployment:
|
||||
namespace = t.Namespace
|
||||
selector, err = metav1.LabelSelectorAsSelector(t.Spec.Selector)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("invalid label selector: %v", err)
|
||||
}
|
||||
case *appsv1.Deployment:
|
||||
namespace = t.Namespace
|
||||
selector, err = metav1.LabelSelectorAsSelector(t.Spec.Selector)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("invalid label selector: %v", err)
|
||||
}
|
||||
case *appsv1beta1.Deployment:
|
||||
namespace = t.Namespace
|
||||
selector, err = metav1.LabelSelectorAsSelector(t.Spec.Selector)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("invalid label selector: %v", err)
|
||||
}
|
||||
case *appsv1beta2.Deployment:
|
||||
namespace = t.Namespace
|
||||
selector, err = metav1.LabelSelectorAsSelector(t.Spec.Selector)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("invalid label selector: %v", err)
|
||||
}
|
||||
|
||||
case *batch.Job:
|
||||
namespace = t.Namespace
|
||||
|
@ -255,6 +345,12 @@ func selectorsForObject(object runtime.Object) (namespace string, selector label
|
|||
if err != nil {
|
||||
return "", nil, fmt.Errorf("invalid label selector: %v", err)
|
||||
}
|
||||
case *batchv1.Job:
|
||||
namespace = t.Namespace
|
||||
selector, err = metav1.LabelSelectorAsSelector(t.Spec.Selector)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("invalid label selector: %v", err)
|
||||
}
|
||||
|
||||
case *api.Service:
|
||||
namespace = t.Namespace
|
||||
|
@ -262,6 +358,12 @@ func selectorsForObject(object runtime.Object) (namespace string, selector label
|
|||
return "", nil, fmt.Errorf("invalid service '%s': Service is defined without a selector", t.Name)
|
||||
}
|
||||
selector = labels.SelectorFromSet(t.Spec.Selector)
|
||||
case *corev1.Service:
|
||||
namespace = t.Namespace
|
||||
if t.Spec.Selector == nil || len(t.Spec.Selector) == 0 {
|
||||
return "", nil, fmt.Errorf("invalid service '%s': Service is defined without a selector", t.Name)
|
||||
}
|
||||
selector = labels.SelectorFromSet(t.Spec.Selector)
|
||||
|
||||
default:
|
||||
return "", nil, fmt.Errorf("selector for %T not implemented", object)
|
||||
|
@ -325,6 +427,11 @@ func (f *ring1Factory) AttachablePodForObject(object runtime.Object, timeout tim
|
|||
switch t := object.(type) {
|
||||
case *api.Pod:
|
||||
return t, nil
|
||||
case *corev1.Pod:
|
||||
internalPod := &api.Pod{}
|
||||
err := apiv1.Convert_v1_Pod_To_core_Pod(t, internalPod, nil)
|
||||
return internalPod, err
|
||||
|
||||
}
|
||||
|
||||
namespace, selector, err := selectorsForObject(object)
|
||||
|
|
|
@ -64,7 +64,7 @@ type Builder struct {
|
|||
objectTyper runtime.ObjectTyper
|
||||
|
||||
// codecFactory describes which codecs you want to use
|
||||
codecFactory *serializer.CodecFactory
|
||||
negotiatedSerializer runtime.NegotiatedSerializer
|
||||
|
||||
// local indicates that we cannot make server calls
|
||||
local bool
|
||||
|
@ -240,13 +240,19 @@ func (b *Builder) WithScheme(scheme *runtime.Scheme, decodingVersions ...schema.
|
|||
}
|
||||
b.objectTyper = scheme
|
||||
codecFactory := serializer.NewCodecFactory(scheme)
|
||||
b.codecFactory = &codecFactory
|
||||
negotiatedSerializer := runtime.NegotiatedSerializer(codecFactory)
|
||||
// if you specified versions, you're specifying a desire for external types, which you don't want to round-trip through
|
||||
// internal types
|
||||
if len(decodingVersions) > 0 {
|
||||
negotiatedSerializer = &serializer.DirectCodecFactory{CodecFactory: codecFactory}
|
||||
}
|
||||
b.negotiatedSerializer = negotiatedSerializer
|
||||
|
||||
b.mapper = &mapper{
|
||||
localFn: b.isLocal,
|
||||
restMapper: b.restMapper,
|
||||
clientFn: b.getClient,
|
||||
decoder: b.codecFactory.UniversalDecoder(decodingVersions...),
|
||||
decoder: codecFactory.UniversalDecoder(decodingVersions...),
|
||||
}
|
||||
|
||||
return b
|
||||
|
@ -827,8 +833,8 @@ func (b *Builder) getClient(gv schema.GroupVersion) (RESTClient, error) {
|
|||
return b.fakeClientFn(gv)
|
||||
}
|
||||
|
||||
if b.codecFactory != nil {
|
||||
return b.clientConfigFn.clientForGroupVersion(gv, b.codecFactory)
|
||||
if b.negotiatedSerializer != nil {
|
||||
return b.clientConfigFn.clientForGroupVersion(gv, b.negotiatedSerializer)
|
||||
}
|
||||
|
||||
return b.clientConfigFn.unstructuredClientForGroupVersion(gv)
|
||||
|
|
Loading…
Reference in New Issue