mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 20:53:33 +00:00
get the resource.Info out of the conversion business
This commit is contained in:
parent
cb4ce3392d
commit
1e5372b620
@ -25,7 +25,6 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/api/errors"
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
"k8s.io/apimachinery/pkg/api/meta"
|
"k8s.io/apimachinery/pkg/api/meta"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
"k8s.io/kubernetes/pkg/kubectl"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
|
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
@ -203,7 +202,7 @@ func (o *SetLastAppliedOptions) RunSetLastApplied() error {
|
|||||||
}
|
}
|
||||||
info.Refresh(patchedObj, false)
|
info.Refresh(patchedObj, false)
|
||||||
}
|
}
|
||||||
if err := o.PrintObj(info.AsVersioned(legacyscheme.Scheme), o.Out); err != nil {
|
if err := o.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping), o.Out); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -253,7 +253,7 @@ func (o *AutoscaleOptions) Run() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return printer.PrintObj(hpa.AsVersioned(legacyscheme.Scheme), o.Out)
|
return printer.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(hpa.Object, hpa.Mapping), o.Out)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := kubectl.CreateOrUpdateAnnotation(o.createAnnotation, hpa.Object, cmdutil.InternalVersionJSONEncoder()); err != nil {
|
if err := kubectl.CreateOrUpdateAnnotation(o.createAnnotation, hpa.Object, cmdutil.InternalVersionJSONEncoder()); err != nil {
|
||||||
@ -270,7 +270,7 @@ func (o *AutoscaleOptions) Run() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return printer.PrintObj(info.AsVersioned(legacyscheme.Scheme), o.Out)
|
return printer.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(info.Object, hpa.Mapping), o.Out)
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -228,7 +228,7 @@ func (options *CertificateOptions) modifyCertificateCondition(builder *resource.
|
|||||||
}
|
}
|
||||||
found++
|
found++
|
||||||
|
|
||||||
return options.PrintObj(info.AsVersioned(legacyscheme.Scheme), options.Out)
|
return options.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping), options.Out)
|
||||||
})
|
})
|
||||||
if found == 0 {
|
if found == 0 {
|
||||||
fmt.Fprintf(options.Out, "No resources found\n")
|
fmt.Fprintf(options.Out, "No resources found\n")
|
||||||
|
@ -426,7 +426,7 @@ func RunCreateSubcommand(f cmdutil.Factory, options *CreateSubcommandOptions) er
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ensure we pass a versioned object to the printer
|
// ensure we pass a versioned object to the printer
|
||||||
obj = info.AsVersioned(legacyscheme.Scheme)
|
obj = cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping)
|
||||||
} else {
|
} else {
|
||||||
if meta, err := meta.Accessor(obj); err == nil && nsOverriden {
|
if meta, err := meta.Accessor(obj); err == nil && nsOverriden {
|
||||||
meta.SetNamespace(namespace)
|
meta.SetNamespace(namespace)
|
||||||
|
@ -739,7 +739,7 @@ func (o *DrainOptions) RunCordonOrUncordon(desired bool) error {
|
|||||||
fmt.Printf("error: %v", err)
|
fmt.Printf("error: %v", err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
printer.PrintObj(nodeInfo.AsVersioned(legacyscheme.Scheme), o.Out)
|
printer.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(nodeInfo.Object, nodeInfo.Mapping), o.Out)
|
||||||
} else {
|
} else {
|
||||||
if !o.DryRun {
|
if !o.DryRun {
|
||||||
helper := resource.NewHelper(o.restClient, nodeInfo.Mapping)
|
helper := resource.NewHelper(o.restClient, nodeInfo.Mapping)
|
||||||
@ -765,7 +765,7 @@ func (o *DrainOptions) RunCordonOrUncordon(desired bool) error {
|
|||||||
fmt.Fprintf(o.ErrOut, "%v", err)
|
fmt.Fprintf(o.ErrOut, "%v", err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
printer.PrintObj(nodeInfo.AsVersioned(legacyscheme.Scheme), o.Out)
|
printer.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(nodeInfo.Object, nodeInfo.Mapping), o.Out)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
printer, err := o.ToPrinter("skipped")
|
printer, err := o.ToPrinter("skipped")
|
||||||
@ -773,7 +773,7 @@ func (o *DrainOptions) RunCordonOrUncordon(desired bool) error {
|
|||||||
fmt.Fprintf(o.ErrOut, "%v", err)
|
fmt.Fprintf(o.ErrOut, "%v", err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
printer.PrintObj(nodeInfo.AsVersioned(legacyscheme.Scheme), o.Out)
|
printer.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(nodeInfo.Object, nodeInfo.Mapping), o.Out)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -339,7 +339,7 @@ func (o *ExposeServiceOptions) RunExpose(cmd *cobra.Command, args []string) erro
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return o.PrintObj(info.AsVersioned(legacyscheme.Scheme), o.Out)
|
return o.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping), o.Out)
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -156,7 +156,7 @@ func (o PauseConfig) RunPause() error {
|
|||||||
allErrs = append(allErrs, err)
|
allErrs = append(allErrs, err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
printer.PrintObj(info.AsVersioned(legacyscheme.Scheme), o.Out)
|
printer.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping), o.Out)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,7 +172,7 @@ func (o PauseConfig) RunPause() error {
|
|||||||
allErrs = append(allErrs, err)
|
allErrs = append(allErrs, err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
printer.PrintObj(info.AsVersioned(legacyscheme.Scheme), o.Out)
|
printer.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping), o.Out)
|
||||||
}
|
}
|
||||||
|
|
||||||
return utilerrors.NewAggregate(allErrs)
|
return utilerrors.NewAggregate(allErrs)
|
||||||
|
@ -161,7 +161,7 @@ func (o ResumeConfig) RunResume() error {
|
|||||||
allErrs = append(allErrs, err)
|
allErrs = append(allErrs, err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
printer.PrintObj(info.AsVersioned(legacyscheme.Scheme), o.Out)
|
printer.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping), o.Out)
|
||||||
}
|
}
|
||||||
|
|
||||||
obj, err := resource.NewHelper(info.Client, info.Mapping).Patch(info.Namespace, info.Name, types.StrategicMergePatchType, patch.Patch)
|
obj, err := resource.NewHelper(info.Client, info.Mapping).Patch(info.Namespace, info.Name, types.StrategicMergePatchType, patch.Patch)
|
||||||
@ -176,7 +176,7 @@ func (o ResumeConfig) RunResume() error {
|
|||||||
allErrs = append(allErrs, err)
|
allErrs = append(allErrs, err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
printer.PrintObj(info.AsVersioned(legacyscheme.Scheme), o.Out)
|
printer.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping), o.Out)
|
||||||
}
|
}
|
||||||
|
|
||||||
return utilerrors.NewAggregate(allErrs)
|
return utilerrors.NewAggregate(allErrs)
|
||||||
|
@ -168,7 +168,7 @@ func (o *UndoOptions) RunUndo() error {
|
|||||||
allErrs = append(allErrs, err)
|
allErrs = append(allErrs, err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
printer.PrintObj(info.AsVersioned(legacyscheme.Scheme), o.Out)
|
printer.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping), o.Out)
|
||||||
}
|
}
|
||||||
return utilerrors.NewAggregate(allErrs)
|
return utilerrors.NewAggregate(allErrs)
|
||||||
}
|
}
|
||||||
|
@ -696,7 +696,7 @@ func (o *RunOptions) createGeneratedObject(f cmdutil.Factory, cmd *cobra.Command
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
versioned = info.AsVersioned(legacyscheme.Scheme)
|
versioned = cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping)
|
||||||
}
|
}
|
||||||
return &RunObject{
|
return &RunObject{
|
||||||
Versioned: versioned,
|
Versioned: versioned,
|
||||||
|
@ -327,7 +327,7 @@ func (o *EnvOptions) RunEnv() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
patches := CalculatePatches(infos, cmdutil.InternalVersionJSONEncoder(), func(info *resource.Info) ([]byte, error) {
|
patches := CalculatePatches(infos, cmdutil.InternalVersionJSONEncoder(), func(info *resource.Info) ([]byte, error) {
|
||||||
info.Object = info.AsVersioned(legacyscheme.Scheme)
|
info.Object = cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping)
|
||||||
_, err := o.updatePodSpecForObject(info.Object, func(spec *v1.PodSpec) error {
|
_, err := o.updatePodSpecForObject(info.Object, func(spec *v1.PodSpec) error {
|
||||||
resolutionErrorsEncountered := false
|
resolutionErrorsEncountered := false
|
||||||
containers, _ := selectContainers(spec.Containers, o.ContainerSelector)
|
containers, _ := selectContainers(spec.Containers, o.ContainerSelector)
|
||||||
@ -418,7 +418,7 @@ func (o *EnvOptions) RunEnv() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if o.Local || o.dryRun {
|
if o.Local || o.dryRun {
|
||||||
if err := o.PrintObj(patch.Info.AsVersioned(legacyscheme.Scheme), o.Out); err != nil {
|
if err := o.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(patch.Info.Object, patch.Info.Mapping), o.Out); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
@ -437,7 +437,7 @@ func (o *EnvOptions) RunEnv() error {
|
|||||||
return fmt.Errorf("at least one environment variable must be provided")
|
return fmt.Errorf("at least one environment variable must be provided")
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := o.PrintObj(info.AsVersioned(legacyscheme.Scheme), o.Out); err != nil {
|
if err := o.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping), o.Out); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -211,7 +211,7 @@ func (o *SetImageOptions) Run() error {
|
|||||||
|
|
||||||
patches := CalculatePatches(o.Infos, cmdutil.InternalVersionJSONEncoder(), func(info *resource.Info) ([]byte, error) {
|
patches := CalculatePatches(o.Infos, cmdutil.InternalVersionJSONEncoder(), func(info *resource.Info) ([]byte, error) {
|
||||||
transformed := false
|
transformed := false
|
||||||
info.Object = info.AsVersioned(legacyscheme.Scheme)
|
info.Object = cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping)
|
||||||
_, err := o.UpdatePodSpecForObject(info.Object, func(spec *v1.PodSpec) error {
|
_, err := o.UpdatePodSpecForObject(info.Object, func(spec *v1.PodSpec) error {
|
||||||
for name, image := range o.ContainerImages {
|
for name, image := range o.ContainerImages {
|
||||||
var (
|
var (
|
||||||
@ -275,7 +275,7 @@ func (o *SetImageOptions) Run() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if o.Local || o.DryRun {
|
if o.Local || o.DryRun {
|
||||||
if err := o.PrintObj(patch.Info.AsVersioned(legacyscheme.Scheme), o.Out); err != nil {
|
if err := o.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(patch.Info.Object, patch.Info.Mapping), o.Out); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
@ -289,7 +289,7 @@ func (o *SetImageOptions) Run() error {
|
|||||||
}
|
}
|
||||||
info.Refresh(obj, true)
|
info.Refresh(obj, true)
|
||||||
|
|
||||||
if err := o.PrintObj(info.AsVersioned(legacyscheme.Scheme), o.Out); err != nil {
|
if err := o.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping), o.Out); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -224,7 +224,7 @@ func (o *SetResourcesOptions) Run() error {
|
|||||||
allErrs := []error{}
|
allErrs := []error{}
|
||||||
patches := CalculatePatches(o.Infos, cmdutil.InternalVersionJSONEncoder(), func(info *resource.Info) ([]byte, error) {
|
patches := CalculatePatches(o.Infos, cmdutil.InternalVersionJSONEncoder(), func(info *resource.Info) ([]byte, error) {
|
||||||
transformed := false
|
transformed := false
|
||||||
info.Object = info.AsVersioned(legacyscheme.Scheme)
|
info.Object = cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping)
|
||||||
_, err := o.UpdatePodSpecForObject(info.Object, func(spec *v1.PodSpec) error {
|
_, err := o.UpdatePodSpecForObject(info.Object, func(spec *v1.PodSpec) error {
|
||||||
containers, _ := selectContainers(spec.Containers, o.ContainerSelector)
|
containers, _ := selectContainers(spec.Containers, o.ContainerSelector)
|
||||||
if len(containers) != 0 {
|
if len(containers) != 0 {
|
||||||
@ -277,7 +277,7 @@ func (o *SetResourcesOptions) Run() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if o.Local || o.DryRun {
|
if o.Local || o.DryRun {
|
||||||
if err := o.PrintObj(patch.Info.AsVersioned(legacyscheme.Scheme), o.Out); err != nil {
|
if err := o.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(patch.Info.Object, patch.Info.Mapping), o.Out); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
@ -290,7 +290,7 @@ func (o *SetResourcesOptions) Run() error {
|
|||||||
}
|
}
|
||||||
info.Refresh(obj, true)
|
info.Refresh(obj, true)
|
||||||
|
|
||||||
if err := o.PrintObj(info.AsVersioned(legacyscheme.Scheme), o.Out); err != nil {
|
if err := o.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping), o.Out); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -204,7 +204,7 @@ func (o *SetSelectorOptions) RunSelector() error {
|
|||||||
return r.Visit(func(info *resource.Info, err error) error {
|
return r.Visit(func(info *resource.Info, err error) error {
|
||||||
patch := &Patch{Info: info}
|
patch := &Patch{Info: info}
|
||||||
CalculatePatch(patch, cmdutil.InternalVersionJSONEncoder(), func(info *resource.Info) ([]byte, error) {
|
CalculatePatch(patch, cmdutil.InternalVersionJSONEncoder(), func(info *resource.Info) ([]byte, error) {
|
||||||
versioned := info.AsVersioned(legacyscheme.Scheme)
|
versioned := cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping)
|
||||||
patch.Info.Object = versioned
|
patch.Info.Object = versioned
|
||||||
selectErr := updateSelectorForObject(info.Object, *o.selector)
|
selectErr := updateSelectorForObject(info.Object, *o.selector)
|
||||||
if selectErr != nil {
|
if selectErr != nil {
|
||||||
@ -232,7 +232,7 @@ func (o *SetSelectorOptions) RunSelector() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
info.Refresh(patched, true)
|
info.Refresh(patched, true)
|
||||||
return o.PrintObj(patch.Info.AsVersioned(legacyscheme.Scheme), o.Out)
|
return o.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(patch.Info.Object, info.Mapping), o.Out)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,7 +174,7 @@ func (o *SetServiceAccountOptions) Complete(f cmdutil.Factory, cmd *cobra.Comman
|
|||||||
func (o *SetServiceAccountOptions) Run() error {
|
func (o *SetServiceAccountOptions) Run() error {
|
||||||
patchErrs := []error{}
|
patchErrs := []error{}
|
||||||
patchFn := func(info *resource.Info) ([]byte, error) {
|
patchFn := func(info *resource.Info) ([]byte, error) {
|
||||||
info.Object = info.AsVersioned(legacyscheme.Scheme)
|
info.Object = cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping)
|
||||||
_, err := o.updatePodSpecForObject(info.Object, func(podSpec *v1.PodSpec) error {
|
_, err := o.updatePodSpecForObject(info.Object, func(podSpec *v1.PodSpec) error {
|
||||||
podSpec.ServiceAccountName = o.serviceAccountName
|
podSpec.ServiceAccountName = o.serviceAccountName
|
||||||
return nil
|
return nil
|
||||||
@ -198,7 +198,7 @@ func (o *SetServiceAccountOptions) Run() error {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if o.local || o.dryRun {
|
if o.local || o.dryRun {
|
||||||
if err := o.PrintObj(patch.Info.AsVersioned(legacyscheme.Scheme), o.Out); err != nil {
|
if err := o.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(patch.Info.Object, patch.Info.Mapping), o.Out); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
@ -210,7 +210,7 @@ func (o *SetServiceAccountOptions) Run() error {
|
|||||||
}
|
}
|
||||||
info.Refresh(patched, true)
|
info.Refresh(patched, true)
|
||||||
|
|
||||||
if err := o.PrintObj(info.AsVersioned(legacyscheme.Scheme), o.Out); err != nil {
|
if err := o.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping), o.Out); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -230,7 +230,7 @@ func (o *SubjectOptions) Run(fn updateSubjects) error {
|
|||||||
transformed, err := updateSubjectForObject(info.Object, subjects, fn)
|
transformed, err := updateSubjectForObject(info.Object, subjects, fn)
|
||||||
if transformed && err == nil {
|
if transformed && err == nil {
|
||||||
// TODO: switch UpdatePodSpecForObject to work on v1.PodSpec
|
// TODO: switch UpdatePodSpecForObject to work on v1.PodSpec
|
||||||
return runtime.Encode(cmdutil.InternalVersionJSONEncoder(), info.AsVersioned(legacyscheme.Scheme))
|
return runtime.Encode(cmdutil.InternalVersionJSONEncoder(), cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping))
|
||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
})
|
})
|
||||||
@ -263,7 +263,7 @@ func (o *SubjectOptions) Run(fn updateSubjects) error {
|
|||||||
}
|
}
|
||||||
info.Refresh(obj, true)
|
info.Refresh(obj, true)
|
||||||
|
|
||||||
return o.PrintObj(info.AsVersioned(legacyscheme.Scheme), o.Out)
|
return o.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping), o.Out)
|
||||||
}
|
}
|
||||||
return utilerrors.NewAggregate(allErrs)
|
return utilerrors.NewAggregate(allErrs)
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ go_library(
|
|||||||
name = "go_default_library",
|
name = "go_default_library",
|
||||||
srcs = [
|
srcs = [
|
||||||
"cached_discovery.go",
|
"cached_discovery.go",
|
||||||
|
"conversion.go",
|
||||||
"factory.go",
|
"factory.go",
|
||||||
"factory_builder.go",
|
"factory_builder.go",
|
||||||
"factory_client_access.go",
|
"factory_client_access.go",
|
||||||
|
40
pkg/kubectl/cmd/util/conversion.go
Normal file
40
pkg/kubectl/cmd/util/conversion.go
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package util
|
||||||
|
|
||||||
|
import (
|
||||||
|
"k8s.io/apimachinery/pkg/api/meta"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||||
|
)
|
||||||
|
|
||||||
|
// AsDefaultVersionedOrOriginal returns the object as a Go object in the external form if possible (matching the
|
||||||
|
// group version kind of the mapping if provided, a best guess based on serialization if not provided, or obj if it cannot be converted.
|
||||||
|
// TODO update call sites to specify the scheme they want on their builder.
|
||||||
|
func AsDefaultVersionedOrOriginal(obj runtime.Object, mapping *meta.RESTMapping) runtime.Object {
|
||||||
|
converter := runtime.ObjectConvertor(legacyscheme.Scheme)
|
||||||
|
groupVersioner := runtime.GroupVersioner(schema.GroupVersions(legacyscheme.Registry.RegisteredGroupVersions()))
|
||||||
|
if mapping != nil {
|
||||||
|
groupVersioner = mapping.GroupVersionKind.GroupVersion()
|
||||||
|
}
|
||||||
|
|
||||||
|
if obj, err := converter.ConvertToVersion(obj, groupVersioner); err == nil {
|
||||||
|
return obj
|
||||||
|
}
|
||||||
|
return obj
|
||||||
|
}
|
@ -300,7 +300,8 @@ func TestPathBuilderAndVersionedObjectNotDefaulted(t *testing.T) {
|
|||||||
if info.Name != "update-demo-kitten" || info.Namespace != "" || info.Object == nil {
|
if info.Name != "update-demo-kitten" || info.Namespace != "" || info.Object == nil {
|
||||||
t.Errorf("unexpected info: %#v", info)
|
t.Errorf("unexpected info: %#v", info)
|
||||||
}
|
}
|
||||||
obj := info.AsVersioned(legacyscheme.Scheme)
|
|
||||||
|
obj := info.Object
|
||||||
version, ok := obj.(*v1.ReplicationController)
|
version, ok := obj.(*v1.ReplicationController)
|
||||||
// versioned object does not have defaulting applied
|
// versioned object does not have defaulting applied
|
||||||
if obj == nil || !ok || version.Spec.Replicas != nil {
|
if obj == nil || !ok || version.Spec.Replicas != nil {
|
||||||
|
@ -180,22 +180,6 @@ func (i *Info) ResourceMapping() *meta.RESTMapping {
|
|||||||
return i.Mapping
|
return i.Mapping
|
||||||
}
|
}
|
||||||
|
|
||||||
// Versioned returns the object as a Go type in the mapping's version or returns an error.
|
|
||||||
func (i *Info) versioned(convertor runtime.ObjectConvertor) (runtime.Object, error) {
|
|
||||||
return convertor.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.
|
|
||||||
// Deprecated this function will be removed once calling code is updated to indicate the correct
|
|
||||||
// negoticatedserializers during construction of the builder
|
|
||||||
func (i *Info) AsVersioned(convertor runtime.ObjectConvertor) runtime.Object {
|
|
||||||
if obj, err := i.versioned(convertor); err == nil {
|
|
||||||
return obj
|
|
||||||
}
|
|
||||||
return i.Object
|
|
||||||
}
|
|
||||||
|
|
||||||
// VisitorList implements Visit for the sub visitors it contains. The first error
|
// VisitorList implements Visit for the sub visitors it contains. The first error
|
||||||
// returned from a child Visitor will terminate iteration.
|
// returned from a child Visitor will terminate iteration.
|
||||||
type VisitorList []Visitor
|
type VisitorList []Visitor
|
||||||
|
Loading…
Reference in New Issue
Block a user