driftctl/pkg/middlewares/aws_alb_transformer.go

40 lines
1.2 KiB
Go

package middlewares
import (
"github.com/snyk/driftctl/enumeration/resource"
"github.com/snyk/driftctl/enumeration/resource/aws"
)
// AwsALBTransformer is a simple middleware to turn all aws_alb resources into aws_lb ones
// Both types provide the same functionality, but we can't know which one was used to provision cloud resources.
// So we use aws_lb as the common type.
type AwsALBTransformer struct {
resourceFactory resource.ResourceFactory
}
func NewAwsALBTransformer(resourceFactory resource.ResourceFactory) AwsALBTransformer {
return AwsALBTransformer{
resourceFactory: resourceFactory,
}
}
func (m AwsALBTransformer) Execute(_, resourcesFromState *[]*resource.Resource) error {
newStateResources := make([]*resource.Resource, 0, len(*resourcesFromState))
for _, res := range *resourcesFromState {
if res.ResourceType() != aws.AwsApplicationLoadBalancerResourceType {
newStateResources = append(newStateResources, res)
continue
}
newStateResources = append(newStateResources, m.resourceFactory.CreateAbstractResource(
aws.AwsLoadBalancerResourceType,
res.ResourceId(),
*res.Attributes(),
))
}
*resourcesFromState = newStateResources
return nil
}