Merge pull request #25983 from smarterclayton/cumulative

Automatic merge from submit-queue

Make UnsafeConversion fast by inlining copies

Not ready yet (need to add a copy to "safe" conversion and add mutation tests to roundtrip api/serialization_test).

Cuts another 10% off decode and encode.
This commit is contained in:
k8s-merge-robot 2016-05-28 09:02:53 -07:00
commit 3b2b647409
20 changed files with 495 additions and 1537 deletions

View File

@ -367,6 +367,18 @@ func isDirectlyConvertible(in, out *types.Type, preexisting conversions) bool {
return false return false
} }
func areTypesAliased(in, out *types.Type) bool {
// If one of the types is Alias, resolve it.
if in.Kind == types.Alias {
return areTypesAliased(in.Underlying, out)
}
if out.Kind == types.Alias {
return areTypesAliased(in, out.Underlying)
}
return in == out
}
const ( const (
apiPackagePath = "k8s.io/kubernetes/pkg/api" apiPackagePath = "k8s.io/kubernetes/pkg/api"
conversionPackagePath = "k8s.io/kubernetes/pkg/conversion" conversionPackagePath = "k8s.io/kubernetes/pkg/conversion"
@ -693,6 +705,11 @@ func (g *genConversion) doStruct(inType, outType *types.Type, sw *generator.Snip
sw.Do("out.$.name$ = $.outType|raw$(in.$.name$)\n", args) sw.Do("out.$.name$ = $.outType|raw$(in.$.name$)\n", args)
} }
case types.Map, types.Slice, types.Pointer: case types.Map, types.Slice, types.Pointer:
if g.isDirectlyAssignable(m.Type, outMember.Type) {
sw.Do("out.$.name$ = in.$.name$\n", args)
continue
}
sw.Do("if in.$.name$ != nil {\n", args) sw.Do("if in.$.name$ != nil {\n", args)
sw.Do("in, out := &in.$.name$, &out.$.name$\n", args) sw.Do("in, out := &in.$.name$, &out.$.name$\n", args)
g.generateFor(m.Type, outMember.Type, sw) g.generateFor(m.Type, outMember.Type, sw)
@ -700,6 +717,10 @@ func (g *genConversion) doStruct(inType, outType *types.Type, sw *generator.Snip
sw.Do("out.$.name$ = nil\n", args) sw.Do("out.$.name$ = nil\n", args)
sw.Do("}\n", nil) sw.Do("}\n", nil)
case types.Struct: case types.Struct:
if g.isDirectlyAssignable(m.Type, outMember.Type) {
sw.Do("out.$.name$ = in.$.name$\n", args)
continue
}
if g.convertibleOnlyWithinPackage(m.Type, outMember.Type) { if g.convertibleOnlyWithinPackage(m.Type, outMember.Type) {
funcName := g.funcNameTmpl(m.Type, outMember.Type) funcName := g.funcNameTmpl(m.Type, outMember.Type)
sw.Do(fmt.Sprintf("if err := %s(&in.$.name$, &out.$.name$, s); err != nil {\n", funcName), args) sw.Do(fmt.Sprintf("if err := %s(&in.$.name$, &out.$.name$, s); err != nil {\n", funcName), args)
@ -741,6 +762,10 @@ func (g *genConversion) doStruct(inType, outType *types.Type, sw *generator.Snip
} }
} }
func (g *genConversion) isDirectlyAssignable(inType, outType *types.Type) bool {
return inType == outType || areTypesAliased(inType, outType)
}
func (g *genConversion) doPointer(inType, outType *types.Type, sw *generator.SnippetWriter) { func (g *genConversion) doPointer(inType, outType *types.Type, sw *generator.SnippetWriter) {
sw.Do("*out = new($.Elem|raw$)\n", outType) sw.Do("*out = new($.Elem|raw$)\n", outType)
if outType.Elem.IsAssignable() { if outType.Elem.IsAssignable() {

View File

@ -275,13 +275,7 @@ func autoConvert_v1alpha1_ClusterStatus_To_federation_ClusterStatus(in *ClusterS
if err := Convert_v1alpha1_ClusterMeta_To_federation_ClusterMeta(&in.ClusterMeta, &out.ClusterMeta, s); err != nil { if err := Convert_v1alpha1_ClusterMeta_To_federation_ClusterMeta(&in.ClusterMeta, &out.ClusterMeta, s); err != nil {
return err return err
} }
if in.Zones != nil { out.Zones = in.Zones
in, out := &in.Zones, &out.Zones
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Zones = nil
}
out.Region = in.Region out.Region = in.Region
return nil return nil
} }
@ -331,13 +325,7 @@ func autoConvert_federation_ClusterStatus_To_v1alpha1_ClusterStatus(in *federati
if err := Convert_federation_ClusterMeta_To_v1alpha1_ClusterMeta(&in.ClusterMeta, &out.ClusterMeta, s); err != nil { if err := Convert_federation_ClusterMeta_To_v1alpha1_ClusterMeta(&in.ClusterMeta, &out.ClusterMeta, s); err != nil {
return err return err
} }
if in.Zones != nil { out.Zones = in.Zones
in, out := &in.Zones, &out.Zones
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Zones = nil
}
out.Region = in.Region out.Region = in.Region
return nil return nil
} }

View File

@ -158,7 +158,6 @@ func Convert_fields_Selector_To_string(in *fields.Selector, out *string, s conve
return nil return nil
} }
func Convert_resource_Quantity_To_resource_Quantity(in *resource.Quantity, out *resource.Quantity, s conversion.Scope) error { func Convert_resource_Quantity_To_resource_Quantity(in *resource.Quantity, out *resource.Quantity, s conversion.Scope) error {
// Cannot deep copy these, because inf.Dec has unexported fields. *out = *in
*out = *in.Copy()
return nil return nil
} }

View File

@ -25,6 +25,7 @@ import (
"k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/api/testapi"
apitesting "k8s.io/kubernetes/pkg/api/testing" apitesting "k8s.io/kubernetes/pkg/api/testing"
"k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/util/diff"
) )
func BenchmarkPodConversion(b *testing.B) { func BenchmarkPodConversion(b *testing.B) {
@ -32,6 +33,8 @@ func BenchmarkPodConversion(b *testing.B) {
items := make([]api.Pod, 4) items := make([]api.Pod, 4)
for i := range items { for i := range items {
apiObjectFuzzer.Fuzz(&items[i]) apiObjectFuzzer.Fuzz(&items[i])
items[i].Spec.InitContainers = nil
items[i].Status.InitContainerStatuses = nil
} }
// add a fixed item // add a fixed item
@ -47,20 +50,16 @@ func BenchmarkPodConversion(b *testing.B) {
width := len(items) width := len(items)
scheme := api.Scheme scheme := api.Scheme
var result *api.Pod
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
pod := &items[i%width] pod := &items[i%width]
versionedObj, err := scheme.UnsafeConvertToVersion(pod, *testapi.Default.GroupVersion()) versionedObj, err := scheme.UnsafeConvertToVersion(pod, *testapi.Default.GroupVersion())
if err != nil { if err != nil {
b.Fatalf("Conversion error: %v", err) b.Fatalf("Conversion error: %v", err)
} }
obj, err := scheme.UnsafeConvertToVersion(versionedObj, testapi.Default.InternalGroupVersion()) if _, err = scheme.UnsafeConvertToVersion(versionedObj, testapi.Default.InternalGroupVersion()); err != nil {
if err != nil {
b.Fatalf("Conversion error: %v", err) b.Fatalf("Conversion error: %v", err)
} }
result = obj.(*api.Pod)
} }
b.Log(result)
} }
func BenchmarkNodeConversion(b *testing.B) { func BenchmarkNodeConversion(b *testing.B) {
@ -75,6 +74,7 @@ func BenchmarkNodeConversion(b *testing.B) {
scheme := api.Scheme scheme := api.Scheme
var result *api.Node var result *api.Node
b.ResetTimer()
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
versionedObj, err := scheme.UnsafeConvertToVersion(&node, *testapi.Default.GroupVersion()) versionedObj, err := scheme.UnsafeConvertToVersion(&node, *testapi.Default.GroupVersion())
if err != nil { if err != nil {
@ -86,8 +86,9 @@ func BenchmarkNodeConversion(b *testing.B) {
} }
result = obj.(*api.Node) result = obj.(*api.Node)
} }
b.StopTimer()
if !api.Semantic.DeepDerivative(node, *result) { if !api.Semantic.DeepDerivative(node, *result) {
b.Fatalf("Incorrect conversion: expected %v, got %v", node, *result) b.Fatalf("Incorrect conversion: %s", diff.ObjectDiff(node, *result))
} }
} }
@ -103,6 +104,7 @@ func BenchmarkReplicationControllerConversion(b *testing.B) {
scheme := api.Scheme scheme := api.Scheme
var result *api.ReplicationController var result *api.ReplicationController
b.ResetTimer()
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
versionedObj, err := scheme.UnsafeConvertToVersion(&replicationController, *testapi.Default.GroupVersion()) versionedObj, err := scheme.UnsafeConvertToVersion(&replicationController, *testapi.Default.GroupVersion())
if err != nil { if err != nil {
@ -114,6 +116,7 @@ func BenchmarkReplicationControllerConversion(b *testing.B) {
} }
result = obj.(*api.ReplicationController) result = obj.(*api.ReplicationController)
} }
b.StopTimer()
if !api.Semantic.DeepDerivative(replicationController, *result) { if !api.Semantic.DeepDerivative(replicationController, *result) {
b.Fatalf("Incorrect conversion: expected %v, got %v", replicationController, *result) b.Fatalf("Incorrect conversion: expected %v, got %v", replicationController, *result)
} }

View File

@ -20,6 +20,7 @@ import (
"bytes" "bytes"
"encoding/hex" "encoding/hex"
"encoding/json" "encoding/json"
"fmt"
"io/ioutil" "io/ioutil"
"math/rand" "math/rand"
"reflect" "reflect"
@ -78,6 +79,13 @@ func dataAsString(data []byte) string {
func roundTrip(t *testing.T, codec runtime.Codec, item runtime.Object) { func roundTrip(t *testing.T, codec runtime.Codec, item runtime.Object) {
printer := spew.ConfigState{DisableMethods: true} printer := spew.ConfigState{DisableMethods: true}
original := item
copied, err := api.Scheme.DeepCopy(item)
if err != nil {
panic(fmt.Sprintf("unable to copy: %v", err))
}
item = copied.(runtime.Object)
name := reflect.TypeOf(item).Elem().Name() name := reflect.TypeOf(item).Elem().Name()
data, err := runtime.Encode(codec, item) data, err := runtime.Encode(codec, item)
if err != nil { if err != nil {
@ -85,13 +93,18 @@ func roundTrip(t *testing.T, codec runtime.Codec, item runtime.Object) {
return return
} }
if !api.Semantic.DeepEqual(original, item) {
t.Errorf("0: %v: encode altered the object, diff: %v", name, diff.ObjectReflectDiff(original, item))
return
}
obj2, err := runtime.Decode(codec, data) obj2, err := runtime.Decode(codec, data)
if err != nil { if err != nil {
t.Errorf("0: %v: %v\nCodec: %v\nData: %s\nSource: %#v", name, err, codec, dataAsString(data), printer.Sprintf("%#v", item)) t.Errorf("0: %v: %v\nCodec: %#v\nData: %s\nSource: %#v", name, err, codec, dataAsString(data), printer.Sprintf("%#v", item))
panic("failed") panic("failed")
} }
if !api.Semantic.DeepEqual(item, obj2) { if !api.Semantic.DeepEqual(original, obj2) {
t.Errorf("\n1: %v: diff: %v\nCodec: %v\nSource:\n\n%#v\n\nEncoded:\n\n%s\n\nFinal:\n\n%#v", name, diff.ObjectGoPrintDiff(item, obj2), codec, printer.Sprintf("%#v", item), dataAsString(data), printer.Sprintf("%#v", obj2)) t.Errorf("\n1: %v: diff: %v\nCodec: %#v\nSource:\n\n%#v\n\nEncoded:\n\n%s\n\nFinal:\n\n%#v", name, diff.ObjectReflectDiff(item, obj2), codec, printer.Sprintf("%#v", item), dataAsString(data), printer.Sprintf("%#v", obj2))
return return
} }
@ -101,7 +114,7 @@ func roundTrip(t *testing.T, codec runtime.Codec, item runtime.Object) {
return return
} }
if !api.Semantic.DeepEqual(item, obj3) { if !api.Semantic.DeepEqual(item, obj3) {
t.Errorf("3: %v: diff: %v\nCodec: %v", name, diff.ObjectDiff(item, obj3), codec) t.Errorf("3: %v: diff: %v\nCodec: %#v", name, diff.ObjectReflectDiff(item, obj3), codec)
return return
} }
} }
@ -358,6 +371,7 @@ func benchmarkItems() []v1.Pod {
for i := range items { for i := range items {
var pod api.Pod var pod api.Pod
apiObjectFuzzer.Fuzz(&pod) apiObjectFuzzer.Fuzz(&pod)
pod.Spec.InitContainers, pod.Status.InitContainerStatuses = nil, nil
out, err := api.Scheme.ConvertToVersion(&pod, v1.SchemeGroupVersion) out, err := api.Scheme.ConvertToVersion(&pod, v1.SchemeGroupVersion)
if err != nil { if err != nil {
panic(err) panic(err)

View File

@ -199,16 +199,8 @@ func addConversionFuncs(scheme *runtime.Scheme) {
} }
func Convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec(in *api.ReplicationControllerSpec, out *ReplicationControllerSpec, s conversion.Scope) error { func Convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec(in *api.ReplicationControllerSpec, out *ReplicationControllerSpec, s conversion.Scope) error {
out.Replicas = new(int32) out.Replicas = &in.Replicas
*out.Replicas = int32(in.Replicas) out.Selector = in.Selector
if in.Selector != nil {
out.Selector = make(map[string]string)
for key, val := range in.Selector {
out.Selector[key] = val
}
} else {
out.Selector = nil
}
//if in.TemplateRef != nil { //if in.TemplateRef != nil {
// out.TemplateRef = new(ObjectReference) // out.TemplateRef = new(ObjectReference)
// if err := Convert_api_ObjectReference_To_v1_ObjectReference(in.TemplateRef, out.TemplateRef, s); err != nil { // if err := Convert_api_ObjectReference_To_v1_ObjectReference(in.TemplateRef, out.TemplateRef, s); err != nil {
@ -230,14 +222,8 @@ func Convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec(in *a
func Convert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec(in *ReplicationControllerSpec, out *api.ReplicationControllerSpec, s conversion.Scope) error { func Convert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec(in *ReplicationControllerSpec, out *api.ReplicationControllerSpec, s conversion.Scope) error {
out.Replicas = *in.Replicas out.Replicas = *in.Replicas
if in.Selector != nil { out.Selector = in.Selector
out.Selector = make(map[string]string)
for key, val := range in.Selector {
out.Selector[key] = val
}
} else {
out.Selector = nil
}
//if in.TemplateRef != nil { //if in.TemplateRef != nil {
// out.TemplateRef = new(api.ObjectReference) // out.TemplateRef = new(api.ObjectReference)
// if err := Convert_v1_ObjectReference_To_api_ObjectReference(in.TemplateRef, out.TemplateRef, s); err != nil { // if err := Convert_v1_ObjectReference_To_api_ObjectReference(in.TemplateRef, out.TemplateRef, s); err != nil {
@ -262,6 +248,12 @@ func Convert_api_PodStatusResult_To_v1_PodStatusResult(in *api.PodStatusResult,
return err return err
} }
if old := out.Annotations; old != nil {
out.Annotations = make(map[string]string, len(old))
for k, v := range old {
out.Annotations[k] = v
}
}
if len(out.Status.InitContainerStatuses) > 0 { if len(out.Status.InitContainerStatuses) > 0 {
if out.Annotations == nil { if out.Annotations == nil {
out.Annotations = make(map[string]string) out.Annotations = make(map[string]string)
@ -290,7 +282,14 @@ func Convert_v1_PodStatusResult_To_api_PodStatusResult(in *PodStatusResult, out
if err := autoConvert_v1_PodStatusResult_To_api_PodStatusResult(in, out, s); err != nil { if err := autoConvert_v1_PodStatusResult_To_api_PodStatusResult(in, out, s); err != nil {
return err return err
} }
delete(out.Annotations, PodInitContainerStatusesAnnotationKey) if len(out.Annotations) > 0 {
old := out.Annotations
out.Annotations = make(map[string]string, len(old))
for k, v := range old {
out.Annotations[k] = v
}
delete(out.Annotations, PodInitContainerStatusesAnnotationKey)
}
return nil return nil
} }
@ -300,6 +299,12 @@ func Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(in *api.PodTemplateSpec,
} }
// TODO: when we move init container to beta, remove these conversions // TODO: when we move init container to beta, remove these conversions
if old := out.Annotations; old != nil {
out.Annotations = make(map[string]string, len(old))
for k, v := range old {
out.Annotations[k] = v
}
}
if len(out.Spec.InitContainers) > 0 { if len(out.Spec.InitContainers) > 0 {
if out.Annotations == nil { if out.Annotations == nil {
out.Annotations = make(map[string]string) out.Annotations = make(map[string]string)
@ -328,7 +333,14 @@ func Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in *PodTemplateSpec, out
if err := autoConvert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in, out, s); err != nil { if err := autoConvert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in, out, s); err != nil {
return err return err
} }
delete(out.Annotations, PodInitContainersAnnotationKey) if len(out.Annotations) > 0 {
old := out.Annotations
out.Annotations = make(map[string]string, len(old))
for k, v := range old {
out.Annotations[k] = v
}
delete(out.Annotations, PodInitContainersAnnotationKey)
}
return nil return nil
} }
@ -365,28 +377,13 @@ func Convert_api_PodSpec_To_v1_PodSpec(in *api.PodSpec, out *PodSpec, s conversi
} else { } else {
out.Containers = nil out.Containers = nil
} }
out.RestartPolicy = RestartPolicy(in.RestartPolicy) out.RestartPolicy = RestartPolicy(in.RestartPolicy)
if in.TerminationGracePeriodSeconds != nil { out.TerminationGracePeriodSeconds = in.TerminationGracePeriodSeconds
out.TerminationGracePeriodSeconds = new(int64) out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds
*out.TerminationGracePeriodSeconds = *in.TerminationGracePeriodSeconds
} else {
out.TerminationGracePeriodSeconds = nil
}
if in.ActiveDeadlineSeconds != nil {
out.ActiveDeadlineSeconds = new(int64)
*out.ActiveDeadlineSeconds = *in.ActiveDeadlineSeconds
} else {
out.ActiveDeadlineSeconds = nil
}
out.DNSPolicy = DNSPolicy(in.DNSPolicy) out.DNSPolicy = DNSPolicy(in.DNSPolicy)
if in.NodeSelector != nil { out.NodeSelector = in.NodeSelector
out.NodeSelector = make(map[string]string)
for key, val := range in.NodeSelector {
out.NodeSelector[key] = val
}
} else {
out.NodeSelector = nil
}
out.ServiceAccountName = in.ServiceAccountName out.ServiceAccountName = in.ServiceAccountName
// DeprecatedServiceAccount is an alias for ServiceAccountName. // DeprecatedServiceAccount is an alias for ServiceAccountName.
out.DeprecatedServiceAccount = in.ServiceAccountName out.DeprecatedServiceAccount = in.ServiceAccountName
@ -451,27 +448,10 @@ func Convert_v1_PodSpec_To_api_PodSpec(in *PodSpec, out *api.PodSpec, s conversi
out.Containers = nil out.Containers = nil
} }
out.RestartPolicy = api.RestartPolicy(in.RestartPolicy) out.RestartPolicy = api.RestartPolicy(in.RestartPolicy)
if in.TerminationGracePeriodSeconds != nil { out.TerminationGracePeriodSeconds = in.TerminationGracePeriodSeconds
out.TerminationGracePeriodSeconds = new(int64) out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds
*out.TerminationGracePeriodSeconds = *in.TerminationGracePeriodSeconds
} else {
out.TerminationGracePeriodSeconds = nil
}
if in.ActiveDeadlineSeconds != nil {
out.ActiveDeadlineSeconds = new(int64)
*out.ActiveDeadlineSeconds = *in.ActiveDeadlineSeconds
} else {
out.ActiveDeadlineSeconds = nil
}
out.DNSPolicy = api.DNSPolicy(in.DNSPolicy) out.DNSPolicy = api.DNSPolicy(in.DNSPolicy)
if in.NodeSelector != nil { out.NodeSelector = in.NodeSelector
out.NodeSelector = make(map[string]string)
for key, val := range in.NodeSelector {
out.NodeSelector[key] = val
}
} else {
out.NodeSelector = nil
}
// We support DeprecatedServiceAccount as an alias for ServiceAccountName. // We support DeprecatedServiceAccount as an alias for ServiceAccountName.
// If both are specified, ServiceAccountName (the new field) wins. // If both are specified, ServiceAccountName (the new field) wins.
out.ServiceAccountName = in.ServiceAccountName out.ServiceAccountName = in.ServiceAccountName
@ -515,10 +495,16 @@ func Convert_api_Pod_To_v1_Pod(in *api.Pod, out *Pod, s conversion.Scope) error
} }
// TODO: when we move init container to beta, remove these conversions // TODO: when we move init container to beta, remove these conversions
if len(out.Spec.InitContainers) > 0 { if len(out.Spec.InitContainers) > 0 || len(out.Status.InitContainerStatuses) > 0 {
if out.Annotations == nil { old := out.Annotations
out.Annotations = make(map[string]string) out.Annotations = make(map[string]string, len(old))
for k, v := range old {
out.Annotations[k] = v
} }
delete(out.Annotations, PodInitContainersAnnotationKey)
delete(out.Annotations, PodInitContainerStatusesAnnotationKey)
}
if len(out.Spec.InitContainers) > 0 {
value, err := json.Marshal(out.Spec.InitContainers) value, err := json.Marshal(out.Spec.InitContainers)
if err != nil { if err != nil {
return err return err
@ -528,9 +514,6 @@ func Convert_api_Pod_To_v1_Pod(in *api.Pod, out *Pod, s conversion.Scope) error
delete(out.Annotations, PodInitContainersAnnotationKey) delete(out.Annotations, PodInitContainersAnnotationKey)
} }
if len(out.Status.InitContainerStatuses) > 0 { if len(out.Status.InitContainerStatuses) > 0 {
if out.Annotations == nil {
out.Annotations = make(map[string]string)
}
value, err := json.Marshal(out.Status.InitContainerStatuses) value, err := json.Marshal(out.Status.InitContainerStatuses)
if err != nil { if err != nil {
return err return err
@ -574,8 +557,15 @@ func Convert_v1_Pod_To_api_Pod(in *Pod, out *api.Pod, s conversion.Scope) error
if err := autoConvert_v1_Pod_To_api_Pod(in, out, s); err != nil { if err := autoConvert_v1_Pod_To_api_Pod(in, out, s); err != nil {
return err return err
} }
delete(out.Annotations, PodInitContainersAnnotationKey) if len(out.Annotations) > 0 {
delete(out.Annotations, PodInitContainerStatusesAnnotationKey) old := out.Annotations
out.Annotations = make(map[string]string, len(old))
for k, v := range old {
out.Annotations[k] = v
}
delete(out.Annotations, PodInitContainersAnnotationKey)
delete(out.Annotations, PodInitContainerStatusesAnnotationKey)
}
return nil return nil
} }
@ -584,9 +574,7 @@ func Convert_api_ServiceSpec_To_v1_ServiceSpec(in *api.ServiceSpec, out *Service
return err return err
} }
// Publish both externalIPs and deprecatedPublicIPs fields in v1. // Publish both externalIPs and deprecatedPublicIPs fields in v1.
for _, ip := range in.ExternalIPs { out.DeprecatedPublicIPs = in.ExternalIPs
out.DeprecatedPublicIPs = append(out.DeprecatedPublicIPs, ip)
}
return nil return nil
} }
@ -596,10 +584,7 @@ func Convert_v1_ServiceSpec_To_api_ServiceSpec(in *ServiceSpec, out *api.Service
} }
// Prefer the legacy deprecatedPublicIPs field, if provided. // Prefer the legacy deprecatedPublicIPs field, if provided.
if len(in.DeprecatedPublicIPs) > 0 { if len(in.DeprecatedPublicIPs) > 0 {
out.ExternalIPs = nil out.ExternalIPs = in.DeprecatedPublicIPs
for _, ip := range in.DeprecatedPublicIPs {
out.ExternalIPs = append(out.ExternalIPs, ip)
}
} }
return nil return nil
} }
@ -614,24 +599,9 @@ func Convert_api_PodSecurityContext_To_v1_PodSecurityContext(in *api.PodSecurity
} else { } else {
out.SELinuxOptions = nil out.SELinuxOptions = nil
} }
if in.RunAsUser != nil { out.RunAsUser = in.RunAsUser
out.RunAsUser = new(int64) out.RunAsNonRoot = in.RunAsNonRoot
*out.RunAsUser = *in.RunAsUser out.FSGroup = in.FSGroup
} else {
out.RunAsUser = nil
}
if in.RunAsNonRoot != nil {
out.RunAsNonRoot = new(bool)
*out.RunAsNonRoot = *in.RunAsNonRoot
} else {
out.RunAsNonRoot = nil
}
if in.FSGroup != nil {
out.FSGroup = new(int64)
*out.FSGroup = *in.FSGroup
} else {
out.FSGroup = nil
}
return nil return nil
} }
@ -645,24 +615,9 @@ func Convert_v1_PodSecurityContext_To_api_PodSecurityContext(in *PodSecurityCont
} else { } else {
out.SELinuxOptions = nil out.SELinuxOptions = nil
} }
if in.RunAsUser != nil { out.RunAsUser = in.RunAsUser
out.RunAsUser = new(int64) out.RunAsNonRoot = in.RunAsNonRoot
*out.RunAsUser = *in.RunAsUser out.FSGroup = in.FSGroup
} else {
out.RunAsUser = nil
}
if in.RunAsNonRoot != nil {
out.RunAsNonRoot = new(bool)
*out.RunAsNonRoot = *in.RunAsNonRoot
} else {
out.RunAsNonRoot = nil
}
if in.FSGroup != nil {
out.FSGroup = new(int64)
*out.FSGroup = *in.FSGroup
} else {
out.FSGroup = nil
}
return nil return nil
} }
@ -671,18 +626,16 @@ func Convert_v1_ResourceList_To_api_ResourceList(in *ResourceList, out *api.Reso
return nil return nil
} }
converted := make(api.ResourceList) if *out == nil {
*out = make(api.ResourceList, len(*in))
}
for key, val := range *in { for key, val := range *in {
value := val.Copy()
// TODO(#18538): We round up resource values to milli scale to maintain API compatibility. // TODO(#18538): We round up resource values to milli scale to maintain API compatibility.
// In the future, we should instead reject values that need rounding. // In the future, we should instead reject values that need rounding.
const milliScale = -3 const milliScale = -3
value.RoundUp(milliScale) val.RoundUp(milliScale)
converted[api.ResourceName(key)] = *value (*out)[api.ResourceName(key)] = val
} }
*out = converted
return nil return nil
} }

