@@ -202,79 +202,117 @@ func TestDesiredService(t *testing.T) {
202202func TestActualState (t * testing.T ) {
203203 t .Parallel ()
204204
205- server := testkit .NewMockAPIServer ()
206- server .WithLoadBalancers ([]cloudscale.LoadBalancer {
205+ testCases := []struct {
206+ name string
207+ annotations map [string ]string
208+ }{
207209 {
208- UUID : "00000000-0000-0000-0000-000000000000" ,
209- Name : "k8test-service-test" ,
210- },
211- })
212- server .On ("/v1/load-balancers/pools" , 200 , []cloudscale.LoadBalancerPool {
213- {
214- Name : "tcp/80" ,
215- UUID : "00000000-0000-0000-0000-000000000001" ,
216- LoadBalancer : cloudscale.LoadBalancerStub {
217- UUID : "00000000-0000-0000-0000-000000000000" ,
210+ name : "by UUID only" ,
211+ annotations : map [string ]string {
212+ LoadBalancerUUID : "00000000-0000-0000-0000-000000000000" ,
218213 },
219214 },
220- })
221- server .On ("/v1/load-balancers/pools/00000000-0000-0000-0000-000000000001" +
222- "/members" , 200 , []cloudscale.LoadBalancerPoolMember {
223215 {
224- Name : "10.0.0.1:8080 " ,
225- Pool : cloudscale. LoadBalancerPoolStub {
226- UUID : "00000000-0000-0000-0000-000000000001 " ,
216+ name : "by Name only " ,
217+ annotations : map [ string ] string {
218+ LoadBalancerName : "k8test-service-test " ,
227219 },
228220 },
229- })
230- server .On ("/v1/load-balancers/listeners" , 200 ,
231- []cloudscale.LoadBalancerListener {
232- {
233- Name : "tcp/80" ,
234- Pool : & cloudscale.LoadBalancerPoolStub {
235- UUID : "00000000-0000-0000-0000-000000000001" ,
236- },
221+ {
222+ name : "by matching UUID and Name" ,
223+ annotations : map [string ]string {
224+ LoadBalancerUUID : "00000000-0000-0000-0000-000000000000" ,
225+ LoadBalancerName : "k8test-service-test" ,
237226 },
238227 },
239- )
240- server .On ("/v1/load-balancers/health-monitors" , 200 ,
241- []cloudscale.LoadBalancerHealthMonitor {
242- {
243- Type : "tcp" ,
244- Pool : cloudscale.LoadBalancerPoolStub {
245- UUID : "00000000-0000-0000-0000-000000000001" ,
246- },
228+ {
229+ name : "by none-matching UUID and Name, name has precedence" ,
230+ annotations : map [string ]string {
231+ LoadBalancerUUID : "00000000-0000-ffff-0000-000000000000" ,
232+ LoadBalancerName : "k8test-service-test" ,
247233 },
248234 },
249- )
250- server .On ("/v1/floating-ips" , 200 ,
251- []cloudscale.FloatingIP {},
252- )
253- server .Start ()
254- defer server .Close ()
255-
256- mapper := lbMapper {client : server .Client ()}
257-
258- s := testkit .NewService ("service" ).V1 ()
259- s .Annotations = make (map [string ]string )
260- s .Annotations [LoadBalancerUUID ] = "00000000-0000-0000-0000-000000000000"
261-
262- i := newServiceInfo (s , "" )
235+ }
263236
264- actual , err := actualLbState (t .Context (), & mapper , i )
265- assert .NoError (t , err )
237+ for _ , tc := range testCases {
238+ t .Run (tc .name , func (t * testing.T ) {
239+ t .Parallel ()
266240
267- assert .Equal (t , "k8test-service-test" , actual .lb .Name )
268- assert .Len (t , actual .pools , 1 )
269- assert .Len (t , actual .members , 1 )
270- assert .Len (t , actual .listeners , 1 )
271- assert .Len (t , actual .monitors , 1 )
272-
273- p := actual .pools [0 ]
274- assert .Equal (t , "tcp/80" , p .Name )
275- assert .Equal (t , "10.0.0.1:8080" , actual .members [p ][0 ].Name )
276- assert .Equal (t , "tcp/80" , actual .listeners [p ][0 ].Name )
277- assert .Equal (t , "tcp" , actual .monitors [p ][0 ].Type )
241+ server := testkit .NewMockAPIServer ()
242+ server .WithLoadBalancers ([]cloudscale.LoadBalancer {
243+ {
244+ UUID : "00000000-0000-0000-0000-000000000000" ,
245+ Name : "k8test-service-test" ,
246+ },
247+ })
248+ server .On ("/v1/load-balancers/pools" , 200 ,
249+ []cloudscale.LoadBalancerPool {
250+ {
251+ Name : "tcp/80" ,
252+ UUID : "00000000-0000-0000-0000-000000000001" ,
253+ LoadBalancer : cloudscale.LoadBalancerStub {
254+ UUID : "00000000-0000-0000-0000-000000000000" ,
255+ },
256+ },
257+ })
258+ server .On ("/v1/load-balancers/pools/" +
259+ "00000000-0000-0000-0000-000000000001/members" , 200 ,
260+ []cloudscale.LoadBalancerPoolMember {
261+ {
262+ Name : "10.0.0.1:8080" ,
263+ Pool : cloudscale.LoadBalancerPoolStub {
264+ UUID : "00000000-0000-0000-0000-000000000001" ,
265+ },
266+ },
267+ })
268+ server .On ("/v1/load-balancers/listeners" , 200 ,
269+ []cloudscale.LoadBalancerListener {
270+ {
271+ Name : "tcp/80" ,
272+ Pool : & cloudscale.LoadBalancerPoolStub {
273+ UUID : "00000000-0000-0000-0000-000000000001" ,
274+ },
275+ },
276+ },
277+ )
278+ server .On ("/v1/load-balancers/health-monitors" , 200 ,
279+ []cloudscale.LoadBalancerHealthMonitor {
280+ {
281+ Type : "tcp" ,
282+ Pool : cloudscale.LoadBalancerPoolStub {
283+ UUID : "00000000-0000-0000-0000-000000000001" ,
284+ },
285+ },
286+ },
287+ )
288+ server .On ("/v1/floating-ips" , 200 ,
289+ []cloudscale.FloatingIP {},
290+ )
291+ server .Start ()
292+ defer server .Close ()
293+
294+ mapper := lbMapper {client : server .Client ()}
295+
296+ s := testkit .NewService ("service" ).V1 ()
297+ s .Annotations = tc .annotations
298+ i := newServiceInfo (s , "" )
299+
300+ actual , err := actualLbState (t .Context (), & mapper , i )
301+ assert .NoError (t , err )
302+
303+ assert .Equal (t , "k8test-service-test" , actual .lb .Name )
304+ assert .Len (t , actual .pools , 1 )
305+ assert .Len (t , actual .members , 1 )
306+ assert .Len (t , actual .listeners , 1 )
307+ assert .Len (t , actual .monitors , 1 )
308+
309+ p := actual .pools [0 ]
310+ assert .Equal (t , "tcp/80" , p .Name )
311+ assert .Equal (t , "10.0.0.1:8080" , actual .members [p ][0 ].Name )
312+ assert .Equal (t , "tcp/80" , actual .listeners [p ][0 ].Name )
313+ assert .Equal (t , "tcp" , actual .monitors [p ][0 ].Type )
314+ })
315+ }
278316}
279317
280318func TestNextLbActionsInvalidCalls (t * testing.T ) {
0 commit comments