Skip to content

Commit 0ec3766

Browse files
authored
Fix Load Balander acceptance test (#501)
* replace deprecated disable function * fix order of go imports
1 parent b58bd0f commit 0ec3766

1 file changed

Lines changed: 38 additions & 4 deletions

File tree

stackit/internal/services/loadbalancer/loadbalancer_acc_test.go

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,17 @@ package loadbalancer_test
33
import (
44
"context"
55
"fmt"
6+
"strings"
67
"testing"
78

89
"github.com/hashicorp/terraform-plugin-testing/helper/acctest"
910
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
1011
"github.com/hashicorp/terraform-plugin-testing/terraform"
12+
"github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/wait"
13+
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
1114

1215
"github.com/stackitcloud/stackit-sdk-go/core/config"
16+
"github.com/stackitcloud/stackit-sdk-go/core/utils"
1317
"github.com/stackitcloud/stackit-sdk-go/services/loadbalancer"
1418
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/testutil"
1519
)
@@ -354,7 +358,7 @@ type OpenStack struct {
354358
password string
355359
}
356360

357-
func testAccCheckLoadBalancerDestroy(_ *terraform.State) error {
361+
func testAccCheckLoadBalancerDestroy(s *terraform.State) error {
358362
ctx := context.Background()
359363
var client *loadbalancer.APIClient
360364
var err error
@@ -371,11 +375,41 @@ func testAccCheckLoadBalancerDestroy(_ *terraform.State) error {
371375
return fmt.Errorf("creating client: %w", err)
372376
}
373377

374-
// Disabling loadbalancer functionality will delete all load balancers
375-
_, err = client.DisableServiceExecute(ctx, testutil.ProjectId)
378+
loadbalancersToDestroy := []string{}
379+
for _, rs := range s.RootModule().Resources {
380+
if rs.Type != "stackit_loadbalancer" {
381+
continue
382+
}
383+
// loadbalancer terraform ID: = "[project_id],[name]"
384+
loadbalancerName := strings.Split(rs.Primary.ID, core.Separator)[1]
385+
loadbalancersToDestroy = append(loadbalancersToDestroy, loadbalancerName)
386+
}
387+
388+
loadbalancersResp, err := client.ListLoadBalancers(ctx, testutil.ProjectId).Execute()
376389
if err != nil {
377-
return fmt.Errorf("disabling loadbalancer functionality: %w", err)
390+
return fmt.Errorf("getting loadbalancersResp: %w", err)
391+
}
392+
393+
if loadbalancersResp.LoadBalancers == nil || (loadbalancersResp.LoadBalancers != nil && len(*loadbalancersResp.LoadBalancers) == 0) {
394+
fmt.Print("No load balancers found for project \n")
395+
return nil
378396
}
379397

398+
items := *loadbalancersResp.LoadBalancers
399+
for i := range items {
400+
if items[i].Name == nil {
401+
continue
402+
}
403+
if utils.Contains(loadbalancersToDestroy, *items[i].Name) {
404+
_, err := client.DeleteLoadBalancerExecute(ctx, testutil.ProjectId, *items[i].Name)
405+
if err != nil {
406+
return fmt.Errorf("destroying load balancer %s during CheckDestroy: %w", *items[i].Name, err)
407+
}
408+
_, err = wait.DeleteLoadBalancerWaitHandler(ctx, client, testutil.ProjectId, *items[i].Name).WaitWithContext(ctx)
409+
if err != nil {
410+
return fmt.Errorf("destroying load balancer %s during CheckDestroy: waiting for deletion %w", *items[i].Name, err)
411+
}
412+
}
413+
}
380414
return nil
381415
}

0 commit comments

Comments
 (0)