@@ -80,55 +80,35 @@ var v1alpha6OpenStackClusterRestorer = conversion.RestorerFor[*OpenStackCluster]
80
80
}
81
81
82
82
var 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
- ),
103
83
"bastion" : conversion .HashedFieldRestorer (
104
84
func (c * infrav1.OpenStackCluster ) * * infrav1.Bastion {
105
85
return & c .Spec .Bastion
106
86
},
107
87
restorev1beta1Bastion ,
108
88
),
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
118
92
},
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
+ ),
120
105
),
121
106
"status" : conversion .HashedFieldRestorer (
122
107
func (c * infrav1.OpenStackCluster ) * infrav1.OpenStackClusterStatus {
123
108
return & c .Status
124
109
},
125
110
restorev1beta1ClusterStatus ,
126
111
),
127
- "managedSubnets" : conversion .UnconditionalFieldRestorer (
128
- func (c * infrav1.OpenStackCluster ) * []infrav1.SubnetSpec {
129
- return & c .Spec .ManagedSubnets
130
- },
131
- ),
132
112
}
133
113
134
114
/* OpenStackClusterSpec */
@@ -179,6 +159,34 @@ func restorev1alpha6ClusterSpec(previous *OpenStackClusterSpec, dst *OpenStackCl
179
159
restorev1alpha6NetworkFilter (& previous .Network , & dst .Network )
180
160
}
181
161
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
+
182
190
func Convert_v1alpha6_OpenStackClusterSpec_To_v1beta1_OpenStackClusterSpec (in * OpenStackClusterSpec , out * infrav1.OpenStackClusterSpec , s apiconversion.Scope ) error {
183
191
err := autoConvert_v1alpha6_OpenStackClusterSpec_To_v1beta1_OpenStackClusterSpec (in , out , s )
184
192
if err != nil {
@@ -392,9 +400,3 @@ func Convert_v1beta1_Bastion_To_v1alpha6_Bastion(in *infrav1.Bastion, out *Basti
392
400
out .Instance .FloatingIP = in .FloatingIP
393
401
return nil
394
402
}
395
-
396
- /* ManagedSecurityGroups */
397
-
398
- func restorev1beta1ManagedSecurityGroups (previous * infrav1.ManagedSecurityGroups , dst * infrav1.ManagedSecurityGroups ) {
399
- dst .AllNodesSecurityGroupRules = previous .AllNodesSecurityGroupRules
400
- }
0 commit comments