45 lines
1.3 KiB
Go
45 lines
1.3 KiB
Go
package middlewares
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/cloudskiff/driftctl/pkg/resource"
|
|
"github.com/cloudskiff/driftctl/pkg/resource/aws"
|
|
)
|
|
|
|
// Create a aws_api_gateway_stage resource from a aws_api_gateway_deployment resource and ignore the latter resource
|
|
// since we don't support it
|
|
type AwsApiGatewayDeploymentExpander struct {
|
|
resourceFactory resource.ResourceFactory
|
|
}
|
|
|
|
func NewAwsApiGatewayDeploymentExpander(resourceFactory resource.ResourceFactory) AwsApiGatewayDeploymentExpander {
|
|
return AwsApiGatewayDeploymentExpander{resourceFactory}
|
|
}
|
|
|
|
func (m AwsApiGatewayDeploymentExpander) Execute(_, resourcesFromState *[]*resource.Resource) error {
|
|
var newResources []*resource.Resource
|
|
for _, res := range *resourcesFromState {
|
|
if res.ResourceType() != aws.AwsApiGatewayDeploymentResourceType {
|
|
newResources = append(newResources, res)
|
|
continue
|
|
}
|
|
|
|
stageName := res.Attributes().GetString("stage_name")
|
|
if stageName == nil || *stageName == "" {
|
|
continue
|
|
}
|
|
|
|
newStage := m.resourceFactory.CreateAbstractResource(
|
|
aws.AwsApiGatewayStageResourceType,
|
|
strings.Join([]string{"ags", *(res.Attributes().GetString("rest_api_id")), *stageName}, "-"),
|
|
map[string]interface{}{},
|
|
)
|
|
|
|
newResources = append(newResources, newStage)
|
|
}
|
|
*resourcesFromState = newResources
|
|
|
|
return nil
|
|
}
|