diff --git a/api/api-rules/codegen_violation_exceptions.list b/api/api-rules/codegen_violation_exceptions.list index 8f1c9408a636a..717d40554d2fc 100644 --- a/api/api-rules/codegen_violation_exceptions.list +++ b/api/api-rules/codegen_violation_exceptions.list @@ -7,3 +7,5 @@ API rule violation: names_match,k8s.io/apimachinery/pkg/apis/meta/v1,StatusCause API rule violation: names_match,k8s.io/apimachinery/pkg/apis/meta/v1,Time,Time API rule violation: names_match,k8s.io/apimachinery/pkg/runtime,Unknown,ContentEncoding API rule violation: names_match,k8s.io/apimachinery/pkg/runtime,Unknown,ContentType +API rule violation: names_match,k8s.io/code-generator/examples/apiserver/apis/example/v1,ConversionCustom,privateField +API rule violation: names_match,k8s.io/code-generator/examples/apiserver/apis/example/v1,ConversionPrivate,privateField diff --git a/staging/src/k8s.io/code-generator/cmd/conversion-gen/generators/conversion.go b/staging/src/k8s.io/code-generator/cmd/conversion-gen/generators/conversion.go index 9d21df8a4d1bb..8ce11392d6cca 100644 --- a/staging/src/k8s.io/code-generator/cmd/conversion-gen/generators/conversion.go +++ b/staging/src/k8s.io/code-generator/cmd/conversion-gen/generators/conversion.go @@ -685,6 +685,16 @@ func (g *genConversion) preexists(inType, outType *types.Type) (*types.Type, boo return function, ok } +func (g *genConversion) preexistsPointers(inType, outType *types.Type) (*types.Type, bool) { + if inType.Kind != types.Pointer { + return nil, false + } + if outType.Kind != types.Pointer { + return nil, false + } + return g.preexists(inType.Elem, outType.Elem) +} + func (g *genConversion) Init(c *generator.Context, w io.Writer) error { klogV := klog.V(6) if klogV.Enabled() { @@ -864,9 +874,16 @@ func (g *genConversion) doMap(inType, outType *types.Type, sw *generator.Snippet } } else { conversionExists := true + conditionalConversionExists := false if function, ok := g.preexists(inType.Elem, outType.Elem); ok { sw.Do("newVal := new($.|raw$)\n", outType.Elem) sw.Do("if err := $.|raw$(&val, newVal, s); err != nil {\n", function) + } else if function, ok := g.preexistsPointers(inType.Elem, outType.Elem); ok { + sw.Do("newVal := new($.|raw$)\n", outType.Elem) + sw.Do("if val != nil {\n", nil) + sw.Do("*newVal = new($.|raw$)\n", outType.Elem.Elem) + sw.Do("if err := $.|raw$(val, *newVal, s); err != nil {\n", function) + conditionalConversionExists = true } else if g.convertibleOnlyWithinPackage(inType.Elem, outType.Elem) { sw.Do("newVal := new($.|raw$)\n", outType.Elem) sw.Do("if err := "+nameTmpl+"(&val, newVal, s); err != nil {\n", argsFromType(inType.Elem, outType.Elem)) @@ -879,6 +896,9 @@ func (g *genConversion) doMap(inType, outType *types.Type, sw *generator.Snippet if conversionExists { sw.Do("return err\n", nil) sw.Do("}\n", nil) + if conditionalConversionExists { + sw.Do("}\n", nil) + } if inType.Key == outType.Key { sw.Do("(*out)[key] = *newVal\n", nil) } else { @@ -908,8 +928,14 @@ func (g *genConversion) doSlice(inType, outType *types.Type, sw *generator.Snipp } } else { conversionExists := true + conditionalConversionExists := false if function, ok := g.preexists(inType.Elem, outType.Elem); ok { sw.Do("if err := $.|raw$(&(*in)[i], &(*out)[i], s); err != nil {\n", function) + } else if function, ok := g.preexistsPointers(inType.Elem, outType.Elem); ok { + sw.Do("if (*in)[i] != nil {\n", nil) + sw.Do("(*out)[i] = new($.|raw$)\n", outType.Elem.Elem) + sw.Do("if err := $.|raw$((*in)[i], (*out)[i], s); err != nil {\n", function) + conditionalConversionExists = true } else if g.convertibleOnlyWithinPackage(inType.Elem, outType.Elem) { sw.Do("if err := "+nameTmpl+"(&(*in)[i], &(*out)[i], s); err != nil {\n", argsFromType(inType.Elem, outType.Elem)) } else { @@ -921,6 +947,9 @@ func (g *genConversion) doSlice(inType, outType *types.Type, sw *generator.Snipp if conversionExists { sw.Do("return err\n", nil) sw.Do("}\n", nil) + if conditionalConversionExists { + sw.Do("}\n", nil) + } } } sw.Do("}\n", nil) @@ -946,6 +975,17 @@ func (g *genConversion) doStruct(inType, outType *types.Type, sw *generator.Snip continue } + if namer.IsPrivateGoName(inMember.Name) && g.outputPackage != inType.Name.Package { + sw.Do("// WARNING: in."+inMember.Name+" is not exported and cannot be read\n", nil) + g.skippedFields[inType] = append(g.skippedFields[inType], inMember.Name) + continue + } + if namer.IsPrivateGoName(outMember.Name) && g.outputPackage != outType.Name.Package { + sw.Do("// WARNING: out."+inMember.Name+" is not exported and cannot be set\n", nil) + g.skippedFields[inType] = append(g.skippedFields[inType], inMember.Name) + continue + } + inMemberType, outMemberType := inMember.Type, outMember.Type // create a copy of both underlying types but give them the top level alias name (since aliases // are assignable) diff --git a/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/types.go b/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/types.go index 6ec6ac6fe754f..72ef357022604 100644 --- a/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/types.go +++ b/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/types.go @@ -62,3 +62,21 @@ type MemoryDifferent struct { AllOf []MemoryDifferent Bool bool // differs from external representation } + +type ConversionPrivate struct { + PublicField string + privateField string +} + +type ConversionCustomContainer struct { + Slice []ConversionCustom + SliceP []*ConversionCustom + Map map[string]ConversionCustom + MapP map[string]*ConversionCustom + Struct ConversionCustom + StructP *ConversionCustom +} +type ConversionCustom struct { + PublicField string + privateField string +} diff --git a/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/v1/conversion.go b/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/v1/conversion.go new file mode 100644 index 0000000000000..3bd40eba2632e --- /dev/null +++ b/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/v1/conversion.go @@ -0,0 +1,42 @@ +/* +Copyright 2025 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + example "k8s.io/code-generator/examples/apiserver/apis/example" +) + +// manually created final conversion function required because the object contains private fields that cannot be auto-converted +func Convert_v1_ConversionPrivate_To_example_ConversionPrivate(in *ConversionPrivate, out *example.ConversionPrivate, scope conversion.Scope) error { + return autoConvert_v1_ConversionPrivate_To_example_ConversionPrivate(in, out, scope) +} + +// manually created final conversion function required because the object contains private fields that cannot be auto-converted +func Convert_example_ConversionPrivate_To_v1_ConversionPrivate(in *example.ConversionPrivate, out *ConversionPrivate, scope conversion.Scope) error { + return autoConvert_example_ConversionPrivate_To_v1_ConversionPrivate(in, out, scope) +} + +// custom conversion function to exercise use of custom functions in slice/map/pointer fields +func Convert_v1_ConversionCustom_To_example_ConversionCustom(in *ConversionCustom, out *example.ConversionCustom, scope conversion.Scope) error { + return autoConvert_v1_ConversionCustom_To_example_ConversionCustom(in, out, scope) +} + +// custom conversion function to exercise use of custom functions in slice/map/pointer fields +func Convert_example_ConversionCustom_To_v1_ConversionCustom(in *example.ConversionCustom, out *ConversionCustom, scope conversion.Scope) error { + return autoConvert_example_ConversionCustom_To_v1_ConversionCustom(in, out, scope) +} diff --git a/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/v1/conversion_test.go b/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/v1/conversion_test.go new file mode 100644 index 0000000000000..27a5e9429f100 --- /dev/null +++ b/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/v1/conversion_test.go @@ -0,0 +1,87 @@ +/* +Copyright 2025 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "reflect" + "testing" + + "k8s.io/code-generator/examples/apiserver/apis/example" +) + +func TestConversion(t *testing.T) { + testcases := []struct { + name string + in *ConversionCustomContainer + }{ + { + name: "nil", + in: &ConversionCustomContainer{}, + }, + { + name: "empty", + in: &ConversionCustomContainer{ + Slice: []ConversionCustom{}, + SliceP: []*ConversionCustom{}, + Map: map[string]ConversionCustom{}, + MapP: map[string]*ConversionCustom{}, + Struct: ConversionCustom{}, + StructP: &ConversionCustom{}, + }, + }, + { + name: "nil_entries", + in: &ConversionCustomContainer{ + Slice: []ConversionCustom{{}}, + SliceP: []*ConversionCustom{nil}, + Map: map[string]ConversionCustom{"key": {}}, + MapP: map[string]*ConversionCustom{"key": nil}, + }, + }, + { + name: "set_entries", + in: &ConversionCustomContainer{ + Slice: []ConversionCustom{{PublicField: "test1"}}, + SliceP: []*ConversionCustom{{PublicField: "test2"}}, + Map: map[string]ConversionCustom{"key": {PublicField: "test3"}}, + MapP: map[string]*ConversionCustom{"key": {PublicField: "test4"}}, + Struct: ConversionCustom{PublicField: "test5"}, + StructP: &ConversionCustom{PublicField: "test6"}, + }, + }, + } + + for _, tc := range testcases { + t.Run(tc.name, func(t *testing.T) { + original := tc.in.DeepCopy() + + out := &example.ConversionCustomContainer{} + if err := Convert_v1_ConversionCustomContainer_To_example_ConversionCustomContainer(tc.in, out, nil); err != nil { + t.Fatal(err) + } + + roundtrip := &ConversionCustomContainer{} + if err := Convert_example_ConversionCustomContainer_To_v1_ConversionCustomContainer(out, roundtrip, nil); err != nil { + t.Fatal(err) + } + + if !reflect.DeepEqual(original, roundtrip) { + t.Fatalf("expected:\n%#v\ngot:\n%#v", original, roundtrip) + } + }) + } +} diff --git a/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/v1/types.go b/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/v1/types.go index ec40584b96796..44226c30f58e2 100644 --- a/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/v1/types.go +++ b/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/v1/types.go @@ -70,3 +70,23 @@ type MemoryDifferent struct { Bool *bool `json:"bool"` // differs from internal representation } + +type ConversionPrivate struct { + PublicField string `json:"publicField"` + privateField string `json:"privateField"` +} + +type ConversionCustomContainer struct { + // +listType=atomic + Slice []ConversionCustom `json:"slice"` + // +listType=atomic + SliceP []*ConversionCustom `json:"sliceP"` + Map map[string]ConversionCustom `json:"map"` + MapP map[string]*ConversionCustom `json:"mapP"` + Struct ConversionCustom `json:"struct"` + StructP *ConversionCustom `json:"structP"` +} +type ConversionCustom struct { + PublicField string `json:"publicField"` + privateField string `json:"privateField"` +} diff --git a/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/v1/zz_generated.conversion.go b/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/v1/zz_generated.conversion.go index 5795e0cc2d9ad..30f6741b98b2e 100644 --- a/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/v1/zz_generated.conversion.go +++ b/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/v1/zz_generated.conversion.go @@ -47,6 +47,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*ConversionCustomContainer)(nil), (*example.ConversionCustomContainer)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_ConversionCustomContainer_To_example_ConversionCustomContainer(a.(*ConversionCustomContainer), b.(*example.ConversionCustomContainer), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*example.ConversionCustomContainer)(nil), (*ConversionCustomContainer)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_example_ConversionCustomContainer_To_v1_ConversionCustomContainer(a.(*example.ConversionCustomContainer), b.(*ConversionCustomContainer), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*MemoryDifferent)(nil), (*example.MemoryDifferent)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1_MemoryDifferent_To_example_MemoryDifferent(a.(*MemoryDifferent), b.(*example.MemoryDifferent), scope) }); err != nil { @@ -97,6 +107,26 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddConversionFunc((*example.ConversionCustom)(nil), (*ConversionCustom)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_example_ConversionCustom_To_v1_ConversionCustom(a.(*example.ConversionCustom), b.(*ConversionCustom), scope) + }); err != nil { + return err + } + if err := s.AddConversionFunc((*example.ConversionPrivate)(nil), (*ConversionPrivate)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_example_ConversionPrivate_To_v1_ConversionPrivate(a.(*example.ConversionPrivate), b.(*ConversionPrivate), scope) + }); err != nil { + return err + } + if err := s.AddConversionFunc((*ConversionCustom)(nil), (*example.ConversionCustom)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_ConversionCustom_To_example_ConversionCustom(a.(*ConversionCustom), b.(*example.ConversionCustom), scope) + }); err != nil { + return err + } + if err := s.AddConversionFunc((*ConversionPrivate)(nil), (*example.ConversionPrivate)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_ConversionPrivate_To_example_ConversionPrivate(a.(*ConversionPrivate), b.(*example.ConversionPrivate), scope) + }); err != nil { + return err + } return nil } @@ -130,6 +160,180 @@ func Convert_example_Conversion_To_v1_Conversion(in *example.Conversion, out *Co return autoConvert_example_Conversion_To_v1_Conversion(in, out, s) } +func autoConvert_v1_ConversionCustom_To_example_ConversionCustom(in *ConversionCustom, out *example.ConversionCustom, s conversion.Scope) error { + out.PublicField = in.PublicField + // WARNING: out.privateField is not exported and cannot be set + return nil +} + +func autoConvert_example_ConversionCustom_To_v1_ConversionCustom(in *example.ConversionCustom, out *ConversionCustom, s conversion.Scope) error { + out.PublicField = in.PublicField + // WARNING: in.privateField is not exported and cannot be read + return nil +} + +func autoConvert_v1_ConversionCustomContainer_To_example_ConversionCustomContainer(in *ConversionCustomContainer, out *example.ConversionCustomContainer, s conversion.Scope) error { + if in.Slice != nil { + in, out := &in.Slice, &out.Slice + *out = make([]example.ConversionCustom, len(*in)) + for i := range *in { + if err := Convert_v1_ConversionCustom_To_example_ConversionCustom(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Slice = nil + } + if in.SliceP != nil { + in, out := &in.SliceP, &out.SliceP + *out = make([]*example.ConversionCustom, len(*in)) + for i := range *in { + if (*in)[i] != nil { + (*out)[i] = new(example.ConversionCustom) + if err := Convert_v1_ConversionCustom_To_example_ConversionCustom((*in)[i], (*out)[i], s); err != nil { + return err + } + } + } + } else { + out.SliceP = nil + } + if in.Map != nil { + in, out := &in.Map, &out.Map + *out = make(map[string]example.ConversionCustom, len(*in)) + for key, val := range *in { + newVal := new(example.ConversionCustom) + if err := Convert_v1_ConversionCustom_To_example_ConversionCustom(&val, newVal, s); err != nil { + return err + } + (*out)[key] = *newVal + } + } else { + out.Map = nil + } + if in.MapP != nil { + in, out := &in.MapP, &out.MapP + *out = make(map[string]*example.ConversionCustom, len(*in)) + for key, val := range *in { + newVal := new(*example.ConversionCustom) + if val != nil { + *newVal = new(example.ConversionCustom) + if err := Convert_v1_ConversionCustom_To_example_ConversionCustom(val, *newVal, s); err != nil { + return err + } + } + (*out)[key] = *newVal + } + } else { + out.MapP = nil + } + if err := Convert_v1_ConversionCustom_To_example_ConversionCustom(&in.Struct, &out.Struct, s); err != nil { + return err + } + if in.StructP != nil { + in, out := &in.StructP, &out.StructP + *out = new(example.ConversionCustom) + if err := Convert_v1_ConversionCustom_To_example_ConversionCustom(*in, *out, s); err != nil { + return err + } + } else { + out.StructP = nil + } + return nil +} + +// Convert_v1_ConversionCustomContainer_To_example_ConversionCustomContainer is an autogenerated conversion function. +func Convert_v1_ConversionCustomContainer_To_example_ConversionCustomContainer(in *ConversionCustomContainer, out *example.ConversionCustomContainer, s conversion.Scope) error { + return autoConvert_v1_ConversionCustomContainer_To_example_ConversionCustomContainer(in, out, s) +} + +func autoConvert_example_ConversionCustomContainer_To_v1_ConversionCustomContainer(in *example.ConversionCustomContainer, out *ConversionCustomContainer, s conversion.Scope) error { + if in.Slice != nil { + in, out := &in.Slice, &out.Slice + *out = make([]ConversionCustom, len(*in)) + for i := range *in { + if err := Convert_example_ConversionCustom_To_v1_ConversionCustom(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Slice = nil + } + if in.SliceP != nil { + in, out := &in.SliceP, &out.SliceP + *out = make([]*ConversionCustom, len(*in)) + for i := range *in { + if (*in)[i] != nil { + (*out)[i] = new(ConversionCustom) + if err := Convert_example_ConversionCustom_To_v1_ConversionCustom((*in)[i], (*out)[i], s); err != nil { + return err + } + } + } + } else { + out.SliceP = nil + } + if in.Map != nil { + in, out := &in.Map, &out.Map + *out = make(map[string]ConversionCustom, len(*in)) + for key, val := range *in { + newVal := new(ConversionCustom) + if err := Convert_example_ConversionCustom_To_v1_ConversionCustom(&val, newVal, s); err != nil { + return err + } + (*out)[key] = *newVal + } + } else { + out.Map = nil + } + if in.MapP != nil { + in, out := &in.MapP, &out.MapP + *out = make(map[string]*ConversionCustom, len(*in)) + for key, val := range *in { + newVal := new(*ConversionCustom) + if val != nil { + *newVal = new(ConversionCustom) + if err := Convert_example_ConversionCustom_To_v1_ConversionCustom(val, *newVal, s); err != nil { + return err + } + } + (*out)[key] = *newVal + } + } else { + out.MapP = nil + } + if err := Convert_example_ConversionCustom_To_v1_ConversionCustom(&in.Struct, &out.Struct, s); err != nil { + return err + } + if in.StructP != nil { + in, out := &in.StructP, &out.StructP + *out = new(ConversionCustom) + if err := Convert_example_ConversionCustom_To_v1_ConversionCustom(*in, *out, s); err != nil { + return err + } + } else { + out.StructP = nil + } + return nil +} + +// Convert_example_ConversionCustomContainer_To_v1_ConversionCustomContainer is an autogenerated conversion function. +func Convert_example_ConversionCustomContainer_To_v1_ConversionCustomContainer(in *example.ConversionCustomContainer, out *ConversionCustomContainer, s conversion.Scope) error { + return autoConvert_example_ConversionCustomContainer_To_v1_ConversionCustomContainer(in, out, s) +} + +func autoConvert_v1_ConversionPrivate_To_example_ConversionPrivate(in *ConversionPrivate, out *example.ConversionPrivate, s conversion.Scope) error { + out.PublicField = in.PublicField + // WARNING: out.privateField is not exported and cannot be set + return nil +} + +func autoConvert_example_ConversionPrivate_To_v1_ConversionPrivate(in *example.ConversionPrivate, out *ConversionPrivate, s conversion.Scope) error { + out.PublicField = in.PublicField + // WARNING: in.privateField is not exported and cannot be read + return nil +} + func autoConvert_v1_MemoryDifferent_To_example_MemoryDifferent(in *MemoryDifferent, out *example.MemoryDifferent, s conversion.Scope) error { if in.Items != nil { in, out := &in.Items, &out.Items diff --git a/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/v1/zz_generated.deepcopy.go index 4966ea006b6ae..4d0ad6cec8a1f 100644 --- a/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/v1/zz_generated.deepcopy.go +++ b/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/v1/zz_generated.deepcopy.go @@ -43,6 +43,98 @@ func (in *Conversion) DeepCopy() *Conversion { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConversionCustom) DeepCopyInto(out *ConversionCustom) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConversionCustom. +func (in *ConversionCustom) DeepCopy() *ConversionCustom { + if in == nil { + return nil + } + out := new(ConversionCustom) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConversionCustomContainer) DeepCopyInto(out *ConversionCustomContainer) { + *out = *in + if in.Slice != nil { + in, out := &in.Slice, &out.Slice + *out = make([]ConversionCustom, len(*in)) + copy(*out, *in) + } + if in.SliceP != nil { + in, out := &in.SliceP, &out.SliceP + *out = make([]*ConversionCustom, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(ConversionCustom) + **out = **in + } + } + } + if in.Map != nil { + in, out := &in.Map, &out.Map + *out = make(map[string]ConversionCustom, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.MapP != nil { + in, out := &in.MapP, &out.MapP + *out = make(map[string]*ConversionCustom, len(*in)) + for key, val := range *in { + var outVal *ConversionCustom + if val == nil { + (*out)[key] = nil + } else { + in, out := &val, &outVal + *out = new(ConversionCustom) + **out = **in + } + (*out)[key] = outVal + } + } + out.Struct = in.Struct + if in.StructP != nil { + in, out := &in.StructP, &out.StructP + *out = new(ConversionCustom) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConversionCustomContainer. +func (in *ConversionCustomContainer) DeepCopy() *ConversionCustomContainer { + if in == nil { + return nil + } + out := new(ConversionCustomContainer) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConversionPrivate) DeepCopyInto(out *ConversionPrivate) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConversionPrivate. +func (in *ConversionPrivate) DeepCopy() *ConversionPrivate { + if in == nil { + return nil + } + out := new(ConversionPrivate) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *MemoryDifferent) DeepCopyInto(out *MemoryDifferent) { *out = *in diff --git a/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/zz_generated.deepcopy.go b/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/zz_generated.deepcopy.go index 6b58e28c87830..a27cd80336dc5 100644 --- a/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/zz_generated.deepcopy.go +++ b/staging/src/k8s.io/code-generator/examples/apiserver/apis/example/zz_generated.deepcopy.go @@ -43,6 +43,98 @@ func (in *Conversion) DeepCopy() *Conversion { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConversionCustom) DeepCopyInto(out *ConversionCustom) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConversionCustom. +func (in *ConversionCustom) DeepCopy() *ConversionCustom { + if in == nil { + return nil + } + out := new(ConversionCustom) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConversionCustomContainer) DeepCopyInto(out *ConversionCustomContainer) { + *out = *in + if in.Slice != nil { + in, out := &in.Slice, &out.Slice + *out = make([]ConversionCustom, len(*in)) + copy(*out, *in) + } + if in.SliceP != nil { + in, out := &in.SliceP, &out.SliceP + *out = make([]*ConversionCustom, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(ConversionCustom) + **out = **in + } + } + } + if in.Map != nil { + in, out := &in.Map, &out.Map + *out = make(map[string]ConversionCustom, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.MapP != nil { + in, out := &in.MapP, &out.MapP + *out = make(map[string]*ConversionCustom, len(*in)) + for key, val := range *in { + var outVal *ConversionCustom + if val == nil { + (*out)[key] = nil + } else { + in, out := &val, &outVal + *out = new(ConversionCustom) + **out = **in + } + (*out)[key] = outVal + } + } + out.Struct = in.Struct + if in.StructP != nil { + in, out := &in.StructP, &out.StructP + *out = new(ConversionCustom) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConversionCustomContainer. +func (in *ConversionCustomContainer) DeepCopy() *ConversionCustomContainer { + if in == nil { + return nil + } + out := new(ConversionCustomContainer) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConversionPrivate) DeepCopyInto(out *ConversionPrivate) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConversionPrivate. +func (in *ConversionPrivate) DeepCopy() *ConversionPrivate { + if in == nil { + return nil + } + out := new(ConversionPrivate) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *MemoryDifferent) DeepCopyInto(out *MemoryDifferent) { *out = *in diff --git a/staging/src/k8s.io/code-generator/examples/apiserver/openapi/zz_generated.openapi.go b/staging/src/k8s.io/code-generator/examples/apiserver/openapi/zz_generated.openapi.go index 18c65f22e685b..3817d17e44a40 100644 --- a/staging/src/k8s.io/code-generator/examples/apiserver/openapi/zz_generated.openapi.go +++ b/staging/src/k8s.io/code-generator/examples/apiserver/openapi/zz_generated.openapi.go @@ -29,74 +29,77 @@ import ( func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenAPIDefinition { return map[string]common.OpenAPIDefinition{ - "k8s.io/apimachinery/pkg/apis/meta/v1.APIGroup": schema_pkg_apis_meta_v1_APIGroup(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.APIGroupList": schema_pkg_apis_meta_v1_APIGroupList(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.APIResource": schema_pkg_apis_meta_v1_APIResource(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.APIResourceList": schema_pkg_apis_meta_v1_APIResourceList(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.APIVersions": schema_pkg_apis_meta_v1_APIVersions(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.ApplyOptions": schema_pkg_apis_meta_v1_ApplyOptions(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.Condition": schema_pkg_apis_meta_v1_Condition(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.CreateOptions": schema_pkg_apis_meta_v1_CreateOptions(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.DeleteOptions": schema_pkg_apis_meta_v1_DeleteOptions(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.Duration": schema_pkg_apis_meta_v1_Duration(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.FieldSelectorRequirement": schema_pkg_apis_meta_v1_FieldSelectorRequirement(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.FieldsV1": schema_pkg_apis_meta_v1_FieldsV1(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.GetOptions": schema_pkg_apis_meta_v1_GetOptions(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.GroupKind": schema_pkg_apis_meta_v1_GroupKind(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.GroupResource": schema_pkg_apis_meta_v1_GroupResource(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.GroupVersion": schema_pkg_apis_meta_v1_GroupVersion(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.GroupVersionForDiscovery": schema_pkg_apis_meta_v1_GroupVersionForDiscovery(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.GroupVersionKind": schema_pkg_apis_meta_v1_GroupVersionKind(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.GroupVersionResource": schema_pkg_apis_meta_v1_GroupVersionResource(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.InternalEvent": schema_pkg_apis_meta_v1_InternalEvent(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector": schema_pkg_apis_meta_v1_LabelSelector(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelectorRequirement": schema_pkg_apis_meta_v1_LabelSelectorRequirement(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.List": schema_pkg_apis_meta_v1_List(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta": schema_pkg_apis_meta_v1_ListMeta(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.ListOptions": schema_pkg_apis_meta_v1_ListOptions(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry": schema_pkg_apis_meta_v1_ManagedFieldsEntry(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.MicroTime": schema_pkg_apis_meta_v1_MicroTime(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta": schema_pkg_apis_meta_v1_ObjectMeta(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.OwnerReference": schema_pkg_apis_meta_v1_OwnerReference(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.PartialObjectMetadata": schema_pkg_apis_meta_v1_PartialObjectMetadata(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.PartialObjectMetadataList": schema_pkg_apis_meta_v1_PartialObjectMetadataList(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.Patch": schema_pkg_apis_meta_v1_Patch(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.PatchOptions": schema_pkg_apis_meta_v1_PatchOptions(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.Preconditions": schema_pkg_apis_meta_v1_Preconditions(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.RootPaths": schema_pkg_apis_meta_v1_RootPaths(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.ServerAddressByClientCIDR": schema_pkg_apis_meta_v1_ServerAddressByClientCIDR(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.Status": schema_pkg_apis_meta_v1_Status(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.StatusCause": schema_pkg_apis_meta_v1_StatusCause(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.StatusDetails": schema_pkg_apis_meta_v1_StatusDetails(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.Table": schema_pkg_apis_meta_v1_Table(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.TableColumnDefinition": schema_pkg_apis_meta_v1_TableColumnDefinition(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.TableOptions": schema_pkg_apis_meta_v1_TableOptions(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.TableRow": schema_pkg_apis_meta_v1_TableRow(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.TableRowCondition": schema_pkg_apis_meta_v1_TableRowCondition(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.Time": schema_pkg_apis_meta_v1_Time(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.Timestamp": schema_pkg_apis_meta_v1_Timestamp(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta": schema_pkg_apis_meta_v1_TypeMeta(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.UpdateOptions": schema_pkg_apis_meta_v1_UpdateOptions(ref), - "k8s.io/apimachinery/pkg/apis/meta/v1.WatchEvent": schema_pkg_apis_meta_v1_WatchEvent(ref), - "k8s.io/apimachinery/pkg/runtime.RawExtension": schema_k8sio_apimachinery_pkg_runtime_RawExtension(ref), - "k8s.io/apimachinery/pkg/runtime.TypeMeta": schema_k8sio_apimachinery_pkg_runtime_TypeMeta(ref), - "k8s.io/apimachinery/pkg/runtime.Unknown": schema_k8sio_apimachinery_pkg_runtime_Unknown(ref), - "k8s.io/apimachinery/pkg/version.Info": schema_k8sio_apimachinery_pkg_version_Info(ref), - "k8s.io/code-generator/examples/apiserver/apis/core/v1.TestType": schema_apiserver_apis_core_v1_TestType(ref), - "k8s.io/code-generator/examples/apiserver/apis/core/v1.TestTypeList": schema_apiserver_apis_core_v1_TestTypeList(ref), - "k8s.io/code-generator/examples/apiserver/apis/core/v1.TestTypeStatus": schema_apiserver_apis_core_v1_TestTypeStatus(ref), - "k8s.io/code-generator/examples/apiserver/apis/example/v1.Conversion": schema_apiserver_apis_example_v1_Conversion(ref), - "k8s.io/code-generator/examples/apiserver/apis/example/v1.MemoryDifferent": schema_apiserver_apis_example_v1_MemoryDifferent(ref), - "k8s.io/code-generator/examples/apiserver/apis/example/v1.MemoryIdentical": schema_apiserver_apis_example_v1_MemoryIdentical(ref), - "k8s.io/code-generator/examples/apiserver/apis/example/v1.TestType": schema_apiserver_apis_example_v1_TestType(ref), - "k8s.io/code-generator/examples/apiserver/apis/example/v1.TestTypeList": schema_apiserver_apis_example_v1_TestTypeList(ref), - "k8s.io/code-generator/examples/apiserver/apis/example/v1.TestTypeStatus": schema_apiserver_apis_example_v1_TestTypeStatus(ref), - "k8s.io/code-generator/examples/apiserver/apis/example2/v1.TestType": schema_apiserver_apis_example2_v1_TestType(ref), - "k8s.io/code-generator/examples/apiserver/apis/example2/v1.TestTypeList": schema_apiserver_apis_example2_v1_TestTypeList(ref), - "k8s.io/code-generator/examples/apiserver/apis/example2/v1.TestTypeStatus": schema_apiserver_apis_example2_v1_TestTypeStatus(ref), - "k8s.io/code-generator/examples/apiserver/apis/example3.io/v1.TestType": schema_apiserver_apis_example3io_v1_TestType(ref), - "k8s.io/code-generator/examples/apiserver/apis/example3.io/v1.TestTypeList": schema_apiserver_apis_example3io_v1_TestTypeList(ref), - "k8s.io/code-generator/examples/apiserver/apis/example3.io/v1.TestTypeStatus": schema_apiserver_apis_example3io_v1_TestTypeStatus(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.APIGroup": schema_pkg_apis_meta_v1_APIGroup(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.APIGroupList": schema_pkg_apis_meta_v1_APIGroupList(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.APIResource": schema_pkg_apis_meta_v1_APIResource(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.APIResourceList": schema_pkg_apis_meta_v1_APIResourceList(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.APIVersions": schema_pkg_apis_meta_v1_APIVersions(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.ApplyOptions": schema_pkg_apis_meta_v1_ApplyOptions(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.Condition": schema_pkg_apis_meta_v1_Condition(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.CreateOptions": schema_pkg_apis_meta_v1_CreateOptions(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.DeleteOptions": schema_pkg_apis_meta_v1_DeleteOptions(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.Duration": schema_pkg_apis_meta_v1_Duration(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.FieldSelectorRequirement": schema_pkg_apis_meta_v1_FieldSelectorRequirement(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.FieldsV1": schema_pkg_apis_meta_v1_FieldsV1(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.GetOptions": schema_pkg_apis_meta_v1_GetOptions(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.GroupKind": schema_pkg_apis_meta_v1_GroupKind(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.GroupResource": schema_pkg_apis_meta_v1_GroupResource(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.GroupVersion": schema_pkg_apis_meta_v1_GroupVersion(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.GroupVersionForDiscovery": schema_pkg_apis_meta_v1_GroupVersionForDiscovery(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.GroupVersionKind": schema_pkg_apis_meta_v1_GroupVersionKind(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.GroupVersionResource": schema_pkg_apis_meta_v1_GroupVersionResource(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.InternalEvent": schema_pkg_apis_meta_v1_InternalEvent(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector": schema_pkg_apis_meta_v1_LabelSelector(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelectorRequirement": schema_pkg_apis_meta_v1_LabelSelectorRequirement(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.List": schema_pkg_apis_meta_v1_List(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta": schema_pkg_apis_meta_v1_ListMeta(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.ListOptions": schema_pkg_apis_meta_v1_ListOptions(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry": schema_pkg_apis_meta_v1_ManagedFieldsEntry(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.MicroTime": schema_pkg_apis_meta_v1_MicroTime(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta": schema_pkg_apis_meta_v1_ObjectMeta(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.OwnerReference": schema_pkg_apis_meta_v1_OwnerReference(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.PartialObjectMetadata": schema_pkg_apis_meta_v1_PartialObjectMetadata(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.PartialObjectMetadataList": schema_pkg_apis_meta_v1_PartialObjectMetadataList(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.Patch": schema_pkg_apis_meta_v1_Patch(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.PatchOptions": schema_pkg_apis_meta_v1_PatchOptions(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.Preconditions": schema_pkg_apis_meta_v1_Preconditions(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.RootPaths": schema_pkg_apis_meta_v1_RootPaths(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.ServerAddressByClientCIDR": schema_pkg_apis_meta_v1_ServerAddressByClientCIDR(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.Status": schema_pkg_apis_meta_v1_Status(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.StatusCause": schema_pkg_apis_meta_v1_StatusCause(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.StatusDetails": schema_pkg_apis_meta_v1_StatusDetails(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.Table": schema_pkg_apis_meta_v1_Table(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.TableColumnDefinition": schema_pkg_apis_meta_v1_TableColumnDefinition(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.TableOptions": schema_pkg_apis_meta_v1_TableOptions(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.TableRow": schema_pkg_apis_meta_v1_TableRow(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.TableRowCondition": schema_pkg_apis_meta_v1_TableRowCondition(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.Time": schema_pkg_apis_meta_v1_Time(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.Timestamp": schema_pkg_apis_meta_v1_Timestamp(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta": schema_pkg_apis_meta_v1_TypeMeta(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.UpdateOptions": schema_pkg_apis_meta_v1_UpdateOptions(ref), + "k8s.io/apimachinery/pkg/apis/meta/v1.WatchEvent": schema_pkg_apis_meta_v1_WatchEvent(ref), + "k8s.io/apimachinery/pkg/runtime.RawExtension": schema_k8sio_apimachinery_pkg_runtime_RawExtension(ref), + "k8s.io/apimachinery/pkg/runtime.TypeMeta": schema_k8sio_apimachinery_pkg_runtime_TypeMeta(ref), + "k8s.io/apimachinery/pkg/runtime.Unknown": schema_k8sio_apimachinery_pkg_runtime_Unknown(ref), + "k8s.io/apimachinery/pkg/version.Info": schema_k8sio_apimachinery_pkg_version_Info(ref), + "k8s.io/code-generator/examples/apiserver/apis/core/v1.TestType": schema_apiserver_apis_core_v1_TestType(ref), + "k8s.io/code-generator/examples/apiserver/apis/core/v1.TestTypeList": schema_apiserver_apis_core_v1_TestTypeList(ref), + "k8s.io/code-generator/examples/apiserver/apis/core/v1.TestTypeStatus": schema_apiserver_apis_core_v1_TestTypeStatus(ref), + "k8s.io/code-generator/examples/apiserver/apis/example/v1.Conversion": schema_apiserver_apis_example_v1_Conversion(ref), + "k8s.io/code-generator/examples/apiserver/apis/example/v1.ConversionCustom": schema_apiserver_apis_example_v1_ConversionCustom(ref), + "k8s.io/code-generator/examples/apiserver/apis/example/v1.ConversionCustomContainer": schema_apiserver_apis_example_v1_ConversionCustomContainer(ref), + "k8s.io/code-generator/examples/apiserver/apis/example/v1.ConversionPrivate": schema_apiserver_apis_example_v1_ConversionPrivate(ref), + "k8s.io/code-generator/examples/apiserver/apis/example/v1.MemoryDifferent": schema_apiserver_apis_example_v1_MemoryDifferent(ref), + "k8s.io/code-generator/examples/apiserver/apis/example/v1.MemoryIdentical": schema_apiserver_apis_example_v1_MemoryIdentical(ref), + "k8s.io/code-generator/examples/apiserver/apis/example/v1.TestType": schema_apiserver_apis_example_v1_TestType(ref), + "k8s.io/code-generator/examples/apiserver/apis/example/v1.TestTypeList": schema_apiserver_apis_example_v1_TestTypeList(ref), + "k8s.io/code-generator/examples/apiserver/apis/example/v1.TestTypeStatus": schema_apiserver_apis_example_v1_TestTypeStatus(ref), + "k8s.io/code-generator/examples/apiserver/apis/example2/v1.TestType": schema_apiserver_apis_example2_v1_TestType(ref), + "k8s.io/code-generator/examples/apiserver/apis/example2/v1.TestTypeList": schema_apiserver_apis_example2_v1_TestTypeList(ref), + "k8s.io/code-generator/examples/apiserver/apis/example2/v1.TestTypeStatus": schema_apiserver_apis_example2_v1_TestTypeStatus(ref), + "k8s.io/code-generator/examples/apiserver/apis/example3.io/v1.TestType": schema_apiserver_apis_example3io_v1_TestType(ref), + "k8s.io/code-generator/examples/apiserver/apis/example3.io/v1.TestTypeList": schema_apiserver_apis_example3io_v1_TestTypeList(ref), + "k8s.io/code-generator/examples/apiserver/apis/example3.io/v1.TestTypeStatus": schema_apiserver_apis_example3io_v1_TestTypeStatus(ref), } } @@ -2863,6 +2866,148 @@ func schema_apiserver_apis_example_v1_Conversion(ref common.ReferenceCallback) c } } +func schema_apiserver_apis_example_v1_ConversionCustom(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "publicField": { + SchemaProps: spec.SchemaProps{ + Default: "", + Type: []string{"string"}, + Format: "", + }, + }, + "privateField": { + SchemaProps: spec.SchemaProps{ + Default: "", + Type: []string{"string"}, + Format: "", + }, + }, + }, + Required: []string{"publicField", "privateField"}, + }, + }, + } +} + +func schema_apiserver_apis_example_v1_ConversionCustomContainer(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "slice": { + VendorExtensible: spec.VendorExtensible{ + Extensions: spec.Extensions{ + "x-kubernetes-list-type": "atomic", + }, + }, + SchemaProps: spec.SchemaProps{ + Type: []string{"array"}, + Items: &spec.SchemaOrArray{ + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Default: map[string]interface{}{}, + Ref: ref("k8s.io/code-generator/examples/apiserver/apis/example/v1.ConversionCustom"), + }, + }, + }, + }, + }, + "sliceP": { + VendorExtensible: spec.VendorExtensible{ + Extensions: spec.Extensions{ + "x-kubernetes-list-type": "atomic", + }, + }, + SchemaProps: spec.SchemaProps{ + Type: []string{"array"}, + Items: &spec.SchemaOrArray{ + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Ref: ref("k8s.io/code-generator/examples/apiserver/apis/example/v1.ConversionCustom"), + }, + }, + }, + }, + }, + "map": { + SchemaProps: spec.SchemaProps{ + Type: []string{"object"}, + AdditionalProperties: &spec.SchemaOrBool{ + Allows: true, + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Default: map[string]interface{}{}, + Ref: ref("k8s.io/code-generator/examples/apiserver/apis/example/v1.ConversionCustom"), + }, + }, + }, + }, + }, + "mapP": { + SchemaProps: spec.SchemaProps{ + Type: []string{"object"}, + AdditionalProperties: &spec.SchemaOrBool{ + Allows: true, + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Ref: ref("k8s.io/code-generator/examples/apiserver/apis/example/v1.ConversionCustom"), + }, + }, + }, + }, + }, + "struct": { + SchemaProps: spec.SchemaProps{ + Default: map[string]interface{}{}, + Ref: ref("k8s.io/code-generator/examples/apiserver/apis/example/v1.ConversionCustom"), + }, + }, + "structP": { + SchemaProps: spec.SchemaProps{ + Ref: ref("k8s.io/code-generator/examples/apiserver/apis/example/v1.ConversionCustom"), + }, + }, + }, + Required: []string{"slice", "sliceP", "map", "mapP", "struct", "structP"}, + }, + }, + Dependencies: []string{ + "k8s.io/code-generator/examples/apiserver/apis/example/v1.ConversionCustom"}, + } +} + +func schema_apiserver_apis_example_v1_ConversionPrivate(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "publicField": { + SchemaProps: spec.SchemaProps{ + Default: "", + Type: []string{"string"}, + Format: "", + }, + }, + "privateField": { + SchemaProps: spec.SchemaProps{ + Default: "", + Type: []string{"string"}, + Format: "", + }, + }, + }, + Required: []string{"publicField", "privateField"}, + }, + }, + } +} + func schema_apiserver_apis_example_v1_MemoryDifferent(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{