@@ -188,7 +188,11 @@ func TestCCMLoadBalancers(t *testing.T) {
188188 },
189189 {
190190 name : "Update Load Balancer - Delete Firewall ID" ,
191- f : testUpdateLoadBalancerDeleteFirewall ,
191+ f : testUpdateLoadBalancerDeleteFirewallRemoveID ,
192+ },
193+ {
194+ name : "Update Load Balancer - Delete Firewall ACL" ,
195+ f : testUpdateLoadBalancerDeleteFirewallRemoveACL ,
192196 },
193197 {
194198 name : "Update Load Balancer - Update Firewall ACL" ,
@@ -1290,6 +1294,99 @@ func testUpdateLoadBalancerAddNewFirewallACL(t *testing.T, client *linodego.Clie
12901294 }
12911295}
12921296
1297+ func testUpdateLoadBalancerDeleteFirewallRemoveACL (t * testing.T , client * linodego.Client , fakeAPI * fakeAPI ) {
1298+ svc := & v1.Service {
1299+ ObjectMeta : metav1.ObjectMeta {
1300+ Name : randString (),
1301+ UID : "foobar123" ,
1302+ },
1303+ Spec : v1.ServiceSpec {
1304+ Ports : []v1.ServicePort {
1305+ {
1306+ Name : randString (),
1307+ Protocol : "TCP" ,
1308+ Port : int32 (80 ),
1309+ NodePort : int32 (30000 ),
1310+ },
1311+ },
1312+ },
1313+ }
1314+
1315+ nodes := []* v1.Node {
1316+ {
1317+ Status : v1.NodeStatus {
1318+ Addresses : []v1.NodeAddress {
1319+ {
1320+ Type : v1 .NodeInternalIP ,
1321+ Address : "127.0.0.1" ,
1322+ },
1323+ },
1324+ },
1325+ },
1326+ }
1327+
1328+ lb := newLoadbalancers (client , "us-west" ).(* loadbalancers )
1329+ fakeClientset := fake .NewSimpleClientset ()
1330+ lb .kubeClient = fakeClientset
1331+
1332+ svc .ObjectMeta .SetAnnotations (map [string ]string {
1333+ annotations .AnnLinodeCloudFirewallACL : `{
1334+ "allowList": {
1335+ "ipv4": ["2.2.2.2"]
1336+ }
1337+ }` ,
1338+ })
1339+
1340+ defer func () {
1341+ _ = lb .EnsureLoadBalancerDeleted (context .TODO (), "linodelb" , svc )
1342+ }()
1343+ lbStatus , err := lb .EnsureLoadBalancer (context .TODO (), "linodelb" , svc , nodes )
1344+ if err != nil {
1345+ t .Errorf ("EnsureLoadBalancer returned an error: %s" , err )
1346+ }
1347+ svc .Status .LoadBalancer = * lbStatus
1348+ stubService (fakeClientset , svc )
1349+
1350+ nb , err := lb .getNodeBalancerByStatus (context .TODO (), svc )
1351+ if err != nil {
1352+ t .Fatalf ("failed to get NodeBalancer via status: %s" , err )
1353+ }
1354+
1355+ firewalls , err := lb .client .ListNodeBalancerFirewalls (context .TODO (), nb .ID , & linodego.ListOptions {})
1356+ if err != nil {
1357+ t .Fatalf ("Failed to list nodeBalancer firewalls %s" , err )
1358+ }
1359+
1360+ if len (firewalls ) == 0 {
1361+ t .Fatalf ("No firewalls attached" )
1362+ }
1363+
1364+ if firewalls [0 ].Rules .InboundPolicy != "DROP" {
1365+ t .Errorf ("expected DROP inbound policy, got %s" , firewalls [0 ].Rules .InboundPolicy )
1366+ }
1367+
1368+ fwIPs := firewalls [0 ].Rules .Inbound [0 ].Addresses .IPv4
1369+ if fwIPs == nil {
1370+ t .Errorf ("expected IP, got %v" , fwIPs )
1371+ }
1372+
1373+ svc .ObjectMeta .SetAnnotations (map [string ]string {})
1374+
1375+ err = lb .UpdateLoadBalancer (context .TODO (), "linodelb" , svc , nodes )
1376+ if err != nil {
1377+ t .Errorf ("UpdateLoadBalancer returned an error: %s" , err )
1378+ }
1379+
1380+ firewallsNew , err := lb .client .ListNodeBalancerFirewalls (context .TODO (), nb .ID , & linodego.ListOptions {})
1381+ if err != nil {
1382+ t .Fatalf ("failed to List Firewalls %s" , err )
1383+ }
1384+
1385+ if len (firewallsNew ) != 0 {
1386+ t .Fatalf ("firewall's %d still attached" , firewallsNew [0 ].ID )
1387+ }
1388+ }
1389+
12931390func testUpdateLoadBalancerUpdateFirewallRemoveACLaddID (t * testing.T , client * linodego.Client , fakeAPI * fakeAPI ) {
12941391 svc := & v1.Service {
12951392 ObjectMeta : metav1.ObjectMeta {
@@ -1810,7 +1907,7 @@ func testUpdateLoadBalancerUpdateFirewall(t *testing.T, client *linodego.Client,
18101907 }
18111908}
18121909
1813- func testUpdateLoadBalancerDeleteFirewall (t * testing.T , client * linodego.Client , fakeAPI * fakeAPI ) {
1910+ func testUpdateLoadBalancerDeleteFirewallRemoveID (t * testing.T , client * linodego.Client , fakeAPI * fakeAPI ) {
18141911 firewallCreateOpts := linodego.FirewallCreateOptions {
18151912 Label : "test" ,
18161913 Rules : linodego.FirewallRuleSet {Inbound : []linodego.FirewallRule {{
0 commit comments