View File

@ -23,10 +23,8 @@ package v1
import ( import (
api "k8s.io/kubernetes/pkg/api" api "k8s.io/kubernetes/pkg/api"
resource "k8s.io/kubernetes/pkg/api/resource" resource "k8s.io/kubernetes/pkg/api/resource"
unversioned "k8s.io/kubernetes/pkg/api/unversioned"
conversion "k8s.io/kubernetes/pkg/conversion" conversion "k8s.io/kubernetes/pkg/conversion"
runtime "k8s.io/kubernetes/pkg/runtime" runtime "k8s.io/kubernetes/pkg/runtime"
types "k8s.io/kubernetes/pkg/types"
) )
func init() { func init() {
@ -536,13 +534,7 @@ func Convert_api_Capabilities_To_v1_Capabilities(in *api.Capabilities, out *Capa
} }
func autoConvert_v1_CephFSVolumeSource_To_api_CephFSVolumeSource(in *CephFSVolumeSource, out *api.CephFSVolumeSource, s conversion.Scope) error { func autoConvert_v1_CephFSVolumeSource_To_api_CephFSVolumeSource(in *CephFSVolumeSource, out *api.CephFSVolumeSource, s conversion.Scope) error {
if in.Monitors != nil { out.Monitors = in.Monitors
in, out := &in.Monitors, &out.Monitors
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Monitors = nil
}
out.Path = in.Path out.Path = in.Path
out.User = in.User out.User = in.User
out.SecretFile = in.SecretFile out.SecretFile = in.SecretFile
@ -564,13 +556,7 @@ func Convert_v1_CephFSVolumeSource_To_api_CephFSVolumeSource(in *CephFSVolumeSou
} }
func autoConvert_api_CephFSVolumeSource_To_v1_CephFSVolumeSource(in *api.CephFSVolumeSource, out *CephFSVolumeSource, s conversion.Scope) error { func autoConvert_api_CephFSVolumeSource_To_v1_CephFSVolumeSource(in *api.CephFSVolumeSource, out *CephFSVolumeSource, s conversion.Scope) error {
if in.Monitors != nil { out.Monitors = in.Monitors
in, out := &in.Monitors, &out.Monitors
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Monitors = nil
}
out.Path = in.Path out.Path = in.Path
out.User = in.User out.User = in.User
out.SecretFile = in.SecretFile out.SecretFile = in.SecretFile
@ -745,15 +731,7 @@ func autoConvert_v1_ConfigMap_To_api_ConfigMap(in *ConfigMap, out *api.ConfigMap
if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil {
return err return err
} }
if in.Data != nil { out.Data = in.Data
in, out := &in.Data, &out.Data
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
} else {
out.Data = nil
}
return nil return nil
} }
@ -768,15 +746,7 @@ func autoConvert_api_ConfigMap_To_v1_ConfigMap(in *api.ConfigMap, out *ConfigMap
if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil {
return err return err
} }
if in.Data != nil { out.Data = in.Data
in, out := &in.Data, &out.Data
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
} else {
out.Data = nil
}
return nil return nil
} }
@ -906,20 +876,8 @@ func autoConvert_v1_Container_To_api_Container(in *Container, out *api.Container
SetDefaults_Container(in) SetDefaults_Container(in)
out.Name = in.Name out.Name = in.Name
out.Image = in.Image out.Image = in.Image
if in.Command != nil { out.Command = in.Command
in, out := &in.Command, &out.Command out.Args = in.Args
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Command = nil
}
if in.Args != nil {
in, out := &in.Args, &out.Args
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Args = nil
}
out.WorkingDir = in.WorkingDir out.WorkingDir = in.WorkingDir
if in.Ports != nil { if in.Ports != nil {
in, out := &in.Ports, &out.Ports in, out := &in.Ports, &out.Ports
@ -1008,20 +966,8 @@ func Convert_v1_Container_To_api_Container(in *Container, out *api.Container, s
func autoConvert_api_Container_To_v1_Container(in *api.Container, out *Container, s conversion.Scope) error { func autoConvert_api_Container_To_v1_Container(in *api.Container, out *Container, s conversion.Scope) error {
out.Name = in.Name out.Name = in.Name
out.Image = in.Image out.Image = in.Image
if in.Command != nil { out.Command = in.Command
in, out := &in.Command, &out.Command out.Args = in.Args
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Command = nil
}
if in.Args != nil {
in, out := &in.Args, &out.Args
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Args = nil
}
out.WorkingDir = in.WorkingDir out.WorkingDir = in.WorkingDir
if in.Ports != nil { if in.Ports != nil {
in, out := &in.Ports, &out.Ports in, out := &in.Ports, &out.Ports
@ -1108,13 +1054,7 @@ func Convert_api_Container_To_v1_Container(in *api.Container, out *Container, s
} }
func autoConvert_v1_ContainerImage_To_api_ContainerImage(in *ContainerImage, out *api.ContainerImage, s conversion.Scope) error { func autoConvert_v1_ContainerImage_To_api_ContainerImage(in *ContainerImage, out *api.ContainerImage, s conversion.Scope) error {
if in.Names != nil { out.Names = in.Names
in, out := &in.Names, &out.Names
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Names = nil
}
out.SizeBytes = in.SizeBytes out.SizeBytes = in.SizeBytes
return nil return nil
} }
@ -1124,13 +1064,7 @@ func Convert_v1_ContainerImage_To_api_ContainerImage(in *ContainerImage, out *ap
} }
func autoConvert_api_ContainerImage_To_v1_ContainerImage(in *api.ContainerImage, out *ContainerImage, s conversion.Scope) error { func autoConvert_api_ContainerImage_To_v1_ContainerImage(in *api.ContainerImage, out *ContainerImage, s conversion.Scope) error {
if in.Names != nil { out.Names = in.Names
in, out := &in.Names, &out.Names
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Names = nil
}
out.SizeBytes = in.SizeBytes out.SizeBytes = in.SizeBytes
return nil return nil
} }
@ -1378,13 +1312,7 @@ func autoConvert_v1_DeleteOptions_To_api_DeleteOptions(in *DeleteOptions, out *a
if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err return err
} }
if in.GracePeriodSeconds != nil { out.GracePeriodSeconds = in.GracePeriodSeconds
in, out := &in.GracePeriodSeconds, &out.GracePeriodSeconds
*out = new(int64)
**out = **in
} else {
out.GracePeriodSeconds = nil
}
if in.Preconditions != nil { if in.Preconditions != nil {
in, out := &in.Preconditions, &out.Preconditions in, out := &in.Preconditions, &out.Preconditions
*out = new(api.Preconditions) *out = new(api.Preconditions)
@ -1394,13 +1322,7 @@ func autoConvert_v1_DeleteOptions_To_api_DeleteOptions(in *DeleteOptions, out *a
} else { } else {
out.Preconditions = nil out.Preconditions = nil
} }
if in.OrphanDependents != nil { out.OrphanDependents = in.OrphanDependents
in, out := &in.OrphanDependents, &out.OrphanDependents
*out = new(bool)
**out = **in
} else {
out.OrphanDependents = nil
}
return nil return nil
} }
@ -1412,13 +1334,7 @@ func autoConvert_api_DeleteOptions_To_v1_DeleteOptions(in *api.DeleteOptions, ou
if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err return err
} }
if in.GracePeriodSeconds != nil { out.GracePeriodSeconds = in.GracePeriodSeconds
in, out := &in.GracePeriodSeconds, &out.GracePeriodSeconds
*out = new(int64)
**out = **in
} else {
out.GracePeriodSeconds = nil
}
if in.Preconditions != nil { if in.Preconditions != nil {
in, out := &in.Preconditions, &out.Preconditions in, out := &in.Preconditions, &out.Preconditions
*out = new(Preconditions) *out = new(Preconditions)
@ -1428,13 +1344,7 @@ func autoConvert_api_DeleteOptions_To_v1_DeleteOptions(in *api.DeleteOptions, ou
} else { } else {
out.Preconditions = nil out.Preconditions = nil
} }
if in.OrphanDependents != nil { out.OrphanDependents = in.OrphanDependents
in, out := &in.OrphanDependents, &out.OrphanDependents
*out = new(bool)
**out = **in
} else {
out.OrphanDependents = nil
}
return nil return nil
} }
@ -2052,13 +1962,7 @@ func Convert_api_EventSource_To_v1_EventSource(in *api.EventSource, out *EventSo
} }
func autoConvert_v1_ExecAction_To_api_ExecAction(in *ExecAction, out *api.ExecAction, s conversion.Scope) error { func autoConvert_v1_ExecAction_To_api_ExecAction(in *ExecAction, out *api.ExecAction, s conversion.Scope) error {
if in.Command != nil { out.Command = in.Command
in, out := &in.Command, &out.Command
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Command = nil
}
return nil return nil
} }
@ -2067,13 +1971,7 @@ func Convert_v1_ExecAction_To_api_ExecAction(in *ExecAction, out *api.ExecAction
} }
func autoConvert_api_ExecAction_To_v1_ExecAction(in *api.ExecAction, out *ExecAction, s conversion.Scope) error { func autoConvert_api_ExecAction_To_v1_ExecAction(in *api.ExecAction, out *ExecAction, s conversion.Scope) error {
if in.Command != nil { out.Command = in.Command
in, out := &in.Command, &out.Command
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Command = nil
}
return nil return nil
} }
@ -2108,20 +2006,8 @@ func Convert_api_ExportOptions_To_v1_ExportOptions(in *api.ExportOptions, out *E
} }
func autoConvert_v1_FCVolumeSource_To_api_FCVolumeSource(in *FCVolumeSource, out *api.FCVolumeSource, s conversion.Scope) error { func autoConvert_v1_FCVolumeSource_To_api_FCVolumeSource(in *FCVolumeSource, out *api.FCVolumeSource, s conversion.Scope) error {
if in.TargetWWNs != nil { out.TargetWWNs = in.TargetWWNs
in, out := &in.TargetWWNs, &out.TargetWWNs out.Lun = in.Lun
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.TargetWWNs = nil
}
if in.Lun != nil {
in, out := &in.Lun, &out.Lun
*out = new(int32)
**out = **in
} else {
out.Lun = nil
}
out.FSType = in.FSType out.FSType = in.FSType
out.ReadOnly = in.ReadOnly out.ReadOnly = in.ReadOnly
return nil return nil
@ -2132,20 +2018,8 @@ func Convert_v1_FCVolumeSource_To_api_FCVolumeSource(in *FCVolumeSource, out *ap
} }
func autoConvert_api_FCVolumeSource_To_v1_FCVolumeSource(in *api.FCVolumeSource, out *FCVolumeSource, s conversion.Scope) error { func autoConvert_api_FCVolumeSource_To_v1_FCVolumeSource(in *api.FCVolumeSource, out *FCVolumeSource, s conversion.Scope) error {
if in.TargetWWNs != nil { out.TargetWWNs = in.TargetWWNs
in, out := &in.TargetWWNs, &out.TargetWWNs out.Lun = in.Lun
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.TargetWWNs = nil
}
if in.Lun != nil {
in, out := &in.Lun, &out.Lun
*out = new(int32)
**out = **in
} else {
out.Lun = nil
}
out.FSType = in.FSType out.FSType = in.FSType
out.ReadOnly = in.ReadOnly out.ReadOnly = in.ReadOnly
return nil return nil
@ -2168,15 +2042,7 @@ func autoConvert_v1_FlexVolumeSource_To_api_FlexVolumeSource(in *FlexVolumeSourc
out.SecretRef = nil out.SecretRef = nil
} }
out.ReadOnly = in.ReadOnly out.ReadOnly = in.ReadOnly
if in.Options != nil { out.Options = in.Options
in, out := &in.Options, &out.Options
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
} else {
out.Options = nil
}
return nil return nil
} }
@ -2197,15 +2063,7 @@ func autoConvert_api_FlexVolumeSource_To_v1_FlexVolumeSource(in *api.FlexVolumeS
out.SecretRef = nil out.SecretRef = nil
} }
out.ReadOnly = in.ReadOnly out.ReadOnly = in.ReadOnly
if in.Options != nil { out.Options = in.Options
in, out := &in.Options, &out.Options
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
} else {
out.Options = nil
}
return nil return nil
} }
@ -2842,13 +2700,7 @@ func autoConvert_v1_ListOptions_To_api_ListOptions(in *ListOptions, out *api.Lis
} }
out.Watch = in.Watch out.Watch = in.Watch
out.ResourceVersion = in.ResourceVersion out.ResourceVersion = in.ResourceVersion
if in.TimeoutSeconds != nil { out.TimeoutSeconds = in.TimeoutSeconds
in, out := &in.TimeoutSeconds, &out.TimeoutSeconds
*out = new(int64)
**out = **in
} else {
out.TimeoutSeconds = nil
}
return nil return nil
} }
@ -2868,13 +2720,7 @@ func autoConvert_api_ListOptions_To_v1_ListOptions(in *api.ListOptions, out *Lis
} }
out.Watch = in.Watch out.Watch = in.Watch
out.ResourceVersion = in.ResourceVersion out.ResourceVersion = in.ResourceVersion
if in.TimeoutSeconds != nil { out.TimeoutSeconds = in.TimeoutSeconds
in, out := &in.TimeoutSeconds, &out.TimeoutSeconds
*out = new(int64)
**out = **in
} else {
out.TimeoutSeconds = nil
}
return nil return nil
} }
@ -3413,13 +3259,7 @@ func Convert_api_NodeSelector_To_v1_NodeSelector(in *api.NodeSelector, out *Node
func autoConvert_v1_NodeSelectorRequirement_To_api_NodeSelectorRequirement(in *NodeSelectorRequirement, out *api.NodeSelectorRequirement, s conversion.Scope) error { func autoConvert_v1_NodeSelectorRequirement_To_api_NodeSelectorRequirement(in *NodeSelectorRequirement, out *api.NodeSelectorRequirement, s conversion.Scope) error {
out.Key = in.Key out.Key = in.Key
out.Operator = api.NodeSelectorOperator(in.Operator) out.Operator = api.NodeSelectorOperator(in.Operator)
if in.Values != nil { out.Values = in.Values
in, out := &in.Values, &out.Values
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Values = nil
}
return nil return nil
} }
@ -3430,13 +3270,7 @@ func Convert_v1_NodeSelectorRequirement_To_api_NodeSelectorRequirement(in *NodeS
func autoConvert_api_NodeSelectorRequirement_To_v1_NodeSelectorRequirement(in *api.NodeSelectorRequirement, out *NodeSelectorRequirement, s conversion.Scope) error { func autoConvert_api_NodeSelectorRequirement_To_v1_NodeSelectorRequirement(in *api.NodeSelectorRequirement, out *NodeSelectorRequirement, s conversion.Scope) error {
out.Key = in.Key out.Key = in.Key
out.Operator = NodeSelectorOperator(in.Operator) out.Operator = NodeSelectorOperator(in.Operator)
if in.Values != nil { out.Values = in.Values
in, out := &in.Values, &out.Values
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Values = nil
}
return nil return nil
} }
@ -3703,40 +3537,10 @@ func autoConvert_v1_ObjectMeta_To_api_ObjectMeta(in *ObjectMeta, out *api.Object
if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.CreationTimestamp, &out.CreationTimestamp, s); err != nil { if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.CreationTimestamp, &out.CreationTimestamp, s); err != nil {
return err return err
} }
if in.DeletionTimestamp != nil { out.DeletionTimestamp = in.DeletionTimestamp
in, out := &in.DeletionTimestamp, &out.DeletionTimestamp out.DeletionGracePeriodSeconds = in.DeletionGracePeriodSeconds
*out = new(unversioned.Time) out.Labels = in.Labels
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil { out.Annotations = in.Annotations
return err
}
} else {
out.DeletionTimestamp = nil
}
if in.DeletionGracePeriodSeconds != nil {
in, out := &in.DeletionGracePeriodSeconds, &out.DeletionGracePeriodSeconds
*out = new(int64)
**out = **in
} else {
out.DeletionGracePeriodSeconds = nil
}
if in.Labels != nil {
in, out := &in.Labels, &out.Labels
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
} else {
out.Labels = nil
}
if in.Annotations != nil {
in, out := &in.Annotations, &out.Annotations
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
} else {
out.Annotations = nil
}
if in.OwnerReferences != nil { if in.OwnerReferences != nil {
in, out := &in.OwnerReferences, &out.OwnerReferences in, out := &in.OwnerReferences, &out.OwnerReferences
*out = make([]api.OwnerReference, len(*in)) *out = make([]api.OwnerReference, len(*in))
@ -3748,13 +3552,7 @@ func autoConvert_v1_ObjectMeta_To_api_ObjectMeta(in *ObjectMeta, out *api.Object
} else { } else {
out.OwnerReferences = nil out.OwnerReferences = nil
} }
if in.Finalizers != nil { out.Finalizers = in.Finalizers
in, out := &in.Finalizers, &out.Finalizers
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Finalizers = nil
}
return nil return nil
} }
@ -3773,40 +3571,10 @@ func autoConvert_api_ObjectMeta_To_v1_ObjectMeta(in *api.ObjectMeta, out *Object
if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.CreationTimestamp, &out.CreationTimestamp, s); err != nil { if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.CreationTimestamp, &out.CreationTimestamp, s); err != nil {
return err return err
} }
if in.DeletionTimestamp != nil { out.DeletionTimestamp = in.DeletionTimestamp
in, out := &in.DeletionTimestamp, &out.DeletionTimestamp out.DeletionGracePeriodSeconds = in.DeletionGracePeriodSeconds
*out = new(unversioned.Time) out.Labels = in.Labels
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil { out.Annotations = in.Annotations
return err
}
} else {
out.DeletionTimestamp = nil
}
if in.DeletionGracePeriodSeconds != nil {
in, out := &in.DeletionGracePeriodSeconds, &out.DeletionGracePeriodSeconds
*out = new(int64)
**out = **in
} else {
out.DeletionGracePeriodSeconds = nil
}
if in.Labels != nil {
in, out := &in.Labels, &out.Labels
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
} else {
out.Labels = nil
}
if in.Annotations != nil {
in, out := &in.Annotations, &out.Annotations
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
} else {
out.Annotations = nil
}
if in.OwnerReferences != nil { if in.OwnerReferences != nil {
in, out := &in.OwnerReferences, &out.OwnerReferences in, out := &in.OwnerReferences, &out.OwnerReferences
*out = make([]OwnerReference, len(*in)) *out = make([]OwnerReference, len(*in))
@ -3818,13 +3586,7 @@ func autoConvert_api_ObjectMeta_To_v1_ObjectMeta(in *api.ObjectMeta, out *Object
} else { } else {
out.OwnerReferences = nil out.OwnerReferences = nil
} }
if in.Finalizers != nil { out.Finalizers = in.Finalizers
in, out := &in.Finalizers, &out.Finalizers
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Finalizers = nil
}
return nil return nil
} }
@ -4642,23 +4404,8 @@ func Convert_api_PodAffinity_To_v1_PodAffinity(in *api.PodAffinity, out *PodAffi
} }
func autoConvert_v1_PodAffinityTerm_To_api_PodAffinityTerm(in *PodAffinityTerm, out *api.PodAffinityTerm, s conversion.Scope) error { func autoConvert_v1_PodAffinityTerm_To_api_PodAffinityTerm(in *PodAffinityTerm, out *api.PodAffinityTerm, s conversion.Scope) error {
if in.LabelSelector != nil { out.LabelSelector = in.LabelSelector
in, out := &in.LabelSelector, &out.LabelSelector out.Namespaces = in.Namespaces
*out = new(unversioned.LabelSelector)
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(*in, *out, 0); err != nil {
return err
}
} else {
out.LabelSelector = nil
}
if in.Namespaces != nil {
in, out := &in.Namespaces, &out.Namespaces
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Namespaces = nil
}
out.TopologyKey = in.TopologyKey out.TopologyKey = in.TopologyKey
return nil return nil
} }
@ -4668,23 +4415,8 @@ func Convert_v1_PodAffinityTerm_To_api_PodAffinityTerm(in *PodAffinityTerm, out
} }
func autoConvert_api_PodAffinityTerm_To_v1_PodAffinityTerm(in *api.PodAffinityTerm, out *PodAffinityTerm, s conversion.Scope) error { func autoConvert_api_PodAffinityTerm_To_v1_PodAffinityTerm(in *api.PodAffinityTerm, out *PodAffinityTerm, s conversion.Scope) error {
if in.LabelSelector != nil { out.LabelSelector = in.LabelSelector
in, out := &in.LabelSelector, &out.LabelSelector out.Namespaces = in.Namespaces
*out = new(unversioned.LabelSelector)
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(*in, *out, 0); err != nil {
return err
}
} else {
out.LabelSelector = nil
}
if in.Namespaces != nil {
in, out := &in.Namespaces, &out.Namespaces
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Namespaces = nil
}
out.TopologyKey = in.TopologyKey out.TopologyKey = in.TopologyKey
return nil return nil
} }
@ -4832,13 +4564,7 @@ func autoConvert_v1_PodExecOptions_To_api_PodExecOptions(in *PodExecOptions, out
out.Stderr = in.Stderr out.Stderr = in.Stderr
out.TTY = in.TTY out.TTY = in.TTY
out.Container = in.Container out.Container = in.Container
if in.Command != nil { out.Command = in.Command
in, out := &in.Command, &out.Command
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Command = nil
}
return nil return nil
} }
@ -4855,13 +4581,7 @@ func autoConvert_api_PodExecOptions_To_v1_PodExecOptions(in *api.PodExecOptions,
out.Stderr = in.Stderr out.Stderr = in.Stderr
out.TTY = in.TTY out.TTY = in.TTY
out.Container = in.Container out.Container = in.Container
if in.Command != nil { out.Command = in.Command
in, out := &in.Command, &out.Command
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Command = nil
}
return nil return nil
} }
@ -4926,37 +4646,11 @@ func autoConvert_v1_PodLogOptions_To_api_PodLogOptions(in *PodLogOptions, out *a
out.Container = in.Container out.Container = in.Container
out.Follow = in.Follow out.Follow = in.Follow
out.Previous = in.Previous out.Previous = in.Previous
if in.SinceSeconds != nil { out.SinceSeconds = in.SinceSeconds
in, out := &in.SinceSeconds, &out.SinceSeconds out.SinceTime = in.SinceTime
*out = new(int64)
**out = **in
} else {
out.SinceSeconds = nil
}
if in.SinceTime != nil {
in, out := &in.SinceTime, &out.SinceTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.SinceTime = nil
}
out.Timestamps = in.Timestamps out.Timestamps = in.Timestamps
if in.TailLines != nil { out.TailLines = in.TailLines
in, out := &in.TailLines, &out.TailLines out.LimitBytes = in.LimitBytes
*out = new(int64)
**out = **in
} else {
out.TailLines = nil
}
if in.LimitBytes != nil {
in, out := &in.LimitBytes, &out.LimitBytes
*out = new(int64)
**out = **in
} else {
out.LimitBytes = nil
}
return nil return nil
} }
@ -4971,37 +4665,11 @@ func autoConvert_api_PodLogOptions_To_v1_PodLogOptions(in *api.PodLogOptions, ou
out.Container = in.Container out.Container = in.Container
out.Follow = in.Follow out.Follow = in.Follow
out.Previous = in.Previous out.Previous = in.Previous
if in.SinceSeconds != nil { out.SinceSeconds = in.SinceSeconds
in, out := &in.SinceSeconds, &out.SinceSeconds out.SinceTime = in.SinceTime
*out = new(int64)
**out = **in
} else {
out.SinceSeconds = nil
}
if in.SinceTime != nil {
in, out := &in.SinceTime, &out.SinceTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.SinceTime = nil
}
out.Timestamps = in.Timestamps out.Timestamps = in.Timestamps
if in.TailLines != nil { out.TailLines = in.TailLines
in, out := &in.TailLines, &out.TailLines out.LimitBytes = in.LimitBytes
*out = new(int64)
**out = **in
} else {
out.TailLines = nil
}
if in.LimitBytes != nil {
in, out := &in.LimitBytes, &out.LimitBytes
*out = new(int64)
**out = **in
} else {
out.LimitBytes = nil
}
return nil return nil
} }
@ -5043,34 +4711,10 @@ func autoConvert_v1_PodSecurityContext_To_api_PodSecurityContext(in *PodSecurity
} else { } else {
out.SELinuxOptions = nil out.SELinuxOptions = nil
} }
if in.RunAsUser != nil { out.RunAsUser = in.RunAsUser
in, out := &in.RunAsUser, &out.RunAsUser out.RunAsNonRoot = in.RunAsNonRoot
*out = new(int64) out.SupplementalGroups = in.SupplementalGroups
**out = **in out.FSGroup = in.FSGroup
} else {
out.RunAsUser = nil
}
if in.RunAsNonRoot != nil {
in, out := &in.RunAsNonRoot, &out.RunAsNonRoot
*out = new(bool)
**out = **in
} else {
out.RunAsNonRoot = nil
}
if in.SupplementalGroups != nil {
in, out := &in.SupplementalGroups, &out.SupplementalGroups
*out = make([]int64, len(*in))
copy(*out, *in)
} else {
out.SupplementalGroups = nil
}
if in.FSGroup != nil {
in, out := &in.FSGroup, &out.FSGroup
*out = new(int64)
**out = **in
} else {
out.FSGroup = nil
}
return nil return nil
} }
@ -5109,30 +4753,10 @@ func autoConvert_api_PodSpec_To_v1_PodSpec(in *api.PodSpec, out *PodSpec, s conv
out.Containers = nil out.Containers = nil
} }
out.RestartPolicy = RestartPolicy(in.RestartPolicy) out.RestartPolicy = RestartPolicy(in.RestartPolicy)
if in.TerminationGracePeriodSeconds != nil { out.TerminationGracePeriodSeconds = in.TerminationGracePeriodSeconds
in, out := &in.TerminationGracePeriodSeconds, &out.TerminationGracePeriodSeconds out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds
*out = new(int64)
**out = **in
} else {
out.TerminationGracePeriodSeconds = nil
}
if in.ActiveDeadlineSeconds != nil {
in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds
*out = new(int64)
**out = **in
} else {
out.ActiveDeadlineSeconds = nil
}
out.DNSPolicy = DNSPolicy(in.DNSPolicy) out.DNSPolicy = DNSPolicy(in.DNSPolicy)
if in.NodeSelector != nil { out.NodeSelector = in.NodeSelector
in, out := &in.NodeSelector, &out.NodeSelector
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
} else {
out.NodeSelector = nil
}
out.ServiceAccountName = in.ServiceAccountName out.ServiceAccountName = in.ServiceAccountName
out.NodeName = in.NodeName out.NodeName = in.NodeName
if in.SecurityContext != nil { if in.SecurityContext != nil {
@ -5177,15 +4801,7 @@ func autoConvert_v1_PodStatus_To_api_PodStatus(in *PodStatus, out *api.PodStatus
out.Reason = in.Reason out.Reason = in.Reason
out.HostIP = in.HostIP out.HostIP = in.HostIP
out.PodIP = in.PodIP out.PodIP = in.PodIP
if in.StartTime != nil { out.StartTime = in.StartTime
in, out := &in.StartTime, &out.StartTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.StartTime = nil
}
if in.InitContainerStatuses != nil { if in.InitContainerStatuses != nil {
in, out := &in.InitContainerStatuses, &out.InitContainerStatuses in, out := &in.InitContainerStatuses, &out.InitContainerStatuses
*out = make([]api.ContainerStatus, len(*in)) *out = make([]api.ContainerStatus, len(*in))
@ -5232,15 +4848,7 @@ func autoConvert_api_PodStatus_To_v1_PodStatus(in *api.PodStatus, out *PodStatus
out.Reason = in.Reason out.Reason = in.Reason
out.HostIP = in.HostIP out.HostIP = in.HostIP
out.PodIP = in.PodIP out.PodIP = in.PodIP
if in.StartTime != nil { out.StartTime = in.StartTime
in, out := &in.StartTime, &out.StartTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.StartTime = nil
}
if in.InitContainerStatuses != nil { if in.InitContainerStatuses != nil {
in, out := &in.InitContainerStatuses, &out.InitContainerStatuses in, out := &in.InitContainerStatuses, &out.InitContainerStatuses
*out = make([]ContainerStatus, len(*in)) *out = make([]ContainerStatus, len(*in))
@ -5401,13 +5009,7 @@ func autoConvert_api_PodTemplateSpec_To_v1_PodTemplateSpec(in *api.PodTemplateSp
} }
func autoConvert_v1_Preconditions_To_api_Preconditions(in *Preconditions, out *api.Preconditions, s conversion.Scope) error { func autoConvert_v1_Preconditions_To_api_Preconditions(in *Preconditions, out *api.Preconditions, s conversion.Scope) error {
if in.UID != nil { out.UID = in.UID
in, out := &in.UID, &out.UID
*out = new(types.UID)
**out = **in
} else {
out.UID = nil
}
return nil return nil
} }
@ -5416,13 +5018,7 @@ func Convert_v1_Preconditions_To_api_Preconditions(in *Preconditions, out *api.P
} }
func autoConvert_api_Preconditions_To_v1_Preconditions(in *api.Preconditions, out *Preconditions, s conversion.Scope) error { func autoConvert_api_Preconditions_To_v1_Preconditions(in *api.Preconditions, out *Preconditions, s conversion.Scope) error {
if in.UID != nil { out.UID = in.UID
in, out := &in.UID, &out.UID
*out = new(types.UID)
**out = **in
} else {
out.UID = nil
}
return nil return nil
} }
@ -5488,13 +5084,7 @@ func Convert_api_Probe_To_v1_Probe(in *api.Probe, out *Probe, s conversion.Scope
} }
func autoConvert_v1_RBDVolumeSource_To_api_RBDVolumeSource(in *RBDVolumeSource, out *api.RBDVolumeSource, s conversion.Scope) error { func autoConvert_v1_RBDVolumeSource_To_api_RBDVolumeSource(in *RBDVolumeSource, out *api.RBDVolumeSource, s conversion.Scope) error {
if in.CephMonitors != nil { out.CephMonitors = in.CephMonitors
in, out := &in.CephMonitors, &out.CephMonitors
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.CephMonitors = nil
}
out.RBDImage = in.RBDImage out.RBDImage = in.RBDImage
out.FSType = in.FSType out.FSType = in.FSType
out.RBDPool = in.RBDPool out.RBDPool = in.RBDPool
@ -5518,13 +5108,7 @@ func Convert_v1_RBDVolumeSource_To_api_RBDVolumeSource(in *RBDVolumeSource, out
} }
func autoConvert_api_RBDVolumeSource_To_v1_RBDVolumeSource(in *api.RBDVolumeSource, out *RBDVolumeSource, s conversion.Scope) error { func autoConvert_api_RBDVolumeSource_To_v1_RBDVolumeSource(in *api.RBDVolumeSource, out *RBDVolumeSource, s conversion.Scope) error {
if in.CephMonitors != nil { out.CephMonitors = in.CephMonitors
in, out := &in.CephMonitors, &out.CephMonitors
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.CephMonitors = nil
}
out.RBDImage = in.RBDImage out.RBDImage = in.RBDImage
out.FSType = in.FSType out.FSType = in.FSType
out.RBDPool = in.RBDPool out.RBDPool = in.RBDPool
@ -5990,19 +5574,7 @@ func autoConvert_v1_Secret_To_api_Secret(in *Secret, out *api.Secret, s conversi
if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil {
return err return err
} }
if in.Data != nil { out.Data = in.Data
in, out := &in.Data, &out.Data
*out = make(map[string][]byte, len(*in))
for key, val := range *in {
newVal := new([]byte)
if err := conversion.Convert_Slice_byte_To_Slice_byte(&val, newVal, s); err != nil {
return err
}
(*out)[key] = *newVal
}
} else {
out.Data = nil
}
out.Type = api.SecretType(in.Type) out.Type = api.SecretType(in.Type)
return nil return nil
} }
@ -6018,19 +5590,7 @@ func autoConvert_api_Secret_To_v1_Secret(in *api.Secret, out *Secret, s conversi
if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil {
return err return err
} }
if in.Data != nil { out.Data = in.Data
in, out := &in.Data, &out.Data
*out = make(map[string][]byte, len(*in))
for key, val := range *in {
newVal := new([]byte)
if err := conversion.Convert_Slice_byte_To_Slice_byte(&val, newVal, s); err != nil {
return err
}
(*out)[key] = *newVal
}
} else {
out.Data = nil
}
out.Type = SecretType(in.Type) out.Type = SecretType(in.Type)
return nil return nil
} }
@ -6163,13 +5723,7 @@ func autoConvert_v1_SecurityContext_To_api_SecurityContext(in *SecurityContext,
} else { } else {
out.Capabilities = nil out.Capabilities = nil
} }
if in.Privileged != nil { out.Privileged = in.Privileged
in, out := &in.Privileged, &out.Privileged
*out = new(bool)
**out = **in
} else {
out.Privileged = nil
}
if in.SELinuxOptions != nil { if in.SELinuxOptions != nil {
in, out := &in.SELinuxOptions, &out.SELinuxOptions in, out := &in.SELinuxOptions, &out.SELinuxOptions
*out = new(api.SELinuxOptions) *out = new(api.SELinuxOptions)
@ -6179,27 +5733,9 @@ func autoConvert_v1_SecurityContext_To_api_SecurityContext(in *SecurityContext,
} else { } else {
out.SELinuxOptions = nil out.SELinuxOptions = nil
} }
if in.RunAsUser != nil { out.RunAsUser = in.RunAsUser
in, out := &in.RunAsUser, &out.RunAsUser out.RunAsNonRoot = in.RunAsNonRoot
*out = new(int64) out.ReadOnlyRootFilesystem = in.ReadOnlyRootFilesystem
**out = **in
} else {
out.RunAsUser = nil
}
if in.RunAsNonRoot != nil {
in, out := &in.RunAsNonRoot, &out.RunAsNonRoot
*out = new(bool)
**out = **in
} else {
out.RunAsNonRoot = nil
}
if in.ReadOnlyRootFilesystem != nil {
in, out := &in.ReadOnlyRootFilesystem, &out.ReadOnlyRootFilesystem
*out = new(bool)
**out = **in
} else {
out.ReadOnlyRootFilesystem = nil
}
return nil return nil
} }
@ -6217,13 +5753,7 @@ func autoConvert_api_SecurityContext_To_v1_SecurityContext(in *api.SecurityConte
} else { } else {
out.Capabilities = nil out.Capabilities = nil
} }
if in.Privileged != nil { out.Privileged = in.Privileged
in, out := &in.Privileged, &out.Privileged
*out = new(bool)
**out = **in
} else {
out.Privileged = nil
}
if in.SELinuxOptions != nil { if in.SELinuxOptions != nil {
in, out := &in.SELinuxOptions, &out.SELinuxOptions in, out := &in.SELinuxOptions, &out.SELinuxOptions
*out = new(SELinuxOptions) *out = new(SELinuxOptions)
@ -6233,27 +5763,9 @@ func autoConvert_api_SecurityContext_To_v1_SecurityContext(in *api.SecurityConte
} else { } else {
out.SELinuxOptions = nil out.SELinuxOptions = nil
} }
if in.RunAsUser != nil { out.RunAsUser = in.RunAsUser
in, out := &in.RunAsUser, &out.RunAsUser out.RunAsNonRoot = in.RunAsNonRoot
*out = new(int64) out.ReadOnlyRootFilesystem = in.ReadOnlyRootFilesystem
**out = **in
} else {
out.RunAsUser = nil
}
if in.RunAsNonRoot != nil {
in, out := &in.RunAsNonRoot, &out.RunAsNonRoot
*out = new(bool)
**out = **in
} else {
out.RunAsNonRoot = nil
}
if in.ReadOnlyRootFilesystem != nil {
in, out := &in.ReadOnlyRootFilesystem, &out.ReadOnlyRootFilesystem
*out = new(bool)
**out = **in
} else {
out.ReadOnlyRootFilesystem = nil
}
return nil return nil
} }
@ -6568,33 +6080,13 @@ func autoConvert_v1_ServiceSpec_To_api_ServiceSpec(in *ServiceSpec, out *api.Ser
} else { } else {
out.Ports = nil out.Ports = nil
} }
if in.Selector != nil { out.Selector = in.Selector
in, out := &in.Selector, &out.Selector
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
} else {
out.Selector = nil
}
out.ClusterIP = in.ClusterIP out.ClusterIP = in.ClusterIP
out.Type = api.ServiceType(in.Type) out.Type = api.ServiceType(in.Type)
if in.ExternalIPs != nil { out.ExternalIPs = in.ExternalIPs
in, out := &in.ExternalIPs, &out.ExternalIPs
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.ExternalIPs = nil
}
out.SessionAffinity = api.ServiceAffinity(in.SessionAffinity) out.SessionAffinity = api.ServiceAffinity(in.SessionAffinity)
out.LoadBalancerIP = in.LoadBalancerIP out.LoadBalancerIP = in.LoadBalancerIP
if in.LoadBalancerSourceRanges != nil { out.LoadBalancerSourceRanges = in.LoadBalancerSourceRanges
in, out := &in.LoadBalancerSourceRanges, &out.LoadBalancerSourceRanges
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.LoadBalancerSourceRanges = nil
}
return nil return nil
} }
@ -6611,32 +6103,12 @@ func autoConvert_api_ServiceSpec_To_v1_ServiceSpec(in *api.ServiceSpec, out *Ser
} else { } else {
out.Ports = nil out.Ports = nil
} }
if in.Selector != nil { out.Selector = in.Selector
in, out := &in.Selector, &out.Selector
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
} else {
out.Selector = nil
}
out.ClusterIP = in.ClusterIP out.ClusterIP = in.ClusterIP
if in.ExternalIPs != nil { out.ExternalIPs = in.ExternalIPs
in, out := &in.ExternalIPs, &out.ExternalIPs
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.ExternalIPs = nil
}
out.LoadBalancerIP = in.LoadBalancerIP out.LoadBalancerIP = in.LoadBalancerIP
out.SessionAffinity = ServiceAffinity(in.SessionAffinity) out.SessionAffinity = ServiceAffinity(in.SessionAffinity)
if in.LoadBalancerSourceRanges != nil { out.LoadBalancerSourceRanges = in.LoadBalancerSourceRanges
in, out := &in.LoadBalancerSourceRanges, &out.LoadBalancerSourceRanges
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.LoadBalancerSourceRanges = nil
}
return nil return nil
} }

