40 lines
1.2 KiB
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
|
|
}
|