@@ -36,7 +36,7 @@ var _ = Describe("Network", func() {
36
36
errorMessage = "Error"
37
37
)
38
38
39
- error := errors .New (errorMessage )
39
+ fakeError := errors .New (errorMessage )
40
40
var ( // Declare shared vars.
41
41
mockCtrl * gomock.Controller
42
42
mockClient * csapi.CloudStackClient
@@ -68,49 +68,61 @@ var _ = Describe("Network", func() {
68
68
mockCtrl .Finish ()
69
69
})
70
70
71
- It ("calls to create an isolated network when not found" , func () {
72
- dummies .Zone1 .Network = dummies .ISONet1
73
- dummies .Zone1 .Network .ID = ""
74
- dummies .CSCluster .Status .Zones = capcv1.ZoneStatusMap {dummies .Zone1 .ID : dummies .Zone1 }
75
- dummies .CSCluster .Status .PublicIPNetworkID = dummies .ISONet1 .ID
76
-
77
- nos .EXPECT ().GetNetworkOfferingID (gomock .Any ()).Return ("someOfferingID" , 1 , nil )
78
- ns .EXPECT ().NewCreateNetworkParams (gomock .Any (), gomock .Any (), gomock .Any (), gomock .Any ()).
79
- Return (& csapi.CreateNetworkParams {})
80
- ns .EXPECT ().GetNetworkByName (dummies .ISONet1 .Name ).Return (nil , 0 , nil )
81
- ns .EXPECT ().GetNetworkByID (dummies .ISONet1 .ID ).Return (nil , 0 , nil )
82
- ns .EXPECT ().CreateNetwork (gomock .Any ()).Return (& csapi.CreateNetworkResponse {Id : dummies .ISONet1 .ID }, nil )
83
- as .EXPECT ().NewListPublicIpAddressesParams ().Return (& csapi.ListPublicIpAddressesParams {})
84
- as .EXPECT ().ListPublicIpAddresses (gomock .Any ()).
85
- Return (& csapi.ListPublicIpAddressesResponse {
86
- Count : 1 ,
87
- PublicIpAddresses : []* csapi.PublicIpAddress {{Id : dummies .PublicIPID , Ipaddress : "fakeIP" }}}, nil )
88
- as .EXPECT ().NewAssociateIpAddressParams ().Return (& csapi.AssociateIpAddressParams {})
89
- as .EXPECT ().AssociateIpAddress (gomock .Any ())
90
- fs .EXPECT ().NewCreateEgressFirewallRuleParams (dummies .ISONet1 .ID , cloud .NetworkProtocolTCP ).
91
- Return (& csapi.CreateEgressFirewallRuleParams {})
92
- fs .EXPECT ().CreateEgressFirewallRule (& csapi.CreateEgressFirewallRuleParams {}).
93
- Return (& csapi.CreateEgressFirewallRuleResponse {}, nil )
94
-
95
- // Will add cluster tag once to Network and once to PublicIP.
96
- createdByResponse := & csapi.ListTagsResponse {Tags : []* csapi.Tag {{Key : cloud .CreatedByCAPCTagName , Value : "1" }}}
97
- gomock .InOrder (
98
- rs .EXPECT ().NewListTagsParams ().Return (& csapi.ListTagsParams {}),
99
- rs .EXPECT ().ListTags (gomock .Any ()).Return (createdByResponse , nil ),
100
- rs .EXPECT ().NewListTagsParams ().Return (& csapi.ListTagsParams {}),
101
- rs .EXPECT ().ListTags (gomock .Any ()).Return (createdByResponse , nil ))
102
-
103
- // Will add creation and cluster tags to network and PublicIP.
104
- rs .EXPECT ().NewCreateTagsParams (gomock .Any (), gomock .Any (), gomock .Any ()).
105
- Return (& csapi.CreateTagsParams {}).Times (4 )
106
- rs .EXPECT ().CreateTags (gomock .Any ()).Return (& csapi.CreateTagsResponse {}, nil ).Times (4 )
107
-
108
- lbs .EXPECT ().NewListLoadBalancerRulesParams ().Return (& csapi.ListLoadBalancerRulesParams {})
109
- lbs .EXPECT ().ListLoadBalancerRules (gomock .Any ()).Return (
110
- & csapi.ListLoadBalancerRulesResponse {LoadBalancerRules : []* csapi.LoadBalancerRule {
111
- {Publicport : strconv .Itoa (int (dummies .EndPointPort )), Id : dummies .LBRuleID }}}, nil )
112
-
113
- Ω (client .GetOrCreateIsolatedNetwork (dummies .CSZone1 , dummies .CSISONet1 , dummies .CSCluster )).Should (Succeed ())
71
+ Context ("Get or Create Isolated network in CloudStack" , func () {
72
+ It ("calls to create an isolated network when not found" , func () {
73
+ dummies .Zone1 .Network = dummies .ISONet1
74
+ dummies .Zone1 .Network .ID = ""
75
+ dummies .CSCluster .Status .Zones = capcv1.ZoneStatusMap {dummies .Zone1 .ID : dummies .Zone1 }
76
+ dummies .CSCluster .Status .PublicIPNetworkID = dummies .ISONet1 .ID
77
+
78
+ nos .EXPECT ().GetNetworkOfferingID (gomock .Any ()).Return ("someOfferingID" , 1 , nil )
79
+ ns .EXPECT ().NewCreateNetworkParams (gomock .Any (), gomock .Any (), gomock .Any (), gomock .Any ()).
80
+ Return (& csapi.CreateNetworkParams {})
81
+ ns .EXPECT ().GetNetworkByName (dummies .ISONet1 .Name ).Return (nil , 0 , nil )
82
+ ns .EXPECT ().GetNetworkByID (dummies .ISONet1 .ID ).Return (nil , 0 , nil )
83
+ ns .EXPECT ().CreateNetwork (gomock .Any ()).Return (& csapi.CreateNetworkResponse {Id : dummies .ISONet1 .ID }, nil )
84
+ as .EXPECT ().NewListPublicIpAddressesParams ().Return (& csapi.ListPublicIpAddressesParams {})
85
+ as .EXPECT ().ListPublicIpAddresses (gomock .Any ()).
86
+ Return (& csapi.ListPublicIpAddressesResponse {
87
+ Count : 1 ,
88
+ PublicIpAddresses : []* csapi.PublicIpAddress {{Id : dummies .PublicIPID , Ipaddress : "fakeIP" }}}, nil )
89
+ as .EXPECT ().NewAssociateIpAddressParams ().Return (& csapi.AssociateIpAddressParams {})
90
+ as .EXPECT ().AssociateIpAddress (gomock .Any ())
91
+ fs .EXPECT ().NewCreateEgressFirewallRuleParams (dummies .ISONet1 .ID , cloud .NetworkProtocolTCP ).
92
+ Return (& csapi.CreateEgressFirewallRuleParams {})
93
+ fs .EXPECT ().CreateEgressFirewallRule (& csapi.CreateEgressFirewallRuleParams {}).
94
+ Return (& csapi.CreateEgressFirewallRuleResponse {}, nil )
95
+
96
+ // Will add cluster tag once to Network and once to PublicIP.
97
+ createdByResponse := & csapi.ListTagsResponse {Tags : []* csapi.Tag {{Key : cloud .CreatedByCAPCTagName , Value : "1" }}}
98
+ gomock .InOrder (
99
+ rs .EXPECT ().NewListTagsParams ().Return (& csapi.ListTagsParams {}),
100
+ rs .EXPECT ().ListTags (gomock .Any ()).Return (createdByResponse , nil ),
101
+ rs .EXPECT ().NewListTagsParams ().Return (& csapi.ListTagsParams {}),
102
+ rs .EXPECT ().ListTags (gomock .Any ()).Return (createdByResponse , nil ))
103
+
104
+ // Will add creation and cluster tags to network and PublicIP.
105
+ rs .EXPECT ().NewCreateTagsParams (gomock .Any (), gomock .Any (), gomock .Any ()).
106
+ Return (& csapi.CreateTagsParams {}).Times (4 )
107
+ rs .EXPECT ().CreateTags (gomock .Any ()).Return (& csapi.CreateTagsResponse {}, nil ).Times (4 )
108
+
109
+ lbs .EXPECT ().NewListLoadBalancerRulesParams ().Return (& csapi.ListLoadBalancerRulesParams {})
110
+ lbs .EXPECT ().ListLoadBalancerRules (gomock .Any ()).Return (
111
+ & csapi.ListLoadBalancerRulesResponse {LoadBalancerRules : []* csapi.LoadBalancerRule {
112
+ {Publicport : strconv .Itoa (int (dummies .EndPointPort )), Id : dummies .LBRuleID }}}, nil )
113
+
114
+ Ω (client .GetOrCreateIsolatedNetwork (dummies .CSZone1 , dummies .CSISONet1 , dummies .CSCluster )).Should (Succeed ())
115
+ })
116
+
117
+ It ("fails to get network offering from CloudStack" , func () {
118
+ ns .EXPECT ().GetNetworkByName (dummies .ISONet1 .Name ).Return (nil , 0 , nil )
119
+ ns .EXPECT ().GetNetworkByID (dummies .ISONet1 .ID ).Return (nil , 0 , nil )
120
+ nos .EXPECT ().GetNetworkOfferingID (gomock .Any ()).Return ("" , - 1 , fakeError )
121
+
122
+ err := client .GetOrCreateIsolatedNetwork (dummies .CSZone1 , dummies .CSISONet1 , dummies .CSCluster )
123
+ Ω (err ).ShouldNot (Succeed ())
124
+ Ω (err .Error ()).Should (ContainSubstring ("creating a new isolated network" ))
125
+ })
114
126
})
115
127
116
128
Context ("for a closed firewall" , func () {
@@ -257,7 +269,7 @@ var _ = Describe("Network", func() {
257
269
It ("Failed to list LB rules" , func () {
258
270
lbs .EXPECT ().NewListLoadBalancerRulesParams ().Return (& csapi.ListLoadBalancerRulesParams {})
259
271
lbs .EXPECT ().ListLoadBalancerRules (gomock .Any ()).Return (
260
- nil , error )
272
+ nil , fakeError )
261
273
262
274
dummies .CSISONet1 .Status .LBRuleID = ""
263
275
Ω (client .ResolveLoadBalancerRuleDetails (dummies .CSZone1 , dummies .CSISONet1 , dummies .CSCluster ).Error ()).
@@ -298,7 +310,7 @@ var _ = Describe("Network", func() {
298
310
Return (lbip )
299
311
lbs .EXPECT ().ListLoadBalancerRuleInstances (lbip ).Return (& csapi.ListLoadBalancerRuleInstancesResponse {}, nil )
300
312
lbs .EXPECT ().NewAssignToLoadBalancerRuleParams (dummies .CSISONet1 .Status .LBRuleID ).Return (albp )
301
- lbs .EXPECT ().AssignToLoadBalancerRule (albp ).Return (nil , error )
313
+ lbs .EXPECT ().AssignToLoadBalancerRule (albp ).Return (nil , fakeError )
302
314
303
315
Ω (client .AssignVMToLoadBalancerRule (dummies .CSISONet1 , * dummies .CSMachine1 .Spec .InstanceID )).ShouldNot (Succeed ())
304
316
})
@@ -337,7 +349,7 @@ var _ = Describe("Network", func() {
337
349
It ("Fails to resolve load balancer rule details" , func () {
338
350
lbs .EXPECT ().NewListLoadBalancerRulesParams ().Return (& csapi.ListLoadBalancerRulesParams {})
339
351
lbs .EXPECT ().ListLoadBalancerRules (gomock .Any ()).
340
- Return (nil , error )
352
+ Return (nil , fakeError )
341
353
err := client .GetOrCreateLoadBalancerRule (dummies .CSZone1 , dummies .CSISONet1 , dummies .CSCluster )
342
354
Ω (err ).ShouldNot (Succeed ())
343
355
Ω (err .Error ()).Should (ContainSubstring (errorMessage ))
@@ -351,7 +363,7 @@ var _ = Describe("Network", func() {
351
363
lbs .EXPECT ().NewCreateLoadBalancerRuleParams (gomock .Any (), gomock .Any (), gomock .Any (), gomock .Any ()).
352
364
Return (& csapi.CreateLoadBalancerRuleParams {})
353
365
lbs .EXPECT ().CreateLoadBalancerRule (gomock .Any ()).
354
- Return (nil , error )
366
+ Return (nil , fakeError )
355
367
err := client .GetOrCreateLoadBalancerRule (dummies .CSZone1 , dummies .CSISONet1 , dummies .CSCluster )
356
368
Ω (err ).ShouldNot (Succeed ())
357
369
Ω (err .Error ()).Should (Equal (errorMessage ))
@@ -371,15 +383,15 @@ var _ = Describe("Network", func() {
371
383
It ("Network deletion failure" , func () {
372
384
dnp := & csapi.DeleteNetworkParams {}
373
385
ns .EXPECT ().NewDeleteNetworkParams (dummies .ISONet1 .ID ).Return (dnp )
374
- ns .EXPECT ().DeleteNetwork (dnp ).Return (nil , error )
386
+ ns .EXPECT ().DeleteNetwork (dnp ).Return (nil , fakeError )
375
387
err := client .DeleteNetwork (dummies .ISONet1 )
376
388
Ω (err ).ShouldNot (Succeed ())
377
389
Ω (err .Error ()).Should (ContainSubstring ("deleting network with id " + dummies .ISONet1 .ID ))
378
390
})
379
391
})
380
392
381
393
Context ("Dispose or cleanup isolate network resources" , func () {
382
- It ("Delete all isolated network resources when not managed by CAPC" , func () {
394
+ It ("delete all isolated network resources when not managed by CAPC" , func () {
383
395
dummies .CSISONet1 .Status .PublicIPID = "publicIpId"
384
396
rtlp := & csapi.ListTagsParams {}
385
397
rs .EXPECT ().NewListTagsParams ().Return (rtlp ).Times (4 )
@@ -389,21 +401,41 @@ var _ = Describe("Network", func() {
389
401
Ω (client .DisposeIsoNetResources (dummies .CSZone1 , dummies .CSISONet1 , dummies .CSCluster )).Should (Succeed ())
390
402
})
391
403
392
- It ("Delete all isolated network resources when managed by CAPC" , func () {
404
+ It ("delete all isolated network resources when managed by CAPC" , func () {
393
405
dummies .CSISONet1 .Status .PublicIPID = "publicIpId"
394
406
rtdp := & csapi.DeleteTagsParams {}
395
407
rtlp := & csapi.ListTagsParams {}
408
+ dap := & csapi.DisassociateIpAddressParams {}
396
409
createdByCAPCResponse := & csapi.ListTagsResponse {Tags : []* csapi.Tag {{Key : cloud .CreatedByCAPCTagName , Value : "1" }}}
397
- rs .EXPECT ().NewDeleteTagsParams (gomock .Any (), gomock .Any ()).Return (rtdp )
398
- rs .EXPECT ().DeleteTags (rtdp ).Return (& csapi.DeleteTagsResponse {}, nil )
410
+ rs .EXPECT ().NewDeleteTagsParams (gomock .Any (), gomock .Any ()).Return (rtdp ). Times ( 2 )
411
+ rs .EXPECT ().DeleteTags (rtdp ).Return (& csapi.DeleteTagsResponse {}, nil ). Times ( 2 )
399
412
rs .EXPECT ().NewListTagsParams ().Return (rtlp ).Times (4 )
400
- rs .EXPECT ().ListTags (rtlp ).Return (createdByCAPCResponse , nil )
401
- rs .EXPECT ().ListTags (rtlp ).Return (& csapi.ListTagsResponse {}, nil ).Times (3 )
413
+ rs .EXPECT ().ListTags (rtlp ).Return (createdByCAPCResponse , nil ). Times ( 3 )
414
+ rs .EXPECT ().ListTags (rtlp ).Return (& csapi.ListTagsResponse {}, nil ).Times (1 )
402
415
as .EXPECT ().GetPublicIpAddressByID (dummies .CSISONet1 .Status .PublicIPID ).Return (& csapi.PublicIpAddress {}, 1 , nil )
416
+ as .EXPECT ().NewDisassociateIpAddressParams (dummies .CSISONet1 .Status .PublicIPID ).Return (dap )
417
+ as .EXPECT ().DisassociateIpAddress (dap ).Return (& csapi.DisassociateIpAddressResponse {}, nil )
403
418
404
419
Ω (client .DisposeIsoNetResources (dummies .CSZone1 , dummies .CSISONet1 , dummies .CSCluster )).Should (Succeed ())
405
420
})
406
421
422
+ It ("disassociate IP address fails due to failure in deleting a resource i.e., disassociate Public IP" , func () {
423
+ dummies .CSISONet1 .Status .PublicIPID = "publicIpId"
424
+ rtdp := & csapi.DeleteTagsParams {}
425
+ rtlp := & csapi.ListTagsParams {}
426
+ dap := & csapi.DisassociateIpAddressParams {}
427
+ createdByCAPCResponse := & csapi.ListTagsResponse {Tags : []* csapi.Tag {{Key : cloud .CreatedByCAPCTagName , Value : "1" }}}
428
+ rs .EXPECT ().NewDeleteTagsParams (gomock .Any (), gomock .Any ()).Return (rtdp ).Times (2 )
429
+ rs .EXPECT ().DeleteTags (rtdp ).Return (& csapi.DeleteTagsResponse {}, nil ).Times (2 )
430
+ rs .EXPECT ().NewListTagsParams ().Return (rtlp ).Times (2 )
431
+ rs .EXPECT ().ListTags (rtlp ).Return (createdByCAPCResponse , nil ).Times (2 )
432
+ as .EXPECT ().GetPublicIpAddressByID (dummies .CSISONet1 .Status .PublicIPID ).Return (& csapi.PublicIpAddress {}, 1 , nil )
433
+ as .EXPECT ().NewDisassociateIpAddressParams (dummies .CSISONet1 .Status .PublicIPID ).Return (dap )
434
+ as .EXPECT ().DisassociateIpAddress (dap ).Return (nil , fakeError )
435
+
436
+ Ω (client .DisposeIsoNetResources (dummies .CSZone1 , dummies .CSISONet1 , dummies .CSCluster )).ShouldNot (Succeed ())
437
+ })
438
+
407
439
})
408
440
409
441
Context ("Networking Integ Tests" , Label ("integ" ), func () {
0 commit comments