View File

@ -204,8 +204,8 @@ func TestResourceListConversion(t *testing.T) {
}, },
} }
output := api.ResourceList{}
for i, test := range tests { for i, test := range tests {
output := api.ResourceList{}
err := api.Scheme.Convert(&test.input, &output) err := api.Scheme.Convert(&test.input, &output)
if err != nil { if err != nil {
t.Fatalf("unexpected error for case %d: %v", i, err) t.Fatalf("unexpected error for case %d: %v", i, err)

View File

@ -136,13 +136,7 @@ func Convert_apps_PetSetList_To_v1alpha1_PetSetList(in *apps.PetSetList, out *Pe
} }
func autoConvert_v1alpha1_PetSetStatus_To_apps_PetSetStatus(in *PetSetStatus, out *apps.PetSetStatus, s conversion.Scope) error { func autoConvert_v1alpha1_PetSetStatus_To_apps_PetSetStatus(in *PetSetStatus, out *apps.PetSetStatus, s conversion.Scope) error {
if in.ObservedGeneration != nil { out.ObservedGeneration = in.ObservedGeneration
in, out := &in.ObservedGeneration, &out.ObservedGeneration
*out = new(int64)
**out = **in
} else {
out.ObservedGeneration = nil
}
out.Replicas = int(in.Replicas) out.Replicas = int(in.Replicas)
return nil return nil
} }
@ -152,13 +146,7 @@ func Convert_v1alpha1_PetSetStatus_To_apps_PetSetStatus(in *PetSetStatus, out *a
} }
func autoConvert_apps_PetSetStatus_To_v1alpha1_PetSetStatus(in *apps.PetSetStatus, out *PetSetStatus, s conversion.Scope) error { func autoConvert_apps_PetSetStatus_To_v1alpha1_PetSetStatus(in *apps.PetSetStatus, out *PetSetStatus, s conversion.Scope) error {
if in.ObservedGeneration != nil { out.ObservedGeneration = in.ObservedGeneration
in, out := &in.ObservedGeneration, &out.ObservedGeneration
*out = new(int64)
**out = **in
} else {
out.ObservedGeneration = nil
}
out.Replicas = int32(in.Replicas) out.Replicas = int32(in.Replicas)
return nil return nil
} }

View File

@ -121,27 +121,8 @@ func Convert_authenticationk8sio_TokenReviewStatus_To_v1beta1_TokenReviewStatus(
func autoConvert_v1beta1_UserInfo_To_authenticationk8sio_UserInfo(in *UserInfo, out *authentication_k8s_io.UserInfo, s conversion.Scope) error { func autoConvert_v1beta1_UserInfo_To_authenticationk8sio_UserInfo(in *UserInfo, out *authentication_k8s_io.UserInfo, s conversion.Scope) error {
out.Username = in.Username out.Username = in.Username
out.UID = in.UID out.UID = in.UID
if in.Groups != nil { out.Groups = in.Groups
in, out := &in.Groups, &out.Groups out.Extra = in.Extra
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Groups = nil
}
if in.Extra != nil {
in, out := &in.Extra, &out.Extra
*out = make(map[string][]string, len(*in))
for key, val := range *in {
newVal := new([]string)
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&val, newVal, 0); err != nil {
return err
}
(*out)[key] = *newVal
}
} else {
out.Extra = nil
}
return nil return nil
} }
@ -152,27 +133,8 @@ func Convert_v1beta1_UserInfo_To_authenticationk8sio_UserInfo(in *UserInfo, out
func autoConvert_authenticationk8sio_UserInfo_To_v1beta1_UserInfo(in *authentication_k8s_io.UserInfo, out *UserInfo, s conversion.Scope) error { func autoConvert_authenticationk8sio_UserInfo_To_v1beta1_UserInfo(in *authentication_k8s_io.UserInfo, out *UserInfo, s conversion.Scope) error {
out.Username = in.Username out.Username = in.Username
out.UID = in.UID out.UID = in.UID
if in.Groups != nil { out.Groups = in.Groups
in, out := &in.Groups, &out.Groups out.Extra = in.Extra
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Groups = nil
}
if in.Extra != nil {
in, out := &in.Extra, &out.Extra
*out = make(map[string][]string, len(*in))
for key, val := range *in {
newVal := new([]string)
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&val, newVal, 0); err != nil {
return err
}
(*out)[key] = *newVal
}
} else {
out.Extra = nil
}
return nil return nil
} }

View File

@ -274,27 +274,8 @@ func autoConvert_v1beta1_SubjectAccessReviewSpec_To_authorization_SubjectAccessR
out.NonResourceAttributes = nil out.NonResourceAttributes = nil
} }
out.User = in.User out.User = in.User
if in.Groups != nil { out.Groups = in.Groups
in, out := &in.Groups, &out.Groups out.Extra = in.Extra
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Groups = nil
}
if in.Extra != nil {
in, out := &in.Extra, &out.Extra
*out = make(map[string][]string, len(*in))
for key, val := range *in {
newVal := new([]string)
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&val, newVal, 0); err != nil {
return err
}
(*out)[key] = *newVal
}
} else {
out.Extra = nil
}
return nil return nil
} }
@ -322,27 +303,8 @@ func autoConvert_authorization_SubjectAccessReviewSpec_To_v1beta1_SubjectAccessR
out.NonResourceAttributes = nil out.NonResourceAttributes = nil
} }
out.User = in.User out.User = in.User
if in.Groups != nil { out.Groups = in.Groups
in, out := &in.Groups, &out.Groups out.Extra = in.Extra
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Groups = nil
}
if in.Extra != nil {
in, out := &in.Extra, &out.Extra
*out = make(map[string][]string, len(*in))
for key, val := range *in {
newVal := new([]string)
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&val, newVal, 0); err != nil {
return err
}
(*out)[key] = *newVal
}
} else {
out.Extra = nil
}
return nil return nil
} }

