Ignore unsupported resource from IaC

main
Elie 2021-06-23 10:37:33 +02:00
parent c35389431f
commit 646c6a392c
No known key found for this signature in database
GPG Key ID: 399AF69092C727B6
5 changed files with 171801 additions and 3 deletions

View File

@ -70,6 +70,15 @@ func (r *TerraformStateReader) retrieve() (map[string][]cty.Value, error) {
for _, stateRes := range module.Resources { for _, stateRes := range module.Resources {
resName := stateRes.Addr.Resource.Name resName := stateRes.Addr.Resource.Name
resType := stateRes.Addr.Resource.Type resType := stateRes.Addr.Resource.Type
if !resource.IsResourceTypeSupported(resType) {
logrus.WithFields(logrus.Fields{
"name": resName,
"type": resType,
}).Debug("Ignored unsupported resource from state")
continue
}
if stateRes.Addr.Resource.Mode != addrs.ManagedResourceMode { if stateRes.Addr.Resource.Mode != addrs.ManagedResourceMode {
logrus.WithFields(logrus.Fields{ logrus.WithFields(logrus.Fields{
"mode": stateRes.Addr.Resource.Mode, "mode": stateRes.Addr.Resource.Mode,
@ -160,9 +169,6 @@ func (r *TerraformStateReader) decode(values map[string][]cty.Value) ([]resource
results := make([]resource.Resource, 0) results := make([]resource.Resource, 0)
for ty, val := range values { for ty, val := range values {
if !resource.IsResourceTypeSupported(ty) {
continue
}
decodedResources, err := r.deserializer.Deserialize(ty, val) decodedResources, err := r.deserializer.Deserialize(ty, val)
if err != nil { if err != nil {
logrus.WithField("ty", ty).Warnf("Could not read from state: %+v", err) logrus.WithField("ty", ty).Warnf("Could not read from state: %+v", err)

View File

@ -61,6 +61,7 @@ func TestTerraformStateReader_AWS_Resources(t *testing.T) {
{name: "Lambda function", dirName: "lambda_function", wantErr: false}, {name: "Lambda function", dirName: "lambda_function", wantErr: false},
{name: "unsupported attribute", dirName: "unsupported_attribute", wantErr: false}, {name: "unsupported attribute", dirName: "unsupported_attribute", wantErr: false},
{name: "Unsupported provider", dirName: "unsupported_provider", wantErr: false}, {name: "Unsupported provider", dirName: "unsupported_provider", wantErr: false},
{name: "Unsupported resource", dirName: "unsupported_resource", wantErr: false},
{name: "EC2 instance", dirName: "ec2_instance", wantErr: false}, {name: "EC2 instance", dirName: "ec2_instance", wantErr: false},
{name: "EC2 key pair", dirName: "ec2_key_pair", wantErr: false}, {name: "EC2 key pair", dirName: "ec2_key_pair", wantErr: false},
{name: "EC2 ami", dirName: "ec2_ami", wantErr: false}, {name: "EC2 ami", dirName: "ec2_ami", wantErr: false},

View File

@ -0,0 +1 @@
[]

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,33 @@
{
"version": 4,
"terraform_version": "0.15.5",
"serial": 52,
"lineage": "06b3de6d-5de6-0777-b4db-f1b145a44635",
"outputs": {},
"resources": [
{
"mode": "managed",
"type": "aws_codedeploy_app",
"name": "example",
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"application_id": "94e6e3fd-5743-4818-bf3d-2d31f139d859",
"arn": "arn:aws:codedeploy:eu-west-3:929327065333:application:example",
"compute_platform": "ECS",
"github_account_name": "",
"id": "94e6e3fd-5743-4818-bf3d-2d31f139d859:example",
"linked_to_github": false,
"name": "example",
"tags": null,
"tags_all": {}
},
"sensitive_attributes": [],
"private": "bnVsbA=="
}
]
}
]
}