Skip to content

Commit 1d5d2d5

Browse files
authored
Merge pull request #1972 from shiftstack/networkparam
⚠️ NetworkFilter to NetworkParam
2 parents eace85b + 73c81de commit 1d5d2d5

32 files changed

+1364
-897
lines changed

api/v1alpha1/openstackfloatingippool_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ type OpenStackFloatingIPPoolSpec struct {
6363

6464
// FloatingIPNetwork is the external network to use for floating ips, if there's only one external network it will be used by default
6565
// +optional
66-
FloatingIPNetwork infrav1.NetworkFilter `json:"floatingIPNetwork"`
66+
FloatingIPNetwork infrav1.NetworkParam `json:"floatingIPNetwork"`
6767

6868
// The stratergy to use for reclaiming floating ips when they are released from a machine
6969
// +kubebuilder:validation:Optional

api/v1alpha5/conversion.go

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package v1alpha5
1818

1919
import (
20+
"errors"
2021
"strings"
2122

2223
conversion "k8s.io/apimachinery/pkg/conversion"
@@ -205,8 +206,8 @@ func Convert_v1beta1_OpenStackClusterSpec_To_v1alpha5_OpenStackClusterSpec(in *i
205206
return err
206207
}
207208

208-
if in.ExternalNetwork != nil && in.ExternalNetwork.ID != "" {
209-
out.ExternalNetworkID = in.ExternalNetwork.ID
209+
if in.ExternalNetwork != nil && in.ExternalNetwork.ID != nil {
210+
out.ExternalNetworkID = *in.ExternalNetwork.ID
210211
}
211212

212213
if len(in.ManagedSubnets) > 0 {
@@ -246,8 +247,8 @@ func Convert_v1alpha5_OpenStackClusterSpec_To_v1beta1_OpenStackClusterSpec(in *O
246247
}
247248

248249
if in.ExternalNetworkID != "" {
249-
out.ExternalNetwork = &infrav1.NetworkFilter{
250-
ID: in.ExternalNetworkID,
250+
out.ExternalNetwork = &infrav1.NetworkParam{
251+
ID: &in.ExternalNetworkID,
251252
}
252253
}
253254

@@ -746,18 +747,49 @@ func Convert_v1beta1_SecurityGroupFilter_To_v1alpha5_SecurityGroupFilter(in *inf
746747
return nil
747748
}
748749

749-
func Convert_v1alpha5_NetworkFilter_To_v1beta1_NetworkFilter(in *NetworkFilter, out *infrav1.NetworkFilter, s conversion.Scope) error {
750-
if err := autoConvert_v1alpha5_NetworkFilter_To_v1beta1_NetworkFilter(in, out, s); err != nil {
750+
func Convert_v1alpha5_NetworkFilter_To_v1beta1_NetworkParam(in *NetworkFilter, out *infrav1.NetworkParam, s conversion.Scope) error {
751+
if in.ID != "" {
752+
out.ID = &in.ID
753+
return nil
754+
}
755+
outFilter := &infrav1.NetworkFilter{}
756+
if err := autoConvert_v1alpha5_NetworkFilter_To_v1beta1_NetworkFilter(in, outFilter, s); err != nil {
751757
return err
752758
}
753-
infrav1.ConvertAllTagsTo(in.Tags, in.TagsAny, in.NotTags, in.NotTagsAny, &out.FilterByNeutronTags)
759+
infrav1.ConvertAllTagsTo(in.Tags, in.TagsAny, in.NotTags, in.NotTagsAny, &outFilter.FilterByNeutronTags)
760+
if !outFilter.IsZero() {
761+
out.Filter = outFilter
762+
}
754763
return nil
755764
}
756765

757-
func Convert_v1beta1_NetworkFilter_To_v1alpha5_NetworkFilter(in *infrav1.NetworkFilter, out *NetworkFilter, s conversion.Scope) error {
758-
if err := autoConvert_v1beta1_NetworkFilter_To_v1alpha5_NetworkFilter(in, out, s); err != nil {
759-
return err
766+
func Convert_v1beta1_NetworkParam_To_v1alpha5_NetworkFilter(in *infrav1.NetworkParam, out *NetworkFilter, s conversion.Scope) error {
767+
if in.ID != nil {
768+
out.ID = *in.ID
769+
return nil
770+
}
771+
if in.Filter != nil {
772+
if err := autoConvert_v1beta1_NetworkFilter_To_v1alpha5_NetworkFilter(in.Filter, out, s); err != nil {
773+
return err
774+
}
775+
infrav1.ConvertAllTagsFrom(&in.Filter.FilterByNeutronTags, &out.Tags, &out.TagsAny, &out.NotTags, &out.NotTagsAny)
760776
}
761-
infrav1.ConvertAllTagsFrom(&in.FilterByNeutronTags, &out.Tags, &out.TagsAny, &out.NotTags, &out.NotTagsAny)
762777
return nil
763778
}
779+
780+
// conversion-gen registers the following functions so we have to define them, but nothing should ever call them.
781+
func Convert_v1alpha5_NetworkFilter_To_v1beta1_NetworkFilter(_ *NetworkFilter, _ *infrav1.NetworkFilter, _ conversion.Scope) error {
782+
return errors.New("Convert_v1alpha6_NetworkFilter_To_v1beta1_NetworkFilter should not be called")
783+
}
784+
785+
func Convert_v1beta1_NetworkFilter_To_v1alpha5_NetworkFilter(_ *infrav1.NetworkFilter, _ *NetworkFilter, _ conversion.Scope) error {
786+
return errors.New("Convert_v1beta1_NetworkFilter_To_v1alpha6_NetworkFilter should not be called")
787+
}
788+
789+
func Convert_v1alpha5_NetworkParam_To_v1beta1_NetworkParam(_ *NetworkParam, _ *infrav1.NetworkParam, _ conversion.Scope) error {
790+
return errors.New("Convert_v1alpha6_NetworkParam_To_v1beta1_NetworkParam should not be called")
791+
}
792+
793+
func Convert_v1beta1_NetworkParam_To_v1alpha5_NetworkParam(_ *infrav1.NetworkParam, _ *NetworkParam, _ conversion.Scope) error {
794+
return errors.New("Convert_v1beta1_NetworkParam_To_v1alpha6_NetworkParam should not be called")
795+
}

api/v1alpha5/zz_generated.conversion.go

Lines changed: 40 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1alpha6/conversion_test.go

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,8 @@ func TestNetworksToPorts(t *testing.T) {
220220
afterMachineSpec: infrav1.OpenStackMachineSpec{
221221
Ports: []infrav1.PortOpts{
222222
{
223-
Network: &infrav1.NetworkFilter{
224-
ID: networkuuid,
223+
Network: &infrav1.NetworkParam{
224+
ID: pointer.String(networkuuid),
225225
},
226226
},
227227
},
@@ -247,15 +247,17 @@ func TestNetworksToPorts(t *testing.T) {
247247
afterMachineSpec: infrav1.OpenStackMachineSpec{
248248
Ports: []infrav1.PortOpts{
249249
{
250-
Network: &infrav1.NetworkFilter{
251-
Name: "network-name",
252-
Description: "network-description",
253-
ProjectID: "project-id",
254-
FilterByNeutronTags: infrav1.FilterByNeutronTags{
255-
Tags: []infrav1.NeutronTag{"tags"},
256-
TagsAny: []infrav1.NeutronTag{"tags-any"},
257-
NotTags: []infrav1.NeutronTag{"not-tags"},
258-
NotTagsAny: []infrav1.NeutronTag{"not-tags-any"},
250+
Network: &infrav1.NetworkParam{
251+
Filter: &infrav1.NetworkFilter{
252+
Name: "network-name",
253+
Description: "network-description",
254+
ProjectID: "project-id",
255+
FilterByNeutronTags: infrav1.FilterByNeutronTags{
256+
Tags: []infrav1.NeutronTag{"tags"},
257+
TagsAny: []infrav1.NeutronTag{"tags-any"},
258+
NotTags: []infrav1.NeutronTag{"not-tags"},
259+
NotTagsAny: []infrav1.NeutronTag{"not-tags-any"},
260+
},
259261
},
260262
},
261263
},
@@ -279,8 +281,8 @@ func TestNetworksToPorts(t *testing.T) {
279281
afterMachineSpec: infrav1.OpenStackMachineSpec{
280282
Ports: []infrav1.PortOpts{
281283
{
282-
Network: &infrav1.NetworkFilter{
283-
ID: networkuuid,
284+
Network: &infrav1.NetworkParam{
285+
ID: pointer.String(networkuuid),
284286
},
285287
FixedIPs: []infrav1.FixedIP{
286288
{
@@ -323,8 +325,8 @@ func TestNetworksToPorts(t *testing.T) {
323325
afterMachineSpec: infrav1.OpenStackMachineSpec{
324326
Ports: []infrav1.PortOpts{
325327
{
326-
Network: &infrav1.NetworkFilter{
327-
ID: networkuuid,
328+
Network: &infrav1.NetworkParam{
329+
ID: pointer.String(networkuuid),
328330
},
329331
FixedIPs: []infrav1.FixedIP{
330332
{
@@ -383,8 +385,8 @@ func TestNetworksToPorts(t *testing.T) {
383385
afterMachineSpec: infrav1.OpenStackMachineSpec{
384386
Ports: []infrav1.PortOpts{
385387
{
386-
Network: &infrav1.NetworkFilter{
387-
ID: networkuuid,
388+
Network: &infrav1.NetworkParam{
389+
ID: pointer.String(networkuuid),
388390
},
389391
FixedIPs: []infrav1.FixedIP{
390392
{
@@ -395,8 +397,8 @@ func TestNetworksToPorts(t *testing.T) {
395397
},
396398
},
397399
{
398-
Network: &infrav1.NetworkFilter{
399-
ID: networkuuid,
400+
Network: &infrav1.NetworkParam{
401+
ID: pointer.String(networkuuid),
400402
},
401403
FixedIPs: []infrav1.FixedIP{
402404
{

api/v1alpha6/openstackcluster_conversion.go

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -164,23 +164,14 @@ func restorev1alpha6ClusterSpec(previous *OpenStackClusterSpec, dst *OpenStackCl
164164
func restorev1beta1ClusterSpec(previous *infrav1.OpenStackClusterSpec, dst *infrav1.OpenStackClusterSpec) {
165165
// Bastion is restored separately
166166

167-
if dst.Network.IsEmpty() {
168-
dst.Network = previous.Network
169-
}
167+
restorev1beta1NetworkParam(previous.Network, dst.Network)
170168

171-
// Restore all fields except ID, which should have been copied over in conversion
169+
// ExternalNetwork by filter will be been lost in down-conversion
172170
if previous.ExternalNetwork != nil {
173171
if dst.ExternalNetwork == nil {
174-
dst.ExternalNetwork = &infrav1.NetworkFilter{}
172+
dst.ExternalNetwork = &infrav1.NetworkParam{}
175173
}
176-
177-
dst.ExternalNetwork.Name = previous.ExternalNetwork.Name
178-
dst.ExternalNetwork.Description = previous.ExternalNetwork.Description
179-
dst.ExternalNetwork.ProjectID = previous.ExternalNetwork.ProjectID
180-
dst.ExternalNetwork.Tags = previous.ExternalNetwork.Tags
181-
dst.ExternalNetwork.TagsAny = previous.ExternalNetwork.TagsAny
182-
dst.ExternalNetwork.NotTags = previous.ExternalNetwork.NotTags
183-
dst.ExternalNetwork.NotTagsAny = previous.ExternalNetwork.NotTagsAny
174+
dst.ExternalNetwork.Filter = previous.ExternalNetwork.Filter
184175
}
185176

186177
// Restore fields not present in v1alpha6
@@ -227,15 +218,15 @@ func Convert_v1alpha6_OpenStackClusterSpec_To_v1beta1_OpenStackClusterSpec(in *O
227218
}
228219

229220
if in.Network != (NetworkFilter{}) {
230-
out.Network = &infrav1.NetworkFilter{}
231-
if err := Convert_v1alpha6_NetworkFilter_To_v1beta1_NetworkFilter(&in.Network, out.Network, s); err != nil {
221+
out.Network = &infrav1.NetworkParam{}
222+
if err := Convert_v1alpha6_NetworkFilter_To_v1beta1_NetworkParam(&in.Network, out.Network, s); err != nil {
232223
return err
233224
}
234225
}
235226

236227
if in.ExternalNetworkID != "" {
237-
out.ExternalNetwork = &infrav1.NetworkFilter{
238-
ID: in.ExternalNetworkID,
228+
out.ExternalNetwork = &infrav1.NetworkParam{
229+
ID: &in.ExternalNetworkID,
239230
}
240231
}
241232

@@ -294,13 +285,13 @@ func Convert_v1beta1_OpenStackClusterSpec_To_v1alpha6_OpenStackClusterSpec(in *i
294285
}
295286

296287
if in.Network != nil {
297-
if err := Convert_v1beta1_NetworkFilter_To_v1alpha6_NetworkFilter(in.Network, &out.Network, s); err != nil {
288+
if err := Convert_v1beta1_NetworkParam_To_v1alpha6_NetworkFilter(in.Network, &out.Network, s); err != nil {
298289
return err
299290
}
300291
}
301292

302-
if in.ExternalNetwork != nil && in.ExternalNetwork.ID != "" {
303-
out.ExternalNetworkID = in.ExternalNetwork.ID
293+
if in.ExternalNetwork != nil && in.ExternalNetwork.ID != nil {
294+
out.ExternalNetworkID = *in.ExternalNetwork.ID
304295
}
305296

306297
if len(in.Subnets) >= 1 {

api/v1alpha6/openstackmachine_conversion.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ func convertNetworksToPorts(networks []NetworkParam, s apiconversion.Scope) ([]i
179179
network := networks[i]
180180

181181
// This will remain null if the network is not specified in NetworkParam
182-
var networkFilter *infrav1.NetworkFilter
182+
var networkFilter *infrav1.NetworkParam
183183

184184
// In v1alpha6, if network.Filter resolved to multiple networks
185185
// then we would add multiple ports. It is not possible to
@@ -189,12 +189,12 @@ func convertNetworksToPorts(networks []NetworkParam, s apiconversion.Scope) ([]i
189189
// create the port.
190190
switch {
191191
case network.UUID != "":
192-
networkFilter = &infrav1.NetworkFilter{
193-
ID: network.UUID,
192+
networkFilter = &infrav1.NetworkParam{
193+
ID: &network.UUID,
194194
}
195195
case network.Filter != (NetworkFilter{}):
196-
networkFilter = &infrav1.NetworkFilter{}
197-
if err := Convert_v1alpha6_NetworkFilter_To_v1beta1_NetworkFilter(&network.Filter, networkFilter, s); err != nil {
196+
networkFilter = &infrav1.NetworkParam{}
197+
if err := Convert_v1alpha6_NetworkFilter_To_v1beta1_NetworkParam(&network.Filter, networkFilter, s); err != nil {
198198
return nil, err
199199
}
200200
}

0 commit comments

Comments
 (0)