View File

@ -22,7 +22,6 @@ package v1
import ( import (
api "k8s.io/kubernetes/pkg/api" api "k8s.io/kubernetes/pkg/api"
unversioned "k8s.io/kubernetes/pkg/api/unversioned"
autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling" autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling"
conversion "k8s.io/kubernetes/pkg/conversion" conversion "k8s.io/kubernetes/pkg/conversion"
) )
@ -170,21 +169,9 @@ func autoConvert_v1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAuto
if err := Convert_v1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference(&in.ScaleTargetRef, &out.ScaleTargetRef, s); err != nil { if err := Convert_v1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference(&in.ScaleTargetRef, &out.ScaleTargetRef, s); err != nil {
return err return err
} }
if in.MinReplicas != nil { out.MinReplicas = in.MinReplicas
in, out := &in.MinReplicas, &out.MinReplicas
*out = new(int32)
**out = **in
} else {
out.MinReplicas = nil
}
out.MaxReplicas = in.MaxReplicas out.MaxReplicas = in.MaxReplicas
if in.TargetCPUUtilizationPercentage != nil { out.TargetCPUUtilizationPercentage = in.TargetCPUUtilizationPercentage
in, out := &in.TargetCPUUtilizationPercentage, &out.TargetCPUUtilizationPercentage
*out = new(int32)
**out = **in
} else {
out.TargetCPUUtilizationPercentage = nil
}
return nil return nil
} }
@ -196,21 +183,9 @@ func autoConvert_autoscaling_HorizontalPodAutoscalerSpec_To_v1_HorizontalPodAuto
if err := Convert_autoscaling_CrossVersionObjectReference_To_v1_CrossVersionObjectReference(&in.ScaleTargetRef, &out.ScaleTargetRef, s); err != nil { if err := Convert_autoscaling_CrossVersionObjectReference_To_v1_CrossVersionObjectReference(&in.ScaleTargetRef, &out.ScaleTargetRef, s); err != nil {
return err return err
} }
if in.MinReplicas != nil { out.MinReplicas = in.MinReplicas
in, out := &in.MinReplicas, &out.MinReplicas
*out = new(int32)
**out = **in
} else {
out.MinReplicas = nil
}
out.MaxReplicas = in.MaxReplicas out.MaxReplicas = in.MaxReplicas
if in.TargetCPUUtilizationPercentage != nil { out.TargetCPUUtilizationPercentage = in.TargetCPUUtilizationPercentage
in, out := &in.TargetCPUUtilizationPercentage, &out.TargetCPUUtilizationPercentage
*out = new(int32)
**out = **in
} else {
out.TargetCPUUtilizationPercentage = nil
}
return nil return nil
} }
@ -219,31 +194,11 @@ func Convert_autoscaling_HorizontalPodAutoscalerSpec_To_v1_HorizontalPodAutoscal
} }
func autoConvert_v1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(in *HorizontalPodAutoscalerStatus, out *autoscaling.HorizontalPodAutoscalerStatus, s conversion.Scope) error { func autoConvert_v1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(in *HorizontalPodAutoscalerStatus, out *autoscaling.HorizontalPodAutoscalerStatus, s conversion.Scope) error {
if in.ObservedGeneration != nil { out.ObservedGeneration = in.ObservedGeneration
in, out := &in.ObservedGeneration, &out.ObservedGeneration out.LastScaleTime = in.LastScaleTime
*out = new(int64)
**out = **in
} else {
out.ObservedGeneration = nil
}
if in.LastScaleTime != nil {
in, out := &in.LastScaleTime, &out.LastScaleTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.LastScaleTime = nil
}
out.CurrentReplicas = in.CurrentReplicas out.CurrentReplicas = in.CurrentReplicas
out.DesiredReplicas = in.DesiredReplicas out.DesiredReplicas = in.DesiredReplicas
if in.CurrentCPUUtilizationPercentage != nil { out.CurrentCPUUtilizationPercentage = in.CurrentCPUUtilizationPercentage
in, out := &in.CurrentCPUUtilizationPercentage, &out.CurrentCPUUtilizationPercentage
*out = new(int32)
**out = **in
} else {
out.CurrentCPUUtilizationPercentage = nil
}
return nil return nil
} }
@ -252,31 +207,11 @@ func Convert_v1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutosc
} }
func autoConvert_autoscaling_HorizontalPodAutoscalerStatus_To_v1_HorizontalPodAutoscalerStatus(in *autoscaling.HorizontalPodAutoscalerStatus, out *HorizontalPodAutoscalerStatus, s conversion.Scope) error { func autoConvert_autoscaling_HorizontalPodAutoscalerStatus_To_v1_HorizontalPodAutoscalerStatus(in *autoscaling.HorizontalPodAutoscalerStatus, out *HorizontalPodAutoscalerStatus, s conversion.Scope) error {
if in.ObservedGeneration != nil { out.ObservedGeneration = in.ObservedGeneration
in, out := &in.ObservedGeneration, &out.ObservedGeneration out.LastScaleTime = in.LastScaleTime
*out = new(int64)
**out = **in
} else {
out.ObservedGeneration = nil
}
if in.LastScaleTime != nil {
in, out := &in.LastScaleTime, &out.LastScaleTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.LastScaleTime = nil
}
out.CurrentReplicas = in.CurrentReplicas out.CurrentReplicas = in.CurrentReplicas
out.DesiredReplicas = in.DesiredReplicas out.DesiredReplicas = in.DesiredReplicas
if in.CurrentCPUUtilizationPercentage != nil { out.CurrentCPUUtilizationPercentage = in.CurrentCPUUtilizationPercentage
in, out := &in.CurrentCPUUtilizationPercentage, &out.CurrentCPUUtilizationPercentage
*out = new(int32)
**out = **in
} else {
out.CurrentCPUUtilizationPercentage = nil
}
return nil return nil
} }

