@@ -80,55 +80,35 @@ var v1alpha6OpenStackClusterRestorer = conversion.RestorerFor[*OpenStackCluster]
8080}
8181
8282var v1beta1OpenStackClusterRestorer = conversion.RestorerFor [* infrav1.OpenStackCluster ]{
83- "externalNetwork" : conversion .UnconditionalFieldRestorer (
84- func (c * infrav1.OpenStackCluster ) * infrav1.NetworkFilter {
85- return & c .Spec .ExternalNetwork
86- },
87- ),
88- "disableExternalNetwork" : conversion .UnconditionalFieldRestorer (
89- func (c * infrav1.OpenStackCluster ) * bool {
90- return & c .Spec .DisableExternalNetwork
91- },
92- ),
93- "router" : conversion .UnconditionalFieldRestorer (
94- func (c * infrav1.OpenStackCluster ) * * infrav1.RouterFilter {
95- return & c .Spec .Router
96- },
97- ),
98- "networkMtu" : conversion .UnconditionalFieldRestorer (
99- func (c * infrav1.OpenStackCluster ) * int {
100- return & c .Spec .NetworkMTU
101- },
102- ),
10383 "bastion" : conversion .HashedFieldRestorer (
10484 func (c * infrav1.OpenStackCluster ) * * infrav1.Bastion {
10585 return & c .Spec .Bastion
10686 },
10787 restorev1beta1Bastion ,
10888 ),
109- "subnets" : conversion .HashedFieldRestorer (
110- func (c * infrav1.OpenStackCluster ) * []infrav1.SubnetFilter {
111- return & c .Spec .Subnets
112- },
113- restorev1beta1Subnets ,
114- ),
115- "allNodesSecurityGroupRules" : conversion .HashedFieldRestorer (
116- func (c * infrav1.OpenStackCluster ) * infrav1.ManagedSecurityGroups {
117- return c .Spec .ManagedSecurityGroups
89+ "spec" : conversion .HashedFieldRestorer (
90+ func (c * infrav1.OpenStackCluster ) * infrav1.OpenStackClusterSpec {
91+ return & c .Spec
11892 },
119- restorev1beta1ManagedSecurityGroups ,
93+ restorev1beta1ClusterSpec ,
94+ // Filter out Bastion, which is restored separately
95+ conversion.HashedFilterField [* infrav1.OpenStackCluster , infrav1.OpenStackClusterSpec ](
96+ func (s * infrav1.OpenStackClusterSpec ) * infrav1.OpenStackClusterSpec {
97+ if s .Bastion != nil {
98+ f := * s
99+ f .Bastion = nil
100+ return & f
101+ }
102+ return s
103+ },
104+ ),
120105 ),
121106 "status" : conversion .HashedFieldRestorer (
122107 func (c * infrav1.OpenStackCluster ) * infrav1.OpenStackClusterStatus {
123108 return & c .Status
124109 },
125110 restorev1beta1ClusterStatus ,
126111 ),
127- "managedSubnets" : conversion .UnconditionalFieldRestorer (
128- func (c * infrav1.OpenStackCluster ) * []infrav1.SubnetSpec {
129- return & c .Spec .ManagedSubnets
130- },
131- ),
132112}
133113
134114/* OpenStackClusterSpec */
@@ -179,6 +159,34 @@ func restorev1alpha6ClusterSpec(previous *OpenStackClusterSpec, dst *OpenStackCl
179159 restorev1alpha6NetworkFilter (& previous .Network , & dst .Network )
180160}
181161
162+ func restorev1beta1ClusterSpec (previous * infrav1.OpenStackClusterSpec , dst * infrav1.OpenStackClusterSpec ) {
163+ // Bastion is restored separately
164+
165+ // Restore all fields except ID, which should have been copied over in conversion
166+ dst .ExternalNetwork .Name = previous .ExternalNetwork .Name
167+ dst .ExternalNetwork .Description = previous .ExternalNetwork .Description
168+ dst .ExternalNetwork .ProjectID = previous .ExternalNetwork .ProjectID
169+ dst .ExternalNetwork .Tags = previous .ExternalNetwork .Tags
170+ dst .ExternalNetwork .TagsAny = previous .ExternalNetwork .TagsAny
171+ dst .ExternalNetwork .NotTags = previous .ExternalNetwork .NotTags
172+ dst .ExternalNetwork .NotTagsAny = previous .ExternalNetwork .NotTagsAny
173+
174+ // Restore fields not present in v1alpha6
175+ dst .Router = previous .Router
176+ dst .NetworkMTU = previous .NetworkMTU
177+ dst .DisableExternalNetwork = previous .DisableExternalNetwork
178+
179+ if len (previous .Subnets ) > 1 {
180+ dst .Subnets = append (dst .Subnets , previous .Subnets [1 :]... )
181+ }
182+
183+ dst .ManagedSubnets = previous .ManagedSubnets
184+
185+ if previous .ManagedSecurityGroups != nil {
186+ dst .ManagedSecurityGroups .AllNodesSecurityGroupRules = previous .ManagedSecurityGroups .AllNodesSecurityGroupRules
187+ }
188+ }
189+
182190func Convert_v1alpha6_OpenStackClusterSpec_To_v1beta1_OpenStackClusterSpec (in * OpenStackClusterSpec , out * infrav1.OpenStackClusterSpec , s apiconversion.Scope ) error {
183191 err := autoConvert_v1alpha6_OpenStackClusterSpec_To_v1beta1_OpenStackClusterSpec (in , out , s )
184192 if err != nil {
@@ -392,9 +400,3 @@ func Convert_v1beta1_Bastion_To_v1alpha6_Bastion(in *infrav1.Bastion, out *Basti
392400 out .Instance .FloatingIP = in .FloatingIP
393401 return nil
394402}
395-
396- /* ManagedSecurityGroups */
397-
398- func restorev1beta1ManagedSecurityGroups (previous * infrav1.ManagedSecurityGroups , dst * infrav1.ManagedSecurityGroups ) {
399- dst .AllNodesSecurityGroupRules = previous .AllNodesSecurityGroupRules
400- }
0 commit comments