Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: Adding Sweeper Test for Fabric Cloud Router Resource #747

Merged
merged 9 commits into from
Aug 7, 2024
74 changes: 74 additions & 0 deletions internal/resources/fabric/cloud_router/sweeper.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package cloud_router

import (
"context"
"errors"
"fmt"
"log"

"github.com/equinix/equinix-sdk-go/services/fabricv4"
equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
"github.com/equinix/terraform-provider-equinix/internal/sweep"
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
)

func AddTestSweeper() {
resource.AddTestSweepers("equinix_fabric_cloud_router", &resource.Sweeper{
Name: "equinix_fabric_cloud_router",
Dependencies: []string{},
F: testSweepCloudRouters,
})
}

func testSweepCloudRouters(region string) error {
var errs []error
log.Printf("[DEBUG] Sweeping Fabric Cloud Routers")
ctx := context.Background()
meta, err := sweep.GetConfigForFabric()
if err != nil {
return fmt.Errorf("error getting configuration for sweeping Fabric Cloud Routers: %s", err)
}
err = meta.Load(ctx)
if err != nil {
log.Printf("Error loading meta: %v", err)
return err
}
fabric := meta.NewFabricClientForTesting()

equinixStatus := "/state"
equalOperator := string(fabricv4.EXPRESSIONOPERATOR_EQUAL)
limit := int32(100)
cloudRouterSearchRequest := fabricv4.CloudRouterSearchRequest{
Filter: &fabricv4.CloudRouterFilters{
And: []fabricv4.CloudRouterFilter{
{
CloudRouterSimpleExpression: &fabricv4.CloudRouterSimpleExpression{
Property: &equinixStatus,
Operator: &equalOperator,
Values: []string{string(fabricv4.EQUINIXSTATUS_PROVISIONED)},
},
},
},
},
Pagination: &fabricv4.PaginationRequest{
Limit: &limit,
},
}

fabricCloudRouters, _, err := fabric.CloudRoutersApi.SearchCloudRouters(ctx).CloudRouterSearchRequest(cloudRouterSearchRequest).Execute()
if err != nil {
return fmt.Errorf("error getting cloud router list for sweeping fabric cloud routers: %s", err)
}

for _, cloudRouter := range fabricCloudRouters.Data {
if sweep.IsSweepableFabricTestResource(cloudRouter.GetName()) {
log.Printf("[DEBUG] Deleting Cloud Routers: %s", cloudRouter.GetName())
resp, err := fabric.CloudRoutersApi.DeleteCloudRouterByUuid(ctx, cloudRouter.GetUuid()).Execute()
if equinix_errors.IgnoreHttpResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(resp, err) != nil {
errs = append(errs, fmt.Errorf("error deleting fabric Cloud Router: %s", err))
}
}
}

return errors.Join(errs...)
}
3 changes: 3 additions & 0 deletions internal/sweep/sweep_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package sweep_test
import (
"testing"

fabric_cloud_router "github.com/equinix/terraform-provider-equinix/internal/resources/fabric/cloud_router"

fabric_connection "github.com/equinix/terraform-provider-equinix/internal/resources/fabric/connection"
"github.com/equinix/terraform-provider-equinix/internal/resources/metal/connection"
"github.com/equinix/terraform-provider-equinix/internal/resources/metal/device"
Expand All @@ -27,6 +29,7 @@ func TestMain(m *testing.M) {
func addTestSweepers() {
connection.AddTestSweeper()
device.AddTestSweeper()
fabric_cloud_router.AddTestSweeper()
fabric_connection.AddTestSweeper()
organization.AddTestSweeper()
project.AddTestSweeper()
Expand Down
Loading