View File

@ -180,27 +180,9 @@ func Convert_batch_JobList_To_v1_JobList(in *batch.JobList, out *JobList, s conv
} }
func autoConvert_v1_JobSpec_To_batch_JobSpec(in *JobSpec, out *batch.JobSpec, s conversion.Scope) error { func autoConvert_v1_JobSpec_To_batch_JobSpec(in *JobSpec, out *batch.JobSpec, s conversion.Scope) error {
if in.Parallelism != nil { out.Parallelism = in.Parallelism
in, out := &in.Parallelism, &out.Parallelism out.Completions = in.Completions
*out = new(int32) out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds
**out = **in
} else {
out.Parallelism = nil
}
if in.Completions != nil {
in, out := &in.Completions, &out.Completions
*out = new(int32)
**out = **in
} else {
out.Completions = nil
}
if in.ActiveDeadlineSeconds != nil {
in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds
*out = new(int64)
**out = **in
} else {
out.ActiveDeadlineSeconds = nil
}
if in.Selector != nil { if in.Selector != nil {
in, out := &in.Selector, &out.Selector in, out := &in.Selector, &out.Selector
*out = new(unversioned.LabelSelector) *out = new(unversioned.LabelSelector)
@ -210,13 +192,7 @@ func autoConvert_v1_JobSpec_To_batch_JobSpec(in *JobSpec, out *batch.JobSpec, s
} else { } else {
out.Selector = nil out.Selector = nil
} }
if in.ManualSelector != nil { out.ManualSelector = in.ManualSelector
in, out := &in.ManualSelector, &out.ManualSelector
*out = new(bool)
**out = **in
} else {
out.ManualSelector = nil
}
if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err return err
} }
@ -224,27 +200,9 @@ func autoConvert_v1_JobSpec_To_batch_JobSpec(in *JobSpec, out *batch.JobSpec, s
} }
func autoConvert_batch_JobSpec_To_v1_JobSpec(in *batch.JobSpec, out *JobSpec, s conversion.Scope) error { func autoConvert_batch_JobSpec_To_v1_JobSpec(in *batch.JobSpec, out *JobSpec, s conversion.Scope) error {
if in.Parallelism != nil { out.Parallelism = in.Parallelism
in, out := &in.Parallelism, &out.Parallelism out.Completions = in.Completions
*out = new(int32) out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds
**out = **in
} else {
out.Parallelism = nil
}
if in.Completions != nil {
in, out := &in.Completions, &out.Completions
*out = new(int32)
**out = **in
} else {
out.Completions = nil
}
if in.ActiveDeadlineSeconds != nil {
in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds
*out = new(int64)
**out = **in
} else {
out.ActiveDeadlineSeconds = nil
}
if in.Selector != nil { if in.Selector != nil {
in, out := &in.Selector, &out.Selector in, out := &in.Selector, &out.Selector
*out = new(LabelSelector) *out = new(LabelSelector)
@ -254,13 +212,7 @@ func autoConvert_batch_JobSpec_To_v1_JobSpec(in *batch.JobSpec, out *JobSpec, s
} else { } else {
out.Selector = nil out.Selector = nil
} }
if in.ManualSelector != nil { out.ManualSelector = in.ManualSelector
in, out := &in.ManualSelector, &out.ManualSelector
*out = new(bool)
**out = **in
} else {
out.ManualSelector = nil
}
if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err return err
} }
@ -279,24 +231,8 @@ func autoConvert_v1_JobStatus_To_batch_JobStatus(in *JobStatus, out *batch.JobSt
} else { } else {
out.Conditions = nil out.Conditions = nil
} }
if in.StartTime != nil { out.StartTime = in.StartTime
in, out := &in.StartTime, &out.StartTime out.CompletionTime = in.CompletionTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.StartTime = nil
}
if in.CompletionTime != nil {
in, out := &in.CompletionTime, &out.CompletionTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.CompletionTime = nil
}
out.Active = in.Active out.Active = in.Active
out.Succeeded = in.Succeeded out.Succeeded = in.Succeeded
out.Failed = in.Failed out.Failed = in.Failed
@ -319,24 +255,8 @@ func autoConvert_batch_JobStatus_To_v1_JobStatus(in *batch.JobStatus, out *JobSt
} else { } else {
out.Conditions = nil out.Conditions = nil
} }
if in.StartTime != nil { out.StartTime = in.StartTime
in, out := &in.StartTime, &out.StartTime out.CompletionTime = in.CompletionTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.StartTime = nil
}
if in.CompletionTime != nil {
in, out := &in.CompletionTime, &out.CompletionTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.CompletionTime = nil
}
out.Active = in.Active out.Active = in.Active
out.Succeeded = in.Succeeded out.Succeeded = in.Succeeded
out.Failed = in.Failed out.Failed = in.Failed
@ -348,15 +268,7 @@ func Convert_batch_JobStatus_To_v1_JobStatus(in *batch.JobStatus, out *JobStatus
} }
func autoConvert_v1_LabelSelector_To_unversioned_LabelSelector(in *LabelSelector, out *unversioned.LabelSelector, s conversion.Scope) error { func autoConvert_v1_LabelSelector_To_unversioned_LabelSelector(in *LabelSelector, out *unversioned.LabelSelector, s conversion.Scope) error {
if in.MatchLabels != nil { out.MatchLabels = in.MatchLabels
in, out := &in.MatchLabels, &out.MatchLabels
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
} else {
out.MatchLabels = nil
}
if in.MatchExpressions != nil { if in.MatchExpressions != nil {
in, out := &in.MatchExpressions, &out.MatchExpressions in, out := &in.MatchExpressions, &out.MatchExpressions
*out = make([]unversioned.LabelSelectorRequirement, len(*in)) *out = make([]unversioned.LabelSelectorRequirement, len(*in))
@ -376,15 +288,7 @@ func Convert_v1_LabelSelector_To_unversioned_LabelSelector(in *LabelSelector, ou
} }
func autoConvert_unversioned_LabelSelector_To_v1_LabelSelector(in *unversioned.LabelSelector, out *LabelSelector, s conversion.Scope) error { func autoConvert_unversioned_LabelSelector_To_v1_LabelSelector(in *unversioned.LabelSelector, out *LabelSelector, s conversion.Scope) error {
if in.MatchLabels != nil { out.MatchLabels = in.MatchLabels
in, out := &in.MatchLabels, &out.MatchLabels
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
} else {
out.MatchLabels = nil
}
if in.MatchExpressions != nil { if in.MatchExpressions != nil {
in, out := &in.MatchExpressions, &out.MatchExpressions in, out := &in.MatchExpressions, &out.MatchExpressions
*out = make([]LabelSelectorRequirement, len(*in)) *out = make([]LabelSelectorRequirement, len(*in))
@ -406,13 +310,7 @@ func Convert_unversioned_LabelSelector_To_v1_LabelSelector(in *unversioned.Label
func autoConvert_v1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement(in *LabelSelectorRequirement, out *unversioned.LabelSelectorRequirement, s conversion.Scope) error { func autoConvert_v1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement(in *LabelSelectorRequirement, out *unversioned.LabelSelectorRequirement, s conversion.Scope) error {
out.Key = in.Key out.Key = in.Key
out.Operator = unversioned.LabelSelectorOperator(in.Operator) out.Operator = unversioned.LabelSelectorOperator(in.Operator)
if in.Values != nil { out.Values = in.Values
in, out := &in.Values, &out.Values
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Values = nil
}
return nil return nil
} }
@ -423,13 +321,7 @@ func Convert_v1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement
func autoConvert_unversioned_LabelSelectorRequirement_To_v1_LabelSelectorRequirement(in *unversioned.LabelSelectorRequirement, out *LabelSelectorRequirement, s conversion.Scope) error { func autoConvert_unversioned_LabelSelectorRequirement_To_v1_LabelSelectorRequirement(in *unversioned.LabelSelectorRequirement, out *LabelSelectorRequirement, s conversion.Scope) error {
out.Key = in.Key out.Key = in.Key
out.Operator = LabelSelectorOperator(in.Operator) out.Operator = LabelSelectorOperator(in.Operator)
if in.Values != nil { out.Values = in.Values
in, out := &in.Values, &out.Values
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Values = nil
}
return nil return nil
} }

View File

@ -192,27 +192,9 @@ func Convert_batch_JobList_To_v2alpha1_JobList(in *batch.JobList, out *JobList,
} }
func autoConvert_v2alpha1_JobSpec_To_batch_JobSpec(in *JobSpec, out *batch.JobSpec, s conversion.Scope) error { func autoConvert_v2alpha1_JobSpec_To_batch_JobSpec(in *JobSpec, out *batch.JobSpec, s conversion.Scope) error {
if in.Parallelism != nil { out.Parallelism = in.Parallelism
in, out := &in.Parallelism, &out.Parallelism out.Completions = in.Completions
*out = new(int32) out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds
**out = **in
} else {
out.Parallelism = nil
}
if in.Completions != nil {
in, out := &in.Completions, &out.Completions
*out = new(int32)
**out = **in
} else {
out.Completions = nil
}
if in.ActiveDeadlineSeconds != nil {
in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds
*out = new(int64)
**out = **in
} else {
out.ActiveDeadlineSeconds = nil
}
if in.Selector != nil { if in.Selector != nil {
in, out := &in.Selector, &out.Selector in, out := &in.Selector, &out.Selector
*out = new(unversioned.LabelSelector) *out = new(unversioned.LabelSelector)
@ -222,13 +204,7 @@ func autoConvert_v2alpha1_JobSpec_To_batch_JobSpec(in *JobSpec, out *batch.JobSp
} else { } else {
out.Selector = nil out.Selector = nil
} }
if in.ManualSelector != nil { out.ManualSelector = in.ManualSelector
in, out := &in.ManualSelector, &out.ManualSelector
*out = new(bool)
**out = **in
} else {
out.ManualSelector = nil
}
if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err return err
} }
@ -236,27 +212,9 @@ func autoConvert_v2alpha1_JobSpec_To_batch_JobSpec(in *JobSpec, out *batch.JobSp
} }
func autoConvert_batch_JobSpec_To_v2alpha1_JobSpec(in *batch.JobSpec, out *JobSpec, s conversion.Scope) error { func autoConvert_batch_JobSpec_To_v2alpha1_JobSpec(in *batch.JobSpec, out *JobSpec, s conversion.Scope) error {
if in.Parallelism != nil { out.Parallelism = in.Parallelism
in, out := &in.Parallelism, &out.Parallelism out.Completions = in.Completions
*out = new(int32) out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds
**out = **in
} else {
out.Parallelism = nil
}
if in.Completions != nil {
in, out := &in.Completions, &out.Completions
*out = new(int32)
**out = **in
} else {
out.Completions = nil
}
if in.ActiveDeadlineSeconds != nil {
in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds
*out = new(int64)
**out = **in
} else {
out.ActiveDeadlineSeconds = nil
}
if in.Selector != nil { if in.Selector != nil {
in, out := &in.Selector, &out.Selector in, out := &in.Selector, &out.Selector
*out = new(LabelSelector) *out = new(LabelSelector)
@ -266,13 +224,7 @@ func autoConvert_batch_JobSpec_To_v2alpha1_JobSpec(in *batch.JobSpec, out *JobSp
} else { } else {
out.Selector = nil out.Selector = nil
} }
if in.ManualSelector != nil { out.ManualSelector = in.ManualSelector
in, out := &in.ManualSelector, &out.ManualSelector
*out = new(bool)
**out = **in
} else {
out.ManualSelector = nil
}
if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err return err
} }
@ -291,24 +243,8 @@ func autoConvert_v2alpha1_JobStatus_To_batch_JobStatus(in *JobStatus, out *batch
} else { } else {
out.Conditions = nil out.Conditions = nil
} }
if in.StartTime != nil { out.StartTime = in.StartTime
in, out := &in.StartTime, &out.StartTime out.CompletionTime = in.CompletionTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.StartTime = nil
}
if in.CompletionTime != nil {
in, out := &in.CompletionTime, &out.CompletionTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.CompletionTime = nil
}
out.Active = in.Active out.Active = in.Active
out.Succeeded = in.Succeeded out.Succeeded = in.Succeeded
out.Failed = in.Failed out.Failed = in.Failed
@ -331,24 +267,8 @@ func autoConvert_batch_JobStatus_To_v2alpha1_JobStatus(in *batch.JobStatus, out
} else { } else {
out.Conditions = nil out.Conditions = nil
} }
if in.StartTime != nil { out.StartTime = in.StartTime
in, out := &in.StartTime, &out.StartTime out.CompletionTime = in.CompletionTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.StartTime = nil
}
if in.CompletionTime != nil {
in, out := &in.CompletionTime, &out.CompletionTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.CompletionTime = nil
}
out.Active = in.Active out.Active = in.Active
out.Succeeded = in.Succeeded out.Succeeded = in.Succeeded
out.Failed = in.Failed out.Failed = in.Failed
@ -426,15 +346,7 @@ func Convert_batch_JobTemplateSpec_To_v2alpha1_JobTemplateSpec(in *batch.JobTemp
} }
func autoConvert_v2alpha1_LabelSelector_To_unversioned_LabelSelector(in *LabelSelector, out *unversioned.LabelSelector, s conversion.Scope) error { func autoConvert_v2alpha1_LabelSelector_To_unversioned_LabelSelector(in *LabelSelector, out *unversioned.LabelSelector, s conversion.Scope) error {
if in.MatchLabels != nil { out.MatchLabels = in.MatchLabels
in, out := &in.MatchLabels, &out.MatchLabels
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
} else {
out.MatchLabels = nil
}
if in.MatchExpressions != nil { if in.MatchExpressions != nil {
in, out := &in.MatchExpressions, &out.MatchExpressions in, out := &in.MatchExpressions, &out.MatchExpressions
*out = make([]unversioned.LabelSelectorRequirement, len(*in)) *out = make([]unversioned.LabelSelectorRequirement, len(*in))
@ -454,15 +366,7 @@ func Convert_v2alpha1_LabelSelector_To_unversioned_LabelSelector(in *LabelSelect
} }
func autoConvert_unversioned_LabelSelector_To_v2alpha1_LabelSelector(in *unversioned.LabelSelector, out *LabelSelector, s conversion.Scope) error { func autoConvert_unversioned_LabelSelector_To_v2alpha1_LabelSelector(in *unversioned.LabelSelector, out *LabelSelector, s conversion.Scope) error {
if in.MatchLabels != nil { out.MatchLabels = in.MatchLabels
in, out := &in.MatchLabels, &out.MatchLabels
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
} else {
out.MatchLabels = nil
}
if in.MatchExpressions != nil { if in.MatchExpressions != nil {
in, out := &in.MatchExpressions, &out.MatchExpressions in, out := &in.MatchExpressions, &out.MatchExpressions
*out = make([]LabelSelectorRequirement, len(*in)) *out = make([]LabelSelectorRequirement, len(*in))
@ -484,13 +388,7 @@ func Convert_unversioned_LabelSelector_To_v2alpha1_LabelSelector(in *unversioned
func autoConvert_v2alpha1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement(in *LabelSelectorRequirement, out *unversioned.LabelSelectorRequirement, s conversion.Scope) error { func autoConvert_v2alpha1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement(in *LabelSelectorRequirement, out *unversioned.LabelSelectorRequirement, s conversion.Scope) error {
out.Key = in.Key out.Key = in.Key
out.Operator = unversioned.LabelSelectorOperator(in.Operator) out.Operator = unversioned.LabelSelectorOperator(in.Operator)
if in.Values != nil { out.Values = in.Values
in, out := &in.Values, &out.Values
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Values = nil
}
return nil return nil
} }
@ -501,13 +399,7 @@ func Convert_v2alpha1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequi
func autoConvert_unversioned_LabelSelectorRequirement_To_v2alpha1_LabelSelectorRequirement(in *unversioned.LabelSelectorRequirement, out *LabelSelectorRequirement, s conversion.Scope) error { func autoConvert_unversioned_LabelSelectorRequirement_To_v2alpha1_LabelSelectorRequirement(in *unversioned.LabelSelectorRequirement, out *LabelSelectorRequirement, s conversion.Scope) error {
out.Key = in.Key out.Key = in.Key
out.Operator = LabelSelectorOperator(in.Operator) out.Operator = LabelSelectorOperator(in.Operator)
if in.Values != nil { out.Values = in.Values
in, out := &in.Values, &out.Values
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Values = nil
}
return nil return nil
} }
@ -610,13 +502,7 @@ func Convert_batch_ScheduledJobList_To_v2alpha1_ScheduledJobList(in *batch.Sched
func autoConvert_v2alpha1_ScheduledJobSpec_To_batch_ScheduledJobSpec(in *ScheduledJobSpec, out *batch.ScheduledJobSpec, s conversion.Scope) error { func autoConvert_v2alpha1_ScheduledJobSpec_To_batch_ScheduledJobSpec(in *ScheduledJobSpec, out *batch.ScheduledJobSpec, s conversion.Scope) error {
out.Schedule = in.Schedule out.Schedule = in.Schedule
if in.StartingDeadlineSeconds != nil { out.StartingDeadlineSeconds = in.StartingDeadlineSeconds
in, out := &in.StartingDeadlineSeconds, &out.StartingDeadlineSeconds
*out = new(int64)
**out = **in
} else {
out.StartingDeadlineSeconds = nil
}
out.ConcurrencyPolicy = batch.ConcurrencyPolicy(in.ConcurrencyPolicy) out.ConcurrencyPolicy = batch.ConcurrencyPolicy(in.ConcurrencyPolicy)
out.Suspend = in.Suspend out.Suspend = in.Suspend
if err := Convert_v2alpha1_JobTemplateSpec_To_batch_JobTemplateSpec(&in.JobTemplate, &out.JobTemplate, s); err != nil { if err := Convert_v2alpha1_JobTemplateSpec_To_batch_JobTemplateSpec(&in.JobTemplate, &out.JobTemplate, s); err != nil {
@ -631,13 +517,7 @@ func Convert_v2alpha1_ScheduledJobSpec_To_batch_ScheduledJobSpec(in *ScheduledJo
func autoConvert_batch_ScheduledJobSpec_To_v2alpha1_ScheduledJobSpec(in *batch.ScheduledJobSpec, out *ScheduledJobSpec, s conversion.Scope) error { func autoConvert_batch_ScheduledJobSpec_To_v2alpha1_ScheduledJobSpec(in *batch.ScheduledJobSpec, out *ScheduledJobSpec, s conversion.Scope) error {
out.Schedule = in.Schedule out.Schedule = in.Schedule
if in.StartingDeadlineSeconds != nil { out.StartingDeadlineSeconds = in.StartingDeadlineSeconds
in, out := &in.StartingDeadlineSeconds, &out.StartingDeadlineSeconds
*out = new(int64)
**out = **in
} else {
out.StartingDeadlineSeconds = nil
}
out.ConcurrencyPolicy = ConcurrencyPolicy(in.ConcurrencyPolicy) out.ConcurrencyPolicy = ConcurrencyPolicy(in.ConcurrencyPolicy)
out.Suspend = in.Suspend out.Suspend = in.Suspend
if err := Convert_batch_JobTemplateSpec_To_v2alpha1_JobTemplateSpec(&in.JobTemplate, &out.JobTemplate, s); err != nil { if err := Convert_batch_JobTemplateSpec_To_v2alpha1_JobTemplateSpec(&in.JobTemplate, &out.JobTemplate, s); err != nil {
@ -663,15 +543,7 @@ func autoConvert_v2alpha1_ScheduledJobStatus_To_batch_ScheduledJobStatus(in *Sch
} else { } else {
out.Active = nil out.Active = nil
} }
if in.LastScheduleTime != nil { out.LastScheduleTime = in.LastScheduleTime
in, out := &in.LastScheduleTime, &out.LastScheduleTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.LastScheduleTime = nil
}
return nil return nil
} }
@ -692,15 +564,7 @@ func autoConvert_batch_ScheduledJobStatus_To_v2alpha1_ScheduledJobStatus(in *bat
} else { } else {
out.Active = nil out.Active = nil
} }
if in.LastScheduleTime != nil { out.LastScheduleTime = in.LastScheduleTime
in, out := &in.LastScheduleTime, &out.LastScheduleTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.LastScheduleTime = nil
}
return nil return nil
} }

View File

@ -50,39 +50,18 @@ func autoConvert_v1alpha1_KubeProxyConfiguration_To_componentconfig_KubeProxyCon
out.HealthzBindAddress = in.HealthzBindAddress out.HealthzBindAddress = in.HealthzBindAddress
out.HealthzPort = in.HealthzPort out.HealthzPort = in.HealthzPort
out.HostnameOverride = in.HostnameOverride out.HostnameOverride = in.HostnameOverride
if in.IPTablesMasqueradeBit != nil { out.IPTablesMasqueradeBit = in.IPTablesMasqueradeBit
in, out := &in.IPTablesMasqueradeBit, &out.IPTablesMasqueradeBit out.IPTablesSyncPeriod = in.IPTablesSyncPeriod
*out = new(int32)
**out = **in
} else {
out.IPTablesMasqueradeBit = nil
}
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&in.IPTablesSyncPeriod, &out.IPTablesSyncPeriod, 0); err != nil {
return err
}
out.KubeconfigPath = in.KubeconfigPath out.KubeconfigPath = in.KubeconfigPath
out.MasqueradeAll = in.MasqueradeAll out.MasqueradeAll = in.MasqueradeAll
out.Master = in.Master out.Master = in.Master
if in.OOMScoreAdj != nil { out.OOMScoreAdj = in.OOMScoreAdj
in, out := &in.OOMScoreAdj, &out.OOMScoreAdj
*out = new(int32)
**out = **in
} else {
out.OOMScoreAdj = nil
}
out.Mode = componentconfig.ProxyMode(in.Mode) out.Mode = componentconfig.ProxyMode(in.Mode)
out.PortRange = in.PortRange out.PortRange = in.PortRange
out.ResourceContainer = in.ResourceContainer out.ResourceContainer = in.ResourceContainer
// TODO: Inefficient conversion - can we improve it? out.UDPIdleTimeout = in.UDPIdleTimeout
if err := s.Convert(&in.UDPIdleTimeout, &out.UDPIdleTimeout, 0); err != nil {
return err
}
out.ConntrackMax = in.ConntrackMax out.ConntrackMax = in.ConntrackMax
// TODO: Inefficient conversion - can we improve it? out.ConntrackTCPEstablishedTimeout = in.ConntrackTCPEstablishedTimeout
if err := s.Convert(&in.ConntrackTCPEstablishedTimeout, &out.ConntrackTCPEstablishedTimeout, 0); err != nil {
return err
}
return nil return nil
} }
@ -99,39 +78,18 @@ func autoConvert_componentconfig_KubeProxyConfiguration_To_v1alpha1_KubeProxyCon
out.HealthzBindAddress = in.HealthzBindAddress out.HealthzBindAddress = in.HealthzBindAddress
out.HealthzPort = in.HealthzPort out.HealthzPort = in.HealthzPort
out.HostnameOverride = in.HostnameOverride out.HostnameOverride = in.HostnameOverride
if in.IPTablesMasqueradeBit != nil { out.IPTablesMasqueradeBit = in.IPTablesMasqueradeBit
in, out := &in.IPTablesMasqueradeBit, &out.IPTablesMasqueradeBit out.IPTablesSyncPeriod = in.IPTablesSyncPeriod
*out = new(int32)
**out = **in
} else {
out.IPTablesMasqueradeBit = nil
}
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&in.IPTablesSyncPeriod, &out.IPTablesSyncPeriod, 0); err != nil {
return err
}
out.KubeconfigPath = in.KubeconfigPath out.KubeconfigPath = in.KubeconfigPath
out.MasqueradeAll = in.MasqueradeAll out.MasqueradeAll = in.MasqueradeAll
out.Master = in.Master out.Master = in.Master
if in.OOMScoreAdj != nil { out.OOMScoreAdj = in.OOMScoreAdj
in, out := &in.OOMScoreAdj, &out.OOMScoreAdj
*out = new(int32)
**out = **in
} else {
out.OOMScoreAdj = nil
}
out.Mode = ProxyMode(in.Mode) out.Mode = ProxyMode(in.Mode)
out.PortRange = in.PortRange out.PortRange = in.PortRange
out.ResourceContainer = in.ResourceContainer out.ResourceContainer = in.ResourceContainer
// TODO: Inefficient conversion - can we improve it? out.UDPIdleTimeout = in.UDPIdleTimeout
if err := s.Convert(&in.UDPIdleTimeout, &out.UDPIdleTimeout, 0); err != nil {
return err
}
out.ConntrackMax = in.ConntrackMax out.ConntrackMax = in.ConntrackMax
// TODO: Inefficient conversion - can we improve it? out.ConntrackTCPEstablishedTimeout = in.ConntrackTCPEstablishedTimeout
if err := s.Convert(&in.ConntrackTCPEstablishedTimeout, &out.ConntrackTCPEstablishedTimeout, 0); err != nil {
return err
}
return nil return nil
} }
@ -199,18 +157,9 @@ func autoConvert_v1alpha1_LeaderElectionConfiguration_To_componentconfig_LeaderE
if err := api.Convert_Pointer_bool_To_bool(&in.LeaderElect, &out.LeaderElect, s); err != nil { if err := api.Convert_Pointer_bool_To_bool(&in.LeaderElect, &out.LeaderElect, s); err != nil {
return err return err
} }
// TODO: Inefficient conversion - can we improve it? out.LeaseDuration = in.LeaseDuration
if err := s.Convert(&in.LeaseDuration, &out.LeaseDuration, 0); err != nil { out.RenewDeadline = in.RenewDeadline
return err out.RetryPeriod = in.RetryPeriod
}
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&in.RenewDeadline, &out.RenewDeadline, 0); err != nil {
return err
}
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&in.RetryPeriod, &out.RetryPeriod, 0); err != nil {
return err
}
return nil return nil
} }
@ -222,18 +171,9 @@ func autoConvert_componentconfig_LeaderElectionConfiguration_To_v1alpha1_LeaderE
if err := api.Convert_bool_To_Pointer_bool(&in.LeaderElect, &out.LeaderElect, s); err != nil { if err := api.Convert_bool_To_Pointer_bool(&in.LeaderElect, &out.LeaderElect, s); err != nil {
return err return err
} }
// TODO: Inefficient conversion - can we improve it? out.LeaseDuration = in.LeaseDuration
if err := s.Convert(&in.LeaseDuration, &out.LeaseDuration, 0); err != nil { out.RenewDeadline = in.RenewDeadline
return err out.RetryPeriod = in.RetryPeriod
}
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&in.RenewDeadline, &out.RenewDeadline, 0); err != nil {
return err
}
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&in.RetryPeriod, &out.RetryPeriod, 0); err != nil {
return err
}
return nil return nil
} }

View File

@ -28,7 +28,6 @@ import (
batch "k8s.io/kubernetes/pkg/apis/batch" batch "k8s.io/kubernetes/pkg/apis/batch"
extensions "k8s.io/kubernetes/pkg/apis/extensions" extensions "k8s.io/kubernetes/pkg/apis/extensions"
conversion "k8s.io/kubernetes/pkg/conversion" conversion "k8s.io/kubernetes/pkg/conversion"
intstr "k8s.io/kubernetes/pkg/util/intstr"
) )
func init() { func init() {
@ -564,15 +563,7 @@ func autoConvert_v1beta1_DeploymentRollback_To_extensions_DeploymentRollback(in
return err return err
} }
out.Name = in.Name out.Name = in.Name
if in.UpdatedAnnotations != nil { out.UpdatedAnnotations = in.UpdatedAnnotations
in, out := &in.UpdatedAnnotations, &out.UpdatedAnnotations
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
} else {
out.UpdatedAnnotations = nil
}
if err := Convert_v1beta1_RollbackConfig_To_extensions_RollbackConfig(&in.RollbackTo, &out.RollbackTo, s); err != nil { if err := Convert_v1beta1_RollbackConfig_To_extensions_RollbackConfig(&in.RollbackTo, &out.RollbackTo, s); err != nil {
return err return err
} }
@ -588,15 +579,7 @@ func autoConvert_extensions_DeploymentRollback_To_v1beta1_DeploymentRollback(in
return err return err
} }
out.Name = in.Name out.Name = in.Name
if in.UpdatedAnnotations != nil { out.UpdatedAnnotations = in.UpdatedAnnotations
in, out := &in.UpdatedAnnotations, &out.UpdatedAnnotations
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
} else {
out.UpdatedAnnotations = nil
}
if err := Convert_extensions_RollbackConfig_To_v1beta1_RollbackConfig(&in.RollbackTo, &out.RollbackTo, s); err != nil { if err := Convert_extensions_RollbackConfig_To_v1beta1_RollbackConfig(&in.RollbackTo, &out.RollbackTo, s); err != nil {
return err return err
} }
@ -857,31 +840,11 @@ func Convert_autoscaling_HorizontalPodAutoscalerList_To_v1beta1_HorizontalPodAut
} }
func autoConvert_v1beta1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(in *HorizontalPodAutoscalerStatus, out *autoscaling.HorizontalPodAutoscalerStatus, s conversion.Scope) error { func autoConvert_v1beta1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(in *HorizontalPodAutoscalerStatus, out *autoscaling.HorizontalPodAutoscalerStatus, s conversion.Scope) error {
if in.ObservedGeneration != nil { out.ObservedGeneration = in.ObservedGeneration
in, out := &in.ObservedGeneration, &out.ObservedGeneration out.LastScaleTime = in.LastScaleTime
*out = new(int64)
**out = **in
} else {
out.ObservedGeneration = nil
}
if in.LastScaleTime != nil {
in, out := &in.LastScaleTime, &out.LastScaleTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.LastScaleTime = nil
}
out.CurrentReplicas = in.CurrentReplicas out.CurrentReplicas = in.CurrentReplicas
out.DesiredReplicas = in.DesiredReplicas out.DesiredReplicas = in.DesiredReplicas
if in.CurrentCPUUtilizationPercentage != nil { out.CurrentCPUUtilizationPercentage = in.CurrentCPUUtilizationPercentage
in, out := &in.CurrentCPUUtilizationPercentage, &out.CurrentCPUUtilizationPercentage
*out = new(int32)
**out = **in
} else {
out.CurrentCPUUtilizationPercentage = nil
}
return nil return nil
} }
@ -890,31 +853,11 @@ func Convert_v1beta1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodA
} }
func autoConvert_autoscaling_HorizontalPodAutoscalerStatus_To_v1beta1_HorizontalPodAutoscalerStatus(in *autoscaling.HorizontalPodAutoscalerStatus, out *HorizontalPodAutoscalerStatus, s conversion.Scope) error { func autoConvert_autoscaling_HorizontalPodAutoscalerStatus_To_v1beta1_HorizontalPodAutoscalerStatus(in *autoscaling.HorizontalPodAutoscalerStatus, out *HorizontalPodAutoscalerStatus, s conversion.Scope) error {
if in.ObservedGeneration != nil { out.ObservedGeneration = in.ObservedGeneration
in, out := &in.ObservedGeneration, &out.ObservedGeneration out.LastScaleTime = in.LastScaleTime
*out = new(int64)
**out = **in
} else {
out.ObservedGeneration = nil
}
if in.LastScaleTime != nil {
in, out := &in.LastScaleTime, &out.LastScaleTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.LastScaleTime = nil
}
out.CurrentReplicas = in.CurrentReplicas out.CurrentReplicas = in.CurrentReplicas
out.DesiredReplicas = in.DesiredReplicas out.DesiredReplicas = in.DesiredReplicas
if in.CurrentCPUUtilizationPercentage != nil { out.CurrentCPUUtilizationPercentage = in.CurrentCPUUtilizationPercentage
in, out := &in.CurrentCPUUtilizationPercentage, &out.CurrentCPUUtilizationPercentage
*out = new(int32)
**out = **in
} else {
out.CurrentCPUUtilizationPercentage = nil
}
return nil return nil
} }
@ -1239,13 +1182,7 @@ func Convert_extensions_IngressStatus_To_v1beta1_IngressStatus(in *extensions.In
} }
func autoConvert_v1beta1_IngressTLS_To_extensions_IngressTLS(in *IngressTLS, out *extensions.IngressTLS, s conversion.Scope) error { func autoConvert_v1beta1_IngressTLS_To_extensions_IngressTLS(in *IngressTLS, out *extensions.IngressTLS, s conversion.Scope) error {
if in.Hosts != nil { out.Hosts = in.Hosts
in, out := &in.Hosts, &out.Hosts
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Hosts = nil
}
out.SecretName = in.SecretName out.SecretName = in.SecretName
return nil return nil
} }
@ -1255,13 +1192,7 @@ func Convert_v1beta1_IngressTLS_To_extensions_IngressTLS(in *IngressTLS, out *ex
} }
func autoConvert_extensions_IngressTLS_To_v1beta1_IngressTLS(in *extensions.IngressTLS, out *IngressTLS, s conversion.Scope) error { func autoConvert_extensions_IngressTLS_To_v1beta1_IngressTLS(in *extensions.IngressTLS, out *IngressTLS, s conversion.Scope) error {
if in.Hosts != nil { out.Hosts = in.Hosts
in, out := &in.Hosts, &out.Hosts
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Hosts = nil
}
out.SecretName = in.SecretName out.SecretName = in.SecretName
return nil return nil
} }
@ -1411,24 +1342,8 @@ func autoConvert_v1beta1_JobStatus_To_batch_JobStatus(in *JobStatus, out *batch.
} else { } else {
out.Conditions = nil out.Conditions = nil
} }
if in.StartTime != nil { out.StartTime = in.StartTime
in, out := &in.StartTime, &out.StartTime out.CompletionTime = in.CompletionTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.StartTime = nil
}
if in.CompletionTime != nil {
in, out := &in.CompletionTime, &out.CompletionTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.CompletionTime = nil
}
out.Active = in.Active out.Active = in.Active
out.Succeeded = in.Succeeded out.Succeeded = in.Succeeded
out.Failed = in.Failed out.Failed = in.Failed
@ -1451,24 +1366,8 @@ func autoConvert_batch_JobStatus_To_v1beta1_JobStatus(in *batch.JobStatus, out *
} else { } else {
out.Conditions = nil out.Conditions = nil
} }
if in.StartTime != nil { out.StartTime = in.StartTime
in, out := &in.StartTime, &out.StartTime out.CompletionTime = in.CompletionTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.StartTime = nil
}
if in.CompletionTime != nil {
in, out := &in.CompletionTime, &out.CompletionTime
*out = new(unversioned.Time)
if err := api.Convert_unversioned_Time_To_unversioned_Time(*in, *out, s); err != nil {
return err
}
} else {
out.CompletionTime = nil
}
out.Active = in.Active out.Active = in.Active
out.Succeeded = in.Succeeded out.Succeeded = in.Succeeded
out.Failed = in.Failed out.Failed = in.Failed
@ -1480,15 +1379,7 @@ func Convert_batch_JobStatus_To_v1beta1_JobStatus(in *batch.JobStatus, out *JobS
} }
func autoConvert_v1beta1_LabelSelector_To_unversioned_LabelSelector(in *LabelSelector, out *unversioned.LabelSelector, s conversion.Scope) error { func autoConvert_v1beta1_LabelSelector_To_unversioned_LabelSelector(in *LabelSelector, out *unversioned.LabelSelector, s conversion.Scope) error {
if in.MatchLabels != nil { out.MatchLabels = in.MatchLabels
in, out := &in.MatchLabels, &out.MatchLabels
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
} else {
out.MatchLabels = nil
}
if in.MatchExpressions != nil { if in.MatchExpressions != nil {
in, out := &in.MatchExpressions, &out.MatchExpressions in, out := &in.MatchExpressions, &out.MatchExpressions
*out = make([]unversioned.LabelSelectorRequirement, len(*in)) *out = make([]unversioned.LabelSelectorRequirement, len(*in))
@ -1508,15 +1399,7 @@ func Convert_v1beta1_LabelSelector_To_unversioned_LabelSelector(in *LabelSelecto
} }
func autoConvert_unversioned_LabelSelector_To_v1beta1_LabelSelector(in *unversioned.LabelSelector, out *LabelSelector, s conversion.Scope) error { func autoConvert_unversioned_LabelSelector_To_v1beta1_LabelSelector(in *unversioned.LabelSelector, out *LabelSelector, s conversion.Scope) error {
if in.MatchLabels != nil { out.MatchLabels = in.MatchLabels
in, out := &in.MatchLabels, &out.MatchLabels
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
} else {
out.MatchLabels = nil
}
if in.MatchExpressions != nil { if in.MatchExpressions != nil {
in, out := &in.MatchExpressions, &out.MatchExpressions in, out := &in.MatchExpressions, &out.MatchExpressions
*out = make([]LabelSelectorRequirement, len(*in)) *out = make([]LabelSelectorRequirement, len(*in))
@ -1538,13 +1421,7 @@ func Convert_unversioned_LabelSelector_To_v1beta1_LabelSelector(in *unversioned.
func autoConvert_v1beta1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement(in *LabelSelectorRequirement, out *unversioned.LabelSelectorRequirement, s conversion.Scope) error { func autoConvert_v1beta1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement(in *LabelSelectorRequirement, out *unversioned.LabelSelectorRequirement, s conversion.Scope) error {
out.Key = in.Key out.Key = in.Key
out.Operator = unversioned.LabelSelectorOperator(in.Operator) out.Operator = unversioned.LabelSelectorOperator(in.Operator)
if in.Values != nil { out.Values = in.Values
in, out := &in.Values, &out.Values
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Values = nil
}
return nil return nil
} }
@ -1555,13 +1432,7 @@ func Convert_v1beta1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequir
func autoConvert_unversioned_LabelSelectorRequirement_To_v1beta1_LabelSelectorRequirement(in *unversioned.LabelSelectorRequirement, out *LabelSelectorRequirement, s conversion.Scope) error { func autoConvert_unversioned_LabelSelectorRequirement_To_v1beta1_LabelSelectorRequirement(in *unversioned.LabelSelectorRequirement, out *LabelSelectorRequirement, s conversion.Scope) error {
out.Key = in.Key out.Key = in.Key
out.Operator = LabelSelectorOperator(in.Operator) out.Operator = LabelSelectorOperator(in.Operator)
if in.Values != nil { out.Values = in.Values
in, out := &in.Values, &out.Values
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Values = nil
}
return nil return nil
} }
@ -1776,15 +1647,7 @@ func autoConvert_v1beta1_NetworkPolicyPort_To_extensions_NetworkPolicyPort(in *N
} else { } else {
out.Protocol = nil out.Protocol = nil
} }
if in.Port != nil { out.Port = in.Port
in, out := &in.Port, &out.Port
*out = new(intstr.IntOrString)
if err := api.Convert_intstr_IntOrString_To_intstr_IntOrString(*in, *out, s); err != nil {
return err
}
} else {
out.Port = nil
}
return nil return nil
} }
@ -1800,15 +1663,7 @@ func autoConvert_extensions_NetworkPolicyPort_To_v1beta1_NetworkPolicyPort(in *e
} else { } else {
out.Protocol = nil out.Protocol = nil
} }
if in.Port != nil { out.Port = in.Port
in, out := &in.Port, &out.Port
*out = new(intstr.IntOrString)
if err := api.Convert_intstr_IntOrString_To_intstr_IntOrString(*in, *out, s); err != nil {
return err
}
} else {
out.Port = nil
}
return nil return nil
} }

View File

@ -22,7 +22,6 @@ package v1alpha1
import ( import (
api "k8s.io/kubernetes/pkg/api" api "k8s.io/kubernetes/pkg/api"
unversioned "k8s.io/kubernetes/pkg/api/unversioned"
policy "k8s.io/kubernetes/pkg/apis/policy" policy "k8s.io/kubernetes/pkg/apis/policy"
conversion "k8s.io/kubernetes/pkg/conversion" conversion "k8s.io/kubernetes/pkg/conversion"
) )
@ -139,16 +138,7 @@ func autoConvert_v1alpha1_PodDisruptionBudgetSpec_To_policy_PodDisruptionBudgetS
if err := api.Convert_intstr_IntOrString_To_intstr_IntOrString(&in.MinAvailable, &out.MinAvailable, s); err != nil { if err := api.Convert_intstr_IntOrString_To_intstr_IntOrString(&in.MinAvailable, &out.MinAvailable, s); err != nil {
return err return err
} }
if in.Selector != nil { out.Selector = in.Selector
in, out := &in.Selector, &out.Selector
*out = new(unversioned.LabelSelector)
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(*in, *out, 0); err != nil {
return err
}
} else {
out.Selector = nil
}
return nil return nil
} }
@ -160,16 +150,7 @@ func autoConvert_policy_PodDisruptionBudgetSpec_To_v1alpha1_PodDisruptionBudgetS
if err := api.Convert_intstr_IntOrString_To_intstr_IntOrString(&in.MinAvailable, &out.MinAvailable, s); err != nil { if err := api.Convert_intstr_IntOrString_To_intstr_IntOrString(&in.MinAvailable, &out.MinAvailable, s); err != nil {
return err return err
} }
if in.Selector != nil { out.Selector = in.Selector
in, out := &in.Selector, &out.Selector
*out = new(unversioned.LabelSelector)
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(*in, *out, 0); err != nil {
return err
}
} else {
out.Selector = nil
}
return nil return nil
} }

