1/*
2Copyright 2020 The Kubernetes Authors.
3
4Licensed under the Apache License, Version 2.0 (the "License");
5you may not use this file except in compliance with the License.
6You may obtain a copy of the License at
7
8    http://www.apache.org/licenses/LICENSE-2.0
9
10Unless required by applicable law or agreed to in writing, software
11distributed under the License is distributed on an "AS IS" BASIS,
12WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13See the License for the specific language governing permissions and
14limitations under the License.
15*/
16
17package testing
18
19import (
20	"k8s.io/apimachinery/pkg/conversion"
21	"k8s.io/apimachinery/pkg/runtime"
22)
23
24func convertEmbeddedTestToEmbeddedTestExternal(in *EmbeddedTest, out *EmbeddedTestExternal, s conversion.Scope) error {
25	out.TypeMeta = in.TypeMeta
26	out.ID = in.ID
27	if err := runtime.Convert_runtime_Object_To_runtime_RawExtension(&in.Object, &out.Object, s); err != nil {
28		return err
29	}
30	if err := runtime.Convert_runtime_Object_To_runtime_RawExtension(&in.EmptyObject, &out.EmptyObject, s); err != nil {
31		return err
32	}
33	return nil
34}
35
36func convertEmbeddedTestExternalToEmbeddedTest(in *EmbeddedTestExternal, out *EmbeddedTest, s conversion.Scope) error {
37	out.TypeMeta = in.TypeMeta
38	out.ID = in.ID
39	if err := runtime.Convert_runtime_RawExtension_To_runtime_Object(&in.Object, &out.Object, s); err != nil {
40		return err
41	}
42	if err := runtime.Convert_runtime_RawExtension_To_runtime_Object(&in.EmptyObject, &out.EmptyObject, s); err != nil {
43		return err
44	}
45	return nil
46}
47
48func convertObjectTestToObjectTestExternal(in *ObjectTest, out *ObjectTestExternal, s conversion.Scope) error {
49	out.TypeMeta = in.TypeMeta
50	out.ID = in.ID
51	if in.Items != nil {
52		out.Items = make([]runtime.RawExtension, len(in.Items))
53		for i := range in.Items {
54			if err := runtime.Convert_runtime_Object_To_runtime_RawExtension(&in.Items[i], &out.Items[i], s); err != nil {
55				return err
56			}
57		}
58	} else {
59		out.Items = nil
60	}
61	return nil
62}
63
64func convertObjectTestExternalToObjectTest(in *ObjectTestExternal, out *ObjectTest, s conversion.Scope) error {
65	out.TypeMeta = in.TypeMeta
66	out.ID = in.ID
67	if in.Items != nil {
68		out.Items = make([]runtime.Object, len(in.Items))
69		for i := range in.Items {
70			if err := runtime.Convert_runtime_RawExtension_To_runtime_Object(&in.Items[i], &out.Items[i], s); err != nil {
71				return err
72			}
73		}
74	} else {
75		out.Items = nil
76	}
77	return nil
78}
79
80func convertInternalSimpleToExternalSimple(in *InternalSimple, out *ExternalSimple, s conversion.Scope) error {
81	out.TypeMeta = in.TypeMeta
82	out.TestString = in.TestString
83	return nil
84}
85
86func convertExternalSimpleToInternalSimple(in *ExternalSimple, out *InternalSimple, s conversion.Scope) error {
87	out.TypeMeta = in.TypeMeta
88	out.TestString = in.TestString
89	return nil
90}
91
92func convertInternalExtensionTypeToExternalExtensionType(in *InternalExtensionType, out *ExternalExtensionType, s conversion.Scope) error {
93	out.TypeMeta = in.TypeMeta
94	if err := runtime.Convert_runtime_Object_To_runtime_RawExtension(&in.Extension, &out.Extension, s); err != nil {
95		return err
96	}
97	return nil
98}
99
100func convertExternalExtensionTypeToInternalExtensionType(in *ExternalExtensionType, out *InternalExtensionType, s conversion.Scope) error {
101	out.TypeMeta = in.TypeMeta
102	if err := runtime.Convert_runtime_RawExtension_To_runtime_Object(&in.Extension, &out.Extension, s); err != nil {
103		return err
104	}
105	return nil
106}
107
108func convertInternalOptionalExtensionTypeToExternalOptionalExtensionType(in *InternalOptionalExtensionType, out *ExternalOptionalExtensionType, s conversion.Scope) error {
109	out.TypeMeta = in.TypeMeta
110	if err := runtime.Convert_runtime_Object_To_runtime_RawExtension(&in.Extension, &out.Extension, s); err != nil {
111		return err
112	}
113	return nil
114}
115
116func convertExternalOptionalExtensionTypeToInternalOptionalExtensionType(in *ExternalOptionalExtensionType, out *InternalOptionalExtensionType, s conversion.Scope) error {
117	out.TypeMeta = in.TypeMeta
118	if err := runtime.Convert_runtime_RawExtension_To_runtime_Object(&in.Extension, &out.Extension, s); err != nil {
119		return err
120	}
121	return nil
122}
123
124func convertTestType1ToExternalTestType1(in *TestType1, out *ExternalTestType1, s conversion.Scope) error {
125	out.MyWeirdCustomEmbeddedVersionKindField = in.MyWeirdCustomEmbeddedVersionKindField
126	out.A = in.A
127	out.B = in.B
128	out.C = in.C
129	out.D = in.D
130	out.E = in.E
131	out.F = in.F
132	out.G = in.G
133	out.H = in.H
134	out.I = in.I
135	out.J = in.J
136	out.K = in.K
137	out.L = in.L
138	out.M = in.M
139	if in.N != nil {
140		out.N = make(map[string]ExternalTestType2)
141		for key := range in.N {
142			in, tmp := in.N[key], ExternalTestType2{}
143			if err := convertTestType2ToExternalTestType2(&in, &tmp, s); err != nil {
144				return err
145			}
146			out.N[key] = tmp
147		}
148	} else {
149		out.N = nil
150	}
151	if in.O != nil {
152		out.O = new(ExternalTestType2)
153		if err := convertTestType2ToExternalTestType2(in.O, out.O, s); err != nil {
154			return err
155		}
156	} else {
157		out.O = nil
158	}
159	if in.P != nil {
160		out.P = make([]ExternalTestType2, len(in.P))
161		for i := range in.P {
162			if err := convertTestType2ToExternalTestType2(&in.P[i], &out.P[i], s); err != nil {
163				return err
164			}
165		}
166	}
167	return nil
168}
169
170func convertExternalTestType1ToTestType1(in *ExternalTestType1, out *TestType1, s conversion.Scope) error {
171	out.MyWeirdCustomEmbeddedVersionKindField = in.MyWeirdCustomEmbeddedVersionKindField
172	out.A = in.A
173	out.B = in.B
174	out.C = in.C
175	out.D = in.D
176	out.E = in.E
177	out.F = in.F
178	out.G = in.G
179	out.H = in.H
180	out.I = in.I
181	out.J = in.J
182	out.K = in.K
183	out.L = in.L
184	out.M = in.M
185	if in.N != nil {
186		out.N = make(map[string]TestType2)
187		for key := range in.N {
188			in, tmp := in.N[key], TestType2{}
189			if err := convertExternalTestType2ToTestType2(&in, &tmp, s); err != nil {
190				return err
191			}
192			out.N[key] = tmp
193		}
194	} else {
195		out.N = nil
196	}
197	if in.O != nil {
198		out.O = new(TestType2)
199		if err := convertExternalTestType2ToTestType2(in.O, out.O, s); err != nil {
200			return err
201		}
202	} else {
203		out.O = nil
204	}
205	if in.P != nil {
206		out.P = make([]TestType2, len(in.P))
207		for i := range in.P {
208			if err := convertExternalTestType2ToTestType2(&in.P[i], &out.P[i], s); err != nil {
209				return err
210			}
211		}
212	}
213	return nil
214}
215
216func convertTestType2ToExternalTestType2(in *TestType2, out *ExternalTestType2, s conversion.Scope) error {
217	out.A = in.A
218	out.B = in.B
219	return nil
220}
221
222func convertExternalTestType2ToTestType2(in *ExternalTestType2, out *TestType2, s conversion.Scope) error {
223	out.A = in.A
224	out.B = in.B
225	return nil
226}
227
228func RegisterConversions(s *runtime.Scheme) error {
229	if err := s.AddConversionFunc((*EmbeddedTest)(nil), (*EmbeddedTestExternal)(nil), func(a, b interface{}, scope conversion.Scope) error {
230		return convertEmbeddedTestToEmbeddedTestExternal(a.(*EmbeddedTest), b.(*EmbeddedTestExternal), scope)
231	}); err != nil {
232		return err
233	}
234	if err := s.AddConversionFunc((*EmbeddedTestExternal)(nil), (*EmbeddedTest)(nil), func(a, b interface{}, scope conversion.Scope) error {
235		return convertEmbeddedTestExternalToEmbeddedTest(a.(*EmbeddedTestExternal), b.(*EmbeddedTest), scope)
236	}); err != nil {
237		return err
238	}
239	if err := s.AddConversionFunc((*ObjectTest)(nil), (*ObjectTestExternal)(nil), func(a, b interface{}, scope conversion.Scope) error {
240		return convertObjectTestToObjectTestExternal(a.(*ObjectTest), b.(*ObjectTestExternal), scope)
241	}); err != nil {
242		return err
243	}
244	if err := s.AddConversionFunc((*ObjectTestExternal)(nil), (*ObjectTest)(nil), func(a, b interface{}, scope conversion.Scope) error {
245		return convertObjectTestExternalToObjectTest(a.(*ObjectTestExternal), b.(*ObjectTest), scope)
246	}); err != nil {
247		return err
248	}
249	if err := s.AddConversionFunc((*InternalSimple)(nil), (*ExternalSimple)(nil), func(a, b interface{}, scope conversion.Scope) error {
250		return convertInternalSimpleToExternalSimple(a.(*InternalSimple), b.(*ExternalSimple), scope)
251	}); err != nil {
252		return err
253	}
254	if err := s.AddConversionFunc((*ExternalSimple)(nil), (*InternalSimple)(nil), func(a, b interface{}, scope conversion.Scope) error {
255		return convertExternalSimpleToInternalSimple(a.(*ExternalSimple), b.(*InternalSimple), scope)
256	}); err != nil {
257		return err
258	}
259	if err := s.AddConversionFunc((*InternalExtensionType)(nil), (*ExternalExtensionType)(nil), func(a, b interface{}, scope conversion.Scope) error {
260		return convertInternalExtensionTypeToExternalExtensionType(a.(*InternalExtensionType), b.(*ExternalExtensionType), scope)
261	}); err != nil {
262		return err
263	}
264	if err := s.AddConversionFunc((*ExternalExtensionType)(nil), (*InternalExtensionType)(nil), func(a, b interface{}, scope conversion.Scope) error {
265		return convertExternalExtensionTypeToInternalExtensionType(a.(*ExternalExtensionType), b.(*InternalExtensionType), scope)
266	}); err != nil {
267		return err
268	}
269	if err := s.AddConversionFunc((*InternalOptionalExtensionType)(nil), (*ExternalOptionalExtensionType)(nil), func(a, b interface{}, scope conversion.Scope) error {
270		return convertInternalOptionalExtensionTypeToExternalOptionalExtensionType(a.(*InternalOptionalExtensionType), b.(*ExternalOptionalExtensionType), scope)
271	}); err != nil {
272		return err
273	}
274	if err := s.AddConversionFunc((*ExternalOptionalExtensionType)(nil), (*InternalOptionalExtensionType)(nil), func(a, b interface{}, scope conversion.Scope) error {
275		return convertExternalOptionalExtensionTypeToInternalOptionalExtensionType(a.(*ExternalOptionalExtensionType), b.(*InternalOptionalExtensionType), scope)
276	}); err != nil {
277		return err
278	}
279	if err := s.AddConversionFunc((*TestType1)(nil), (*ExternalTestType1)(nil), func(a, b interface{}, scope conversion.Scope) error {
280		return convertTestType1ToExternalTestType1(a.(*TestType1), b.(*ExternalTestType1), scope)
281	}); err != nil {
282		return err
283	}
284	if err := s.AddConversionFunc((*ExternalTestType1)(nil), (*TestType1)(nil), func(a, b interface{}, scope conversion.Scope) error {
285		return convertExternalTestType1ToTestType1(a.(*ExternalTestType1), b.(*TestType1), scope)
286	}); err != nil {
287		return err
288	}
289	if err := s.AddConversionFunc((*TestType2)(nil), (*ExternalTestType2)(nil), func(a, b interface{}, scope conversion.Scope) error {
290		return convertTestType2ToExternalTestType2(a.(*TestType2), b.(*ExternalTestType2), scope)
291	}); err != nil {
292		return err
293	}
294	if err := s.AddConversionFunc((*ExternalTestType2)(nil), (*TestType2)(nil), func(a, b interface{}, scope conversion.Scope) error {
295		return convertExternalTestType2ToTestType2(a.(*ExternalTestType2), b.(*TestType2), scope)
296	}); err != nil {
297		return err
298	}
299	return nil
300}
301