Skip to content

Commit

Permalink
feat: Adding Sweeper Test for Fabric Cloud Router Resource
Browse files Browse the repository at this point in the history
  • Loading branch information
srushti-patl committed Aug 1, 2024
1 parent f984775 commit 677fab7
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 1 deletion.
6 changes: 5 additions & 1 deletion equinix/equinix_sweeper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ import (
"time"

"github.com/equinix/terraform-provider-equinix/internal/config"

"github.com/hashicorp/terraform-plugin-testing/helper/resource"
)

const tstResourcePrefix = "tfacc"

func TestMain(m *testing.M) {
addTestSweeper()
resource.TestMain(m)
}

Expand Down Expand Up @@ -48,3 +48,7 @@ func sharedConfigForRegion(region string) (*config.Config, error) {
func isSweepableTestResource(namePrefix string) bool {
return strings.HasPrefix(namePrefix, tstResourcePrefix)
}

func addTestSweeper() {
AddTestSweeper()
}
69 changes: 69 additions & 0 deletions equinix/resource_fabric_cloud_router_sweeper.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package equinix

import (
"context"
"errors"
"fmt"
"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"
"log"
)

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)
}
meta.Load(ctx)

Check failure on line 30 in equinix/resource_fabric_cloud_router_sweeper.go

View workflow job for this annotation

GitHub Actions / lint

Error return value of `meta.Load` is not checked (errcheck)
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...)
}

0 comments on commit 677fab7

Please sign in to comment.