diff --git a/internal/provider/resource_cloudflare_load_balancer_monitor_test.go b/internal/provider/resource_cloudflare_load_balancer_monitor_test.go index 15b7aafab2..544b5c9ea4 100644 --- a/internal/provider/resource_cloudflare_load_balancer_monitor_test.go +++ b/internal/provider/resource_cloudflare_load_balancer_monitor_test.go @@ -3,16 +3,58 @@ package provider import ( "context" "fmt" + "log" "os" "regexp" "testing" "time" "github.com/cloudflare/cloudflare-go" + "github.com/hashicorp/terraform-plugin-log/tflog" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/pkg/errors" ) +func init() { + resource.AddTestSweepers("cloudflare_load_balancer_monitor", &resource.Sweeper{ + Name: "cloudflare_load_balancer_monitor", + F: testSweepCloudflareLoadBalancerMonitors, + }) +} + +func testSweepCloudflareLoadBalancerMonitors(r string) error { + ctx := context.Background() + client, clientErr := sharedClient() + if clientErr != nil { + tflog.Error(ctx, fmt.Sprintf("Failed to create Cloudflare client: %s", clientErr)) + } + + accountID := os.Getenv("CLOUDFLARE_ACCOUNT_ID") + if accountID == "" { + return errors.New("CLOUDFLARE_ACCOUNT_ID must be set") + } + + client.AccountID = accountID + monitors, err := client.ListLoadBalancerMonitors(ctx) + if err != nil { + tflog.Error(ctx, fmt.Sprintf("Failed to fetch Cloudflare Load Balancer Monitors: %s", err)) + } + + if len(monitors) == 0 { + log.Print("[DEBUG] No Cloudflare Load Balancer Monitors to sweep") + return nil + } + + for _, monitor := range monitors { + tflog.Info(ctx, fmt.Sprintf("Deleting Cloudflare Load Balancer Monitor ID: %s", monitor.ID)) + //nolint:errcheck + client.DeleteLoadBalancerPool(ctx, monitor.ID) + } + + return nil +} + func TestAccCloudflareLoadBalancerMonitor_Basic(t *testing.T) { testStartTime := time.Now().UTC() var loadBalancerMonitor cloudflare.LoadBalancerMonitor diff --git a/internal/provider/resource_cloudflare_load_balancer_pool_test.go b/internal/provider/resource_cloudflare_load_balancer_pool_test.go index 1d659e56f1..65ad5d59ca 100644 --- a/internal/provider/resource_cloudflare_load_balancer_pool_test.go +++ b/internal/provider/resource_cloudflare_load_balancer_pool_test.go @@ -3,17 +3,58 @@ package provider import ( "context" "fmt" + "log" "os" "regexp" "testing" "time" "github.com/cloudflare/cloudflare-go" + "github.com/hashicorp/terraform-plugin-log/tflog" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" "github.com/pkg/errors" ) +func init() { + resource.AddTestSweepers("cloudflare_load_balancer_pool", &resource.Sweeper{ + Name: "cloudflare_load_balancer_pool", + F: testSweepCloudflareLoadBalancerPool, + }) +} + +func testSweepCloudflareLoadBalancerPool(r string) error { + ctx := context.Background() + client, clientErr := sharedClient() + if clientErr != nil { + tflog.Error(ctx, fmt.Sprintf("Failed to create Cloudflare client: %s", clientErr)) + } + + accountID := os.Getenv("CLOUDFLARE_ACCOUNT_ID") + if accountID == "" { + return errors.New("CLOUDFLARE_ACCOUNT_ID must be set") + } + + client.AccountID = accountID + pools, err := client.ListLoadBalancerPools(ctx) + if err != nil { + tflog.Error(ctx, fmt.Sprintf("Failed to fetch Cloudflare Load Balancer Pools: %s", err)) + } + + if len(pools) == 0 { + log.Print("[DEBUG] No Cloudflare Load Balancer Pools to sweep") + return nil + } + + for _, pool := range pools { + tflog.Info(ctx, fmt.Sprintf("Deleting Cloudflare Load Balancer Pool ID: %s", pool.ID)) + //nolint:errcheck + client.DeleteLoadBalancerPool(ctx, pool.ID) + } + + return nil +} + func TestAccCloudflareLoadBalancerPool_Basic(t *testing.T) { // multiple instances of this config would conflict but we only use it once t.Parallel() diff --git a/internal/provider/resource_cloudflare_load_balancer_test.go b/internal/provider/resource_cloudflare_load_balancer_test.go index 142eda0239..68f1f49fa2 100644 --- a/internal/provider/resource_cloudflare_load_balancer_test.go +++ b/internal/provider/resource_cloudflare_load_balancer_test.go @@ -3,6 +3,7 @@ package provider import ( "context" "fmt" + "log" "testing" "time" @@ -12,10 +13,50 @@ import ( "regexp" cloudflare "github.com/cloudflare/cloudflare-go" + "github.com/hashicorp/terraform-plugin-log/tflog" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/pkg/errors" ) +func init() { + resource.AddTestSweepers("cloudflare_load_balancer", &resource.Sweeper{ + Name: "cloudflare_load_balancer", + F: testSweepCloudflareLoadBalancer, + }) +} + +func testSweepCloudflareLoadBalancer(r string) error { + ctx := context.Background() + client, clientErr := sharedClient() + if clientErr != nil { + tflog.Error(ctx, fmt.Sprintf("Failed to create Cloudflare client: %s", clientErr)) + } + + zoneID := os.Getenv("CLOUDFLARE_ZONE_ID") + if zoneID == "" { + return errors.New("CLOUDFLARE_ZONE_ID must be set") + } + + lbs, err := client.ListLoadBalancers(ctx, zoneID) + if err != nil { + tflog.Error(ctx, fmt.Sprintf("Failed to fetch Cloudflare Load Balancers: %s", err)) + } + + if len(lbs) == 0 { + log.Print("[DEBUG] No Cloudflare Load Balancers to sweep") + return nil + } + + for _, lb := range lbs { + tflog.Info(ctx, fmt.Sprintf("Deleting Cloudflare Load Balancer ID: %s", lb.ID)) + //nolint:errcheck + client.DeleteLoadBalancer(ctx, zoneID, lb.ID) + } + + return nil +} + func TestAccCloudflareLoadBalancer_Basic(t *testing.T) { // multiple instances of this config would conflict but we only use it once t.Parallel()