View File

@ -268,44 +268,14 @@ func Convert_rbac_ClusterRoleList_To_v1alpha1_ClusterRoleList(in *rbac.ClusterRo
} }
func autoConvert_v1alpha1_PolicyRule_To_rbac_PolicyRule(in *PolicyRule, out *rbac.PolicyRule, s conversion.Scope) error { func autoConvert_v1alpha1_PolicyRule_To_rbac_PolicyRule(in *PolicyRule, out *rbac.PolicyRule, s conversion.Scope) error {
if in.Verbs != nil { out.Verbs = in.Verbs
in, out := &in.Verbs, &out.Verbs
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Verbs = nil
}
if err := runtime.Convert_runtime_RawExtension_To_runtime_Object(&in.AttributeRestrictions, &out.AttributeRestrictions, s); err != nil { if err := runtime.Convert_runtime_RawExtension_To_runtime_Object(&in.AttributeRestrictions, &out.AttributeRestrictions, s); err != nil {
return err return err
} }
if in.APIGroups != nil { out.APIGroups = in.APIGroups
in, out := &in.APIGroups, &out.APIGroups out.Resources = in.Resources
*out = make([]string, len(*in)) out.ResourceNames = in.ResourceNames
copy(*out, *in) out.NonResourceURLs = in.NonResourceURLs
} else {
out.APIGroups = nil
}
if in.Resources != nil {
in, out := &in.Resources, &out.Resources
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Resources = nil
}
if in.ResourceNames != nil {
in, out := &in.ResourceNames, &out.ResourceNames
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.ResourceNames = nil
}
if in.NonResourceURLs != nil {
in, out := &in.NonResourceURLs, &out.NonResourceURLs
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.NonResourceURLs = nil
}
return nil return nil
} }
@ -314,44 +284,14 @@ func Convert_v1alpha1_PolicyRule_To_rbac_PolicyRule(in *PolicyRule, out *rbac.Po
} }
func autoConvert_rbac_PolicyRule_To_v1alpha1_PolicyRule(in *rbac.PolicyRule, out *PolicyRule, s conversion.Scope) error { func autoConvert_rbac_PolicyRule_To_v1alpha1_PolicyRule(in *rbac.PolicyRule, out *PolicyRule, s conversion.Scope) error {
if in.Verbs != nil { out.Verbs = in.Verbs
in, out := &in.Verbs, &out.Verbs
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Verbs = nil
}
if err := runtime.Convert_runtime_Object_To_runtime_RawExtension(&in.AttributeRestrictions, &out.AttributeRestrictions, s); err != nil { if err := runtime.Convert_runtime_Object_To_runtime_RawExtension(&in.AttributeRestrictions, &out.AttributeRestrictions, s); err != nil {
return err return err
} }
if in.APIGroups != nil { out.APIGroups = in.APIGroups
in, out := &in.APIGroups, &out.APIGroups out.Resources = in.Resources
*out = make([]string, len(*in)) out.ResourceNames = in.ResourceNames
copy(*out, *in) out.NonResourceURLs = in.NonResourceURLs
} else {
out.APIGroups = nil
}
if in.Resources != nil {
in, out := &in.Resources, &out.Resources
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.Resources = nil
}
if in.ResourceNames != nil {
in, out := &in.ResourceNames, &out.ResourceNames
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.ResourceNames = nil
}
if in.NonResourceURLs != nil {
in, out := &in.NonResourceURLs, &out.NonResourceURLs
*out = make([]string, len(*in))
copy(*out, *in)
} else {
out.NonResourceURLs = nil
}
return nil return nil
} }

