@@ -16,14 +16,237 @@ limitations under the License.
1616
1717package v1beta1
1818
19- // Hub is a conversion hub for RKE2ConfigTemplate.
20- func (* RKE2ConfigTemplate ) Hub () {}
19+ import (
20+ "fmt"
21+ "reflect"
2122
22- // Hub is a conversion hub for RKE2ConfigTemplateList.
23- func (* RKE2ConfigTemplateList ) Hub () {}
23+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
24+ apimachineryconversion "k8s.io/apimachinery/pkg/conversion"
25+ "k8s.io/utils/ptr"
2426
25- // Hub is a conversion hub for RKE2Config.
26- func (* RKE2Config ) Hub () {}
27+ clusterv1beta1 "sigs.k8s.io/cluster-api/api/core/v1beta1" // nolint:staticcheck
28+ clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2"
29+ utilconversion "sigs.k8s.io/cluster-api/util/conversion"
30+ "sigs.k8s.io/controller-runtime/pkg/conversion"
2731
28- // Hub is a conversion hub for RKE2ConfigList.
29- func (* RKE2ConfigList ) Hub () {}
32+ bootstrapv1 "github.com/rancher/cluster-api-provider-rke2/bootstrap/api/v1beta2"
33+ )
34+
35+ // ConvertTo converts this RKE2Config to the Hub version (v1beta2).
36+ func (src * RKE2Config ) ConvertTo (dstRaw conversion.Hub ) error {
37+ dst , ok := dstRaw .(* bootstrapv1.RKE2Config )
38+ if ! ok {
39+ return fmt .Errorf ("not a RKE2Config: %v" , dst )
40+ }
41+
42+ if err := Convert_v1beta1_RKE2Config_To_v1beta2_RKE2Config (src , dst , nil ); err != nil {
43+ return err
44+ }
45+
46+ // Preserve Hub data on down-conversion.
47+ restored := & bootstrapv1.RKE2Config {}
48+ if ok , err := utilconversion .UnmarshalData (src , restored ); err != nil || ! ok {
49+ return err
50+ }
51+
52+ // Recover intent for bool values converted to *bool.
53+ initialization := bootstrapv1.RKE2ConfigInitializationStatus {}
54+ restoredBootstrapDataSecretCreated := restored .Status .Initialization .DataSecretCreated
55+ clusterv1 .Convert_bool_To_Pointer_bool (src .Status .Ready , ok , restoredBootstrapDataSecretCreated , & initialization .DataSecretCreated )
56+ if ! reflect .DeepEqual (initialization , bootstrapv1.RKE2ConfigInitializationStatus {}) {
57+ dst .Status .Initialization = initialization
58+ }
59+
60+ return nil
61+ }
62+
63+ // ConvertFrom converts from the Hub version (v1beta2) to this version (v1beta1).
64+ func (dst * RKE2Config ) ConvertFrom (srcRaw conversion.Hub ) error {
65+ src , ok := srcRaw .(* bootstrapv1.RKE2Config )
66+ if ! ok {
67+ return fmt .Errorf ("not a RKE2Config: %v" , src )
68+ }
69+
70+ if err := Convert_v1beta2_RKE2Config_To_v1beta1_RKE2Config (src , dst , nil ); err != nil {
71+ return err
72+ }
73+
74+ // Preserve Hub data on down-conversion.
75+ if err := utilconversion .MarshalData (src , dst ); err != nil {
76+ return err
77+ }
78+
79+ return nil
80+ }
81+
82+ // ConvertTo converts this RKE2ConfigList to the Hub version (v1beta2).
83+ func (src * RKE2ConfigList ) ConvertTo (dstRaw conversion.Hub ) error {
84+ dst , ok := dstRaw .(* bootstrapv1.RKE2ConfigList )
85+ if ! ok {
86+ return fmt .Errorf ("not a RKE2ConfigList: %v" , dst )
87+ }
88+
89+ return Convert_v1beta1_RKE2ConfigList_To_v1beta2_RKE2ConfigList (src , dst , nil )
90+ }
91+
92+ // ConvertFrom converts from the Hub version (v1beta2) to this version (v1beta1).
93+ func (dst * RKE2ConfigList ) ConvertFrom (srcRaw conversion.Hub ) error {
94+ src , ok := srcRaw .(* bootstrapv1.RKE2ConfigList )
95+ if ! ok {
96+ return fmt .Errorf ("not a RKE2ConfigList: %v" , src )
97+ }
98+
99+ return Convert_v1beta2_RKE2ConfigList_To_v1beta1_RKE2ConfigList (src , dst , nil )
100+ }
101+
102+ // ConvertTo converts this RKE2ConfigTemplate to the Hub version (v1beta2).
103+ func (src * RKE2ConfigTemplate ) ConvertTo (dstRaw conversion.Hub ) error {
104+ dst , ok := dstRaw .(* bootstrapv1.RKE2ConfigTemplate )
105+ if ! ok {
106+ return fmt .Errorf ("not a RKE2ConfigTemplate: %v" , dst )
107+ }
108+
109+ if err := Convert_v1beta1_RKE2ConfigTemplate_To_v1beta2_RKE2ConfigTemplate (src , dst , nil ); err != nil {
110+ return err
111+ }
112+
113+ // Preserve Hub data on down-conversion.
114+ restored := & bootstrapv1.RKE2ConfigTemplate {}
115+ if ok , err := utilconversion .UnmarshalData (src , restored ); err != nil || ! ok {
116+ return err
117+ }
118+
119+ return nil
120+ }
121+
122+ // ConvertFrom converts from the Hub version (v1beta2) to this version (v1beta1).
123+ func (dst * RKE2ConfigTemplate ) ConvertFrom (srcRaw conversion.Hub ) error {
124+ src , ok := srcRaw .(* bootstrapv1.RKE2ConfigTemplate )
125+ if ! ok {
126+ return fmt .Errorf ("not a RKE2ConfigTemplate: %v" , src )
127+ }
128+
129+ if err := Convert_v1beta2_RKE2ConfigTemplate_To_v1beta1_RKE2ConfigTemplate (src , dst , nil ); err != nil {
130+ return err
131+ }
132+
133+ // Preserve Hub data on down-conversion.
134+ if err := utilconversion .MarshalData (src , dst ); err != nil {
135+ return err
136+ }
137+
138+ return nil
139+ }
140+
141+ // ConvertTo converts this RKE2ConfigTemplateList to the Hub version (v1beta2).
142+ func (src * RKE2ConfigTemplateList ) ConvertTo (dstRaw conversion.Hub ) error {
143+ dst , ok := dstRaw .(* bootstrapv1.RKE2ConfigTemplateList )
144+ if ! ok {
145+ return fmt .Errorf ("not a RKE2ConfigTemplateList: %v" , dst )
146+ }
147+
148+ return Convert_v1beta1_RKE2ConfigTemplateList_To_v1beta2_RKE2ConfigTemplateList (src , dst , nil )
149+ }
150+
151+ // ConvertFrom converts from the Hub version (v1beta2) to this version (v1beta1).
152+ func (dst * RKE2ConfigTemplateList ) ConvertFrom (srcRaw conversion.Hub ) error {
153+ src , ok := srcRaw .(* bootstrapv1.RKE2ConfigTemplateList )
154+ if ! ok {
155+ return fmt .Errorf ("not a RKE2ConfigTemplateList: %v" , src )
156+ }
157+
158+ return Convert_v1beta2_RKE2ConfigTemplateList_To_v1beta1_RKE2ConfigTemplateList (src , dst , nil )
159+ }
160+
161+ // Convert_v1beta1_RKE2ConfigStatus_To_v1beta2_RKE2ConfigStatus converts RKE2ConfigStatus from v1beta1 to v1beta2.
162+ func Convert_v1beta1_RKE2ConfigStatus_To_v1beta2_RKE2ConfigStatus (in * RKE2ConfigStatus , out * bootstrapv1.RKE2ConfigStatus , s apimachineryconversion.Scope ) error {
163+ if err := autoConvert_v1beta1_RKE2ConfigStatus_To_v1beta2_RKE2ConfigStatus (in , out , s ); err != nil {
164+ return err
165+ }
166+
167+ // Reset conditions from autogenerated conversions
168+ // NOTE: v1beta1 conditions should not be automatically be converted into v1beta2 conditions.
169+ out .Conditions = nil
170+
171+ // Retrieve new conditions (v1beta2) from the v1beta2 field.
172+ if in .V1Beta2 != nil {
173+ out .Conditions = in .V1Beta2 .Conditions
174+ }
175+
176+ // Move legacy conditions (v1beta1), failureReason and failureMessage to the deprecated field.
177+ if out .Deprecated == nil {
178+ out .Deprecated = & bootstrapv1.RKE2ConfigDeprecatedStatus {}
179+ }
180+ if out .Deprecated .V1Beta1 == nil {
181+ out .Deprecated .V1Beta1 = & bootstrapv1.RKE2ConfigV1Beta1DeprecatedStatus {}
182+ }
183+ if in .Conditions != nil {
184+ clusterv1beta1 .Convert_v1beta1_Conditions_To_v1beta2_Deprecated_V1Beta1_Conditions (& in .Conditions , & out .Deprecated .V1Beta1 .Conditions )
185+ }
186+ out .Deprecated .V1Beta1 .FailureReason = in .FailureReason
187+ out .Deprecated .V1Beta1 .FailureMessage = in .FailureMessage
188+
189+ return nil
190+ }
191+
192+ // Convert_v1beta2_RKE2ConfigStatus_To_v1beta1_RKE2ConfigStatus converts RKE2ConfigStatus from v1beta2 to v1beta1.
193+ func Convert_v1beta2_RKE2ConfigStatus_To_v1beta1_RKE2ConfigStatus (in * bootstrapv1.RKE2ConfigStatus , out * RKE2ConfigStatus , s apimachineryconversion.Scope ) error {
194+ if err := autoConvert_v1beta2_RKE2ConfigStatus_To_v1beta1_RKE2ConfigStatus (in , out , s ); err != nil {
195+ return err
196+ }
197+
198+ // Reset conditions from autogenerated conversions
199+ // NOTE: v1beta2 conditions should not be automatically be converted into legacy conditions (v1beta1).
200+ out .Conditions = nil
201+
202+ // Retrieve legacy conditions (v1beta1), failureReason and failureMessage from the deprecated field.
203+ if in .Deprecated != nil && in .Deprecated .V1Beta1 != nil {
204+ if in .Deprecated .V1Beta1 .Conditions != nil {
205+ clusterv1beta1 .Convert_v1beta2_Deprecated_V1Beta1_Conditions_To_v1beta1_Conditions (& in .Deprecated .V1Beta1 .Conditions , & out .Conditions )
206+ }
207+ out .FailureReason = in .Deprecated .V1Beta1 .FailureReason
208+ out .FailureMessage = in .Deprecated .V1Beta1 .FailureMessage
209+ }
210+
211+ // Move initialization to old fields
212+ out .Ready = ptr .Deref (in .Initialization .DataSecretCreated , false )
213+
214+ // Move new conditions (v1beta2) to the v1beta2 field.
215+ if in .Conditions == nil {
216+ return nil
217+ }
218+ out .V1Beta2 = & RKE2ConfigV1Beta2Status {}
219+ out .V1Beta2 .Conditions = in .Conditions
220+
221+ return nil
222+ }
223+
224+ // Convert_v1beta1_RKE2AgentConfig_To_v1beta2_RKE2AgentConfig converts RKE2AgentConfig from v1beta1 to v1beta2.
225+ func Convert_v1beta1_RKE2AgentConfig_To_v1beta2_RKE2AgentConfig (in * RKE2AgentConfig , out * bootstrapv1.RKE2AgentConfig , s apimachineryconversion.Scope ) error {
226+ return autoConvert_v1beta1_RKE2AgentConfig_To_v1beta2_RKE2AgentConfig (in , out , s )
227+ }
228+
229+ // Convert_v1beta2_RKE2AgentConfig_To_v1beta1_RKE2AgentConfig converts RKE2AgentConfig from v1beta2 to v1beta1.
230+ func Convert_v1beta2_RKE2AgentConfig_To_v1beta1_RKE2AgentConfig (in * bootstrapv1.RKE2AgentConfig , out * RKE2AgentConfig , s apimachineryconversion.Scope ) error {
231+ return autoConvert_v1beta2_RKE2AgentConfig_To_v1beta1_RKE2AgentConfig (in , out , s )
232+ }
233+
234+ // Convert_v1beta1_RKE2ConfigSpec_To_v1beta2_RKE2ConfigSpec converts RKE2ConfigSpec from v1beta1 to v1beta2.
235+ func Convert_v1beta1_RKE2ConfigSpec_To_v1beta2_RKE2ConfigSpec (in * RKE2ConfigSpec , out * bootstrapv1.RKE2ConfigSpec , s apimachineryconversion.Scope ) error {
236+ return autoConvert_v1beta1_RKE2ConfigSpec_To_v1beta2_RKE2ConfigSpec (in , out , s )
237+ }
238+
239+ // Convert_v1beta2_RKE2ConfigSpec_To_v1beta1_RKE2ConfigSpec converts RKE2ConfigSpec from v1beta2 to v1beta1.
240+ func Convert_v1beta2_RKE2ConfigSpec_To_v1beta1_RKE2ConfigSpec (in * bootstrapv1.RKE2ConfigSpec , out * RKE2ConfigSpec , s apimachineryconversion.Scope ) error {
241+ return autoConvert_v1beta2_RKE2ConfigSpec_To_v1beta1_RKE2ConfigSpec (in , out , s )
242+ }
243+
244+ // Need to implement condition conversion between old CAPI-specific condition and the generic from apimachinery.
245+ // The logic is built in upstream CAPI but we need to have a convert function here so that controller-gen is aware of it.
246+ func Convert_v1beta1_Condition_To_v1_Condition (in * clusterv1beta1.Condition , out * metav1.Condition , s apimachineryconversion.Scope ) error {
247+ return clusterv1beta1 .Convert_v1beta1_Condition_To_v1_Condition (in , out , s )
248+ }
249+
250+ func Convert_v1_Condition_To_v1beta1_Condition (in * metav1.Condition , out * clusterv1beta1.Condition , s apimachineryconversion.Scope ) error {
251+ return clusterv1beta1 .Convert_v1_Condition_To_v1beta1_Condition (in , out , s )
252+ }
0 commit comments