mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	tighten .Info for kubectl to avoid unpredictable conversion
This commit is contained in:
		@@ -246,12 +246,7 @@ func (o AnnotateOptions) RunAnnotate(f cmdutil.Factory, cmd *cobra.Command) erro
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		var outputObj runtime.Object
 | 
			
		||||
		var obj runtime.Object
 | 
			
		||||
 | 
			
		||||
		obj, err = info.ObjectConverter.ConvertToVersion(info.Object, info.Mapping.GroupVersionKind.GroupVersion())
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		obj := info.Object
 | 
			
		||||
 | 
			
		||||
		if o.dryrun || o.local {
 | 
			
		||||
			if err := o.updateAnnotations(obj); err != nil {
 | 
			
		||||
 
 | 
			
		||||
@@ -364,7 +364,7 @@ func (o *ApplyOptions) Run(f cmdutil.Factory, cmd *cobra.Command) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			return printer.PrintObj(info.AsVersioned(), o.Out)
 | 
			
		||||
			return printer.PrintObj(info.Object, o.Out)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if !o.DryRun {
 | 
			
		||||
@@ -415,7 +415,7 @@ func (o *ApplyOptions) Run(f cmdutil.Factory, cmd *cobra.Command) error {
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return err
 | 
			
		||||
				}
 | 
			
		||||
				return printer.PrintObj(info.AsVersioned(), o.Out)
 | 
			
		||||
				return printer.PrintObj(info.Object, o.Out)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		count++
 | 
			
		||||
@@ -429,7 +429,7 @@ func (o *ApplyOptions) Run(f cmdutil.Factory, cmd *cobra.Command) error {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		return printer.PrintObj(info.AsVersioned(), o.Out)
 | 
			
		||||
		return printer.PrintObj(info.Object, o.Out)
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
 
 | 
			
		||||
@@ -30,6 +30,7 @@ go_library(
 | 
			
		||||
        "//pkg/kubectl/cmd/util/editor: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",
 | 
			
		||||
 
 | 
			
		||||
@@ -30,6 +30,7 @@ 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"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -144,7 +145,12 @@ func (o *CreateJobOptions) RunCreateJob() error {
 | 
			
		||||
	if len(infos) != 1 {
 | 
			
		||||
		return fmt.Errorf("from must be an existing cronjob")
 | 
			
		||||
	}
 | 
			
		||||
	cronJob, ok := infos[0].AsVersioned().(*batchv1beta1.CronJob)
 | 
			
		||||
 | 
			
		||||
	uncastVersionedObj, err := scheme.Scheme.ConvertToVersion(infos[0].Object, batchv1beta1.SchemeGroupVersion)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return fmt.Errorf("from must be an existing cronjob: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	cronJob, ok := uncastVersionedObj.(*batchv1beta1.CronJob)
 | 
			
		||||
	if !ok {
 | 
			
		||||
		return fmt.Errorf("from must be an existing cronjob")
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -43,6 +43,7 @@ import (
 | 
			
		||||
	restclient "k8s.io/client-go/rest"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/legacyscheme"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/kubectl"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
 | 
			
		||||
	cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
 | 
			
		||||
@@ -718,7 +719,7 @@ func (o *DrainOptions) RunCordonOrUncordon(desired bool) error {
 | 
			
		||||
 | 
			
		||||
	for _, nodeInfo := range o.nodeInfos {
 | 
			
		||||
		if nodeInfo.Mapping.GroupVersionKind.Kind == "Node" {
 | 
			
		||||
			obj, err := nodeInfo.ObjectConverter.ConvertToVersion(nodeInfo.Object, nodeInfo.Mapping.GroupVersionKind.GroupVersion())
 | 
			
		||||
			obj, err := legacyscheme.Scheme.ConvertToVersion(nodeInfo.Object, nodeInfo.Mapping.GroupVersionKind.GroupVersion())
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				fmt.Printf("error: unable to %s node %q: %v", cordonOrUncordon, nodeInfo.Name, err)
 | 
			
		||||
				continue
 | 
			
		||||
 
 | 
			
		||||
@@ -332,7 +332,7 @@ func (o *LabelOptions) RunLabel(f cmdutil.Factory, cmd *cobra.Command) error {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		printer.PrintObj(info.AsVersioned(), o.Out)
 | 
			
		||||
		printer.PrintObj(info.Object, o.Out)
 | 
			
		||||
		return nil
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -242,7 +242,7 @@ func (o *PatchOptions) RunPatch(f cmdutil.Factory, out io.Writer, cmd *cobra.Com
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			printer.PrintObj(info.AsVersioned(), out)
 | 
			
		||||
			printer.PrintObj(info.Object, out)
 | 
			
		||||
 | 
			
		||||
			// if object was not successfully patched, exit with error code 1
 | 
			
		||||
			if !didPatch {
 | 
			
		||||
@@ -285,7 +285,7 @@ func (o *PatchOptions) RunPatch(f cmdutil.Factory, out io.Writer, cmd *cobra.Com
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		return printer.PrintObj(info.AsVersioned(), out)
 | 
			
		||||
		return printer.PrintObj(info.Object, out)
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
 
 | 
			
		||||
@@ -234,7 +234,7 @@ func (o *ReplaceOptions) Run() error {
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		info.Refresh(obj, true)
 | 
			
		||||
		return o.PrintObj(info.AsVersioned())
 | 
			
		||||
		return o.PrintObj(info.Object)
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -330,7 +330,7 @@ func (o *ReplaceOptions) forceReplace() error {
 | 
			
		||||
 | 
			
		||||
		count++
 | 
			
		||||
		info.Refresh(obj, true)
 | 
			
		||||
		return o.PrintObj(info.AsVersioned())
 | 
			
		||||
		return o.PrintObj(info.Object)
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
 
 | 
			
		||||
@@ -217,12 +217,16 @@ func RunRollingUpdate(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args
 | 
			
		||||
			return cmdutil.UsageErrorf(cmd, "please make sure %s exists and is not empty", filename)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		switch t := infos[0].AsVersioned().(type) {
 | 
			
		||||
		uncastVersionedObj, err := legacyscheme.Scheme.ConvertToVersion(infos[0].Object, v1.SchemeGroupVersion)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		switch t := uncastVersionedObj.(type) {
 | 
			
		||||
		case *v1.ReplicationController:
 | 
			
		||||
			replicasDefaulted = t.Spec.Replicas == nil
 | 
			
		||||
 | 
			
		||||
			// previous code ignored the error.  Seem like it's very unlikely to fail, so ok for now.
 | 
			
		||||
			uncastObj, err := legacyscheme.Scheme.ConvertToVersion(t, api.SchemeGroupVersion)
 | 
			
		||||
			uncastObj, err := legacyscheme.Scheme.ConvertToVersion(uncastVersionedObj, api.SchemeGroupVersion)
 | 
			
		||||
			if err == nil {
 | 
			
		||||
				newRc, _ = uncastObj.(*api.ReplicationController)
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
@@ -19,6 +19,7 @@ go_library(
 | 
			
		||||
    importpath = "k8s.io/kubernetes/pkg/kubectl/cmd/set",
 | 
			
		||||
    visibility = ["//build/visible_to:pkg_kubectl_cmd_set_CONSUMERS"],
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//pkg/api/legacyscheme:go_default_library",
 | 
			
		||||
        "//pkg/apis/rbac:go_default_library",
 | 
			
		||||
        "//pkg/kubectl:go_default_library",
 | 
			
		||||
        "//pkg/kubectl/cmd/templates:go_default_library",
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,7 @@ import (
 | 
			
		||||
	"k8s.io/kubernetes/pkg/printers"
 | 
			
		||||
 | 
			
		||||
	utilerrors "k8s.io/apimachinery/pkg/util/errors"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/legacyscheme"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -272,7 +273,7 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		for _, info := range infos {
 | 
			
		||||
			versionedObject, err := info.ObjectConverter.ConvertToVersion(info.Object, info.Mapping.GroupVersionKind.GroupVersion())
 | 
			
		||||
			versionedObject, err := legacyscheme.Scheme.ConvertToVersion(info.Object, info.Mapping.GroupVersionKind.GroupVersion())
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
@@ -30,6 +30,7 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/types"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/strategicpatch"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/validation"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/legacyscheme"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/kubectl"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
 | 
			
		||||
	cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
 | 
			
		||||
@@ -233,7 +234,7 @@ func (o TaintOptions) RunTaint() error {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		obj, err := info.ObjectConverter.ConvertToVersion(info.Object, info.Mapping.GroupVersionKind.GroupVersion())
 | 
			
		||||
		obj, err := legacyscheme.Scheme.ConvertToVersion(info.Object, info.Mapping.GroupVersionKind.GroupVersion())
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -353,11 +353,10 @@ func (f *TestFactory) NewBuilder() *resource.Builder {
 | 
			
		||||
			Decoder:         cmdutil.InternalVersionDecoder(),
 | 
			
		||||
		},
 | 
			
		||||
		&resource.Mapper{
 | 
			
		||||
			RESTMapper:      mapper,
 | 
			
		||||
			ObjectTyper:     typer,
 | 
			
		||||
			ClientMapper:    resource.ClientMapperFunc(f.UnstructuredClientForMapping),
 | 
			
		||||
			ObjectConverter: unstructured.UnstructuredObjectConverter{},
 | 
			
		||||
			Decoder:         unstructured.UnstructuredJSONScheme,
 | 
			
		||||
			RESTMapper:   mapper,
 | 
			
		||||
			ObjectTyper:  typer,
 | 
			
		||||
			ClientMapper: resource.ClientMapperFunc(f.UnstructuredClientForMapping),
 | 
			
		||||
			Decoder:      unstructured.UnstructuredJSONScheme,
 | 
			
		||||
		},
 | 
			
		||||
		f.CategoryExpander(),
 | 
			
		||||
	)
 | 
			
		||||
 
 | 
			
		||||
@@ -441,7 +441,7 @@ func (o *EditOptions) visitToApplyEditPatch(originalInfos []*resource.Info, patc
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			printer.PrintObj(info.AsVersioned(), o.Out)
 | 
			
		||||
			printer.PrintObj(info.Object, o.Out)
 | 
			
		||||
			return nil
 | 
			
		||||
		} else {
 | 
			
		||||
			err := o.annotationPatch(info)
 | 
			
		||||
@@ -453,7 +453,7 @@ func (o *EditOptions) visitToApplyEditPatch(originalInfos []*resource.Info, patc
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			printer.PrintObj(info.AsVersioned(), o.Out)
 | 
			
		||||
			printer.PrintObj(info.Object, o.Out)
 | 
			
		||||
			return nil
 | 
			
		||||
		}
 | 
			
		||||
	})
 | 
			
		||||
@@ -576,7 +576,7 @@ func (o *EditOptions) visitToPatch(originalInfos []*resource.Info, patchVisitor
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			printer.PrintObj(info.AsVersioned(), o.Out)
 | 
			
		||||
			printer.PrintObj(info.Object, o.Out)
 | 
			
		||||
			return nil
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@@ -634,7 +634,7 @@ func (o *EditOptions) visitToPatch(originalInfos []*resource.Info, patchVisitor
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		printer.PrintObj(info.AsVersioned(), o.Out)
 | 
			
		||||
		printer.PrintObj(info.Object, o.Out)
 | 
			
		||||
		return nil
 | 
			
		||||
	})
 | 
			
		||||
	return err
 | 
			
		||||
@@ -649,7 +649,7 @@ func (o *EditOptions) visitToCreate(createVisitor resource.Visitor) error {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		printer.PrintObj(info.AsVersioned(), o.Out)
 | 
			
		||||
		printer.PrintObj(info.Object, o.Out)
 | 
			
		||||
		return nil
 | 
			
		||||
	})
 | 
			
		||||
	return err
 | 
			
		||||
 
 | 
			
		||||
@@ -63,11 +63,10 @@ func (f *ring2Factory) NewBuilder() *resource.Builder {
 | 
			
		||||
			Decoder:         InternalVersionDecoder(),
 | 
			
		||||
		},
 | 
			
		||||
		&resource.Mapper{
 | 
			
		||||
			RESTMapper:      mapper,
 | 
			
		||||
			ObjectTyper:     typer,
 | 
			
		||||
			ObjectConverter: unstructured.UnstructuredObjectConverter{},
 | 
			
		||||
			ClientMapper:    unstructuredClientMapperFunc,
 | 
			
		||||
			Decoder:         unstructured.UnstructuredJSONScheme,
 | 
			
		||||
			RESTMapper:   mapper,
 | 
			
		||||
			ObjectTyper:  typer,
 | 
			
		||||
			ClientMapper: unstructuredClientMapperFunc,
 | 
			
		||||
			Decoder:      unstructured.UnstructuredJSONScheme,
 | 
			
		||||
		},
 | 
			
		||||
		categoryExpander,
 | 
			
		||||
	)
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,6 @@ go_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/apis/meta/v1/unstructured:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
 | 
			
		||||
 
 | 
			
		||||
@@ -186,6 +186,8 @@ func (b *Builder) Unstructured() *Builder {
 | 
			
		||||
		return b
 | 
			
		||||
	}
 | 
			
		||||
	b.mapper = b.unstructured
 | 
			
		||||
	// the unstructured mapper doesn't do any conversion
 | 
			
		||||
	b.mapper.ObjectConverter = nil
 | 
			
		||||
	return b
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -835,12 +837,12 @@ func (b *Builder) visitByResource() *Result {
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		info := &Info{
 | 
			
		||||
			Client:          client,
 | 
			
		||||
			Mapping:         mapping,
 | 
			
		||||
			ObjectConverter: b.mapper.ObjectConverter,
 | 
			
		||||
			Namespace:       selectorNamespace,
 | 
			
		||||
			Name:            tuple.Name,
 | 
			
		||||
			Export:          b.export,
 | 
			
		||||
			Client:                     client,
 | 
			
		||||
			Mapping:                    mapping,
 | 
			
		||||
			toVersionedObjectConverter: b.mapper.ObjectConverter,
 | 
			
		||||
			Namespace:                  selectorNamespace,
 | 
			
		||||
			Name:                       tuple.Name,
 | 
			
		||||
			Export:                     b.export,
 | 
			
		||||
		}
 | 
			
		||||
		items = append(items, info)
 | 
			
		||||
	}
 | 
			
		||||
@@ -901,12 +903,12 @@ func (b *Builder) visitByName() *Result {
 | 
			
		||||
	visitors := []Visitor{}
 | 
			
		||||
	for _, name := range b.names {
 | 
			
		||||
		info := &Info{
 | 
			
		||||
			Client:          client,
 | 
			
		||||
			Mapping:         mapping,
 | 
			
		||||
			ObjectConverter: b.mapper.ObjectConverter,
 | 
			
		||||
			Namespace:       selectorNamespace,
 | 
			
		||||
			Name:            name,
 | 
			
		||||
			Export:          b.export,
 | 
			
		||||
			Client:                     client,
 | 
			
		||||
			Mapping:                    mapping,
 | 
			
		||||
			toVersionedObjectConverter: b.mapper.ObjectConverter,
 | 
			
		||||
			Namespace:                  selectorNamespace,
 | 
			
		||||
			Name:                       name,
 | 
			
		||||
			Export:                     b.export,
 | 
			
		||||
		}
 | 
			
		||||
		visitors = append(visitors, info)
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -72,9 +72,9 @@ func (m *Mapper) InfoForData(data []byte, source string) (*Info, error) {
 | 
			
		||||
	resourceVersion, _ := metadataAccessor.ResourceVersion(obj)
 | 
			
		||||
 | 
			
		||||
	return &Info{
 | 
			
		||||
		Client:          client,
 | 
			
		||||
		Mapping:         mapping,
 | 
			
		||||
		ObjectConverter: m.ObjectConverter,
 | 
			
		||||
		Client:                     client,
 | 
			
		||||
		Mapping:                    mapping,
 | 
			
		||||
		toVersionedObjectConverter: m.ObjectConverter,
 | 
			
		||||
 | 
			
		||||
		Source:          source,
 | 
			
		||||
		Namespace:       namespace,
 | 
			
		||||
@@ -112,9 +112,9 @@ func (m *Mapper) InfoForObject(obj runtime.Object, preferredGVKs []schema.GroupV
 | 
			
		||||
	namespace, _ := metadataAccessor.Namespace(obj)
 | 
			
		||||
	resourceVersion, _ := metadataAccessor.ResourceVersion(obj)
 | 
			
		||||
	return &Info{
 | 
			
		||||
		Client:          client,
 | 
			
		||||
		Mapping:         mapping,
 | 
			
		||||
		ObjectConverter: m.ObjectConverter,
 | 
			
		||||
		Client:                     client,
 | 
			
		||||
		Mapping:                    mapping,
 | 
			
		||||
		toVersionedObjectConverter: m.ObjectConverter,
 | 
			
		||||
 | 
			
		||||
		Namespace:       namespace,
 | 
			
		||||
		Name:            name,
 | 
			
		||||
 
 | 
			
		||||
@@ -94,9 +94,9 @@ func (r *Selector) Visit(fn VisitorFunc) error {
 | 
			
		||||
		resourceVersion, _ := metadataAccessor.ResourceVersion(list)
 | 
			
		||||
		nextContinueToken, _ := metadataAccessor.Continue(list)
 | 
			
		||||
		info := &Info{
 | 
			
		||||
			Client:          r.Client,
 | 
			
		||||
			Mapping:         r.Mapping,
 | 
			
		||||
			ObjectConverter: r.ObjectConverter,
 | 
			
		||||
			Client:                     r.Client,
 | 
			
		||||
			Mapping:                    r.Mapping,
 | 
			
		||||
			toVersionedObjectConverter: r.ObjectConverter,
 | 
			
		||||
 | 
			
		||||
			Namespace:       r.Namespace,
 | 
			
		||||
			ResourceVersion: resourceVersion,
 | 
			
		||||
 
 | 
			
		||||
@@ -32,7 +32,6 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/api/errors"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/api/meta"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/labels"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime/schema"
 | 
			
		||||
@@ -79,7 +78,7 @@ type Info struct {
 | 
			
		||||
	// from disk.
 | 
			
		||||
	Mapping *meta.RESTMapping
 | 
			
		||||
	// ObjectConverter allows conversion
 | 
			
		||||
	ObjectConverter runtime.ObjectConvertor
 | 
			
		||||
	toVersionedObjectConverter runtime.ObjectConvertor
 | 
			
		||||
 | 
			
		||||
	// Namespace will be set if the object is namespaced and has a specified value.
 | 
			
		||||
	Namespace string
 | 
			
		||||
@@ -185,45 +184,21 @@ func (i *Info) ResourceMapping() *meta.RESTMapping {
 | 
			
		||||
 | 
			
		||||
// Versioned returns the object as a Go type in the mapping's version or returns an error.
 | 
			
		||||
func (i *Info) Versioned() (runtime.Object, error) {
 | 
			
		||||
	return i.ObjectConverter.ConvertToVersion(i.Object, i.Mapping.GroupVersionKind.GroupVersion())
 | 
			
		||||
	return i.toVersionedObjectConverter.ConvertToVersion(i.Object, i.Mapping.GroupVersionKind.GroupVersion())
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// AsVersioned returns the object as a Go object in the external form if possible (matching the
 | 
			
		||||
// group version kind of the mapping, or i.Object if it cannot be converted.
 | 
			
		||||
func (i *Info) AsVersioned() runtime.Object {
 | 
			
		||||
	if i.toVersionedObjectConverter == nil {
 | 
			
		||||
		panic("attempt to call AsVersioned object using .Unstructured builder")
 | 
			
		||||
	}
 | 
			
		||||
	if obj, err := i.Versioned(); err == nil {
 | 
			
		||||
		return obj
 | 
			
		||||
	}
 | 
			
		||||
	return i.Object
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Unstructured returns the current object in unstructured form (as a runtime.Unstructured)
 | 
			
		||||
func (i *Info) Unstructured() (runtime.Unstructured, error) {
 | 
			
		||||
	switch t := i.Object.(type) {
 | 
			
		||||
	case runtime.Unstructured:
 | 
			
		||||
		return t, nil
 | 
			
		||||
	case *runtime.Unknown:
 | 
			
		||||
		gvk := i.Mapping.GroupVersionKind
 | 
			
		||||
		out, _, err := unstructured.UnstructuredJSONScheme.Decode(t.Raw, &gvk, nil)
 | 
			
		||||
		return out.(runtime.Unstructured), err
 | 
			
		||||
	default:
 | 
			
		||||
		out := &unstructured.Unstructured{}
 | 
			
		||||
		if err := i.ObjectConverter.Convert(i.Object, out, nil); err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		return out, nil
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// AsUnstructured returns the object as a Go object in external form as a runtime.Unstructured
 | 
			
		||||
// (map of JSON equivalent values) or as i.Object if it cannot be converted.
 | 
			
		||||
func (i *Info) AsUnstructured() runtime.Object {
 | 
			
		||||
	if out, err := i.Unstructured(); err == nil {
 | 
			
		||||
		return out
 | 
			
		||||
	}
 | 
			
		||||
	return i.Object
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// VisitorList implements Visit for the sub visitors it contains. The first error
 | 
			
		||||
// returned from a child Visitor will terminate iteration.
 | 
			
		||||
type VisitorList []Visitor
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user