@@ -95,12 +95,16 @@ func TestOpenStackMachineSpecToOpenStackServerSpec(t *testing.T) {
95
95
tags := []string {"tag1" , "tag2" }
96
96
userData := & corev1.LocalObjectReference {Name : "server-data-secret" }
97
97
tests := []struct {
98
- name string
99
- spec * infrav1.OpenStackMachineSpec
100
- want * infrav1alpha1.OpenStackServerSpec
98
+ name string
99
+ passWorkerSG bool
100
+ passNetID bool
101
+ spec * infrav1.OpenStackMachineSpec
102
+ want * infrav1alpha1.OpenStackServerSpec
101
103
}{
102
104
{
103
- name : "Test a minimum OpenStackMachineSpec to OpenStackServerSpec conversion" ,
105
+ name : "Test a minimum OpenStackMachineSpec to OpenStackServerSpec conversion" ,
106
+ passWorkerSG : true ,
107
+ passNetID : true ,
104
108
spec : & infrav1.OpenStackMachineSpec {
105
109
Flavor : ptr .To (flavorName ),
106
110
Image : image ,
@@ -117,7 +121,9 @@ func TestOpenStackMachineSpecToOpenStackServerSpec(t *testing.T) {
117
121
},
118
122
},
119
123
{
120
- name : "Test a OpenStackMachineSpec to OpenStackServerSpec conversion with an additional security group" ,
124
+ name : "Test a OpenStackMachineSpec to OpenStackServerSpec conversion with an additional security group" ,
125
+ passWorkerSG : true ,
126
+ passNetID : true ,
121
127
spec : & infrav1.OpenStackMachineSpec {
122
128
Flavor : ptr .To (flavorName ),
123
129
Image : image ,
@@ -138,13 +144,76 @@ func TestOpenStackMachineSpecToOpenStackServerSpec(t *testing.T) {
138
144
UserDataRef : userData ,
139
145
},
140
146
},
147
+ {
148
+ name : "HPC scenario with user-provided ports ignoring cluster network" ,
149
+ passWorkerSG : false ,
150
+ passNetID : false ,
151
+ spec : & infrav1.OpenStackMachineSpec {
152
+ Flavor : ptr .To (flavorName ),
153
+ Image : image ,
154
+ SSHKeyName : sshKeyName ,
155
+ Ports : []infrav1.PortOpts {
156
+ {
157
+ Network : & infrav1.NetworkParam {
158
+ ID : ptr .To (networkUUID ),
159
+ },
160
+ },
161
+ },
162
+ SecurityGroups : []infrav1.SecurityGroupParam {
163
+ {
164
+ ID : ptr .To (extraSecurityGroupUUID ),
165
+ },
166
+ },
167
+ },
168
+ want : & infrav1alpha1.OpenStackServerSpec {
169
+ Flavor : ptr .To (flavorName ),
170
+ IdentityRef : identityRef ,
171
+ Image : image ,
172
+ SSHKeyName : sshKeyName ,
173
+ Ports : []infrav1.PortOpts {
174
+ {
175
+ Network : & infrav1.NetworkParam {
176
+ ID : ptr .To (networkUUID ),
177
+ },
178
+ SecurityGroups : []infrav1.SecurityGroupParam {
179
+ {
180
+ ID : ptr .To (extraSecurityGroupUUID ),
181
+ },
182
+ },
183
+ },
184
+ },
185
+ Tags : tags ,
186
+ UserDataRef : userData ,
187
+ },
188
+ },
141
189
}
142
190
for i := range tests {
143
191
tt := tests [i ]
144
192
t .Run (tt .name , func (t * testing.T ) {
145
- spec := openStackMachineSpecToOpenStackServerSpec (tt .spec , identityRef , tags , "" , userData , & openStackCluster .Status .WorkerSecurityGroup .ID , openStackCluster .Status .Network .ID )
146
- if ! reflect .DeepEqual (spec , tt .want ) {
147
- t .Errorf ("openStackMachineSpecToOpenStackServerSpec() got = %+v, want %+v" , spec , tt .want )
193
+ // Conditionally pass the cluster’s worker SG
194
+ var workerSGPtr * string
195
+ if tt .passWorkerSG {
196
+ workerSGPtr = & openStackCluster .Status .WorkerSecurityGroup .ID
197
+ }
198
+
199
+ // Conditionally pass the cluster’s network ID
200
+ var netID string
201
+ if tt .passNetID && openStackCluster .Status .Network != nil {
202
+ netID = openStackCluster .Status .Network .ID
203
+ }
204
+
205
+ got := openStackMachineSpecToOpenStackServerSpec (
206
+ tt .spec ,
207
+ identityRef ,
208
+ tags ,
209
+ "" ,
210
+ userData ,
211
+ workerSGPtr ,
212
+ netID ,
213
+ )
214
+
215
+ if ! reflect .DeepEqual (got , tt .want ) {
216
+ t .Errorf ("openStackMachineSpecToOpenStackServerSpec() got = %+v, want %+v" , got , tt .want )
148
217
}
149
218
})
150
219
}
0 commit comments