diff --git a/.ci/magician/cmd/test_eap_vcr.go b/.ci/magician/cmd/test_eap_vcr.go index 015ff5a77a0a..7f288d0d9f8a 100644 --- a/.ci/magician/cmd/test_eap_vcr.go +++ b/.ci/magician/cmd/test_eap_vcr.go @@ -163,7 +163,7 @@ func execTestEAPVCR(changeNumber, genPath, kokoroArtifactsDir string, rnr ExecRu if err := vt.FetchCassettes(provider.Private, "main", head); err != nil { return fmt.Errorf("error fetching cassettes: %w", err) } - replayingResult, testDirs, replayingErr := runReplaying(runFullVCR, provider.Private, services, vt, false, "") + replayingResult, testDirs, replayingErr := runReplaying(runFullVCR, provider.Private, services, vt) if err := vt.UploadLogs(vcr.UploadLogsOptions{ Head: head, Mode: vcr.Replaying, diff --git a/.ci/magician/cmd/test_terraform_vcr.go b/.ci/magician/cmd/test_terraform_vcr.go index ecb8ba90d16f..95091556dfae 100644 --- a/.ci/magician/cmd/test_terraform_vcr.go +++ b/.ci/magician/cmd/test_terraform_vcr.go @@ -12,7 +12,6 @@ import ( "github.com/spf13/cobra" - "magician/cov" "magician/exec" "magician/github" "magician/provider" @@ -83,19 +82,6 @@ type recordReplay struct { BrowseLogBaseUrl string } -const ( - covGCSPrefix = "gs://test-coverage-data" -) - -type runCovOpts struct { - repo *source.Repo - buildID string - commitSha string - covGCSPrefix string - testDirs []string - prNumber string -} - var testTerraformVCRCmd = &cobra.Command{ Use: "test-terraform-vcr", Short: "Run vcr tests for affected packages", @@ -107,7 +93,7 @@ It expects the following arguments: 3. Build ID 4. Project ID where Cloud Builds are located 5. Build step number - + The following environment variables are required: ` + listTTVRequiredEnvironmentVariables(), RunE: func(cmd *cobra.Command, args []string) error { @@ -148,11 +134,6 @@ The following environment variables are required: } ctlr := source.NewController(env["GOPATH"], "modular-magician", env["GITHUB_TOKEN_DOWNSTREAMS"], rnr) - testCovMerger, err := cov.NewTestCovMerger(rnr, filepath.Join(os.TempDir(), "cov")) - if err != nil { - return fmt.Errorf("failed to create testCovMerger: %w", err) - } - vt, err := vcr.NewTester(env, "ci-vcr-cassettes", "ci-vcr-logs", rnr) if err != nil { return fmt.Errorf("error creating VCR tester: %w", err) @@ -162,7 +143,7 @@ The following environment variables are required: return fmt.Errorf("wrong number of arguments %d, expected 5", len(args)) } - return execTestTerraformVCR(args[0], args[1], args[2], args[3], args[4], baseBranch, gh, rnr, ctlr, vt, testCovMerger) + return execTestTerraformVCR(args[0], args[1], args[2], args[3], args[4], baseBranch, gh, rnr, ctlr, vt) }, } @@ -174,7 +155,7 @@ func listTTVRequiredEnvironmentVariables() string { return result } -func execTestTerraformVCR(prNumber, mmCommitSha, buildID, projectID, buildStep, baseBranch string, gh GithubClient, rnr ExecRunner, ctlr *source.Controller, vt *vcr.Tester, covMerger *cov.Merger) error { +func execTestTerraformVCR(prNumber, mmCommitSha, buildID, projectID, buildStep, baseBranch string, gh GithubClient, rnr ExecRunner, ctlr *source.Controller, vt *vcr.Tester) error { newBranch := "auto-pr-" + prNumber oldBranch := newBranch + "-old" @@ -230,7 +211,7 @@ func execTestTerraformVCR(prNumber, mmCommitSha, buildID, projectID, buildStep, return fmt.Errorf("error posting pending status: %w", err) } - replayingResult, testDirs, replayingErr := runReplaying(runFullVCR, provider.Beta, services, vt, true, covMerger.VcrTestCovDir) + replayingResult, testDirs, replayingErr := runReplaying(runFullVCR, provider.Beta, services, vt) testState := "success" if replayingErr != nil { testState = "failure" @@ -314,12 +295,10 @@ func execTestTerraformVCR(prNumber, mmCommitSha, buildID, projectID, buildStep, var replayingAfterRecordingErr error if len(recordingResult.PassedTests) > 0 { replayingAfterRecordingResult, replayingAfterRecordingErr = vt.RunParallel(vcr.RunOptions{ - Mode: vcr.Replaying, - Version: provider.Beta, - TestDirs: testDirs, - Tests: recordingResult.PassedTests, - EnableTestCoverage: true, - TestCovDir: covMerger.VcrTestCovDir, + Mode: vcr.Replaying, + Version: provider.Beta, + TestDirs: testDirs, + Tests: recordingResult.PassedTests, }) if replayingAfterRecordingErr != nil { testState = "failure" @@ -356,25 +335,6 @@ func execTestTerraformVCR(prNumber, mmCommitSha, buildID, projectID, buildStep, if err != nil { return fmt.Errorf("error formatting record replay comment: %w", err) } - - // run unit test and generate combined code coverage - if err := genCov(rnr, covMerger, gh, runCovOpts{ - repo: tpgbRepo, - buildID: buildID, - commitSha: mmCommitSha, - covGCSPrefix: covGCSPrefix, - testDirs: testDirs, - prNumber: prNumber, - }); err != nil { - fmt.Printf("Failed to generate coverage: %s\n", err) - } - - out, err := covMerger.PackageCovComment() - if err != nil { - fmt.Printf("failed to get package coverage: %s\n", err) - } else { - recordReplayComment += "\n\n" + out - } if err := gh.PostComment(prNumber, recordReplayComment); err != nil { return fmt.Errorf("error posting comment: %w", err) } @@ -490,17 +450,15 @@ func modifiedPackages(changedFiles []string, version provider.Version) (map[stri return services, runFullVCR } -func runReplaying(runFullVCR bool, version provider.Version, services map[string]struct{}, vt *vcr.Tester, enableCov bool, covDir string) (vcr.Result, []string, error) { +func runReplaying(runFullVCR bool, version provider.Version, services map[string]struct{}, vt *vcr.Tester) (vcr.Result, []string, error) { result := vcr.Result{} var testDirs []string var replayingErr error if runFullVCR { fmt.Println("runReplaying: full VCR tests") result, replayingErr = vt.Run(vcr.RunOptions{ - Mode: vcr.Replaying, - Version: version, - EnableTestCoverage: enableCov, - TestCovDir: covDir, + Mode: vcr.Replaying, + Version: version, }) } else if len(services) > 0 { fmt.Printf("runReplaying: %d specific services: %v\n", len(services), services) @@ -509,11 +467,9 @@ func runReplaying(runFullVCR bool, version provider.Version, services map[string testDirs = append(testDirs, servicePath) fmt.Println("run VCR tests in ", service) serviceResult, serviceReplayingErr := vt.Run(vcr.RunOptions{ - Mode: vcr.Replaying, - Version: version, - TestDirs: []string{servicePath}, - EnableTestCoverage: enableCov, - TestCovDir: covDir, + Mode: vcr.Replaying, + Version: version, + TestDirs: []string{servicePath}, }) replayingErr = errors.Join(replayingErr, serviceReplayingErr) result.PassedTests = append(result.PassedTests, serviceResult.PassedTests...) @@ -580,48 +536,3 @@ func formatRecordReplay(data recordReplay) (string, error) { data.BrowseLogBaseUrl = fmt.Sprintf("https://console.cloud.google.com/storage/browser/%s", logBasePath) return formatComment("record_replay.tmpl", recordReplayTmplText, data) } - -func unitTest(rnr ExecRunner, repoPath, covDir string, testDirs []string) error { - if err := rnr.PushDir(repoPath); err != nil { - return fmt.Errorf("error changing to tpgbRepo dir: %w", err) - } - - if len(testDirs) == 0 { - if allPackages, err := rnr.Run("go", []string{"list", "./..."}, nil); err != nil { - return err - } else { - for _, dir := range strings.Split(allPackages, "\n") { - if !strings.Contains(dir, "github.com/hashicorp/terraform-provider-google-beta/scripts") { - testDirs = append(testDirs, dir) - } - } - } - } - - args := []string{"test", "-p", "4", "-cover"} - args = append(args, testDirs...) - args = append(args, []string{"-args", fmt.Sprintf("-test.gocoverdir=%s", covDir)}...) - _, err := rnr.Run("go", args, nil) - if err != nil { - return fmt.Errorf("unit test failed with error: %s", err) - } - return nil -} - -func genCov(rnr ExecRunner, covMerger *cov.Merger, gh GithubClient, opts runCovOpts) error { - fmt.Println("Generating code coverage...") - if err := unitTest(rnr, opts.repo.Path, covMerger.UnitTestCovDir, opts.testDirs); err != nil { - fmt.Println("unit test failed") - } - if err := covMerger.Merge(); err != nil { - return fmt.Errorf("failed to merge test coverage: %w", err) - } - covURL, err := covMerger.UploadToGCS(opts.covGCSPrefix, opts.buildID) - if err != nil { - return fmt.Errorf("failed to upload test coverage: %w", err) - } - if err := gh.PostBuildStatus(opts.prNumber, "test-cov", "success", covURL, opts.commitSha); err != nil { - return fmt.Errorf("error posting pending status: %w", err) - } - return nil -} diff --git a/.ci/magician/cmd/test_terraform_vcr_test.go b/.ci/magician/cmd/test_terraform_vcr_test.go index 486afbc3dcef..835d9d302d32 100644 --- a/.ci/magician/cmd/test_terraform_vcr_test.go +++ b/.ci/magician/cmd/test_terraform_vcr_test.go @@ -6,7 +6,6 @@ import ( "strings" "testing" - "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/assert" "magician/provider" @@ -580,51 +579,3 @@ func TestRecordReplay(t *testing.T) { }) } } - -func TestUnitTest(t *testing.T) { - tests := []struct { - testName string - testDirs []string - want map[string][]ParameterList - }{ - { - "not empty test dir", - []string{"test-dir"}, - map[string][]ParameterList{ - "Run": { - {"repo-path", "go", []string{"test", "-p", "4", "-cover", "test-dir", "-args", "-test.gocoverdir=cov-dir"}, map[string]string(nil)}, - }, - }, - }, - { - "empty test dir", - []string{}, - map[string][]ParameterList{ - "Run": { - {"repo-path", "go", []string{"list", "./..."}, map[string]string(nil)}, - {"repo-path", "go", []string{"test", "-p", "4", "-cover", "pkg1", "pkg2", "-args", "-test.gocoverdir=cov-dir"}, map[string]string(nil)}, - }, - }, - }, - } - for _, tc := range tests { - t.Run(tc.testName, func(t *testing.T) { - mr := &mockRunner{ - cwd: "cwd", - calledMethods: make(map[string][]ParameterList), - cmdResults: map[string]string{ - "repo-path go [list ./...] map[]": "pkg1\npkg2", - }, - } - err := unitTest(mr, "repo-path", "cov-dir", tc.testDirs) - if err != nil { - t.Fatal(err) - } - if diff := cmp.Diff(tc.want, mr.calledMethods); diff != "" { - t.Errorf("unitTest triggered different called methods(-want, +got): %s", diff) - } - - }) - } - -} diff --git a/.ci/magician/cov/interfaces.go b/.ci/magician/cov/interfaces.go deleted file mode 100644 index 266a991c8cb6..000000000000 --- a/.ci/magician/cov/interfaces.go +++ /dev/null @@ -1,6 +0,0 @@ -package cov - -type ExecRunner interface { - Mkdir(path string) error - Run(name string, args []string, env map[string]string) (string, error) -} diff --git a/.ci/magician/cov/merger.go b/.ci/magician/cov/merger.go deleted file mode 100644 index 792ca4cea4eb..000000000000 --- a/.ci/magician/cov/merger.go +++ /dev/null @@ -1,160 +0,0 @@ -package cov - -import ( - "fmt" - "os" - "path/filepath" - "strings" - "text/template" -) - -// Merger stores coverage related folders and files with a command line runner. -// File structure is: -// workdir/unit-test-cov/ -// workdir/vcr-test-cov/ -// workdir/merged-test-cov/ -// workdir/cov.txt -// workdir/cov.html -type Merger struct { - rnr ExecRunner - workDir string - UnitTestCovDir string - VcrTestCovDir string - MergedDir string -} - -func NewTestCovMerger(rnr ExecRunner, workDir string) (*Merger, error) { - unitTestDir := filepath.Join(workDir, "unit-test-cov") - vcrTestDir := filepath.Join(workDir, "vcr-test-cov") - mergedDir := filepath.Join(workDir, "merged-test-cov") - for _, dir := range []string{unitTestDir, vcrTestDir, mergedDir} { - if err := rnr.Mkdir(dir); err != nil { - return nil, fmt.Errorf("failed to create dir %s: %w", dir, err) - } - } - return &Merger{ - workDir: workDir, - rnr: rnr, - UnitTestCovDir: unitTestDir, - VcrTestCovDir: vcrTestDir, - MergedDir: mergedDir, - }, nil -} - -func (m *Merger) HTMLCovPath() string { - return filepath.Join(m.workDir, "cov.html") -} - -func (m *Merger) Merge() error { - if isFolderEmpty(m.UnitTestCovDir) && isFolderEmpty(m.VcrTestCovDir) { - return fmt.Errorf("no coverage data found in provided folders") - } - - covTxtPath := filepath.Join(m.workDir, "cov.txt") - covHTMLPath := m.HTMLCovPath() - - if _, err := m.rnr.Run( - "go", - []string{ - "tool", - "covdata", - "merge", - fmt.Sprintf("-i=%s,%s", m.UnitTestCovDir, m.VcrTestCovDir), - "-o=" + m.MergedDir, - }, - nil, - ); err != nil { - return fmt.Errorf("failed to merge coverage data: %s", err) - } - - if _, err := m.rnr.Run( - "go", - []string{ - "tool", - "covdata", - "textfmt", - "-i=" + m.MergedDir, - "-o=" + covTxtPath, - }, - nil, - ); err != nil { - return fmt.Errorf("failed to convert coverage data to text format: %s", err) - } - - if _, err := m.rnr.Run( - "go", - []string{ - "tool", - "cover", - "-html=" + covTxtPath, - "-o=" + covHTMLPath, - }, - nil, - ); err != nil { - return fmt.Errorf("failed to convert coverage data to text format: %s", err) - } - return nil -} - -func (m *Merger) UploadToGCS(gcsPrefix string, buildID string) (string, error) { - bucketName := strings.TrimPrefix(gcsPrefix, "gs://") - gcsPath := fmt.Sprintf("gs://%s/%s/", bucketName, buildID) - fmt.Printf("Uploading coverage result to %s\n", gcsPath) - args := []string{"-m", "cp", m.HTMLCovPath(), gcsPath} - if _, err := m.rnr.Run("gsutil", args, nil); err != nil { - fmt.Println(err) - return "", fmt.Errorf("error upload cov html: %w", err) - } - return fmt.Sprintf("https://storage.cloud.google.com/%s/%s/cov.html", bucketName, buildID), nil -} - -func (m *Merger) PackageCovComment() (string, error) { - out, err := m.rnr.Run( - "go", - []string{ - "tool", - "covdata", - "percent", - "-i=" + m.MergedDir, - }, - nil, - ) - if err != nil { - return "", err - } - - covList := strings.Split(strings.TrimSpace(out), "\n") - - commentTemplate := ` -
-Click here to see Test Coverage Metrics -
- -
-
- ` - - // Create a new template and parse the letter into it. - sb := new(strings.Builder) - t := template.Must(template.New("commentTemplate").Parse(commentTemplate)) - err = t.Execute(sb, covList) - if err != nil { - return "", err - } - return strings.TrimSpace(sb.String()), nil -} - -func isFolderEmpty(dirPath string) bool { - file, err := os.Open(dirPath) - if err != nil { - return true - } - defer file.Close() - - _, err = file.Readdirnames(1) - return err != nil -} diff --git a/.ci/magician/cov/merger_test.go b/.ci/magician/cov/merger_test.go deleted file mode 100644 index 6217ef6bee99..000000000000 --- a/.ci/magician/cov/merger_test.go +++ /dev/null @@ -1,166 +0,0 @@ -package cov - -import ( - "fmt" - "os" - "path/filepath" - "strings" - "testing" - - "github.com/google/go-cmp/cmp" -) - -type MockRunner interface { - ExecRunner -} - -type ParameterList []any - -type mockRunner struct { - dirs []string - commands []ParameterList - cmdResults map[string]string -} - -func (r *mockRunner) Mkdir(path string) error { - r.dirs = append(r.dirs, path) - return nil -} - -func (r *mockRunner) Run(name string, args []string, env map[string]string) (string, error) { - r.commands = append(r.commands, ParameterList{name, args}) - cmd := fmt.Sprintf("%s %v", name, args) - if result, ok := r.cmdResults[cmd]; ok { - return result, nil - } - return "", nil -} - -func TestNewTestCovMerger(t *testing.T) { - rnr := &mockRunner{} - _, err := NewTestCovMerger(rnr, "/tmp") - if err != nil { - t.Fatal(err) - } - if diff := cmp.Diff([]string{"/tmp/unit-test-cov", "/tmp/vcr-test-cov", "/tmp/merged-test-cov"}, rnr.dirs); diff != "" { - t.Errorf("NewTestCovMerger did not create expected folders: (-want, +got) = %s", diff) - } -} - -func TestMergeFail(t *testing.T) { - workdir := t.TempDir() - - rnr := &mockRunner{} - merger, err := NewTestCovMerger(rnr, workdir) - if err != nil { - t.Fatal(err) - } - err = merger.Merge() - if err == nil { - t.Fatal("expect failure since folders are empty, but got nil err") - } - - if !strings.Contains(err.Error(), "no coverage data found") { - t.Errorf("Merge() got unexpected error: %s", err) - } - -} - -func TestMerge(t *testing.T) { - workdir := t.TempDir() - err := os.MkdirAll(filepath.Join(workdir, "unit-test-cov"), 0755) - if err != nil { - t.Fatal(err) - } - - file, err := os.Create(filepath.Join(workdir, "unit-test-cov", "cov.data")) - if err != nil { - t.Fatal(err) - } - defer file.Close() - - rnr := &mockRunner{} - merger := Merger{ - UnitTestCovDir: filepath.Join(workdir, "unit-test-cov"), - VcrTestCovDir: filepath.Join(workdir, "vcr-test-cov"), - MergedDir: filepath.Join(workdir, "merged-test-cov"), - workDir: workdir, - rnr: rnr, - } - - if err := merger.Merge(); err != nil { - t.Fatal(err) - } - - want := []ParameterList{ - {"go", []string{"tool", "covdata", "merge", "-i=" + workdir + "/unit-test-cov," + workdir + "/vcr-test-cov", "-o=" + workdir + "/merged-test-cov"}}, - {"go", []string{"tool", "covdata", "textfmt", "-i=" + workdir + "/merged-test-cov", "-o=" + workdir + "/cov.txt"}}, - {"go", []string{"tool", "cover", "-html=" + workdir + "/cov.txt", "-o=" + workdir + "/cov.html"}}, - } - if diff := cmp.Diff(want, rnr.commands); diff != "" { - t.Errorf("Merge got different commands: %s", diff) - } -} - -func TestUploadToGCS(t *testing.T) { - workdir := os.TempDir() - rnr := &mockRunner{} - merger := Merger{ - rnr: rnr, - workDir: workdir, - } - - got, err := merger.UploadToGCS("gs://bucket/path", "12345") - if err != nil { - t.Fatal(err) - } - - want := "https://storage.cloud.google.com/bucket/path/12345/cov.html" - if got != want { - t.Errorf("UploadToGCS got = %s, want = %s", got, want) - } - - wantCommands := []ParameterList{ - {"gsutil", []string{"-m", "cp", filepath.Join(workdir, "cov.html"), "gs://bucket/path/12345/"}}, - } - if diff := cmp.Diff(wantCommands, rnr.commands); diff != "" { - t.Errorf("UploadToGCS got different commands: %s", diff) - } -} - -func TestPackageCovComment(t *testing.T) { - workdir := os.TempDir() - rnr := &mockRunner{ - cmdResults: map[string]string{ - "go [tool covdata percent -i=" + filepath.Join(workdir, "merged-test-cov]"): "pkg1 10%\npkg2 20%\n\n", - }, - } - merger := Merger{ - rnr: rnr, - workDir: workdir, - MergedDir: filepath.Join(workdir, "merged-test-cov"), - } - - got, err := merger.PackageCovComment() - if err != nil { - t.Fatal(err) - } - - want := strings.TrimSpace(` -
-Click here to see Test Coverage Metrics -
- -
-
- `) - if got != want { - t.Errorf("PackageCovComment got = %s, want = %s", got, want) - } -} diff --git a/.ci/magician/vcr/tester.go b/.ci/magician/vcr/tester.go index 57b701cf0fbe..6f01ee352357 100644 --- a/.ci/magician/vcr/tester.go +++ b/.ci/magician/vcr/tester.go @@ -193,12 +193,10 @@ func (vt *Tester) LogPath(mode Mode, version provider.Version) string { } type RunOptions struct { - Mode Mode - Version provider.Version - TestDirs []string - Tests []string - EnableTestCoverage bool - TestCovDir string + Mode Mode + Version provider.Version + TestDirs []string + Tests []string } // Run the vcr tests in the given mode and provider version and return the result. @@ -254,13 +252,6 @@ func (vt *Tester) Run(opt RunOptions) (Result, error) { "-ldflags=-X=github.com/hashicorp/terraform-provider-google-beta/version.ProviderVersion=acc", "-vet=off", ) - if opt.Mode == Replaying && opt.EnableTestCoverage { - args = append(args, []string{ - "-cover", - "-args", - "-test.gocoverdir=" + opt.TestCovDir, - }...) - } env := map[string]string{ "VCR_PATH": cassettePath, "VCR_MODE": opt.Mode.Upper(), @@ -365,7 +356,7 @@ func (vt *Tester) RunParallel(opt RunOptions) (Result, error) { for _, testDir := range opt.TestDirs { for _, test := range opt.Tests { running <- struct{}{} - go vt.runInParallel(opt, testDir, test, logPath, cassettePath, running, wg, outputs, errs) + go vt.runInParallel(opt.Mode, opt.Version, testDir, test, logPath, cassettePath, running, wg, outputs, errs) } } @@ -396,7 +387,7 @@ func (vt *Tester) RunParallel(opt RunOptions) (Result, error) { return collectResult(output), testErr } -func (vt *Tester) runInParallel(opt RunOptions, testDir, test, logPath, cassettePath string, running <-chan struct{}, wg *sync.WaitGroup, outputs chan<- string, errs chan<- error) { +func (vt *Tester) runInParallel(mode Mode, version provider.Version, testDir, test, logPath, cassettePath string, running <-chan struct{}, wg *sync.WaitGroup, outputs chan<- string, errs chan<- error) { args := []string{ "test", testDir, @@ -409,14 +400,6 @@ func (vt *Tester) runInParallel(opt RunOptions, testDir, test, logPath, cassette "-ldflags=-X=github.com/hashicorp/terraform-provider-google-beta/version.ProviderVersion=acc", "-vet=off", } - mode := opt.Mode - if mode == Replaying && opt.EnableTestCoverage { - args = append(args, []string{ - "-cover", - "-args", - "-test.gocoverdir=" + opt.TestCovDir, - }...) - } env := map[string]string{ "VCR_PATH": cassettePath, "VCR_MODE": mode.Upper(), diff --git a/mmv1/third_party/tgc/resource_converters.go.tmpl b/mmv1/third_party/tgc/resource_converters.go.tmpl index 6ed0c4fec987..eebfb95a8170 100644 --- a/mmv1/third_party/tgc/resource_converters.go.tmpl +++ b/mmv1/third_party/tgc/resource_converters.go.tmpl @@ -92,9 +92,9 @@ import ( "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/sql" "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/storage" "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/vertexai" + "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/vmwareengine" "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/vpcaccess" "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/workbench" - "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/vmwareengine" ) @@ -213,6 +213,7 @@ func ResourceConverters() map[string][]cai.ResourceConverter { "google_monitoring_notification_channel": {monitoring.ResourceConverterMonitoringNotificationChannel()}, "google_monitoring_alert_policy": {monitoring.ResourceConverterMonitoringAlertPolicy()}, "google_vertex_ai_dataset": {vertexai.ResourceConverterVertexAIDataset()}, + "google_vmwareengine_network_policy": {vmwareengine.ResourceConverterVmwareengineNetworkPolicy()}, "google_vmwareengine_network_peering": {vmwareengine.ResourceConverterVmwareengineNetworkPeering()}, "google_workbench_instance": {workbench.ResourceConverterWorkbenchInstance()}, {{- range $object := $.IamResources }} diff --git a/mmv1/third_party/tgc/tests/data/vmwareengine_network_policy.json b/mmv1/third_party/tgc/tests/data/vmwareengine_network_policy.json new file mode 100644 index 000000000000..28da643ec31c --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/vmwareengine_network_policy.json @@ -0,0 +1,23 @@ +[ + { + "name": "//vmwareengine.googleapis.com/projects/{{.Provider.project}}/locations/us-central1/networkPolicies/gg-asset-17806-51c7", + "asset_type": "vmwareengine.googleapis.com/NetworkPolicy", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://vmwareengine.googleapis.com/$discovery/rest", + "discovery_name": "NetworkPolicy", + "parent": "//cloudresourcemanager.googleapis.com/projects/{{.Provider.project}}", + "data": { + "edgeServicesCidr": "192.168.30.0/26", + "vmwareEngineNetwork": "projects/{{.Provider.project}}/locations/global/vmwareEngineNetworks/gg-asset-17806-51c7-network", + "externalIp": { + "enabled": true + }, + "internetAccess": { + "enabled": true + } + } + } + } +] diff --git a/mmv1/third_party/tgc/tests/data/vmwareengine_network_policy.tf b/mmv1/third_party/tgc/tests/data/vmwareengine_network_policy.tf new file mode 100644 index 000000000000..192f07434e99 --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/vmwareengine_network_policy.tf @@ -0,0 +1,13 @@ +resource "google_vmwareengine_network_policy" "gg_asset_17806_51c7" { + name = "gg-asset-17806-51c7" + location = "us-central1" + project = "{{.Provider.project}}" + edge_services_cidr = "192.168.30.0/26" + vmware_engine_network = "projects/{{.Provider.project}}/locations/global/vmwareEngineNetworks/gg-asset-17806-51c7-network" + internet_access { + enabled = true + } + external_ip { + enabled = true + } +}