Skip to content

Commit 6699a9b

Browse files
hao-nan-lizli82016
andauthored
Iam resolver initial commit (#15358)
Co-authored-by: Zhenhua Li <[email protected]>
1 parent 4d1cb60 commit 6699a9b

File tree

5 files changed

+733
-1
lines changed

5 files changed

+733
-1
lines changed

mmv1/third_party/tgc_next/pkg/tfplan2cai/convert.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,15 @@ func Convert(ctx context.Context, jsonPlan []byte, o *Options) ([]caiasset.Asset
3333
return nil, fmt.Errorf("logger is not initialized")
3434
}
3535

36+
// IAM resource resolver, do not run until IAM resources included
37+
resolvers.NewIamAdvancedResolver(o.ErrorLogger).Resolve(jsonPlan)
3638
resourceDataMap := resolvers.NewDefaultPreResolver(o.ErrorLogger).Resolve(jsonPlan)
3739

38-
// TODO: add advanced resolvers for resources
40+
// TODO: add remaining advanced resolvers for resources
3941

4042
// Set up config and ancestry manager using the same user agent.
4143
// Config and ancestry manager are shared among resources.
44+
4245
cfg, err := transport.NewConfig(ctx, o.DefaultProject, o.DefaultZone, o.DefaultRegion, o.Offline, o.UserAgent)
4346
if err != nil {
4447
return nil, fmt.Errorf("building config: %w", err)
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package resolvers
2+
3+
import (
4+
"os"
5+
"testing"
6+
7+
"github.com/stretchr/testify/assert"
8+
"go.uber.org/zap"
9+
)
10+
11+
func TestConvert_iamBinding(t *testing.T) {
12+
logger, err := zap.NewDevelopment()
13+
if err != nil {
14+
t.Fatalf("Error initializing logger %s", err)
15+
}
16+
f := "iamBinding.tfplan.json"
17+
jsonPlan, err := os.ReadFile(f)
18+
if err != nil {
19+
t.Fatalf("Error parsing %s: %s", f, err)
20+
}
21+
22+
idToResourceChangeMap := NewIamAdvancedResolver(logger).Resolve(jsonPlan)
23+
24+
assert.Equal(t, 1, len(idToResourceChangeMap), "Expected map size is 1")
25+
assert.Equal(t, 2, len(idToResourceChangeMap["instance_name/google_compute_instance.tgc-iam.name/project/terraform-dev-zhenhuali/zone/us-central1-a/"]), "Expected iam list to be size 2")
26+
assert.Equal(t, 0, len(idToResourceChangeMap["google_compute_instance_iam_member.foo1"]), "Expected this key to return null")
27+
}

0 commit comments

Comments
 (0)