View File

@ -20,10 +20,14 @@ import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"fmt" "fmt"
"reflect"
"sort"
"strings" "strings"
"text/tabwriter" "text/tabwriter"
"github.com/davecgh/go-spew/spew" "github.com/davecgh/go-spew/spew"
"k8s.io/kubernetes/pkg/util/validation/field"
) )
// StringDiff diffs a and b and returns a human readable diff. // StringDiff diffs a and b and returns a human readable diff.
@ -74,6 +78,148 @@ func ObjectGoPrintDiff(a, b interface{}) string {
) )
} }
func ObjectReflectDiff(a, b interface{}) string {
vA, vB := reflect.ValueOf(a), reflect.ValueOf(b)
if vA.Type() != vB.Type() {
return fmt.Sprintf("type A %T and type B %T do not match", a, b)
}
diffs := objectReflectDiff(field.NewPath("object"), vA, vB)
if len(diffs) == 0 {
return ""
}
out := []string{""}
for _, d := range diffs {
out = append(out,
fmt.Sprintf("%s:", d.path),
limit(fmt.Sprintf(" a: %#v", d.a), 80),
limit(fmt.Sprintf(" b: %#v", d.b), 80),
)
}
return strings.Join(out, "\n")
}
func limit(s string, max int) string {
if len(s) > max {
return s[:max]
}
return s
}
func public(s string) bool {
if len(s) == 0 {
return false
}
return s[:1] == strings.ToUpper(s[:1])
}
type diff struct {
path *field.Path
a, b interface{}
}
type orderedDiffs []diff
func (d orderedDiffs) Len() int { return len(d) }
func (d orderedDiffs) Swap(i, j int) { d[i], d[j] = d[j], d[i] }
func (d orderedDiffs) Less(i, j int) bool {
a, b := d[i].path.String(), d[j].path.String()
if a < b {
return true
}
return false
}
func objectReflectDiff(path *field.Path, a, b reflect.Value) []diff {
switch a.Type().Kind() {
case reflect.Struct:
var changes []diff
for i := 0; i < a.Type().NumField(); i++ {
if !public(a.Type().Field(i).Name) {
if reflect.DeepEqual(a.Interface(), b.Interface()) {
return nil
}
return []diff{{path: path, a: fmt.Sprintf("%#v", a), b: fmt.Sprintf("%#v", b)}}
}
if sub := objectReflectDiff(path.Child(a.Type().Field(i).Name), a.Field(i), b.Field(i)); len(sub) > 0 {
changes = append(changes, sub...)
}
}
return changes
case reflect.Ptr:
if a.IsNil() || b.IsNil() {
switch {
case a.IsNil() && b.IsNil():
return nil
case a.IsNil():
return []diff{{path: path, a: nil, b: b.Interface()}}
default:
return []diff{{path: path, a: a.Interface(), b: nil}}
}
}
return objectReflectDiff(path, a.Elem(), b.Elem())
case reflect.Chan:
if !reflect.DeepEqual(a.Interface(), b.Interface()) {
return []diff{{path: path, a: a.Interface(), b: b.Interface()}}
}
return nil
case reflect.Slice:
if reflect.DeepEqual(a, b) {
return nil
}
lA, lB := a.Len(), b.Len()
l := lA
if lB < lA {
l = lB
}
for i := 0; i < l; i++ {
if !reflect.DeepEqual(a.Index(i), b.Index(i)) {
return objectReflectDiff(path.Index(i), a.Index(i), b.Index(i))
}
}
var diffs []diff
for i := l; l < lA; i++ {
diffs = append(diffs, diff{path: path.Index(i), a: a.Index(i), b: nil})
}
for i := l; l < lB; i++ {
diffs = append(diffs, diff{path: path.Index(i), a: nil, b: b.Index(i)})
}
return diffs
case reflect.Map:
if reflect.DeepEqual(a, b) {
return nil
}
aKeys := make(map[interface{}]interface{})
for _, key := range a.MapKeys() {
aKeys[key.Interface()] = a.MapIndex(key).Interface()
}
var missing []diff
for _, key := range b.MapKeys() {
if _, ok := aKeys[key.Interface()]; ok {
delete(aKeys, key.Interface())
if reflect.DeepEqual(a.MapIndex(key).Interface(), b.MapIndex(key).Interface()) {
continue
}
missing = append(missing, diff{path: path.Key(fmt.Sprintf("%s", key.Interface())), a: a.MapIndex(key).Interface(), b: b.MapIndex(key).Interface()})
continue
}
missing = append(missing, diff{path: path.Key(fmt.Sprintf("%s", key.Interface())), a: nil, b: b.MapIndex(key).Interface()})
}
for key, value := range aKeys {
missing = append(missing, diff{path: path.Key(fmt.Sprintf("%s", key)), a: value, b: nil})
}
sort.Sort(orderedDiffs(missing))
return missing
default:
if reflect.DeepEqual(a.Interface(), b.Interface()) {
return nil
}
if !a.CanInterface() {
return []diff{{path: path, a: fmt.Sprintf("%#v", a), b: fmt.Sprintf("%#v", b)}}
}
return []diff{{path: path, a: a.Interface(), b: b.Interface()}}
}
}
// ObjectGoPrintSideBySide prints a and b as textual dumps side by side, // ObjectGoPrintSideBySide prints a and b as textual dumps side by side,
// enabling easy visual scanning for mismatches. // enabling easy visual scanning for mismatches.
func ObjectGoPrintSideBySide(a, b interface{}) string { func ObjectGoPrintSideBySide(a, b interface{}) string {

View File

@ -0,0 +1,39 @@
/*
Copyright 2016 The Kubernetes Authors All rights reserved.
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 diff
import (
"testing"
)
func TestObjectReflectDiff(t *testing.T) {
expect := `
object[other]:
a: 2
b: <nil>
object[test]:
a: 1
b: 2
object[third]:
a: <nil>
b: 3`
a := map[string]int{"test": 1, "other": 2}
b := map[string]int{"test": 2, "third": 3}
if actual := ObjectReflectDiff(a, b); actual != expect {
t.Errorf("unexpected output: %s", actual)
}
}