@@ -64,6 +64,61 @@ func TestOpenStackMachineSpecToOpenStackServerSpec(t *testing.T) {
6464 },
6565 },
6666 }
67+ openStackClusterWithSubnet := & infrav1.OpenStackCluster {
68+ Spec : infrav1.OpenStackClusterSpec {
69+ ManagedSecurityGroups : & infrav1.ManagedSecurityGroups {},
70+ Subnets : []infrav1.SubnetParam {
71+ {
72+ ID : ptr .To (subnetUUID ),
73+ },
74+ },
75+ },
76+ Status : infrav1.OpenStackClusterStatus {
77+ WorkerSecurityGroup : & infrav1.SecurityGroupStatus {
78+ ID : workerSecurityGroupUUID ,
79+ },
80+ Network : & infrav1.NetworkStatusWithSubnets {
81+ NetworkStatus : infrav1.NetworkStatus {
82+ ID : networkUUID ,
83+ },
84+ },
85+ },
86+ }
87+ openStackClusterNoNetwork := & infrav1.OpenStackCluster {
88+ Spec : infrav1.OpenStackClusterSpec {
89+ ManagedSecurityGroups : & infrav1.ManagedSecurityGroups {},
90+ Subnets : []infrav1.SubnetParam {
91+ {
92+ ID : ptr .To (subnetUUID ),
93+ },
94+ },
95+ },
96+ Status : infrav1.OpenStackClusterStatus {
97+ WorkerSecurityGroup : & infrav1.SecurityGroupStatus {
98+ ID : workerSecurityGroupUUID ,
99+ },
100+ },
101+ }
102+ openStackClusterNetworkWithoutID := & infrav1.OpenStackCluster {
103+ Spec : infrav1.OpenStackClusterSpec {
104+ ManagedSecurityGroups : & infrav1.ManagedSecurityGroups {},
105+ Subnets : []infrav1.SubnetParam {
106+ {
107+ ID : ptr .To (subnetUUID ),
108+ },
109+ },
110+ },
111+ Status : infrav1.OpenStackClusterStatus {
112+ WorkerSecurityGroup : & infrav1.SecurityGroupStatus {
113+ ID : workerSecurityGroupUUID ,
114+ },
115+ Network : & infrav1.NetworkStatusWithSubnets {
116+ NetworkStatus : infrav1.NetworkStatus {
117+ ID : "" ,
118+ },
119+ },
120+ },
121+ }
67122 portOpts := []infrav1.PortOpts {
68123 {
69124 Network : & infrav1.NetworkParam {
@@ -91,24 +146,43 @@ func TestOpenStackMachineSpecToOpenStackServerSpec(t *testing.T) {
91146 },
92147 },
93148 }
149+ portOptsWithAdditionalSubnet := []infrav1.PortOpts {
150+ {
151+ Network : & infrav1.NetworkParam {
152+ ID : ptr .To (openStackCluster .Status .Network .ID ),
153+ },
154+ SecurityGroups : []infrav1.SecurityGroupParam {
155+ {
156+ ID : ptr .To (openStackCluster .Status .WorkerSecurityGroup .ID ),
157+ },
158+ },
159+ FixedIPs : []infrav1.FixedIP {
160+ {
161+ Subnet : & infrav1.SubnetParam {
162+ ID : ptr .To (subnetUUID ),
163+ },
164+ },
165+ },
166+ },
167+ }
94168 image := infrav1.ImageParam {Filter : & infrav1.ImageFilter {Name : ptr .To ("my-image" )}}
95169 tags := []string {"tag1" , "tag2" }
96170 userData := & corev1.LocalObjectReference {Name : "server-data-secret" }
97171 tests := []struct {
98- name string
99- spec * infrav1.OpenStackMachineSpec
100- clusterNetwork * infrav1.NetworkStatusWithSubnets
101- want * infrav1alpha1.OpenStackServerSpec
102- wantErr bool
172+ name string
173+ cluster * infrav1.OpenStackCluster
174+ spec * infrav1.OpenStackMachineSpec
175+ want * infrav1alpha1.OpenStackServerSpec
176+ wantErr bool
103177 }{
104178 {
105- name : "Test a minimum OpenStackMachineSpec to OpenStackServerSpec conversion" ,
179+ name : "Test a minimum OpenStackMachineSpec to OpenStackServerSpec conversion" ,
180+ cluster : openStackCluster ,
106181 spec : & infrav1.OpenStackMachineSpec {
107182 Flavor : ptr .To (flavorName ),
108183 Image : image ,
109184 SSHKeyName : sshKeyName ,
110185 },
111- clusterNetwork : openStackCluster .Status .Network ,
112186 want : & infrav1alpha1.OpenStackServerSpec {
113187 Flavor : ptr .To (flavorName ),
114188 IdentityRef : identityRef ,
@@ -120,7 +194,8 @@ func TestOpenStackMachineSpecToOpenStackServerSpec(t *testing.T) {
120194 },
121195 },
122196 {
123- name : "Test an OpenStackMachineSpec to OpenStackServerSpec conversion with an additional security group" ,
197+ name : "Test an OpenStackMachineSpec to OpenStackServerSpec conversion with an additional security group" ,
198+ cluster : openStackCluster ,
124199 spec : & infrav1.OpenStackMachineSpec {
125200 Flavor : ptr .To (flavorName ),
126201 Image : image ,
@@ -131,7 +206,6 @@ func TestOpenStackMachineSpecToOpenStackServerSpec(t *testing.T) {
131206 },
132207 },
133208 },
134- clusterNetwork : openStackCluster .Status .Network ,
135209 want : & infrav1alpha1.OpenStackServerSpec {
136210 Flavor : ptr .To (flavorName ),
137211 IdentityRef : identityRef ,
@@ -143,14 +217,32 @@ func TestOpenStackMachineSpecToOpenStackServerSpec(t *testing.T) {
143217 },
144218 },
145219 {
146- name : "Test an OpenStackMachineSpec to OpenStackServerSpec conversion with flavor and flavorID specified" ,
220+ name : "Test a OpenStackMachineSpec to OpenStackServerSpec conversion with a specified subnet" ,
221+ cluster : openStackClusterWithSubnet ,
222+ spec : & infrav1.OpenStackMachineSpec {
223+ Flavor : ptr .To (flavorName ),
224+ Image : image ,
225+ SSHKeyName : sshKeyName ,
226+ },
227+ want : & infrav1alpha1.OpenStackServerSpec {
228+ Flavor : ptr .To (flavorName ),
229+ IdentityRef : identityRef ,
230+ Image : image ,
231+ SSHKeyName : sshKeyName ,
232+ Ports : portOptsWithAdditionalSubnet ,
233+ Tags : tags ,
234+ UserDataRef : userData ,
235+ },
236+ },
237+ {
238+ name : "Test an OpenStackMachineSpec to OpenStackServerSpec conversion with flavor and flavorID specified" ,
239+ cluster : openStackCluster ,
147240 spec : & infrav1.OpenStackMachineSpec {
148241 Flavor : ptr .To (flavorName ),
149242 FlavorID : ptr .To (flavorUUID ),
150243 Image : image ,
151244 SSHKeyName : sshKeyName ,
152245 },
153- clusterNetwork : openStackCluster .Status .Network ,
154246 want : & infrav1alpha1.OpenStackServerSpec {
155247 Flavor : ptr .To (flavorName ),
156248 FlavorID : ptr .To (flavorUUID ),
@@ -163,13 +255,13 @@ func TestOpenStackMachineSpecToOpenStackServerSpec(t *testing.T) {
163255 },
164256 },
165257 {
166- name : "Test an OpenStackMachineSpec to OpenStackServerSpec conversion with flavorID specified but not flavor" ,
258+ name : "Test an OpenStackMachineSpec to OpenStackServerSpec conversion with flavorID specified but not flavor" ,
259+ cluster : openStackCluster ,
167260 spec : & infrav1.OpenStackMachineSpec {
168261 FlavorID : ptr .To (flavorUUID ),
169262 Image : image ,
170263 SSHKeyName : sshKeyName ,
171264 },
172- clusterNetwork : openStackCluster .Status .Network ,
173265 want : & infrav1alpha1.OpenStackServerSpec {
174266 FlavorID : ptr .To (flavorUUID ),
175267 IdentityRef : identityRef ,
@@ -188,7 +280,7 @@ func TestOpenStackMachineSpecToOpenStackServerSpec(t *testing.T) {
188280 }},
189281 SecurityGroups : []infrav1.SecurityGroupParam {{ID : ptr .To (extraSecurityGroupUUID )}},
190282 },
191- clusterNetwork : nil ,
283+ cluster : openStackClusterNoNetwork ,
192284 want : & infrav1alpha1.OpenStackServerSpec {
193285 IdentityRef : identityRef ,
194286 Ports : []infrav1.PortOpts {{
@@ -209,7 +301,7 @@ func TestOpenStackMachineSpecToOpenStackServerSpec(t *testing.T) {
209301 Network : & infrav1.NetworkParam {ID : ptr .To (networkUUID )},
210302 }},
211303 },
212- clusterNetwork : nil ,
304+ cluster : openStackClusterNoNetwork ,
213305 want : & infrav1alpha1.OpenStackServerSpec {
214306 IdentityRef : identityRef ,
215307 Ports : []infrav1.PortOpts {{
@@ -228,9 +320,9 @@ func TestOpenStackMachineSpecToOpenStackServerSpec(t *testing.T) {
228320 SSHKeyName : sshKeyName ,
229321 // No ports defined
230322 },
231- clusterNetwork : nil ,
232- want : nil ,
233- wantErr : true ,
323+ cluster : openStackClusterNoNetwork ,
324+ want : nil ,
325+ wantErr : true ,
234326 },
235327 {
236328 name : "Empty cluster network ID, machine defines explicit ports" ,
@@ -241,7 +333,7 @@ func TestOpenStackMachineSpecToOpenStackServerSpec(t *testing.T) {
241333 Network : & infrav1.NetworkParam {ID : ptr .To (networkUUID )},
242334 }},
243335 },
244- clusterNetwork : & infrav1. NetworkStatusWithSubnets { NetworkStatus : infrav1. NetworkStatus { ID : "" }} ,
336+ cluster : openStackClusterNetworkWithoutID ,
245337 want : & infrav1alpha1.OpenStackServerSpec {
246338 Flavor : ptr .To (flavorName ),
247339 IdentityRef : identityRef ,
@@ -258,7 +350,7 @@ func TestOpenStackMachineSpecToOpenStackServerSpec(t *testing.T) {
258350 for i := range tests {
259351 tt := tests [i ]
260352 t .Run (tt .name , func (t * testing.T ) {
261- spec , err := openStackMachineSpecToOpenStackServerSpec (tt .spec , identityRef , tags , "" , userData , & openStackCluster .Status .WorkerSecurityGroup .ID , tt .clusterNetwork )
353+ spec , err := openStackMachineSpecToOpenStackServerSpec (tt .spec , identityRef , tags , "" , userData , & openStackCluster .Status .WorkerSecurityGroup .ID , tt .cluster )
262354 if (err != nil ) != tt .wantErr {
263355 t .Errorf ("openStackMachineSpecToOpenStackServerSpec() error = %v, wantErr %v" , err , tt .wantErr )
264356 return
0 commit comments