diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b4d36937..9304dc64 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,13 +26,13 @@ jobs: steps: ## sets up go based on the version - name: Install Go - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 + uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0 with: go-version: ${{ matrix.go-version }} ## checks out our code locally, so we can work with the files - name: Checkout code - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 ## runs go test ./... - name: Build @@ -43,6 +43,6 @@ jobs: run: go test ./... -coverprofile=./cover.out - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@4650159d642e33fdc30954ca22638caf0df6cac8 # v5.4.3 + uses: codecov/codecov-action@af09b5e394c93991b95a5e7646aeb90c1917f78f # v5.5.1 env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index e21ca4ab..a43c835b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -39,11 +39,11 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@bc02a25f6449997c5e9d5a368879b28f56ae19a1 # codeql-bundle-v2.21.4 + uses: github/codeql-action/init@17783bfb99b07f70fae080b654aed0c514057477 # codeql-bundle-v2.23.3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -57,7 +57,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@bc02a25f6449997c5e9d5a368879b28f56ae19a1 # codeql-bundle-v2.21.4 + uses: github/codeql-action/autobuild@17783bfb99b07f70fae080b654aed0c514057477 # codeql-bundle-v2.23.3 # â„šī¸ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -70,4 +70,4 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@bc02a25f6449997c5e9d5a368879b28f56ae19a1 # codeql-bundle-v2.21.4 + uses: github/codeql-action/analyze@17783bfb99b07f70fae080b654aed0c514057477 # codeql-bundle-v2.23.3 diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index f119aa6f..f1328622 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -6,13 +6,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Install Go - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 + uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0 with: go-version: 1.24.x - name: Restore cache - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-mod-${{ hashFiles('**/go.sum') }} @@ -31,13 +31,13 @@ jobs: with: terraform_version: 1.5.4 - name: Checkout code - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Install Go - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 + uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0 with: go-version: ${{ matrix.go-version }} - name: Restore cache - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-mod-${{ hashFiles('**/go.sum') }} @@ -51,8 +51,8 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Install Go - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 + uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0 with: go-version: 1.24.x diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c19b76b3..c61d02ba 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,11 +11,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Unshallow run: git fetch --prune --unshallow - name: Set up Go - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 + uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0 with: go-version: 1.24 - name: Import GPG key @@ -25,7 +25,7 @@ jobs: gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} passphrase: ${{ secrets.PASSPHRASE }} - name: Run GoReleaser - uses: goreleaser/goreleaser-action@9c156ee8a17a598857849441385a2041ef570552 # v6.3.0 + uses: goreleaser/goreleaser-action@e435ccd777264be153ace6237001ef4d979d3a7a # v6.4.0 with: version: latest args: release --clean @@ -41,7 +41,7 @@ jobs: needs: - goreleaser steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Publish to Registry uses: elgohr/Publish-Docker-Github-Action@32b6623ebb46c5fe6dcfc2281cfcd549a31366ce # v5 with: @@ -50,7 +50,7 @@ jobs: password: ${{ secrets.DOCKERHUB_PASSWORD }} tags: "latest,${{ github.ref_name }}" - name: Update Docker Hub README - uses: peter-evans/dockerhub-description@432a30c9e07499fd01da9f8a49f0faf9e0ca5b77 # v4.0.2 + uses: peter-evans/dockerhub-description@1b9a80c056b620d92cedb9d9b5a223409c68ddfa # v5.0.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} @@ -64,7 +64,7 @@ jobs: - goreleaser steps: - name: Repository Dispatch - uses: peter-evans/repository-dispatch@ff45666b9427631e3450c54a1bcbee4d9ff4d7c0 # v3.0.0 + uses: peter-evans/repository-dispatch@5fc4efd1a4797ddb68ffd0714a238564e4cc0e6f # v4.0.0 with: token: ${{ secrets.PAT }} repository: jameswoolfenden/scoop diff --git a/.github/workflows/resources.yml b/.github/workflows/resources.yml index 1f76c7ee..3bf07482 100644 --- a/.github/workflows/resources.yml +++ b/.github/workflows/resources.yml @@ -11,13 +11,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Install Go - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 + uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0 with: go-version: ${{ matrix.go-version }} ## checks out our code locally, so we can work with the files - name: Checkout code - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 ## runs go test ./... - name: Build @@ -25,7 +25,7 @@ jobs: - name: Checkout AWS - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: repository: hashicorp/terraform-provider-aws path: aws @@ -34,7 +34,7 @@ jobs: run: ${{ github.workspace }}/pike parse -d ${{ github.workspace }}/aws -name aws - name: Checkout AZURERM - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: repository: hashicorp/terraform-provider-azurerm path: azurerm @@ -43,7 +43,7 @@ jobs: run: ${{ github.workspace }}/pike parse -d ${{ github.workspace }}/azurerm -name azurerm - name: Generate Google - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: repository: hashicorp/terraform-provider-google path: google diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 663f980a..87ceda51 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -13,7 +13,7 @@ jobs: pull-requests: write runs-on: ubuntu-latest steps: - - uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9.1.0 + - uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 # v10.1.0 with: stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.' days-before-stale: 30 diff --git a/.gitignore b/.gitignore index 02cd7d21..3e0edec4 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,9 @@ __debug_bin.exe provider.azure.tf provider.azurerm.tf terraform-provider-* +terraform-provider-azurerm/ +terraform-provider-google/ +terraform-provider-aws/ *.pem *.csr .destination diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7a103680..339dca20 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -29,7 +29,7 @@ repos: hooks: - id: shell-lint - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.44.0 + rev: v0.45.0 hooks: - id: markdownlint exclude: src/testdata|testdata diff --git a/README.md b/README.md index 12eefcc7..a860ae57 100644 --- a/README.md +++ b/README.md @@ -3,17 +3,22 @@ ![alt text](pike.jfif "Pike") [![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://GitHub.com/jameswoolfenden/pike/graphs/commit-activity) -[![Build Status](https://github.com/JamesWoolfenden/pike/workflows/CI/badge.svg?branch=master)](https://github.com/JamesWoolfenden/pike) +[![CI](https://github.com/JamesWoolfenden/pike/actions/workflows/ci.yml/badge.svg)](https://github.com/JamesWoolfenden/pike/actions/workflows/ci.yml) [![Latest Release](https://img.shields.io/github/release/JamesWoolfenden/pike.svg)](https://github.com/JamesWoolfenden/pike/releases/latest) [![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/JamesWoolfenden/pike.svg?label=latest)](https://github.com/JamesWoolfenden/pike/releases/latest) ![Terraform Version](https://img.shields.io/badge/tf-%3E%3D0.14.0-blue.svg) [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit) [![checkov](https://img.shields.io/badge/checkov-verified-brightgreen)](https://www.checkov.io/) [![Github All Releases](https://img.shields.io/github/downloads/jameswoolfenden/pike/total.svg)](https://github.com/JamesWoolfenden/pike/releases) -[![codecov](https://codecov.io/gh/JamesWoolfenden/pike/graph/badge.svg?token=S5SW3BHIQQ)](https://codecov.io/gh/JamesWoolfenden/pike) +[![codecov](https://codecov.io/gh/JamesWoolfenden/pike/branch/master/graph/badge.svg?token=S5SW3BHIQQ)](https://codecov.io/gh/JamesWoolfenden/pike) [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/7032/badge)](https://www.bestpractices.dev/projects/7032) -Pike is a tool to determine the minimum permissions required to run a TF/IAC run: +Pike is a tool to determine the minimum permissions required to run a TF/IAC run. + +**What's new?** +- json modules support. +- GCP compare, checks IAC permissions required versus a deployed role. +- Backend detection S3 and GCP. Pike currently supports Terraform and supports multiple providers (AWS, GCP and AZURE); Azure is the newest with AWS having the most supported resources @@ -475,6 +480,8 @@ You can see an example here $./pike compare -d ../modules/aws/terraform-aws-appsync -a arn:aws:iam::680235478471:policy/basic ```markdown diff --git a/bump.ps1 b/bump.ps1 old mode 100644 new mode 100755 diff --git a/go.mod b/go.mod index 12b3808d..e4e7e273 100644 --- a/go.mod +++ b/go.mod @@ -5,55 +5,59 @@ go 1.24.2 require ( github.com/JamesWoolfenden/arn v0.2.5 github.com/aws/aws-sdk-go v1.55.7 - github.com/aws/aws-sdk-go-v2 v1.36.3 - github.com/aws/aws-sdk-go-v2/config v1.29.14 - github.com/aws/aws-sdk-go-v2/service/iam v1.42.0 - github.com/go-git/go-git/v5 v5.16.0 + github.com/aws/aws-sdk-go-v2 v1.36.5 + github.com/aws/aws-sdk-go-v2/config v1.29.17 + github.com/aws/aws-sdk-go-v2/service/iam v1.43.0 + github.com/go-git/go-git/v5 v5.16.2 github.com/google/go-cmp v0.7.0 github.com/google/go-github/v47 v47.1.0 github.com/hashicorp/go-version v1.7.0 github.com/hashicorp/hc-install v0.9.2 - github.com/hashicorp/hcl/v2 v2.23.0 + github.com/hashicorp/hcl/v2 v2.23.1-0.20250203194505-ba0759438da2 github.com/hashicorp/terraform-exec v0.23.0 github.com/jameswoolfenden/identity v0.0.5 github.com/rs/zerolog v1.34.0 - github.com/urfave/cli/v2 v2.27.6 - golang.org/x/crypto v0.38.0 - golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 - golang.org/x/net v0.40.0 + github.com/stretchr/testify v1.10.0 + github.com/urfave/cli/v2 v2.27.7 + golang.org/x/crypto v0.39.0 + golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b + golang.org/x/net v0.41.0 golang.org/x/oauth2 v0.30.0 - google.golang.org/api v0.236.0 - + google.golang.org/api v0.240.0 + gopkg.in/ini.v1 v1.67.0 ) require ( - cloud.google.com/go/auth v0.16.1 // indirect + cloud.google.com/go/auth v0.16.2 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect cloud.google.com/go/compute/metadata v0.7.0 // indirect dario.cat/mergo v1.0.2 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/ProtonMail/go-crypto v1.2.0 // indirect + github.com/ProtonMail/go-crypto v1.3.0 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.67 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.70 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 // indirect - github.com/aws/smithy-go v1.22.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.25.5 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.34.0 // indirect + github.com/aws/smithy-go v1.22.4 // indirect github.com/cloudflare/circl v1.6.1 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect github.com/cyphar/filepath-securejoin v0.4.1 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect github.com/emirpasic/gods v1.18.1 // indirect + github.com/fatih/color v1.18.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.6.2 // indirect - github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/google/go-querystring v1.1.0 // indirect @@ -62,7 +66,7 @@ require ( github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect github.com/googleapis/gax-go/v2 v2.14.2 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-retryablehttp v0.7.7 // indirect + github.com/hashicorp/go-retryablehttp v0.7.8 // indirect github.com/hashicorp/terraform-json v0.25.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect @@ -70,26 +74,28 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/pjbgf/sha1cd v0.3.2 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect + github.com/sergi/go-diff v1.4.0 // indirect github.com/skeema/knownhosts v1.3.1 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect - github.com/zclconf/go-cty v1.16.2 // indirect + github.com/zclconf/go-cty v1.16.3 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect - go.opentelemetry.io/otel v1.35.0 // indirect - go.opentelemetry.io/otel/metric v1.35.0 // indirect - go.opentelemetry.io/otel/trace v1.35.0 // indirect - golang.org/x/mod v0.24.0 // indirect - golang.org/x/sync v0.14.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 // indirect + go.opentelemetry.io/otel v1.37.0 // indirect + go.opentelemetry.io/otel/metric v1.37.0 // indirect + go.opentelemetry.io/otel/trace v1.37.0 // indirect + golang.org/x/mod v0.25.0 // indirect + golang.org/x/sync v0.15.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.25.0 // indirect - golang.org/x/tools v0.33.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect - google.golang.org/grpc v1.72.2 // indirect + golang.org/x/text v0.26.0 // indirect + golang.org/x/tools v0.34.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/grpc v1.73.0 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) require ( diff --git a/go.sum b/go.sum index 0bf08b02..a1abcddd 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -cloud.google.com/go/auth v0.16.1 h1:XrXauHMd30LhQYVRHLGvJiYeczweKQXZxsTbV9TiguU= -cloud.google.com/go/auth v0.16.1/go.mod h1:1howDHJ5IETh/LwYs3ZxvlkXF48aSqqJUM+5o02dNOI= +cloud.google.com/go/auth v0.16.2 h1:QvBAGFPLrDeoiNjyfVunhQ10HKNYuOwZ5noee0M5df4= +cloud.google.com/go/auth v0.16.2/go.mod h1:sRBas2Y1fB1vZTdurouM0AzuYQBMZinrUYL8EufhtEA= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= @@ -11,8 +11,8 @@ github.com/JamesWoolfenden/arn v0.2.5/go.mod h1:mvAV1GE5qXaYKYB6uQLpaGfaVwyhorsT github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/ProtonMail/go-crypto v1.2.0 h1:+PhXXn4SPGd+qk76TlEePBfOfivE0zkWFenhGhFLzWs= -github.com/ProtonMail/go-crypto v1.2.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE= +github.com/ProtonMail/go-crypto v1.3.0 h1:ILq8+Sf5If5DCpHQp4PbZdS1J7HDFRXz/+xKBiRGFrw= +github.com/ProtonMail/go-crypto v1.3.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= @@ -23,34 +23,34 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE= github.com/aws/aws-sdk-go v1.55.7/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= -github.com/aws/aws-sdk-go-v2 v1.36.3 h1:mJoei2CxPutQVxaATCzDUjcZEjVRdpsiiXi2o38yqWM= -github.com/aws/aws-sdk-go-v2 v1.36.3/go.mod h1:LLXuLpgzEbD766Z5ECcRmi8AzSwfZItDtmABVkRLGzg= -github.com/aws/aws-sdk-go-v2/config v1.29.14 h1:f+eEi/2cKCg9pqKBoAIwRGzVb70MRKqWX4dg1BDcSJM= -github.com/aws/aws-sdk-go-v2/config v1.29.14/go.mod h1:wVPHWcIFv3WO89w0rE10gzf17ZYy+UVS1Geq8Iei34g= -github.com/aws/aws-sdk-go-v2/credentials v1.17.67 h1:9KxtdcIA/5xPNQyZRgUSpYOE6j9Bc4+D7nZua0KGYOM= -github.com/aws/aws-sdk-go-v2/credentials v1.17.67/go.mod h1:p3C44m+cfnbv763s52gCqrjaqyPikj9Sg47kUVaNZQQ= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30/go.mod h1:Jpne2tDnYiFascUEs2AWHJL9Yp7A5ZVy3TNyxaAjD6M= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 h1:ZK5jHhnrioRkUNOc+hOgQKlUL5JeC3S6JgLxtQ+Rm0Q= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34/go.mod h1:p4VfIceZokChbA9FzMbRGz5OV+lekcVtHlPKEO0gSZY= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 h1:SZwFm17ZUNNg5Np0ioo/gq8Mn6u9w19Mri8DnJ15Jf0= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34/go.mod h1:dFZsC0BLo346mvKQLWmoJxT+Sjp+qcVR1tRVHQGOH9Q= +github.com/aws/aws-sdk-go-v2 v1.36.5 h1:0OF9RiEMEdDdZEMqF9MRjevyxAQcf6gY+E7vwBILFj0= +github.com/aws/aws-sdk-go-v2 v1.36.5/go.mod h1:EYrzvCCN9CMUTa5+6lf6MM4tq3Zjp8UhSGR/cBsjai0= +github.com/aws/aws-sdk-go-v2/config v1.29.17 h1:jSuiQ5jEe4SAMH6lLRMY9OVC+TqJLP5655pBGjmnjr0= +github.com/aws/aws-sdk-go-v2/config v1.29.17/go.mod h1:9P4wwACpbeXs9Pm9w1QTh6BwWwJjwYvJ1iCt5QbCXh8= +github.com/aws/aws-sdk-go-v2/credentials v1.17.70 h1:ONnH5CM16RTXRkS8Z1qg7/s2eDOhHhaXVd72mmyv4/0= +github.com/aws/aws-sdk-go-v2/credentials v1.17.70/go.mod h1:M+lWhhmomVGgtuPOhO85u4pEa3SmssPTdcYpP/5J/xc= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32 h1:KAXP9JSHO1vKGCr5f4O6WmlVKLFFXgWYAGoJosorxzU= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32/go.mod h1:h4Sg6FQdexC1yYG9RDnOvLbW1a/P986++/Y/a+GyEM8= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 h1:SsytQyTMHMDPspp+spo7XwXTP44aJZZAC7fBV2C5+5s= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36/go.mod h1:Q1lnJArKRXkenyog6+Y+zr7WDpk4e6XlR6gs20bbeNo= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 h1:i2vNHQiXUvKhs3quBR6aqlgJaiaexz/aNvdCktW/kAM= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36/go.mod h1:UdyGa7Q91id/sdyHPwth+043HhmP6yP9MBHgbZM0xo8= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= -github.com/aws/aws-sdk-go-v2/service/iam v1.42.0 h1:G6+UzGvubaet9QOh0664E9JeT+b6Zvop3AChozRqkrA= -github.com/aws/aws-sdk-go-v2/service/iam v1.42.0/go.mod h1:mPJkGQzeCoPs82ElNILor2JzZgYENr4UaSKUT8K27+c= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 h1:eAh2A4b5IzM/lum78bZ590jy36+d/aFLgKF/4Vd1xPE= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3/go.mod h1:0yKJC/kb8sAnmlYa6Zs3QVYqaC8ug2AbnNChv5Ox3uA= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 h1:dM9/92u2F1JbDaGooxTq18wmmFzbJRfXfVfy96/1CXM= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15/go.mod h1:SwFBy2vjtA0vZbjjaFtfN045boopadnoVPhu4Fv66vY= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 h1:1Gw+9ajCV1jogloEv1RRnvfRFia2cL6c9cuKV2Ps+G8= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.3/go.mod h1:qs4a9T5EMLl/Cajiw2TcbNt2UNo/Hqlyp+GiuG4CFDI= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 h1:hXmVKytPfTy5axZ+fYbR5d0cFmC3JvwLm5kM83luako= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1/go.mod h1:MlYRNmYu/fGPoxBQVvBYr9nyr948aY/WLUvwBMBJubs= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 h1:1XuUZ8mYJw9B6lzAkXhqHlJd/XvaX32evhproijJEZY= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.19/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4= -github.com/aws/smithy-go v1.22.3 h1:Z//5NuZCSW6R4PhQ93hShNbyBbn8BWCmCVCt+Q8Io5k= -github.com/aws/smithy-go v1.22.3/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= +github.com/aws/aws-sdk-go-v2/service/iam v1.43.0 h1:/ZZo3N8iU/PLsRSCjjlT/J+n4N8kqfTO7BwW1GE+G50= +github.com/aws/aws-sdk-go-v2/service/iam v1.43.0/go.mod h1:QRtwvoAGc59uxv4vQHPKr75SLzhYCRSoETxAA98r6O4= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 h1:CXV68E2dNqhuynZJPB80bhPQwAKqBWVer887figW6Jc= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4/go.mod h1:/xFi9KtvBXP97ppCz1TAEvU1Uf66qvid89rbem3wCzQ= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17 h1:t0E6FzREdtCsiLIoLCWsYliNsRBgyGD/MCK571qk4MI= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17/go.mod h1:ygpklyoaypuyDvOM5ujWGrYWpAK3h7ugnmKCU/76Ys4= +github.com/aws/aws-sdk-go-v2/service/sso v1.25.5 h1:AIRJ3lfb2w/1/8wOOSqYb9fUKGwQbtysJ2H1MofRUPg= +github.com/aws/aws-sdk-go-v2/service/sso v1.25.5/go.mod h1:b7SiVprpU+iGazDUqvRSLf5XmCdn+JtT1on7uNL6Ipc= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3 h1:BpOxT3yhLwSJ77qIY3DoHAQjZsc4HEGfMCE4NGy3uFg= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3/go.mod h1:vq/GQR1gOFLquZMSrxUK/cpvKCNVYibNyJ1m7JrU88E= +github.com/aws/aws-sdk-go-v2/service/sts v1.34.0 h1:NFOJ/NXEGV4Rq//71Hs1jC/NvPs1ezajK+yQmkwnPV0= +github.com/aws/aws-sdk-go-v2/service/sts v1.34.0/go.mod h1:7ph2tGpfQvwzgistp2+zga9f+bCjlQJPkPUmMgDSD7w= +github.com/aws/smithy-go v1.22.4 h1:uqXzVZNuNexwc/xrh6Tb56u89WDlJY6HS+KC0S4QSjw= +github.com/aws/smithy-go v1.22.4/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0= github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -65,13 +65,14 @@ github.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o github.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= -github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= @@ -80,11 +81,11 @@ github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UN github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.16.0 h1:k3kuOEpkc0DeY7xlL6NaaNg39xdgQbtH5mwCafHO9AQ= -github.com/go-git/go-git/v5 v5.16.0/go.mod h1:4Ge4alE/5gPs30F2H1esi2gPd69R0C39lolkucHBOp8= +github.com/go-git/go-git/v5 v5.16.2 h1:fT6ZIOjE5iEnkzKyxTHK1W4HGAsPhqEqiSAssSO77hM= +github.com/go-git/go-git/v5 v5.16.2/go.mod h1:4Ge4alE/5gPs30F2H1esi2gPd69R0C39lolkucHBOp8= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= @@ -124,14 +125,14 @@ github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9n github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= -github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= -github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= +github.com/hashicorp/go-retryablehttp v0.7.8 h1:ylXZWnqa7Lhqpk0L1P1LzDtGcCR0rPVUrx/c8Unxc48= +github.com/hashicorp/go-retryablehttp v0.7.8/go.mod h1:rjiScheydd+CxvumBsIrFKlx3iS0jrZ7LvzFGFmuKbw= github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/hc-install v0.9.2 h1:v80EtNX4fCVHqzL9Lg/2xkp62bbvQMnvPQ0G+OmtO24= github.com/hashicorp/hc-install v0.9.2/go.mod h1:XUqBQNnuT4RsxoxiM9ZaUk0NX8hi2h+Lb6/c0OZnC/I= -github.com/hashicorp/hcl/v2 v2.23.0 h1:Fphj1/gCylPxHutVSEOf2fBOh1VE4AuLV7+kbJf3qos= -github.com/hashicorp/hcl/v2 v2.23.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= +github.com/hashicorp/hcl/v2 v2.23.1-0.20250203194505-ba0759438da2 h1:JP8y98OtHTujECs4s/HxlKc5yql/RlC99Dt1Iz4R+lM= +github.com/hashicorp/hcl/v2 v2.23.1-0.20250203194505-ba0759438da2/go.mod h1:k+HgkLpoWu9OS81sy4j1XKDXaWm/rLysG33v5ibdDnc= github.com/hashicorp/terraform-exec v0.23.0 h1:MUiBM1s0CNlRFsCLJuM5wXZrzA3MnPYEsiXmzATMW/I= github.com/hashicorp/terraform-exec v0.23.0/go.mod h1:mA+qnx1R8eePycfwKkCRk3Wy65mwInvlpAeOwmA7vlY= github.com/hashicorp/terraform-json v0.25.0 h1:rmNqc/CIfcWawGiwXmRuiXJKEiJu1ntGoxseG1hLhoQ= @@ -187,8 +188,8 @@ github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY= github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= -github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= +github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw= +github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/skeema/knownhosts v1.3.1 h1:X2osQ+RAjK76shCbvhHHHVl3ZlgDm8apHEHFqRjnBY8= github.com/skeema/knownhosts v1.3.1/go.mod h1:r7KTdC8l4uxWRyK2TpQZ/1o5HaSzh06ePQNxPwTcfiY= @@ -198,8 +199,8 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/urfave/cli/v2 v2.27.6 h1:VdRdS98FNhKZ8/Az8B7MTyGQmpIr36O1EHybx/LaZ4g= -github.com/urfave/cli/v2 v2.27.6/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ= +github.com/urfave/cli/v2 v2.27.7 h1:bH59vdhbjLv3LAvIu6gd0usJHgoTTPhCFib8qqOwXYU= +github.com/urfave/cli/v2 v2.27.7/go.mod h1:CyNAG/xg+iAOg0N4MPGZqVmv2rCoP267496AOXUZjA4= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= @@ -211,50 +212,50 @@ github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDf github.com/yudai/pp v2.0.1+incompatible h1:Q4//iY4pNF6yPLZIigmvcl7k/bPgrcTPIFIcmawg5bI= github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/zclconf/go-cty v1.16.2 h1:LAJSwc3v81IRBZyUVQDUdZ7hs3SYs9jv0eZJDWHD/70= -github.com/zclconf/go-cty v1.16.2/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.16.3 h1:osr++gw2T61A8KVYHoQiFbFd1Lh3JOCXc/jFLJXKTxk= +github.com/zclconf/go-cty v1.16.3/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 h1:sbiXRNDSWJOTobXh5HyQKjq6wUC5tNybqjIqDpAY4CU= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ= -go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= -go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= -go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= -go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= -go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= -go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 h1:Hf9xI/XLML9ElpiHVDNwvqI0hIFlzV8dgIr35kV1kRU= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0/go.mod h1:NfchwuyNoMcZ5MLHwPrODwUF1HWCXWrL31s8gSAdIKY= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= -golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= -golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 h1:y5zboxd6LQAqYIhHnB48p0ByQ/GnQx2BE33L8BOHQkI= -golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6/go.mod h1:U6Lno4MTRCDY+Ba7aCcauB9T60gsv5s4ralQzP72ZoQ= +golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= +golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= +golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= -golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= +golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -281,27 +282,27 @@ golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= -golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= +golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= +golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.236.0 h1:CAiEiDVtO4D/Qja2IA9VzlFrgPnK3XVMmRoJZlSWbc0= -google.golang.org/api v0.236.0/go.mod h1:X1WF9CU2oTc+Jml1tiIxGmWFK/UZezdqEu09gcxZAj4= +google.golang.org/api v0.240.0 h1:PxG3AA2UIqT1ofIzWV2COM3j3JagKTKSwy7L6RHNXNU= +google.golang.org/api v0.240.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50= google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 h1:1tXaIXCracvtsRxSBsYDiSBN0cuJvM7QYW+MrpIRY78= google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:49MsLSx0oWMOZqcpB3uL8ZOkAh1+TndpJ8ONoCBWiZk= google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2 h1:vPV0tzlsK6EzEDHNNH5sa7Hs9bd7iXR7B1tSiPepkV0= google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:pKLAc5OolXC3ViWGI62vvC0n10CpwAtRcTNCFwTKBEw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= -google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -315,6 +316,8 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= diff --git a/main.go b/main.go index f4a5d9ae..efcc7806 100644 --- a/main.go +++ b/main.go @@ -32,12 +32,15 @@ func main() { workflow string name string provider string + outfile string + policyName string ) log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr}) app := &cli.App{ EnableBashCompletion: true, Flags: []cli.Flag{}, + UsageText: "Pike is a CLI for investigating IAM permissions", Commands: []*cli.Command{ { Name: "make", @@ -54,11 +57,15 @@ func main() { }, Action: func(*cli.Context) error { arn, err := pike.Make(directory) + if err != nil { + return fmt.Errorf("make failed: %w", err) + } + if arn != nil { - log.Print(*arn) + fmt.Print(*arn) } - return fmt.Errorf("make failed: %w", err) + return nil }, }, { @@ -166,13 +173,25 @@ func main() { Usage: "Filter results for just this provider (e.g. aws, gcp, azure)", Destination: &provider, }, + &cli.StringFlag{ + Name: "outfile", + //Aliases: []string{""}, + Usage: "filepath you want to write to the policy to", + Destination: &outfile, + }, + &cli.StringFlag{ + Name: "policyName", + //Aliases: []string{""}, + Usage: "the name of the policy you want to write", + Destination: &policyName, + }, }, Action: func(*cli.Context) error { if file == "" { - return pike.Scan(directory, output, nil, init, write, enableResources, provider) + return pike.Scan(directory, output, nil, init, write, enableResources, provider, outfile, policyName) } - return pike.Scan(directory, output, &file, init, write, enableResources, provider) + return pike.Scan(directory, output, &file, init, write, enableResources, provider, outfile, policyName) }, }, { diff --git a/src/aws.go b/src/aws.go index a9277901..bf552bdc 100644 --- a/src/aws.go +++ b/src/aws.go @@ -1527,6 +1527,18 @@ var tFLookup = map[string]interface{}{ //nolint:gochecknoglobals "aws_workspacesweb_browser_settings": awsWorkspaceswebBrowserSettings, "aws_workspacesweb_network_settings": awsWorkspaceswebNetworkSettings, "aws_workspacesweb_user_settings": awsWorkspaceswebUserSettings, + "aws_dsql_cluster": awsDsqlCluster, + "aws_dsql_cluster_peering": awsDsqlClusterPeering, + "aws_lightsail_bucket_access_key": awsLightsailBucketAccessKey, + "aws_prometheus_workspace_configuration": awsPrometheusWorkspaceConfiguration, + "aws_s3control_directory_bucket_access_point_scope": awsS3controlDirectoryBucketAccessPointScope, + "aws_vpc_route_server": awsVpcRouteServer, + "aws_vpc_route_server_association": placeholder, + "aws_vpc_route_server_propagation": awsVpcRouteServerPropagation, + "aws_vpc_route_server_vpc_association": awsVpcRouteServerVpcAssociation, + "aws_workspacesweb_data_protection_settings": awsWorkspaceswebDataProtectionSettings, + "aws_workspacesweb_ip_access_settings": awsWorkspaceswebIpAccessSettings, + "aws_workspacesweb_user_access_logging_settings": awsWorkspaceswebUserAccessLoggingSettings, } // GetAWSPermissions for AWS resources. diff --git a/src/aws_datasource.go b/src/aws_datasource.go index d07ab3c1..f4085bb1 100644 --- a/src/aws_datasource.go +++ b/src/aws_datasource.go @@ -2,6 +2,7 @@ package pike //goland:noinspection GoLinter var tFLookupDataAWS = map[string]interface{}{ + "backend": dataBackend, "aws_acm_certificate": dataAwsAcmCertificate, "aws_acmpca_certificate": dataAwsAcmpcaCertificate, "aws_acmpca_certificate_authority": dataAwsAcmpcaCertificateAuthority, @@ -605,6 +606,38 @@ var tFLookupDataAWS = map[string]interface{}{ "aws_elb": dataAwsElb, "aws_account_primary_contact": dataAwsAccountPrimaryContact, "aws_dynamodb_tables": dataAwsDynamodbTables, + "aws_ecr_images": dataAwsEcrImages, + "aws_s3_access_point": dataAwsS3AccessPoint, + "aws_billing_views": dataAwsBillingViews, + "aws_media_convert_queue": dataAwsMediaConvertQueue, + "aws_memorydb_acl": dataAwsMemorydbAcl, + "aws_memorydb_cluster": dataAwsMemorydbCluster, + "aws_memorydb_parameter_group": dataAwsMemorydbParameterGroup, + "aws_memorydb_snapshot": dataAwsMemorydbSnapshot, + "aws_memorydb_subnet_group": dataAwsMemorydbSubnetGroup, + "aws_memorydb_user": dataAwsMemorydbUser, + "aws_securityhub_standards_control_associations": dataAwsSecurityhubStandardsControlAssociations, + "aws_workspaces_workspace": dataAwsWorkspacesWorkspace, + "aws_appconfig_application": dataAwsAppconfigApplication, + "aws_odb_cloud_autonomous_vm_cluster": dataAwsOdbCloudAutonomousVmCluster, + "aws_odb_cloud_autonomous_vm_clusters": dataAwsOdbCloudAutonomousVmClusters, + "aws_odb_cloud_exadata_infrastructure": dataAwsOdbCloudExadataInfrastructure, + "aws_odb_cloud_exadata_infrastructures": dataAwsOdbCloudExadataInfrastructures, + "aws_odb_cloud_vm_cluster": dataAwsOdbCloudVmCluster, + "aws_odb_cloud_vm_clusters": dataAwsOdbCloudVmClusters, + "aws_odb_db_node": dataAwsOdbDbNode, + "aws_odb_db_nodes": dataAwsOdbDbNodes, + "aws_odb_db_server": dataAwsOdbServer, + "aws_odb_db_servers": dataAwsOdbServers, + "aws_odb_db_system_shapes": dataAwsOdbDbSystemShapes, + "aws_odb_gi_versions": dataAwsOdbGiVersions, + "aws_odb_network": dataAwsOdbNetwork, + "aws_odb_network_peering_connection": dataAwsOdbNetworkPeeringConnection, + "aws_odb_network_peering_connections": dataAwsOdbNetworkPeeringConnections, + "aws_odb_networks": dataAwsOdbNetworks, + "aws_ecrpublic_images": dataAwsEcrPublicImages, + "aws_rds_global_cluster": dataAwsRdsGlobalCluster, + "aws_vpn_connection": dataAwsVpnConnection, } // GetAWSDataPermissions gets permissions required for datasource's. diff --git a/src/azure_policy_test.go b/src/azure_policy_test.go index fc5e20d9..3e4b0426 100644 --- a/src/azure_policy_test.go +++ b/src/azure_policy_test.go @@ -1,10 +1,8 @@ -package pike_test +package pike import ( _ "embed" "testing" - - pike "github.com/jameswoolfenden/pike/src" ) //nolint:funlen @@ -55,7 +53,7 @@ func TestAZUREPolicy(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - got, err := pike.AZUREPolicy(tt.args.permissions, tt.args.policyName) + got, err := AZUREPolicy(tt.args.permissions, tt.args.policyName) if (err != nil) != tt.wantErr { t.Errorf("AZUREPolicy() error = %v, wantErr %v", err, tt.wantErr) diff --git a/src/compare.go b/src/compare.go index ea8a66e5..f7fa0067 100644 --- a/src/compare.go +++ b/src/compare.go @@ -21,6 +21,14 @@ import ( "google.golang.org/api/serviceusage/v1" ) +// Replace hardcoded values with constants +const ( + defaultTimeout = 30 * time.Second + gcpIAMAPIName = "iam.googleapis.com" + awsARNPrefix = "arn:" + gcpProjectPrefix = "projects/" +) + type invalidCloudError struct { arn string } @@ -39,7 +47,7 @@ func Compare(directory string, arn string, init bool) (bool, error) { return false, &inputValidationError{err: err} } - switch *getCloudFromRole(arn) { + switch getCloudFromRole(arn) { case "aws": { result, err = compareAWSRole(directory, arn, init) @@ -57,18 +65,19 @@ func Compare(directory string, arn string, init bool) (bool, error) { return result, err } -func getCloudFromRole(arn string) *string { +func getCloudFromRole(arn string) string { + var result string if strings.Contains(arn, "arn:") { result = "aws" - } - - if strings.Contains(arn, "projects") { + } else if strings.Contains(arn, "projects") { result = "gcp" + } else { + result = "unknown" } - return &result + return result } type apiNotFoundError struct { @@ -88,7 +97,17 @@ func (m *apiNotEnabledError) Error() string { } func compareGCPRole(directory string, arn string, init bool) (bool, error) { - iacPolicy, err := MakePermissionBag(directory, nil, init, "") + // The resource name of the role in one of the following formats: + // `roles/{ROLE_NAME}` + // `organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}` + // `projects/{PROJECT_ID}/roles/{ROLE_NAME}` + err := verifyGCPRole(arn) + + if err != nil { + return false, &gcpRoleNotVerified{arn} + } + + iacPolicy, err := makePermissionBag(directory, nil, init, "") if err != nil { return false, &getIAMVersionError{err} } @@ -100,10 +119,8 @@ func compareGCPRole(directory string, arn string, init bool) (bool, error) { return false, &EnvVariableNotSetError{"GCP_PROJECT"} } - //projectID = *temp - var API string - API = "iam.googleapis.com" + API = gcpIAMAPIName enabled, err := isGCPAPIEnabled(*projectID, API) @@ -120,37 +137,30 @@ func compareGCPRole(directory string, arn string, init bool) (bool, error) { iamService, err := gcpiam.NewService(ctx) if err != nil { - return false, &IAMServiceError{err} - } - - // The resource name of the role in one of the following formats: - // `roles/{ROLE_NAME}` - // `organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}` - // `projects/{PROJECT_ID}/roles/{ROLE_NAME}` - err = VerifyGCPRole(arn) - - if err != nil { - return false, &GcpRoleNotVerified{arn} + return false, &iamServiceError{err} } Roles, err := iamService.Roles.Get(arn).Context(ctx).Do() if Roles == nil { - return false, &GCPRoleNotFound{arn} + return false, &gcpRoleNotFound{arn} } if err != nil { - return false, &GCPIAMRoleError{err} + return false, &gcpIAMRoleError{err} } return compareGCPPolicy(Roles, iacPolicy), nil } func compareGCPPolicy(Roles *gcpiam.Role, iacPolicy Sorted) bool { - results := cmp.Diff(Roles.IncludedPermissions, iacPolicy.GCP) + slices.Sort(Roles.IncludedPermissions) + slices.Sort(iacPolicy.GCP) + + results := cmp.Diff(Unique(Roles.IncludedPermissions), Unique(iacPolicy.GCP)) if results != "" { - results = strings.Replace(results, "[]string{", "", -1) - results = strings.Replace(results, "}", "", -1) + replacer := strings.NewReplacer("[]string{", "", "}", "") + results = replacer.Replace(results) fmt.Print("Policy Comparison mismatch mismatch (-excess +needs):") fmt.Print(results) return false @@ -158,34 +168,34 @@ func compareGCPPolicy(Roles *gcpiam.Role, iacPolicy Sorted) bool { return true } -type GCPIAMRoleError struct { +type gcpIAMRoleError struct { err error } -func (m *GCPIAMRoleError) Error() string { +func (m *gcpIAMRoleError) Error() string { return fmt.Sprintf("IAM Role Error: %v", m.err) } -type GCPRoleNotFound struct { +type gcpRoleNotFound struct { role string } -func (e *GCPRoleNotFound) Error() string { +func (e *gcpRoleNotFound) Error() string { return fmt.Sprintf("IAM Role Error: %v", e.role) } -type IAMServiceError struct { +type iamServiceError struct { err error } -func (m *IAMServiceError) Error() string { +func (m *iamServiceError) Error() string { return m.err.Error() } func isGCPAPIEnabled(projectID string, want string) (bool, error) { enabledAPIs, err := listEnabledAPIs(projectID) - if err != nil { + if err != nil || enabledAPIs == nil { log.Error().Msgf("Failed to list enabled APIs %v", err) } @@ -197,8 +207,9 @@ func isGCPAPIEnabled(projectID string, want string) (bool, error) { } func compareAWSRole(directory string, arn string, init bool) (bool, error) { + // Load the Shared AWS Configuration (~/.aws/config) - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), defaultTimeout) defer cancel() @@ -219,7 +230,7 @@ func compareAWSRole(directory string, arn string, init bool) (bool, error) { return false, &getPolicyVersionError{err} } - iacPolicy, err := MakePolicy(directory, nil, init, false, "") + iacPolicy, err := MakePolicy(directory, nil, init, false, "", "") if err != nil { return false, &getIAMVersionError{err} } @@ -251,7 +262,7 @@ func inputValidationCompare(directory string, arn string) (bool, error) { return false, &directoryNotFoundError{directory} } - if !strings.HasPrefix(arn, "arn:") && !strings.HasPrefix(arn, "projects/") { + if !strings.HasPrefix(arn, awsARNPrefix) && !strings.HasPrefix(arn, gcpProjectPrefix) { log.Error().Msgf("Invalid ARN %s cant determine cloud in use", arn) return false, &invalidARNError{arn} } @@ -339,11 +350,21 @@ func listEnabledAPIs(projectID string) ([]string, error) { return services, nil } -type GcpRoleNotVerified struct { +type arnNotVerified struct { + arn string +} + +func (e *arnNotVerified) Error() string { + fmt.Print("ARN must be in the following format:") + fmt.Print("arn:aws:iam::123456789012:role/role-name") + return fmt.Sprintf("ARN %s not verified", e.arn) +} + +type gcpRoleNotVerified struct { role string } -func (e *GcpRoleNotVerified) Error() string { +func (e *gcpRoleNotVerified) Error() string { fmt.Print( `The resource name of the role in one of the following formats: roles/{ROLE_NAME} @@ -352,12 +373,25 @@ func (e *GcpRoleNotVerified) Error() string { return e.role } -func VerifyGCPRole(role string) error { +func verifyGCPRole(role string) error { r, err := regexp.Compile("projects/(.*\\S)/roles/(.*\\S)") + // Regex should be compiled once as package variable if err == nil { if r.MatchString(role) { return nil } } - return &GcpRoleNotVerified{role} + + return &gcpRoleNotVerified{role} +} + +func verifyAWSARN(ARN string) error { + r, err := regexp.Compile("arn:aws:iam::(.*\\S):role/(.*\\S)") + // Regex should be compiled once as package variable + if err == nil { + if r.MatchString(ARN) { + return nil + } + } + return &arnNotVerified{ARN} } diff --git a/src/compare_internal_test.go b/src/compare_internal_test.go new file mode 100644 index 00000000..c213f8e5 --- /dev/null +++ b/src/compare_internal_test.go @@ -0,0 +1,442 @@ +package pike + +import ( + "errors" + "os" + "path/filepath" + "testing" + + "github.com/stretchr/testify/assert" + diff "github.com/yudai/gojsondiff" + gcpiam "google.golang.org/api/iam/v1" +) + +type mockDiff struct { + diff.Diff +} + +func (m mockDiff) Modified() bool { + return true +} + +func TestCompareIAMPolicy(t *testing.T) { + t.Parallel() + + type args struct { + Policy string + OldPolicy string + } + + tests := []struct { + name string + args args + want bool + wantErr bool + }{ + { + "same", + args{ + "{\"Statement\":[{\"Action\":[\"cognito-idp:ListUserPoolClients\",\"cognito-idp:GetSigningCertificate\",\"cognito-idp:DescribeUserPoolClient\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"0\"}],\"Version\":\"2012-10-17\"}", + "{\"Statement\":[{\"Action\":[\"cognito-idp:ListUserPoolClients\",\"cognito-idp:GetSigningCertificate\",\"cognito-idp:DescribeUserPoolClient\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"0\"}],\"Version\":\"2012-10-17\"}", + }, + true, + false, + }, + { + "different", + args{ + "{\"Statement\":[{\"Action\":[\"cognito-idp:ListUserPoolClients\",\"cognito-idp:GetSigningCertificate\",\"cognito-idp:DescribeUserPoolClient\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"0\"}],\"Version\":\"2012-10-17\"}", + "{\"Statement\":[{\"Action\":[\"cognito-idp:ListUserPoolClients\",\"cognito-idp:GetSigningCertificate\",\"cognito-idp:bogus\",\"cognito-idp:DescribeUserPoolClient\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"0\"}],\"Version\":\"2012-10-17\"}", + }, + false, + false, + }, + { + "not-json", + args{ + "guff", + "{\"Statement\":[{\"Action\":[\"cognito-idp:ListUserPoolClients\",\"cognito-idp:GetSigningCertificate\",\"cognito-idp:bogus\",\"cognito-idp:DescribeUserPoolClient\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"0\"}],\"Version\":\"2012-10-17\"}", + }, + false, + true, + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + got, err := compareIAMPolicy(tt.args.Policy, tt.args.OldPolicy) + if (err != nil) != tt.wantErr { + t.Errorf("CompareIAMPolicy() error = %v, wantErr %v", err, tt.wantErr) + + return + } + if got != tt.want { + t.Errorf("CompareIAMPolicy() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestShowDifferences(t *testing.T) { + tests := []struct { + name string + policy string + diff diff.Diff + wantBool bool + wantErr bool + description string + }{ + { + name: "Invalid JSON policy", + policy: `{invalid-json}`, + diff: &mockDiff{}, + wantBool: false, + wantErr: true, + description: "Should return error for invalid JSON", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + gotBool, err := showDifferences(tt.policy, tt.diff) + + if (err != nil) != tt.wantErr { + t.Errorf("ShowDifferences() error = %v, wantErr %v", err, tt.wantErr) + return + } + + if gotBool != tt.wantBool { + t.Errorf("ShowDifferences() = %v, want %v", gotBool, tt.wantBool) + } + }) + } +} + +func TestInputValidationCompare(t *testing.T) { + // Create a temporary directory for testing + tmpDir, err := os.MkdirTemp("", "pike-test-*") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll(tmpDir) + + tests := []struct { + name string + directory string + arn string + wantBool bool + wantErr error + }{ + { + name: "empty directory", + directory: "", + arn: "arn:aws:iam::123456789012:policy/test", + wantBool: false, + wantErr: &emptyDirectoryError{}, + }, + { + name: "non-existent directory", + directory: filepath.Join(tmpDir, "nonexistent"), + arn: "arn:aws:iam::123456789012:policy/test", + wantBool: false, + wantErr: &directoryNotFoundError{filepath.Join(tmpDir, "nonexistent")}, + }, + { + name: "empty ARN", + directory: tmpDir, + arn: "", + wantBool: false, + wantErr: &arnEmptyError{}, + }, + { + name: "invalid ARN format", + directory: tmpDir, + arn: "invalid:arn", + wantBool: false, + wantErr: &invalidARNError{"invalid:arn"}, + }, + { + name: "valid inputs", + directory: tmpDir, + arn: "arn:aws:iam::123456789012:policy/test", + wantBool: true, + wantErr: nil, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + gotBool, gotErr := inputValidationCompare(tt.directory, tt.arn) + if gotBool != tt.wantBool { + t.Errorf("inputValidationCompare() bool = %v, want %v", gotBool, tt.wantBool) + } + if (gotErr == nil && tt.wantErr != nil) || (gotErr != nil && tt.wantErr == nil) { + t.Errorf("inputValidationCompare() error = %v, want %v", gotErr, tt.wantErr) + } + if gotErr != nil && tt.wantErr != nil && gotErr.Error() != tt.wantErr.Error() { + t.Errorf("inputValidationCompare() error = %v, want %v", gotErr, tt.wantErr) + } + }) + } +} + +func TestGetCloudFromRole(t *testing.T) { + tests := []struct { + name string + arn string + expected string + }{ + { + name: "AWS ARN", + arn: "arn:aws:iam::123456789012:role/MyRole", + expected: "aws", + }, + { + name: "GCP project role", + arn: "projects/my-project/roles/my-role", + expected: "gcp", + }, + { + name: "Unknown format", + arn: "invalid-role-format", + expected: "unknown", + }, + { + name: "Empty string", + arn: "", + expected: "unknown", + }, + { + name: "Partial AWS ARN", + arn: "arn:something", + expected: "aws", + }, + { + name: "Partial GCP format", + arn: "projects/test", + expected: "gcp", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := getCloudFromRole(tt.arn) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestVerifyGCPRole(t *testing.T) { + tests := []struct { + name string + role string + expectError bool + }{ + { + name: "valid GCP role format", + role: "projects/my-project/roles/my-custom-role", + expectError: false, + }, + { + name: "valid GCP role with numbers and hyphens", + role: "projects/my-project-123/roles/custom-role-456", + expectError: false, + }, + { + name: "valid GCP role with underscores", + role: "projects/my_project/roles/my_role", + expectError: false, + }, + { + name: "invalid role - missing projects prefix", + role: "my-project/roles/my-role", + expectError: true, + }, + { + name: "invalid role - missing roles section", + role: "projects/my-project/my-role", + expectError: true, + }, + { + name: "invalid role - empty project name", + role: "projects//roles/my-role", + expectError: true, + }, + { + name: "invalid role - empty role name", + role: "projects/my-project/roles/", + expectError: true, + }, + { + name: "invalid role - completely empty", + role: "", + expectError: true, + }, + { + name: "invalid role - wrong format", + role: "organizations/123456789/roles/my-role", + expectError: true, + }, + { + name: "invalid role - predefined role format", + role: "roles/viewer", + expectError: true, + }, + { + name: "invalid role - trailing whitespace in project", + role: "projects/my-project /roles/my-role", + expectError: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := verifyGCPRole(tt.role) + + if tt.expectError { + if err == nil { + t.Errorf("expected error for role %q, but got nil", tt.role) + } else { + // Verify it's the correct error type + if _, ok := err.(*gcpRoleNotVerified); !ok { + t.Errorf("expected gcpRoleNotVerified error type, got %T", err) + } + } + } else { + if err != nil { + t.Errorf("expected no error for role %q, but got: %v", tt.role, err) + } + } + }) + } +} + +func TestVerifyGCPRole_ErrorMessage(t *testing.T) { + invalidRole := "invalid-role-format" + err := verifyGCPRole(invalidRole) + + if err == nil { + t.Fatal("expected error but got nil") + } + + gcpErr, ok := err.(*gcpRoleNotVerified) + if !ok { + t.Fatalf("expected gcpRoleNotVerified error type, got %T", err) + } + + if gcpErr.role != invalidRole { + t.Errorf("expected error to contain role %q, got %q", invalidRole, gcpErr.role) + } +} + +func Test_gcpIAMRoleError_Error(t *testing.T) { + type fields struct { + err error + } + tests := []struct { + name string + fields fields + want string + }{ + {"invoke", fields{err: &gcpRoleNotVerified{role: "test"}}, "IAM Role Error: test"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &gcpIAMRoleError{ + err: tt.fields.err, + } + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_gcpRoleNotFound_Error(t *testing.T) { + type fields struct { + role string + } + tests := []struct { + name string + fields fields + want string + }{ + {"Invoke", fields{role: "test"}, "IAM Role Error: test"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &gcpRoleNotFound{ + role: tt.fields.role, + } + assert.Equalf(t, tt.want, e.Error(), "Error()") + }) + } +} + +func Test_compareDifferenceError_Error(t *testing.T) { + type fields struct { + err error + } + tests := []struct { + name string + fields fields + want string + }{ + {"Invoke", fields{errors.New("test")}, "compare difference failed: test"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &compareDifferenceError{ + err: tt.fields.err, + } + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_iamServiceError_Error(t *testing.T) { + type fields struct { + err error + } + tests := []struct { + name string + fields fields + want string + }{ + {"invoke", fields{errors.New("test")}, "test"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &iamServiceError{ + err: tt.fields.err, + } + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_compareGCPPolicy(t *testing.T) { + type args struct { + Roles *gcpiam.Role + iacPolicy Sorted + } + tests := []struct { + name string + args args + want bool + }{ + {"Pass", + args{Roles: &gcpiam.Role{IncludedPermissions: []string{"Fred"}}, + iacPolicy: Sorted{GCP: []string{"Fred"}}}, + true}, + {"False", + args{Roles: &gcpiam.Role{IncludedPermissions: []string{"Fred"}}, + iacPolicy: Sorted{GCP: []string{"Jane"}}}, + false}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equalf(t, tt.want, compareGCPPolicy(tt.args.Roles, tt.args.iacPolicy), "compareGCPPolicy(%v, %v)", tt.args.Roles, tt.args.iacPolicy) + }) + } +} diff --git a/src/compare_test.go b/src/compare_test.go index 61e2702b..11237457 100644 --- a/src/compare_test.go +++ b/src/compare_test.go @@ -4,81 +4,10 @@ package pike import ( "os" - "path/filepath" "reflect" "testing" - - diff "github.com/yudai/gojsondiff" ) -type mockDiff struct { - diff.Diff -} - -func (m mockDiff) Modified() bool { - return true -} - -func TestCompareIAMPolicy(t *testing.T) { - t.Parallel() - - type args struct { - Policy string - OldPolicy string - } - - tests := []struct { - name string - args args - want bool - wantErr bool - }{ - { - "same", - args{ - "{\"Statement\":[{\"Action\":[\"cognito-idp:ListUserPoolClients\",\"cognito-idp:GetSigningCertificate\",\"cognito-idp:DescribeUserPoolClient\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"0\"}],\"Version\":\"2012-10-17\"}", - "{\"Statement\":[{\"Action\":[\"cognito-idp:ListUserPoolClients\",\"cognito-idp:GetSigningCertificate\",\"cognito-idp:DescribeUserPoolClient\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"0\"}],\"Version\":\"2012-10-17\"}", - }, - true, - false, - }, - { - "different", - args{ - "{\"Statement\":[{\"Action\":[\"cognito-idp:ListUserPoolClients\",\"cognito-idp:GetSigningCertificate\",\"cognito-idp:DescribeUserPoolClient\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"0\"}],\"Version\":\"2012-10-17\"}", - "{\"Statement\":[{\"Action\":[\"cognito-idp:ListUserPoolClients\",\"cognito-idp:GetSigningCertificate\",\"cognito-idp:bogus\",\"cognito-idp:DescribeUserPoolClient\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"0\"}],\"Version\":\"2012-10-17\"}", - }, - false, - false, - }, - { - "not-json", - args{ - "guff", - "{\"Statement\":[{\"Action\":[\"cognito-idp:ListUserPoolClients\",\"cognito-idp:GetSigningCertificate\",\"cognito-idp:bogus\",\"cognito-idp:DescribeUserPoolClient\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"0\"}],\"Version\":\"2012-10-17\"}", - }, - false, - true, - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - got, err := compareIAMPolicy(tt.args.Policy, tt.args.OldPolicy) - if (err != nil) != tt.wantErr { - t.Errorf("CompareIAMPolicy() error = %v, wantErr %v", err, tt.wantErr) - - return - } - if got != tt.want { - t.Errorf("CompareIAMPolicy() = %v, want %v", got, tt.want) - } - }) - } -} - func TestCompare(t *testing.T) { t.Parallel() @@ -120,117 +49,6 @@ func TestCompare(t *testing.T) { } } -func TestShowDifferences(t *testing.T) { - tests := []struct { - name string - policy string - diff diff.Diff - wantBool bool - wantErr bool - description string - }{ - //{ - // name: "Valid policy and diff", - // policy: `{"Version": "2012-10-17", "Statement": [{"Effect": "Allow"}]}`, - // diff: &mockDiff{}, - // wantBool: false, - // wantErr: false, - // description: "Should successfully format and display differences", - //}, - { - name: "Invalid JSON policy", - policy: `{invalid-json}`, - diff: &mockDiff{}, - wantBool: false, - wantErr: true, - description: "Should return error for invalid JSON", - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - gotBool, err := showDifferences(tt.policy, tt.diff) - - if (err != nil) != tt.wantErr { - t.Errorf("ShowDifferences() error = %v, wantErr %v", err, tt.wantErr) - return - } - - if gotBool != tt.wantBool { - t.Errorf("ShowDifferences() = %v, want %v", gotBool, tt.wantBool) - } - }) - } -} - -func TestInputValidationCompare(t *testing.T) { - // Create a temporary directory for testing - tmpDir, err := os.MkdirTemp("", "pike-test-*") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(tmpDir) - - tests := []struct { - name string - directory string - arn string - wantBool bool - wantErr error - }{ - { - name: "empty directory", - directory: "", - arn: "arn:aws:iam::123456789012:policy/test", - wantBool: false, - wantErr: &emptyDirectoryError{}, - }, - { - name: "non-existent directory", - directory: filepath.Join(tmpDir, "nonexistent"), - arn: "arn:aws:iam::123456789012:policy/test", - wantBool: false, - wantErr: &directoryNotFoundError{filepath.Join(tmpDir, "nonexistent")}, - }, - { - name: "empty ARN", - directory: tmpDir, - arn: "", - wantBool: false, - wantErr: &arnEmptyError{}, - }, - { - name: "invalid ARN format", - directory: tmpDir, - arn: "invalid:arn", - wantBool: false, - wantErr: &invalidARNError{"invalid:arn"}, - }, - { - name: "valid inputs", - directory: tmpDir, - arn: "arn:aws:iam::123456789012:policy/test", - wantBool: true, - wantErr: nil, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - gotBool, gotErr := inputValidationCompare(tt.directory, tt.arn) - if gotBool != tt.wantBool { - t.Errorf("inputValidationCompare() bool = %v, want %v", gotBool, tt.wantBool) - } - if (gotErr == nil && tt.wantErr != nil) || (gotErr != nil && tt.wantErr == nil) { - t.Errorf("inputValidationCompare() error = %v, want %v", gotErr, tt.wantErr) - } - if gotErr != nil && tt.wantErr != nil && gotErr.Error() != tt.wantErr.Error() { - t.Errorf("inputValidationCompare() error = %v, want %v", gotErr, tt.wantErr) - } - }) - } -} - func Test_listEnabledAPIs(t *testing.T) { type args struct { projectID string @@ -302,35 +120,6 @@ func Test_compareGCPRole(t *testing.T) { } } -//func TestGcpRoleNotVerified_Error(t *testing.T) { -// type fields struct { -// role string -// } -// output := -// `The resource name of the role in one of the following formats: -// roles/{ROLE_NAME} -// organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME} -// projects/{PROJECT_ID}/roles/{ROLE_NAME}` -// -// tests := []struct { -// name string -// fields fields -// want string -// }{ -// {"fail", fields{"pike-fail"}, output}, -// } -// for _, tt := range tests { -// t.Run(tt.name, func(t *testing.T) { -// e := &GcpRoleNotVerified{ -// role: tt.fields.role, -// } -// if got := e.Error(); got != tt.want { -// t.Errorf("Error() = %v, want %v", got, tt.want) -// } -// }) -// } -//} - func TestVerifyRole(t *testing.T) { type args struct { role string @@ -353,7 +142,7 @@ func TestVerifyRole(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - err := VerifyGCPRole(tt.args.role) + err := verifyGCPRole(tt.args.role) if (err != nil) != tt.wantErr { t.Errorf("VerifyRole() error = %v, wantErr %v", err, tt.wantErr) return diff --git a/src/coverage/aws.md b/src/coverage/aws.md index a7b2f0d2..91a8c024 100644 --- a/src/coverage/aws.md +++ b/src/coverage/aws.md @@ -1,19 +1,72 @@ -# todo aws +# AWS Resource Status -Resource percentage coverage 99.08 -Datasource percentage coverage 100.00 +| Terraform | Coverage % | Resources | Total Resources | +|------------|------------|-----------|-----------------| +| Resources | 95.96 | 1498 | 1561 | +| Datasource | 100.00 | 628 | 628 | -./resource.ps1 aws_dsql_cluster -./resource.ps1 aws_dsql_cluster_peering -./resource.ps1 aws_lightsail_bucket_access_key -./resource.ps1 aws_prometheus_workspace_configuration -./resource.ps1 aws_s3control_directory_bucket_access_point_scope -./resource.ps1 aws_vpc_route_server -./resource.ps1 aws_vpc_route_server_association +```shell +./resource.ps1 aws_appsync_api +./resource.ps1 aws_appsync_channel_namespace +./resource.ps1 aws_bedrockagent_flow +./resource.ps1 aws_bedrockagentcore_agent_runtime +./resource.ps1 aws_bedrockagentcore_agent_runtime_endpoint +./resource.ps1 aws_bedrockagentcore_api_key_credential_provider +./resource.ps1 aws_bedrockagentcore_browser +./resource.ps1 aws_bedrockagentcore_code_interpreter +./resource.ps1 aws_bedrockagentcore_gateway +./resource.ps1 aws_bedrockagentcore_gateway_target +./resource.ps1 aws_bedrockagentcore_memory +./resource.ps1 aws_bedrockagentcore_memory_strategy +./resource.ps1 aws_bedrockagentcore_oauth2_credential_provider +./resource.ps1 aws_bedrockagentcore_token_vault_cmk +./resource.ps1 aws_bedrockagentcore_workload_identity +./resource.ps1 aws_cognito_log_delivery_configuration +./resource.ps1 aws_cognito_managed_login_branding +./resource.ps1 aws_connect_phone_number_contact_flow_association +./resource.ps1 aws_controltower_baseline +./resource.ps1 aws_ec2_allowed_images_settings +./resource.ps1 aws_fis_target_account_configuration +./resource.ps1 aws_fsx_s3_access_point_attachment +./resource.ps1 aws_invoicing_invoice_unit +./resource.ps1 aws_lakeformation_identity_center_configuration +./resource.ps1 aws_lakeformation_lf_tag_expression +./resource.ps1 aws_nat_gateway_eip_association +./resource.ps1 aws_networkfirewall_firewall_transit_gateway_attachment_accepter +./resource.ps1 aws_networkfirewall_vpc_endpoint_association +./resource.ps1 aws_networkflowmonitor_monitor +./resource.ps1 aws_networkflowmonitor_scope +./resource.ps1 aws_observabilityadmin_centralization_rule_for_organization +./resource.ps1 aws_odb_cloud_autonomous_vm_cluster +./resource.ps1 aws_odb_cloud_exadata_infrastructure +./resource.ps1 aws_odb_cloud_vm_cluster +./resource.ps1 aws_odb_network +./resource.ps1 aws_odb_network_peering_connection +./resource.ps1 aws_prometheus_query_logging_configuration +./resource.ps1 aws_prometheus_resource_policy +./resource.ps1 aws_quicksight_custom_permissions +./resource.ps1 aws_quicksight_ip_restriction +./resource.ps1 aws_quicksight_key_registration +./resource.ps1 aws_quicksight_role_custom_permission +./resource.ps1 aws_quicksight_user_custom_permission +./resource.ps1 aws_s3_bucket_metadata_configuration +./resource.ps1 aws_timestreaminfluxdb_db_cluster +./resource.ps1 aws_transfer_host_key +./resource.ps1 aws_transfer_web_app +./resource.ps1 aws_transfer_web_app_customization ./resource.ps1 aws_vpc_route_server_endpoint ./resource.ps1 aws_vpc_route_server_peer -./resource.ps1 aws_vpc_route_server_propagation -./resource.ps1 aws_vpc_route_server_vpc_association -./resource.ps1 aws_workspacesweb_data_protection_settings -./resource.ps1 aws_workspacesweb_ip_access_settings -./resource.ps1 aws_workspacesweb_user_access_logging_settings +./resource.ps1 aws_wafv2_web_acl_rule_group_association +./resource.ps1 aws_workspacesweb_browser_settings_association +./resource.ps1 aws_workspacesweb_data_protection_settings_association +./resource.ps1 aws_workspacesweb_identity_provider +./resource.ps1 aws_workspacesweb_ip_access_settings_association +./resource.ps1 aws_workspacesweb_network_settings_association +./resource.ps1 aws_workspacesweb_portal +./resource.ps1 aws_workspacesweb_session_logger +./resource.ps1 aws_workspacesweb_session_logger_association +./resource.ps1 aws_workspacesweb_trust_store +./resource.ps1 aws_workspacesweb_trust_store_association +./resource.ps1 aws_workspacesweb_user_access_logging_settings_association +./resource.ps1 aws_workspacesweb_user_settings_association +``` diff --git a/src/coverage/azure.md b/src/coverage/azure.md index 1a139d00..c991e42e 100755 --- a/src/coverage/azure.md +++ b/src/coverage/azure.md @@ -1,8 +1,11 @@ -# todo azure +# Azure Resource Status -Resource percentage coverage 4.50 -Datasource percentage coverage 34.17 +| Terraform | Coverage % | Resources | Total Resources | +|------------|------------|-----------|-----------------| +| Resources | 4.39 | 49 | 1115 | +| Datasource | 30.65 | 122 | 398 | +```shell ./resource.ps1 azurerm_aadb2c_directory ./resource.ps1 azurerm_active_directory_domain_service ./resource.ps1 azurerm_active_directory_domain_service_replica_set @@ -57,9 +60,15 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_api_management_product_policy ./resource.ps1 azurerm_api_management_product_tag ./resource.ps1 azurerm_api_management_redis_cache +./resource.ps1 azurerm_api_management_standalone_gateway ./resource.ps1 azurerm_api_management_subscription ./resource.ps1 azurerm_api_management_tag ./resource.ps1 azurerm_api_management_user +./resource.ps1 azurerm_api_management_workspace +./resource.ps1 azurerm_api_management_workspace_api_version_set +./resource.ps1 azurerm_api_management_workspace_certificate +./resource.ps1 azurerm_api_management_workspace_policy +./resource.ps1 azurerm_api_management_workspace_policy_fragment ./resource.ps1 azurerm_app_configuration_feature ./resource.ps1 azurerm_app_configuration_key ./resource.ps1 azurerm_app_service_active_slot @@ -88,6 +97,7 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_application_insights_workbook_template ./resource.ps1 azurerm_application_load_balancer ./resource.ps1 azurerm_application_load_balancer_frontend +./resource.ps1 azurerm_application_load_balancer_security_policy ./resource.ps1 azurerm_application_load_balancer_subnet_association ./resource.ps1 azurerm_application_security_group ./resource.ps1 azurerm_arc_kubernetes_cluster @@ -240,6 +250,7 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_data_factory_credential_service_principal ./resource.ps1 azurerm_data_factory_credential_user_managed_identity ./resource.ps1 azurerm_data_factory_custom_dataset +./resource.ps1 azurerm_data_factory_customer_managed_key ./resource.ps1 azurerm_data_factory_data_flow ./resource.ps1 azurerm_data_factory_dataset_azure_blob ./resource.ps1 azurerm_data_factory_dataset_azure_sql_table @@ -352,11 +363,14 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_elastic_san_volume_group ./resource.ps1 azurerm_email_communication_service ./resource.ps1 azurerm_email_communication_service_domain +./resource.ps1 azurerm_email_communication_service_domain_sender_username ./resource.ps1 azurerm_eventgrid_domain ./resource.ps1 azurerm_eventgrid_domain_topic ./resource.ps1 azurerm_eventgrid_event_subscription ./resource.ps1 azurerm_eventgrid_namespace ./resource.ps1 azurerm_eventgrid_partner_configuration +./resource.ps1 azurerm_eventgrid_partner_namespace +./resource.ps1 azurerm_eventgrid_partner_registration ./resource.ps1 azurerm_eventgrid_system_topic ./resource.ps1 azurerm_eventgrid_system_topic_event_subscription ./resource.ps1 azurerm_eventgrid_topic @@ -539,9 +553,12 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_managed_application_definition ./resource.ps1 azurerm_managed_disk_sas_token ./resource.ps1 azurerm_managed_lustre_file_system +./resource.ps1 azurerm_managed_redis +./resource.ps1 azurerm_managed_redis_geo_replication ./resource.ps1 azurerm_management_group_policy_assignment ./resource.ps1 azurerm_management_group_policy_exemption ./resource.ps1 azurerm_management_group_policy_remediation +./resource.ps1 azurerm_management_group_policy_set_definition ./resource.ps1 azurerm_management_group_subscription_association ./resource.ps1 azurerm_management_group_template_deployment ./resource.ps1 azurerm_management_lock @@ -563,6 +580,7 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_mobile_network_site ./resource.ps1 azurerm_mobile_network_slice ./resource.ps1 azurerm_mongo_cluster +./resource.ps1 azurerm_mongo_cluster_firewall_rule ./resource.ps1 azurerm_monitor_aad_diagnostic_setting ./resource.ps1 azurerm_monitor_action_group ./resource.ps1 azurerm_monitor_activity_log_alert @@ -599,6 +617,7 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_mssql_managed_instance_active_directory_administrator ./resource.ps1 azurerm_mssql_managed_instance_failover_group ./resource.ps1 azurerm_mssql_managed_instance_security_alert_policy +./resource.ps1 azurerm_mssql_managed_instance_start_stop_schedule ./resource.ps1 azurerm_mssql_managed_instance_transparent_data_encryption ./resource.ps1 azurerm_mssql_managed_instance_vulnerability_assessment ./resource.ps1 azurerm_mssql_outbound_firewall_rule @@ -647,14 +666,18 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_network_manager_connectivity_configuration ./resource.ps1 azurerm_network_manager_deployment ./resource.ps1 azurerm_network_manager_ipam_pool +./resource.ps1 azurerm_network_manager_ipam_pool_static_cidr ./resource.ps1 azurerm_network_manager_management_group_connection ./resource.ps1 azurerm_network_manager_network_group ./resource.ps1 azurerm_network_manager_routing_configuration +./resource.ps1 azurerm_network_manager_routing_rule +./resource.ps1 azurerm_network_manager_routing_rule_collection ./resource.ps1 azurerm_network_manager_scope_connection ./resource.ps1 azurerm_network_manager_security_admin_configuration ./resource.ps1 azurerm_network_manager_static_member ./resource.ps1 azurerm_network_manager_subscription_connection ./resource.ps1 azurerm_network_manager_verifier_workspace +./resource.ps1 azurerm_network_manager_verifier_workspace_reachability_analysis_intent ./resource.ps1 azurerm_network_profile ./resource.ps1 azurerm_new_relic_monitor ./resource.ps1 azurerm_new_relic_tag_rule @@ -666,8 +689,13 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_notification_hub_authorization_rule ./resource.ps1 azurerm_notification_hub_namespace ./resource.ps1 azurerm_oracle_autonomous_database +./resource.ps1 azurerm_oracle_autonomous_database_backup +./resource.ps1 azurerm_oracle_autonomous_database_clone_from_backup +./resource.ps1 azurerm_oracle_autonomous_database_clone_from_database ./resource.ps1 azurerm_oracle_cloud_vm_cluster ./resource.ps1 azurerm_oracle_exadata_infrastructure +./resource.ps1 azurerm_oracle_exascale_database_storage_vault +./resource.ps1 azurerm_oracle_resource_anchor ./resource.ps1 azurerm_orbital_contact ./resource.ps1 azurerm_orbital_contact_profile ./resource.ps1 azurerm_orbital_spacecraft @@ -698,6 +726,7 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_postgresql_firewall_rule ./resource.ps1 azurerm_postgresql_flexible_server ./resource.ps1 azurerm_postgresql_flexible_server_active_directory_administrator +./resource.ps1 azurerm_postgresql_flexible_server_backup ./resource.ps1 azurerm_postgresql_flexible_server_configuration ./resource.ps1 azurerm_postgresql_flexible_server_database ./resource.ps1 azurerm_postgresql_flexible_server_firewall_rule @@ -840,7 +869,6 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_site_recovery_vmware_replication_policy_association ./resource.ps1 azurerm_snapshot ./resource.ps1 azurerm_source_control_token -./resource.ps1 azurerm_spatial_anchors_account ./resource.ps1 azurerm_spring_cloud_accelerator ./resource.ps1 azurerm_spring_cloud_active_deployment ./resource.ps1 azurerm_spring_cloud_api_portal @@ -1047,9 +1075,10 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_aadb2c_directory -type data ./resource.ps1 azurerm_active_directory_domain_service -type data ./resource.ps1 azurerm_advisor_recommendations -type data +./resource.ps1 azurerm_api_connection -type data ./resource.ps1 azurerm_api_management_subscription -type data ./resource.ps1 azurerm_arc_resource_bridge_appliance -type data -./resource.ps1 azurerm_attestation -type data +./resource.ps1 azurerm_attestation_provider -type data ./resource.ps1 azurerm_automation_runbook -type data ./resource.ps1 azurerm_billing_enrollment_account_scope -type data ./resource.ps1 azurerm_billing_mca_account_scope -type data @@ -1070,8 +1099,8 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_consumption_budget_resource_group -type data ./resource.ps1 azurerm_consumption_budget_subscription -type data ./resource.ps1 azurerm_container_app -type data -./resource.ps1 azurerm_container_app_environment. -type data -./resource.ps1 azurerm_container_app_environment_certificate. -type data +./resource.ps1 azurerm_container_app_environment -type data +./resource.ps1 azurerm_container_app_environment_certificate -type data ./resource.ps1 azurerm_container_app_environment_dapr_component. -type data ./resource.ps1 azurerm_container_group -type data ./resource.ps1 azurerm_container_registry -type data @@ -1082,6 +1111,7 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_cosmosdb_mongo_database -type data ./resource.ps1 azurerm_cosmosdb_restorable_database_accounts -type data ./resource.ps1 azurerm_cosmosdb_sql_database -type data +./resource.ps1 azurerm_cosmosdb_sql_role_definition -type data ./resource.ps1 azurerm_dashboard_grafana -type data ./resource.ps1 azurerm_data_factory -type data ./resource.ps1 azurerm_data_factory_trigger_schedule -type data @@ -1097,17 +1127,22 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_data_share_dataset_kusto_database -type data ./resource.ps1 azurerm_database_migration_project -type data ./resource.ps1 azurerm_database_migration_service -type data +./resource.ps1 azurerm_databox_edge_device -type data ./resource.ps1 azurerm_databricks_access_connector -type data ./resource.ps1 azurerm_databricks_workspace -type data ./resource.ps1 azurerm_databricks_workspace_private_endpoint_connection -type data ./resource.ps1 azurerm_dedicated_host -type data ./resource.ps1 azurerm_dedicated_host_group -type data ./resource.ps1 azurerm_dev_center -type data +./resource.ps1 azurerm_dev_center_attached_network -type data ./resource.ps1 azurerm_dev_center_catalog -type data +./resource.ps1 azurerm_dev_center_dev_box_definition -type data +./resource.ps1 azurerm_dev_center_environment_type -type data ./resource.ps1 azurerm_dev_center_gallery -type data ./resource.ps1 azurerm_dev_center_network_connection -type data ./resource.ps1 azurerm_dev_center_project -type data ./resource.ps1 azurerm_dev_center_project_environment_type -type data +./resource.ps1 azurerm_dev_center_project_pool -type data ./resource.ps1 azurerm_digital_twins_instance -type data ./resource.ps1 azurerm_disk_access -type data ./resource.ps1 azurerm_disk_encryption_set -type data @@ -1129,9 +1164,12 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_elastic_san_volume_snapshot -type data ./resource.ps1 azurerm_eventgrid_domain -type data ./resource.ps1 azurerm_eventgrid_domain_topic -type data +./resource.ps1 azurerm_eventgrid_partner_namespace -type data +./resource.ps1 azurerm_eventgrid_partner_registration -type data ./resource.ps1 azurerm_eventgrid_system_topic -type data ./resource.ps1 azurerm_eventgrid_topic -type data ./resource.ps1 azurerm_eventhub -type data +./resource.ps1 azurerm_eventhub_authorization_rule -type data ./resource.ps1 azurerm_eventhub_cluster -type data ./resource.ps1 azurerm_eventhub_consumer_group -type data ./resource.ps1 azurerm_eventhub_namespace -type data @@ -1145,6 +1183,7 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_firewall_policy -type data ./resource.ps1 azurerm_function_app -type data ./resource.ps1 azurerm_function_app_host_keys -type data +./resource.ps1 azurerm_graph_services_account -type data ./resource.ps1 azurerm_hdinsight_cluster -type data ./resource.ps1 azurerm_healthcare_dicom_service -type data ./resource.ps1 azurerm_healthcare_fhir_service -type data @@ -1177,6 +1216,7 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_local_network_gateway -type data ./resource.ps1 azurerm_location -type data ./resource.ps1 azurerm_log_analytics_workspace -type data +./resource.ps1 azurerm_log_analytics_workspace_table -type data ./resource.ps1 azurerm_logic_app_integration_account -type data ./resource.ps1 azurerm_logic_app_standard -type data ./resource.ps1 azurerm_logic_app_workflow -type data @@ -1185,9 +1225,23 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_managed_api -type data ./resource.ps1 azurerm_managed_application_definition -type data ./resource.ps1 azurerm_managed_disk -type data +./resource.ps1 azurerm_managed_disks -type data +./resource.ps1 azurerm_managed_redis -type data ./resource.ps1 azurerm_management_group -type data ./resource.ps1 azurerm_management_group_template_deployment -type data ./resource.ps1 azurerm_maps_account -type data +./resource.ps1 azurerm_marketplace_agreement -type data +./resource.ps1 azurerm_mobile_network -type data +./resource.ps1 azurerm_mobile_network_attached_data_network -type data +./resource.ps1 azurerm_mobile_network_data_network -type data +./resource.ps1 azurerm_mobile_network_packet_core_control_plane -type data +./resource.ps1 azurerm_mobile_network_packet_core_data_plane -type data +./resource.ps1 azurerm_mobile_network_service -type data +./resource.ps1 azurerm_mobile_network_sim -type data +./resource.ps1 azurerm_mobile_network_sim_group -type data +./resource.ps1 azurerm_mobile_network_sim_policy -type data +./resource.ps1 azurerm_mobile_network_site -type data +./resource.ps1 azurerm_mobile_network_slice -type data ./resource.ps1 azurerm_monitor_action_group -type data ./resource.ps1 azurerm_monitor_data_collection_endpoint -type data ./resource.ps1 azurerm_monitor_data_collection_rule -type data @@ -1197,12 +1251,16 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_monitor_workspace -type data ./resource.ps1 azurerm_mssql_database -type data ./resource.ps1 azurerm_mssql_elasticpool -type data +./resource.ps1 azurerm_mssql_failover_group -type data ./resource.ps1 azurerm_mssql_managed_database -type data ./resource.ps1 azurerm_mssql_managed_instance -type data ./resource.ps1 azurerm_mssql_server -type data +./resource.ps1 azurerm_mysql_flexible_server -type data ./resource.ps1 azurerm_nat_gateway -type data ./resource.ps1 azurerm_netapp_account -type data ./resource.ps1 azurerm_netapp_account_encryption -type data +./resource.ps1 azurerm_netapp_backup_policy -type data +./resource.ps1 azurerm_netapp_backup_vault -type data ./resource.ps1 azurerm_netapp_pool -type data ./resource.ps1 azurerm_netapp_snapshot -type data ./resource.ps1 azurerm_netapp_snapshot_policy -type data @@ -1212,7 +1270,10 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_netapp_volume_quota_rule -type data ./resource.ps1 azurerm_network_ddos_protection_plan -type data ./resource.ps1 azurerm_network_interface -type data +./resource.ps1 azurerm_network_manager -type data ./resource.ps1 azurerm_network_manager_connectivity_configuration -type data +./resource.ps1 azurerm_network_manager_ipam_pool -type data +./resource.ps1 azurerm_network_manager_network_group -type data ./resource.ps1 azurerm_network_security_group -type data ./resource.ps1 azurerm_network_service_tags -type data ./resource.ps1 azurerm_nginx_api_key -type data @@ -1224,12 +1285,18 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_oracle_adbs_character_sets -type data ./resource.ps1 azurerm_oracle_adbs_national_character_sets -type data ./resource.ps1 azurerm_oracle_autonomous_database -type data +./resource.ps1 azurerm_oracle_autonomous_database_backup -type data +./resource.ps1 azurerm_oracle_autonomous_database_backups -type data +./resource.ps1 azurerm_oracle_autonomous_database_clone_from_backup -type data +./resource.ps1 azurerm_oracle_autonomous_database_clone_from_database -type data ./resource.ps1 azurerm_oracle_cloud_vm_cluster -type data ./resource.ps1 azurerm_oracle_db_nodes -type data ./resource.ps1 azurerm_oracle_db_servers -type data ./resource.ps1 azurerm_oracle_db_system_shapes -type data ./resource.ps1 azurerm_oracle_exadata_infrastructure -type data +./resource.ps1 azurerm_oracle_exascale_database_storage_vault -type data ./resource.ps1 azurerm_oracle_gi_versions -type data +./resource.ps1 azurerm_oracle_resource_anchor -type data ./resource.ps1 azurerm_orchestrated_virtual_machine_scale_set -type data ./resource.ps1 azurerm_palo_alto_local_rulestack -type data ./resource.ps1 azurerm_platform_image -type data @@ -1265,17 +1332,20 @@ Datasource percentage coverage 34.17 ./resource.ps1 azurerm_recovery_services_vault -type data ./resource.ps1 azurerm_role_assignments -type data ./resource.ps1 azurerm_role_management_policy -type data +./resource.ps1 azurerm_search_service -type data ./resource.ps1 azurerm_sentinel_alert_rule_anomaly -type data ./resource.ps1 azurerm_servicebus_namespace_disaster_recovery_config -type data ./resource.ps1 azurerm_servicebus_topic_authorization_rule -type data +./resource.ps1 azurerm_site_recovery_replication_recovery_plan -type data ./resource.ps1 azurerm_stack_hci_storage_path -type data ./resource.ps1 azurerm_static_web_app -type data ./resource.ps1 azurerm_storage_queue -type data ./resource.ps1 azurerm_storage_table -type data +./resource.ps1 azurerm_storage_table_entities -type data ./resource.ps1 azurerm_system_center_virtual_machine_manager_inventory_items -type data +./resource.ps1 azurerm_trusted_signing_account -type data ./resource.ps1 azurerm_virtual_desktop_application_group -type data ./resource.ps1 azurerm_virtual_desktop_workspace -type data ./resource.ps1 azurerm_virtual_network_peering -type data ./resource.ps1 azurerm_vpn_server_configuration -type data -./resource.ps1 netapp_backup_policy -type data -./resource.ps1 netapp_backup_vault -type data +``` diff --git a/src/coverage/coverage.go b/src/coverage/coverage.go index b2237a09..a70dcd66 100644 --- a/src/coverage/coverage.go +++ b/src/coverage/coverage.go @@ -19,7 +19,7 @@ type members struct { func coverageAWS() error { data := importMembers("../parse/aws-members.json") missing := members{} - target := "" + target := "```shell\n" for _, myData := range data.Resources { if temp := pike.AwsLookup(myData); temp == nil { @@ -38,11 +38,9 @@ func coverageAWS() error { } } } + target += "```\n" - Prepend := "# todo aws \n\n" - - Prepend += fmt.Sprintf("Resource percentage coverage %3.2f \n", percent(missing.Resources, data.Resources)) - Prepend += fmt.Sprintf("Datasource percentage coverage %3.2f \n\n", percent(missing.DataSources, data.DataSources)) + Prepend := resourceTable(missing, data, "AWS") target = Prepend + target err := os.WriteFile("aws.md", []byte(target), 0o700) @@ -65,7 +63,7 @@ func (e *fileWriteError) Error() string { func coverageAzure() error { data := importMembers("../parse/azurerm-members.json") missing := members{} - target := "" + target := "```shell\n" for _, myData := range data.Resources { if temp := pike.AzureLookup(myData); temp == nil { @@ -80,12 +78,9 @@ func coverageAzure() error { target += "./resource.ps1 " + myData + " -type data\n" } } + target += "```\n" - Prepend := "# todo azure \n\n" - - Prepend += fmt.Sprintf("Resource percentage coverage %3.2f \n", percent(missing.Resources, data.Resources)) - Prepend += fmt.Sprintf("Datasource percentage coverage %3.2f \n\n", percent(missing.DataSources, data.DataSources)) - + Prepend := resourceTable(missing, data, "Azure") target = Prepend + target err := os.WriteFile("azure.md", []byte(target), 0o700) @@ -100,7 +95,7 @@ func coverageAzure() error { func coverageGcp() error { data := importMembers("../parse/google-members.json") missing := members{} - target := "" + target := "```shell\n" for _, myData := range data.Resources { if temp := pike.GCPLookup(myData); temp == nil { @@ -115,11 +110,9 @@ func coverageGcp() error { target += "./resource.ps1 " + myData + " -type data\n" } } + target += "```\n" - Prepend := "# todo google \n\n" - - Prepend += fmt.Sprintf("Resource percentage coverage %3.2f \n", percent(missing.Resources, data.Resources)) - Prepend += fmt.Sprintf("Datasource percentage coverage %3.2f \n\n", percent(missing.DataSources, data.DataSources)) + Prepend := resourceTable(missing, data, "Google") target = Prepend + target err := os.WriteFile("google.md", []byte(target), 0o700) @@ -132,6 +125,19 @@ func coverageGcp() error { return nil } +func resourceTable(missing members, data members, cloud string) string { + Prepend := fmt.Sprintf("# %s Resource Status\n\n", cloud) + Prepend += fmt.Sprintf("| Terraform | Coverage %% | Resources | Total Resources |\n") + Prepend += fmt.Sprintf("|------------|------------|-----------|-----------------|\n") + Prepend += fmt.Sprintf("| Resources | %3.2f | %5d | %5d |\n", + percent(missing.Resources, data.Resources), + len(data.Resources)-len(missing.Resources), len(data.Resources)) + Prepend += fmt.Sprintf("| Datasource | %3.2f | %5d | %5d |\n\n", + percent(missing.DataSources, data.DataSources), + len(data.DataSources)-len(missing.DataSources), len(data.DataSources)) + return Prepend +} + func importMembers(targetMembers string) members { fileName, _ := filepath.Abs(targetMembers) file, _ := os.ReadFile(fileName) diff --git a/src/coverage/coverage_internal_test.go b/src/coverage/coverage_internal_test.go new file mode 100644 index 00000000..93b3e1d1 --- /dev/null +++ b/src/coverage/coverage_internal_test.go @@ -0,0 +1,213 @@ +package coverage + +import ( + "encoding/json" + "os" + "path/filepath" + "strings" + "testing" + + pike "github.com/jameswoolfenden/pike/src" +) + +// Helper function to create test JSON file +func createTestMembersFile(t *testing.T, data members) string { + tempDir := t.TempDir() + filePath := filepath.Join(tempDir, "test-members.json") + + jsonData, err := json.Marshal(data) + if err != nil { + t.Fatalf("Failed to marshal test data: %v", err) + } + + err = os.WriteFile(filePath, jsonData, 0644) + if err != nil { + t.Fatalf("Failed to write test file: %v", err) + } + + return filePath +} + +// Test the data sources processing logic specifically +func TestCoverageAWS_DataSourcesProcessing(t *testing.T) { + tests := []struct { + name string + dataSources []string + expectedMissing []string + expectedTargetLines int + }{ + { + name: "empty data sources", + dataSources: []string{}, + expectedMissing: []string{}, + expectedTargetLines: 0, + }, + { + name: "aws data source not in pike lookup", + dataSources: []string{"aws_s3_bucket_duff"}, + expectedMissing: []string{"aws_s3_bucket_duff"}, + expectedTargetLines: 1, + }, + { + name: "non-aws data source not in pike lookup", + dataSources: []string{"google_storage_bucket"}, + expectedMissing: []string{}, + expectedTargetLines: 0, + }, + { + name: "mixed aws and non-aws data sources", + dataSources: []string{"aws_s3_bucket_duff", "google_storage_bucket", "aws_ec2_instance"}, + expectedMissing: []string{"aws_s3_bucket_duff", "aws_ec2_instance"}, + expectedTargetLines: 2, + }, + { + name: "data source containing aws in middle", + dataSources: []string{"terraform_aws_s3_bucket"}, + expectedMissing: []string{"terraform_aws_s3_bucket"}, + expectedTargetLines: 1, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + // Create test data + testData := members{ + DataSources: tt.dataSources, + Resources: []string{}, // Empty for this test + } + + // Create temporary test file + testFile := createTestMembersFile(t, testData) + + // Load test data + data := members{} + fileName, _ := filepath.Abs(testFile) + file, err := os.ReadFile(fileName) + if err != nil { + t.Fatalf("Failed to read test file: %v", err) + } + err = json.Unmarshal(file, &data) + if err != nil { + t.Fatalf("Failed to unmarshal test data: %v", err) + } + + // Simulate the data sources processing logic from lines 34-40 + missing := members{} + target := "" + + for _, myData := range data.DataSources { + // Simulate pike.AwsDataLookup returning nil (not found) + if temp := pike.AwsDataLookup(myData); temp == nil { + if strings.Contains(myData, "aws") { + missing.DataSources = append(missing.DataSources, myData) + target += "./resource.ps1 " + myData + " -type data\n" + } + } + } + + // Verify results + if len(missing.DataSources) != len(tt.expectedMissing) { + t.Errorf("Expected %d missing data sources, got %d", len(tt.expectedMissing), len(missing.DataSources)) + } + + for i, expected := range tt.expectedMissing { + if i >= len(missing.DataSources) || missing.DataSources[i] != expected { + t.Errorf("Expected missing data source %s, got %s", expected, missing.DataSources[i]) + } + } + + // Count target lines + targetLines := 0 + if target != "" { + targetLines = strings.Count(target, "\n") + } + + if targetLines != tt.expectedTargetLines { + t.Errorf("Expected %d target lines, got %d", tt.expectedTargetLines, targetLines) + } + + // Verify target format for aws data sources + for _, expectedDS := range tt.expectedMissing { + expectedLine := "./resource.ps1 " + expectedDS + " -type data\n" + if !strings.Contains(target, expectedLine) { + t.Errorf("Expected target to contain %s", expectedLine) + } + } + }) + } +} + +func TestCoverageAWS_DataSourcesTargetFormat(t *testing.T) { + testData := members{ + DataSources: []string{"aws_s3_bucket", "aws_ec2_instance"}, + Resources: []string{}, + } + + testFile := createTestMembersFile(t, testData) + + data := members{} + fileName, _ := filepath.Abs(testFile) + file, _ := os.ReadFile(fileName) + _ = json.Unmarshal(file, &data) + + target := "" + for _, myData := range data.DataSources { + if temp := pike.AwsDataLookup(myData); temp == nil { + if strings.Contains(myData, "aws") { + target += "./resource.ps1 " + myData + " -type data\n" + } + } + } + + expectedTarget := "./resource.ps1 aws_ec2_instance -type data\n" + if target != expectedTarget { + t.Errorf("Expected target format:\n%s\nGot:\n%s", expectedTarget, target) + } +} + +func TestCoverageAWS_DataSourcesCaseInsensitive(t *testing.T) { + testCases := []struct { + name string + dataSource string + shouldAdd bool + }{ + {"lowercase aws", "aws_ec2_instance", true}, + {"uppercase AWS", "AWS_EC2_INSTANCE", false}, + {"mixed case", "Aws_EC2_Bucket", false}, + {"aws in middle", "terraform_aws_s3", true}, + {"no aws", "google_storage", false}, + {"aws substring", "awesome_bucket", false}, // contains "aws" + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + testData := members{ + DataSources: []string{tc.dataSource}, + Resources: []string{}, + } + + testFile := createTestMembersFile(t, testData) + + data := members{} + fileName, _ := filepath.Abs(testFile) + file, _ := os.ReadFile(fileName) + _ = json.Unmarshal(file, &data) + + missing := members{} + for _, myData := range data.DataSources { + if temp := pike.AwsDataLookup(myData); temp == nil { + if strings.Contains(myData, "aws") { + missing.DataSources = append(missing.DataSources, myData) + } + } + } + + if tc.shouldAdd && len(missing.DataSources) == 0 { + t.Errorf("Expected %s to be added to missing data sources", tc.dataSource) + } + if !tc.shouldAdd && len(missing.DataSources) > 0 { + t.Errorf("Expected %s not to be added to missing data sources", tc.dataSource) + } + }) + } +} diff --git a/src/coverage/coverage_test.go b/src/coverage/coverage_test.go index b47b1f61..76009001 100644 --- a/src/coverage/coverage_test.go +++ b/src/coverage/coverage_test.go @@ -1,6 +1,7 @@ package coverage import ( + "errors" "testing" pike "github.com/jameswoolfenden/pike/src" @@ -101,3 +102,26 @@ func Test_coverageGcp(t *testing.T) { }) } } + +func Test_fileWriteError_Error(t *testing.T) { + type fields struct { + err error + } + tests := []struct { + name string + fields fields + want string + }{ + {"invoke", fields{err: errors.New("fail")}, "fail"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &fileWriteError{ + err: tt.fields.err, + } + if got := e.Error(); got != tt.want { + t.Errorf("Error() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/src/coverage/google.md b/src/coverage/google.md index d3e12850..2275cfd5 100755 --- a/src/coverage/google.md +++ b/src/coverage/google.md @@ -1,8 +1,11 @@ -# todo google +# Google Resource Status -Resource percentage coverage 16.87 -Datasource percentage coverage 64.63 +| Terraform | Coverage % | Resources | Total Resources | +|------------|------------|-----------|-----------------| +| Resources | 62.39 | 783 | 1255 | +| Datasource | 99.01 | 399 | 403 | +```shell ./resource.ps1 google_access_context_manager_access_level_condition ./resource.ps1 google_access_context_manager_service_perimeter_dry_run_egress_policy ./resource.ps1 google_access_context_manager_service_perimeter_dry_run_ingress_policy @@ -15,18 +18,19 @@ Datasource percentage coverage 64.63 ./resource.ps1 google_active_directory_peering ./resource.ps1 google_apigee_addons_config ./resource.ps1 google_apigee_api +./resource.ps1 google_apigee_api_deployment +./resource.ps1 google_apigee_api_product ./resource.ps1 google_apigee_app_group ./resource.ps1 google_apigee_control_plane_access ./resource.ps1 google_apigee_developer +./resource.ps1 google_apigee_developer_app ./resource.ps1 google_apigee_dns_zone ./resource.ps1 google_apigee_env_keystore ./resource.ps1 google_apigee_envgroup ./resource.ps1 google_apigee_envgroup_attachment ./resource.ps1 google_apigee_environment ./resource.ps1 google_apigee_environment_addons_config -./resource.ps1 google_apigee_environment_iam_binding -./resource.ps1 google_apigee_environment_iam_member -./resource.ps1 google_apigee_environment_iam_policy +./resource.ps1 google_apigee_environment_api_revision_deployment ./resource.ps1 google_apigee_environment_keyvaluemaps ./resource.ps1 google_apigee_environment_keyvaluemaps_entries ./resource.ps1 google_apigee_instance @@ -34,13 +38,11 @@ Datasource percentage coverage 64.63 ./resource.ps1 google_apigee_keystores_aliases_self_signed_cert ./resource.ps1 google_apigee_nat_address ./resource.ps1 google_apigee_organization +./resource.ps1 google_apigee_security_action ./resource.ps1 google_apigee_security_monitoring_condition ./resource.ps1 google_apigee_security_profile_v2 ./resource.ps1 google_apigee_sync_authorization ./resource.ps1 google_apigee_target_server -./resource.ps1 google_apihub_api_hub_instance -./resource.ps1 google_apihub_curation -./resource.ps1 google_apihub_host_project_registration ./resource.ps1 google_apikeys_key ./resource.ps1 google_app_engine_application ./resource.ps1 google_app_engine_application_url_dispatch_rules @@ -50,69 +52,30 @@ Datasource percentage coverage 64.63 ./resource.ps1 google_app_engine_service_network_settings ./resource.ps1 google_app_engine_service_split_traffic ./resource.ps1 google_app_engine_standard_app_version -./resource.ps1 google_apphub_application -./resource.ps1 google_apphub_service -./resource.ps1 google_apphub_service_project_attachment -./resource.ps1 google_apphub_workload +./resource.ps1 google_artifact_registry_package ./resource.ps1 google_artifact_registry_vpcsc_config ./resource.ps1 google_assured_workloads_workload -./resource.ps1 google_backup_dr_backup_plan -./resource.ps1 google_backup_dr_backup_plan_association -./resource.ps1 google_backup_dr_backup_vault -./resource.ps1 google_backup_dr_management_server -./resource.ps1 google_beyondcorp_app_connection -./resource.ps1 google_beyondcorp_app_connector -./resource.ps1 google_beyondcorp_app_gateway -./resource.ps1 google_beyondcorp_application -./resource.ps1 google_beyondcorp_application_iam_binding -./resource.ps1 google_beyondcorp_application_iam_member -./resource.ps1 google_beyondcorp_application_iam_policy -./resource.ps1 google_beyondcorp_security_gateway -./resource.ps1 google_beyondcorp_security_gateway_application -./resource.ps1 google_beyondcorp_security_gateway_application_iam_binding -./resource.ps1 google_beyondcorp_security_gateway_application_iam_member -./resource.ps1 google_beyondcorp_security_gateway_application_iam_policy -./resource.ps1 google_beyondcorp_security_gateway_iam_binding -./resource.ps1 google_beyondcorp_security_gateway_iam_member -./resource.ps1 google_beyondcorp_security_gateway_iam_policy -./resource.ps1 google_biglake_catalog -./resource.ps1 google_biglake_database -./resource.ps1 google_biglake_table -./resource.ps1 google_bigquery_analytics_hub_listing_subscription -./resource.ps1 google_bigquery_datapolicy_data_policy -./resource.ps1 google_bigquery_datapolicy_data_policy_iam_binding -./resource.ps1 google_bigquery_datapolicy_data_policy_iam_member -./resource.ps1 google_bigquery_datapolicy_data_policy_iam_policy -./resource.ps1 google_bigquery_dataset_access -./resource.ps1 google_bigquery_row_access_policy -./resource.ps1 google_bigtable_authorized_view -./resource.ps1 google_bigtable_logical_view -./resource.ps1 google_bigtable_materialized_view -./resource.ps1 google_billing_account_iam_binding -./resource.ps1 google_billing_account_iam_member -./resource.ps1 google_billing_account_iam_policy -./resource.ps1 google_billing_budget -./resource.ps1 google_billing_project_info +./resource.ps1 google_bigquery_analytics_hub_data_exchange_subscription +./resource.ps1 google_bigquery_datapolicyv2_data_policy +./resource.ps1 google_bigquery_datapolicyv2_data_policy_iam_binding +./resource.ps1 google_bigquery_datapolicyv2_data_policy_iam_member +./resource.ps1 google_bigquery_datapolicyv2_data_policy_iam_policy ./resource.ps1 google_billing_subaccount ./resource.ps1 google_binary_authorization_attestor -./resource.ps1 google_binary_authorization_attestor_iam_binding -./resource.ps1 google_binary_authorization_attestor_iam_member -./resource.ps1 google_binary_authorization_attestor_iam_policy ./resource.ps1 google_binary_authorization_policy ./resource.ps1 google_blockchain_node_engine_blockchain_nodes ./resource.ps1 google_certificate_manager_certificate ./resource.ps1 google_certificate_manager_certificate_issuance_config ./resource.ps1 google_certificate_manager_certificate_map ./resource.ps1 google_certificate_manager_certificate_map_entry -./resource.ps1 google_certificate_manager_dns_authorization ./resource.ps1 google_certificate_manager_trust_config -./resource.ps1 google_chronicle_data_access_label -./resource.ps1 google_chronicle_data_access_scope -./resource.ps1 google_chronicle_reference_list -./resource.ps1 google_chronicle_retrohunt -./resource.ps1 google_chronicle_rule -./resource.ps1 google_chronicle_rule_deployment -./resource.ps1 google_chronicle_watchlist +./resource.ps1 google_ces_agent +./resource.ps1 google_ces_app +./resource.ps1 google_ces_deployment +./resource.ps1 google_ces_example +./resource.ps1 google_ces_guardrail +./resource.ps1 google_ces_tool +./resource.ps1 google_ces_toolset ./resource.ps1 google_cloud_asset_folder_feed ./resource.ps1 google_cloud_asset_organization_feed ./resource.ps1 google_cloud_asset_project_feed @@ -121,123 +84,56 @@ Datasource percentage coverage 64.63 ./resource.ps1 google_cloud_ids_endpoint ./resource.ps1 google_cloud_quotas_quota_adjuster_settings ./resource.ps1 google_cloud_quotas_quota_preference -./resource.ps1 google_cloud_run_domain_mapping -./resource.ps1 google_cloud_run_service -./resource.ps1 google_cloud_run_service_iam_binding -./resource.ps1 google_cloud_run_service_iam_member -./resource.ps1 google_cloud_run_service_iam_policy -./resource.ps1 google_cloud_run_v2_worker_pool -./resource.ps1 google_cloud_run_v2_worker_pool_iam_binding -./resource.ps1 google_cloud_run_v2_worker_pool_iam_member -./resource.ps1 google_cloud_run_v2_worker_pool_iam_policy +./resource.ps1 google_cloud_security_compliance_cloud_control +./resource.ps1 google_cloud_security_compliance_framework +./resource.ps1 google_cloud_security_compliance_framework_deployment ./resource.ps1 google_cloud_tasks_queue -./resource.ps1 google_cloud_tasks_queue_iam_binding -./resource.ps1 google_cloud_tasks_queue_iam_member -./resource.ps1 google_cloud_tasks_queue_iam_policy ./resource.ps1 google_cloudbuild_bitbucket_server_config ./resource.ps1 google_cloudbuild_worker_pool -./resource.ps1 google_cloudbuildv2_connection -./resource.ps1 google_cloudbuildv2_connection_iam_binding -./resource.ps1 google_cloudbuildv2_connection_iam_member -./resource.ps1 google_cloudbuildv2_connection_iam_policy -./resource.ps1 google_cloudbuildv2_repository ./resource.ps1 google_clouddeploy_automation ./resource.ps1 google_clouddeploy_custom_target_type -./resource.ps1 google_clouddeploy_custom_target_type_iam_binding -./resource.ps1 google_clouddeploy_custom_target_type_iam_member -./resource.ps1 google_clouddeploy_custom_target_type_iam_policy ./resource.ps1 google_clouddeploy_delivery_pipeline -./resource.ps1 google_clouddeploy_delivery_pipeline_iam_binding -./resource.ps1 google_clouddeploy_delivery_pipeline_iam_member -./resource.ps1 google_clouddeploy_delivery_pipeline_iam_policy ./resource.ps1 google_clouddeploy_deploy_policy ./resource.ps1 google_clouddeploy_target -./resource.ps1 google_clouddeploy_target_iam_binding -./resource.ps1 google_clouddeploy_target_iam_member -./resource.ps1 google_clouddeploy_target_iam_policy ./resource.ps1 google_clouddomains_registration -./resource.ps1 google_cloudfunctions2_function -./resource.ps1 google_cloudfunctions2_function_iam_binding -./resource.ps1 google_cloudfunctions2_function_iam_member -./resource.ps1 google_cloudfunctions2_function_iam_policy -./resource.ps1 google_cloudfunctions_function_iam_binding ./resource.ps1 google_cloudiot_registry ./resource.ps1 google_colab_notebook_execution ./resource.ps1 google_colab_runtime ./resource.ps1 google_colab_runtime_template -./resource.ps1 google_colab_runtime_template_iam_binding -./resource.ps1 google_colab_runtime_template_iam_member -./resource.ps1 google_colab_runtime_template_iam_policy ./resource.ps1 google_colab_schedule -./resource.ps1 google_composer_user_workloads_config_map -./resource.ps1 google_composer_user_workloads_secret ./resource.ps1 google_compute_attached_disk ./resource.ps1 google_compute_autoscaler -./resource.ps1 google_compute_backend_bucket -./resource.ps1 google_compute_backend_bucket_iam_binding -./resource.ps1 google_compute_backend_bucket_iam_member -./resource.ps1 google_compute_backend_bucket_iam_policy ./resource.ps1 google_compute_backend_bucket_signed_url_key -./resource.ps1 google_compute_backend_service -./resource.ps1 google_compute_backend_service_iam_binding -./resource.ps1 google_compute_backend_service_iam_member -./resource.ps1 google_compute_backend_service_iam_policy ./resource.ps1 google_compute_backend_service_signed_url_key ./resource.ps1 google_compute_cross_site_network ./resource.ps1 google_compute_disk ./resource.ps1 google_compute_disk_async_replication -./resource.ps1 google_compute_disk_iam_binding -./resource.ps1 google_compute_disk_iam_member -./resource.ps1 google_compute_disk_iam_policy ./resource.ps1 google_compute_disk_resource_policy_attachment ./resource.ps1 google_compute_external_vpn_gateway ./resource.ps1 google_compute_firewall_policy ./resource.ps1 google_compute_firewall_policy_association ./resource.ps1 google_compute_firewall_policy_rule ./resource.ps1 google_compute_firewall_policy_with_rules -./resource.ps1 google_compute_forwarding_rule ./resource.ps1 google_compute_future_reservation -./resource.ps1 google_compute_global_forwarding_rule ./resource.ps1 google_compute_global_network_endpoint -./resource.ps1 google_compute_global_network_endpoint_group ./resource.ps1 google_compute_ha_vpn_gateway -./resource.ps1 google_compute_health_check -./resource.ps1 google_compute_http_health_check -./resource.ps1 google_compute_https_health_check ./resource.ps1 google_compute_image -./resource.ps1 google_compute_image_iam_binding -./resource.ps1 google_compute_image_iam_member -./resource.ps1 google_compute_image_iam_policy ./resource.ps1 google_compute_instance_from_machine_image ./resource.ps1 google_compute_instance_from_template ./resource.ps1 google_compute_instance_group ./resource.ps1 google_compute_instance_group_manager ./resource.ps1 google_compute_instance_group_membership ./resource.ps1 google_compute_instance_group_named_port -./resource.ps1 google_compute_instance_iam_binding -./resource.ps1 google_compute_instance_iam_member -./resource.ps1 google_compute_instance_iam_policy ./resource.ps1 google_compute_instance_settings -./resource.ps1 google_compute_instance_template_iam_binding -./resource.ps1 google_compute_instance_template_iam_member -./resource.ps1 google_compute_instance_template_iam_policy ./resource.ps1 google_compute_instant_snapshot -./resource.ps1 google_compute_instant_snapshot_iam_binding -./resource.ps1 google_compute_instant_snapshot_iam_member -./resource.ps1 google_compute_instant_snapshot_iam_policy ./resource.ps1 google_compute_interconnect ./resource.ps1 google_compute_interconnect_attachment ./resource.ps1 google_compute_interconnect_attachment_group ./resource.ps1 google_compute_interconnect_group ./resource.ps1 google_compute_machine_image -./resource.ps1 google_compute_machine_image_iam_binding -./resource.ps1 google_compute_machine_image_iam_member -./resource.ps1 google_compute_machine_image_iam_policy ./resource.ps1 google_compute_managed_ssl_certificate -./resource.ps1 google_compute_network_attachment ./resource.ps1 google_compute_network_edge_security_service ./resource.ps1 google_compute_network_endpoint -./resource.ps1 google_compute_network_endpoint_group ./resource.ps1 google_compute_network_endpoints ./resource.ps1 google_compute_network_firewall_policy ./resource.ps1 google_compute_network_firewall_policy_association @@ -253,27 +149,20 @@ Datasource percentage coverage 64.63 ./resource.ps1 google_compute_organization_security_policy_rule ./resource.ps1 google_compute_packet_mirroring ./resource.ps1 google_compute_per_instance_config +./resource.ps1 google_compute_preview_feature ./resource.ps1 google_compute_project_cloud_armor_tier ./resource.ps1 google_compute_project_default_network_tier ./resource.ps1 google_compute_project_metadata ./resource.ps1 google_compute_public_advertised_prefix ./resource.ps1 google_compute_public_delegated_prefix ./resource.ps1 google_compute_region_autoscaler -./resource.ps1 google_compute_region_backend_service -./resource.ps1 google_compute_region_backend_service_iam_binding -./resource.ps1 google_compute_region_backend_service_iam_member -./resource.ps1 google_compute_region_backend_service_iam_policy ./resource.ps1 google_compute_region_commitment ./resource.ps1 google_compute_region_disk -./resource.ps1 google_compute_region_disk_iam_binding -./resource.ps1 google_compute_region_disk_iam_member -./resource.ps1 google_compute_region_disk_iam_policy ./resource.ps1 google_compute_region_disk_resource_policy_attachment -./resource.ps1 google_compute_region_health_check +./resource.ps1 google_compute_region_health_aggregation_policy ./resource.ps1 google_compute_region_instance_group_manager ./resource.ps1 google_compute_region_instance_template ./resource.ps1 google_compute_region_network_endpoint -./resource.ps1 google_compute_region_network_endpoint_group ./resource.ps1 google_compute_region_network_firewall_policy ./resource.ps1 google_compute_region_network_firewall_policy_association ./resource.ps1 google_compute_region_network_firewall_policy_rule @@ -282,10 +171,6 @@ Datasource percentage coverage 64.63 ./resource.ps1 google_compute_region_resize_request ./resource.ps1 google_compute_region_security_policy ./resource.ps1 google_compute_region_security_policy_rule -./resource.ps1 google_compute_region_target_http_proxy -./resource.ps1 google_compute_region_target_https_proxy -./resource.ps1 google_compute_region_target_tcp_proxy -./resource.ps1 google_compute_region_url_map ./resource.ps1 google_compute_reservation ./resource.ps1 google_compute_resize_request ./resource.ps1 google_compute_resource_policy @@ -302,34 +187,19 @@ Datasource percentage coverage 64.63 ./resource.ps1 google_compute_shared_vpc_host_project ./resource.ps1 google_compute_shared_vpc_service_project ./resource.ps1 google_compute_snapshot -./resource.ps1 google_compute_snapshot_iam_binding -./resource.ps1 google_compute_snapshot_iam_member -./resource.ps1 google_compute_snapshot_iam_policy ./resource.ps1 google_compute_snapshot_settings ./resource.ps1 google_compute_ssl_certificate ./resource.ps1 google_compute_ssl_policy ./resource.ps1 google_compute_storage_pool -./resource.ps1 google_compute_storage_pool_iam_binding -./resource.ps1 google_compute_storage_pool_iam_member -./resource.ps1 google_compute_storage_pool_iam_policy -./resource.ps1 google_compute_subnetwork_iam_binding -./resource.ps1 google_compute_subnetwork_iam_member -./resource.ps1 google_compute_subnetwork_iam_policy ./resource.ps1 google_compute_target_grpc_proxy -./resource.ps1 google_compute_target_http_proxy -./resource.ps1 google_compute_target_https_proxy ./resource.ps1 google_compute_target_instance ./resource.ps1 google_compute_target_pool ./resource.ps1 google_compute_target_ssl_proxy ./resource.ps1 google_compute_target_tcp_proxy -./resource.ps1 google_compute_url_map ./resource.ps1 google_compute_vpn_gateway ./resource.ps1 google_compute_vpn_tunnel ./resource.ps1 google_compute_wire_group ./resource.ps1 google_container_analysis_note -./resource.ps1 google_container_analysis_note_iam_binding -./resource.ps1 google_container_analysis_note_iam_member -./resource.ps1 google_container_analysis_note_iam_policy ./resource.ps1 google_container_analysis_occurrence ./resource.ps1 google_container_attached_cluster ./resource.ps1 google_container_aws_cluster @@ -338,28 +208,7 @@ Datasource percentage coverage 64.63 ./resource.ps1 google_container_azure_cluster ./resource.ps1 google_container_azure_node_pool ./resource.ps1 google_container_registry -./resource.ps1 google_data_catalog_entry -./resource.ps1 google_data_catalog_entry_group -./resource.ps1 google_data_catalog_entry_group_iam_binding -./resource.ps1 google_data_catalog_entry_group_iam_member -./resource.ps1 google_data_catalog_entry_group_iam_policy -./resource.ps1 google_data_catalog_policy_tag -./resource.ps1 google_data_catalog_policy_tag_iam_binding -./resource.ps1 google_data_catalog_policy_tag_iam_member -./resource.ps1 google_data_catalog_policy_tag_iam_policy -./resource.ps1 google_data_catalog_tag -./resource.ps1 google_data_catalog_tag_template -./resource.ps1 google_data_catalog_tag_template_iam_binding -./resource.ps1 google_data_catalog_tag_template_iam_member -./resource.ps1 google_data_catalog_tag_template_iam_policy -./resource.ps1 google_data_catalog_taxonomy -./resource.ps1 google_data_catalog_taxonomy_iam_binding -./resource.ps1 google_data_catalog_taxonomy_iam_member -./resource.ps1 google_data_catalog_taxonomy_iam_policy ./resource.ps1 google_data_fusion_instance -./resource.ps1 google_data_fusion_instance_iam_binding -./resource.ps1 google_data_fusion_instance_iam_member -./resource.ps1 google_data_fusion_instance_iam_policy ./resource.ps1 google_data_loss_prevention_deidentify_template ./resource.ps1 google_data_loss_prevention_discovery_config ./resource.ps1 google_data_loss_prevention_inspect_template @@ -370,140 +219,38 @@ Datasource percentage coverage 64.63 ./resource.ps1 google_database_migration_service_migration_job ./resource.ps1 google_database_migration_service_private_connection ./resource.ps1 google_dataflow_flex_template_job -./resource.ps1 google_dataflow_job -./resource.ps1 google_dataform_repository -./resource.ps1 google_dataform_repository_iam_binding -./resource.ps1 google_dataform_repository_iam_member -./resource.ps1 google_dataform_repository_iam_policy -./resource.ps1 google_dataform_repository_release_config -./resource.ps1 google_dataform_repository_workflow_config -./resource.ps1 google_dataplex_aspect_type -./resource.ps1 google_dataplex_aspect_type_iam_binding -./resource.ps1 google_dataplex_aspect_type_iam_member -./resource.ps1 google_dataplex_aspect_type_iam_policy -./resource.ps1 google_dataplex_asset -./resource.ps1 google_dataplex_asset_iam_binding -./resource.ps1 google_dataplex_asset_iam_member -./resource.ps1 google_dataplex_asset_iam_policy -./resource.ps1 google_dataplex_datascan -./resource.ps1 google_dataplex_datascan_iam_binding -./resource.ps1 google_dataplex_datascan_iam_member -./resource.ps1 google_dataplex_datascan_iam_policy -./resource.ps1 google_dataplex_entry -./resource.ps1 google_dataplex_entry_group -./resource.ps1 google_dataplex_entry_group_iam_binding -./resource.ps1 google_dataplex_entry_group_iam_member -./resource.ps1 google_dataplex_entry_group_iam_policy -./resource.ps1 google_dataplex_entry_type -./resource.ps1 google_dataplex_entry_type_iam_binding -./resource.ps1 google_dataplex_entry_type_iam_member -./resource.ps1 google_dataplex_entry_type_iam_policy -./resource.ps1 google_dataplex_glossary -./resource.ps1 google_dataplex_glossary_category -./resource.ps1 google_dataplex_glossary_iam_binding -./resource.ps1 google_dataplex_glossary_iam_member -./resource.ps1 google_dataplex_glossary_iam_policy -./resource.ps1 google_dataplex_glossary_term -./resource.ps1 google_dataplex_lake -./resource.ps1 google_dataplex_lake_iam_binding -./resource.ps1 google_dataplex_lake_iam_member -./resource.ps1 google_dataplex_lake_iam_policy -./resource.ps1 google_dataplex_task -./resource.ps1 google_dataplex_task_iam_binding -./resource.ps1 google_dataplex_task_iam_member -./resource.ps1 google_dataplex_task_iam_policy -./resource.ps1 google_dataplex_zone -./resource.ps1 google_dataplex_zone_iam_binding -./resource.ps1 google_dataplex_zone_iam_member -./resource.ps1 google_dataplex_zone_iam_policy -./resource.ps1 google_dataproc_autoscaling_policy -./resource.ps1 google_dataproc_autoscaling_policy_iam_binding -./resource.ps1 google_dataproc_autoscaling_policy_iam_member -./resource.ps1 google_dataproc_autoscaling_policy_iam_policy -./resource.ps1 google_dataproc_batch -./resource.ps1 google_dataproc_cluster -./resource.ps1 google_dataproc_cluster_iam_binding -./resource.ps1 google_dataproc_cluster_iam_member -./resource.ps1 google_dataproc_cluster_iam_policy +./resource.ps1 google_dataplex_entry_link ./resource.ps1 google_dataproc_gdc_application_environment ./resource.ps1 google_dataproc_gdc_service_instance ./resource.ps1 google_dataproc_gdc_spark_application -./resource.ps1 google_dataproc_job -./resource.ps1 google_dataproc_job_iam_binding -./resource.ps1 google_dataproc_job_iam_member -./resource.ps1 google_dataproc_job_iam_policy -./resource.ps1 google_dataproc_metastore_database_iam_binding -./resource.ps1 google_dataproc_metastore_database_iam_member -./resource.ps1 google_dataproc_metastore_database_iam_policy ./resource.ps1 google_dataproc_metastore_federation -./resource.ps1 google_dataproc_metastore_federation_iam_binding -./resource.ps1 google_dataproc_metastore_federation_iam_member -./resource.ps1 google_dataproc_metastore_federation_iam_policy ./resource.ps1 google_dataproc_metastore_service -./resource.ps1 google_dataproc_metastore_service_iam_binding -./resource.ps1 google_dataproc_metastore_service_iam_member -./resource.ps1 google_dataproc_metastore_service_iam_policy -./resource.ps1 google_dataproc_metastore_table_iam_binding -./resource.ps1 google_dataproc_metastore_table_iam_member -./resource.ps1 google_dataproc_metastore_table_iam_policy -./resource.ps1 google_dataproc_workflow_template ./resource.ps1 google_datastream_connection_profile ./resource.ps1 google_datastream_private_connection ./resource.ps1 google_datastream_stream -./resource.ps1 google_deployment_manager_deployment -./resource.ps1 google_developer_connect_account_connector -./resource.ps1 google_developer_connect_connection -./resource.ps1 google_developer_connect_git_repository_link -./resource.ps1 google_dialogflow_agent -./resource.ps1 google_dialogflow_cx_agent -./resource.ps1 google_dialogflow_cx_entity_type -./resource.ps1 google_dialogflow_cx_environment -./resource.ps1 google_dialogflow_cx_flow -./resource.ps1 google_dialogflow_cx_intent -./resource.ps1 google_dialogflow_cx_page -./resource.ps1 google_dialogflow_cx_security_settings -./resource.ps1 google_dialogflow_cx_tool -./resource.ps1 google_dialogflow_cx_version -./resource.ps1 google_dialogflow_cx_webhook -./resource.ps1 google_dialogflow_entity_type -./resource.ps1 google_dialogflow_fulfillment -./resource.ps1 google_dialogflow_intent +./resource.ps1 google_developer_connect_insights_config +./resource.ps1 google_discovery_engine_acl_config +./resource.ps1 google_discovery_engine_assistant ./resource.ps1 google_discovery_engine_chat_engine +./resource.ps1 google_discovery_engine_cmek_config +./resource.ps1 google_discovery_engine_control +./resource.ps1 google_discovery_engine_data_connector ./resource.ps1 google_discovery_engine_data_store +./resource.ps1 google_discovery_engine_license_config +./resource.ps1 google_discovery_engine_recommendation_engine ./resource.ps1 google_discovery_engine_schema ./resource.ps1 google_discovery_engine_search_engine ./resource.ps1 google_discovery_engine_sitemap ./resource.ps1 google_discovery_engine_target_site -./resource.ps1 google_dns_managed_zone_iam_binding -./resource.ps1 google_dns_managed_zone_iam_member -./resource.ps1 google_dns_managed_zone_iam_policy +./resource.ps1 google_discovery_engine_user_store ./resource.ps1 google_dns_response_policy ./resource.ps1 google_dns_response_policy_rule ./resource.ps1 google_document_ai_processor ./resource.ps1 google_document_ai_processor_default_version ./resource.ps1 google_document_ai_warehouse_document_schema ./resource.ps1 google_document_ai_warehouse_location -./resource.ps1 google_edgecontainer_cluster -./resource.ps1 google_edgecontainer_node_pool -./resource.ps1 google_edgecontainer_vpn_connection -./resource.ps1 google_edgenetwork_interconnect_attachment -./resource.ps1 google_edgenetwork_network -./resource.ps1 google_edgenetwork_subnet ./resource.ps1 google_endpoints_service -./resource.ps1 google_endpoints_service_consumers_iam_binding -./resource.ps1 google_endpoints_service_consumers_iam_member -./resource.ps1 google_endpoints_service_consumers_iam_policy -./resource.ps1 google_endpoints_service_iam_binding -./resource.ps1 google_endpoints_service_iam_member -./resource.ps1 google_endpoints_service_iam_policy ./resource.ps1 google_essential_contacts_contact -./resource.ps1 google_eventarc_channel -./resource.ps1 google_eventarc_enrollment -./resource.ps1 google_eventarc_google_api_source -./resource.ps1 google_eventarc_google_channel_config -./resource.ps1 google_eventarc_message_bus -./resource.ps1 google_eventarc_pipeline -./resource.ps1 google_eventarc_trigger ./resource.ps1 google_filestore_backup ./resource.ps1 google_filestore_instance ./resource.ps1 google_filestore_snapshot @@ -527,56 +274,24 @@ Datasource percentage coverage 64.63 ./resource.ps1 google_firestore_document ./resource.ps1 google_firestore_field ./resource.ps1 google_firestore_index +./resource.ps1 google_firestore_user_creds ./resource.ps1 google_folder ./resource.ps1 google_folder_access_approval_settings ./resource.ps1 google_folder_iam_audit_config -./resource.ps1 google_folder_iam_binding -./resource.ps1 google_folder_iam_member -./resource.ps1 google_folder_iam_policy ./resource.ps1 google_folder_organization_policy ./resource.ps1 google_folder_service_identity -./resource.ps1 google_gemini_code_repository_index -./resource.ps1 google_gemini_code_tools_setting -./resource.ps1 google_gemini_code_tools_setting_binding -./resource.ps1 google_gemini_data_sharing_with_google_setting -./resource.ps1 google_gemini_data_sharing_with_google_setting_binding -./resource.ps1 google_gemini_gemini_gcp_enablement_setting -./resource.ps1 google_gemini_gemini_gcp_enablement_setting_binding -./resource.ps1 google_gemini_logging_setting -./resource.ps1 google_gemini_logging_setting_binding -./resource.ps1 google_gemini_release_channel_setting -./resource.ps1 google_gemini_release_channel_setting_binding -./resource.ps1 google_gemini_repository_group -./resource.ps1 google_gemini_repository_group_iam_binding -./resource.ps1 google_gemini_repository_group_iam_member -./resource.ps1 google_gemini_repository_group_iam_policy ./resource.ps1 google_gke_backup_backup_channel ./resource.ps1 google_gke_backup_backup_plan -./resource.ps1 google_gke_backup_backup_plan_iam_binding -./resource.ps1 google_gke_backup_backup_plan_iam_member -./resource.ps1 google_gke_backup_backup_plan_iam_policy ./resource.ps1 google_gke_backup_restore_channel ./resource.ps1 google_gke_backup_restore_plan -./resource.ps1 google_gke_backup_restore_plan_iam_binding -./resource.ps1 google_gke_backup_restore_plan_iam_member -./resource.ps1 google_gke_backup_restore_plan_iam_policy ./resource.ps1 google_gke_hub_feature -./resource.ps1 google_gke_hub_feature_iam_binding -./resource.ps1 google_gke_hub_feature_iam_member -./resource.ps1 google_gke_hub_feature_iam_policy ./resource.ps1 google_gke_hub_feature_membership ./resource.ps1 google_gke_hub_fleet ./resource.ps1 google_gke_hub_membership ./resource.ps1 google_gke_hub_membership_binding -./resource.ps1 google_gke_hub_membership_iam_binding -./resource.ps1 google_gke_hub_membership_iam_member -./resource.ps1 google_gke_hub_membership_iam_policy ./resource.ps1 google_gke_hub_membership_rbac_role_binding ./resource.ps1 google_gke_hub_namespace ./resource.ps1 google_gke_hub_scope -./resource.ps1 google_gke_hub_scope_iam_binding -./resource.ps1 google_gke_hub_scope_iam_member -./resource.ps1 google_gke_hub_scope_iam_policy ./resource.ps1 google_gke_hub_scope_rbac_role_binding ./resource.ps1 google_gkeonprem_bare_metal_admin_cluster ./resource.ps1 google_gkeonprem_bare_metal_cluster @@ -585,25 +300,10 @@ Datasource percentage coverage 64.63 ./resource.ps1 google_gkeonprem_vmware_cluster ./resource.ps1 google_gkeonprem_vmware_node_pool ./resource.ps1 google_healthcare_consent_store -./resource.ps1 google_healthcare_consent_store_iam_binding -./resource.ps1 google_healthcare_consent_store_iam_member -./resource.ps1 google_healthcare_consent_store_iam_policy ./resource.ps1 google_healthcare_dataset -./resource.ps1 google_healthcare_dataset_iam_binding -./resource.ps1 google_healthcare_dataset_iam_member -./resource.ps1 google_healthcare_dataset_iam_policy ./resource.ps1 google_healthcare_dicom_store -./resource.ps1 google_healthcare_dicom_store_iam_binding -./resource.ps1 google_healthcare_dicom_store_iam_member -./resource.ps1 google_healthcare_dicom_store_iam_policy ./resource.ps1 google_healthcare_fhir_store -./resource.ps1 google_healthcare_fhir_store_iam_binding -./resource.ps1 google_healthcare_fhir_store_iam_member -./resource.ps1 google_healthcare_fhir_store_iam_policy ./resource.ps1 google_healthcare_hl7_v2_store -./resource.ps1 google_healthcare_hl7_v2_store_iam_binding -./resource.ps1 google_healthcare_hl7_v2_store_iam_member -./resource.ps1 google_healthcare_hl7_v2_store_iam_policy ./resource.ps1 google_healthcare_pipeline_job ./resource.ps1 google_healthcare_workspace ./resource.ps1 google_iam_access_boundary_policy @@ -614,51 +314,9 @@ Datasource percentage coverage 64.63 ./resource.ps1 google_iam_organizations_policy_binding ./resource.ps1 google_iam_principal_access_boundary_policy ./resource.ps1 google_iam_projects_policy_binding -./resource.ps1 google_iam_workforce_pool -./resource.ps1 google_iam_workforce_pool_provider -./resource.ps1 google_iam_workforce_pool_provider_key -./resource.ps1 google_iam_workload_identity_pool_iam_binding -./resource.ps1 google_iam_workload_identity_pool_iam_member -./resource.ps1 google_iam_workload_identity_pool_iam_policy +./resource.ps1 google_iam_workforce_pool_provider_scim_tenant ./resource.ps1 google_iam_workload_identity_pool_managed_identity ./resource.ps1 google_iam_workload_identity_pool_namespace -./resource.ps1 google_iap_app_engine_service_iam_binding -./resource.ps1 google_iap_app_engine_service_iam_member -./resource.ps1 google_iap_app_engine_service_iam_policy -./resource.ps1 google_iap_app_engine_version_iam_binding -./resource.ps1 google_iap_app_engine_version_iam_member -./resource.ps1 google_iap_app_engine_version_iam_policy -./resource.ps1 google_iap_brand -./resource.ps1 google_iap_client -./resource.ps1 google_iap_settings -./resource.ps1 google_iap_tunnel_dest_group -./resource.ps1 google_iap_tunnel_dest_group_iam_binding -./resource.ps1 google_iap_tunnel_dest_group_iam_member -./resource.ps1 google_iap_tunnel_dest_group_iam_policy -./resource.ps1 google_iap_tunnel_iam_binding -./resource.ps1 google_iap_tunnel_iam_member -./resource.ps1 google_iap_tunnel_iam_policy -./resource.ps1 google_iap_tunnel_instance_iam_binding -./resource.ps1 google_iap_tunnel_instance_iam_member -./resource.ps1 google_iap_tunnel_instance_iam_policy -./resource.ps1 google_iap_web_backend_service_iam_binding -./resource.ps1 google_iap_web_backend_service_iam_member -./resource.ps1 google_iap_web_backend_service_iam_policy -./resource.ps1 google_iap_web_cloud_run_service_iam_binding -./resource.ps1 google_iap_web_cloud_run_service_iam_member -./resource.ps1 google_iap_web_cloud_run_service_iam_policy -./resource.ps1 google_iap_web_iam_binding -./resource.ps1 google_iap_web_iam_member -./resource.ps1 google_iap_web_iam_policy -./resource.ps1 google_iap_web_region_backend_service_iam_binding -./resource.ps1 google_iap_web_region_backend_service_iam_member -./resource.ps1 google_iap_web_region_backend_service_iam_policy -./resource.ps1 google_iap_web_type_app_engine_iam_binding -./resource.ps1 google_iap_web_type_app_engine_iam_member -./resource.ps1 google_iap_web_type_app_engine_iam_policy -./resource.ps1 google_iap_web_type_compute_iam_binding -./resource.ps1 google_iap_web_type_compute_iam_member -./resource.ps1 google_iap_web_type_compute_iam_policy ./resource.ps1 google_identity_platform_config ./resource.ps1 google_identity_platform_default_supported_idp_config ./resource.ps1 google_identity_platform_inbound_saml_config @@ -673,65 +331,25 @@ Datasource percentage coverage 64.63 ./resource.ps1 google_integrations_auth_config ./resource.ps1 google_integrations_client ./resource.ps1 google_kms_autokey_config -./resource.ps1 google_kms_crypto_key_version ./resource.ps1 google_kms_ekm_connection -./resource.ps1 google_kms_ekm_connection_iam_binding -./resource.ps1 google_kms_ekm_connection_iam_member -./resource.ps1 google_kms_ekm_connection_iam_policy -./resource.ps1 google_kms_key_handle -./resource.ps1 google_kms_key_ring_iam_binding -./resource.ps1 google_kms_key_ring_iam_member -./resource.ps1 google_kms_key_ring_iam_policy -./resource.ps1 google_kms_key_ring_import_job -./resource.ps1 google_kms_secret_ciphertext +./resource.ps1 google_kms_folder_kaj_policy_config +./resource.ps1 google_kms_organization_kaj_policy_config +./resource.ps1 google_kms_project_kaj_policy_config ./resource.ps1 google_logging_billing_account_bucket_config -./resource.ps1 google_logging_billing_account_exclusion -./resource.ps1 google_logging_billing_account_sink ./resource.ps1 google_logging_folder_bucket_config -./resource.ps1 google_logging_folder_exclusion -./resource.ps1 google_logging_folder_settings -./resource.ps1 google_logging_folder_sink -./resource.ps1 google_logging_linked_dataset -./resource.ps1 google_logging_log_scope -./resource.ps1 google_logging_log_view -./resource.ps1 google_logging_log_view_iam_binding -./resource.ps1 google_logging_log_view_iam_member -./resource.ps1 google_logging_log_view_iam_policy -./resource.ps1 google_logging_metric ./resource.ps1 google_logging_organization_bucket_config -./resource.ps1 google_logging_organization_exclusion -./resource.ps1 google_logging_organization_settings -./resource.ps1 google_logging_organization_sink ./resource.ps1 google_logging_project_bucket_config -./resource.ps1 google_logging_project_exclusion -./resource.ps1 google_logging_project_sink ./resource.ps1 google_looker_instance ./resource.ps1 google_lustre_instance -./resource.ps1 google_managed_kafka_acl -./resource.ps1 google_managed_kafka_cluster -./resource.ps1 google_managed_kafka_connect_cluster -./resource.ps1 google_managed_kafka_connector -./resource.ps1 google_managed_kafka_topic -./resource.ps1 google_memcache_instance -./resource.ps1 google_memorystore_instance ./resource.ps1 google_memorystore_instance_desired_user_created_endpoints ./resource.ps1 google_migration_center_group ./resource.ps1 google_migration_center_preference_set ./resource.ps1 google_ml_engine_model -./resource.ps1 google_monitoring_alert_policy -./resource.ps1 google_monitoring_custom_service -./resource.ps1 google_monitoring_dashboard -./resource.ps1 google_monitoring_group -./resource.ps1 google_monitoring_metric_descriptor -./resource.ps1 google_monitoring_monitored_project -./resource.ps1 google_monitoring_notification_channel -./resource.ps1 google_monitoring_service -./resource.ps1 google_monitoring_slo -./resource.ps1 google_monitoring_uptime_check_config ./resource.ps1 google_netapp_active_directory ./resource.ps1 google_netapp_backup ./resource.ps1 google_netapp_backup_policy ./resource.ps1 google_netapp_backup_vault +./resource.ps1 google_netapp_host_group ./resource.ps1 google_netapp_kmsconfig ./resource.ps1 google_netapp_storage_pool ./resource.ps1 google_netapp_volume @@ -745,15 +363,14 @@ Datasource percentage coverage 64.63 ./resource.ps1 google_network_connectivity_regional_endpoint ./resource.ps1 google_network_connectivity_service_connection_policy ./resource.ps1 google_network_connectivity_spoke +./resource.ps1 google_network_management_organization_vpc_flow_logs_config ./resource.ps1 google_network_management_vpc_flow_logs_config ./resource.ps1 google_network_security_address_group -./resource.ps1 google_network_security_address_group_iam_binding -./resource.ps1 google_network_security_address_group_iam_member -./resource.ps1 google_network_security_address_group_iam_policy ./resource.ps1 google_network_security_authorization_policy ./resource.ps1 google_network_security_authz_policy ./resource.ps1 google_network_security_backend_authentication_config ./resource.ps1 google_network_security_client_tls_policy +./resource.ps1 google_network_security_dns_threat_detector ./resource.ps1 google_network_security_firewall_endpoint ./resource.ps1 google_network_security_firewall_endpoint_association ./resource.ps1 google_network_security_gateway_security_policy @@ -764,6 +381,7 @@ Datasource percentage coverage 64.63 ./resource.ps1 google_network_security_intercept_endpoint_group_association ./resource.ps1 google_network_security_mirroring_deployment ./resource.ps1 google_network_security_mirroring_deployment_group +./resource.ps1 google_network_security_mirroring_endpoint ./resource.ps1 google_network_security_mirroring_endpoint_group ./resource.ps1 google_network_security_mirroring_endpoint_group_association ./resource.ps1 google_network_security_security_profile @@ -782,79 +400,42 @@ Datasource percentage coverage 64.63 ./resource.ps1 google_network_services_lb_route_extension ./resource.ps1 google_network_services_lb_traffic_extension ./resource.ps1 google_network_services_mesh +./resource.ps1 google_network_services_multicast_domain ./resource.ps1 google_network_services_service_binding ./resource.ps1 google_network_services_service_lb_policies ./resource.ps1 google_network_services_tcp_route ./resource.ps1 google_network_services_tls_route -./resource.ps1 google_notebooks_environment -./resource.ps1 google_notebooks_instance -./resource.ps1 google_notebooks_instance_iam_binding -./resource.ps1 google_notebooks_instance_iam_member -./resource.ps1 google_notebooks_instance_iam_policy -./resource.ps1 google_notebooks_runtime -./resource.ps1 google_notebooks_runtime_iam_binding -./resource.ps1 google_notebooks_runtime_iam_member -./resource.ps1 google_notebooks_runtime_iam_policy +./resource.ps1 google_network_services_wasm_plugin +./resource.ps1 google_observability_trace_scope ./resource.ps1 google_oracle_database_autonomous_database ./resource.ps1 google_oracle_database_cloud_exadata_infrastructure ./resource.ps1 google_oracle_database_cloud_vm_cluster +./resource.ps1 google_oracle_database_db_system +./resource.ps1 google_oracle_database_exascale_db_storage_vault +./resource.ps1 google_oracle_database_odb_network +./resource.ps1 google_oracle_database_odb_subnet ./resource.ps1 google_org_policy_custom_constraint ./resource.ps1 google_org_policy_policy ./resource.ps1 google_organization_access_approval_settings ./resource.ps1 google_organization_iam_audit_config -./resource.ps1 google_organization_iam_binding ./resource.ps1 google_organization_iam_custom_role -./resource.ps1 google_organization_iam_member -./resource.ps1 google_organization_iam_policy ./resource.ps1 google_organization_policy -./resource.ps1 google_os_config_guest_policies -./resource.ps1 google_os_config_os_policy_assignment -./resource.ps1 google_os_config_patch_deployment -./resource.ps1 google_os_config_v2_policy_orchestrator -./resource.ps1 google_os_config_v2_policy_orchestrator_for_folder -./resource.ps1 google_os_config_v2_policy_orchestrator_for_organization ./resource.ps1 google_os_login_ssh_public_key -./resource.ps1 google_parallelstore_instance ./resource.ps1 google_parameter_manager_parameter ./resource.ps1 google_parameter_manager_parameter_version ./resource.ps1 google_parameter_manager_regional_parameter ./resource.ps1 google_parameter_manager_regional_parameter_version -./resource.ps1 google_privateca_ca_pool -./resource.ps1 google_privateca_ca_pool_iam_binding -./resource.ps1 google_privateca_ca_pool_iam_member -./resource.ps1 google_privateca_ca_pool_iam_policy -./resource.ps1 google_privateca_certificate -./resource.ps1 google_privateca_certificate_authority -./resource.ps1 google_privateca_certificate_template -./resource.ps1 google_privateca_certificate_template_iam_binding -./resource.ps1 google_privateca_certificate_template_iam_member -./resource.ps1 google_privateca_certificate_template_iam_policy -./resource.ps1 google_privileged_access_manager_entitlement -./resource.ps1 google_project -./resource.ps1 google_project_access_approval_settings -./resource.ps1 google_project_default_service_accounts -./resource.ps1 google_project_iam_member_remove -./resource.ps1 google_project_iam_policy -./resource.ps1 google_project_organization_policy -./resource.ps1 google_project_services -./resource.ps1 google_project_usage_export_bucket +./resource.ps1 google_privileged_access_manager_settings ./resource.ps1 google_public_ca_external_account_key -./resource.ps1 google_pubsub_schema_iam_binding -./resource.ps1 google_pubsub_schema_iam_member -./resource.ps1 google_pubsub_schema_iam_policy -./resource.ps1 google_pubsub_subscription_iam_binding -./resource.ps1 google_pubsub_subscription_iam_member -./resource.ps1 google_pubsub_subscription_iam_policy ./resource.ps1 google_recaptcha_enterprise_key -./resource.ps1 google_redis_cluster -./resource.ps1 google_redis_cluster_user_created_connections ./resource.ps1 google_resource_manager_capability ./resource.ps1 google_resource_manager_lien -./resource.ps1 google_runtimeconfig_config -./resource.ps1 google_runtimeconfig_config_iam_binding -./resource.ps1 google_runtimeconfig_config_iam_member -./resource.ps1 google_runtimeconfig_config_iam_policy -./resource.ps1 google_runtimeconfig_variable +./resource.ps1 google_saas_runtime_release +./resource.ps1 google_saas_runtime_rollout_kind +./resource.ps1 google_saas_runtime_saas +./resource.ps1 google_saas_runtime_tenant +./resource.ps1 google_saas_runtime_unit +./resource.ps1 google_saas_runtime_unit_kind ./resource.ps1 google_scc_event_threat_detection_custom_module ./resource.ps1 google_scc_folder_custom_module ./resource.ps1 google_scc_folder_notification_config @@ -871,9 +452,6 @@ Datasource percentage coverage 64.63 ./resource.ps1 google_scc_project_notification_config ./resource.ps1 google_scc_project_scc_big_query_export ./resource.ps1 google_scc_source -./resource.ps1 google_scc_source_iam_binding -./resource.ps1 google_scc_source_iam_member -./resource.ps1 google_scc_source_iam_policy ./resource.ps1 google_scc_v2_folder_mute_config ./resource.ps1 google_scc_v2_folder_notification_config ./resource.ps1 google_scc_v2_folder_scc_big_query_export @@ -881,234 +459,27 @@ Datasource percentage coverage 64.63 ./resource.ps1 google_scc_v2_organization_notification_config ./resource.ps1 google_scc_v2_organization_scc_big_query_export ./resource.ps1 google_scc_v2_organization_scc_big_query_exports -./resource.ps1 google_scc_v2_organization_source_iam_binding -./resource.ps1 google_scc_v2_organization_source_iam_member -./resource.ps1 google_scc_v2_organization_source_iam_policy ./resource.ps1 google_scc_v2_project_mute_config ./resource.ps1 google_scc_v2_project_notification_config ./resource.ps1 google_scc_v2_project_scc_big_query_export -./resource.ps1 google_secret_manager_regional_secret -./resource.ps1 google_secret_manager_regional_secret_iam_binding -./resource.ps1 google_secret_manager_regional_secret_iam_member -./resource.ps1 google_secret_manager_regional_secret_iam_policy -./resource.ps1 google_secret_manager_regional_secret_version -./resource.ps1 google_secure_source_manager_branch_rule -./resource.ps1 google_secure_source_manager_instance -./resource.ps1 google_secure_source_manager_instance_iam_binding -./resource.ps1 google_secure_source_manager_instance_iam_member -./resource.ps1 google_secure_source_manager_instance_iam_policy -./resource.ps1 google_secure_source_manager_repository -./resource.ps1 google_secure_source_manager_repository_iam_binding -./resource.ps1 google_secure_source_manager_repository_iam_member -./resource.ps1 google_secure_source_manager_repository_iam_policy +./resource.ps1 google_secure_source_manager_hook ./resource.ps1 google_security_scanner_scan_config ./resource.ps1 google_securityposture_posture ./resource.ps1 google_service_networking_peered_dns_domain ./resource.ps1 google_service_networking_vpc_service_controls ./resource.ps1 google_service_usage_consumer_quota_override -./resource.ps1 google_site_verification_owner -./resource.ps1 google_site_verification_web_resource -./resource.ps1 google_sourcerepo_repository_iam_binding -./resource.ps1 google_sourcerepo_repository_iam_member -./resource.ps1 google_sourcerepo_repository_iam_policy -./resource.ps1 google_spanner_backup_schedule -./resource.ps1 google_spanner_instance_config -./resource.ps1 google_spanner_instance_partition ./resource.ps1 google_sql_source_representation_instance -./resource.ps1 google_sql_ssl_cert ./resource.ps1 google_storage_anywhere_cache ./resource.ps1 google_storage_batch_operations_job -./resource.ps1 google_storage_control_folder_intelligence_config -./resource.ps1 google_storage_control_organization_intelligence_config -./resource.ps1 google_storage_control_project_intelligence_config ./resource.ps1 google_storage_folder +./resource.ps1 google_storage_insights_dataset_config ./resource.ps1 google_storage_managed_folder -./resource.ps1 google_storage_managed_folder_iam_binding -./resource.ps1 google_storage_managed_folder_iam_member -./resource.ps1 google_storage_managed_folder_iam_policy ./resource.ps1 google_storage_notification ./resource.ps1 google_storage_object_acl ./resource.ps1 google_storage_transfer_agent_pool ./resource.ps1 google_storage_transfer_job -./resource.ps1 google_tags_location_tag_binding -./resource.ps1 google_tags_tag_binding -./resource.ps1 google_tags_tag_key -./resource.ps1 google_tags_tag_key_iam_binding -./resource.ps1 google_tags_tag_key_iam_member -./resource.ps1 google_tags_tag_key_iam_policy -./resource.ps1 google_tags_tag_value -./resource.ps1 google_tags_tag_value_iam_binding -./resource.ps1 google_tags_tag_value_iam_member -./resource.ps1 google_tags_tag_value_iam_policy -./resource.ps1 google_tpu_node -./resource.ps1 google_tpu_v2_queued_resource -./resource.ps1 google_tpu_v2_vm -./resource.ps1 google_transcoder_job -./resource.ps1 google_transcoder_job_template -./resource.ps1 google_vertex_ai_deployment_resource_pool -./resource.ps1 google_vertex_ai_feature_group_iam_binding -./resource.ps1 google_vertex_ai_feature_group_iam_member -./resource.ps1 google_vertex_ai_feature_group_iam_policy -./resource.ps1 google_vertex_ai_feature_online_store_featureview_iam_binding -./resource.ps1 google_vertex_ai_feature_online_store_featureview_iam_member -./resource.ps1 google_vertex_ai_feature_online_store_featureview_iam_policy -./resource.ps1 google_vertex_ai_feature_online_store_iam_binding -./resource.ps1 google_vertex_ai_feature_online_store_iam_member -./resource.ps1 google_vertex_ai_feature_online_store_iam_policy -./resource.ps1 google_vertex_ai_index_endpoint_deployed_index -./resource.ps1 google_vmwareengine_cluster -./resource.ps1 google_vmwareengine_external_access_rule -./resource.ps1 google_vmwareengine_external_address -./resource.ps1 google_vmwareengine_network -./resource.ps1 google_vmwareengine_network_peering -./resource.ps1 google_vmwareengine_network_policy -./resource.ps1 google_vmwareengine_private_cloud -./resource.ps1 google_vmwareengine_subnet -./resource.ps1 google_vpc_access_connector -./resource.ps1 google_workbench_instance -./resource.ps1 google_workbench_instance_iam_binding -./resource.ps1 google_workbench_instance_iam_member -./resource.ps1 google_workbench_instance_iam_policy -./resource.ps1 google_workflows_workflow -./resource.ps1 google_workstations_workstation -./resource.ps1 google_workstations_workstation_cluster -./resource.ps1 google_workstations_workstation_config -./resource.ps1 google_workstations_workstation_config_iam_binding -./resource.ps1 google_workstations_workstation_config_iam_member -./resource.ps1 google_workstations_workstation_config_iam_policy -./resource.ps1 google_workstations_workstation_iam_binding -./resource.ps1 google_workstations_workstation_iam_member -./resource.ps1 google_workstations_workstation_iam_policy -./resource.ps1 google_access_context_manager_access_policy -type data -./resource.ps1 google_alloydb_cluster -type data -./resource.ps1 google_alloydb_instance -type data -./resource.ps1 google_apphub_application -type data -./resource.ps1 google_apphub_discovered_service -type data -./resource.ps1 google_apphub_discovered_workload -type data -./resource.ps1 google_artifact_registry_docker_image -type data -./resource.ps1 google_artifact_registry_locations -type data -./resource.ps1 google_backup_dr_backup -type data -./resource.ps1 google_backup_dr_backup_plan_association -type data -./resource.ps1 google_backup_dr_backup_vault -type data -./resource.ps1 google_backup_dr_data_source -type data -./resource.ps1 google_beyondcorp_application_iam_policy -type data -./resource.ps1 google_beyondcorp_security_gateway -type data -./resource.ps1 google_beyondcorp_security_gateway_application_iam_policy -type data -./resource.ps1 google_beyondcorp_security_gateway_iam_policy -type data -./resource.ps1 google_bigquery_datasets -type data -./resource.ps1 google_bigquery_table -type data -./resource.ps1 google_bigquery_tables -type data -./resource.ps1 google_certificate_manager_certificates -type data -./resource.ps1 google_cloud_identity_group_transitive_memberships -type data -./resource.ps1 google_cloud_quotas_quota_info -type data -./resource.ps1 google_cloud_quotas_quota_infos -type data -./resource.ps1 google_cloud_run_v2_worker_pool -type data -./resource.ps1 google_cloud_run_v2_worker_pool_iam_policy -type data -./resource.ps1 google_clouddeploy_custom_target_type_iam_policy -type data -./resource.ps1 google_clouddeploy_delivery_pipeline_iam_policy -type data -./resource.ps1 google_clouddeploy_target_iam_policy -type data -./resource.ps1 google_colab_runtime_template_iam_policy -type data -./resource.ps1 google_composer_user_workloads_config_map -type data -./resource.ps1 google_composer_user_workloads_secret -type data -./resource.ps1 google_compute_forwarding_rules -type data -./resource.ps1 google_compute_images -type data -./resource.ps1 google_compute_instance_guest_attributes -type data -./resource.ps1 google_compute_instance_template_iam_policy -type data -./resource.ps1 google_compute_instant_snapshot_iam_policy -type data -./resource.ps1 google_compute_machine_types -type data -./resource.ps1 google_compute_region_backend_service -type data -./resource.ps1 google_compute_region_instance_group_manager -type data -./resource.ps1 google_compute_security_policy -type data -./resource.ps1 google_compute_storage_pool_iam_policy -type data -./resource.ps1 google_compute_storage_pool_types -type data -./resource.ps1 google_compute_subnetworks -type data -./resource.ps1 google_container_attached_install_manifest -type data -./resource.ps1 google_container_aws_versions -type data -./resource.ps1 google_container_azure_versions -type data -./resource.ps1 google_dataplex_aspect_type_iam_policy -type data -./resource.ps1 google_dataplex_entry_group_iam_policy -type data -./resource.ps1 google_dataplex_entry_type_iam_policy -type data -./resource.ps1 google_dataplex_glossary_iam_policy -type data -./resource.ps1 google_dataproc_metastore_database_iam_policy -type data -./resource.ps1 google_dataproc_metastore_table_iam_policy -type data -./resource.ps1 google_dns_managed_zones -type data -./resource.ps1 google_firebase_web_app_config -type data -./resource.ps1 google_folder -type data -./resource.ps1 google_folder_iam_policy -type data -./resource.ps1 google_folders -type data -./resource.ps1 google_gemini_repository_group_iam_policy -type data -./resource.ps1 google_gke_hub_feature -type data -./resource.ps1 google_gke_hub_membership -type data -./resource.ps1 google_iam_workload_identity_pool_iam_policy -type data -./resource.ps1 google_iap_tunnel_dest_group_iam_policy -type data -./resource.ps1 google_iap_web_cloud_run_service_iam_policy -type data -./resource.ps1 google_kms_autokey_config -type data -./resource.ps1 google_kms_crypto_key_latest_version -type data -./resource.ps1 google_kms_crypto_key_versions -type data -./resource.ps1 google_kms_crypto_keys -type data -./resource.ps1 google_kms_ekm_connection_iam_policy -type data -./resource.ps1 google_kms_key_handle -type data -./resource.ps1 google_kms_key_handles -type data -./resource.ps1 google_kms_key_rings -type data -./resource.ps1 google_logging_log_view_iam_policy -type data -./resource.ps1 google_lustre_instance -type data -./resource.ps1 google_memcache_instance -type data -./resource.ps1 google_memorystore_instance -type data -./resource.ps1 google_oracle_database_autonomous_database -type data -./resource.ps1 google_oracle_database_autonomous_databases -type data -./resource.ps1 google_oracle_database_cloud_exadata_infrastructure -type data -./resource.ps1 google_oracle_database_cloud_exadata_infrastructures -type data -./resource.ps1 google_oracle_database_cloud_vm_cluster -type data -./resource.ps1 google_oracle_database_cloud_vm_clusters -type data -./resource.ps1 google_oracle_database_db_nodes -type data -./resource.ps1 google_oracle_database_db_servers -type data -./resource.ps1 google_organization_iam_custom_role -type data -./resource.ps1 google_organization_iam_custom_roles -type data -./resource.ps1 google_organization_iam_policy -type data -./resource.ps1 google_organizations -type data -./resource.ps1 google_parameter_manager_parameter -type data -./resource.ps1 google_parameter_manager_parameter_version -type data -./resource.ps1 google_parameter_manager_parameter_version_render -type data -./resource.ps1 google_parameter_manager_parameters -type data -./resource.ps1 google_parameter_manager_regional_parameter -type data -./resource.ps1 google_parameter_manager_regional_parameter_version -type data -./resource.ps1 google_parameter_manager_regional_parameter_version_render -type data -./resource.ps1 google_parameter_manager_regional_parameters -type data -./resource.ps1 google_privateca_ca_pool_iam_policy -type data -./resource.ps1 google_privateca_certificate_authority -type data -./resource.ps1 google_privateca_certificate_template_iam_policy -type data -./resource.ps1 google_privileged_access_manager_entitlement -type data -./resource.ps1 google_project_ancestry -type data -./resource.ps1 google_project_iam_custom_role -type data -./resource.ps1 google_project_iam_custom_roles -type data -./resource.ps1 google_project_iam_policy -type data -./resource.ps1 google_project_organization_policy -type data -./resource.ps1 google_pubsub_schema_iam_policy -type data -./resource.ps1 google_runtimeconfig_config -type data -./resource.ps1 google_runtimeconfig_config_iam_policy -type data -./resource.ps1 google_runtimeconfig_variable -type data -./resource.ps1 google_scc_source_iam_policy -type data -./resource.ps1 google_scc_v2_organization_source_iam_policy -type data -./resource.ps1 google_secret_manager_regional_secret -type data -./resource.ps1 google_secret_manager_regional_secret_iam_policy -type data -./resource.ps1 google_secret_manager_regional_secret_version -type data -./resource.ps1 google_secret_manager_regional_secret_version_access -type data -./resource.ps1 google_secret_manager_regional_secrets -type data -./resource.ps1 google_secure_source_manager_instance_iam_policy -type data -./resource.ps1 google_secure_source_manager_repository_iam_policy -type data -./resource.ps1 google_service_accounts -type data -./resource.ps1 google_site_verification_token -type data -./resource.ps1 google_spanner_database -type data -./resource.ps1 google_storage_bucket_objects -type data -./resource.ps1 google_storage_buckets -type data -./resource.ps1 google_storage_control_folder_intelligence_config -type data -./resource.ps1 google_storage_control_organization_intelligence_config -type data -./resource.ps1 google_storage_control_project_intelligence_config -type data -./resource.ps1 google_tags_tag_key_iam_policy -type data -./resource.ps1 google_tags_tag_keys -type data -./resource.ps1 google_tags_tag_value -type data -./resource.ps1 google_tags_tag_value_iam_policy -type data -./resource.ps1 google_tags_tag_values -type data -./resource.ps1 google_vertex_ai_feature_group_iam_policy -type data -./resource.ps1 google_vertex_ai_feature_online_store_featureview_iam_policy -type data -./resource.ps1 google_vertex_ai_feature_online_store_iam_policy -type data +./resource.ps1 google_artifact_registry_python_packages -type data +./resource.ps1 google_cloud_identity_policy -type data +./resource.ps1 google_compute_reservation_block -type data +./resource.ps1 google_compute_reservation_sub_block -type data +``` diff --git a/src/credentials_internal_test.go b/src/credentials_internal_test.go new file mode 100644 index 00000000..ecd4e5bb --- /dev/null +++ b/src/credentials_internal_test.go @@ -0,0 +1,37 @@ +package pike + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test_emptyRegionError_Error(t *testing.T) { + tests := []struct { + name string + want string + }{ + {"emptyRegionError", "region cannot be empty"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := emptyRegionError{} + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_iamRoleEmptyError_Error(t *testing.T) { + tests := []struct { + name string + want string + }{ + {"iamRoleEmptyError", "iamRole cannot be empty"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := iamRoleEmptyError{} + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} diff --git a/src/data.go b/src/data.go index 79721864..e3779a36 100644 --- a/src/data.go +++ b/src/data.go @@ -37,6 +37,11 @@ func GetResources(file string, dirName string) ([]ResourceV2, error) { return Resources, err } + moduleJson, err := GetModuleJson(filepath.Join(dirName, "/", ".terraform", "modules")) + if err != nil { + return Resources, err + } + for _, block := range temp.Blocks { var resource ResourceV2 resource.TypeName = block.Type @@ -50,14 +55,14 @@ func GetResources(file string, dirName string) ([]ResourceV2, error) { } case module: { - LocalResources, err := GetLocalModules(block, dirName) + LocalResources, err := GetLocalModules(block, dirName, moduleJson) if err == nil { Resources = append(LocalResources, Resources...) } else { log.Info().Msg(err.Error()) } } - case "output", "variable", "locals", "provider": + case "output", "variable", "locals", "provider", "import": { continue } @@ -106,6 +111,16 @@ func DetectBackend(resource ResourceV2, block *hclsyntax.Block, resources []Reso return resources, nil } + + if terraform.Labels != nil && terraform.Labels[0] == "gcs" { + resource.Name = "backend" + resource.Provider = providerGCP + resource.Attributes = []string{"gcs"} + resources = append(resources, resource) + + return resources, nil + } + } } } @@ -137,7 +152,7 @@ func GetResourceBlocks(file string) (*hclsyntax.Body, error) { } // GetLocalModules return resource from a path. -func GetLocalModules(block *hclsyntax.Block, dirName string) ([]ResourceV2, error) { +func GetLocalModules(block *hclsyntax.Block, dirName string, listModulesJson ModuleJson) ([]ResourceV2, error) { var Resources []ResourceV2 modulePath := GetModulePath(block) @@ -147,9 +162,12 @@ func GetLocalModules(block *hclsyntax.Block, dirName string) ([]ResourceV2, erro return nil, &gitReferenceError{modulePath} } + // Module is coming from HCP Terraform Cloud + if strings.HasPrefix(modulePath, "app.terraform.io") { + modulePath = ReturnLocalAddrFromSource(modulePath, listModulesJson) + } // have the path to the module - modulePath = filepath.Join(dirName, "/", modulePath) - + modulePath = filepath.Join(dirName, modulePath) // now process these extras ExtraFiles, err := GetTF(modulePath) if err != nil { @@ -263,3 +281,7 @@ func GetPermission(result ResourceV2) (Sorted, error) { return myPermission, err } + +func GetModuleJson(dir string) (ModuleJson, error) { + return ReadModuleJsonForDir(dir) +} diff --git a/src/data_internal_test.go b/src/data_internal_test.go new file mode 100644 index 00000000..36c785cf --- /dev/null +++ b/src/data_internal_test.go @@ -0,0 +1,22 @@ +package pike + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test_fileStringEmptyError_Error(t *testing.T) { + tests := []struct { + name string + want string + }{ + {"Invoke", "no file provided"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &fileStringEmptyError{} + assert.Equalf(t, tt.want, e.Error(), "Error()") + }) + } +} diff --git a/src/data_test.go b/src/data_test.go index 74d694e3..acbd64af 100644 --- a/src/data_test.go +++ b/src/data_test.go @@ -107,6 +107,7 @@ func Test_getLocalModules(t *testing.T) { notLocal, _ := filepath.Abs("../testdata/modules/examples/notlocal") notBlock := getInitialBlock(notLocal + "/module.local.tf") + moduleJson := make(pike.ModuleJson) tests := []struct { name string args args @@ -132,7 +133,7 @@ func Test_getLocalModules(t *testing.T) { for _, tt := range tests { // t.Parallel() t.Run(tt.name, func(t *testing.T) { - got, err := pike.GetLocalModules(tt.args.block, tt.args.dirName) + got, err := pike.GetLocalModules(tt.args.block, tt.args.dirName, moduleJson) if (err != nil) != tt.wantErr { t.Errorf("GetResources() error = %v, wantErr %v", err, tt.wantErr) @@ -373,6 +374,7 @@ func TestGetPermission(t *testing.T) { "compute.subnetworks.useExternalIp", "compute.instances.setMetadata", "compute.instances.delete", + "compute.instances.get", "compute.instances.delete", }}, }, diff --git a/src/files_aws.go b/src/files_aws.go index 1a68adbd..6544f1a6 100644 --- a/src/files_aws.go +++ b/src/files_aws.go @@ -873,3 +873,36 @@ var awsWorkspaceswebNetworkSettings []byte //go:embed mapping/aws/resource/workspaces-web/aws_workspacesweb_user_settings.json var awsWorkspaceswebUserSettings []byte + +//go:embed mapping/aws/resource/dsql/aws_dsql_cluster.json +var awsDsqlCluster []byte + +//go:embed mapping/aws/resource/dsql/aws_dsql_cluster_peering.json +var awsDsqlClusterPeering []byte + +//go:embed mapping/aws/resource/lightsail/aws_lightsail_bucket_access_key_access_key.json +var awsLightsailBucketAccessKey []byte + +//go:embed mapping/aws/resource/aps/aws_prometheus_workspace_configuration.json +var awsPrometheusWorkspaceConfiguration []byte + +//go:embed mapping/aws/resource/s3control/aws_s3control_directory_bucket_access_point_scope.json +var awsS3controlDirectoryBucketAccessPointScope []byte + +//go:embed mapping/aws/resource/ec2/aws_vpc_route_server.json +var awsVpcRouteServer []byte + +//go:embed mapping/aws/resource/ec2/aws_vpc_route_server_propagation.json +var awsVpcRouteServerPropagation []byte + +//go:embed mapping/aws/resource/ec2/aws_vpc_route_server_vpc_association.json +var awsVpcRouteServerVpcAssociation []byte + +//go:embed mapping/aws/resource/workspaces-web/aws_workspacesweb_data_protection_settings.json +var awsWorkspaceswebDataProtectionSettings []byte + +//go:embed mapping/aws/resource/workspaces-web/aws_workspacesweb_ip_access_settings.json +var awsWorkspaceswebIpAccessSettings []byte + +//go:embed mapping/aws/resource/workspaces-web/aws_workspacesweb_user_access_logging_settings.json +var awsWorkspaceswebUserAccessLoggingSettings []byte diff --git a/src/files_datasource.go b/src/files_datasource.go index e3c57684..fc15840f 100644 --- a/src/files_datasource.go +++ b/src/files_datasource.go @@ -1605,3 +1605,102 @@ var dataAwsAccountPrimaryContact []byte //go:embed mapping/aws/data/dynamodb/aws_dynamodb_tables.json var dataAwsDynamodbTables []byte + +//go:embed mapping/aws/data/backend/s3.json +var dataBackend []byte + +//go:embed mapping/aws/data/ecr/aws_ecr_images.json +var dataAwsEcrImages []byte + +//go:embed mapping/aws/data/s3/aws_s3_access_point.json +var dataAwsS3AccessPoint []byte + +//go:embed mapping/aws/data/billing/aws_billing_views.json +var dataAwsBillingViews []byte + +//go:embed mapping/aws/data/mediaconvert/aws_media_convert_queue.json +var dataAwsMediaConvertQueue []byte + +//go:embed mapping/aws/data/memorydb/aws_memorydb_acl.json +var dataAwsMemorydbAcl []byte + +//go:embed mapping/aws/data/memorydb/aws_memorydb_cluster.json +var dataAwsMemorydbCluster []byte + +//go:embed mapping/aws/data/memorydb/aws_memorydb_parameter_group.json +var dataAwsMemorydbParameterGroup []byte + +//go:embed mapping/aws/data/memorydb/aws_memorydb_snapshot.json +var dataAwsMemorydbSnapshot []byte + +//go:embed mapping/aws/data/memorydb/aws_memorydb_subnet_group.json +var dataAwsMemorydbSubnetGroup []byte + +//go:embed mapping/aws/data/memorydb/aws_memorydb_user.json +var dataAwsMemorydbUser []byte + +//go:embed mapping/aws/data/securityhub/aws_securityhub_standards_control_associations.json +var dataAwsSecurityhubStandardsControlAssociations []byte + +//go:embed mapping/aws/data/workspaces/aws_workspaces_workspace.json +var dataAwsWorkspacesWorkspace []byte + +//go:embed mapping/aws/data/appconfig/aws_appconfig_application.json +var dataAwsAppconfigApplication []byte + +//go:embed mapping/aws/data/odb/aws_odb_cloud_autonomous_vm_cluster.json +var dataAwsOdbCloudAutonomousVmCluster []byte + +//go:embed mapping/aws/data/odb/aws_odb_cloud_autonomous_vm_clusters.json +var dataAwsOdbCloudAutonomousVmClusters []byte + +//go:embed mapping/aws/data/odb/aws_odb_cloud_exadata_infrastructure.json +var dataAwsOdbCloudExadataInfrastructure []byte + +//go:embed mapping/aws/data/odb/aws_odb_cloud_exadata_infrastructures.json +var dataAwsOdbCloudExadataInfrastructures []byte + +//go:embed mapping/aws/data/odb/aws_odb_cloud_vm_cluster.json +var dataAwsOdbCloudVmCluster []byte + +//go:embed mapping/aws/data/odb/aws_odb_cloud_vm_clusters.json +var dataAwsOdbCloudVmClusters []byte + +//go:embed mapping/aws/data/odb/aws_odb_db_node.json +var dataAwsOdbDbNode []byte + +//go:embed mapping/aws/data/odb/aws_odb_db_nodes.json +var dataAwsOdbDbNodes []byte + +//go:embed mapping/aws/data/odb/aws_odb_db_server.json +var dataAwsOdbServer []byte + +//go:embed mapping/aws/data/odb/aws_odb_db_servers.json +var dataAwsOdbServers []byte + +//go:embed mapping/aws/data/odb/aws_odb_db_system_shapes.json +var dataAwsOdbDbSystemShapes []byte + +//go:embed mapping/aws/data/odb/aws_odb_gi_versions.json +var dataAwsOdbGiVersions []byte + +//go:embed mapping/aws/data/odb/aws_odb_network.json +var dataAwsOdbNetwork []byte + +//go:embed mapping/aws/data/odb/aws_odb_network_peering_connection.json +var dataAwsOdbNetworkPeeringConnection []byte + +//go:embed mapping/aws/data/odb/aws_odb_network_peering_connections.json +var dataAwsOdbNetworkPeeringConnections []byte + +//go:embed mapping/aws/data/odb/aws_odb_networks.json +var dataAwsOdbNetworks []byte + +//go:embed mapping/aws/data/ecr-public/aws_ecrpublic_images.json +var dataAwsEcrPublicImages []byte + +//go:embed mapping/aws/data/rds/aws_rds_global_cluster.json +var dataAwsRdsGlobalCluster []byte + +//go:embed mapping/aws/data/ec2/aws_vpn_connection.json +var dataAwsVpnConnection []byte diff --git a/src/files_gcp.go b/src/files_gcp.go index 040d8ab6..236176c1 100644 --- a/src/files_gcp.go +++ b/src/files_gcp.go @@ -298,9 +298,6 @@ var googleFirebaseProject []byte //go:embed mapping/google/resource/firebasestorage/google_firebase_storage_bucket.json var googleFirebaseStorageBucket []byte -//go:embed mapping/google/resource/firebase/google_firebase_android_app.json -var googleFirebaseWebApp []byte - //go:embed mapping/google/resource/firebaserules/google_firebaserules_release.json var googleFirebaserulesRelease []byte @@ -456,3 +453,1746 @@ var googleProjectIamAuditConfig []byte //go:embed mapping/google/resource/bigquery/google_bigquery_table.json var googleBigQueryTable []byte + +//go:embed mapping/google/resource/backend/gcs.json +var gcsBackend []byte + +//go:embed mapping/google/resource/privateca/google_privateca_ca_pool.json +var googlePrivateCaPool []byte + +//go:embed mapping/google/resource/privateca/google_privateca_ca_pool_iam_binding.json +var googlePrivateCaPoolIamBinding []byte + +//go:embed mapping/google/resource/privateca/google_privateca_ca_pool_iam_member.json +var googlePrivateCaPoolIamMember []byte + +//go:embed mapping/google/resource/privateca/google_privateca_ca_pool_iam_policy.json +var googlePrivateCaPoolIamPolicy []byte + +//go:embed mapping/google/resource/privateca/google_privateca_certificate_template.json +var googlePrivatecaCertificateTemplate []byte + +//go:embed mapping/google/resource/privateca/google_privateca_certificate_template_iam_binding.json +var googlePrivatecaCertificateTemplateIamBinding []byte + +//go:embed mapping/google/resource/privateca/google_privateca_certificate_template_iam_member.json +var googlePrivatecaCertificateTemplateIamMember []byte + +//go:embed mapping/google/resource/privateca/google_privateca_certificate_template_iam_policy.json +var googlePrivatecaCertificateTemplateIamPolicy []byte + +//go:embed mapping/google/resource/privilegedaccessmanager/google_privileged_access_manager_entitlement.json +var googlePrivilegedAccessManagerEntitlement []byte + +//go:embed mapping/google/resource/run/google_cloud_run_domain_mapping.json +var googleCloudRunDomainMapping []byte + +//go:embed mapping/google/resource/run/google_cloud_run_service.json +var googleCloudRunService []byte + +//go:embed mapping/google/resource/run/google_cloud_run_service_iam_binding.json +var googleCloudRunServiceIamBinding []byte + +//go:embed mapping/google/resource/run/google_cloud_run_service_iam_member.json +var googleCloudRunServiceIamMember []byte + +//go:embed mapping/google/resource/run/google_cloud_run_service_iam_policy.json +var googleCloudRunServiceIamPolicy []byte + +//go:embed mapping/google/resource/run/google_cloud_run_v2_worker_pool.json +var googleCloudRunV2WorkerPool []byte + +//go:embed mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_binding.json +var googleCloudRunV2WorkerPoolIamBinding []byte + +//go:embed mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_member.json +var googleCloudRunV2WorkerPoolIamMember []byte + +//go:embed mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_policy.json +var googleCloudRunV2WorkerPoolIamPolicy []byte + +//go:embed mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy.json +var googleBigqueryDatapolicyDataPolicy []byte + +//go:embed mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_binding.json +var googleBigqueryDatapolicyDataPolicyIamBinding []byte + +//go:embed mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_member.json +var googleBigqueryDatapolicyDataPolicyIamMember []byte + +//go:embed mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_policy.json +var googleBigqueryDatapolicyDataPolicyIamPolicy []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_entry.json +var googleDataCatalogEntry []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_entry_group.json +var googleDataCatalogEntryGroup []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_member.json +var googleDataCatalogEntryGroupIamMember []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_policy.json +var googleDataCatalogEntryGroupIamPolicy []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_policy_tag.json +var googleDataCatalogPolicyTag []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_member.json +var googleDataCatalogPolicyTagIamMember []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_policy.json +var googleDataCatalogPolicyTagIamPolicy []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_tag.json +var googleDataCatalogTag []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_tag_template.json +var googleDataCatalogTagTemplate []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_policy.json +var googleDataCatalogTagTemplateIamPolicy []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_taxonomy.json +var googleDataCatalogTaxonomy []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_policy_tag_iam_policy.json +var googleDataCatalogTaxonomyIamBinding []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_member.json +var googleDataCatalogTaxonomyIamMember []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_policy.json +var googleDataCatalogTaxonomyIamPolicy []byte + +//go:embed mapping/google/resource/cloudfunctions/google_cloudfunctions2_function.json +var googleCloudfunction2Function []byte + +//go:embed mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_binding.json +var googleCloudfunction2FunctionIamBinding []byte + +//go:embed mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_member.json +var googleCloudfunction2FunctionIamMember []byte + +//go:embed mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_policy.json +var googleCloudfunction2FunctionIamPolicy []byte + +//go:embed mapping/google/resource/cloudfunctions/google_cloudfunctions_function_iam_binding.json +var googleCloudfunctionsFunctionIamBinding []byte + +//go:embed mapping/google/resource/cloudkms/google_kms_crypto_key_version.json +var googleKmsCryptoKeyVersions []byte + +//go:embed mapping/google/resource/cloudkms/google_kms_key_handle.json +var googleKmsKeyHandle []byte + +//go:embed mapping/google/resource/cloudkms/google_kms_key_ring_iam_binding.json +var googleKmsKeyRingIamBinding []byte + +//go:embed mapping/google/resource/cloudkms/google_kms_key_ring_iam_member.json +var googleKmsKeyRingIamMember []byte + +//go:embed mapping/google/resource/cloudkms/google_kms_key_ring_iam_policy.json +var googleKmsKeyRingIamPolicy []byte + +//go:embed mapping/google/resource/cloudkms/google_kms_key_ring_import_job.json +var googleKmsKeyRingImportJob []byte + +//go:embed mapping/google/resource/cloudkms/google_kms_secret_ciphertext.json +var googleKmsSecretCiphertext []byte + +//go:embed mapping/google/resource/compute/google_project_usage_export_bucket.json +var googleProjectUsageExportBucket []byte + +//go:embed mapping/google/resource/iam/google_default_service_accounts.json +var googleDefaultServiceAccounts []byte + +//go:embed mapping/google/resource/iam/google_project_default_service_accounts.json +var googleProjectDefaultServiceAccounts []byte + +//go:embed mapping/google/resource/secretmanager/google_secret_manager_regional_secret.json +var googleSecretManagerRegionalSecret []byte + +//go:embed mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_binding.json +var googleSecretManagerRegionalSecretsIamBinding []byte + +//go:embed mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_member.json +var googleSecretManagerRegionalSecretIamMember []byte + +//go:embed mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_policy.json +var googleSecretManagerRegionalSecretIamPolicy []byte + +//go:embed mapping/google/resource/secretmanager/google_secret_manager_regional_secret_version.json +var googleSecretManagerRegionalSecretVersion []byte + +//go:embed mapping/google/resource/spanner/google_spanner_backup_schedule.json +var googleSpannerBackupSchedule []byte + +//go:embed mapping/google/resource/spanner/google_spanner_instance_config.json +var googleSpannerInstanceConfig []byte + +//go:embed mapping/google/resource/spanner/google_spanner_instance_partition.json +var googleSpannerInstancePartition []byte + +//go:embed mapping/google/resource/biglake/google_biglake_catalog.json +var googleBiglakeCatalog []byte + +//go:embed mapping/google/resource/biglake/google_biglake_database.json +var googleBiglakeDatabase []byte + +//go:embed mapping/google/resource/biglake/google_biglake_table.json +var googleBiglakeTable []byte + +//go:embed mapping/google/resource/analyticshub/google_bigquery_analytics_hub_listing_subscription.json +var googleBigqueryAnalyticsHubListingSubscription []byte + +//go:embed mapping/google/resource/bigquery/google_bigquery_dataset_access.json +var googleBigqueryDatasetAccess []byte + +//go:embed mapping/google/resource/bigquery/google_bigquery_row_access_policy.json +var googleBigqueryRowAccessPolicy []byte + +//go:embed mapping/google/resource/bigtable/google_bigtable_authorized_view.json +var googleBigtableAuthorizedView []byte + +//go:embed mapping/google/resource/bigtable/google_bigtable_logical_view.json +var googleBigtableLogicalView []byte + +//go:embed mapping/google/resource/bigtable/google_bigtable_materialized_view.json +var googleBigtableMaterializedView []byte + +//go:embed mapping/google/resource/cloudbuild/google_cloudbuildv2_connection.json +var googleCloudbuildv2Connection []byte + +//go:embed mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_binding.json +var googleCloudbuildv2ConnectionIamBinding []byte + +//go:embed mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_member.json +var googleCloudbuildv2ConnectionIamMember []byte + +//go:embed mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_policy.json +var googleCloudbuildv2ConnectionIamPolicy []byte + +//go:embed mapping/google/resource/cloudbuild/google_cloudbuildv2_repository.json +var googleCloudbuildv2Repository []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_asset.json +var googleDataplexAsset []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_asset_iam_binding.json +var googleDataplexAssetIamBinding []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_asset_iam_member.json +var googleDataplexAssetIamMember []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_asset_iam_policy.json +var googleDataplexAssetIamPolicy []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_datascan.json +var googleDataplexDatascan []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_datascan_iam_binding.json +var googleDataplexDatascanIamBinding []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_datascan_iam_member.json +var googleDataplexDatascanIamMember []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_datascan_iam_policy.json +var googleDataplexDatascanIamPolicy []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_glossary.json +var googleDataplexGlossary []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_glossary_category.json +var googleDataplexGlossaryCategory []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_glossary_term.json +var googleDataplexGlossaryTerm []byte + +//go:embed mapping/google/resource/apigee/google_apigee_environment_iam_binding.json +var googleApigeeEnvironmentIamBinding []byte + +//go:embed mapping/google/resource/apigee/google_apigee_environment_iam_member.json +var googleApigeeEnvironmentIamMember []byte + +//go:embed mapping/google/resource/apigee/google_apigee_environment_iam_policy.json +var googleApigeeEnvironmentIamPolicy []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_binding.json +var googleBeyondcorpApplicationIamBinding []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_member.json +var googleBeyondcorpApplicationIamMember []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_policy.json +var googleBeyondcorpApplicationIamPolicy []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_binding.json +var googleBeyondcorpSecurityGatewayApplicationIamBinding []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_member.json +var googleBeyondcorpSecurityGatewayApplicationIamMember []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_policy.json +var googleBeyondcorpSecurityGatewayApplicationIamPolicy []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_binding.json +var googleBeyondcorpSecurityGatewayIamBinding []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_member.json +var googleBeyondcorpSecurityGatewayIamMember []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_policy.json +var googleBeyondcorpSecurityGatewayIamPolicy []byte + +//go:embed mapping/google/resource/billing/google_billing_account_iam_binding.json +var googleBillingAccountIamBinding []byte + +//go:embed mapping/google/resource/billing/google_billing_account_iam_member.json +var googleBillingAccountIamMember []byte + +//go:embed mapping/google/resource/billing/google_billing_account_iam_policy.json +var googleBillingAccountIamPolicy []byte + +//go:embed mapping/google/resource/pubsub/google_pubsub_schema_iam_binding.json +var googlePubsubSchemaIamBinding []byte + +//go:embed mapping/google/resource/pubsub/google_pubsub_schema_iam_member.json +var googlePubsubSchemaIamMember []byte + +//go:embed mapping/google/resource/pubsub/google_pubsub_schema_iam_policy.json +var googlePubsubSchemaIamPolicy []byte + +//go:embed mapping/google/resource/pubsub/google_pubsub_subscription_iam_binding.json +var googlePubsubSubscriptionIamBinding []byte + +//go:embed mapping/google/resource/pubsub/google_pubsub_subscription_iam_member.json +var googlePubsubSubscriptionIamMember []byte + +//go:embed mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_binding.json +var googleSecureSourceManagerInstanceIamBinding []byte + +//go:embed mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_member.json +var googleSecureSourceManagerInstanceIamMember []byte + +//go:embed mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_policy.json +var googleSecureSourceManagerInstanceIamPolicy []byte + +//go:embed mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_binding.json +var googleSecureSourceManagerRepositoryIamBinding []byte + +//go:embed mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_member.json +var googleSecureSourceManagerRepositoryIamMember []byte + +//go:embed mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_policy.json +var googleSecureSourceManagerRepositoryIamPolicy []byte + +//go:embed mapping/google/resource/source/google_sourcerepo_repository_iam_binding.json +var googleSourcerepoRepositoryIamBinding []byte + +//go:embed mapping/google/resource/source/google_sourcerepo_repository_iam_member.json +var googleSourcerepoRepositoryIamMember []byte + +//go:embed mapping/google/resource/source/google_sourcerepo_repository_iam_policy.json +var googleSourcerepoRepositoryIamPolicy []byte + +//go:embed mapping/google/resource/resourcemanager/google_tags_tag_key_iam_binding.json +var googleTagsTagKeyIamBinding []byte + +//go:embed mapping/google/resource/resourcemanager/google_tags_tag_key_iam_member.json +var googleTagsTagKeyIamMember []byte + +//go:embed mapping/google/resource/resourcemanager/google_tags_tag_key_iam_policy.json +var googleTagsTagKeyIamPolicy []byte + +//go:embed mapping/google/resource/resourcemanager/google_tags_tag_value_iam_binding.json +var googleTagsTagValueIamBinding []byte + +//go:embed mapping/google/resource/resourcemanager/google_tags_tag_value_iam_member.json +var googleTagsTagValueIamMember []byte + +//go:embed mapping/google/resource/resourcemanager/google_tags_tag_value_iam_policy.json +var googleTagsTagValueIamPolicy []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_binding.json +var googleVertexAIFeatureGroupIamBinding []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_member.json +var googleVertexAIFeatureGroupIamMember []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_policy.json +var googleVertexAIFeatureGroupIamPolicy []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_binding.json +var googleVertexAIFeatureOnlineStoreFeatureviewIamBinding []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_member.json +var googleVertexAIFeatureOnlineStoreFeatureviewIamMember []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_policy.json +var googleVertexAIFeatureOnlineStoreFeatureviewIamPolicy []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_binding.json +var googleVertexAIFeatureOnlineStoreIamBinding []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_member.json +var googleVertexAIFeatureOnlineStoreIamMember []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_policy.json +var googleVertexAIFeatureOnlineStoreIamPolicy []byte + +//go:embed mapping/google/resource/notebooks/google_workbench_instance_iam_binding.json +var googleWorkbenchInstanceIamBinding []byte + +//go:embed mapping/google/resource/notebooks/google_workbench_instance_iam_member.json +var googleWorkbenchInstanceIamMember []byte + +//go:embed mapping/google/resource/notebooks/google_workbench_instance_iam_policy.json +var googleWorkbenchInstanceIamPolicy []byte + +//go:embed mapping/google/resource/workstations/google_workstations_workstation_config_iam_binding.json +var googleWorkstationsWorkstationConfigIamBinding []byte + +//go:embed mapping/google/resource/workstations/google_workstations_workstation_config_iam_member.json +var googleWorkstationsWorkstationConfigIamMember []byte + +//go:embed mapping/google/resource/workstations/google_workstations_workstation_config_iam_policy.json +var googleWorkstationsWorkstationConfigIamPolicy []byte + +//go:embed mapping/google/resource/workstations/google_workstations_workstation_iam_binding.json +var googleWorkstationsWorkstationIamBinding []byte + +//go:embed mapping/google/resource/workstations/google_workstations_workstation_iam_member.json +var googleWorkstationsWorkstationIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_instance_template_iam_binding.json +var googleComputeInstanceTemplateIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_instance_template_iam_member.json +var googleComputeInstanceTemplateIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_instance_template_iam_policy.json +var googleComputeInstanceTemplateIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_instant_snapshot_iam_binding.json +var googleComputeInstanceSnapshotIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_instant_snapshot_iam_member.json +var googleComputeInstanceSnapshotIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_instant_snapshot_iam_policy.json +var googleComputeInstanceSnapshotIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_machine_image_iam_binding.json +var googleComputeMachineImageIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_machine_image_iam_member.json +var googleComputeMachineImageIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_machine_image_iam_policy.json +var googleComputeMachineImageIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_region_backend_service_iam_binding.json +var googleComputeRegionBackendServiceIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_region_backend_service_iam_member.json +var googleComputeRegionBackendServiceIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_region_backend_service_iam_policy.json +var googleComputeRegionBackendServiceIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_region_disk_iam_binding.json +var googleComputeRegionDiskIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_region_disk_iam_member.json +var googleComputeRegionDiskIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_region_disk_iam_policy.json +var googleComputeRegionDiskIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_snapshot_iam_binding.json +var googleComputeSnapshotIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_snapshot_iam_member.json +var googleComputeSnapshotIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_snapshot_iam_policy.json +var googleComputeSnapshotIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_storage_pool_iam_binding.json +var googleComputeStoragePoolIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_storage_pool_iam_member.json +var googleComputeStoragePoolIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_storage_pool_iam_policy.json +var googleComputeStoragePoolIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_subnetwork_iam_binding.json +var googleComputeSubnetworkIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_subnetwork_iam_member.json +var googleComputeSubnetworkIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_subnetwork_iam_policy.json +var googleComputeSubnetworkIamPolicy []byte + +//go:embed mapping/google/resource/containeranalysis/google_container_analysis_note_iam_binding.json +var googleContainerAnalysisNoteIamBinding []byte + +//go:embed mapping/google/resource/containeranalysis/google_container_analysis_note_iam_member.json +var googleContainerAnalysisNoteIamMember []byte + +//go:embed mapping/google/resource/containeranalysis/google_container_analysis_note_iam_policy.json +var googleContainerAnalysisNoteIamPolicy []byte + +//go:embed mapping/google/resource/dataform/google_dataform_repository_iam_binding.json +var googleDataformRepositoryIamBinding []byte + +//go:embed mapping/google/resource/dataform/google_dataform_repository_iam_member.json +var googleDataformRepositoryIamMember []byte + +//go:embed mapping/google/resource/dataform/google_dataform_repository_iam_policy.json +var googleDataformRepositoryIamPolicy []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_binding.json +var googleDataplexAspectTypeIamBinding []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_member.json +var googleDataplexAspectTypeIamMember []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_policy.json +var googleDataplexAspectTypeIamPolicy []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_entry_group_iam_binding.json +var googleDataplexEntryGroupIamBinding []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_entry_group_iam_member.json +var googleDataplexEntryGroupIamMember []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_entry_group_iam_policy.json +var googleDataplexEntryGroupIamPolicy []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_entry_group_iam_binding.json +var googleDataplexEntryTypeIamBinding []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_entry_group_iam_member.json +var googleDataplexEntryTypeIamMember []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_entry_group_iam_policy.json +var googleDataplexEntryTypeIamPolicy []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_glossary_iam_binding.json +var googleDataplexGlossaryIamBinding []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_glossary_iam_member.json +var googleDataplexGlossaryIamMember []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_glossary_iam_policy.json +var googleDataplexGlossaryIamPolicy []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_lake_iam_binding.json +var googleDataplexLakeIamBinding []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_lake_iam_member.json +var googleDataplexLakeIamMember []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_lake_iam_policy.json +var googleDataplexLakeIamPolicy []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_task_iam_member.json +var googleDataplexTaskIamMember []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_task_iam_policy.json +var googleDataplexTaskIamPolicy []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_zone_iam_binding.json +var googleDataplexZoneIamBinding []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_zone_iam_member.json +var googleDataplexZoneIamMember []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_binding.json +var googleDataprocAutoscalingPolicyIamBinding []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_member.json +var googleDataprocAutoscalingPolicyIamMember []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_binding.json +var googleDataprocAutoscalingPolicyIamPolicy []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_cluster_iam_binding.json +var googleDataprocClusterIamBinding []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_cluster_iam_member.json +var googleDataprocClusterIamMember []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_cluster_iam_policy.json +var googleDataprocClusterIamPolicy []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_job_iam_binding.json +var googleDataprocJobIamBinding []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_job_iam_member.json +var googleDataprocJobIamMember []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_job_iam_policy.json +var googleDataprocJobIamPolicy []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_database_iam_binding.json +var googleDataprocMetastoreDatabaseIamBinding []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_database_iam_member.json +var googleDataprocMetastoreDatabaseIamMember []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_database_iam_policy.json +var googleDataprocMetastoreDatabaseIamPolicy []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_binding.json +var googleDataprocMetastoreFederationIamBinding []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_member.json +var googleDataprocMetastoreFederationIamMember []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_policy.json +var googleDataprocMetastoreFederationIamPolicy []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_binding.json +var googleDataprocMetastoreServiceIamBinding []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_service_iam_member.json +var googleDataprocMetastoreServiceIamMember []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_policy.json +var googleDataprocMetastoreServiceIamPolicy []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_binding.json +var googleDataprocMetastoreTableIamBinding []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_table_iam_member.json +var googleDataprocMetastoreTableIamMember []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_table_iam_policy.json +var googleDataprocMetastoreTableIamPolicy []byte + +//go:embed mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_binding.json +var googleBinaryAuthorizationAttestorIamBinding []byte + +//go:embed mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_member.json +var googleBinaryAuthorizationAttestorIamMember []byte + +//go:embed mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_policy.json +var googleBinaryAuthorizationAttestorIamPolicy []byte + +//go:embed mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_binding.json +var googleCloudTasksQueueIamBinding []byte + +//go:embed mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_member.json +var googleCloudTasksQueueIamMember []byte + +//go:embed mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_policy.json +var googleCloudTasksQueueIamPolicy []byte + +//go:embed mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_binding.json +var googleClouddeployCustomTargetTypeIamBinding []byte + +//go:embed mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_member.json +var googleClouddeployCustomTargetTypeIamMember []byte + +//go:embed mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_policy.json +var googleClouddeployCustomTargetTypeIamPolicy []byte + +//go:embed mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_binding.json +var googleClouddeployDeliveryPipelineIamBinding []byte + +//go:embed mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_member.json +var googleClouddeployDeliveryPipelineIamMember []byte + +//go:embed mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_policy.json +var googleClouddeployDeliveryPipelineIamPolicy []byte + +//go:embed mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_binding.json +var googleClouddeployTargetIamBinding []byte + +//go:embed mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_member.json +var googleClouddeployTargetIamMember []byte + +//go:embed mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_policy.json +var googleClouddeployTargetIamPolicy []byte + +//go:embed mapping/google/resource/aiplatform/google_colab_runtime_template_iam_member.json +var googleColabRuntimeTemplateIamBinding []byte + +//go:embed mapping/google/resource/aiplatform/google_colab_runtime_template_iam_member.json +var googleColabRuntimeTemplateIamMember []byte + +//go:embed mapping/google/resource/aiplatform/google_colab_runtime_template_iam_policy.json +var googleColabRuntimeTemplateIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_backend_bucket_iam_binding.json +var googleComputeBackendBucketIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_backend_bucket_iam_member.json +var googleComputeBackendBucketIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_backend_bucket_iam_policy.json +var googleComputeBackendBucketIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_backend_service_iam_binding.json +var googleComputeBackendServiceIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_backend_service_iam_member.json +var googleComputeBackendServiceIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_backend_service_iam_policy.json +var googleComputeBackendServiceIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_disk_iam_binding.json +var googleComputeDiskIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_disk_iam_member.json +var googleComputeDiskIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_image_iam_binding.json +var googleComputeImageIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_image_iam_member.json +var googleComputeImageIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_image_iam_policy.json +var googleComputeImageIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_instance_iam_binding.json +var googleComputeInstanceIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_instance_iam_member.json +var googleComputeInstanceIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_instance_iam_policy.json +var googleComputeInstanceIamPolicy []byte + +//go:embed mapping/google/resource/datafusion/google_data_fusion_instance_iam_binding.json +var googleDataFusionInstanceIamBinding []byte + +//go:embed mapping/google/resource/datafusion/google_data_fusion_instance_iam_member.json +var googleDataFusionInstanceIamMember []byte + +//go:embed mapping/google/resource/datafusion/google_data_fusion_instance_iam_policy.json +var googleDataFusionInstanceIamPolicy []byte + +//go:embed mapping/google/resource/dns/google_dns_managed_zone_iam_binding.json +var googleDNSManagedZoneIamBinding []byte + +//go:embed mapping/google/resource/dns/google_dns_managed_zone_iam_member.json +var googleDNSManagedZoneIamMember []byte + +//go:embed mapping/google/resource/dns/google_dns_managed_zone_iam_policy.json +var googleDNSManagedZoneIamPolicy []byte + +//go:embed mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_binding.json +var googleEndpointsServiceConsumersIamBinding []byte + +//go:embed mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_member.json +var googleEndpointsServiceConsumersIamMember []byte + +//go:embed mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_policy.json +var googleEndpointsServiceConsumersIamPolicy []byte + +//go:embed mapping/google/resource/servicemanagement/google_endpoints_service_iam_binding.json +var googleEndpointsServiceIamBinding []byte + +//go:embed mapping/google/resource/servicemanagement/google_endpoints_service_iam_member.json +var googleEndpointsServiceIamMember []byte + +//go:embed mapping/google/resource/servicemanagement/google_endpoints_service_iam_policy.json +var googleEndpointsServiceIamPolicy []byte + +//go:embed mapping/google/resource/resourcemanager/google_folder_iam_binding.json +var googleFolderIamBinding []byte + +//go:embed mapping/google/resource/resourcemanager/google_folder_iam_member.json +var googleFolderIamMember []byte + +//go:embed mapping/google/resource/resourcemanager/google_folder_iam_policy.json +var googleFolderIamPolicy []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_binding.json +var googleGeminiRepositoryGroupIamBinding []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_member.json +var googleGeminiRepositoryGroupIamMember []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_policy.json +var googleGeminiRepositoryGroupIamPolicy []byte + +//go:embed mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_binding.json +var googleGkeBackupBackupPlanIamBinding []byte + +//go:embed mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_member.json +var googleGkeBackupBackupPlanIamMember []byte + +//go:embed mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_policy.json +var googleGkeBackupBackupPlanIamPolicy []byte + +//go:embed mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_binding.json +var googleGkeBackupRestorePlanIamBinding []byte + +//go:embed mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_member.json +var googleGkeBackupRestorePlanIamMember []byte + +//go:embed mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_policy.json +var googleGkeBackupRestorePlanIamPolicy []byte + +//go:embed mapping/google/resource/gkehub/google_gke_hub_feature_iam_binding.json +var googleGkeHubFeatureIamBinding []byte + +//go:embed mapping/google/resource/gkehub/google_gke_hub_feature_iam_member.json +var googleGkeHubFeatureIamMember []byte + +//go:embed mapping/google/resource/gkehub/google_gke_hub_feature_iam_policy.json +var googleGkeHubFeatureIamPolicy []byte + +//go:embed mapping/google/resource/gkehub/google_gke_hub_membership_iam_binding.json +var googleGkeHubMembershipIamBinding []byte + +//go:embed mapping/google/resource/gkehub/google_gke_hub_membership_iam_member.json +var googleGkeHubMembershipIamMember []byte + +//go:embed mapping/google/resource/gkehub/google_gke_hub_membership_iam_policy.json +var googleGkeHubMembershipIamPolicy []byte + +//go:embed mapping/google/resource/gkehub/google_gke_hub_scope_iam_binding.json +var googleGkeHubScopeIamBinding []byte + +//go:embed mapping/google/resource/gkehub/google_gke_hub_scope_iam_member.json +var googleGkeHubScopeIamMember []byte + +//go:embed mapping/google/resource/gkehub/google_gke_hub_scope_iam_policy.json +var googleGkeHubScopeIamPolicy []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_consent_store_iam_binding.json +var googleHealthcareConsentStoreIamBinding []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_consent_store_iam_member.json +var googleHealthcareConsentStoreIamMember []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_consent_store_iam_policy.json +var googleHealthcareConsentStoreIamPolicy []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_dataset_iam_binding.json +var googleHealthcareDatasetIamBinding []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_dataset_iam_member.json +var googleHealthcareDatasetIamMember []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_dataset_iam_policy.json +var googleHealthcareDatasetIamPolicy []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_binding.json +var googleHealthcareDicomStoreIamBinding []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_member.json +var googleHealthcareDicomStoreIamMember []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_policy.json +var googleHealthcareDicomStoreIamPolicy []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_binding.json +var googleHealthcareFhirStoreIamBinding []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_member.json +var googleHealthcareFhirStoreIamMember []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_policy.json +var googleHealthcareFhirStoreIamPolicy []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_binding.json +var googleHealthcareHl7V2StoreIamBinding []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_member.json +var googleHealthcareHl7V2StoreIamMember []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_policy.json +var googleHealthcareHl7V2StoreIamPolicy []byte + +//go:embed mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_binding.json +var googleIamWorkloadIdentityPoolIamBinding []byte + +//go:embed mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_member.json +var googleIamWorkloadIdentityPoolIamMember []byte + +//go:embed mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_policy.json +var googleIamWorkloadIdentityPoolIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_app_engine_service_iam_binding.json +var googleIapAppEngineServiceIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_app_engine_service_iam_member.json +var googleIapAppEngineServiceIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_app_engine_service_iam_policy.json +var googleIapAppEngineServiceIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_app_engine_version_iam_binding.json +var googleIapAppEngineVersionIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_app_engine_version_iam_member.json +var googleIapAppEngineVersionIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_app_engine_version_iam_policy.json +var googleIapAppEngineVersionIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_binding.json +var googleIapTunnelDestGroupIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_member.json +var googleIapTunnelDestGroupIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_policy.json +var googleIapTunnelDestGroupIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_tunnel_iam_binding.json +var googleIapTunnelIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_tunnel_iam_member.json +var googleIapTunnelIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_tunnel_iam_policy.json +var googleIapTunnelIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_tunnel_instance_iam_binding.json +var googleIapTunnelInstanceIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_tunnel_instance_iam_member.json +var googleIapTunnelInstanceIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_tunnel_instance_iam_policy.json +var googleIapTunnelInstanceIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_web_backend_service_iam_binding.json +var googleIapWebBackendServiceIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_web_backend_service_iam_member.json +var googleIapWebBackendServiceIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_web_backend_service_iam_policy.json +var googleIapWebBackendServiceIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_binding.json +var googleIapWebCloudRunServiceIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_member.json +var googleIapWebCloudRunServiceIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_policy.json +var googleIapWebCloudRunServiceIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_web_iam_binding.json +var googleIapWebIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_web_iam_member.json +var googleIapWebIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_web_iam_policy.json +var googleIapWebIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_web_region_backend_service_iam_binding.json +var googleIapWebRegionBackendServiceIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_web_region_backend_service_iam_member.json +var googleIapWebRegionBackendServiceIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_web_region_backend_service_iam_policy.json +var googleIapWebRegionBackendServiceIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_web_type_app_engine_iam_binding.json +var googleIapWebTypeAppEngineIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_web_type_app_engine_iam_member.json +var googleIapWebTypeAppEngineIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_web_type_app_engine_iam_policy.json +var googleIapWebTypeAppEngineIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_web_type_compute_iam_binding.json +var googleIapWebTypeComputeIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_web_type_compute_iam_member.json +var googleIapWebTypeComputeIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_web_type_compute_iam_policy.json +var googleIapWebTypeComputeIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_disk_iam_policy.json +var googleComputeDiskIamPolicy []byte + +//go:embed mapping/google/resource/kms/google_kms_ekm_connection_iam_binding.json +var googleKmsEkmConnectionIamBinding []byte + +//go:embed mapping/google/resource/kms/google_kms_ekm_connection_iam_member.json +var googleKmsEkmConnectionIamMember []byte + +//go:embed mapping/google/resource/kms/google_kms_ekm_connection_iam_policy.json +var googleKmsEkmConnectionIamPolicy []byte + +//go:embed mapping/google/resource/logging/google_logging_log_view_iam_binding.json +var googleLoggingLogViewIamBinding []byte + +//go:embed mapping/google/resource/logging/google_logging_log_view_iam_member.json +var googleLoggingLogViewIamMember []byte + +//go:embed mapping/google/resource/networksecurity/google_network_security_address_group_iam_binding.json +var googleNetworkSecurityAddressGroupIamBinding []byte + +//go:embed mapping/google/resource/networksecurity/google_network_security_address_group_iam_member.json +var googleNetworkSecurityAddressGroupIamMember []byte + +//go:embed mapping/google/resource/networksecurity/google_network_security_address_group_iam_policy.json +var googleNetworkSecurityAddressGroupIamPolicy []byte + +//go:embed mapping/google/resource/notebooks/google_notebooks_instance_iam_binding.json +var googleNotebooksInstanceIamBinding []byte + +//go:embed mapping/google/resource/notebooks/google_notebooks_instance_iam_member.json +var googleNotebooksInstanceIamMember []byte + +//go:embed mapping/google/resource/notebooks/google_notebooks_instance_iam_policy.json +var googleNotebooksInstanceIamPolicy []byte + +//go:embed mapping/google/resource/notebooks/google_notebooks_runtime_iam_binding.json +var googleNotebooksRuntimeIamBinding []byte + +//go:embed mapping/google/resource/notebooks/google_notebooks_runtime_iam_member.json +var googleNotebooksRuntimeIamMember []byte + +//go:embed mapping/google/resource/logging/google_logging_log_view_iam_policy.json +var googleLoggingLogViewIamPolicy []byte + +//go:embed mapping/google/resource/pubsub/google_pubsub_subscription_iam_policy.json +var googlePubsubSubscriptionIamPolicy []byte + +//go:embed mapping/google/resource/workstations/google_workstations_workstation_iam_policy.json +var googleWorkstationsWorkstationIamPolicy []byte + +//go:embed mapping/google/resource/resourcemanager/google_organization_iam_binding.json +var googleOrganizationIamBinding []byte + +//go:embed mapping/google/resource/resourcemanager/google_organization_iam_member.json +var googleOrganizationIamMember []byte + +//go:embed mapping/google/resource/resourcemanager/google_organization_iam_policy.json +var googleOrganizationIamPolicy []byte + +//go:embed mapping/google/resource/resourcemanager/google_project_iam_policy.json +var googleProjectIamPolicy []byte + +//go:embed mapping/google/resource/notebooks/google_notebooks_runtime_iam_policy.json +var googleNotebooksRuntimeIamPolicy []byte + +//go:embed mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_binding.json +var googleRuntimeconfigConfigIamBinding []byte + +//go:embed mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_member.json +var googleRuntimeconfigConfigIamMember []byte + +//go:embed mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_policy.json +var googleRuntimeconfigConfigIamPolicy []byte + +//go:embed mapping/google/resource/securitycenter/google_scc_source_iam_binding.json +var googleSccSourceIamBinding []byte + +//go:embed mapping/google/resource/securitycenter/google_scc_source_iam_member.json +var googleSccSourceIamMember []byte + +//go:embed mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_binding.json +var googleSccV2OrganizationSourceIamBinding []byte + +//go:embed mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_member.json +var googleSccV2OrganizationSourceIamMember []byte + +//go:embed mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_policy.json +var googleSccV2OrganizationSourceIamPolicy []byte + +//go:embed mapping/google/resource/storage/google_storage_managed_folder_iam_binding.json +var googleStorageManagedFolderIamBinding []byte + +//go:embed mapping/google/resource/storage/google_storage_managed_folder_iam_member.json +var googleStorageManagedFolderIamMember []byte + +//go:embed mapping/google/resource/storage/google_storage_managed_folder_iam_policy.json +var googleStorageManagedFolderIamPolicy []byte + +//go:embed mapping/google/resource/securitycenter/google_scc_source_iam_policy.json +var googleSccSourceIamPolicy []byte + +//go:embed mapping/google/resource/resourcemanager/google_tags_location_tag_binding.json +var googleTagsLocationTagBinding []byte + +//go:embed mapping/google/resource/resourcemanager/google_tags_tag_binding.json +var googleTagsTagBinding []byte + +//go:embed mapping/google/resource/resourcemanager/google_tags_tag_key.json +var googleTagsTagKey []byte + +//go:embed mapping/google/resource/resourcemanager/google_tags_tag_value.json +var googleTagsTagValue []byte + +//go:embed mapping/google/resource/storage/google_storage_control_folder_intelligence_config.json +var googleStorageControlFolderIntelligenceConfig []byte + +//go:embed mapping/google/resource/storage/google_storage_control_organization_intelligence_config.json +var googleStorageControlOrganizationIntelligenceConfig []byte + +//go:embed mapping/google/resource/storage/google_storage_control_project_intelligence_config.json +var googleStorageControlProjectIntelligenceConfig []byte + +//go:embed mapping/google/resource/runtimeconfig/google_runtimeconfig_config.json +var googleRuntimeconfigConfig []byte + +//go:embed mapping/google/resource/runtimeconfig/google_runtimeconfig_variable.json +var googleRuntimeconfigVariable []byte + +//go:embed mapping/google/resource/redis/google_redis_cluster.json +var googleRedisCluster []byte + +//go:embed mapping/google/resource/redis/google_redis_cluster_user_created_connections.json +var googleRedisClusterUserCreatedConnections []byte + +//go:embed mapping/google/resource/resourcemanager/google_project.json +var gooleProject []byte + +//go:embed mapping/google/resource/accessapproval/google_project_access_approval_settings.json +var googleProjectAccessApprovalSettings []byte + +//go:embed mapping/google/resource/resourcemanager/google_project_iam_member_remove.json +var googleProjectIamMemberRemove []byte + +//go:embed mapping/google/resource/orgpolicy/google_project_organization_policy.json +var googleProjectOrganizationPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_forwarding_rule.json +var googleComputeForwardingRule []byte + +//go:embed mapping/google/resource/compute/google_compute_global_forwarding_rule.json +var googleComputeGlobalForwardingRule []byte + +//go:embed mapping/google/resource/compute/google_compute_health_check.json +var googleComputeHealthcheck []byte + +//go:embed mapping/google/resource/compute/google_compute_http_health_check.json +var googleComputeHttpHealthCheck []byte + +//go:embed mapping/google/resource/compute/google_compute_https_health_check.json +var googleComputeHttpsHealthCheck []byte + +//go:embed mapping/google/resource/compute/google_compute_region_backend_service.json +var googleComputeRgionBackendService []byte + +//go:embed mapping/google/resource/compute/google_compute_region_health_check.json +var googleComputeRegioHealthCheck []byte + +//go:embed mapping/google/resource/compute/google_compute_region_target_http_proxy.json +var googleComputeRegionTargetHttpProxy []byte + +//go:embed mapping/google/resource/compute/google_compute_region_target_https_proxy.json +var googleComputeRegionTargetHttpsProxy []byte + +//go:embed mapping/google/resource/compute/google_compute_region_target_tcp_proxy.json +var googleComputeRegionTargetTcpProxy []byte + +//go:embed mapping/google/resource/compute/google_compute_region_url_map.json +var googleComputeRegionUrlMap []byte + +//go:embed mapping/google/resource/compute/google_compute_target_http_proxy.json +var googleComputeTargetHttpProxy []byte + +//go:embed mapping/google/resource/compute/google_compute_target_https_proxy.json +var googleComputeTargetHttpsProxy []byte + +//go:embed mapping/google/resource/compute/google_compute_url_map.json +var googleComputeUrlMap []byte + +//go:embed mapping/google/resource/compute/google_compute_backend_service.json +var googleComputeBackendService []byte + +//go:embed mapping/google/resource/compute/google_compute_backend_bucket.json +var googleComputeBackendBucket []byte + +//go:embed mapping/google/resource/compute/google_compute_global_network_endpoint_group.json +var googleComputeGlobalNetworkEndpointGroup []byte + +//go:embed mapping/google/resource/compute/google_compute_network_endpoint_group.json +var googleComputeNetworkEndpointGroup []byte + +//go:embed mapping/google/resource/compute/google_compute_region_network_endpoint_group.json +var googleComputeRegionNetworkEndpointGroup []byte + +//go:embed mapping/google/resource/firebase/google_firebase_web_app.json +var googleFirebaseWebApp []byte + +//go:embed mapping/google/resource/dataflow/google_dataflow_job.json +var googleDataflowJob []byte + +//go:embed mapping/google/resource/dataform/google_dataform_repository.json +var googleDataformRepository []byte + +//go:embed mapping/google/resource/dataform/google_dataform_repository_release_config.json +var googleDataformRepositoryReleaseConfig []byte + +//go:embed mapping/google/resource/dataform/google_dataform_repository_workflow_config.json +var googleDataformRepositoryWorkflowConfig []byte + +//go:embed mapping/google/resource/compute/google_compute_network_attachment.json +var googleComputeNetworkAttachment []byte + +//go:embed mapping/google/resource/notebooks/google_notebooks_environment.json +var googleNotebooksEnvironment []byte + +//go:embed mapping/google/resource/notebooks/google_notebooks_instance.json +var googleNotebooksInstance []byte + +//go:embed mapping/google/resource/notebooks/google_notebooks_runtime.json +var googleNotebooksRuntime []byte + +//go:embed mapping/google/resource/logging/google_logging_billing_account_exclusion.json +var googleLoggingBillingAccountExclusion []byte + +//go:embed mapping/google/resource/logging/google_logging_billing_account_sink.json +var googleLoggingBillingAccountSink []byte + +//go:embed mapping/google/resource/logging/google_logging_folder_exclusion.json +var googleLoggingFolderExclusion []byte + +//go:embed mapping/google/resource/logging/google_logging_folder_settings.json +var googleLoggingFolderSettings []byte + +//go:embed mapping/google/resource/logging/google_logging_folder_sink.json +var googleLoggingFolderSink []byte + +//go:embed mapping/google/resource/logging/google_logging_linked_dataset.json +var googleLoggingLinkedDataset []byte + +//go:embed mapping/google/resource/logging/google_logging_log_scope.json +var googleLoggingLogScope []byte + +//go:embed mapping/google/resource/logging/google_logging_log_view.json +var googleLoggingLogView []byte + +//go:embed mapping/google/resource/logging/google_logging_metric.json +var googleLoggingMetric []byte + +//go:embed mapping/google/resource/logging/google_logging_organization_exclusion.json +var googleLoggingOrganizationExclusion []byte + +//go:embed mapping/google/resource/logging/google_logging_organization_settings.json +var googleLoggingOrganizationSettings []byte + +//go:embed mapping/google/resource/logging/google_logging_organization_sink.json +var googleLoggingOrganizationSink []byte + +//go:embed mapping/google/resource/logging/google_logging_project_exclusion.json +var googleLoggingProjectExclusion []byte + +//go:embed mapping/google/resource/logging/google_logging_project_sink.json +var googleLoggingProjectSink []byte + +//go:embed mapping/google/resource/monitoring/google_monitoring_alert_policy.json +var googleMonitoringAlertPolicy []byte + +//go:embed mapping/google/resource/monitoring/google_monitoring_custom_service.json +var googleMonitoringCustomService []byte + +//go:embed mapping/google/resource/monitoring/google_monitoring_dashboard.json +var googleMonitoringDashboard []byte + +//go:embed mapping/google/resource/monitoring/google_monitoring_group.json +var googleMonitoringGroup []byte + +//go:embed mapping/google/resource/monitoring/google_monitoring_metric_descriptor.json +var googleMonitoringMetricDescriptor []byte + +//go:embed mapping/google/resource/monitoring/google_monitoring_monitored_project.json +var googleMonitoringMonitoredProject []byte + +//go:embed mapping/google/resource/monitoring/google_monitoring_notification_channel.json +var googleMonitoringNotificationChannel []byte + +//go:embed mapping/google/resource/backupdr/google_backup_dr_backup_plan.json +var googleBackupDRBackupPlan []byte + +//go:embed mapping/google/resource/backupdr/google_backup_dr_backup_plan_association.json +var googleBackupDRBackupPlanAssociation []byte + +//go:embed mapping/google/resource/backupdr/google_backup_dr_backup_vault.json +var googleBackupDRBackupVault []byte + +//go:embed mapping/google/resource/backupdr/google_backup_dr_management_server.json +var googleBackupDRManagementServer []byte + +//go:embed mapping/google/resource/backupdr/google_backup_dr_service_config.json +var googleBackupDRServiceConfig []byte + +//go:embed mapping/google/resource/monitoring/google_monitoring_service.json +var googleMonitoringService []byte + +//go:embed mapping/google/resource/monitoring/google_monitoring_slo.json +var googleMonitoringSLO []byte + +//go:embed mapping/google/resource/monitoring/google_monitoring_uptime_check_config.json +var googleMonitoringUptimeCheckConfig []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_app_connection.json +var googleBeyondcorpAppConnection []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_app_connector.json +var googleBeyondcorpAppConnector []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_app_gateway.json +var googleBeyondcorpAppGateway []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_application.json +var googleBeyondcorpApplication []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway.json +var googleBeyondcorpSecurityGateway []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application.json +var googleBeyondcorpSecurityGatewayApplication []byte + +//go:embed mapping/google/resource/billing/google_billing_budget.json +var googleBillingBudget []byte + +//go:embed mapping/google/resource/resourcemanager/google_billing_project_info.json +var googleBillingProjectInfo []byte + +//go:embed mapping/google/resource/apihub/google_apihub_api_hub_instance.json +var googleApihubInstance []byte + +//go:embed mapping/google/resource/apihub/google_apihub_curation.json +var googleApihubCuration []byte + +//go:embed mapping/google/resource/apihub/google_apihub_host_project_registration.json +var googleApihubHostProjectRegistration []byte + +//go:embed mapping/google/resource/apihub/google_apihub_plugin.json +var googleApihubPlugin []byte + +//go:embed mapping/google/resource/apihub/google_apihub_plugin_instance.json +var googleApihubPluginInstance []byte + +//go:embed mapping/google/resource/apphub/google_apphub_application.json +var googleApphubApplication []byte + +//go:embed mapping/google/resource/apphub/google_apphub_service.json +var googleApphubService []byte + +//go:embed mapping/google/resource/apphub/google_apphub_service_project_attachment.json +var googleApphubServiceProjectAttachment []byte + +//go:embed mapping/google/resource/apphub/google_apphub_workload.json +var googleApphubWorkload []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_aspect_type.json +var googleDataplexAspectType []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_entry.json +var googleDataplexEntry []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_entry_group.json +var googleDataplexEntryGroup []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_entry_type.json +var googleDataplexEntryType []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_lake.json +var googleDataplexLake []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_task.json +var googleDataplexTask []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_zone.json +var googleDataplexZone []byte + +//go:embed mapping/google/resource/vmwareengine/google_vmwareengine_cluster.json +var googleVmwareengineCluster []byte + +//go:embed mapping/google/resource/vmwareengine/google_vmwareengine_external_access_rule.json +var googleVmwareengineExternalAccessRule []byte + +//go:embed mapping/google/resource/vmwareengine/google_vmwareengine_external_address.json +var googleVmwareengineExternalAddress []byte + +//go:embed mapping/google/resource/vmwareengine/google_vmwareengine_network.json +var googleVmwareengineNetwork []byte + +//go:embed mapping/google/resource/vmwareengine/google_vmwareengine_network_peering.json +var googleVmwareengineNetworkPeering []byte + +//go:embed mapping/google/resource/vmwareengine/google_vmwareengine_network_policy.json +var googleVmwareengineNetworkPolicy []byte + +//go:embed mapping/google/resource/vmwareengine/google_vmwareengine_private_cloud.json +var googleVmwareenginePrivateCloud []byte + +//go:embed mapping/google/resource/vmwareengine/google_vmwareengine_subnet.json +var googleVmwareengineSubnet []byte + +//go:embed mapping/google/resource/workflows/google_workflows_workflow.json +var googleWorkflowsWorkflow []byte + +//go:embed mapping/google/resource/workstations/google_workstations_workstation.json +var googleWorkstationsWorkstation []byte + +//go:embed mapping/google/resource/workstations/google_workstations_workstation_cluster.json +var googleWorkstationsWorkstationCluster []byte + +//go:embed mapping/google/resource/workstations/google_workstations_workstation_config.json +var googleWorkstationsWorkstationConfig []byte + +//go:embed mapping/google/resource/chronicle/google_chronicle_data_access_label.json +var googleChronicleDataAccessLabel []byte + +//go:embed mapping/google/resource/chronicle/google_chronicle_data_access_scope.json +var googleChronicleDataAccessScope []byte + +//go:embed mapping/google/resource/chronicle/google_chronicle_reference_list.json +var googleChronicleReferenceList []byte + +//go:embed mapping/google/resource/chronicle/google_chronicle_retrohunt.json +var googleChronicleRetrohunt []byte + +//go:embed mapping/google/resource/chronicle/google_chronicle_rule.json +var googleChronicleRule []byte + +//go:embed mapping/google/resource/chronicle/google_chronicle_rule_deployment.json +var googleChronicleRuleDeployment []byte + +//go:embed mapping/google/resource/chronicle/google_chronicle_watchlist.json +var googleChronicleWatchlist []byte + +//go:embed mapping/google/resource/composer/google_composer_user_workloads_config_map.json +var googleComposerUserWorkloadsConfigMap []byte + +//go:embed mapping/google/resource/composer/google_composer_user_workloads_secret.json +var googleComposerUserWorkloadsSecret []byte + +//go:embed mapping/google/resource/contactcenterinsights/google_contact_center_insights_analysis_rule.json +var googleContactCenterInsightsAnalysisRule []byte + +//go:embed mapping/google/resource/contactcenterinsights/google_contact_center_insights_view.json +var googleContactCenterInsightsView []byte + +//go:embed mapping/google/resource/developerconnect/google_developer_connect_account_connector.json +var googleDeveloperConnectAccountConnector []byte + +//go:embed mapping/google/resource/developerconnect/google_developer_connect_connection.json +var googleDeveloperConnectConnection []byte + +//go:embed mapping/google/resource/developerconnect/google_developer_connect_git_repository_link.json +var googleDeveloperConnectGitRepositoryLink []byte + +//go:embed mapping/google/resource/bigtable/google_bigtable_schema_bundle.json +var googleBigtableSchemaBundle []byte + +//go:embed mapping/google/resource/memcache/google_memcache_instance.json +var googleMemcacheInstance []byte + +//go:embed mapping/google/resource/memorystore/google_memorystore_instance.json +var googleMemorystoreInstance []byte + +//go:embed mapping/google/resource/osconfig/google_os_config_guest_policies.json +var googleOsConfigGuestPolicies []byte + +//go:embed mapping/google/resource/osconfig/google_os_config_os_policy_assignment.json +var googleOsConfigOsPolicyAssignment []byte + +//go:embed mapping/google/resource/osconfig/google_os_config_patch_deployment.json +var googleOsConfigPatchDeployment []byte + +//go:embed mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator.json +var googleOsConfigV2PolicyOrchestrator []byte + +//go:embed mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator_for_folder.json +var googleOsConfigV2PolicyOrchestratorForFolder []byte + +//go:embed mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator_for_organization.json +var googleOsConfigV2PolicyOrchestratorForOrganization []byte + +//go:embed mapping/google/resource/parallelstore/google_parallelstore_instance.json +var googleParallelstoreInstance []byte + +//go:embed mapping/google/resource/privateca/google_privateca_certificate.json +var googlePrivatecaCertificate []byte + +//go:embed mapping/google/resource/privateca/google_privateca_certificate_authority.json +var googlePrivatecaCertificateAuthority []byte + +//go:embed mapping/google/resource/cloudsql/google_sql_ssl_cert.json +var googleSqlSslCert []byte + +//go:embed mapping/google/resource/tpu/google_tpu_node.json +var googleTpuNode []byte + +//go:embed mapping/google/resource/tpu/google_tpu_v2_queued_resource.json +var googleTpuV2QueuedResource []byte + +//go:embed mapping/google/resource/tpu/google_tpu_v2_vm.json +var googleTpuV2Vm []byte + +//go:embed mapping/google/resource/transcoder/google_transcoder_job.json +var googleTranscoderJob []byte + +//go:embed mapping/google/resource/transcoder/google_transcoder_job_template.json +var googleTranscoderJobTemplate []byte + +//go:embed mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool.json +var googleIamWorkforcePool []byte + +//go:embed mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_binding.json +var googleIamWorkforcePoolIamBinding []byte + +//go:embed mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_member.json +var googleIamWorkforcePoolIamMember []byte + +//go:embed mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_policy.json +var googleIamWorkforcePoolIamPolicy []byte + +//go:embed mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_provider.json +var googleIamWorkforcePoolProvider []byte + +//go:embed mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_provider_key.json +var googleIamWorkforcePoolProviderKey []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_autoscaling_policy.json +var googleDataprocAutoscalingPolicy []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_batch.json +var googleDataprocBatch []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_cluster.json +var googleDataprocCluster []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_job.json +var googleDataprocJob []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_session_template.json +var googleDataprocSessionTemplate []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_workflow_template.json +var googleDataprocWorkflowTemplate []byte + +//go:embed mapping/google/resource/deploymentmanager/google_deployment_manager_deployment.json +var googleDeploymentManagerDeployment []byte + +//go:embed mapping/google/resource/edgecontainer/google_edgecontainer_cluster.json +var googleEdgecontainerCluster []byte + +//go:embed mapping/google/resource/edgecontainer/google_edgecontainer_node_pool.json +var googleEdgecontainerNodePool []byte + +//go:embed mapping/google/resource/edgecontainer/google_edgecontainer_vpn_connection.json +var googleEdgecontainerVpnConnection []byte + +//go:embed mapping/google/resource/edgenetwork/google_edgenetwork_interconnect_attachment.json +var googleEdgecontainerInterconnectAttachment []byte + +//go:embed mapping/google/resource/edgenetwork/google_edgenetwork_network.json +var googleEdgecontainerNetwork []byte + +//go:embed mapping/google/resource/edgenetwork/google_edgenetwork_subnet.json +var googleEdgecontainerSubnet []byte + +//go:embed mapping/google/resource/eventarc/google_eventarc_channel.json +var googleEventarcChannel []byte + +//go:embed mapping/google/resource/eventarc/google_eventarc_enrollment.json +var googleEventarcEnrollment []byte + +//go:embed mapping/google/resource/eventarc/google_eventarc_google_api_source.json +var googleEventarcGoogleApiSource []byte + +//go:embed mapping/google/resource/eventarc/google_eventarc_google_channel_config.json +var googleEventarcGoogleChannelConfig []byte + +//go:embed mapping/google/resource/eventarc/google_eventarc_message_bus.json +var googleEventarcMessageBus []byte + +//go:embed mapping/google/resource/eventarc/google_eventarc_pipeline.json +var googleEventarcPipeline []byte + +//go:embed mapping/google/resource/eventarc/google_eventarc_trigger.json +var googleEventarcTrigger []byte + +//go:embed mapping/google/resource/securesourcemanager/google_secure_source_manager_branch_rule.json +var googleSecureSourceManagerBranchRule []byte + +//go:embed mapping/google/resource/securesourcemanager/google_secure_source_manager_instance.json +var googleSecureSourceManagerInstance []byte + +//go:embed mapping/google/resource/securesourcemanager/google_secure_source_manager_repository.json +var googleSecureSourceManagerRepository []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_agent.json +var googleDialogflowAgent []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_conversation_profile.json +var googleDialogflowConversationProfile []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_agent.json +var googleDialogflowCxAgent []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_entity_type.json +var googleDialogflowCxEntityType []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_environment.json +var googleDialogflowCxEnvironment []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_flow.json +var googleDialogflowCxFlow []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_generative_settings.json +var googleDialogflowCxGenerativeSettings []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_generator.json +var googleDialogflowCxGenerator []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_intent.json +var googleDialogflowCxIntent []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_page.json +var googleDialogflowCxPage []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_playbook.json +var googleDialogflowCxPlaybook []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_security_settings.json +var googleDialogflowCxSecuritySettings []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_tool.json +var googleDialogflowCxTool []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_version.json +var googleDialogflowCxVersion []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_webhook.json +var googleDialogflowCxWebhook []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_encryption_spec.json +var googleDialogflowEncryptionSpec []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_entity_type.json +var googleDialogflowEntityType []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_fulfillment.json +var googleDialogflowFulfillment []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_intent.json +var googleDialogflowIntent []byte + +//go:embed mapping/google/resource/managedkafka/google_managed_kafka_cluster.json +var googleManagedKafkaCluster []byte + +//go:embed mapping/google/resource/managedkafka/google_managed_kafka_connect_cluster.json +var googleManagedKafkaConnectCluster []byte + +//go:embed mapping/google/resource/managedkafka/google_managed_kafka_connector.json +var googleManagedKafkaConnector []byte + +//go:embed mapping/google/resource/managedkafka/google_managed_kafka_topic.json +var googleManagedKafkaTopics []byte + +//go:embed mapping/google/resource/modelarmor/google_model_armor_floorsetting.json +var googleModelArmorFloorsetting []byte + +//go:embed mapping/google/resource/modelarmor/google_model_armor_template.json +var googleModelArmorTemplate []byte + +//go:embed mapping/google/resource/managedkafka/google_managed_kafka_acl.json +var googleManagedKafkaAcl []byte + +//go:embed mapping/google/resource/certificatemanager/google_certificate_manager_dns_authorization.json +var googleCertificateManagerDnsAuthorization []byte + +//go:embed mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_binding.json +var googleIapWebRegionForwardingRuleServiceIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_member.json +var googleIapWebRegionForwardingRuleServiceIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_policy.json +var googleIapWebRegionForwardingRuleServiceIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_settings.json +var googleIapSettings []byte + +//go:embed mapping/google/resource/iap/google_iap_tunnel_dest_group.json +var googleIapTunnelDestGroup []byte + +//go:embed mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_binding.json +var googleIapWebForwardingRuleServiceIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_member.json +var googleIapWebForwardingRuleServiceIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_policy.json +var googleIapWebForwardingRuleServiceIamPolicy []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_code_repository_index.json +var googleGeminiCodeRepositoryIndex []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_code_tools_setting.json +var googleGeminiCodeToolsSetting []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_code_tools_setting_binding.json +var googleGeminiCodeToolsSettingBinding []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_data_sharing_with_google_setting.json +var googleGeminiDataSharingWithGoogleSetting []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_data_sharing_with_google_setting_binding.json +var googleGeminiDataSharingWithGoogleSettingBinding []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_gemini_gcp_enablement_setting.json +var googleGeminiGeminiGcpEnablementSetting []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_gemini_gcp_enablement_setting_binding.json +var googleGeminiGeminiGcpEnablementSettingBinding []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_logging_setting.json +var googleGeminiLoggingSetting []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_logging_setting_binding.json +var googleGeminiLoggingSettingBinding []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_release_channel_setting.json +var googleGeminiReleaseChannelSetting []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_release_channel_setting_binding.json +var googleGeminiReleaseChannelSettingBinding []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_repository_group.json +var googleGeminiRepositoryGroup []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_cache_config.json +var googleVertexAiCacheConfig []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_deployment_resource_pool.json +var googleVertexAiDeploymentResourcePool []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_rag_engine_config.json +var googleVertexAiRagEngineConfig []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_reasoning_engine.json +var googleVertexAiReasoningEngine []byte + +//go:embed mapping/google/resource/vpcaccess/google_vpc_access_connector.json +var googleVpcAccessConnector []byte + +//go:embed mapping/google/resource/notebooks/google_workbench_instance.json +var googleWorkbenchInstance []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_endpoint_with_model_garden_deployment.json +var googleVertexAiEndpointWithModelGardenDeployment []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_index_endpoint_deployed_index.json +var googleVertexAiIndexEndpointDeployedIndex []byte diff --git a/src/files_gcp_datasource.go b/src/files_gcp_datasource.go index 2c09c66e..fdd48fc0 100644 --- a/src/files_gcp_datasource.go +++ b/src/files_gcp_datasource.go @@ -445,10 +445,10 @@ var dataGoogleIapAppEngineVersionIamPolicy []byte //go:embed mapping/google/data/iap/google_iap_app_engine_service_iam_policy.json var dataGoogleIapAppEngineServiceIamPolicy []byte -//go:embed mapping/google/data/iam/google_iam_workload_identity_pool_provider.json +//go:embed mapping/google/data/iam.googleapis.com/google_iam_workload_identity_pool_provider.json var dataGoogleIamWorkloadIdentityPoolProvider []byte -//go:embed mapping/google/data/iam/google_iam_workload_identity_pool.json +//go:embed mapping/google/data/iam.googleapis.com/google_iam_workload_identity_pool.json var dataGoogleIamWorkloadIdentityPool []byte //go:embed mapping/google/data/dataplex/google_dataplex_asset_iam_policy.json @@ -567,3 +567,432 @@ var dataGoogleDataformRepositoryIamPolicy []byte //go:embed mapping/google/data/servicemanagement/google_endpoints_service_iam_policy.json var dataGoogleEndpointsServiceIamPolicy []byte + +//go:embed mapping/google/data/secretmanager/google_secret_manager_regional_secret.json +var dataGoogleSecretManagerRegionalSecret []byte + +//go:embed mapping/google/data/secretmanager/google_secret_manager_regional_secret_iam_policy.json +var dataGoogleSecretManagerRegionalSecretIamPolicy []byte + +//go:embed mapping/google/data/secretmanager/google_secret_manager_regional_secret_version.json +var dataGoogleSecretManagerRegionalSecretVersion []byte + +//go:embed mapping/google/data/secretmanager/google_secret_manager_regional_secret_version_access.json +var dataGoogleSecretManagerRegionalSecretVersionAccess []byte + +//go:embed mapping/google/data/secretmanager/google_secret_manager_secrets.json +var dataGoogleSecretManagerRegionalSecrets []byte + +//go:embed mapping/google/data/iam/google_service_accounts.json +var dataGoogleServiceAccounts []byte + +//go:embed mapping/google/data/spanner/google_spanner_database.json +var dataGoogleSpannerDatabase []byte + +//go:embed mapping/google/data/storage/google_storage_bucket_objects.json +var dataGoogleStorageBucketObjects []byte + +//go:embed mapping/google/data/storage/google_storage_buckets.json +var dataGoogleStorageBuckets []byte + +//go:embed mapping/google/data/privateca/google_privateca_ca_pool_iam_policy.json +var dataGooglePrivatecaCaPoolIamPolicy []byte + +//go:embed mapping/google/data/privateca/google_privateca_certificate_authority.json +var dataGooglePrivatecaCertificateAuthority []byte + +//go:embed mapping/google/data/privateca/google_privateca_certificate_template_iam_policy.json +var dataGooglePrivatecaCertificateTemplateIamPolicy []byte + +//go:embed mapping/google/data/iam/google_project_iam_custom_role.json +var dataGoogleProjectIamCustomRole []byte + +//go:embed mapping/google/data/iam/google_project_iam_custom_roles.json +var dataGoogleProjectIamCustomRoles []byte + +//go:embed mapping/google/data/privilegedaccessmanager/google_privileged_access_manager_entitlement.json +var dataGooglePrivilegedAccessManagerEntitlement []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_docker_image.json +var dataGoogleArtifactRegistryDockerImage []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_locations.json +var dataGoogleArtifactRegistryLocations []byte + +//go:embed mapping/google/data/certificatemanager/google_certificate_manager_certificates.json +var dataGoogleCertificateManagerCertificates []byte + +//go:embed mapping/google/data/composer/google_composer_user_workloads_config_map.json +var dataGoogleComposerUserWorkloadsConfigMap []byte + +//go:embed mapping/google/data/composer/google_composer_user_workloads_secret.json +var dataGoogleComposerUserWorkloadsSecret []byte + +//go:embed mapping/google/data/iam.googleapis.com/google_iam_workload_identity_pool_iam_policy.json +var dataGoogleIamWorkloadIdentityPoolIamPolicy []byte + +//go:embed mapping/google/data/cloudkms/google_kms_key_handle.json +var dataGoogleKmsKeyHandle []byte + +//go:embed mapping/google/data/cloudkms/google_kms_key_handles.json +var dataGoogleKmsKeyHandles []byte + +//go:embed mapping/google/data/cloudkms/google_kms_key_rings.json +var dataGoogleKmsKeyRings []byte + +//go:embed mapping/google/data/parametermanager/google_parameter_manager_parameter.json +var dataGoogleParameterManagerParameter []byte + +//go:embed mapping/google/data/parametermanager/google_parameter_manager_parameter_version.json +var dataGoogleParameterManagerParameterVersion []byte + +//go:embed mapping/google/data/parametermanager/google_parameter_manager_parameter_version_render.json +var dataGoogleParameterManagerParameterVersionRender []byte + +//go:embed mapping/google/data/parametermanager/google_parameter_manager_parameters.json +var dataGoogleParameterManagerParameters []byte + +//go:embed mapping/google/data/parametermanager/google_parameter_manager_regional_parameter.json +var dataGoogleParameterManagerRegionalParameter []byte + +//go:embed mapping/google/data/parametermanager/google_parameter_manager_regional_parameter_version.json +var dataGoogleParameterManagerRegionalParameterVersion []byte + +//go:embed mapping/google/data/parametermanager/google_parameter_manager_regional_parameter_version_render.json +var dataGoogleParameterManagerRegionalParameterVersionRender []byte + +//go:embed mapping/google/data/parametermanager/google_parameter_manager_regional_parameters.json +var dataGoogleParameterManagerRegionalParameters []byte + +//go:embed mapping/google/data/cloudkms/google_kms_ekm_connection_iam_policy.json +var dataGoogleEkmConnectionIamPolicy []byte + +//go:embed mapping/google/data/oracledatabase/google_oracle_database_autonomous_database.json +var dataGoogleOracleDatabaseAutonomousDatabase []byte + +//go:embed mapping/google/data/oracledatabase/google_oracle_database_autonomous_databases.json +var dataGoogleOracleDatabaseAutonomousDatabases []byte + +//go:embed mapping/google/data/oracledatabase/google_oracle_database_cloud_exadata_infrastructure.json +var dataGoogleOracleDatabaseCloudExadataInfrastructure []byte + +//go:embed mapping/google/data/oracledatabase/google_oracle_database_cloud_exadata_infrastructures.json +var dataGoogleOracleDatabaseCloudExadataInfrastructures []byte + +//go:embed mapping/google/data/oracledatabase/google_oracle_database_cloud_vm_cluster.json +var dataGoogleOracleDatabaseCloudVMCluster []byte + +//go:embed mapping/google/data/oracledatabase/google_oracle_database_cloud_vm_clusters.json +var dataGoogleOracleDatabaseCloudVMClusters []byte + +//go:embed mapping/google/data/oracledatabase/google_oracle_database_db_nodes.json +var dataGoogleOracleDatabaseDBNodes []byte + +//go:embed mapping/google/data/oracledatabase/google_oracle_database_db_servers.json +var dataGoogleOracleDatabaseDBServers []byte + +//go:embed mapping/google/data/compute/google_compute_forwarding_rules.json +var dataGoogleComputeForwardingRules []byte + +//go:embed mapping/google/data/compute/google_compute_images.json +var dataGoogleComputeImages []byte + +//go:embed mapping/google/data/compute/google_compute_instance_guest_attributes.json +var dataGoogleComputeInstanceGuestAttributes []byte + +//go:embed mapping/google/data/compute/google_compute_instance_template_iam_policy.json +var dataGoogleComputeInstanceTemplateIamPolicy []byte + +//go:embed mapping/google/data/compute/google_compute_instant_snapshot_iam_policy.json +var dataGoogleComputeInstantSnapshotIamPolicy []byte + +//go:embed mapping/google/data/compute/google_compute_machine_types.json +var dataGoogleComputeMachineTypes []byte + +//go:embed mapping/google/data/compute/google_compute_region_backend_service.json +var dataGoogleComputeRegionBackendService []byte + +//go:embed mapping/google/data/compute/google_compute_region_instance_group_manager.json +var dataGoogleComputeRegionInstanceGroupManager []byte + +//go:embed mapping/google/data/compute/google_compute_security_policy.json +var dataGoogleComputeSecurityPolicy []byte + +//go:embed mapping/google/data/compute/google_compute_storage_pool_iam_policy.json +var dataGoogleComputeStoragePoolIamPolicy []byte + +//go:embed mapping/google/data/compute/google_compute_storage_pool_types.json +var dataGoogleComputeStoragePoolTypes []byte + +//go:embed mapping/google/data/compute/google_compute_subnetworks.json +var dataGoogleComputeSubnetworks []byte + +//go:embed mapping/google/data/alloydb/google_alloydb_cluster.json +var dataGoogleAlloydbCluster []byte + +//go:embed mapping/google/data/alloydb/google_alloydb_instance.json +var dataGoogleAlloydbInstance []byte + +//go:embed mapping/google/data/apphub/google_apphub_application.json +var dataGoogleApphubApplication []byte + +//go:embed mapping/google/data/apphub/google_apphub_discovered_service.json +var dataGoogleApphubDiscoveredService []byte + +//go:embed mapping/google/data/apphub/google_apphub_discovered_workload.json +var dataGoogleApphubDiscoveredWorkload []byte + +//go:embed mapping/google/data/backupdr/google_backup_dr_backup.json +var dataGoogleBackupDrBackup []byte + +//go:embed mapping/google/data/backupdr/google_backup_dr_backup_plan_association.json +var dataGoogleBackupDrPlanAssociation []byte + +//go:embed mapping/google/data/backupdr/google_backup_dr_backup_vault.json +var dataGoogleBackupDrBackupVault []byte + +//go:embed mapping/google/data/backupdr/google_backup_dr_data_source.json +var dataGoogleBackupDrDataSource []byte + +//go:embed mapping/google/data/beyondcorp/google_beyondcorp_application_iam_policy.json +var dataGoogleBeyondcorpApplicationIamPolicy []byte + +//go:embed mapping/google/data/beyondcorp/google_beyondcorp_security_gateway.json +var dataGoogleBeyondcorpSecurityGateway []byte + +//go:embed mapping/google/data/beyondcorp/google_beyondcorp_security_gateway_application_iam_policy.json +var dataGoogleBeyondcorpSecurityGatewayApplicationIamPolicy []byte + +//go:embed mapping/google/data/beyondcorp/google_beyondcorp_security_gateway_iam_policy.json +var dataGoogleBeyondcorpSecurityGatewayIamPolicy []byte + +//go:embed mapping/google/data/run/google_cloud_run_v2_worker_pool.json +var dataGoogleCloudRunV2WorkerPool []byte + +//go:embed mapping/google/data/run/google_cloud_run_v2_worker_pool_iam_policy.json +var dataGoogleCloudRunWorkerPoolIamPolicy []byte + +//go:embed mapping/google/data/clouddeploy/google_clouddeploy_custom_target_type_iam_policy.json +var dataGoogleClouddeployCustomTargetTypeIamPolicy []byte + +//go:embed mapping/google/data/clouddeploy/google_clouddeploy_delivery_pipeline_iam_policy.json +var dataGoogleClouddeployDeliveryPipelineIamPolicy []byte + +//go:embed mapping/google/data/clouddeploy/google_clouddeploy_target_iam_policy.json +var dataGoogleClouddeployTargetIamPolicy []byte + +//go:embed mapping/google/data/aiplatform/google_colab_runtime_template_iam_policy.json +var dataGoogleColabRuntimeTemplateIamPolicy []byte + +//go:embed mapping/google/data/gkemulticloud/google_container_attached_install_manifest.json +var dataGoogleContainerAttachedInstallManifest []byte + +//go:embed mapping/google/data/gkemulticloud/google_container_aws_versions.json +var dataGoogleContainerAwsVersions []byte + +//go:embed mapping/google/data/gkemulticloud/google_container_azure_versions.json +var dataGoogleContainerAzureVersions []byte + +//go:embed mapping/google/data/dataplex/google_dataplex_aspect_type_iam_policy.json +var dataGoogleDataplexAspectTypeIamPolicy []byte + +//go:embed mapping/google/data/dataplex/google_dataplex_entry_group_iam_policy.json +var dataGoogleDataplexEntryGroupIamPolicy []byte + +//go:embed mapping/google/data/dataplex/google_dataplex_entry_type_iam_policy.json +var dataGoogleDataplexEntryTypeIamPolicy []byte + +//go:embed mapping/google/data/dataplex/google_dataplex_glossary_iam_policy.json +var dataGoogleDataplexGlossaryIamPolicy []byte + +//go:embed mapping/google/data/metastore/google_dataproc_metastore_database_iam_policy.json +var dataGoogleDataprocMetastoreDatabaseIamPolicy []byte + +//go:embed mapping/google/data/metastore/google_dataproc_metastore_table_iam_policy.json +var dataGoogleDataprocMetastoreTableIamPolicy []byte + +//go:embed mapping/google/data/resourcemanager/google_folder.json +var dataGoogleFolder []byte + +//go:embed mapping/google/data/resourcemanager/google_folder_iam_policy.json +var dataGoogleFolderIamPolicy []byte + +//go:embed mapping/google/data/resourcemanager/google_folders.json +var dataGoogleFolders []byte + +//go:embed mapping/google/data/cloudaicompanion/google_gemini_repository_group_iam_policy.json +var dataGoogleGeminiRepositoryGroupIamPolicy []byte + +//go:embed mapping/google/data/gkehub/google_gke_hub_feature.json +var dataGoogleGkeHubFeature []byte + +//go:embed mapping/google/data/gkehub/google_gke_hub_membership.json +var dataGoogleGkeHubMembership []byte + +//go:embed mapping/google/data/iap/google_iap_tunnel_dest_group_iam_policy.json +var dataGoogleIapTunnelDestGroupIamPolicy []byte + +//go:embed mapping/google/data/iap/google_iap_web_cloud_run_service_iam_policy.json +var dataGoogleIapWebCloudRunServiceIamPolicy []byte + +//go:embed mapping/google/data/lustre/google_lustre_instance.json +var dataGoogleLustreInstance []byte + +//go:embed mapping/google/data/memcache/google_memcache_instance.json +var dataGoogleMemcacheInstance []byte + +//go:embed mapping/google/data/memorystore/google_memorystore_instance.json +var dataGoogleMemorystoreInstance []byte + +//go:embed mapping/google/data/orgpolicy/google_project_organization_policy.json +var dataGoogleProjectOrganizationPolicy []byte + +//go:embed mapping/google/data/resourcemanager/google_organization_iam_policy.json +var dataGoogleOrganizationIamPolicy []byte + +//go:embed mapping/google/data/resourcemanager/google_project_iam_policy.json +var dataGoogleProjectIamPolicy []byte + +//go:embed mapping/google/data/runtimeconfig/google_runtimeconfig_config_iam_policy.json +var dataGoogleRuntimeconfigConfigIamPolicy []byte + +//go:embed mapping/google/data/securitycenter/google_scc_source_iam_policy.json +var dataGoogleSccSourceIamPolicy []byte + +//go:embed mapping/google/data/securitycenter/google_scc_v2_organization_source_iam_policy.json +var dataGoogleSccV2OrganizationSourceIamPolicy []byte + +//go:embed mapping/google/data/securesourcemanager/google_secure_source_manager_instance_iam_policy.json +var dataGoogleSecureSourceManagerInstanceIamPolicy []byte + +//go:embed mapping/google/data/securesourcemanager/google_secure_source_manager_repository_iam_policy.json +var dataGoogleSecureSourceManagerRepositoryIamPolicy []byte + +//go:embed mapping/google/data/resourcemanager/google_tags_tag_key_iam_policy.json +var dataGoogleTagsTagKeyIamPolicy []byte + +//go:embed mapping/google/data/aiplatform/google_vertex_ai_feature_group_iam_policy.json +var dataGoogleVertexAiFeatureGroupIamPolicy []byte + +//go:embed mapping/google/data/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_policy.json +var dataGoogleVertexAiFeatureOnlineStoreFeatureviewIamPolicy []byte + +//go:embed mapping/google/data/tags/google_tags_tag_value_iam_policy.json +var dataGoogleTagsTagValueIamPolicy []byte + +//go:embed mapping/google/data/aiplatform/google_vertex_ai_feature_online_store_iam_policy.json +var dataGoogleVertexAiFeatureOnlineStoreIamPolicy []byte + +//go:embed mapping/google/data/resourcemanager/google_tags_tag_keys.json +var dataGoogleTagsTagKeys []byte + +//go:embed mapping/google/data/resourcemanager/google_tags_tag_value.json +var dataGoogleTagsTagValue []byte + +//go:embed mapping/google/data/resourcemanager/google_tags_tag_values.json +var dataGoogleTagsTagValues []byte + +//go:embed mapping/google/data/storage/google_storage_control_folder_intelligence_config.json +var dataGoogleStorageControlFolderIntelligenceConfig []byte + +//go:embed mapping/google/data/storage/google_storage_control_organization_intelligence_config.json +var dataGoogleStorageControlOrganizationIntelligenceConfig []byte + +//go:embed mapping/google/data/storage/google_storage_control_project_intelligence_config.json +var dataGoogleStorageControlProjectIntelligenceConfig []byte + +//go:embed mapping/google/resource/runtimeconfig/google_runtimeconfig_config.json +var dataGoogleRuntimeconfigConfig []byte + +//go:embed mapping/google/resource/runtimeconfig/google_runtimeconfig_variable.json +var dataGoogleRuntimeconfigVariable []byte + +//go:embed mapping/google/data/redis/google_redis_cluster.json +var dataGoogleRedisCluster []byte + +//go:embed mapping/google/data/resourcemanager/google_project_ancestry.json +var dataGoogleProjectAncestry []byte + +//go:embed mapping/google/data/dns/google_dns_managed_zones.json +var dataGoogleDNSManagedZones []byte + +//go:embed mapping/google/data/accesscontextmanager/google_access_context_manager_access_policy.json +var dataGoogleAccessContextManagerAccessPolicy []byte + +//go:embed mapping/google/data/dataplex/google_dataplex_data_quality_rules.json +var dataGoogleDataplexDataQualityRules []byte + +//go:embed mapping/google/data/iam/google_organization_iam_custom_role.json +var dataGoogleOrganizationIamCustomRole []byte + +//go:embed mapping/google/data/iam/google_organization_iam_custom_roles.json +var dataGoogleOrganizationIamCustomRoles []byte + +//go:embed mapping/google/data/compute/google_compute_network_attachment.json +var dataGoogleComputeNetworkAttachment []byte + +//go:embed mapping/google/data/storageinsights/google_storage_insights_dataset_config.json +var dataGoogleStorageInsightsDatasetConfig []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_docker_images.json +var dataGoogleArtifactRegistryDockerImages []byte + +//go:embed mapping/google/data/iam.googleapis.com/google_iam_workforce_pool_iam_policy.json +var dataGoogleIamWorkforcePoolIamPolicy []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_repositories.json +var dataGoogleArtifactRegistryRepositories []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_version.json +var dataGoogleArtifactRegistryVersion []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_versions.json +var dataGoogleArtifactRegistryVersions []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_npm_package.json +var dataGoogleArtifactRegistryNpmPackage []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_tags.json +var dataGoogleArtifactRegistryTags []byte + +//go:embed mapping/google/data/iap/google_iap_web_region_forwarding_rule_service_iam_policy.json +var dataGoogleIapWebRegionForwardingRuleServiceIamPolicy []byte + +//go:embed mapping/google/data/certificatemanager/google_certificate_manager_dns_authorization.json +var dataGoogleCertificateManagerDnsAuthorization []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_python_package.json +var dataGoogleArtifactRegistryPythonPackage []byte + +//go:embed mapping/google/data/backupdr/google_backup_dr_backup_plan_associations.json +var dataGoogleBackupDrPlanAssociations []byte + +//go:embed mapping/google/data/backupdr/google_backup_dr_data_source_reference.json +var dataGoogleBackupDrDataSourceReference []byte + +//go:embed mapping/google/data/backupdr/google_backup_dr_data_source_references.json +var dataGoogleBackupDrDataSourceReferences []byte + +//go:embed mapping/google/data/bigquery/google_bigquery_datapolicyv2_data_policy_iam_policy.json +var dataGoogleBigqueryDatapolicyv2DataPolicyIamPolicy []byte + +//go:embed mapping/google/data/iap/google_iap_web_forwarding_rule_service_iam_policy.json +var dataGoogleIapForwardingRuleServiceIamPolicy []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_maven_artifact.json +var dataGoogleArtifactRegistryMavenArtifact []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_maven_artifacts.json +var dataGoogleArtifactRegistryMavenArtifacts []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_npm_packages.json +var dataGoogleArtifactRegistryNpmPackages []byte + +//go:embed mapping/google/data/compute/google_compute_interconnect_location.json +var dataGoogleComputeInterconnectLocation []byte + +//go:embed mapping/google/data/compute/google_compute_interconnect_locations.json +var dataGoogleComputeInterconnectLocations []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_packages.json +var dataGoogleArtifactRegistryPackages []byte diff --git a/src/gcp.go b/src/gcp.go index f9e1e7af..4193c863 100644 --- a/src/gcp.go +++ b/src/gcp.go @@ -20,7 +20,7 @@ func (m invalidPermissionMapError) Error() string { // getGCPPermissions for GCP resources. func getGCPPermissions(result ResourceV2) ([]string, error) { - if result.TypeName == resource { + if result.TypeName == resource || result.TypeName == "terraform" { return getGCPResourcePermissions(result) } @@ -51,202 +51,794 @@ func GCPLookup(result string) interface{} { } var gCPTfLookup = map[string]interface{}{ - "google_access_context_manager_access_level": googleAccessContextManagerAccessLevel, - "google_access_context_manager_access_levels": googleAccessContextManagerAccessLevels, - "google_access_context_manager_access_policy": googleAccessContextManagerAccessPolicy, - "google_access_context_manager_access_policy_iam_binding": googleAccessContextManagerAccessPolicyIam, - "google_access_context_manager_access_policy_iam_member": googleAccessContextManagerAccessPolicyIam, - "google_access_context_manager_access_policy_iam_policy": googleAccessContextManagerAccessPolicyIam, - "google_access_context_manager_authorized_orgs_desc": googleAccessContextManagerAuthorizedOrgsDesc, - "google_access_context_manager_gcp_user_access_binding": googleAccessContextManagerGcpUserAccessBinding, - "google_access_context_manager_service_perimeter": googleAccessContextManagerServicePerimeter, - "google_access_context_manager_service_perimeters": googleAccessContextManagerServicePerimeters, - "google_alloydb_backup": googleAlloydbBackup, - "google_alloydb_cluster": googleAlloydbCluster, - "google_alloydb_instance": googleAlloydbInstance, - "google_alloydb_user": googleAlloydbUser, - "google_api_gateway_api": googleAPIGatewayAPI, - "google_api_gateway_api_config": googleAPIGatewayAPIConfig, - "google_api_gateway_api_config_iam_binding": googleAPIGatewayAPIConfigIam, - "google_api_gateway_api_config_iam_member": googleAPIGatewayAPIConfigIam, - "google_api_gateway_api_config_iam_policy": googleAPIGatewayAPIConfigIam, - "google_api_gateway_api_iam_binding": googleAPIGatewayAPIIam, - "google_api_gateway_api_iam_member": googleAPIGatewayAPIIam, - "google_api_gateway_api_iam_policy": googleAPIGatewayAPIIam, - "google_api_gateway_gateway": googleAPIGatewayGateway, - "google_api_gateway_gateway_iam_binding": googleAPIGatewayGatewayIam, - "google_api_gateway_gateway_iam_member": googleAPIGatewayGatewayIam, - "google_api_gateway_gateway_iam_policy": googleAPIGatewayGatewayIam, - "google_artifact_registry_repository": googleArtifactRegistryRepository, - "google_artifact_registry_repository_iam_binding": googleArtifactRegistryRepositoryIamBinding, - "google_artifact_registry_repository_iam_member": googleArtifactRegistryRepositoryIamMember, - "google_artifact_registry_repository_iam_policy": googleArtifactRegistryRepositoryIamPolicy, - "google_bigquery_dataset": googleBigqueryDataset, - "google_bigquery_job": googleBigqueryJob, - "google_bigquery_table": googleBigQueryTable, - "google_bigtable_app_profile": googleBigtableAppProfile, - "google_bigtable_gc_policy": googleBigtableGcPolicy, - "google_bigtable_instance": googleBigtableInstance, - "google_bigtable_instance_iam_binding": googleBigTableInstanceIam, - "google_bigtable_instance_iam_member": googleBigTableInstanceIam, - "google_bigtable_instance_iam_policy": googleBigTableInstanceIam, - "google_bigtable_table": googleBigtableTable, - "google_bigtable_table_iam_binding": googleBigTableTableIam, - "google_bigtable_table_iam_member": googleBigTableTableIam, - "google_bigtable_table_iam_policy": googleBigTableTableIam, - "google_cloud_run_v2_job": googleCloudRunV2Job, - "google_cloud_run_v2_job_iam_binding": googleCloudRunV2JobIam, - "google_cloud_run_v2_job_iam_member": googleCloudRunV2JobIam, - "google_cloud_run_v2_job_iam_policy": googleCloudRunV2JobIam, - "google_cloud_run_v2_service": googleCloudRunV2Service, - "google_cloud_run_v2_service_iam_binding": googleCloudRunV2ServiceIam, - "google_cloud_run_v2_service_iam_member": googleCloudRunV2ServiceIam, - "google_cloud_run_v2_service_iam_policy": googleCloudRunV2ServiceIam, - "google_cloud_scheduler_job": googleCloudSchedulerJob, - "google_cloudbuild_trigger": googleCloudbuildTrigger, - "google_cloudfunctions_function": googleCloudfunctionsFunction, - "google_cloudfunctions_function_iam_member": googleCloudfunctionsFunctionIamPolicy, - "google_cloudfunctions_function_iam_policy": googleCloudfunctionsFunctionIamPolicy, - "google_compute_address": googleComputeAddress, - "google_compute_firewall": googleComputeFirewall, - "google_compute_global_address": googleComputeGlobalAddress, - "google_compute_instance": googleComputeInstance, - "google_compute_instance_template": googleComputeInstanceTemplate, - "google_compute_network": googleComputeNetwork, - "google_compute_project_metadata_item": googleComputeProjectMetadataItem, - "google_compute_region_ssl_certificate": googleComputeRegionSslCertificate, - "google_compute_security_policy": googleComputeSecurityPolicy, - "google_compute_subnetwork": googleComputeSubnetwork, - "google_container_cluster": googleContainerCluster, - "google_container_node_pool": googleContainerNodePool, - "google_dns_managed_zone": googleDnsmanagedZone, - "google_dns_policy": googleDNSPolicy, - "google_dns_record_set": googleDNSRecordSet, - "google_firebase_android_app": googleFirebaseAndroidApp, - "google_firebase_apple_app": googleFirebaseAppleApp, - "google_firebase_database_instance": googleFirebaseDatabaseInstance, - "google_firebase_hosting_channel": googleFirebaseHostingSite, - "google_firebase_hosting_custom_domain": googleFirebaseHostingSite, - "google_firebase_hosting_release": googleFirebaseHostingSite, - "google_firebase_hosting_site": googleFirebaseHostingSite, - "google_firebase_hosting_version": googleFirebaseHostingSite, - "google_firebase_project": googleFirebaseProject, - "google_firebase_storage_bucket": googleFirebaseStorageBucket, - "google_firebase_web_app": googleFirebaseWebApp, - "google_firebaserules_release": googleFirebaserulesRelease, - "google_firebaserules_ruleset": googleFirebaserulesRuleset, - "google_kms_crypto_key": googleKmsCryptoKey, - "google_kms_crypto_key_iam_binding": googlekmsCryptoKeyIamBinding, - "google_kms_crypto_key_iam_member": googlekmsCryptoKeyIamMember, - "google_kms_crypto_key_iam_policy": googlekmsCryptoKeyIamPolicy, - "google_kms_key_ring": googleKmsKeyRing, - "google_project_iam_binding": googleProjectIamBinding, - "google_project_iam_custom_role": googleProjectIamCustomRole, - "google_project_iam_member": googleProjectIamBinding, - "google_project_service": googleProjectService, - "google_project_service_identity": placeholder, - "google_pubsub_lite_reservation": googlePubsubLiteReservation, - "google_pubsub_lite_subscription": googlePubsubLiteSubscription, - "google_pubsub_lite_topic": googlePubsubLiteTopic, - "google_pubsub_schema": googlePubsubSchema, - "google_pubsub_subscription": googlePubsubSubscription, - "google_pubsub_topic": googlePubsubTopic, - "google_pubsub_topic_iam_binding": googlePubsubTopicIam, - "google_pubsub_topic_iam_member": googlePubsubTopicIam, - "google_pubsub_topic_iam_policy": googlePubsubTopicIam, - "google_redis_instance": googleRedisInstance, - "google_secret_manager_secret": googleSecretManagerSecret, - "google_secret_manager_secret_iam_binding": googleSecretManagerSecretIam, - "google_secret_manager_secret_iam_member": googleSecretManagerSecretIam, - "google_secret_manager_secret_iam_policy": googleSecretManagerSecretIam, - "google_secret_manager_secret_version": googleSecretManagerSecretVersion, - "google_service_account": googleServiceAccount, - "google_service_account_iam_binding": googleServiceAccountIamBinding, - "google_service_account_iam_member": googleServiceAccountIamMember, - "google_service_account_iam_policy": googleServiceAccountIamPolicy, - "google_service_account_key": googleServiceAccountKey, - "google_service_directory_endpoint": googleServiceDirectoryEndpoint, - "google_service_directory_namespace": googleServiceDirectoryNamespace, - "google_service_directory_namespace_iam_binding": googleServiceDirectoryNamespaceIamBinding, - "google_service_directory_namespace_iam_member": googleServiceDirectoryNamespaceIamMember, - "google_service_directory_namespace_iam_policy": googleServiceDirectoryNamespaceIamPolicy, - "google_service_directory_service": googleServiceDirectoryService, - "google_service_directory_service_iam_binding": googleServiceDirectoryServiceIamBinding, - "google_service_directory_service_iam_member": googleServiceDirectoryServiceIamMember, - "google_service_directory_service_iam_policy": googleServiceDirectoryServiceIamPolicy, - "google_service_networking_connection": googleServiceNetworkingConnection, - "google_sourcerepo_repository": googleSourcerepoRepository, - "google_spanner_database": googleSpannerDatabase, - "google_spanner_database_iam_binding": googleSpannerDatabaseIam, - "google_spanner_database_iam_member": googleSpannerDatabaseIam, - "google_spanner_database_iam_policy": googleSpannerDatabaseIam, - "google_spanner_instance": googleSpannerInstance, - "google_spanner_instance_iam_binding": googleSpannerInstanceIam, - "google_spanner_instance_iam_member": googleSpannerInstanceIam, - "google_spanner_instance_iam_policy": googleSpannerInstanceIam, - "google_sql_database": googleSQLDatabase, - "google_sql_database_instance": googleSQLDatabaseInstance, - "google_sql_user": googleSQLUser, - "google_storage_bucket": googleStorageBucket, - "google_storage_bucket_access_control": googleStorageBucketAccessControl, - "google_storage_bucket_acl": googleStorageBucketACL, - "google_storage_bucket_iam_binding": googleStorageBucketIamBinding, - "google_storage_bucket_iam_member": googleStorageBucketIamMember, - "google_storage_bucket_iam_policy": googleStorageBucketIamPolicy, - "google_storage_bucket_object": googleStorageBucketObject, - "google_storage_default_object_access_control": googleStorageDefaultObjectAccessControl, - "google_storage_default_object_acl": googleStorageDefaultObjectACL, - "google_storage_hmac_key": googleStorageHmacKey, - "google_storage_insights_report_config": googleStorageInsightsReportConfig, - "google_storage_object_access_control": googleStorageObjectAccessControl, - "google_vertex_ai_dataset": googleVertexAiDataset, - "google_vertex_ai_endpoint": googleVertexAiEndpoint, - "google_vertex_ai_endpoint_iam_binding": googleVertexAiEndpointIam, - "google_vertex_ai_endpoint_iam_member": googleVertexAiEndpointIam, - "google_vertex_ai_endpoint_iam_policy": googleVertexAiEndpointIam, - "google_vertex_ai_feature_group": googleVertexAiFeatureGroup, - "google_vertex_ai_feature_group_feature": googleVertexAiFeatureGroupFeature, - "google_vertex_ai_feature_online_store": googleVertexAiFeatureOnlineStore, - "google_vertex_ai_feature_online_store_featureview": googleVertexAiFeatureOnlineStoreFeatureview, - "google_vertex_ai_featurestore": googleVertexAiFeaturestore, - "google_vertex_ai_featurestore_entitytype": googleVertexAiFeaturestoreEntitytype, - "google_vertex_ai_featurestore_entitytype_feature": googleVertexAiFeaturestoreEntitytypeFeature, - "google_vertex_ai_featurestore_entitytype_iam_binding": googleVertexAiFeaturestoreEntitytypeIam, - "google_vertex_ai_featurestore_entitytype_iam_member": googleVertexAiFeaturestoreEntitytypeIam, - "google_vertex_ai_featurestore_entitytype_iam_policy": googleVertexAiFeaturestoreEntitytypeIam, - "google_vertex_ai_featurestore_iam_binding": googleVertexAiFeaturestoreIam, - "google_vertex_ai_featurestore_iam_member": googleVertexAiFeaturestoreIam, - "google_vertex_ai_featurestore_iam_policy": googleVertexAiFeaturestoreIam, - "google_vertex_ai_index": googleVertexAiIndex, - "google_vertex_ai_index_endpoint": googleVertexAiIndexEndpoint, - "google_vertex_ai_metadata_store": googleVertexAiMetadataStore, - "google_vertex_ai_tensorboard": googleVertexAiTensorboard, - "google_bigquery_analytics_hub_data_exchange": googleBigqueryAnalyticsHubDataExchange, - "google_bigquery_analytics_hub_data_exchange_iam_binding": googleBigqueryAnalyticsHubDataExchangeIam, - "google_bigquery_analytics_hub_data_exchange_iam_member": googleBigqueryAnalyticsHubDataExchangeIam, - "google_bigquery_analytics_hub_data_exchange_iam_policy": googleBigqueryAnalyticsHubDataExchangeIam, - "google_bigquery_analytics_hub_listing": googleBigqueryAnalyticsHubListing, - "google_bigquery_analytics_hub_listing_iam_binding": googleBigqueryAnalyticsHubListingIam, - "google_bigquery_analytics_hub_listing_iam_member": googleBigqueryAnalyticsHubListingIam, - "google_bigquery_analytics_hub_listing_iam_policy": googleBigqueryAnalyticsHubListingIam, - "google_bigquery_bi_reservation": googleBigqueryBiReservation, - "google_bigquery_capacity_commitment": googleBigqueryCapacityCommitment, - "google_bigquery_connection": googleBigqueryConnection, - "google_bigquery_connection_iam_binding": googleBigqueryConnectionIam, - "google_bigquery_connection_iam_member": googleBigqueryConnectionIam, - "google_bigquery_connection_iam_policy": googleBigqueryConnectionIam, - "google_bigquery_data_transfer_config": googleBigqueryDataTransferConfig, - "google_bigquery_dataset_iam_binding": googleBigqueryDatasetIam, - "google_bigquery_dataset_iam_member": googleBigqueryDatasetIam, - "google_bigquery_dataset_iam_policy": googleBigqueryDatasetIam, - "google_bigquery_reservation": googleBigqueryReservation, - "google_bigquery_reservation_assignment": googleBigqueryReservationAssignment, - "google_bigquery_routine": googleBigqueryRoutine, - "google_bigquery_table_iam_binding": googleBigqueryTableIam, - "google_bigquery_table_iam_member": googleBigqueryTableIam, - "google_bigquery_table_iam_policy": googleBigqueryTableIam, - "google_composer_environment": googleComposerEnvironment, - "google_iam_workload_identity_pool": googleIamWorkloadIdentityPool, - "google_iam_workload_identity_pool_provider": googleIamWorkloadIdentityPoolProvider, - "google_project_iam_audit_config": googleProjectIamAuditConfig, + "backend": gcsBackend, + + "google_access_context_manager_access_level": googleAccessContextManagerAccessLevel, + "google_access_context_manager_access_levels": googleAccessContextManagerAccessLevels, + "google_access_context_manager_access_policy": googleAccessContextManagerAccessPolicy, + "google_access_context_manager_access_policy_iam_binding": googleAccessContextManagerAccessPolicyIam, + "google_access_context_manager_access_policy_iam_member": googleAccessContextManagerAccessPolicyIam, + "google_access_context_manager_access_policy_iam_policy": googleAccessContextManagerAccessPolicyIam, + "google_access_context_manager_authorized_orgs_desc": googleAccessContextManagerAuthorizedOrgsDesc, + "google_access_context_manager_gcp_user_access_binding": googleAccessContextManagerGcpUserAccessBinding, + "google_access_context_manager_service_perimeter": googleAccessContextManagerServicePerimeter, + "google_access_context_manager_service_perimeters": googleAccessContextManagerServicePerimeters, + "google_alloydb_backup": googleAlloydbBackup, + "google_alloydb_cluster": googleAlloydbCluster, + "google_alloydb_instance": googleAlloydbInstance, + "google_alloydb_user": googleAlloydbUser, + "google_api_gateway_api": googleAPIGatewayAPI, + "google_api_gateway_api_config": googleAPIGatewayAPIConfig, + "google_api_gateway_api_config_iam_binding": googleAPIGatewayAPIConfigIam, + "google_api_gateway_api_config_iam_member": googleAPIGatewayAPIConfigIam, + "google_api_gateway_api_config_iam_policy": googleAPIGatewayAPIConfigIam, + "google_api_gateway_api_iam_binding": googleAPIGatewayAPIIam, + "google_api_gateway_api_iam_member": googleAPIGatewayAPIIam, + "google_api_gateway_api_iam_policy": googleAPIGatewayAPIIam, + "google_api_gateway_gateway": googleAPIGatewayGateway, + "google_api_gateway_gateway_iam_binding": googleAPIGatewayGatewayIam, + "google_api_gateway_gateway_iam_member": googleAPIGatewayGatewayIam, + "google_api_gateway_gateway_iam_policy": googleAPIGatewayGatewayIam, + "google_apigee_environment_iam_binding": googleApigeeEnvironmentIamBinding, + "google_apigee_environment_iam_member": googleApigeeEnvironmentIamMember, + "google_apigee_environment_iam_policy": googleApigeeEnvironmentIamPolicy, + "google_apihub_api_hub_instance": googleApihubInstance, + "google_apihub_curation": googleApihubCuration, + "google_apihub_host_project_registration": googleApihubHostProjectRegistration, + "google_apihub_plugin": googleApihubPlugin, + "google_apihub_plugin_instance": googleApihubPluginInstance, + "google_apphub_application": googleApphubApplication, + "google_apphub_service": googleApphubService, + "google_apphub_service_project_attachment": googleApphubServiceProjectAttachment, + "google_apphub_workload": googleApphubWorkload, + "google_artifact_registry_repository": googleArtifactRegistryRepository, + "google_artifact_registry_repository_iam_binding": googleArtifactRegistryRepositoryIamBinding, + "google_artifact_registry_repository_iam_member": googleArtifactRegistryRepositoryIamMember, + "google_artifact_registry_repository_iam_policy": googleArtifactRegistryRepositoryIamPolicy, + "google_backup_dr_backup_plan": googleBackupDRBackupPlan, + "google_backup_dr_backup_plan_association": googleBackupDRBackupPlanAssociation, + "google_backup_dr_backup_vault": googleBackupDRBackupVault, + "google_backup_dr_management_server": googleBackupDRManagementServer, + "google_backup_dr_service_config": googleBackupDRServiceConfig, + "google_beyondcorp_app_connection": googleBeyondcorpAppConnection, + "google_beyondcorp_app_connector": googleBeyondcorpAppConnector, + "google_beyondcorp_app_gateway": googleBeyondcorpAppGateway, + "google_beyondcorp_application": googleBeyondcorpApplication, + "google_beyondcorp_application_iam_binding": googleBeyondcorpApplicationIamBinding, + "google_beyondcorp_application_iam_member": googleBeyondcorpApplicationIamMember, + "google_beyondcorp_application_iam_policy": googleBeyondcorpApplicationIamPolicy, + "google_beyondcorp_security_gateway": googleBeyondcorpSecurityGateway, + "google_beyondcorp_security_gateway_application": googleBeyondcorpSecurityGatewayApplication, + "google_beyondcorp_security_gateway_application_iam_binding": googleBeyondcorpSecurityGatewayApplicationIamBinding, + "google_beyondcorp_security_gateway_application_iam_member": googleBeyondcorpSecurityGatewayApplicationIamMember, + "google_beyondcorp_security_gateway_application_iam_policy": googleBeyondcorpSecurityGatewayApplicationIamPolicy, + "google_beyondcorp_security_gateway_iam_binding": googleBeyondcorpSecurityGatewayIamBinding, + "google_beyondcorp_security_gateway_iam_member": googleBeyondcorpSecurityGatewayIamMember, + "google_beyondcorp_security_gateway_iam_policy": googleBeyondcorpSecurityGatewayIamPolicy, + "google_biglake_catalog": googleBiglakeCatalog, + "google_biglake_database": googleBiglakeDatabase, + "google_biglake_table": googleBiglakeTable, + "google_bigquery_analytics_hub_data_exchange": googleBigqueryAnalyticsHubDataExchange, + "google_bigquery_analytics_hub_data_exchange_iam_binding": googleBigqueryAnalyticsHubDataExchangeIam, + "google_bigquery_analytics_hub_data_exchange_iam_member": googleBigqueryAnalyticsHubDataExchangeIam, + "google_bigquery_analytics_hub_data_exchange_iam_policy": googleBigqueryAnalyticsHubDataExchangeIam, + "google_bigquery_analytics_hub_listing": googleBigqueryAnalyticsHubListing, + "google_bigquery_analytics_hub_listing_iam_binding": googleBigqueryAnalyticsHubListingIam, + "google_bigquery_analytics_hub_listing_iam_member": googleBigqueryAnalyticsHubListingIam, + "google_bigquery_analytics_hub_listing_iam_policy": googleBigqueryAnalyticsHubListingIam, + "google_bigquery_analytics_hub_listing_subscription": googleBigqueryAnalyticsHubListingSubscription, + "google_bigquery_bi_reservation": googleBigqueryBiReservation, + "google_bigquery_capacity_commitment": googleBigqueryCapacityCommitment, + "google_bigquery_connection": googleBigqueryConnection, + "google_bigquery_connection_iam_binding": googleBigqueryConnectionIam, + "google_bigquery_connection_iam_member": googleBigqueryConnectionIam, + "google_bigquery_connection_iam_policy": googleBigqueryConnectionIam, + "google_bigquery_data_transfer_config": googleBigqueryDataTransferConfig, + "google_bigquery_datapolicy_data_policy": googleBigqueryDatapolicyDataPolicy, + "google_bigquery_datapolicy_data_policy_iam_binding": googleBigqueryDatapolicyDataPolicyIamBinding, + "google_bigquery_datapolicy_data_policy_iam_member": googleBigqueryDatapolicyDataPolicyIamMember, + "google_bigquery_datapolicy_data_policy_iam_policy": googleBigqueryDatapolicyDataPolicyIamPolicy, + "google_bigquery_dataset": googleBigqueryDataset, + "google_bigquery_dataset_access": googleBigqueryDatasetAccess, + "google_bigquery_dataset_iam_binding": googleBigqueryDatasetIam, + "google_bigquery_dataset_iam_member": googleBigqueryDatasetIam, + "google_bigquery_dataset_iam_policy": googleBigqueryDatasetIam, + "google_bigquery_job": googleBigqueryJob, + "google_bigquery_reservation": googleBigqueryReservation, + "google_bigquery_reservation_assignment": googleBigqueryReservationAssignment, + "google_bigquery_routine": googleBigqueryRoutine, + "google_bigquery_row_access_policy": googleBigqueryRowAccessPolicy, + "google_bigquery_table": googleBigQueryTable, + "google_bigquery_table_iam_binding": googleBigqueryTableIam, + "google_bigquery_table_iam_member": googleBigqueryTableIam, + "google_bigquery_table_iam_policy": googleBigqueryTableIam, + "google_bigtable_app_profile": googleBigtableAppProfile, + "google_bigtable_authorized_view": googleBigtableAuthorizedView, + "google_bigtable_gc_policy": googleBigtableGcPolicy, + "google_bigtable_instance": googleBigtableInstance, + "google_bigtable_instance_iam_binding": googleBigTableInstanceIam, + "google_bigtable_instance_iam_member": googleBigTableInstanceIam, + "google_bigtable_instance_iam_policy": googleBigTableInstanceIam, + "google_bigtable_logical_view": googleBigtableLogicalView, + "google_bigtable_materialized_view": googleBigtableMaterializedView, + "google_bigtable_schema_bundle": googleBigtableSchemaBundle, + "google_bigtable_table": googleBigtableTable, + "google_bigtable_table_iam_binding": googleBigTableTableIam, + "google_bigtable_table_iam_member": googleBigTableTableIam, + "google_bigtable_table_iam_policy": googleBigTableTableIam, + "google_billing_account_iam_binding": googleBillingAccountIamBinding, + "google_billing_account_iam_member": googleBillingAccountIamMember, + "google_billing_account_iam_policy": googleBillingAccountIamPolicy, + "google_billing_budget": googleBillingBudget, + "google_billing_project_info": googleBillingProjectInfo, + "google_binary_authorization_attestor_iam_binding": googleBinaryAuthorizationAttestorIamBinding, + "google_binary_authorization_attestor_iam_member": googleBinaryAuthorizationAttestorIamMember, + "google_binary_authorization_attestor_iam_policy": googleBinaryAuthorizationAttestorIamPolicy, + "google_chronicle_data_access_label": googleChronicleDataAccessLabel, + "google_chronicle_data_access_scope": googleChronicleDataAccessScope, + "google_chronicle_reference_list": googleChronicleReferenceList, + "google_chronicle_retrohunt": googleChronicleRetrohunt, + "google_chronicle_rule": googleChronicleRule, + "google_chronicle_rule_deployment": googleChronicleRuleDeployment, + "google_chronicle_watchlist": googleChronicleWatchlist, + "google_cloud_run_domain_mapping": googleCloudRunDomainMapping, + "google_cloud_run_service": googleCloudRunService, + "google_cloud_run_service_iam_binding": googleCloudRunServiceIamBinding, + "google_cloud_run_service_iam_member": googleCloudRunServiceIamMember, + "google_cloud_run_service_iam_policy": googleCloudRunServiceIamPolicy, + "google_cloud_run_v2_job": googleCloudRunV2Job, + "google_cloud_run_v2_job_iam_binding": googleCloudRunV2JobIam, + "google_cloud_run_v2_job_iam_member": googleCloudRunV2JobIam, + "google_cloud_run_v2_job_iam_policy": googleCloudRunV2JobIam, + "google_cloud_run_v2_service": googleCloudRunV2Service, + "google_cloud_run_v2_service_iam_binding": googleCloudRunV2ServiceIam, + "google_cloud_run_v2_service_iam_member": googleCloudRunV2ServiceIam, + "google_cloud_run_v2_service_iam_policy": googleCloudRunV2ServiceIam, + "google_cloud_run_v2_worker_pool": googleCloudRunV2WorkerPool, + "google_cloud_run_v2_worker_pool_iam_binding": googleCloudRunV2WorkerPoolIamBinding, + "google_cloud_run_v2_worker_pool_iam_member": googleCloudRunV2WorkerPoolIamMember, + "google_cloud_run_v2_worker_pool_iam_policy": googleCloudRunV2WorkerPoolIamPolicy, + "google_cloud_scheduler_job": googleCloudSchedulerJob, + "google_cloud_tasks_queue_iam_binding": googleCloudTasksQueueIamBinding, + "google_cloud_tasks_queue_iam_member": googleCloudTasksQueueIamMember, + "google_cloud_tasks_queue_iam_policy": googleCloudTasksQueueIamPolicy, + "google_cloudbuild_trigger": googleCloudbuildTrigger, + "google_cloudbuildv2_connection": googleCloudbuildv2Connection, + "google_cloudbuildv2_connection_iam_binding": googleCloudbuildv2ConnectionIamBinding, + "google_cloudbuildv2_connection_iam_member": googleCloudbuildv2ConnectionIamMember, + "google_cloudbuildv2_connection_iam_policy": googleCloudbuildv2ConnectionIamPolicy, + "google_cloudbuildv2_repository": googleCloudbuildv2Repository, + "google_clouddeploy_custom_target_type_iam_binding": googleClouddeployCustomTargetTypeIamBinding, + "google_clouddeploy_custom_target_type_iam_member": googleClouddeployCustomTargetTypeIamMember, + "google_clouddeploy_custom_target_type_iam_policy": googleClouddeployCustomTargetTypeIamPolicy, + "google_clouddeploy_delivery_pipeline_iam_binding": googleClouddeployDeliveryPipelineIamBinding, + "google_clouddeploy_delivery_pipeline_iam_member": googleClouddeployDeliveryPipelineIamMember, + "google_clouddeploy_delivery_pipeline_iam_policy": googleClouddeployDeliveryPipelineIamPolicy, + "google_clouddeploy_target_iam_binding": googleClouddeployTargetIamBinding, + "google_clouddeploy_target_iam_member": googleClouddeployTargetIamMember, + "google_clouddeploy_target_iam_policy": googleClouddeployTargetIamPolicy, + "google_cloudfunctions2_function": googleCloudfunction2Function, + "google_cloudfunctions2_function_iam_binding": googleCloudfunction2FunctionIamBinding, + "google_cloudfunctions2_function_iam_member": googleCloudfunction2FunctionIamMember, + "google_cloudfunctions2_function_iam_policy": googleCloudfunction2FunctionIamPolicy, + "google_cloudfunctions_function": googleCloudfunctionsFunction, + "google_cloudfunctions_function_iam_binding": googleCloudfunctionsFunctionIamBinding, + "google_cloudfunctions_function_iam_member": googleCloudfunctionsFunctionIamPolicy, + "google_cloudfunctions_function_iam_policy": googleCloudfunctionsFunctionIamPolicy, + "google_colab_runtime_template_iam_binding": googleColabRuntimeTemplateIamBinding, + "google_colab_runtime_template_iam_member": googleColabRuntimeTemplateIamMember, + "google_colab_runtime_template_iam_policy": googleColabRuntimeTemplateIamPolicy, + "google_composer_environment": googleComposerEnvironment, + "google_composer_user_workloads_config_map": googleComposerUserWorkloadsConfigMap, + "google_composer_user_workloads_secret": googleComposerUserWorkloadsSecret, + "google_compute_address": googleComputeAddress, + "google_compute_backend_bucket": googleComputeBackendBucket, + "google_compute_backend_bucket_iam_binding": googleComputeBackendBucketIamBinding, + "google_compute_backend_bucket_iam_member": googleComputeBackendBucketIamMember, + "google_compute_backend_bucket_iam_policy": googleComputeBackendBucketIamPolicy, + "google_compute_backend_service": googleComputeBackendService, + "google_compute_backend_service_iam_binding": googleComputeBackendServiceIamBinding, + "google_compute_backend_service_iam_member": googleComputeBackendServiceIamMember, + "google_compute_backend_service_iam_policy": googleComputeBackendServiceIamPolicy, + "google_compute_disk_iam_binding": googleComputeDiskIamBinding, + "google_compute_disk_iam_member": googleComputeDiskIamMember, + "google_compute_disk_iam_policy": googleComputeDiskIamPolicy, + "google_compute_firewall": googleComputeFirewall, + "google_compute_forwarding_rule": googleComputeForwardingRule, + "google_compute_global_address": googleComputeGlobalAddress, + "google_compute_global_forwarding_rule": googleComputeGlobalForwardingRule, + "google_compute_global_network_endpoint_group": googleComputeGlobalNetworkEndpointGroup, + "google_compute_health_check": googleComputeHealthcheck, + "google_compute_http_health_check": googleComputeHttpHealthCheck, + "google_compute_https_health_check": googleComputeHttpsHealthCheck, + "google_compute_image_iam_binding": googleComputeImageIamBinding, + "google_compute_image_iam_member": googleComputeImageIamMember, + "google_compute_image_iam_policy": googleComputeImageIamPolicy, + "google_compute_instance": googleComputeInstance, + "google_compute_instance_iam_binding": googleComputeInstanceIamBinding, + "google_compute_instance_iam_member": googleComputeInstanceIamMember, + "google_compute_instance_iam_policy": googleComputeInstanceIamPolicy, + "google_compute_instance_template": googleComputeInstanceTemplate, + "google_compute_instance_template_iam_binding": googleComputeInstanceTemplateIamBinding, + "google_compute_instance_template_iam_member": googleComputeInstanceTemplateIamMember, + "google_compute_instance_template_iam_policy": googleComputeInstanceTemplateIamPolicy, + "google_compute_instant_snapshot_iam_binding": googleComputeInstanceSnapshotIamBinding, + "google_compute_instant_snapshot_iam_member": googleComputeInstanceSnapshotIamMember, + "google_compute_instant_snapshot_iam_policy": googleComputeInstanceSnapshotIamPolicy, + "google_compute_machine_image_iam_binding": googleComputeMachineImageIamBinding, + "google_compute_machine_image_iam_member": googleComputeMachineImageIamMember, + "google_compute_machine_image_iam_policy": googleComputeMachineImageIamPolicy, + "google_compute_network": googleComputeNetwork, + "google_compute_network_attachment": googleComputeNetworkAttachment, + "google_compute_network_endpoint_group": googleComputeNetworkEndpointGroup, + "google_compute_project_metadata_item": googleComputeProjectMetadataItem, + "google_compute_region_backend_service": googleComputeRgionBackendService, + "google_compute_region_backend_service_iam_binding": googleComputeRegionBackendServiceIamBinding, + "google_compute_region_backend_service_iam_member": googleComputeRegionBackendServiceIamMember, + "google_compute_region_backend_service_iam_policy": googleComputeRegionBackendServiceIamPolicy, + "google_compute_region_disk_iam_binding": googleComputeRegionDiskIamBinding, + "google_compute_region_disk_iam_member": googleComputeRegionDiskIamMember, + "google_compute_region_disk_iam_policy": googleComputeRegionDiskIamPolicy, + "google_compute_region_health_check": googleComputeRegioHealthCheck, + "google_compute_region_network_endpoint_group": googleComputeRegionNetworkEndpointGroup, + "google_compute_region_ssl_certificate": googleComputeRegionSslCertificate, + "google_compute_region_target_http_proxy": googleComputeRegionTargetHttpProxy, + "google_compute_region_target_https_proxy": googleComputeRegionTargetHttpsProxy, + "google_compute_region_target_tcp_proxy": googleComputeRegionTargetTcpProxy, + "google_compute_region_url_map": googleComputeRegionUrlMap, + "google_compute_security_policy": googleComputeSecurityPolicy, + "google_compute_snapshot_iam_binding": googleComputeSnapshotIamBinding, + "google_compute_snapshot_iam_member": googleComputeSnapshotIamMember, + "google_compute_snapshot_iam_policy": googleComputeSnapshotIamPolicy, + "google_compute_storage_pool_iam_binding": googleComputeStoragePoolIamBinding, + "google_compute_storage_pool_iam_member": googleComputeStoragePoolIamMember, + "google_compute_storage_pool_iam_policy": googleComputeStoragePoolIamPolicy, + "google_compute_subnetwork": googleComputeSubnetwork, + "google_compute_subnetwork_iam_binding": googleComputeSubnetworkIamBinding, + "google_compute_subnetwork_iam_member": googleComputeSubnetworkIamMember, + "google_compute_subnetwork_iam_policy": googleComputeSubnetworkIamPolicy, + "google_compute_target_http_proxy": googleComputeTargetHttpProxy, + "google_compute_target_https_proxy": googleComputeTargetHttpsProxy, + "google_compute_url_map": googleComputeUrlMap, + "google_contact_center_insights_analysis_rule": googleContactCenterInsightsAnalysisRule, + "google_contact_center_insights_view": googleContactCenterInsightsView, + "google_container_analysis_note_iam_binding": googleContainerAnalysisNoteIamBinding, + "google_container_analysis_note_iam_member": googleContainerAnalysisNoteIamMember, + "google_container_analysis_note_iam_policy": googleContainerAnalysisNoteIamPolicy, + "google_container_cluster": googleContainerCluster, + "google_container_node_pool": googleContainerNodePool, + "google_data_catalog_entry": googleDataCatalogEntry, + "google_data_catalog_entry_group": googleDataCatalogEntryGroup, + "google_data_catalog_entry_group_iam_binding": googleDataCatalogEntryGroupIamPolicy, + "google_data_catalog_entry_group_iam_member": googleDataCatalogEntryGroupIamMember, + "google_data_catalog_entry_group_iam_policy": googleDataCatalogEntryGroupIamPolicy, + "google_data_catalog_policy_tag": googleDataCatalogPolicyTag, + "google_data_catalog_policy_tag_iam_binding": googleDataCatalogPolicyTagIamPolicy, + "google_data_catalog_policy_tag_iam_member": googleDataCatalogPolicyTagIamMember, + "google_data_catalog_policy_tag_iam_policy": googleDataCatalogPolicyTagIamPolicy, + "google_data_catalog_tag": googleDataCatalogTag, + "google_data_catalog_tag_template": googleDataCatalogTagTemplate, + "google_data_catalog_tag_template_iam_binding": googleDataCatalogTagTemplateIamPolicy, + "google_data_catalog_tag_template_iam_member": googleDataCatalogTagTemplateIamPolicy, + "google_data_catalog_tag_template_iam_policy": googleDataCatalogTagTemplateIamPolicy, + "google_data_catalog_taxonomy": googleDataCatalogTaxonomy, + "google_data_catalog_taxonomy_iam_binding": googleDataCatalogTaxonomyIamBinding, + "google_data_catalog_taxonomy_iam_member": googleDataCatalogTaxonomyIamMember, + "google_data_catalog_taxonomy_iam_policy": googleDataCatalogTaxonomyIamPolicy, + "google_data_fusion_instance_iam_binding": googleDataFusionInstanceIamBinding, + "google_data_fusion_instance_iam_member": googleDataFusionInstanceIamMember, + "google_data_fusion_instance_iam_policy": googleDataFusionInstanceIamPolicy, + "google_dataflow_job": googleDataflowJob, + "google_dataform_repository": googleDataformRepository, + "google_dataform_repository_iam_binding": googleDataformRepositoryIamBinding, + "google_dataform_repository_iam_member": googleDataformRepositoryIamMember, + "google_dataform_repository_iam_policy": googleDataformRepositoryIamPolicy, + "google_dataform_repository_release_config": googleDataformRepositoryReleaseConfig, + "google_dataform_repository_workflow_config": googleDataformRepositoryWorkflowConfig, + "google_dataplex_aspect_type": googleDataplexAspectType, + "google_dataplex_aspect_type_iam_binding": googleDataplexAspectTypeIamBinding, + "google_dataplex_aspect_type_iam_member": googleDataplexAspectTypeIamMember, + "google_dataplex_aspect_type_iam_policy": googleDataplexAspectTypeIamPolicy, + "google_dataplex_asset": googleDataplexAsset, + "google_dataplex_asset_iam_binding": googleDataplexAssetIamBinding, + "google_dataplex_asset_iam_member": googleDataplexAssetIamMember, + "google_dataplex_asset_iam_policy": googleDataplexAssetIamPolicy, + "google_dataplex_datascan": googleDataplexDatascan, + "google_dataplex_datascan_iam_binding": googleDataplexDatascanIamBinding, + "google_dataplex_datascan_iam_member": googleDataplexDatascanIamMember, + "google_dataplex_datascan_iam_policy": googleDataplexDatascanIamPolicy, + "google_dataplex_entry": googleDataplexEntry, + "google_dataplex_entry_group": googleDataplexEntryGroup, + "google_dataplex_entry_group_iam_binding": googleDataplexEntryGroupIamBinding, + "google_dataplex_entry_group_iam_member": googleDataplexEntryGroupIamMember, + "google_dataplex_entry_group_iam_policy": googleDataplexEntryGroupIamPolicy, + "google_dataplex_entry_type": googleDataplexEntryType, + "google_dataplex_entry_type_iam_binding": googleDataplexEntryTypeIamBinding, + "google_dataplex_entry_type_iam_member": googleDataplexEntryTypeIamMember, + "google_dataplex_entry_type_iam_policy": googleDataplexEntryTypeIamPolicy, + "google_dataplex_glossary": googleDataplexGlossary, + "google_dataplex_glossary_category": googleDataplexGlossaryCategory, + "google_dataplex_glossary_iam_binding": googleDataplexGlossaryIamBinding, + "google_dataplex_glossary_iam_member": googleDataplexGlossaryIamMember, + "google_dataplex_glossary_iam_policy": googleDataplexGlossaryIamPolicy, + "google_dataplex_glossary_term": googleDataplexGlossaryTerm, + "google_dataplex_lake": googleDataplexLake, + "google_dataplex_lake_iam_binding": googleDataplexLakeIamBinding, + "google_dataplex_lake_iam_member": googleDataplexLakeIamMember, + "google_dataplex_lake_iam_policy": googleDataplexLakeIamPolicy, + "google_dataplex_task": googleDataplexTask, + "google_dataplex_task_iam_binding": googleDataplexLakeIamBinding, + "google_dataplex_task_iam_member": googleDataplexTaskIamMember, + "google_dataplex_task_iam_policy": googleDataplexTaskIamPolicy, + "google_dataplex_zone": googleDataplexZone, + "google_dataplex_zone_iam_binding": googleDataplexZoneIamBinding, + "google_dataplex_zone_iam_member": googleDataplexZoneIamMember, + "google_dataplex_zone_iam_policy": googleDataplexLakeIamPolicy, + "google_dataproc_autoscaling_policy": googleDataprocAutoscalingPolicy, + "google_dataproc_autoscaling_policy_iam_binding": googleDataprocAutoscalingPolicyIamBinding, + "google_dataproc_autoscaling_policy_iam_member": googleDataprocAutoscalingPolicyIamMember, + "google_dataproc_autoscaling_policy_iam_policy": googleDataprocAutoscalingPolicyIamPolicy, + "google_dataproc_batch": googleDataprocBatch, + "google_dataproc_cluster": googleDataprocCluster, + "google_dataproc_cluster_iam_binding": googleDataprocClusterIamBinding, + "google_dataproc_cluster_iam_member": googleDataprocClusterIamMember, + "google_dataproc_cluster_iam_policy": googleDataprocClusterIamPolicy, + "google_dataproc_job": googleDataprocJob, + "google_dataproc_job_iam_binding": googleDataprocJobIamBinding, + "google_dataproc_job_iam_member": googleDataprocJobIamMember, + "google_dataproc_job_iam_policy": googleDataprocJobIamPolicy, + "google_dataproc_metastore_database_iam_binding": googleDataprocMetastoreDatabaseIamBinding, + "google_dataproc_metastore_database_iam_member": googleDataprocMetastoreDatabaseIamMember, + "google_dataproc_metastore_database_iam_policy": googleDataprocMetastoreDatabaseIamPolicy, + "google_dataproc_metastore_federation_iam_binding": googleDataprocMetastoreFederationIamBinding, + "google_dataproc_metastore_federation_iam_member": googleDataprocMetastoreFederationIamMember, + "google_dataproc_metastore_federation_iam_policy": googleDataprocMetastoreFederationIamPolicy, + "google_dataproc_metastore_service_iam_binding": googleDataprocMetastoreServiceIamBinding, + "google_dataproc_metastore_service_iam_member": googleDataprocMetastoreServiceIamMember, + "google_dataproc_metastore_service_iam_policy": googleDataprocMetastoreServiceIamPolicy, + "google_dataproc_metastore_table_iam_binding": googleDataprocMetastoreTableIamBinding, + "google_dataproc_metastore_table_iam_member": googleDataprocMetastoreTableIamMember, + "google_dataproc_metastore_table_iam_policy": googleDataprocMetastoreTableIamPolicy, + "google_dataproc_session_template": googleDataprocSessionTemplate, + "google_dataproc_workflow_template": googleDataprocWorkflowTemplate, + "google_default_service_accounts": googleDefaultServiceAccounts, + "google_deployment_manager_deployment": googleDeploymentManagerDeployment, + "google_developer_connect_account_connector": googleDeveloperConnectAccountConnector, + "google_developer_connect_connection": googleDeveloperConnectConnection, + "google_developer_connect_git_repository_link": googleDeveloperConnectGitRepositoryLink, + "google_dialogflow_agent": googleDialogflowAgent, + "google_dialogflow_conversation_profile": googleDialogflowConversationProfile, + "google_dialogflow_cx_agent": googleDialogflowCxAgent, + "google_dialogflow_cx_entity_type": googleDialogflowCxEntityType, + "google_dialogflow_cx_environment": googleDialogflowCxEnvironment, + "google_dialogflow_cx_flow": googleDialogflowCxFlow, + "google_dialogflow_cx_generative_settings": googleDialogflowCxGenerativeSettings, + "google_dialogflow_cx_generator": googleDialogflowCxGenerator, + "google_dialogflow_cx_intent": googleDialogflowCxIntent, + "google_dialogflow_cx_page": googleDialogflowCxPage, + "google_dialogflow_cx_playbook": googleDialogflowCxPlaybook, + "google_dialogflow_cx_security_settings": googleDialogflowCxSecuritySettings, + "google_dialogflow_cx_tool": googleDialogflowCxTool, + "google_dialogflow_cx_version": googleDialogflowCxVersion, + "google_dialogflow_cx_webhook": googleDialogflowCxWebhook, + "google_dialogflow_encryption_spec": googleDialogflowEncryptionSpec, + "google_dialogflow_entity_type": googleDialogflowEntityType, + "google_dialogflow_fulfillment": googleDialogflowFulfillment, + "google_dialogflow_intent": googleDialogflowIntent, + "google_dns_managed_zone": googleDnsmanagedZone, + "google_dns_managed_zone_iam_binding": googleDNSManagedZoneIamBinding, + "google_dns_managed_zone_iam_member": googleDNSManagedZoneIamMember, + "google_dns_managed_zone_iam_policy": googleDNSManagedZoneIamPolicy, + "google_dns_policy": googleDNSPolicy, + "google_dns_record_set": googleDNSRecordSet, + "google_edgecontainer_cluster": googleEdgecontainerCluster, + "google_edgecontainer_node_pool": googleEdgecontainerNodePool, + "google_edgecontainer_vpn_connection": googleEdgecontainerVpnConnection, + "google_edgenetwork_interconnect_attachment": googleEdgecontainerInterconnectAttachment, + "google_edgenetwork_network": googleEdgecontainerNetwork, + "google_edgenetwork_subnet": googleEdgecontainerSubnet, + "google_endpoints_service_consumers_iam_binding": googleEndpointsServiceConsumersIamBinding, + "google_endpoints_service_consumers_iam_member": googleEndpointsServiceConsumersIamMember, + "google_endpoints_service_consumers_iam_policy": googleEndpointsServiceConsumersIamPolicy, + "google_endpoints_service_iam_binding": googleEndpointsServiceIamBinding, + "google_endpoints_service_iam_member": googleEndpointsServiceIamMember, + "google_endpoints_service_iam_policy": googleEndpointsServiceIamPolicy, + "google_eventarc_channel": googleEventarcChannel, + "google_eventarc_enrollment": googleEventarcEnrollment, + "google_eventarc_google_api_source": googleEventarcGoogleApiSource, + "google_eventarc_google_channel_config": googleEventarcGoogleChannelConfig, + "google_eventarc_message_bus": googleEventarcMessageBus, + "google_eventarc_pipeline": googleEventarcPipeline, + "google_eventarc_trigger": googleEventarcTrigger, + "google_firebase_android_app": googleFirebaseAndroidApp, + "google_firebase_apple_app": googleFirebaseAppleApp, + "google_firebase_database_instance": googleFirebaseDatabaseInstance, + "google_firebase_hosting_channel": googleFirebaseHostingSite, + "google_firebase_hosting_custom_domain": googleFirebaseHostingSite, + "google_firebase_hosting_release": googleFirebaseHostingSite, + "google_firebase_hosting_site": googleFirebaseHostingSite, + "google_firebase_hosting_version": googleFirebaseHostingSite, + "google_firebase_project": googleFirebaseProject, + "google_firebase_storage_bucket": googleFirebaseStorageBucket, + "google_firebase_web_app": googleFirebaseWebApp, + "google_firebaserules_release": googleFirebaserulesRelease, + "google_firebaserules_ruleset": googleFirebaserulesRuleset, + "google_folder_iam_binding": googleFolderIamBinding, + "google_folder_iam_member": googleFolderIamMember, + "google_folder_iam_policy": googleFolderIamPolicy, + "google_gemini_repository_group_iam_binding": googleGeminiRepositoryGroupIamBinding, + "google_gemini_repository_group_iam_member": googleGeminiRepositoryGroupIamMember, + "google_gemini_repository_group_iam_policy": googleGeminiRepositoryGroupIamPolicy, + "google_gke_backup_backup_plan_iam_binding": googleGkeBackupBackupPlanIamBinding, + "google_gke_backup_backup_plan_iam_member": googleGkeBackupBackupPlanIamMember, + "google_gke_backup_backup_plan_iam_policy": googleGkeBackupBackupPlanIamPolicy, + "google_gke_backup_restore_plan_iam_binding": googleGkeBackupRestorePlanIamBinding, + "google_gke_backup_restore_plan_iam_member": googleGkeBackupRestorePlanIamMember, + "google_gke_backup_restore_plan_iam_policy": googleGkeBackupRestorePlanIamPolicy, + "google_gke_hub_feature_iam_binding": googleGkeHubFeatureIamBinding, + "google_gke_hub_feature_iam_member": googleGkeHubFeatureIamMember, + "google_gke_hub_feature_iam_policy": googleGkeHubFeatureIamPolicy, + "google_gke_hub_membership_iam_binding": googleGkeHubMembershipIamBinding, + "google_gke_hub_membership_iam_member": googleGkeHubMembershipIamMember, + "google_gke_hub_membership_iam_policy": googleGkeHubMembershipIamPolicy, + "google_gke_hub_scope_iam_binding": googleGkeHubScopeIamBinding, + "google_gke_hub_scope_iam_member": googleGkeHubScopeIamMember, + "google_gke_hub_scope_iam_policy": googleGkeHubScopeIamPolicy, + "google_healthcare_consent_store_iam_binding": googleHealthcareConsentStoreIamBinding, + "google_healthcare_consent_store_iam_member": googleHealthcareConsentStoreIamMember, + "google_healthcare_consent_store_iam_policy": googleHealthcareConsentStoreIamPolicy, + "google_healthcare_dataset_iam_binding": googleHealthcareDatasetIamBinding, + "google_healthcare_dataset_iam_member": googleHealthcareDatasetIamMember, + "google_healthcare_dataset_iam_policy": googleHealthcareDatasetIamPolicy, + "google_healthcare_dicom_store_iam_binding": googleHealthcareDicomStoreIamBinding, + "google_healthcare_dicom_store_iam_member": googleHealthcareDicomStoreIamMember, + "google_healthcare_dicom_store_iam_policy": googleHealthcareDicomStoreIamPolicy, + "google_healthcare_fhir_store_iam_binding": googleHealthcareFhirStoreIamBinding, + "google_healthcare_fhir_store_iam_member": googleHealthcareFhirStoreIamMember, + "google_healthcare_fhir_store_iam_policy": googleHealthcareFhirStoreIamPolicy, + "google_healthcare_hl7_v2_store_iam_binding": googleHealthcareHl7V2StoreIamBinding, + "google_healthcare_hl7_v2_store_iam_member": googleHealthcareHl7V2StoreIamMember, + "google_healthcare_hl7_v2_store_iam_policy": googleHealthcareHl7V2StoreIamPolicy, + "google_iam_workforce_pool": googleIamWorkforcePool, + "google_iam_workforce_pool_iam_binding": googleIamWorkforcePoolIamBinding, + "google_iam_workforce_pool_iam_member": googleIamWorkforcePoolIamMember, + "google_iam_workforce_pool_iam_policy": googleIamWorkforcePoolIamPolicy, + "google_iam_workforce_pool_provider": googleIamWorkforcePoolProvider, + "google_iam_workforce_pool_provider_key": googleIamWorkforcePoolProviderKey, + "google_iam_workload_identity_pool": googleIamWorkloadIdentityPool, + "google_iam_workload_identity_pool_iam_binding": googleIamWorkloadIdentityPoolIamBinding, + "google_iam_workload_identity_pool_iam_member": googleIamWorkloadIdentityPoolIamMember, + "google_iam_workload_identity_pool_iam_policy": googleIamWorkloadIdentityPoolIamPolicy, + "google_iam_workload_identity_pool_provider": googleIamWorkloadIdentityPoolProvider, + "google_iap_app_engine_service_iam_binding": googleIapAppEngineServiceIamBinding, + "google_iap_app_engine_service_iam_member": googleIapAppEngineServiceIamMember, + "google_iap_app_engine_service_iam_policy": googleIapAppEngineServiceIamPolicy, + "google_iap_app_engine_version_iam_binding": googleIapAppEngineVersionIamBinding, + "google_iap_app_engine_version_iam_member": googleIapAppEngineVersionIamMember, + "google_iap_app_engine_version_iam_policy": googleIapAppEngineVersionIamPolicy, + "google_iap_tunnel_dest_group_iam_binding": googleIapTunnelDestGroupIamBinding, + "google_iap_tunnel_dest_group_iam_member": googleIapTunnelDestGroupIamMember, + "google_iap_tunnel_dest_group_iam_policy": googleIapTunnelDestGroupIamPolicy, + "google_iap_tunnel_iam_binding": googleIapTunnelIamBinding, + "google_iap_tunnel_iam_member": googleIapTunnelIamMember, + "google_iap_tunnel_iam_policy": googleIapTunnelIamPolicy, + "google_iap_tunnel_instance_iam_binding": googleIapTunnelInstanceIamBinding, + "google_iap_tunnel_instance_iam_member": googleIapTunnelInstanceIamMember, + "google_iap_tunnel_instance_iam_policy": googleIapTunnelInstanceIamPolicy, + "google_iap_web_backend_service_iam_binding": googleIapWebBackendServiceIamBinding, + "google_iap_web_backend_service_iam_member": googleIapWebBackendServiceIamMember, + "google_iap_web_backend_service_iam_policy": googleIapWebBackendServiceIamPolicy, + "google_iap_web_cloud_run_service_iam_binding": googleIapWebCloudRunServiceIamBinding, + "google_iap_web_cloud_run_service_iam_member": googleIapWebCloudRunServiceIamMember, + "google_iap_web_cloud_run_service_iam_policy": googleIapWebCloudRunServiceIamPolicy, + "google_iap_web_iam_binding": googleIapWebIamBinding, + "google_iap_web_iam_member": googleIapWebIamMember, + "google_iap_web_iam_policy": googleIapWebIamPolicy, + "google_iap_web_region_backend_service_iam_binding": googleIapWebRegionBackendServiceIamBinding, + "google_iap_web_region_backend_service_iam_member": googleIapWebRegionBackendServiceIamMember, + "google_iap_web_region_backend_service_iam_policy": googleIapWebRegionBackendServiceIamPolicy, + "google_iap_web_type_app_engine_iam_binding": googleIapWebTypeAppEngineIamBinding, + "google_iap_web_type_app_engine_iam_member": googleIapWebTypeAppEngineIamMember, + "google_iap_web_type_app_engine_iam_policy": googleIapWebTypeAppEngineIamPolicy, + "google_iap_web_type_compute_iam_binding": googleIapWebTypeComputeIamBinding, + "google_iap_web_type_compute_iam_member": googleIapWebTypeComputeIamMember, + "google_iap_web_type_compute_iam_policy": googleIapWebTypeComputeIamPolicy, + "google_kms_crypto_key": googleKmsCryptoKey, + "google_kms_crypto_key_iam_binding": googlekmsCryptoKeyIamBinding, + "google_kms_crypto_key_iam_member": googlekmsCryptoKeyIamMember, + "google_kms_crypto_key_iam_policy": googlekmsCryptoKeyIamPolicy, + "google_kms_crypto_key_version": googleKmsCryptoKeyVersions, + "google_kms_ekm_connection_iam_binding": googleKmsEkmConnectionIamBinding, + "google_kms_ekm_connection_iam_member": googleKmsEkmConnectionIamMember, + "google_kms_ekm_connection_iam_policy": googleKmsEkmConnectionIamPolicy, + "google_kms_key_handle": googleKmsKeyHandle, + "google_kms_key_ring": googleKmsKeyRing, + "google_kms_key_ring_iam_binding": googleKmsKeyRingIamBinding, + "google_kms_key_ring_iam_member": googleKmsKeyRingIamMember, + "google_kms_key_ring_iam_policy": googleKmsKeyRingIamPolicy, + "google_kms_key_ring_import_job": googleKmsKeyRingImportJob, + "google_kms_secret_ciphertext": googleKmsSecretCiphertext, + "google_logging_billing_account_exclusion": googleLoggingBillingAccountExclusion, + "google_logging_billing_account_sink": googleLoggingBillingAccountSink, + "google_logging_folder_exclusion": googleLoggingFolderExclusion, + "google_logging_folder_settings": googleLoggingFolderSettings, + "google_logging_folder_sink": googleLoggingFolderSink, + "google_logging_linked_dataset": googleLoggingLinkedDataset, + "google_logging_log_scope": googleLoggingLogScope, + "google_logging_log_view": googleLoggingLogView, + "google_logging_log_view_iam_binding": googleLoggingLogViewIamBinding, + "google_logging_log_view_iam_member": googleLoggingLogViewIamMember, + "google_logging_log_view_iam_policy": googleLoggingLogViewIamPolicy, + "google_logging_metric": googleLoggingMetric, + "google_logging_organization_exclusion": googleLoggingOrganizationExclusion, + "google_logging_organization_settings": googleLoggingOrganizationSettings, + "google_logging_organization_sink": googleLoggingOrganizationSink, + "google_logging_project_exclusion": googleLoggingProjectExclusion, + "google_logging_project_sink": googleLoggingProjectSink, + "google_managed_kafka_acl": googleManagedKafkaAcl, + "google_managed_kafka_cluster": googleManagedKafkaCluster, + "google_managed_kafka_connect_cluster": googleManagedKafkaConnectCluster, + "google_managed_kafka_connector": googleManagedKafkaConnector, + "google_managed_kafka_topic": googleManagedKafkaTopics, + "google_memcache_instance": googleMemcacheInstance, + "google_memorystore_instance": googleMemorystoreInstance, + "google_model_armor_floorsetting": googleModelArmorFloorsetting, + "google_model_armor_template": googleModelArmorTemplate, + "google_monitoring_alert_policy": googleMonitoringAlertPolicy, + "google_monitoring_custom_service": googleMonitoringCustomService, + "google_monitoring_dashboard": googleMonitoringDashboard, + "google_monitoring_group": googleMonitoringGroup, + "google_monitoring_metric_descriptor": googleMonitoringMetricDescriptor, + "google_monitoring_monitored_project": googleMonitoringMonitoredProject, + "google_monitoring_notification_channel": googleMonitoringNotificationChannel, + "google_monitoring_service": googleMonitoringService, + "google_monitoring_slo": googleMonitoringSLO, + "google_monitoring_uptime_check_config": googleMonitoringUptimeCheckConfig, + "google_network_security_address_group_iam_binding": googleNetworkSecurityAddressGroupIamBinding, + "google_network_security_address_group_iam_member": googleNetworkSecurityAddressGroupIamMember, + "google_network_security_address_group_iam_policy": googleNetworkSecurityAddressGroupIamPolicy, + "google_notebooks_environment": googleNotebooksEnvironment, + "google_notebooks_instance": googleNotebooksInstance, + "google_notebooks_instance_iam_binding": googleNotebooksInstanceIamBinding, + "google_notebooks_instance_iam_member": googleNotebooksInstanceIamMember, + "google_notebooks_instance_iam_policy": googleNotebooksInstanceIamPolicy, + "google_notebooks_runtime": googleNotebooksRuntime, + "google_notebooks_runtime_iam_binding": googleNotebooksRuntimeIamBinding, + "google_notebooks_runtime_iam_member": googleNotebooksRuntimeIamMember, + "google_notebooks_runtime_iam_policy": googleNotebooksRuntimeIamPolicy, + "google_organization_iam_binding": googleOrganizationIamBinding, + "google_organization_iam_member": googleOrganizationIamMember, + "google_organization_iam_policy": googleOrganizationIamPolicy, + "google_os_config_guest_policies": googleOsConfigGuestPolicies, + "google_os_config_os_policy_assignment": googleOsConfigOsPolicyAssignment, + "google_os_config_patch_deployment": googleOsConfigPatchDeployment, + "google_os_config_v2_policy_orchestrator": googleOsConfigV2PolicyOrchestrator, + "google_os_config_v2_policy_orchestrator_for_folder": googleOsConfigV2PolicyOrchestratorForFolder, + "google_os_config_v2_policy_orchestrator_for_organization": googleOsConfigV2PolicyOrchestratorForOrganization, + "google_parallelstore_instance": googleParallelstoreInstance, + "google_privateca_ca_pool": googlePrivateCaPool, + "google_privateca_ca_pool_iam_binding": googlePrivateCaPoolIamBinding, + "google_privateca_ca_pool_iam_member": googlePrivateCaPoolIamMember, + "google_privateca_ca_pool_iam_policy": googlePrivateCaPoolIamPolicy, + "google_privateca_certificate": googlePrivatecaCertificate, + "google_privateca_certificate_authority": googlePrivatecaCertificateAuthority, + "google_privateca_certificate_template": googlePrivatecaCertificateTemplate, + "google_privateca_certificate_template_iam_binding": googlePrivatecaCertificateTemplateIamBinding, + "google_privateca_certificate_template_iam_member": googlePrivatecaCertificateTemplateIamMember, + "google_privateca_certificate_template_iam_policy": googlePrivatecaCertificateTemplateIamPolicy, + "google_privileged_access_manager_entitlement": googlePrivilegedAccessManagerEntitlement, + "google_project": gooleProject, + "google_project_access_approval_settings": googleProjectAccessApprovalSettings, + "google_project_default_service_accounts": googleProjectDefaultServiceAccounts, + "google_project_iam_audit_config": googleProjectIamAuditConfig, + "google_project_iam_binding": googleProjectIamBinding, + "google_project_iam_custom_role": googleProjectIamCustomRole, + "google_project_iam_member": googleProjectIamBinding, + "google_project_iam_member_remove": googleProjectIamMemberRemove, + "google_project_iam_policy": googleProjectIamPolicy, + "google_project_organization_policy": googleProjectOrganizationPolicy, + "google_project_service": googleProjectService, + "google_project_service_identity": placeholder, + "google_project_services": placeholder, + "google_project_usage_export_bucket": googleProjectUsageExportBucket, + "google_pubsub_lite_reservation": googlePubsubLiteReservation, + "google_pubsub_lite_subscription": googlePubsubLiteSubscription, + "google_pubsub_lite_topic": googlePubsubLiteTopic, + "google_pubsub_schema": googlePubsubSchema, + "google_pubsub_schema_iam_binding": googlePubsubSchemaIamBinding, + "google_pubsub_schema_iam_member": googlePubsubSchemaIamMember, + "google_pubsub_schema_iam_policy": googlePubsubSchemaIamPolicy, + "google_pubsub_subscription": googlePubsubSubscription, + "google_pubsub_subscription_iam_binding": googlePubsubSubscriptionIamBinding, + "google_pubsub_subscription_iam_member": googlePubsubSubscriptionIamMember, + "google_pubsub_subscription_iam_policy": googlePubsubSubscriptionIamPolicy, + "google_pubsub_topic": googlePubsubTopic, + "google_pubsub_topic_iam_binding": googlePubsubTopicIam, + "google_pubsub_topic_iam_member": googlePubsubTopicIam, + "google_pubsub_topic_iam_policy": googlePubsubTopicIam, + "google_redis_cluster": googleRedisCluster, + "google_redis_cluster_user_created_connections": googleRedisClusterUserCreatedConnections, + "google_redis_instance": googleRedisInstance, + "google_runtimeconfig_config": googleRuntimeconfigConfig, + "google_runtimeconfig_config_iam_binding": googleRuntimeconfigConfigIamBinding, + "google_runtimeconfig_config_iam_member": googleRuntimeconfigConfigIamMember, + "google_runtimeconfig_config_iam_policy": googleRuntimeconfigConfigIamPolicy, + "google_runtimeconfig_variable": googleRuntimeconfigVariable, + "google_scc_source_iam_binding": googleSccSourceIamBinding, + "google_scc_source_iam_member": googleSccSourceIamMember, + "google_scc_source_iam_policy": googleSccSourceIamPolicy, + "google_scc_v2_organization_source_iam_binding": googleSccV2OrganizationSourceIamBinding, + "google_scc_v2_organization_source_iam_member": googleSccV2OrganizationSourceIamMember, + "google_scc_v2_organization_source_iam_policy": googleSccV2OrganizationSourceIamPolicy, + "google_secret_manager_regional_secret": googleSecretManagerRegionalSecret, + "google_secret_manager_regional_secret_iam_binding": googleSecretManagerRegionalSecretsIamBinding, + "google_secret_manager_regional_secret_iam_member": googleSecretManagerRegionalSecretIamMember, + "google_secret_manager_regional_secret_iam_policy": googleSecretManagerRegionalSecretIamPolicy, + "google_secret_manager_regional_secret_version": googleSecretManagerRegionalSecretVersion, + "google_secret_manager_secret": googleSecretManagerSecret, + "google_secret_manager_secret_iam_binding": googleSecretManagerSecretIam, + "google_secret_manager_secret_iam_member": googleSecretManagerSecretIam, + "google_secret_manager_secret_iam_policy": googleSecretManagerSecretIam, + "google_secret_manager_secret_version": googleSecretManagerSecretVersion, + "google_secure_source_manager_branch_rule": googleSecureSourceManagerBranchRule, + "google_secure_source_manager_instance": googleSecureSourceManagerInstance, + "google_secure_source_manager_instance_iam_binding": googleSecureSourceManagerInstanceIamBinding, + "google_secure_source_manager_instance_iam_member": googleSecureSourceManagerInstanceIamMember, + "google_secure_source_manager_instance_iam_policy": googleSecureSourceManagerInstanceIamPolicy, + "google_secure_source_manager_repository": googleSecureSourceManagerRepository, + "google_secure_source_manager_repository_iam_binding": googleSecureSourceManagerRepositoryIamBinding, + "google_secure_source_manager_repository_iam_member": googleSecureSourceManagerRepositoryIamMember, + "google_secure_source_manager_repository_iam_policy": googleSecureSourceManagerRepositoryIamPolicy, + "google_service_account": googleServiceAccount, + "google_service_account_iam_binding": googleServiceAccountIamBinding, + "google_service_account_iam_member": googleServiceAccountIamMember, + "google_service_account_iam_policy": googleServiceAccountIamPolicy, + "google_service_account_key": googleServiceAccountKey, + "google_service_directory_endpoint": googleServiceDirectoryEndpoint, + "google_service_directory_namespace": googleServiceDirectoryNamespace, + "google_service_directory_namespace_iam_binding": googleServiceDirectoryNamespaceIamBinding, + "google_service_directory_namespace_iam_member": googleServiceDirectoryNamespaceIamMember, + "google_service_directory_namespace_iam_policy": googleServiceDirectoryNamespaceIamPolicy, + "google_service_directory_service": googleServiceDirectoryService, + "google_service_directory_service_iam_binding": googleServiceDirectoryServiceIamBinding, + "google_service_directory_service_iam_member": googleServiceDirectoryServiceIamMember, + "google_service_directory_service_iam_policy": googleServiceDirectoryServiceIamPolicy, + "google_service_networking_connection": googleServiceNetworkingConnection, + "google_site_verification_owner": placeholder, + "google_site_verification_web_resource": placeholder, + "google_sourcerepo_repository": googleSourcerepoRepository, + "google_sourcerepo_repository_iam_binding": googleSourcerepoRepositoryIamBinding, + "google_sourcerepo_repository_iam_member": googleSourcerepoRepositoryIamMember, + "google_sourcerepo_repository_iam_policy": googleSourcerepoRepositoryIamPolicy, + "google_spanner_backup_schedule": googleSpannerBackupSchedule, + "google_spanner_database": googleSpannerDatabase, + "google_spanner_database_iam_binding": googleSpannerDatabaseIam, + "google_spanner_database_iam_member": googleSpannerDatabaseIam, + "google_spanner_database_iam_policy": googleSpannerDatabaseIam, + "google_spanner_instance": googleSpannerInstance, + "google_spanner_instance_config": googleSpannerInstanceConfig, + "google_spanner_instance_iam_binding": googleSpannerInstanceIam, + "google_spanner_instance_iam_member": googleSpannerInstanceIam, + "google_spanner_instance_iam_policy": googleSpannerInstanceIam, + "google_spanner_instance_partition": googleSpannerInstancePartition, + "google_sql_database": googleSQLDatabase, + "google_sql_database_instance": googleSQLDatabaseInstance, + "google_sql_ssl_cert": googleSqlSslCert, + "google_sql_user": googleSQLUser, + "google_storage_bucket": googleStorageBucket, + "google_storage_bucket_access_control": googleStorageBucketAccessControl, + "google_storage_bucket_acl": googleStorageBucketACL, + "google_storage_bucket_iam_binding": googleStorageBucketIamBinding, + "google_storage_bucket_iam_member": googleStorageBucketIamMember, + "google_storage_bucket_iam_policy": googleStorageBucketIamPolicy, + "google_storage_bucket_object": googleStorageBucketObject, + "google_storage_control_folder_intelligence_config": googleStorageControlFolderIntelligenceConfig, + "google_storage_control_organization_intelligence_config": googleStorageControlOrganizationIntelligenceConfig, + "google_storage_control_project_intelligence_config": googleStorageControlProjectIntelligenceConfig, + "google_storage_default_object_access_control": googleStorageDefaultObjectAccessControl, + "google_storage_default_object_acl": googleStorageDefaultObjectACL, + "google_storage_hmac_key": googleStorageHmacKey, + "google_storage_insights_report_config": googleStorageInsightsReportConfig, + "google_storage_managed_folder_iam_binding": googleStorageManagedFolderIamBinding, + "google_storage_managed_folder_iam_member": googleStorageManagedFolderIamMember, + "google_storage_managed_folder_iam_policy": googleStorageManagedFolderIamPolicy, + "google_storage_object_access_control": googleStorageObjectAccessControl, + "google_tags_location_tag_binding": googleTagsLocationTagBinding, + "google_tags_tag_binding": googleTagsTagBinding, + "google_tags_tag_key": googleTagsTagKey, + "google_tags_tag_key_iam_binding": googleTagsTagKeyIamBinding, + "google_tags_tag_key_iam_member": googleTagsTagKeyIamMember, + "google_tags_tag_key_iam_policy": googleTagsTagKeyIamPolicy, + "google_tags_tag_value": googleTagsTagValue, + "google_tags_tag_value_iam_binding": googleTagsTagValueIamBinding, + "google_tags_tag_value_iam_member": googleTagsTagValueIamMember, + "google_tags_tag_value_iam_policy": googleTagsTagValueIamPolicy, + "google_tpu_node": googleTpuNode, + "google_tpu_v2_queued_resource": googleTpuV2QueuedResource, + "google_tpu_v2_vm": googleTpuV2Vm, + "google_transcoder_job": googleTranscoderJob, + "google_transcoder_job_template": googleTranscoderJobTemplate, + "google_vertex_ai_dataset": googleVertexAiDataset, + "google_vertex_ai_endpoint": googleVertexAiEndpoint, + "google_vertex_ai_endpoint_iam_binding": googleVertexAiEndpointIam, + "google_vertex_ai_endpoint_iam_member": googleVertexAiEndpointIam, + "google_vertex_ai_endpoint_iam_policy": googleVertexAiEndpointIam, + "google_vertex_ai_feature_group": googleVertexAiFeatureGroup, + "google_vertex_ai_feature_group_feature": googleVertexAiFeatureGroupFeature, + "google_vertex_ai_feature_group_iam_binding": googleVertexAIFeatureGroupIamBinding, + "google_vertex_ai_feature_group_iam_member": googleVertexAIFeatureGroupIamMember, + "google_vertex_ai_feature_group_iam_policy": googleVertexAIFeatureGroupIamPolicy, + "google_vertex_ai_feature_online_store": googleVertexAiFeatureOnlineStore, + "google_vertex_ai_feature_online_store_featureview": googleVertexAiFeatureOnlineStoreFeatureview, + "google_vertex_ai_feature_online_store_featureview_iam_binding": googleVertexAIFeatureOnlineStoreFeatureviewIamBinding, + "google_vertex_ai_feature_online_store_featureview_iam_member": googleVertexAIFeatureOnlineStoreFeatureviewIamMember, + "google_vertex_ai_feature_online_store_featureview_iam_policy": googleVertexAIFeatureOnlineStoreFeatureviewIamPolicy, + "google_vertex_ai_feature_online_store_iam_binding": googleVertexAIFeatureOnlineStoreIamBinding, + "google_vertex_ai_feature_online_store_iam_member": googleVertexAIFeatureOnlineStoreIamMember, + "google_vertex_ai_feature_online_store_iam_policy": googleVertexAIFeatureOnlineStoreIamPolicy, + "google_vertex_ai_featurestore": googleVertexAiFeaturestore, + "google_vertex_ai_featurestore_entitytype": googleVertexAiFeaturestoreEntitytype, + "google_vertex_ai_featurestore_entitytype_feature": googleVertexAiFeaturestoreEntitytypeFeature, + "google_vertex_ai_featurestore_entitytype_iam_binding": googleVertexAiFeaturestoreEntitytypeIam, + "google_vertex_ai_featurestore_entitytype_iam_member": googleVertexAiFeaturestoreEntitytypeIam, + "google_vertex_ai_featurestore_entitytype_iam_policy": googleVertexAiFeaturestoreEntitytypeIam, + "google_vertex_ai_featurestore_iam_binding": googleVertexAiFeaturestoreIam, + "google_vertex_ai_featurestore_iam_member": googleVertexAiFeaturestoreIam, + "google_vertex_ai_featurestore_iam_policy": googleVertexAiFeaturestoreIam, + "google_vertex_ai_index": googleVertexAiIndex, + "google_vertex_ai_index_endpoint": googleVertexAiIndexEndpoint, + "google_vertex_ai_metadata_store": googleVertexAiMetadataStore, + "google_vertex_ai_tensorboard": googleVertexAiTensorboard, + "google_vmwareengine_cluster": googleVmwareengineCluster, + "google_vmwareengine_external_access_rule": googleVmwareengineExternalAccessRule, + "google_vmwareengine_external_address": googleVmwareengineExternalAddress, + "google_vmwareengine_network": googleVmwareengineNetwork, + "google_vmwareengine_network_peering": googleVmwareengineNetworkPeering, + "google_vmwareengine_network_policy": googleVmwareengineNetworkPolicy, + "google_vmwareengine_private_cloud": googleVmwareenginePrivateCloud, + "google_vmwareengine_subnet": googleVmwareengineSubnet, + "google_workbench_instance_iam_binding": googleWorkbenchInstanceIamBinding, + "google_workbench_instance_iam_member": googleWorkbenchInstanceIamMember, + "google_workbench_instance_iam_policy": googleWorkbenchInstanceIamPolicy, + "google_workflows_workflow": googleWorkflowsWorkflow, + "google_workstations_workstation": googleWorkstationsWorkstation, + "google_workstations_workstation_cluster": googleWorkstationsWorkstationCluster, + "google_workstations_workstation_config": googleWorkstationsWorkstationConfig, + "google_workstations_workstation_config_iam_binding": googleWorkstationsWorkstationConfigIamBinding, + "google_workstations_workstation_config_iam_member": googleWorkstationsWorkstationConfigIamMember, + "google_workstations_workstation_config_iam_policy": googleWorkstationsWorkstationConfigIamPolicy, + "google_workstations_workstation_iam_binding": googleWorkstationsWorkstationIamBinding, + "google_workstations_workstation_iam_member": googleWorkstationsWorkstationIamMember, + "google_workstations_workstation_iam_policy": googleWorkstationsWorkstationIamPolicy, + "google_certificate_manager_dns_authorization": googleCertificateManagerDnsAuthorization, + "google_iap_web_region_forwarding_rule_service_iam_binding": googleIapWebRegionForwardingRuleServiceIamBinding, + "google_iap_web_region_forwarding_rule_service_iam_member": googleIapWebRegionForwardingRuleServiceIamMember, + "google_iap_web_region_forwarding_rule_service_iam_policy": googleIapWebRegionForwardingRuleServiceIamPolicy, + "google_iap_brand": placeholder, //being deprecated + "google_iap_client": placeholder, //being deprecated + "google_iap_settings": googleIapSettings, + "google_iap_tunnel_dest_group": googleIapTunnelDestGroup, + "google_iap_web_forwarding_rule_service_iam_binding": googleIapWebForwardingRuleServiceIamBinding, + "google_iap_web_forwarding_rule_service_iam_member": googleIapWebForwardingRuleServiceIamMember, + "google_iap_web_forwarding_rule_service_iam_policy": googleIapWebForwardingRuleServiceIamPolicy, + "google_gemini_code_repository_index": googleGeminiCodeRepositoryIndex, + "google_gemini_code_tools_setting": googleGeminiCodeToolsSetting, + "google_gemini_code_tools_setting_binding": googleGeminiCodeToolsSettingBinding, + "google_gemini_data_sharing_with_google_setting": googleGeminiDataSharingWithGoogleSetting, + "google_gemini_data_sharing_with_google_setting_binding": googleGeminiDataSharingWithGoogleSettingBinding, + "google_gemini_gemini_gcp_enablement_setting": googleGeminiGeminiGcpEnablementSetting, + "google_gemini_gemini_gcp_enablement_setting_binding": googleGeminiGeminiGcpEnablementSettingBinding, + "google_gemini_logging_setting": googleGeminiLoggingSetting, + "google_gemini_logging_setting_binding": googleGeminiLoggingSettingBinding, + "google_gemini_release_channel_setting": googleGeminiReleaseChannelSetting, + "google_gemini_release_channel_setting_binding": googleGeminiReleaseChannelSettingBinding, + "google_gemini_repository_group": googleGeminiRepositoryGroup, + "google_vertex_ai_cache_config": googleVertexAiCacheConfig, + "google_vertex_ai_deployment_resource_pool": googleVertexAiDeploymentResourcePool, + "google_vertex_ai_rag_engine_config": googleVertexAiRagEngineConfig, + "google_vertex_ai_reasoning_engine": googleVertexAiReasoningEngine, + "google_vpc_access_connector": googleVpcAccessConnector, + "google_workbench_instance": googleWorkbenchInstance, + "google_vertex_ai_endpoint_with_model_garden_deployment": googleVertexAiEndpointWithModelGardenDeployment, + "google_vertex_ai_index_endpoint_deployed_index": googleVertexAiIndexEndpointDeployedIndex, } diff --git a/src/gcp_datasource.go b/src/gcp_datasource.go index 35604ebc..56a9a275 100644 --- a/src/gcp_datasource.go +++ b/src/gcp_datasource.go @@ -20,249 +20,409 @@ func GetGCPDataPermissions(result ResourceV2) ([]string, error) { func GCPDataLookup(result string) interface{} { TFLookup := map[string]interface{}{ - "google_alloydb_locations": dataGoogleAlloydbLocations, - "google_alloydb_supported_database_flags": dataGoogleAlloydbSupportedDatabaseFlags, - "google_api_gateway_api_config_iam_policy": placeholder, - "google_api_gateway_api_iam_policy": placeholder, - "google_api_gateway_gateway_iam_policy": placeholder, - "google_apigee_environment_iam_policy": placeholder, - "google_app_engine_default_service_account": dataGoogleAppEngineDefaultServiceAccount, - "google_artifact_registry_repository": dataGoogleArtifactRegistryRepository, - "google_artifact_registry_repository_iam_policy": dataGoogleArtifactRegistryRepositoryIamPolicy, - "google_beyondcorp_app_connection": dataGoogleBeyondcorpAppConnection, - "google_beyondcorp_app_connector": dataGoogleBeyondcorpAppConnector, - "google_beyondcorp_app_gateway": dataGoogleBeyondcorpAppGateway, - "google_bigquery_analytics_hub_data_exchange_iam_policy": dataGoogleBigqueryHubDataExchangeIamPolicy, - "google_bigquery_analytics_hub_listing_iam_policy": dataGoogleBigqueryAnalyticsHubListingIamPolicy, - "google_bigquery_connection_iam_policy": placeholder, - "google_bigquery_datapolicy_data_policy_iam_policy": dataGoogleBigqueryDatapolicyDataPolicyIamPolicy, - "google_bigquery_dataset_iam_policy": placeholder, - "google_bigquery_default_service_account": dataGoogleBigqueryDefaultServiceAccount, - "google_bigquery_table_iam_policy": placeholder, - "google_bigtable_instance_iam_policy": dataGoogleBigtableInstanceIamPolicy, - "google_bigtable_table_iam_policy": placeholder, - "google_client_config": placeholder, - "google_client_openid_userinfo": placeholder, - "google_cloud_run_locations": dataGoogleCloudRunLocations, - "google_cloud_run_service": dataGoogleCloudRunService, - "google_cloud_run_service_iam_policy": dataGoogleCloudRunServiceIamPolicy, - "google_cloud_run_v2_job": dataGoogleCloudRunV2Job, - "google_cloud_run_v2_job_iam_policy": dataGoogleCloudRunV2JobIamPolicy, - "google_cloud_run_v2_service": dataGoogleCloudRunV2Service, - "google_cloud_run_v2_service_iam_policy": dataGoogleCloudRunV2ServiceIamPolicy, - "google_cloudfunctions2_function": dataGoogleCloudfunctionsFunction, - "google_cloudfunctions2_function_iam_policy": dataGoogleCloudfunctionsFunctionIamPolicy, - "google_cloudfunctions_function": dataGoogleCloudfunctionsFunction, - "google_cloudfunctions_function_iam_policy": dataGoogleCloudfunctionsFunctionIamPolicy, - "google_compute_address": dataGoogleComputeAddress, - "google_compute_addresses": dataGoogleComputeAddresses, - "google_compute_backend_bucket": dataGoogleComputeBackendBucket, - "google_compute_backend_bucket_iam_policy": dataGoogleComputeBackendBucketIamPolicy, - "google_compute_backend_service": dataGoogleComputeBackendService, - "google_compute_backend_service_iam_policy": dataGoogleComputeBackendServiceIamPolicy, - "google_compute_default_service_account": dataGoogleComputeDefaultServiceAccount, - "google_compute_disk": dataGoogleComputeDisk, - "google_compute_disk_iam_policy": dataGoogleComputeDiskIamPolicy, - "google_compute_forwarding_rule": dataGoogleComputeForwardingRule, - "google_compute_global_address": dataGoogleComputeGlobalAddress, - "google_compute_global_forwarding_rule": dataGoogleComputeGlobalForwardingRule, - "google_compute_ha_vpn_gateway": dataGoogleComputeHaVpnGateway, - "google_compute_health_check": dataGoogleComputeHealthCheck, - "google_compute_image": placeholder, - "google_compute_image_iam_policy": dataGoogleComputeImageIamPolicy, - "google_compute_instance": dataGoogleComputeInstance, - "google_compute_instance_group": dataGoogleComputeInstanceGroup, - "google_compute_instance_group_manager": dataGoogleComputeInstanceGroupManager, - "google_compute_instance_iam_policy": placeholder, - "google_compute_instance_serial_port": dataGoogleComputeInstanceSerialPort, - "google_compute_instance_template": dataGoogleComputeInstanceTemplate, - "google_compute_lb_ip_ranges": placeholder, - "google_compute_machine_image_iam_policy": dataGoogleComputeMachineImageIamPolicy, - "google_compute_network": dataGoogleComputeNetwork, - "google_compute_network_endpoint_group": dataGoogleComputeNetworkEndpointGroup, - "google_compute_network_peering": placeholder, - "google_compute_networks": dataGoogleComputeNetworks, - "google_compute_node_types": dataGoogleComputeNodeTypes, - "google_compute_region_backend_service_iam_policy": dataGoogleComputeRegionBackendServiceIamPolicy, - "google_compute_region_disk_iam_policy": dataGoogleComputeRegionDiskIamPolicy, - "google_compute_region_instance_group": dataGoogleComputeRegionInstanceGroup, - "google_compute_region_instance_template": dataGoogleComputeRegionInstanceTemplate, - "google_compute_region_network_endpoint_group": dataGoogleComputeRegionNetworkEndpointGroup, - "google_compute_region_ssl_certificate": placeholder, - "google_compute_regions": dataGoogleComputeRegions, - "google_compute_resource_policy": dataGoogleComputeResourcePolicy, - "google_compute_router": dataGoogleComputeRouter, - "google_compute_router_nat": dataGoogleComputeRouterNat, - "google_compute_router_status": dataGoogleComputeRouterStatus, - "google_compute_snapshot": dataGoogleComputeSnapshot, - "google_compute_snapshot_iam_policy": dataGoogleComputeSnapshotIamPolicy, - "google_compute_ssl_certificate": dataGoogleComputeSslCertificate, - "google_compute_ssl_policy": dataGoogleComputeSslPolicy, - "google_compute_subnetwork": dataGoogleComputeSubnetwork, - "google_compute_subnetwork_iam_policy": dataGoogleComputeSubnetworkIamPolicy, - "google_compute_vpn_gateway": dataGoogleComputeVpnGateway, - "google_compute_zones": dataGoogleComputeZones, - "google_container_analysis_note_iam_policy": dataGoogleContainerAnalysisNoteIamPolicy, - "google_container_cluster": dataGoogleContainerCluster, - "google_container_engine_versions": placeholder, - "google_container_registry_image": placeholder, - "google_container_registry_repository": placeholder, - "google_dns_keys": dataGoogleDNSKeys, - "google_dns_managed_zone": dataGoogleDNSManagedZone, - "google_dns_managed_zone_iam_policy": dataGoogleDNSManagedZoneIamPolicy, - "google_dns_record_set": dataGoogleDNSRecordSet, - "google_gke_backup_backup_plan_iam_policy": dataGoogleGkeBackupBackupPlanIamPolicy, - "google_gke_backup_restore_plan_iam_policy": dataGoogleGkeBackupRestorePlanIamPolicy, - "google_gke_hub_feature_iam_policy": dataGoogleGkeHubFeatureIamPolicy, - "google_gke_hub_membership_iam_policy": dataGoogleGkeHubMembershipIamPolicy, - "google_gke_hub_scope_iam_policy": dataGoogleGkeHubScopeIamPolicy, - "google_iam_policy": placeholder, - "google_iam_role": placeholder, - "google_kms_crypto_key": dataGoogleKmsCryptoKey, - "google_kms_crypto_key_iam_policy": dataGoogleKmsCryptoKeyIamPolicy, - "google_kms_crypto_key_version": dataGoogleKmsCryptoKeyVersion, - "google_kms_key_ring": dataGoogleKmsKeyRing, - "google_kms_key_ring_iam_policy": dataGoogleKmsKeyRingIamPolicy, - "google_kms_secret": dataGoogleKmsSecret, - "google_kms_secret_asymmetric": dataGoogleKmsSecretAsymnetric, - "google_kms_secret_ciphertext": placeholder, - "google_project": dataGoogleProject, - "google_project_service": dataGoogleProjectService, - "google_projects": placeholder, - "google_pubsub_subscription": dataGooglePubsubSubscription, - "google_pubsub_subscription_iam_policy": dataGooglePubsubSubscriptionIamPolicy, - "google_pubsub_topic": dataGooglePubsubTopic, - "google_pubsub_topic_iam_policy": dataGooglePubsubTopicIamPolicy, - "google_redis_instance": dataGoogleRedisInstance, - "google_secret_manager_secret": dataGoogleSecretManagerSecret, - "google_secret_manager_secret_iam_policy": dataGoogleSecretManagerSecretIamPolicy, - "google_secret_manager_secret_version": dataGoogleSecretManagerSecretVersion, - "google_secret_manager_secret_version_access": dataGoogleManagerSecretVersionAccess, - "google_service_account": dataGoogleServiceAccount, - "google_service_account_access_token": dataGoogleServiceAccountAccessToken, - "google_service_account_iam_policy": dataGoogleServiceAccountIamPolicy, - "google_service_account_id_token": placeholder, - "google_service_account_jwt": dataGoogleServiceAccountJwt, - "google_service_account_key": dataGoogleServiceAccountKey, - "google_sourcerepo_repository": dataGoogleSourcerepoRepository, - "google_sourcerepo_repository_iam_policy": dataGoogleSourcerepoRepositoryIamPolicy, - "google_spanner_database_iam_policy": dataGoogleSpannerDatabaseIamPolicy, - "google_spanner_instance": dataGoogleSpannerInstance, - "google_spanner_instance_iam_policy": dataGoogleSpannerInstanceIamPolicy, - "google_sql_database": dataGoogleSQLDatabase, - "google_sql_database_instance": dataGoogleSQLDatabaseInstance, - "google_sql_database_instances": dataGoogleSQLDatabaseInstances, - "google_sql_databases": dataGoogleSQLDatabases, - "google_sql_tiers": placeholder, - "google_storage_bucket": dataGoogleStorageBucket, - "google_storage_bucket_iam_policy": dataGoogleStorageBucketIamPolicy, - "google_storage_bucket_object": dataGoogleStorageBucketObject, - "google_storage_bucket_object_content": dataGoogleStorageBucketObjectContent, - "google_storage_object_signed_url": placeholder, - "google_storage_project_service_account": dataGoogleStorageProjectServiceAccount, - "google_storage_transfer_project_service_account": dataGoogleStorageTransferProjectServiceAccount, - "google_vertex_ai_featurestore_entitytype_iam_policy": dataGoogleVertexAiFeaturestoreEntitytypeIamPolicy, - "google_vertex_ai_featurestore_iam_policy": dataGoogleVertexAiFeaturestoreIamPolicy, - "google_cloudbuild_trigger": dataGoogleCloudbuildTrigger, - "google_cloudbuildv2_connection_iam_policy": dataGoogleCloudbuildv2ConnectionIamPolicy, - "google_monitoring_istio_canonical_service": dataGoogleMonitoringIstioCanonicalService, - "google_monitoring_mesh_istio_service": dataGoogleMonitoringMeshIstioService, - "google_monitoring_notification_channel": dataGoogleMonitoringNotificationChannel, - "google_monitoring_uptime_check_ips": placeholder, - "google_tpu_tensorflow_versions": dataGoogleTpuTensorflowVersions, - "google_tpu_v2_accelerator_types": dataGoogleTpuV2AcceleratorTypes, - "google_tpu_v2_runtime_versions": dataGoogleTpuV2RuntimeVersions, - "google_vmwareengine_cluster": placeholder, - "google_vmwareengine_network": dataGoogleVmwareengineNetwork, - "google_vmwareengine_private_cloud": dataGoogleVmwareenginePrivateCloud, - "google_vpc_access_connector": dataGoogleVpcAccessConnector, - "google_workstations_workstation_config_iam_policy": dataGoogleWorkstationsWorkstationConfigIamPolicy, - "google_workstations_workstation_iam_policy": dataGoogleWorkstationsWorkstationIamPolicy, - "google_netblock_ip_ranges": placeholder, - "google_notebooks_instance_iam_policy": dataGoogleNotebooksInstanceIamPolicy, - "google_notebooks_runtime_iam_policy": dataGoogleNotebooksRuntimeIamPolicy, - "google_organization": placeholder, - "google_secret_manager_secrets": dataGoogleSecretManagerSecrets, - "google_tags_tag_key": dataGoogleTagsTagKey, - "google_access_approval_folder_service_account": placeholder, - "google_access_approval_organization_service_account": placeholder, - "google_access_approval_project_service_account": placeholder, - "google_access_context_manager_access_policy_iam_policy": placeholder, - "google_active_folder": placeholder, - "google_bigquery_dataset": placeholder, - "google_billing_account_iam_policy": placeholder, - "google_binary_authorization_attestor_iam_policy": dataGoogleBinaryAuthorizationAttestorIamPolicy, - "google_certificate_manager_certificate_map": dataGoogleCertificateManagerCertificateMap, - "google_cloud_identity_group_lookup": placeholder, - "google_cloud_identity_group_memberships": placeholder, - "google_cloud_identity_groups": placeholder, - "google_cloud_tasks_queue_iam_policy": dataGoogleCloudTasksQueueIamPolicy, - "google_composer_environment": dataGoogleComposerEnvironment, - "google_composer_image_versions": dataGoogleComposerImageVersions, - "google_container_attached_versions": dataGoogleContainerAttachedVersions, - "google_data_catalog_entry_group_iam_policy": placeholder, - "google_data_catalog_policy_tag_iam_policy": placeholder, - "google_data_catalog_tag_template_iam_policy": placeholder, - "google_data_fusion_instance_iam_policy": dataGoogleDataFusionInstanceIamPolicy, - "google_dataplex_asset_iam_policy": dataGoogleDataplexAssetIamPolicy, - "google_dataplex_datascan_iam_policy": dataGoogleDataplexDatascanIamPolicy, - "google_dataplex_lake_iam_policy": dataGoogleDataplexLakeIamPolicy, - "google_dataplex_task_iam_policy": dataGoogleDataplexTaskIamPolicy, - "google_dataplex_zone_iam_policy": dataGoogleDataplexZoneIamPolicy, - "google_dataproc_autoscaling_policy_iam_policy": placeholder, - "google_dataproc_cluster_iam_policy": placeholder, - "google_dataproc_job_iam_policy": placeholder, - "google_dataproc_metastore_federation_iam_policy": dataGoogleDataprocMetaStoreFederationIamPolicy, - "google_dataproc_metastore_service": dataGoogleDataprocMetastoreService, - "google_dataproc_metastore_service_iam_policy": dataGoogleDataprocMetastoreServiceIamPolicy, - "google_datastream_static_ips": dataGoogleDataStreamStaticIps, - "google_endpoints_service_consumers_iam_policy": placeholder, - "google_folder_organization_policy": placeholder, - "google_healthcare_consent_store_iam_policy": dataGoogleHealthcareConsentStoreIamPolicy, - "google_healthcare_dataset_iam_policy": dataGoogleHealthcareDatasetStoreIamPolicy, - "google_healthcare_dicom_store_iam_policy": dataGoogleHealthcareDicomStoreIamPolicy, - "google_healthcare_fhir_store_iam_policy": dataGoogleHealthcareFhirStoreIamPolicy, - "google_healthcare_hl7_v2_store_iam_policy": dataGoogleHealthcareHl7V2StoreIamPolicy, - "google_iam_workload_identity_pool": dataGoogleIamWorkloadIdentityPool, - "google_iam_workload_identity_pool_provider": dataGoogleIamWorkloadIdentityPoolProvider, - "google_iap_app_engine_service_iam_policy": dataGoogleIapAppEngineServiceIamPolicy, - "google_iap_app_engine_version_iam_policy": dataGoogleIapAppEngineVersionIamPolicy, - "google_iap_client": placeholder, - "google_iap_tunnel_iam_policy": dataGoogleIapTunnelIamPolicy, - "google_iap_tunnel_instance_iam_policy": dataGoogleIapTunnelInstanceIamPolicy, - "google_iap_web_backend_service_iam_policy": dataGoogleIapWebBackendServiceIamPolicy, - "google_iap_web_iam_policy": dataGoogleIapWebIamPolicy, - "google_iap_web_region_backend_service_iam_policy": dataGoogleIapWebRegionBackendServiceIamPolicy, - "google_iap_web_type_app_engine_iam_policy": dataGoogleIapWebTypeAppEngineIamPolicy, - "google_iap_web_type_compute_iam_policy": dataGoogleIapWebTypeComputeIamPolicy, - "google_logging_project_cmek_settings": dataGoogleLoggingProjectCmekSettings, - "google_monitoring_app_engine_service": dataGoogleMonitoringAppEngineService, - "google_monitoring_cluster_istio_service": dataGoogleMonitoringClusterIstioService, - "google_vmwareengine_network_policy": dataGoogleVmwareengineNetworkPolicy, - "google_vmwareengine_network_peering": dataGoogleVmwareengineNetworkPeering, - "google_vertex_ai_endpoint_iam_policy": dataGoogleVertexAiEndpointIamPolicy, - "google_vmwareengine_external_address": dataGoogleVmwareengineExternalAddress, - "google_vmwareengine_nsx_credentials": dataGoogleVmwareengineNsxCredentials, - "google_vmwareengine_subnet": dataGoogleVmwareengineSubnet, - "google_vmwareengine_vcenter_credentials": dataGoogleVmwareengineVcenterCredentials, - "google_workbench_instance_iam_policy": dataGoogleWorkbenchInstanceIamPolicy, - "google_vmwareengine_external_access_rule": placeholder, - "google_compute_region_disk": dataGoogleComputeRegionDisk, - "google_compute_reservation": dataGoogleComputeReservation, - "google_filestore_instance": dataGoogleFilestoreInstance, - "google_logging_project_settings": dataGoogleLoggingProjectSettings, - "google_billing_account": placeholder, - "google_logging_folder_settings": placeholder, - "google_logging_organization_settings": placeholder, - "google_network_security_address_group_iam_policy": dataGoogleSecurityAddressGroupIamPolicy, - "google_service_directory_namespace_iam_policy": dataGoogleServiceDirectoryNamespaceIamPolicy, - "google_service_directory_service_iam_policy": dataGoogleServiceDirectoryServiceIamPolicy, - "google_sql_backup_run": dataGoogleSQLBackupRun, - "google_sql_ca_certs": placeholder, - "google_sql_database_instance_latest_recovery_time": dataGoogleSQLDatabaseInstanceLatestRecoveryTime, - "google_data_catalog_taxonomy_iam_policy": dataGoogleDataCatalogTaxonomyIamPolicy, - "google_dataform_repository_iam_policy": dataGoogleDataformRepositoryIamPolicy, - "google_endpoints_service_iam_policy": dataGoogleEndpointsServiceIamPolicy, + "google_access_approval_folder_service_account": placeholder, + "google_access_approval_organization_service_account": placeholder, + "google_access_approval_project_service_account": placeholder, + "google_access_context_manager_access_policy_iam_policy": placeholder, + "google_active_folder": placeholder, + "google_alloydb_cluster": dataGoogleAlloydbCluster, + "google_alloydb_instance": dataGoogleAlloydbInstance, + "google_alloydb_locations": dataGoogleAlloydbLocations, + "google_alloydb_supported_database_flags": dataGoogleAlloydbSupportedDatabaseFlags, + "google_api_gateway_api_config_iam_policy": placeholder, + "google_api_gateway_api_iam_policy": placeholder, + "google_api_gateway_gateway_iam_policy": placeholder, + "google_apigee_environment_iam_policy": placeholder, + "google_app_engine_default_service_account": dataGoogleAppEngineDefaultServiceAccount, + "google_apphub_application": dataGoogleApphubApplication, + "google_apphub_discovered_service": dataGoogleApphubDiscoveredService, + "google_apphub_discovered_workload": dataGoogleApphubDiscoveredWorkload, + "google_artifact_registry_docker_image": dataGoogleArtifactRegistryDockerImage, + "google_artifact_registry_locations": dataGoogleArtifactRegistryLocations, + "google_artifact_registry_repository": dataGoogleArtifactRegistryRepository, + "google_artifact_registry_repository_iam_policy": dataGoogleArtifactRegistryRepositoryIamPolicy, + "google_backup_dr_backup": dataGoogleBackupDrBackup, + "google_backup_dr_backup_plan_association": dataGoogleBackupDrPlanAssociation, + "google_backup_dr_backup_vault": dataGoogleBackupDrBackupVault, + "google_backup_dr_data_source": dataGoogleBackupDrDataSource, + "google_beyondcorp_app_connection": dataGoogleBeyondcorpAppConnection, + "google_beyondcorp_app_connector": dataGoogleBeyondcorpAppConnector, + "google_beyondcorp_app_gateway": dataGoogleBeyondcorpAppGateway, + "google_beyondcorp_application_iam_policy": dataGoogleBeyondcorpApplicationIamPolicy, + "google_beyondcorp_security_gateway": dataGoogleBeyondcorpSecurityGateway, + "google_beyondcorp_security_gateway_application_iam_policy": dataGoogleBeyondcorpSecurityGatewayApplicationIamPolicy, + "google_beyondcorp_security_gateway_iam_policy": dataGoogleBeyondcorpSecurityGatewayIamPolicy, + "google_bigquery_analytics_hub_data_exchange_iam_policy": dataGoogleBigqueryHubDataExchangeIamPolicy, + "google_bigquery_analytics_hub_listing_iam_policy": dataGoogleBigqueryAnalyticsHubListingIamPolicy, + "google_bigquery_connection_iam_policy": placeholder, + "google_bigquery_datapolicy_data_policy_iam_policy": dataGoogleBigqueryDatapolicyDataPolicyIamPolicy, + "google_bigquery_dataset": placeholder, + "google_bigquery_dataset_iam_policy": placeholder, + "google_bigquery_datasets": placeholder, + "google_bigquery_default_service_account": dataGoogleBigqueryDefaultServiceAccount, + "google_bigquery_table": placeholder, + "google_bigquery_table_iam_policy": placeholder, + "google_bigquery_tables": placeholder, + "google_bigtable_instance_iam_policy": dataGoogleBigtableInstanceIamPolicy, + "google_bigtable_table_iam_policy": placeholder, + "google_billing_account": placeholder, + "google_billing_account_iam_policy": placeholder, + "google_binary_authorization_attestor_iam_policy": dataGoogleBinaryAuthorizationAttestorIamPolicy, + "google_certificate_manager_certificate_map": dataGoogleCertificateManagerCertificateMap, + "google_certificate_manager_certificates": dataGoogleCertificateManagerCertificates, + "google_client_config": placeholder, + "google_client_openid_userinfo": placeholder, + "google_cloud_identity_group_lookup": placeholder, + "google_cloud_identity_group_memberships": placeholder, + "google_cloud_identity_groups": placeholder, + "google_cloud_quotas_quota_info": placeholder, + "google_cloud_quotas_quota_infos": placeholder, + "google_cloud_run_locations": dataGoogleCloudRunLocations, + "google_cloud_run_service": dataGoogleCloudRunService, + "google_cloud_run_service_iam_policy": dataGoogleCloudRunServiceIamPolicy, + "google_cloud_run_v2_job": dataGoogleCloudRunV2Job, + "google_cloud_run_v2_job_iam_policy": dataGoogleCloudRunV2JobIamPolicy, + "google_cloud_run_v2_service": dataGoogleCloudRunV2Service, + "google_cloud_run_v2_service_iam_policy": dataGoogleCloudRunV2ServiceIamPolicy, + "google_cloud_run_v2_worker_pool": dataGoogleCloudRunV2WorkerPool, + "google_cloud_run_v2_worker_pool_iam_policy": dataGoogleCloudRunWorkerPoolIamPolicy, + "google_cloud_tasks_queue_iam_policy": dataGoogleCloudTasksQueueIamPolicy, + "google_cloudbuild_trigger": dataGoogleCloudbuildTrigger, + "google_cloudbuildv2_connection_iam_policy": dataGoogleCloudbuildv2ConnectionIamPolicy, + "google_clouddeploy_custom_target_type_iam_policy": dataGoogleClouddeployCustomTargetTypeIamPolicy, + "google_clouddeploy_delivery_pipeline_iam_policy": dataGoogleClouddeployDeliveryPipelineIamPolicy, + "google_clouddeploy_target_iam_policy": dataGoogleClouddeployTargetIamPolicy, + "google_cloudfunctions2_function": dataGoogleCloudfunctionsFunction, + "google_cloudfunctions2_function_iam_policy": dataGoogleCloudfunctionsFunctionIamPolicy, + "google_cloudfunctions_function": dataGoogleCloudfunctionsFunction, + "google_cloudfunctions_function_iam_policy": dataGoogleCloudfunctionsFunctionIamPolicy, + "google_colab_runtime_template_iam_policy": dataGoogleColabRuntimeTemplateIamPolicy, + "google_composer_environment": dataGoogleComposerEnvironment, + "google_composer_image_versions": dataGoogleComposerImageVersions, + "google_composer_user_workloads_config_map": dataGoogleComposerUserWorkloadsConfigMap, + "google_composer_user_workloads_secret": dataGoogleComposerUserWorkloadsSecret, + "google_compute_address": dataGoogleComputeAddress, + "google_compute_addresses": dataGoogleComputeAddresses, + "google_compute_backend_bucket": dataGoogleComputeBackendBucket, + "google_compute_backend_bucket_iam_policy": dataGoogleComputeBackendBucketIamPolicy, + "google_compute_backend_service": dataGoogleComputeBackendService, + "google_compute_backend_service_iam_policy": dataGoogleComputeBackendServiceIamPolicy, + "google_compute_default_service_account": dataGoogleComputeDefaultServiceAccount, + "google_compute_disk": dataGoogleComputeDisk, + "google_compute_disk_iam_policy": dataGoogleComputeDiskIamPolicy, + "google_compute_forwarding_rule": dataGoogleComputeForwardingRule, + "google_compute_forwarding_rules": dataGoogleComputeForwardingRules, + "google_compute_global_address": dataGoogleComputeGlobalAddress, + "google_compute_global_forwarding_rule": dataGoogleComputeGlobalForwardingRule, + "google_compute_ha_vpn_gateway": dataGoogleComputeHaVpnGateway, + "google_compute_health_check": dataGoogleComputeHealthCheck, + "google_compute_image": placeholder, + "google_compute_image_iam_policy": dataGoogleComputeImageIamPolicy, + "google_compute_images": dataGoogleComputeImages, + "google_compute_instance": dataGoogleComputeInstance, + "google_compute_instance_group": dataGoogleComputeInstanceGroup, + "google_compute_instance_group_manager": dataGoogleComputeInstanceGroupManager, + "google_compute_instance_guest_attributes": dataGoogleComputeInstanceGuestAttributes, + "google_compute_instance_iam_policy": placeholder, + "google_compute_instance_serial_port": dataGoogleComputeInstanceSerialPort, + "google_compute_instance_template": dataGoogleComputeInstanceTemplate, + "google_compute_instance_template_iam_policy": dataGoogleComputeInstanceTemplateIamPolicy, + "google_compute_instant_snapshot_iam_policy": dataGoogleComputeInstantSnapshotIamPolicy, + "google_compute_lb_ip_ranges": placeholder, + "google_compute_machine_image_iam_policy": dataGoogleComputeMachineImageIamPolicy, + "google_compute_machine_types": dataGoogleComputeMachineTypes, + "google_compute_network": dataGoogleComputeNetwork, + "google_compute_network_endpoint_group": dataGoogleComputeNetworkEndpointGroup, + "google_compute_network_peering": placeholder, + "google_compute_networks": dataGoogleComputeNetworks, + "google_compute_node_types": dataGoogleComputeNodeTypes, + "google_compute_region_backend_service": dataGoogleComputeRegionBackendService, + "google_compute_region_backend_service_iam_policy": dataGoogleComputeRegionBackendServiceIamPolicy, + "google_compute_region_disk": dataGoogleComputeRegionDisk, + "google_compute_region_disk_iam_policy": dataGoogleComputeRegionDiskIamPolicy, + "google_compute_region_instance_group": dataGoogleComputeRegionInstanceGroup, + "google_compute_region_instance_group_manager": dataGoogleComputeRegionInstanceGroupManager, + "google_compute_region_instance_template": dataGoogleComputeRegionInstanceTemplate, + "google_compute_region_network_endpoint_group": dataGoogleComputeRegionNetworkEndpointGroup, + "google_compute_region_ssl_certificate": placeholder, + "google_compute_regions": dataGoogleComputeRegions, + "google_compute_reservation": dataGoogleComputeReservation, + "google_compute_resource_policy": dataGoogleComputeResourcePolicy, + "google_compute_router": dataGoogleComputeRouter, + "google_compute_router_nat": dataGoogleComputeRouterNat, + "google_compute_router_status": dataGoogleComputeRouterStatus, + "google_compute_security_policy": dataGoogleComputeSecurityPolicy, + "google_compute_snapshot": dataGoogleComputeSnapshot, + "google_compute_snapshot_iam_policy": dataGoogleComputeSnapshotIamPolicy, + "google_compute_ssl_certificate": dataGoogleComputeSslCertificate, + "google_compute_ssl_policy": dataGoogleComputeSslPolicy, + "google_compute_storage_pool_iam_policy": dataGoogleComputeStoragePoolIamPolicy, + "google_compute_storage_pool_types": dataGoogleComputeStoragePoolTypes, + "google_compute_subnetwork": dataGoogleComputeSubnetwork, + "google_compute_subnetwork_iam_policy": dataGoogleComputeSubnetworkIamPolicy, + "google_compute_subnetworks": dataGoogleComputeSubnetworks, + "google_compute_vpn_gateway": dataGoogleComputeVpnGateway, + "google_compute_zones": dataGoogleComputeZones, + "google_container_analysis_note_iam_policy": dataGoogleContainerAnalysisNoteIamPolicy, + "google_container_attached_install_manifest": dataGoogleContainerAttachedInstallManifest, + "google_container_attached_versions": dataGoogleContainerAttachedVersions, + "google_container_aws_versions": dataGoogleContainerAwsVersions, + "google_container_azure_versions": dataGoogleContainerAzureVersions, + "google_container_cluster": dataGoogleContainerCluster, + "google_container_engine_versions": placeholder, + "google_container_registry_image": placeholder, + "google_container_registry_repository": placeholder, + "google_data_catalog_entry_group_iam_policy": placeholder, + "google_data_catalog_policy_tag_iam_policy": placeholder, + "google_data_catalog_tag_template_iam_policy": placeholder, + "google_data_catalog_taxonomy_iam_policy": dataGoogleDataCatalogTaxonomyIamPolicy, + "google_data_fusion_instance_iam_policy": dataGoogleDataFusionInstanceIamPolicy, + "google_dataform_repository_iam_policy": dataGoogleDataformRepositoryIamPolicy, + "google_dataplex_aspect_type_iam_policy": dataGoogleDataplexAspectTypeIamPolicy, + "google_dataplex_asset_iam_policy": dataGoogleDataplexAssetIamPolicy, + "google_dataplex_datascan_iam_policy": dataGoogleDataplexDatascanIamPolicy, + "google_dataplex_entry_group_iam_policy": dataGoogleDataplexEntryGroupIamPolicy, + "google_dataplex_entry_type_iam_policy": dataGoogleDataplexEntryTypeIamPolicy, + "google_dataplex_glossary_iam_policy": dataGoogleDataplexGlossaryIamPolicy, + "google_dataplex_lake_iam_policy": dataGoogleDataplexLakeIamPolicy, + "google_dataplex_task_iam_policy": dataGoogleDataplexTaskIamPolicy, + "google_dataplex_zone_iam_policy": dataGoogleDataplexZoneIamPolicy, + "google_dataproc_autoscaling_policy_iam_policy": placeholder, + "google_dataproc_cluster_iam_policy": placeholder, + "google_dataproc_job_iam_policy": placeholder, + "google_dataproc_metastore_database_iam_policy": dataGoogleDataprocMetastoreDatabaseIamPolicy, + "google_dataproc_metastore_federation_iam_policy": dataGoogleDataprocMetaStoreFederationIamPolicy, + "google_dataproc_metastore_service": dataGoogleDataprocMetastoreService, + "google_dataproc_metastore_service_iam_policy": dataGoogleDataprocMetastoreServiceIamPolicy, + "google_dataproc_metastore_table_iam_policy": dataGoogleDataprocMetastoreTableIamPolicy, + "google_datastream_static_ips": dataGoogleDataStreamStaticIps, + "google_dns_keys": dataGoogleDNSKeys, + "google_dns_managed_zone": dataGoogleDNSManagedZone, + "google_dns_managed_zones": dataGoogleDNSManagedZones, + "google_dns_managed_zone_iam_policy": dataGoogleDNSManagedZoneIamPolicy, + "google_dns_record_set": dataGoogleDNSRecordSet, + "google_endpoints_service_consumers_iam_policy": placeholder, + "google_endpoints_service_iam_policy": dataGoogleEndpointsServiceIamPolicy, + "google_filestore_instance": dataGoogleFilestoreInstance, + "google_folder": dataGoogleFolder, + "google_folder_iam_policy": dataGoogleFolderIamPolicy, + "google_folder_organization_policy": placeholder, + "google_folders": dataGoogleFolders, + "google_gemini_repository_group_iam_policy": dataGoogleGeminiRepositoryGroupIamPolicy, + "google_gke_backup_backup_plan_iam_policy": dataGoogleGkeBackupBackupPlanIamPolicy, + "google_gke_backup_restore_plan_iam_policy": dataGoogleGkeBackupRestorePlanIamPolicy, + "google_gke_hub_feature": dataGoogleGkeHubFeature, + "google_gke_hub_feature_iam_policy": dataGoogleGkeHubFeatureIamPolicy, + "google_gke_hub_membership": dataGoogleGkeHubMembership, + "google_gke_hub_membership_iam_policy": dataGoogleGkeHubMembershipIamPolicy, + "google_gke_hub_scope_iam_policy": dataGoogleGkeHubScopeIamPolicy, + "google_healthcare_consent_store_iam_policy": dataGoogleHealthcareConsentStoreIamPolicy, + "google_healthcare_dataset_iam_policy": dataGoogleHealthcareDatasetStoreIamPolicy, + "google_healthcare_dicom_store_iam_policy": dataGoogleHealthcareDicomStoreIamPolicy, + "google_healthcare_fhir_store_iam_policy": dataGoogleHealthcareFhirStoreIamPolicy, + "google_healthcare_hl7_v2_store_iam_policy": dataGoogleHealthcareHl7V2StoreIamPolicy, + "google_iam_policy": placeholder, + "google_iam_role": placeholder, + "google_iam_workload_identity_pool": dataGoogleIamWorkloadIdentityPool, + "google_iam_workload_identity_pool_iam_policy": dataGoogleIamWorkloadIdentityPoolIamPolicy, + "google_iam_workload_identity_pool_provider": dataGoogleIamWorkloadIdentityPoolProvider, + "google_iap_app_engine_service_iam_policy": dataGoogleIapAppEngineServiceIamPolicy, + "google_iap_app_engine_version_iam_policy": dataGoogleIapAppEngineVersionIamPolicy, + "google_iap_client": placeholder, + "google_iap_tunnel_dest_group_iam_policy": dataGoogleIapTunnelDestGroupIamPolicy, + "google_iap_tunnel_iam_policy": dataGoogleIapTunnelIamPolicy, + "google_iap_tunnel_instance_iam_policy": dataGoogleIapTunnelInstanceIamPolicy, + "google_iap_web_backend_service_iam_policy": dataGoogleIapWebBackendServiceIamPolicy, + "google_iap_web_cloud_run_service_iam_policy": dataGoogleIapWebCloudRunServiceIamPolicy, + "google_iap_web_iam_policy": dataGoogleIapWebIamPolicy, + "google_iap_web_region_backend_service_iam_policy": dataGoogleIapWebRegionBackendServiceIamPolicy, + "google_iap_web_type_app_engine_iam_policy": dataGoogleIapWebTypeAppEngineIamPolicy, + "google_iap_web_type_compute_iam_policy": dataGoogleIapWebTypeComputeIamPolicy, + "google_kms_autokey_config": placeholder, + "google_kms_crypto_key": dataGoogleKmsCryptoKey, + "google_kms_crypto_key_iam_policy": dataGoogleKmsCryptoKeyIamPolicy, + "google_kms_crypto_key_latest_version": placeholder, + "google_kms_crypto_key_version": dataGoogleKmsCryptoKeyVersion, + "google_kms_crypto_key_versions": placeholder, + "google_kms_crypto_keys": placeholder, + "google_kms_ekm_connection_iam_policy": dataGoogleEkmConnectionIamPolicy, + "google_kms_key_handle": dataGoogleKmsKeyHandle, + "google_kms_key_handles": dataGoogleKmsKeyHandles, + "google_kms_key_ring": dataGoogleKmsKeyRing, + "google_kms_key_ring_iam_policy": dataGoogleKmsKeyRingIamPolicy, + "google_kms_key_rings": dataGoogleKmsKeyRings, + "google_kms_secret": dataGoogleKmsSecret, + "google_kms_secret_asymmetric": dataGoogleKmsSecretAsymnetric, + "google_kms_secret_ciphertext": placeholder, + "google_logging_folder_settings": placeholder, + "google_logging_log_view_iam_policy": placeholder, + "google_logging_organization_settings": placeholder, + "google_logging_project_cmek_settings": dataGoogleLoggingProjectCmekSettings, + "google_logging_project_settings": dataGoogleLoggingProjectSettings, + "google_lustre_instance": dataGoogleLustreInstance, + "google_memcache_instance": dataGoogleMemcacheInstance, + "google_memorystore_instance": dataGoogleMemorystoreInstance, + "google_monitoring_app_engine_service": dataGoogleMonitoringAppEngineService, + "google_monitoring_cluster_istio_service": dataGoogleMonitoringClusterIstioService, + "google_monitoring_istio_canonical_service": dataGoogleMonitoringIstioCanonicalService, + "google_monitoring_mesh_istio_service": dataGoogleMonitoringMeshIstioService, + "google_monitoring_notification_channel": dataGoogleMonitoringNotificationChannel, + "google_monitoring_uptime_check_ips": placeholder, + "google_netblock_ip_ranges": placeholder, + "google_network_security_address_group_iam_policy": dataGoogleSecurityAddressGroupIamPolicy, + "google_notebooks_instance_iam_policy": dataGoogleNotebooksInstanceIamPolicy, + "google_notebooks_runtime_iam_policy": dataGoogleNotebooksRuntimeIamPolicy, + "google_oracle_database_autonomous_database": dataGoogleOracleDatabaseAutonomousDatabase, + "google_oracle_database_autonomous_databases": dataGoogleOracleDatabaseAutonomousDatabases, + "google_oracle_database_cloud_exadata_infrastructure": dataGoogleOracleDatabaseCloudExadataInfrastructure, + "google_oracle_database_cloud_exadata_infrastructures": dataGoogleOracleDatabaseCloudExadataInfrastructures, + "google_oracle_database_cloud_vm_cluster": dataGoogleOracleDatabaseCloudVMCluster, + "google_oracle_database_cloud_vm_clusters": dataGoogleOracleDatabaseCloudVMClusters, + "google_oracle_database_db_nodes": dataGoogleOracleDatabaseDBNodes, + "google_oracle_database_db_servers": dataGoogleOracleDatabaseDBServers, + "google_organization": placeholder, + "google_organization_iam_policy": dataGoogleOrganizationIamPolicy, + "google_parameter_manager_parameter": dataGoogleParameterManagerParameter, + "google_parameter_manager_parameter_version": dataGoogleParameterManagerParameterVersion, + "google_parameter_manager_parameter_version_render": dataGoogleParameterManagerParameterVersionRender, + "google_parameter_manager_parameters": dataGoogleParameterManagerParameters, + "google_parameter_manager_regional_parameter": dataGoogleParameterManagerRegionalParameter, + "google_parameter_manager_regional_parameter_version": dataGoogleParameterManagerRegionalParameterVersion, + "google_parameter_manager_regional_parameter_version_render": dataGoogleParameterManagerRegionalParameterVersionRender, + "google_parameter_manager_regional_parameters": dataGoogleParameterManagerRegionalParameters, + "google_privateca_ca_pool_iam_policy": dataGooglePrivatecaCaPoolIamPolicy, + "google_privateca_certificate_authority": dataGooglePrivatecaCertificateAuthority, + "google_privateca_certificate_template_iam_policy": dataGooglePrivatecaCertificateTemplateIamPolicy, + "google_privileged_access_manager_entitlement": dataGooglePrivilegedAccessManagerEntitlement, + "google_project": dataGoogleProject, + "google_project_iam_custom_role": dataGoogleProjectIamCustomRole, + "google_project_iam_custom_roles": dataGoogleProjectIamCustomRoles, + "google_project_iam_policy": dataGoogleProjectIamPolicy, + "google_project_organization_policy": dataGoogleProjectOrganizationPolicy, + "google_project_service": dataGoogleProjectService, + "google_projects": placeholder, + "google_pubsub_schema_iam_policy": placeholder, + "google_pubsub_subscription": dataGooglePubsubSubscription, + "google_pubsub_subscription_iam_policy": dataGooglePubsubSubscriptionIamPolicy, + "google_pubsub_topic": dataGooglePubsubTopic, + "google_pubsub_topic_iam_policy": dataGooglePubsubTopicIamPolicy, + "google_redis_instance": dataGoogleRedisInstance, + "google_runtimeconfig_config_iam_policy": dataGoogleRuntimeconfigConfigIamPolicy, + "google_scc_source_iam_policy": dataGoogleSccSourceIamPolicy, + "google_scc_v2_organization_source_iam_policy": dataGoogleSccV2OrganizationSourceIamPolicy, + "google_secret_manager_regional_secret": dataGoogleSecretManagerRegionalSecret, + "google_secret_manager_regional_secret_iam_policy": dataGoogleSecretManagerRegionalSecretIamPolicy, + "google_secret_manager_regional_secret_version": dataGoogleSecretManagerRegionalSecretVersion, + "google_secret_manager_regional_secret_version_access": dataGoogleSecretManagerRegionalSecretVersionAccess, + "google_secret_manager_regional_secrets": dataGoogleSecretManagerRegionalSecrets, + "google_secret_manager_secret": dataGoogleSecretManagerSecret, + "google_secret_manager_secret_iam_policy": dataGoogleSecretManagerSecretIamPolicy, + "google_secret_manager_secret_version": dataGoogleSecretManagerSecretVersion, + "google_secret_manager_secret_version_access": dataGoogleManagerSecretVersionAccess, + "google_secret_manager_secrets": dataGoogleSecretManagerSecrets, + "google_secure_source_manager_instance_iam_policy": dataGoogleSecureSourceManagerInstanceIamPolicy, + "google_secure_source_manager_repository_iam_policy": dataGoogleSecureSourceManagerRepositoryIamPolicy, + "google_service_account": dataGoogleServiceAccount, + "google_service_account_access_token": dataGoogleServiceAccountAccessToken, + "google_service_account_iam_policy": dataGoogleServiceAccountIamPolicy, + "google_service_account_id_token": placeholder, + "google_service_account_jwt": dataGoogleServiceAccountJwt, + "google_service_account_key": dataGoogleServiceAccountKey, + "google_service_accounts": dataGoogleServiceAccounts, + "google_service_directory_namespace_iam_policy": dataGoogleServiceDirectoryNamespaceIamPolicy, + "google_service_directory_service_iam_policy": dataGoogleServiceDirectoryServiceIamPolicy, + "google_sourcerepo_repository": dataGoogleSourcerepoRepository, + "google_sourcerepo_repository_iam_policy": dataGoogleSourcerepoRepositoryIamPolicy, + "google_spanner_database": dataGoogleSpannerDatabase, + "google_spanner_database_iam_policy": dataGoogleSpannerDatabaseIamPolicy, + "google_spanner_instance": dataGoogleSpannerInstance, + "google_spanner_instance_iam_policy": dataGoogleSpannerInstanceIamPolicy, + "google_sql_backup_run": dataGoogleSQLBackupRun, + "google_sql_ca_certs": placeholder, + "google_sql_database": dataGoogleSQLDatabase, + "google_sql_database_instance": dataGoogleSQLDatabaseInstance, + "google_sql_database_instance_latest_recovery_time": dataGoogleSQLDatabaseInstanceLatestRecoveryTime, + "google_sql_database_instances": dataGoogleSQLDatabaseInstances, + "google_sql_databases": dataGoogleSQLDatabases, + "google_sql_tiers": placeholder, + "google_storage_bucket": dataGoogleStorageBucket, + "google_storage_bucket_iam_policy": dataGoogleStorageBucketIamPolicy, + "google_storage_bucket_object": dataGoogleStorageBucketObject, + "google_storage_bucket_object_content": dataGoogleStorageBucketObjectContent, + "google_storage_bucket_objects": dataGoogleStorageBucketObjects, + "google_storage_buckets": dataGoogleStorageBuckets, + "google_storage_object_signed_url": placeholder, + "google_storage_project_service_account": dataGoogleStorageProjectServiceAccount, + "google_storage_transfer_project_service_account": dataGoogleStorageTransferProjectServiceAccount, + "google_tags_tag_key": dataGoogleTagsTagKey, + "google_tags_tag_key_iam_policy": dataGoogleTagsTagKeyIamPolicy, + "google_tags_tag_value_iam_policy": dataGoogleTagsTagValueIamPolicy, + "google_tpu_tensorflow_versions": dataGoogleTpuTensorflowVersions, + "google_tpu_v2_accelerator_types": dataGoogleTpuV2AcceleratorTypes, + "google_tpu_v2_runtime_versions": dataGoogleTpuV2RuntimeVersions, + "google_vertex_ai_endpoint_iam_policy": dataGoogleVertexAiEndpointIamPolicy, + "google_vertex_ai_feature_group_iam_policy": dataGoogleVertexAiFeatureGroupIamPolicy, + "google_vertex_ai_feature_online_store_featureview_iam_policy": dataGoogleVertexAiFeatureOnlineStoreFeatureviewIamPolicy, + "google_vertex_ai_feature_online_store_iam_policy": dataGoogleVertexAiFeatureOnlineStoreIamPolicy, + "google_vertex_ai_featurestore_entitytype_iam_policy": dataGoogleVertexAiFeaturestoreEntitytypeIamPolicy, + "google_vertex_ai_featurestore_iam_policy": dataGoogleVertexAiFeaturestoreIamPolicy, + "google_vmwareengine_cluster": placeholder, + "google_vmwareengine_external_access_rule": placeholder, + "google_vmwareengine_external_address": dataGoogleVmwareengineExternalAddress, + "google_vmwareengine_network": dataGoogleVmwareengineNetwork, + "google_vmwareengine_network_peering": dataGoogleVmwareengineNetworkPeering, + "google_vmwareengine_network_policy": dataGoogleVmwareengineNetworkPolicy, + "google_vmwareengine_nsx_credentials": dataGoogleVmwareengineNsxCredentials, + "google_vmwareengine_private_cloud": dataGoogleVmwareenginePrivateCloud, + "google_vmwareengine_subnet": dataGoogleVmwareengineSubnet, + "google_vmwareengine_vcenter_credentials": dataGoogleVmwareengineVcenterCredentials, + "google_vpc_access_connector": dataGoogleVpcAccessConnector, + "google_workbench_instance_iam_policy": dataGoogleWorkbenchInstanceIamPolicy, + "google_workstations_workstation_config_iam_policy": dataGoogleWorkstationsWorkstationConfigIamPolicy, + "google_workstations_workstation_iam_policy": dataGoogleWorkstationsWorkstationIamPolicy, + "google_tags_tag_keys": dataGoogleTagsTagKeys, + "google_tags_tag_value": dataGoogleTagsTagValue, + "google_tags_tag_values": dataGoogleTagsTagValues, + "google_storage_control_folder_intelligence_config": dataGoogleStorageControlFolderIntelligenceConfig, + "google_storage_control_organization_intelligence_config": dataGoogleStorageControlOrganizationIntelligenceConfig, + "google_storage_control_project_intelligence_config": dataGoogleStorageControlProjectIntelligenceConfig, + "google_site_verification_token": placeholder, + "google_runtimeconfig_config": dataGoogleRuntimeconfigConfig, + "google_runtimeconfig_variable": dataGoogleRuntimeconfigVariable, + "google_redis_cluster": dataGoogleRedisCluster, + "google_project_ancestry": dataGoogleProjectAncestry, + "google_access_context_manager_access_policy": dataGoogleAccessContextManagerAccessPolicy, + "google_cloud_identity_group_transitive_memberships": placeholder, + "google_dataplex_data_quality_rules": dataGoogleDataplexDataQualityRules, + "google_firebase_android_app_config": placeholder, + "google_firebase_apple_app_config": placeholder, + "google_firebase_web_app_config": placeholder, + "google_organizations": placeholder, + "google_organization_iam_custom_role": dataGoogleOrganizationIamCustomRole, + "google_organization_iam_custom_roles": dataGoogleOrganizationIamCustomRoles, + "google_compute_network_attachment": dataGoogleComputeNetworkAttachment, + "google_storage_insights_dataset_config": dataGoogleStorageInsightsDatasetConfig, + "google_artifact_registry_docker_images": dataGoogleArtifactRegistryDockerImages, + "google_iam_workforce_pool_iam_policy": dataGoogleIamWorkforcePoolIamPolicy, + "google_artifact_registry_repositories": dataGoogleArtifactRegistryRepositories, + "google_artifact_registry_version": dataGoogleArtifactRegistryVersion, + "google_artifact_registry_versions": dataGoogleArtifactRegistryVersions, + "google_artifact_registry_npm_package": dataGoogleArtifactRegistryNpmPackage, + "google_artifact_registry_tags": dataGoogleArtifactRegistryTags, + "google_iap_web_region_forwarding_rule_service_iam_policy": dataGoogleIapWebRegionForwardingRuleServiceIamPolicy, + "google_certificate_manager_dns_authorization": dataGoogleCertificateManagerDnsAuthorization, + "google_artifact_registry_python_package": dataGoogleArtifactRegistryPythonPackage, + "google_backup_dr_backup_plan_associations": dataGoogleBackupDrPlanAssociations, + "google_backup_dr_data_source_reference": dataGoogleBackupDrDataSourceReference, + "google_backup_dr_data_source_references": dataGoogleBackupDrDataSourceReferences, + "google_bigquery_datapolicyv2_data_policy_iam_policy": dataGoogleBigqueryDatapolicyv2DataPolicyIamPolicy, + "google_iap_web_forwarding_rule_service_iam_policy": dataGoogleIapForwardingRuleServiceIamPolicy, + "google_artifact_registry_maven_artifact": dataGoogleArtifactRegistryMavenArtifact, + "google_artifact_registry_maven_artifacts": dataGoogleArtifactRegistryMavenArtifacts, + "google_artifact_registry_npm_packages": dataGoogleArtifactRegistryNpmPackages, + "google_compute_interconnect_location": dataGoogleComputeInterconnectLocation, + "google_compute_interconnect_locations": dataGoogleComputeInterconnectLocations, + "google_artifact_registry_packages": dataGoogleArtifactRegistryPackages, } return TFLookup[result] diff --git a/src/gcp_policy.go b/src/gcp_policy.go index 4c12d89c..7dd80fd8 100644 --- a/src/gcp_policy.go +++ b/src/gcp_policy.go @@ -2,9 +2,18 @@ package pike import ( "bytes" + "context" _ "embed" // required for embed + "os" + "path/filepath" + "runtime" "strings" "text/template" + + //"github.com/go-git/go-git/v5/plumbing/format/config" + "golang.org/x/oauth2/google" + "google.golang.org/api/compute/v1" + "gopkg.in/ini.v1" ) const ( @@ -17,8 +26,8 @@ const ( var policyGCPTemplate []byte // GCPPolicy create an IAM policy. -func GCPPolicy(permissions []string) (string, error) { - if permissions == nil { +func GCPPolicy(permissions []string, policyName string) (string, error) { + if permissions == nil || len(permissions) == 0 { return "", &emptyPermissionsError{} } @@ -32,11 +41,23 @@ func GCPPolicy(permissions []string) (string, error) { Permissions string // Comma-separated list of permissions } - PolicyName := defaultPolicyName + var PolicyName string + + if policyName != "" { + PolicyName = policyName + } else { + PolicyName = defaultPolicyName + } + + project, err := getCurrentProject() + if err != nil { + project = defaultProject + } + theDetails := gCPPolicyDetails{ Name: PolicyName, - Project: defaultProject, - RoleID: defaultRoleID, + Project: project, + RoleID: PolicyName, Permissions: test, } @@ -54,3 +75,45 @@ func GCPPolicy(permissions []string) (string, error) { return output.String(), nil } + +func getCurrentProject() (string, error) { + //many different ways to ensure that a value for a GCP project is found + if os.Getenv("GOOGLE_CLOUD_PROJECT") != "" { + return os.Getenv("GOOGLE_CLOUD_PROJECT"), nil + } + + if os.Getenv("GOOGLE_PROJECT") != "" { + return os.Getenv("GOOGLE_PROJECT"), nil + } + + if os.Getenv("GCP_PROJECT") != "" { + return os.Getenv("GCP_PROJECT"), nil + } + + ctx := context.Background() + credentials, err := google.FindDefaultCredentials(ctx, compute.ComputeScope) + + var configPath string + if err != nil || credentials.ProjectID == "" { + //gcloud info --format='value(config.paths.global_config_dir)' + if runtime.GOOS != "windows" { + configPath = filepath.Join(os.Getenv("HOME"), ".config", "gcloud", "configurations", "config_default") + } else { + configPath = filepath.Join(os.Getenv("APPDATA"), "gcloud", "configurations", "config_default") + } + + config, err := ini.Load(configPath) + + if err != nil { + return "", err + } + + projectID := config.Section("core").Key("project").String() + + return projectID, nil + } + result := credentials.ProjectID + + return result, nil + +} diff --git a/src/gcp_policy_test.go b/src/gcp_policy_test.go index f091ae54..16fdab3d 100644 --- a/src/gcp_policy_test.go +++ b/src/gcp_policy_test.go @@ -1,15 +1,16 @@ -package pike_test +package pike import ( _ "embed" + "os" + "path/filepath" + "runtime" "testing" - - pike "github.com/jameswoolfenden/pike/src" ) func TestGCPPolicy(t *testing.T) { t.Parallel() - + _ = os.Setenv("GCP_PROJECT", "pike-412922") type args struct { permissions []string } @@ -23,16 +24,22 @@ func TestGCPPolicy(t *testing.T) { { "basic", args{[]string{"bigquery.datasets.create", "bigquery.jobs.create"}}, - "resource\"google_project_iam_custom_role\"\"terraform_pike\"{project=\"pike\"role_id=\"terraform_pike\"title=\"terraform_pike\"description=\"Auserwithleastprivileges\"permissions=[\"bigquery.datasets.create\",\"bigquery.jobs.create\"]}", + "resource\"google_project_iam_custom_role\"\"terraform_pike\"{project=\"pike-412922\"role_id=\"terraform_pike\"title=\"terraform_pike\"description=\"Auserwithleastprivileges\"permissions=[\"bigquery.datasets.create\",\"bigquery.jobs.create\"]}", false, }, + { + "empty", + args{[]string{}}, + "", + true, + }, } for _, tt := range tests { tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() - got, err := pike.GCPPolicy(tt.args.permissions) + got, err := GCPPolicy(tt.args.permissions, "") if (err != nil) != tt.wantErr { t.Errorf("GCPPolicy() error = %v, wantErr %v", err, tt.wantErr) @@ -50,3 +57,324 @@ func TestGCPPolicy(t *testing.T) { }) } } + +func TestGetCurrentProject_EnvironmentVariables(t *testing.T) { + // Save original environment + originalGoogleCloudProject := os.Getenv("GOOGLE_CLOUD_PROJECT") + originalGoogleProject := os.Getenv("GOOGLE_PROJECT") + originalGcpProject := os.Getenv("GCP_PROJECT") + + // Clean up after test + defer func() { + _ = os.Setenv("GOOGLE_CLOUD_PROJECT", originalGoogleCloudProject) + _ = os.Setenv("GOOGLE_PROJECT", originalGoogleProject) + _ = os.Setenv("GCP_PROJECT", originalGcpProject) + }() + + tests := []struct { + name string + googleCloudProject string + googleProject string + gcpProject string + expectedProject string + }{ + { + name: "GOOGLE_CLOUD_PROJECT takes precedence", + googleCloudProject: "test-project-1", + googleProject: "test-project-2", + gcpProject: "test-project-3", + expectedProject: "test-project-1", + }, + { + name: "GOOGLE_PROJECT when GOOGLE_CLOUD_PROJECT empty", + googleProject: "test-project-2", + gcpProject: "test-project-3", + expectedProject: "test-project-2", + }, + { + name: "GCP_PROJECT when others empty", + gcpProject: "test-project-3", + expectedProject: "test-project-3", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + // Clear all environment variables + _ = os.Unsetenv("GOOGLE_CLOUD_PROJECT") + _ = os.Unsetenv("GOOGLE_PROJECT") + _ = os.Unsetenv("GCP_PROJECT") + + // Set test values + if tt.googleCloudProject != "" { + _ = os.Setenv("GOOGLE_CLOUD_PROJECT", tt.googleCloudProject) + } + if tt.googleProject != "" { + _ = os.Setenv("GOOGLE_PROJECT", tt.googleProject) + } + if tt.gcpProject != "" { + _ = os.Setenv("GCP_PROJECT", tt.gcpProject) + } + + project, err := getCurrentProject() + if err != nil { + t.Fatalf("Expected no error, got: %v", err) + } + + if project != tt.expectedProject { + t.Errorf("Expected project %s, got %s", tt.expectedProject, project) + } + }) + } +} + +func TestGetCurrentProject_GcloudConfigFile(t *testing.T) { + // Save original environment + originalGoogleCloudProject := os.Getenv("GOOGLE_CLOUD_PROJECT") + originalGoogleProject := os.Getenv("GOOGLE_PROJECT") + originalGcpProject := os.Getenv("GCP_PROJECT") + originalHome := os.Getenv("HOME") + originalAppData := os.Getenv("APPDATA") + + // Clean up after test + defer func() { + _ = os.Setenv("GOOGLE_CLOUD_PROJECT", originalGoogleCloudProject) + _ = os.Setenv("GOOGLE_PROJECT", originalGoogleProject) + _ = os.Setenv("GCP_PROJECT", originalGcpProject) + _ = os.Setenv("HOME", originalHome) + _ = os.Setenv("APPDATA", originalAppData) + }() + + // Clear environment variables to force config file reading + _ = os.Unsetenv("GOOGLE_CLOUD_PROJECT") + _ = os.Unsetenv("GOOGLE_PROJECT") + _ = os.Unsetenv("GCP_PROJECT") + + // Create temporary directory structure + tempDir := t.TempDir() + + var configPath string + if runtime.GOOS != "windows" { + _ = os.Setenv("HOME", tempDir) + configPath = filepath.Join(tempDir, ".config", "gcloud", "configurations", "config_default") + } else { + _ = os.Setenv("APPDATA", tempDir) + configPath = filepath.Join(tempDir, "gcloud", "configurations", "config_default") + } + + // Create directory structure + err := os.MkdirAll(filepath.Dir(configPath), 0755) + if err != nil { + t.Fatalf("Failed to create config directory: %v", err) + } + + // Create config file with project + configContent := `[core] +project = test-config-project +account = test@example.com + +[compute] +region = us-central1 +zone = us-central1-a +` + + err = os.WriteFile(configPath, []byte(configContent), 0644) + if err != nil { + t.Fatalf("Failed to write config file: %v", err) + } + + project, err := getCurrentProject() + if err != nil { + t.Fatalf("Expected no error, got: %v", err) + } + + if project != "test-config-project" { + t.Errorf("Expected project 'test-config-project', got '%s'", project) + } +} + +func TestGetCurrentProject_EmptyEnvironmentVariables(t *testing.T) { + // Save original environment + originalGoogleCloudProject := os.Getenv("GOOGLE_CLOUD_PROJECT") + originalGoogleProject := os.Getenv("GOOGLE_PROJECT") + originalGcpProject := os.Getenv("GCP_PROJECT") + + // Clean up after test + defer func() { + _ = os.Setenv("GOOGLE_CLOUD_PROJECT", originalGoogleCloudProject) + _ = os.Setenv("GOOGLE_PROJECT", originalGoogleProject) + _ = os.Setenv("GCP_PROJECT", originalGcpProject) + }() + + // Test empty string environment variables (should be treated as not set) + _ = os.Setenv("GOOGLE_CLOUD_PROJECT", "") + _ = os.Setenv("GOOGLE_PROJECT", "") + _ = os.Setenv("GCP_PROJECT", "") + + // This will likely fail due to no credentials or config file, but we're testing the logic + _, err := getCurrentProject() + // We expect an error since no valid project source is available + if err == nil { + t.Log("No error returned - likely found valid credentials or config file") + } +} + +func TestGetCurrentProject_MissingConfigFile(t *testing.T) { + // Save original environment + originalGoogleCloudProject := os.Getenv("GOOGLE_CLOUD_PROJECT") + originalGoogleProject := os.Getenv("GOOGLE_PROJECT") + originalGcpProject := os.Getenv("GCP_PROJECT") + originalHome := os.Getenv("HOME") + originalAppData := os.Getenv("APPDATA") + + // Clean up after test + defer func() { + _ = os.Setenv("GOOGLE_CLOUD_PROJECT", originalGoogleCloudProject) + _ = os.Setenv("GOOGLE_PROJECT", originalGoogleProject) + _ = os.Setenv("GCP_PROJECT", originalGcpProject) + _ = os.Setenv("HOME", originalHome) + _ = os.Setenv("APPDATA", originalAppData) + }() + + // Clear environment variables + _ = os.Unsetenv("GOOGLE_CLOUD_PROJECT") + _ = os.Unsetenv("GOOGLE_PROJECT") + _ = os.Unsetenv("GCP_PROJECT") + + // Set HOME/APPDATA to non-existent directory + tempDir := t.TempDir() + nonExistentDir := filepath.Join(tempDir, "nonexistent") + + if runtime.GOOS != "windows" { + _ = os.Setenv("HOME", nonExistentDir) + } else { + _ = os.Setenv("APPDATA", nonExistentDir) + } + + _, err := getCurrentProject() + if err == nil { + t.Log("No error returned - likely found valid credentials") + } +} + +func TestGetCurrentProject_InvalidConfigFile(t *testing.T) { + // Save original environment + originalGoogleCloudProject := os.Getenv("GOOGLE_CLOUD_PROJECT") + originalGoogleProject := os.Getenv("GOOGLE_PROJECT") + originalGcpProject := os.Getenv("GCP_PROJECT") + originalHome := os.Getenv("HOME") + originalAppData := os.Getenv("APPDATA") + + // Clean up after test + defer func() { + _ = os.Setenv("GOOGLE_CLOUD_PROJECT", originalGoogleCloudProject) + _ = os.Setenv("GOOGLE_PROJECT", originalGoogleProject) + _ = os.Setenv("GCP_PROJECT", originalGcpProject) + _ = os.Setenv("HOME", originalHome) + _ = os.Setenv("APPDATA", originalAppData) + }() + + // Clear environment variables + _ = os.Unsetenv("GOOGLE_CLOUD_PROJECT") + _ = os.Unsetenv("GOOGLE_PROJECT") + _ = os.Unsetenv("GCP_PROJECT") + + // Create temporary directory structure + tempDir := t.TempDir() + + var configPath string + if runtime.GOOS != "windows" { + _ = os.Setenv("HOME", tempDir) + configPath = filepath.Join(tempDir, ".config", "gcloud", "configurations", "config_default") + } else { + _ = os.Setenv("APPDATA", tempDir) + configPath = filepath.Join(tempDir, "gcloud", "configurations", "config_default") + } + + // Create directory structure + err := os.MkdirAll(filepath.Dir(configPath), 0755) + if err != nil { + t.Fatalf("Failed to create config directory: %v", err) + } + + // Create invalid config file + invalidConfigContent := `[core +project = test-project +invalid ini format +` + + err = os.WriteFile(configPath, []byte(invalidConfigContent), 0644) + if err != nil { + t.Fatalf("Failed to write invalid config file: %v", err) + } + + _, err = getCurrentProject() + if err == nil { + t.Log("No error returned - likely found valid credentials or ini parser was lenient") + } +} + +func TestGetCurrentProject_ConfigFileWithoutProject(t *testing.T) { + // Save original environment + originalGoogleCloudProject := os.Getenv("GOOGLE_CLOUD_PROJECT") + originalGoogleProject := os.Getenv("GOOGLE_PROJECT") + originalGcpProject := os.Getenv("GCP_PROJECT") + originalHome := os.Getenv("HOME") + originalAppData := os.Getenv("APPDATA") + + // Clean up after test + defer func() { + _ = os.Setenv("GOOGLE_CLOUD_PROJECT", originalGoogleCloudProject) + _ = os.Setenv("GOOGLE_PROJECT", originalGoogleProject) + _ = os.Setenv("GCP_PROJECT", originalGcpProject) + _ = os.Setenv("HOME", originalHome) + _ = os.Setenv("APPDATA", originalAppData) + }() + + // Clear environment variables + _ = os.Unsetenv("GOOGLE_CLOUD_PROJECT") + _ = os.Unsetenv("GOOGLE_PROJECT") + _ = os.Unsetenv("GCP_PROJECT") + + // Create temporary directory structure + tempDir := t.TempDir() + + var configPath string + if runtime.GOOS != "windows" { + _ = os.Setenv("HOME", tempDir) + configPath = filepath.Join(tempDir, ".config", "gcloud", "configurations", "config_default") + } else { + _ = os.Setenv("APPDATA", tempDir) + configPath = filepath.Join(tempDir, "gcloud", "configurations", "config_default") + } + + // Create directory structure + err := os.MkdirAll(filepath.Dir(configPath), 0755) + if err != nil { + t.Fatalf("Failed to create config directory: %v", err) + } + + // Create config file without project + configContent := `[core] +account = test@example.com + +[compute] +region = us-central1 +zone = us-central1-a +` + + err = os.WriteFile(configPath, []byte(configContent), 0644) + if err != nil { + t.Fatalf("Failed to write config file: %v", err) + } + + project, err := getCurrentProject() + if err != nil { + t.Fatalf("Expected no error, got: %v", err) + } + + // Should return empty string when no project is set in config + if project != "" { + t.Errorf("Expected empty project, got '%s'", project) + } +} diff --git a/src/gcp_test.go b/src/gcp_test.go index 7a8b5074..455a2a36 100644 --- a/src/gcp_test.go +++ b/src/gcp_test.go @@ -61,6 +61,7 @@ func TestGetGCPPermissions(t *testing.T) { "compute.subnetworks.useExternalIp", "compute.instances.setMetadata", "compute.instances.delete", + "compute.instances.get", "compute.instances.delete", }, }, @@ -116,6 +117,7 @@ func TestGetGCPResourcePermissions(t *testing.T) { "compute.subnetworks.useExternalIp", "compute.instances.setMetadata", "compute.instances.delete", + "compute.instances.get", "compute.instances.delete", }, }, diff --git a/src/gitHub.go b/src/gitHub.go index 5a2a7933..718aec96 100644 --- a/src/gitHub.go +++ b/src/gitHub.go @@ -80,7 +80,7 @@ func InvokeGithubDispatchEvent(repository string, workflowFileName string, branc url := "https://api.github.com/repos/" + owner + "/" + repo + "/actions/workflows/" + workflowFileName - err = VerifyURL(url) + err = verifyURL(url) if err != nil { log.Error().Err(err) @@ -180,8 +180,8 @@ func (m *branchNotFoundError) Error() string { return fmt.Sprintf("branch %s not found for repo %s", m.branch, m.repo) } -// VerifyURL tests a url. -func VerifyURL(url string) error { +// verifyURL tests a url. +func verifyURL(url string) error { if //goland:noinspection HttpUrlsUsage strings.Contains(strings.ToLower(url), "http://") { return &insecureProtocolError{} diff --git a/src/gitHub_internal_test.go b/src/gitHub_internal_test.go new file mode 100644 index 00000000..33c4c757 --- /dev/null +++ b/src/gitHub_internal_test.go @@ -0,0 +1,170 @@ +package pike + +import ( + "errors" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestVerifyURL(t *testing.T) { + type args struct { + url string + } + //goland:noinspection HttpUrlsUsage + tests := []struct { + name string + args args + wantErr bool + }{ + {"google", args{"www.google.com"}, true}, + {"http", args{"http://www.google.com"}, true}, + {"https", args{"https://www.google.com"}, false}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := verifyURL(tt.args.url); (err != nil) != tt.wantErr { + t.Errorf("verifyURL() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func Test_gitHubRateLimitingError_Error(t *testing.T) { + tests := []struct { + name string + want string + }{ + {"Invoke", "you are being GitHub Rate-limited"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &gitHubRateLimitingError{} + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_insecureProtocolError_Error(t *testing.T) { + tests := []struct { + name string + want string + }{ + {"Invoke", "insecure protocol"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &insecureProtocolError{} + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_nilResponseError_Error(t *testing.T) { + tests := []struct { + name string + want string + }{ + {"Invoke", "nil response"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &nilResponseError{} + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_nonSuccessError_Error(t *testing.T) { + type fields struct { + response string + err error + } + tests := []struct { + name string + fields fields + want string + }{ + {"Invoke", fields{"test", errors.New("test")}, "non success response test test"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &nonSuccessError{ + response: tt.fields.response, + err: tt.fields.err, + } + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_verifyBranchError_Error(t *testing.T) { + type fields struct { + branch string + repo string + owner string + err error + } + tests := []struct { + name string + fields fields + want string + }{ + {"Invoke", fields{"branchtest", "repotest", "ownertest", errors.New("test")}, "failed to verify branch branchtest repotest ownertest test"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &verifyBranchError{ + branch: tt.fields.branch, + repo: tt.fields.repo, + owner: tt.fields.owner, + err: tt.fields.err, + } + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_verifyURLError_Error(t *testing.T) { + type fields struct { + url string + err error + } + tests := []struct { + name string + fields fields + want string + }{ + {"Invoke", fields{"https://www.google.com", errors.New("test")}, "failed to verify URL https://www.google.com test"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &verifyURLError{ + url: tt.fields.url, + err: tt.fields.err, + } + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_workflowInvokeError_Error(t *testing.T) { + type fields struct { + err error + } + tests := []struct { + name string + fields fields + want string + }{ + {"Invoke", fields{errors.New("test")}, "failed to invoke workflow test"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &workflowInvokeError{ + err: tt.fields.err, + } + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} diff --git a/src/gitHub_test.go b/src/gitHub_test.go index 8a78fd02..3f8c6590 100644 --- a/src/gitHub_test.go +++ b/src/gitHub_test.go @@ -38,26 +38,3 @@ func TestInvokeGithubDispatchEvent(t *testing.T) { }) } } - -func TestVerifyURL(t *testing.T) { - type args struct { - url string - } - //goland:noinspection HttpUrlsUsage - tests := []struct { - name string - args args - wantErr bool - }{ - {"google", args{"www.google.com"}, true}, - {"http", args{"http://www.google.com"}, true}, - {"https", args{"https://www.google.com"}, false}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if err := pike.VerifyURL(tt.args.url); (err != nil) != tt.wantErr { - t.Errorf("VerifyURL() error = %v, wantErr %v", err, tt.wantErr) - } - }) - } -} diff --git a/src/inspect.go b/src/inspect.go index 4b0e87cb..6367f664 100644 --- a/src/inspect.go +++ b/src/inspect.go @@ -44,7 +44,7 @@ func Inspect(directory string, init bool) (PolicyDiff, error) { var Difference PolicyDiff - rawIACPolicy, err := MakePolicy(directory, nil, init, false, "") + rawIACPolicy, err := MakePolicy(directory, nil, init, false, "", "") if err != nil { if errors.Is(err, &emptyIACError{}) { log.Info().Msgf("nothing to do for IAC as %s for directory %s", err, directory) diff --git a/src/inspect_internal_test.go b/src/inspect_internal_test.go new file mode 100644 index 00000000..581c16ad --- /dev/null +++ b/src/inspect_internal_test.go @@ -0,0 +1,274 @@ +package pike + +import ( + "errors" + "reflect" + "testing" + + Identity "github.com/jameswoolfenden/identity/src" + "github.com/stretchr/testify/assert" +) + +func Test_compareAllowError_Error(t *testing.T) { + type fields struct { + err error + } + tests := []struct { + name string + fields fields + want string + }{ + { + "invoke", fields{errors.New("basic")}, "compare allow error basic", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &compareAllowError{ + err: tt.fields.err, + } + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_getIAMError_Error(t *testing.T) { + type fields struct { + err error + } + tests := []struct { + name string + fields fields + want string + }{ + {"invoke", fields{errors.New("test")}, "get IAM error test"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &getIAMError{ + err: tt.fields.err, + } + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_identityParseError_Error(t *testing.T) { + type fields struct { + err error + } + tests := []struct { + name string + fields fields + want string + }{ + {"invoke", fields{errors.New("test")}, "Identity parsing error test"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &identityParseError{ + err: tt.fields.err, + } + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func TestCompareAllow(t *testing.T) { + type args struct { + identity Identity.IAM + policy Identity.Policy + } + + var identity Identity.IAM + var moreIdentity Identity.IAM + moreIdentity.Policies = make([]Identity.Policy, 1) + moreIdentity.Policies[0].Statements = make([]Identity.Statement, 1) + moreIdentity.Policies[0].Statements[0] = Identity.Statement{ + Sid: "", + Effect: "Allow", + Action: []string{"s3:*", "s3-object-lambda:*"}, + Resource: []string{"*"}, + } + var policy Identity.Policy + + statements := make([]Identity.Statement, 1) + statements[0] = Identity.Statement{ + Sid: "", + Effect: "Allow", + Action: []string{"s3:*", "s3-object-lambda:*"}, + Resource: []string{"*"}, + } + + var morePolicy Identity.Policy + morePolicy.Statements = statements + + tests := []struct { + name string + args args + want PolicyDiff + wantErr bool + }{ + { + "pass empty", + args{identity, policy}, + PolicyDiff{}, + true, + }, + { + "pass not empty", + args{identity, morePolicy}, + PolicyDiff{nil, nil}, + true, + }, + { + "pass", + args{moreIdentity, morePolicy}, + PolicyDiff{}, + false, + }, + { + "different", + args{moreIdentity, policy}, + PolicyDiff{nil, nil}, + true, + }, + //todo more testcases + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := compareAllow(tt.args.identity, tt.args.policy) + if (err != nil) != tt.wantErr { + t.Errorf("CompareAllow() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("CompareAllow() got = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_contains(t *testing.T) { + type args struct { + s []string + e string + } + tests := []struct { + name string + args args + want bool + }{ + {"found", args{[]string{"foo", "bar"}, "foo"}, true}, + {"not found", args{[]string{"foo", "bar"}, "bart"}, false}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := contains(tt.args.s, tt.args.e); got != tt.want { + t.Errorf("contains() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestPolicyDiff_Empty(t *testing.T) { + tests := []struct { + name string + pd PolicyDiff + want bool + }{ + { + name: "both nil", + pd: PolicyDiff{nil, nil}, + want: true, + }, + { + name: "empty slices", + pd: PolicyDiff{[]string{}, []string{}}, + want: true, + }, + { + name: "over nil under empty", + pd: PolicyDiff{nil, []string{}}, + want: true, + }, + { + name: "over empty under nil", + pd: PolicyDiff{[]string{}, nil}, + want: true, + }, + { + name: "over with content", + pd: PolicyDiff{[]string{"s3:GetObject"}, nil}, + want: false, + }, + { + name: "under with content", + pd: PolicyDiff{nil, []string{"s3:PutObject"}}, + want: false, + }, + { + name: "both with content", + pd: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, + want: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := len(tt.pd.Over) == 0 && len(tt.pd.Under) == 0 + if got != tt.want { + t.Errorf("PolicyDiff empty check = %v, want %v", got, tt.want) + } + }) + } +} + +func TestPolicyDiff_Equal(t *testing.T) { + tests := []struct { + name string + first PolicyDiff + second PolicyDiff + wantSame bool + }{ + { + name: "identical empty", + first: PolicyDiff{}, + second: PolicyDiff{}, + wantSame: true, + }, + { + name: "identical with content", + first: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, + second: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, + wantSame: true, + }, + { + name: "different over", + first: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, + second: PolicyDiff{[]string{"s3:ListBucket"}, []string{"s3:PutObject"}}, + wantSame: false, + }, + { + name: "different under", + first: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, + second: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:DeleteObject"}}, + wantSame: false, + }, + { + name: "different lengths", + first: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, + second: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject", "s3:DeleteObject"}}, + wantSame: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := reflect.DeepEqual(tt.first, tt.second) + if got != tt.wantSame { + t.Errorf("PolicyDiff equality check = %v, want %v", got, tt.wantSame) + } + }) + } +} diff --git a/src/inspect_test.go b/src/inspect_test.go index b5fb952b..b509db28 100644 --- a/src/inspect_test.go +++ b/src/inspect_test.go @@ -114,130 +114,6 @@ func TestInspect(t *testing.T) { } } -func Test_contains(t *testing.T) { - type args struct { - s []string - e string - } - tests := []struct { - name string - args args - want bool - }{ - {"found", args{[]string{"foo", "bar"}, "foo"}, true}, - {"not found", args{[]string{"foo", "bar"}, "bart"}, false}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if got := contains(tt.args.s, tt.args.e); got != tt.want { - t.Errorf("contains() = %v, want %v", got, tt.want) - } - }) - } -} - -func TestPolicyDiff_Empty(t *testing.T) { - tests := []struct { - name string - pd PolicyDiff - want bool - }{ - { - name: "both nil", - pd: PolicyDiff{nil, nil}, - want: true, - }, - { - name: "empty slices", - pd: PolicyDiff{[]string{}, []string{}}, - want: true, - }, - { - name: "over nil under empty", - pd: PolicyDiff{nil, []string{}}, - want: true, - }, - { - name: "over empty under nil", - pd: PolicyDiff{[]string{}, nil}, - want: true, - }, - { - name: "over with content", - pd: PolicyDiff{[]string{"s3:GetObject"}, nil}, - want: false, - }, - { - name: "under with content", - pd: PolicyDiff{nil, []string{"s3:PutObject"}}, - want: false, - }, - { - name: "both with content", - pd: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, - want: false, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got := len(tt.pd.Over) == 0 && len(tt.pd.Under) == 0 - if got != tt.want { - t.Errorf("PolicyDiff empty check = %v, want %v", got, tt.want) - } - }) - } -} - -func TestPolicyDiff_Equal(t *testing.T) { - tests := []struct { - name string - first PolicyDiff - second PolicyDiff - wantSame bool - }{ - { - name: "identical empty", - first: PolicyDiff{}, - second: PolicyDiff{}, - wantSame: true, - }, - { - name: "identical with content", - first: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, - second: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, - wantSame: true, - }, - { - name: "different over", - first: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, - second: PolicyDiff{[]string{"s3:ListBucket"}, []string{"s3:PutObject"}}, - wantSame: false, - }, - { - name: "different under", - first: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, - second: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:DeleteObject"}}, - wantSame: false, - }, - { - name: "different lengths", - first: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, - second: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject", "s3:DeleteObject"}}, - wantSame: false, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got := reflect.DeepEqual(tt.first, tt.second) - if got != tt.wantSame { - t.Errorf("PolicyDiff equality check = %v, want %v", got, tt.wantSame) - } - }) - } -} - func TestInspectExtended(t *testing.T) { type args struct { directory string diff --git a/src/make.go b/src/make.go index e820a05e..242e70f8 100644 --- a/src/make.go +++ b/src/make.go @@ -19,7 +19,7 @@ func Make(directory string) (*string, error) { return nil, &directoryNotFoundError{directory: directory} } - err := Scan(directory, "terraform", nil, true, true, false, "") + err := Scan(directory, "terraform", nil, true, true, false, "", "", "") if err != nil { return nil, fmt.Errorf("failed to scan directory: %w", err) } @@ -29,7 +29,7 @@ func Make(directory string) (*string, error) { return nil, &absolutePathError{directory, err} } - policyPath, err := filepath.Abs(path.Join(directory, ".pike/")) + policyPath, err := filepath.Abs(path.Join(directory, ".pike")) if err != nil { return nil, &absolutePathError{directory, err} } diff --git a/src/make_internal_test.go b/src/make_internal_test.go new file mode 100644 index 00000000..c16d7781 --- /dev/null +++ b/src/make_internal_test.go @@ -0,0 +1,43 @@ +package pike + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test_arnNotFoundInStateError_Error(t *testing.T) { + tests := []struct { + name string + want string + }{ + {"Invoke", "no arn found in state"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &arnNotFoundInStateError{} + assert.Equalf(t, tt.want, e.Error(), "Error()") + }) + } +} + +func Test_castToStringError_Error(t *testing.T) { + type fields struct { + value string + } + tests := []struct { + name string + fields fields + want string + }{ + {"Invoke", fields{"test"}, "cannot convert test to a string"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &castToStringError{ + value: tt.fields.value, + } + assert.Equalf(t, tt.want, e.Error(), "Error()") + }) + } +} diff --git a/src/mapping/aws/data/appconfig/aws_appconfig_application.json b/src/mapping/aws/data/appconfig/aws_appconfig_application.json new file mode 100644 index 00000000..d1cdcebd --- /dev/null +++ b/src/mapping/aws/data/appconfig/aws_appconfig_application.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "appconfig:ListApplications" + ] + } +] diff --git a/src/mapping/aws/data/backend/s3.json b/src/mapping/aws/data/backend/s3.json new file mode 100644 index 00000000..263db0b4 --- /dev/null +++ b/src/mapping/aws/data/backend/s3.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "dynamodb:PutItem", + "dynamodb:DeleteItem", + "dynamodb:GetItem", + "dynamodb:DescribeTable", + "s3:ListBucket", + "s3:PutObject", + "s3:GetObject", + "s3:DeleteObject" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/data/billing/aws_billing_views.json b/src/mapping/aws/data/billing/aws_billing_views.json new file mode 100644 index 00000000..349f67c9 --- /dev/null +++ b/src/mapping/aws/data/billing/aws_billing_views.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "billing:ListBillingViews" + ] + } +] diff --git a/src/mapping/aws/data/ec2/aws_vpn_connection.json b/src/mapping/aws/data/ec2/aws_vpn_connection.json new file mode 100644 index 00000000..8d297004 --- /dev/null +++ b/src/mapping/aws/data/ec2/aws_vpn_connection.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "ec2:DescribeVpnConnections" + ] + } +] diff --git a/src/mapping/aws/data/ecr-public/aws_ecrpublic_images.json b/src/mapping/aws/data/ecr-public/aws_ecrpublic_images.json new file mode 100644 index 00000000..007d998a --- /dev/null +++ b/src/mapping/aws/data/ecr-public/aws_ecrpublic_images.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "ecr-public:DescribeImages" + ] + } +] diff --git a/src/mapping/aws/data/ecr/aws_ecr_images.json b/src/mapping/aws/data/ecr/aws_ecr_images.json new file mode 100644 index 00000000..f5aaf48e --- /dev/null +++ b/src/mapping/aws/data/ecr/aws_ecr_images.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "ecr:ListImages" + ] + } +] diff --git a/src/mapping/aws/data/mediaconvert/aws_media_convert_queue.json b/src/mapping/aws/data/mediaconvert/aws_media_convert_queue.json new file mode 100644 index 00000000..39894073 --- /dev/null +++ b/src/mapping/aws/data/mediaconvert/aws_media_convert_queue.json @@ -0,0 +1,14 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "mediaconvert:GetQueue", + "mediaconvert:ListTagsForResource" + ] + } +] diff --git a/src/mapping/aws/data/memorydb/aws_memorydb_acl.json b/src/mapping/aws/data/memorydb/aws_memorydb_acl.json new file mode 100644 index 00000000..4105d11d --- /dev/null +++ b/src/mapping/aws/data/memorydb/aws_memorydb_acl.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "memorydb:DescribeACLs" + ] + } +] diff --git a/src/mapping/aws/data/memorydb/aws_memorydb_cluster.json b/src/mapping/aws/data/memorydb/aws_memorydb_cluster.json new file mode 100644 index 00000000..c71d85b7 --- /dev/null +++ b/src/mapping/aws/data/memorydb/aws_memorydb_cluster.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "memorydb:DescribeClusters" + ] + } +] diff --git a/src/mapping/aws/data/memorydb/aws_memorydb_parameter_group.json b/src/mapping/aws/data/memorydb/aws_memorydb_parameter_group.json new file mode 100644 index 00000000..86534bb6 --- /dev/null +++ b/src/mapping/aws/data/memorydb/aws_memorydb_parameter_group.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "memorydb:DescribeParameterGroups" + ] + } +] diff --git a/src/mapping/aws/data/memorydb/aws_memorydb_snapshot.json b/src/mapping/aws/data/memorydb/aws_memorydb_snapshot.json new file mode 100644 index 00000000..e566c281 --- /dev/null +++ b/src/mapping/aws/data/memorydb/aws_memorydb_snapshot.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "memorydb:DescribeSnapshots" + ] + } +] diff --git a/src/mapping/aws/data/memorydb/aws_memorydb_subnet_group.json b/src/mapping/aws/data/memorydb/aws_memorydb_subnet_group.json new file mode 100644 index 00000000..42557913 --- /dev/null +++ b/src/mapping/aws/data/memorydb/aws_memorydb_subnet_group.json @@ -0,0 +1,14 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "memorydb:DescribeSubnetGroups", + "memorydb:ListTags" + ] + } +] diff --git a/src/mapping/aws/data/memorydb/aws_memorydb_user.json b/src/mapping/aws/data/memorydb/aws_memorydb_user.json new file mode 100644 index 00000000..d02d86d1 --- /dev/null +++ b/src/mapping/aws/data/memorydb/aws_memorydb_user.json @@ -0,0 +1,14 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "memorydb:DescribeUser", + "memorydb:DescribeUsers" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_cloud_autonomous_vm_cluster.json b/src/mapping/aws/data/odb/aws_odb_cloud_autonomous_vm_cluster.json new file mode 100644 index 00000000..8801ad3e --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_cloud_autonomous_vm_cluster.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:GetCloudAutonomousVmCluster" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_cloud_autonomous_vm_clusters.json b/src/mapping/aws/data/odb/aws_odb_cloud_autonomous_vm_clusters.json new file mode 100644 index 00000000..d6618a15 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_cloud_autonomous_vm_clusters.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "odb:ListCloudAutonomousVmClusters" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_cloud_exadata_infrastructure.json b/src/mapping/aws/data/odb/aws_odb_cloud_exadata_infrastructure.json new file mode 100644 index 00000000..82a5d5b9 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_cloud_exadata_infrastructure.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:GetCloudExadataInfrastructure" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_cloud_exadata_infrastructures.json b/src/mapping/aws/data/odb/aws_odb_cloud_exadata_infrastructures.json new file mode 100644 index 00000000..c1bf5b45 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_cloud_exadata_infrastructures.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:ListCloudExadataInfrastructures" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_cloud_vm_cluster.json b/src/mapping/aws/data/odb/aws_odb_cloud_vm_cluster.json new file mode 100644 index 00000000..ab260bb3 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_cloud_vm_cluster.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:GetCloudVmCluster" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_cloud_vm_clusters.json b/src/mapping/aws/data/odb/aws_odb_cloud_vm_clusters.json new file mode 100644 index 00000000..62411a36 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_cloud_vm_clusters.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:ListCloudVmClusters" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_db_node.json b/src/mapping/aws/data/odb/aws_odb_db_node.json new file mode 100644 index 00000000..a0623069 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_db_node.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:GetDbNode" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_db_nodes.json b/src/mapping/aws/data/odb/aws_odb_db_nodes.json new file mode 100644 index 00000000..25958de7 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_db_nodes.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:ListDbNodes" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_db_server.json b/src/mapping/aws/data/odb/aws_odb_db_server.json new file mode 100644 index 00000000..f0ac70e7 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_db_server.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:GetDbServer" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_db_servers.json b/src/mapping/aws/data/odb/aws_odb_db_servers.json new file mode 100644 index 00000000..b1f3353b --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_db_servers.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:ListDbServers" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_db_system_shapes.json b/src/mapping/aws/data/odb/aws_odb_db_system_shapes.json new file mode 100644 index 00000000..242f5197 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_db_system_shapes.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:ListDbSystemShapes" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_gi_versions.json b/src/mapping/aws/data/odb/aws_odb_gi_versions.json new file mode 100644 index 00000000..1d081824 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_gi_versions.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:ListGiVersions" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_network.json b/src/mapping/aws/data/odb/aws_odb_network.json new file mode 100644 index 00000000..f35f18b9 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_network.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:GetOdbNetwork" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_network_peering_connection.json b/src/mapping/aws/data/odb/aws_odb_network_peering_connection.json new file mode 100644 index 00000000..af5cab86 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_network_peering_connection.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:GetOdbPeeringConnection" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_network_peering_connections.json b/src/mapping/aws/data/odb/aws_odb_network_peering_connections.json new file mode 100644 index 00000000..a20f3921 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_network_peering_connections.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:ListOdbPeeringConnections" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_networks.json b/src/mapping/aws/data/odb/aws_odb_networks.json new file mode 100644 index 00000000..b30f96b4 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_networks.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:ListOdbNetworks" + ] + } +] diff --git a/src/mapping/aws/data/rds/aws_rds_global_cluster.json b/src/mapping/aws/data/rds/aws_rds_global_cluster.json new file mode 100644 index 00000000..ca56de67 --- /dev/null +++ b/src/mapping/aws/data/rds/aws_rds_global_cluster.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "rds:DescribeGlobalClusters" + ] + } +] diff --git a/src/mapping/aws/data/s3/aws_s3_access_point.json b/src/mapping/aws/data/s3/aws_s3_access_point.json new file mode 100644 index 00000000..4015f339 --- /dev/null +++ b/src/mapping/aws/data/s3/aws_s3_access_point.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "s3:ListAccessPoints" + ] + } +] diff --git a/src/mapping/aws/data/securityhub/aws_securityhub_standards_control_associations.json b/src/mapping/aws/data/securityhub/aws_securityhub_standards_control_associations.json new file mode 100644 index 00000000..87efd3b5 --- /dev/null +++ b/src/mapping/aws/data/securityhub/aws_securityhub_standards_control_associations.json @@ -0,0 +1,14 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "securityhub:ListStandardsControlAssociations", + "securityhub:DescribeStandardsControls" + ] + } +] diff --git a/src/mapping/aws/data/workspaces/aws_workspaces_workspace.json b/src/mapping/aws/data/workspaces/aws_workspaces_workspace.json new file mode 100644 index 00000000..19b29c26 --- /dev/null +++ b/src/mapping/aws/data/workspaces/aws_workspaces_workspace.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "workspaces:DescribeWorkspaces" + ] + } +] diff --git a/src/mapping/aws/resource/aps/aws_prometheus_workspace.json b/src/mapping/aws/resource/aps/aws_prometheus_workspace.json index 3da49d1a..e3eccc61 100644 --- a/src/mapping/aws/resource/aps/aws_prometheus_workspace.json +++ b/src/mapping/aws/resource/aps/aws_prometheus_workspace.json @@ -3,7 +3,8 @@ "apply": [ "aps:CreateWorkspace", "aps:DescribeWorkspace", - "aps:ListTagsForResource" + "aps:ListTagsForResource", + "aps:DescribeLoggingConfiguration" ], "attributes": { "kms_key_arn": [ @@ -39,7 +40,8 @@ ], "plan": [ "aps:DescribeWorkspace", - "aps:ListTagsForResource" + "aps:ListTagsForResource", + "aps:DescribeLoggingConfiguration" ] } ] diff --git a/src/mapping/aws/resource/aps/aws_prometheus_workspace_configuration.json b/src/mapping/aws/resource/aps/aws_prometheus_workspace_configuration.json new file mode 100644 index 00000000..159f6c28 --- /dev/null +++ b/src/mapping/aws/resource/aps/aws_prometheus_workspace_configuration.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aps:UpdateWorkspaceConfiguration", + "aps:DescribeWorkspaceConfiguration" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/aws_prometheus_query_logging_configuration.json b/src/mapping/aws/resource/aws_prometheus_query_logging_configuration.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/aws/resource/aws_prometheus_query_logging_configuration.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/backup/aws_backup_framework.json b/src/mapping/aws/resource/backup/aws_backup_framework.json index a309510f..e3aa2df3 100644 --- a/src/mapping/aws/resource/backup/aws_backup_framework.json +++ b/src/mapping/aws/resource/backup/aws_backup_framework.json @@ -2,21 +2,21 @@ { "apply": [ "ec2:DescribeAccountAttributes", - "Backup:CreateFramework", - "Backup:DescribeFramework", - "Backup:DeleteFramework", - "Backup:ListTags", + "backup:CreateFramework", + "backup:DescribeFramework", + "backup:DeleteFramework", + "backup:ListTags", "iam:CreateServiceLinkedRole" ], "attributes": { "tags": [ - "Backup:UntagResource", - "Backup:TagResource" + "backup:UntagResource", + "backup:TagResource" ] }, "destroy": [], "modify": [ - "Backup:UpdateFramework" + "backup:UpdateFramework" ], "plan": [] } diff --git a/src/mapping/aws/resource/backup/aws_backup_global_settings.json b/src/mapping/aws/resource/backup/aws_backup_global_settings.json index c68cb715..3a679339 100644 --- a/src/mapping/aws/resource/backup/aws_backup_global_settings.json +++ b/src/mapping/aws/resource/backup/aws_backup_global_settings.json @@ -2,8 +2,8 @@ { "apply": [ "ec2:DescribeAccountAttributes", - "Backup:UpdateGlobalSettings", - "Backup:DescribeGlobalSettings" + "backup:UpdateGlobalSettings", + "backup:DescribeGlobalSettings" ], "attributes": { "tags": [] diff --git a/src/mapping/aws/resource/backup/aws_backup_plan.json b/src/mapping/aws/resource/backup/aws_backup_plan.json index bd4a6755..4e976733 100644 --- a/src/mapping/aws/resource/backup/aws_backup_plan.json +++ b/src/mapping/aws/resource/backup/aws_backup_plan.json @@ -2,19 +2,19 @@ { "apply": [ "ec2:DescribeAccountAttributes", - "Backup:CreateBackupPlan", - "Backup:GetBackupPlan", - "Backup:ListTags", - "Backup:DeleteBackupPlan" + "backup:CreateBackupPlan", + "backup:GetBackupPlan", + "backup:ListTags", + "backup:DeleteBackupPlan" ], "attributes": { "tags": [ - "Backup:UntagResource", - "Backup:TagResource" + "backup:UntagResource", + "backup:TagResource" ] }, "destroy": [ - "Backup:UpdateBackupPlan" + "backup:UpdateBackupPlan" ], "modify": [], "plan": [] diff --git a/src/mapping/aws/resource/backup/aws_backup_region_settings.json b/src/mapping/aws/resource/backup/aws_backup_region_settings.json index 7a6c1816..e7c28e24 100644 --- a/src/mapping/aws/resource/backup/aws_backup_region_settings.json +++ b/src/mapping/aws/resource/backup/aws_backup_region_settings.json @@ -2,8 +2,8 @@ { "apply": [ "ec2:DescribeAccountAttributes", - "Backup:UpdateRegionSettings", - "Backup:DescribeRegionSettings" + "backup:UpdateRegionSettings", + "backup:DescribeRegionSettings" ], "attributes": { "tags": [] diff --git a/src/mapping/aws/resource/backup/aws_backup_report_plan.json b/src/mapping/aws/resource/backup/aws_backup_report_plan.json index 4b9c436c..5da77311 100644 --- a/src/mapping/aws/resource/backup/aws_backup_report_plan.json +++ b/src/mapping/aws/resource/backup/aws_backup_report_plan.json @@ -2,22 +2,22 @@ { "apply": [ "ec2:DescribeAccountAttributes", - "Backup:DescribeReportPlan", - "Backup:CreateReportPlan", - "Backup:DeleteReportPlan", + "backup:DescribeReportPlan", + "backup:CreateReportPlan", + "backup:DeleteReportPlan", "s3:ListBucket", - "Backup:ListTags", + "backup:ListTags", "iam:CreateServiceLinkedRole", "backup:UpdateReportPlan" ], "attributes": { "tags": [ - "Backup:UntagResource", - "Backup:TagResource" + "backup:UntagResource", + "backup:TagResource" ] }, "destroy": [ - "Backup:DeleteReportPlan" + "backup:DeleteReportPlan" ], "modify": [ "backup:UpdateReportPlan" diff --git a/src/mapping/aws/resource/backup/aws_backup_selection.json b/src/mapping/aws/resource/backup/aws_backup_selection.json index b8e39a54..5ea84b75 100644 --- a/src/mapping/aws/resource/backup/aws_backup_selection.json +++ b/src/mapping/aws/resource/backup/aws_backup_selection.json @@ -2,9 +2,9 @@ { "apply": [ "ec2:DescribeAccountAttributes", - "Backup:CreateBackupSelection", - "Backup:DeleteBackupSelection", - "Backup:GetBackupSelection", + "backup:CreateBackupSelection", + "backup:DeleteBackupSelection", + "backup:GetBackupSelection", "iam:GetRole", "iam:PassRole", "iam:CreateServiceLinkedRole" @@ -13,11 +13,11 @@ "tags": [] }, "destroy": [ - "Backup:DeleteBackupSelection" + "backup:DeleteBackupSelection" ], "modify": [], "plan": [ - "Backup:GetBackupSelection" + "backup:GetBackupSelection" ] } ] diff --git a/src/mapping/aws/resource/backup/aws_backup_vault_notifications.json b/src/mapping/aws/resource/backup/aws_backup_vault_notifications.json index c0cc56a0..a2363d36 100644 --- a/src/mapping/aws/resource/backup/aws_backup_vault_notifications.json +++ b/src/mapping/aws/resource/backup/aws_backup_vault_notifications.json @@ -8,7 +8,7 @@ }, "destroy": [ "backup:DeleteBackupVaultNotifications", - "Backup:GetBackupVaultNotifications" + "backup:GetBackupVaultNotifications" ], "modify": [], "plan": [] diff --git a/src/mapping/aws/resource/batch/aws_batch_compute_environment.json b/src/mapping/aws/resource/batch/aws_batch_compute_environment.json index 49befa02..7d8f688c 100644 --- a/src/mapping/aws/resource/batch/aws_batch_compute_environment.json +++ b/src/mapping/aws/resource/batch/aws_batch_compute_environment.json @@ -20,7 +20,7 @@ ], "attributes": { "eks_configuration": [ - "Eks:DescribeCluster" + "eks:DescribeCluster" ], "tags": [ "batch:TagResource", diff --git a/src/mapping/aws/resource/cloudtrail/aws_cloudtrail_event_data_store.json b/src/mapping/aws/resource/cloudtrail/aws_cloudtrail_event_data_store.json index 9beee5ba..12f9b06a 100644 --- a/src/mapping/aws/resource/cloudtrail/aws_cloudtrail_event_data_store.json +++ b/src/mapping/aws/resource/cloudtrail/aws_cloudtrail_event_data_store.json @@ -5,10 +5,10 @@ "cloudtrail:AddTags", "cloudtrail:GetEventDataStore", "cloudtrail:ListTags", - "CloudTrail:ListEventDataStores", + "cloudtrail:ListEventDataStores", "cloudtrail:DeleteEventDataStore", "cloudtrail:UpdateEventDataStore", - "CloudTrail:RestoreEventDataStore" + "cloudtrail:RestoreEventDataStore" ], "attributes": { "kms_key_id": [ @@ -17,16 +17,16 @@ "kms:DescribeKey" ], "multi_region_enabled": [ - "CloudTrail:EnableFederation", - "CloudTrail:DisableFederation" + "cloudtrail:EnableFederation", + "cloudtrail:DisableFederation" ], "organization_enabled": [ "organizations:DescribeOrganization", "organizations:ListAWSServiceAccessForOrganization" ], "tags": [ - "CloudTrail:AddTags", - "CloudTrail:RemoveTags" + "cloudtrail:AddTags", + "cloudtrail:RemoveTags" ] }, "destroy": [ @@ -34,7 +34,7 @@ ], "modify": [ "cloudtrail:UpdateEventDataStore", - "CloudTrail:RestoreEventDataStore" + "cloudtrail:RestoreEventDataStore" ], "plan": [] } diff --git a/src/mapping/aws/resource/dsql/aws_dsql_cluster.json b/src/mapping/aws/resource/dsql/aws_dsql_cluster.json new file mode 100644 index 00000000..f25e2f10 --- /dev/null +++ b/src/mapping/aws/resource/dsql/aws_dsql_cluster.json @@ -0,0 +1,28 @@ +[ + { + "apply": [ + "dsql:CreateCluster", + "dsql:GetCluster", + "iam:CreateServiceLinkedRole", + "dsql:GetVpcEndpointServiceName", + "dsql:ListTagsForResource", + "dsql:UpdateCluster", + "dsql:DeleteCluster" + ], + "attributes": { + "tags": [ + "dsql:TagResource", + "dsql:UntagResource" + ] + }, + "destroy": [ + "dsql:DeleteCluster" + ], + "modify": [ + "dsql:UpdateCluster" + ], + "plan": [ + "dsql:GetCluster" + ] + } +] diff --git a/src/mapping/aws/resource/dsql/aws_dsql_cluster_peering.json b/src/mapping/aws/resource/dsql/aws_dsql_cluster_peering.json new file mode 100644 index 00000000..787885f0 --- /dev/null +++ b/src/mapping/aws/resource/dsql/aws_dsql_cluster_peering.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dsql:AddPeerCluster", + "dsql:RemovePeerCluster" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "dsql:RemovePeerCluster" + ], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_managed_prefix_list.json b/src/mapping/aws/resource/ec2/aws_ec2_managed_prefix_list.json index 158c794a..7a01087c 100644 --- a/src/mapping/aws/resource/ec2/aws_ec2_managed_prefix_list.json +++ b/src/mapping/aws/resource/ec2/aws_ec2_managed_prefix_list.json @@ -1,23 +1,23 @@ [ { "apply": [ - "EC2:CreateManagedPrefixList", - "EC2:DescribeManagedPrefixLists", - "EC2:DeleteManagedPrefixList", - "EC2:GetManagedPrefixListEntries", - "EC2:ModifyManagedPrefixList" + "ec2:CreateManagedPrefixList", + "ec2:DescribeManagedPrefixLists", + "ec2:DeleteManagedPrefixList", + "ec2:GetManagedPrefixListEntries", + "ec2:ModifyManagedPrefixList" ], "attributes": { "tags": [ - "EC2:CreateTags" + "ec2:CreateTags" ] }, "destroy": [ - "EC2:DeleteManagedPrefixList" + "ec2:DeleteManagedPrefixList" ], "modify": [ - "EC2:GetManagedPrefixListEntries", - "EC2:ModifyManagedPrefixList" + "ec2:GetManagedPrefixListEntries", + "ec2:ModifyManagedPrefixList" ], "plan": [] } diff --git a/src/mapping/aws/resource/ec2/aws_vpc_route_server.json b/src/mapping/aws/resource/ec2/aws_vpc_route_server.json new file mode 100644 index 00000000..d3405f9c --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_route_server.json @@ -0,0 +1,31 @@ +[ + { + "apply": [ + "ec2:DescribeRouteServers", + "ec2:DeleteRouteServer", + "ec2:CreateRouteServer", + "ec2:DisassociateRouteServer", + "ec2:ModifyRouteServer" + ], + "attributes": { + "sns_notifications_enabled": [ + "sns:DeleteTopic", + "sns:CreateTopic" + ], + "tags": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, + "destroy": [ + "ec2:DeleteRouteServer", + "ec2:DisassociateRouteServer" + ], + "modify": [ + "ec2:ModifyRouteServer" + ], + "plan": [ + "ec2:DescribeRouteServers" + ] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_route_server_endpoint.json b/src/mapping/aws/resource/ec2/aws_vpc_route_server_endpoint.json new file mode 100644 index 00000000..0dd6ac21 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_route_server_endpoint.json @@ -0,0 +1,33 @@ +[ + { + "apply": [ + "ec2:CreateRouteServerEndpoint", + "ec2:DeleteRouteServerEndpoint", + "ec2:DescribeRouteServerEndpoints", + "ec2:CreateSecurityGroup", + "ec2:DescribeSecurityGroups", + "ec2:DescribeAccountAttributes", + "ec2:DescribeNetworkInterfaces", + "ec2:DeleteSecurityGroup", + "ec2:AuthorizeSecurityGroupIngress", + "ec2:RevokeSecurityGroupIngress", + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:CreateNetworkInterface", + "ec2:DescribeNetworkInterfaces", + "ec2:DeleteNetworkInterface", + "ec2:ModifyNetworkInterfaceAttribute", + "ec2:UnassignIpv6Addresses", + "ec2:AssignIpv6Addresses", + "ec2:UnassignPrivateIpAddresses", + "ec2:AssignPrivateIpAddresses", + "ec2:ModifyPublicIpDnsNameOptions" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_route_server_peer.json b/src/mapping/aws/resource/ec2/aws_vpc_route_server_peer.json new file mode 100644 index 00000000..c6c89167 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_route_server_peer.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "ec2:DescribeRouteServerPeers", + "ec2:CreateRouteServerPeer", + "ec2:DeleteRouteServerPeer" + ], + "attributes": { + "tags": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, + "destroy": [ + "ec2:DeleteRouteServerPeer" + ], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_route_server_propagation.json b/src/mapping/aws/resource/ec2/aws_vpc_route_server_propagation.json new file mode 100644 index 00000000..d41f85d4 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_route_server_propagation.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "ec2:DisableRouteServerPropagation", + "ec2:EnableRouteServerPropagation", + "ec2:GetRouteServerPropagations" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "ec2:DisableRouteServerPropagation" + ], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_route_server_vpc_association.json b/src/mapping/aws/resource/ec2/aws_vpc_route_server_vpc_association.json new file mode 100644 index 00000000..59959c0a --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_route_server_vpc_association.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "ec2:AssociateRouteServer", + "ec2:DisassociateRouteServer" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/kafka/aws_msk_cluster.json b/src/mapping/aws/resource/kafka/aws_msk_cluster.json index b1f21175..fda2cf22 100644 --- a/src/mapping/aws/resource/kafka/aws_msk_cluster.json +++ b/src/mapping/aws/resource/kafka/aws_msk_cluster.json @@ -1,42 +1,42 @@ [ { "apply": [ - "Kafka:CreateCluster", + "kafka:CreateCluster", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeSecurityGroups", "iam:CreateServiceLinkedRole", - "Kafka:DescribeClusterV2", - "Kafka:DescribeCluster", - "Kafka:ListTagsForResource", - "Kafka:GetBootstrapBrokers", - "Kafka:DeleteCluster", + "kafka:DescribeClusterV2", + "kafka:DescribeCluster", + "kafka:ListTagsForResource", + "kafka:GetBootstrapBrokers", + "kafka:DeleteCluster", "ec2:DeleteVpcEndpoints", "ec2:DescribeVpcAttribute", "ec2:DescribeVpcEndpoints", - "Kafka:DescribeClusterOperation" + "kafka:DescribeClusterOperation" ], "attributes": { "tags": [ - "Kafka:TagResource", - "Kafka:UntagResource" + "kafka:TagResource", + "kafka:UntagResource" ] }, "destroy": [ - "Kafka:DeleteCluster", + "kafka:DeleteCluster", "ec2:DeleteVpcEndpoints" ], "modify": [ - "Kafka:UpdateSecurity", - "Kafka:UpdateBrokerCount", - "Kafka:UpdateBrokerStorage", - "Kafka:UpdateBrokerType", - "Kafka:UpdateClusterConfiguration", - "Kafka:UpdateClusterKafkaVersion", - "Kafka:UpdateConnectivity", - "Kafka:UpdateMonitoring", - "Kafka:UpdateSecurity", - "Kafka:UpdateStorage" + "kafka:UpdateSecurity", + "kafka:UpdateBrokerCount", + "kafka:UpdateBrokerStorage", + "kafka:UpdateBrokerType", + "kafka:UpdateClusterConfiguration", + "kafka:UpdateClusterKafkaVersion", + "kafka:UpdateConnectivity", + "kafka:UpdateMonitoring", + "kafka:UpdateSecurity", + "kafka:UpdateStorage" ], "plan": [] } diff --git a/src/mapping/aws/resource/kafka/aws_msk_configuration.json b/src/mapping/aws/resource/kafka/aws_msk_configuration.json index c1d48b47..bd3188ea 100644 --- a/src/mapping/aws/resource/kafka/aws_msk_configuration.json +++ b/src/mapping/aws/resource/kafka/aws_msk_configuration.json @@ -1,22 +1,22 @@ [ { "apply": [ - "Kafka:CreateConfiguration", - "Kafka:DeleteConfiguration", - "Kafka:DescribeConfiguration", - "Kafka:DescribeConfigurationRevision" + "kafka:CreateConfiguration", + "kafka:DeleteConfiguration", + "kafka:DescribeConfiguration", + "kafka:DescribeConfigurationRevision" ], "attributes": { "tags": [] }, "destroy": [ - "Kafka:DeleteConfiguration" + "kafka:DeleteConfiguration" ], "modify": [ - "Kafka:UpdateConfiguration", - "Kafka:DescribeConfigurationRevision", - "Kafka:UpdateClusterConfiguration", - "Kafka:UpdateConfiguration" + "kafka:UpdateConfiguration", + "kafka:DescribeConfigurationRevision", + "kafka:UpdateClusterConfiguration", + "kafka:UpdateConfiguration" ], "plan": [] } diff --git a/src/mapping/aws/resource/kafka/aws_msk_scram_secret_association.json b/src/mapping/aws/resource/kafka/aws_msk_scram_secret_association.json index 08a3e57e..56202483 100644 --- a/src/mapping/aws/resource/kafka/aws_msk_scram_secret_association.json +++ b/src/mapping/aws/resource/kafka/aws_msk_scram_secret_association.json @@ -3,15 +3,15 @@ "apply": [ "kms:DescribeKey", "kms:CreateGrant", - "Kafka:BatchAssociateScramSecret", - "Kafka:BatchDisassociateScramSecret", - "Kafka:ListScramSecrets" + "kafka:BatchAssociateScramSecret", + "kafka:BatchDisassociateScramSecret", + "kafka:ListScramSecrets" ], "attributes": { "tags": [] }, "destroy": [ - "Kafka:BatchDisassociateScramSecret" + "kafka:BatchDisassociateScramSecret" ], "modify": [], "plan": [] diff --git a/src/mapping/aws/resource/kafka/aws_msk_serverless_cluster.json b/src/mapping/aws/resource/kafka/aws_msk_serverless_cluster.json index 17855ad6..a5a80913 100644 --- a/src/mapping/aws/resource/kafka/aws_msk_serverless_cluster.json +++ b/src/mapping/aws/resource/kafka/aws_msk_serverless_cluster.json @@ -1,7 +1,7 @@ [ { "apply": [ - "Kafka:CreateClusterV2", + "kafka:CreateClusterV2", "ec2:CreateVpcEndpoint", "ec2:DeleteVpcEndpoints", "ec2:DescribeSecurityGroups", @@ -9,9 +9,9 @@ "ec2:DescribeVpcAttribute", "ec2:DescribeVpcEndpoints", "ec2:DescribeVpcs", - "Kafka:DescribeClusterV2", - "Kafka:ListTagsForResource", - "Kafka:DeleteCluster", + "kafka:DescribeClusterV2", + "kafka:ListTagsForResource", + "kafka:DeleteCluster", "ec2:DeleteVpcEndpoints", "ec2:DescribeVpcAttribute", "ec2:DescribeVpcEndpoints" @@ -20,12 +20,12 @@ "tags": [ "ec2:CreateTags", "ec2:DeleteTags", - "Kafka:TagResource", - "Kafka:UntagResource" + "kafka:TagResource", + "kafka:UntagResource" ] }, "destroy": [ - "Kafka:DeleteCluster", + "kafka:DeleteCluster", "ec2:DeleteVpcEndpoints", "ec2:DescribeVpcAttribute", "ec2:DescribeVpcEndpoints" diff --git a/src/mapping/aws/resource/lightsail/aws_lightsail_bucket_access_key.json b/src/mapping/aws/resource/lightsail/aws_lightsail_bucket_access_key.json new file mode 100644 index 00000000..0ba465f9 --- /dev/null +++ b/src/mapping/aws/resource/lightsail/aws_lightsail_bucket_access_key.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "lightsail:CreateBucketAccessKey", + "lightsail:DeleteBucketAccessKey", + "lightsail:GetBucketAccessKeys" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/s3control/aws_s3control_directory_bucket_access_point_scope.json b/src/mapping/aws/resource/s3control/aws_s3control_directory_bucket_access_point_scope.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/aws/resource/s3control/aws_s3control_directory_bucket_access_point_scope.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_browser_settings.json b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_browser_settings.json index 19d3c785..c0e0be44 100644 --- a/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_browser_settings.json +++ b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_browser_settings.json @@ -12,8 +12,12 @@ "workspaces-web:UntagResource" ] }, - "destroy": [], + "destroy": [ + "workspaces-web:DeleteBrowserSettings" + ], "modify": [], - "plan": [] + "plan": [ + "workspaces-web:GetBrowserSettings" + ] } ] diff --git a/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_data_protection_settings.json b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_data_protection_settings.json new file mode 100644 index 00000000..6eec7e6d --- /dev/null +++ b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_data_protection_settings.json @@ -0,0 +1,34 @@ +[ + { + "apply": [ + "workspaces-web:GetDataProtectionSettings", + "workspaces-web:AssociateDataProtectionSettings", + "workspaces-web:CreateDataProtectionSettings", + "workspaces-web:DeleteDataProtectionSettings", + "workspaces-web:DisassociateDataProtectionSettings", + "workspaces-web:UpdateDataProtectionSettings", + "workspaces-web:ListTagsForResource" + ], + "attributes": { + "customer_managed_key": [ + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ], + "tags": [ + "workspaces-web:TagResource", + "workspaces-web:UntagResource" + ] + }, + "destroy": [ + "workspaces-web:DeleteDataProtectionSettings", + "workspaces-web:DisassociateDataProtectionSettings" + ], + "modify": [ + "workspaces-web:UpdateDataProtectionSettings" + ], + "plan": [ + "workspaces-web:GetDataProtectionSettings" + ] + } +] diff --git a/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_ip_access_settings.json b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_ip_access_settings.json new file mode 100644 index 00000000..51311ff4 --- /dev/null +++ b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_ip_access_settings.json @@ -0,0 +1,34 @@ +[ + { + "apply": [ + "workspaces-web:GetIpAccessSettings", + "workspaces-web:AssociateIpAccessSettings", + "workspaces-web:CreateIpAccessSettings", + "workspaces-web:DeleteIpAccessSettings", + "workspaces-web:DisassociateIpAccessSettings", + "workspaces-web:UpdateIpAccessSettings", + "workspaces-web:ListTagsForResource" + ], + "attributes": { + "customer_managed_key": [ + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ], + "tags": [ + "workspaces-web:TagResource", + "workspaces-web:UntagResource" + ] + }, + "destroy": [ + "workspaces-web:DeleteIpAccessSettings", + "workspaces-web:DisassociateIpAccessSettings" + ], + "modify": [ + "workspaces-web:UpdateIpAccessSettings" + ], + "plan": [ + "workspaces-web:GetIpAccessSettings" + ] + } +] diff --git a/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_network_settings.json b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_network_settings.json index 5bf194fa..80c8088b 100644 --- a/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_network_settings.json +++ b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_network_settings.json @@ -13,6 +13,8 @@ "workspaces-web:DeleteNetworkSettings" ], "modify": [], - "plan": [] + "plan": [ + "workspaces-web:GetNetworkSettings" + ] } ] diff --git a/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_user_access_logging_settings.json b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_user_access_logging_settings.json new file mode 100644 index 00000000..199da10c --- /dev/null +++ b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_user_access_logging_settings.json @@ -0,0 +1,29 @@ +[ + { + "apply": [ + "workspaces-web:GetUserAccessLoggingSettings", + "workspaces-web:AssociateUserAccessLoggingSettings", + "workspaces-web:CreateUserAccessLoggingSettings", + "workspaces-web:DeleteUserAccessLoggingSettings", + "workspaces-web:DisassociateUserAccessLoggingSettings", + "workspaces-web:UpdateUserAccessLoggingSettings", + "workspaces-web:ListTagsForResource" + ], + "attributes": { + "tags": [ + "workspaces-web:TagResource", + "workspaces-web:UntagResource" + ] + }, + "destroy": [ + "workspaces-web:DeleteUserAccessLoggingSettings", + "workspaces-web:DisassociateUserAccessLoggingSettings" + ], + "modify": [ + "workspaces-web:UpdateUserAccessLoggingSettings" + ], + "plan": [ + "workspaces-web:GetUserAccessLoggingSettings" + ] + } +] diff --git a/src/mapping/google/data/accesscontextmanager/google_access_context_manager_access_policy.json b/src/mapping/google/data/accesscontextmanager/google_access_context_manager_access_policy.json new file mode 100644 index 00000000..afae021d --- /dev/null +++ b/src/mapping/google/data/accesscontextmanager/google_access_context_manager_access_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "accesscontextmanager.accessPolicies.list" + ] + } +] diff --git a/src/mapping/google/data/aiplatform/google_colab_runtime_template_iam_policy.json b/src/mapping/google/data/aiplatform/google_colab_runtime_template_iam_policy.json new file mode 100644 index 00000000..3da82268 --- /dev/null +++ b/src/mapping/google/data/aiplatform/google_colab_runtime_template_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.notebookRuntimeTemplates.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/aiplatform/google_vertex_ai_endpoint_iam_policy.json b/src/mapping/google/data/aiplatform/google_vertex_ai_endpoint_iam_policy.json index 06c1511a..ea1d619b 100644 --- a/src/mapping/google/data/aiplatform/google_vertex_ai_endpoint_iam_policy.json +++ b/src/mapping/google/data/aiplatform/google_vertex_ai_endpoint_iam_policy.json @@ -1,13 +1,13 @@ -[ - { - "apply": [], - "attributes": { - "tags": [] - }, - "destroy": [], - "modify": [], - "plan": [ - "aiplatform.endpoints.getIamPolicy" - ] - } -] +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.endpoints.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/aiplatform/google_vertex_ai_feature_group_iam_policy.json b/src/mapping/google/data/aiplatform/google_vertex_ai_feature_group_iam_policy.json new file mode 100644 index 00000000..ccf0b032 --- /dev/null +++ b/src/mapping/google/data/aiplatform/google_vertex_ai_feature_group_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.featureGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_policy.json b/src/mapping/google/data/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_policy.json new file mode 100644 index 00000000..127bb5ee --- /dev/null +++ b/src/mapping/google/data/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.featureViews.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/aiplatform/google_vertex_ai_feature_online_store_iam_policy.json b/src/mapping/google/data/aiplatform/google_vertex_ai_feature_online_store_iam_policy.json new file mode 100644 index 00000000..c74a5567 --- /dev/null +++ b/src/mapping/google/data/aiplatform/google_vertex_ai_feature_online_store_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.featureOnlineStores.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/alloydb/google_alloydb_cluster.json b/src/mapping/google/data/alloydb/google_alloydb_cluster.json new file mode 100644 index 00000000..1cce33cc --- /dev/null +++ b/src/mapping/google/data/alloydb/google_alloydb_cluster.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "alloydb.clusters.get" + ] + } +] diff --git a/src/mapping/google/data/alloydb/google_alloydb_instance.json b/src/mapping/google/data/alloydb/google_alloydb_instance.json new file mode 100644 index 00000000..7274b00b --- /dev/null +++ b/src/mapping/google/data/alloydb/google_alloydb_instance.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "alloydb.instances.get" + ] + } +] diff --git a/src/mapping/google/data/apphub/google_apphub_application.json b/src/mapping/google/data/apphub/google_apphub_application.json new file mode 100644 index 00000000..2ec65918 --- /dev/null +++ b/src/mapping/google/data/apphub/google_apphub_application.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "apphub.applications.get" + ] + } +] diff --git a/src/mapping/google/data/apphub/google_apphub_discovered_service.json b/src/mapping/google/data/apphub/google_apphub_discovered_service.json new file mode 100644 index 00000000..e3666bc5 --- /dev/null +++ b/src/mapping/google/data/apphub/google_apphub_discovered_service.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "apphub.discoveredServices.list" + ] + } +] diff --git a/src/mapping/google/data/apphub/google_apphub_discovered_workload.json b/src/mapping/google/data/apphub/google_apphub_discovered_workload.json new file mode 100644 index 00000000..8e927429 --- /dev/null +++ b/src/mapping/google/data/apphub/google_apphub_discovered_workload.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "apphub.discoveredWorkloads.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_docker_image.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_docker_image.json new file mode 100644 index 00000000..69011de9 --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_docker_image.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.dockerimages.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_docker_images.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_docker_images.json new file mode 100644 index 00000000..69011de9 --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_docker_images.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.dockerimages.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_locations.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_locations.json new file mode 100644 index 00000000..4891926d --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_locations.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.locations.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_maven_artifact.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_maven_artifact.json new file mode 100644 index 00000000..ddb1f11f --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_maven_artifact.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.mavenartifacts.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_maven_artifacts.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_maven_artifacts.json new file mode 100644 index 00000000..ddb1f11f --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_maven_artifacts.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.mavenartifacts.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_npm_package.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_npm_package.json new file mode 100644 index 00000000..41734918 --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_npm_package.json @@ -0,0 +1,14 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.npmpackages.get", + "artifactregistry.npmpackages.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_npm_packages.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_npm_packages.json new file mode 100644 index 00000000..24f09962 --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_npm_packages.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.npmpackages.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_packages.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_packages.json new file mode 100644 index 00000000..b84e9205 --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_packages.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.packages.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_python_package.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_python_package.json new file mode 100644 index 00000000..ae771808 --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_python_package.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.pythonpackages.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_repositories.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_repositories.json new file mode 100644 index 00000000..798dcfba --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_repositories.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.repositories.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_tags.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_tags.json new file mode 100644 index 00000000..802bc9f8 --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_tags.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.tags.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_version.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_version.json new file mode 100644 index 00000000..f3593703 --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_version.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.versions.get" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_versions.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_versions.json new file mode 100644 index 00000000..b99feff0 --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_versions.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.versions.list" + ] + } +] diff --git a/src/mapping/google/data/backend/gcs.json b/src/mapping/google/data/backend/gcs.json new file mode 100644 index 00000000..d9f17369 --- /dev/null +++ b/src/mapping/google/data/backend/gcs.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "storage.buckets.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/data/backupdr/google_backup_dr_backup.json b/src/mapping/google/data/backupdr/google_backup_dr_backup.json new file mode 100644 index 00000000..105f695d --- /dev/null +++ b/src/mapping/google/data/backupdr/google_backup_dr_backup.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "backupdr.bvbackups.list" + ] + } +] diff --git a/src/mapping/google/data/backupdr/google_backup_dr_backup_plan_association.json b/src/mapping/google/data/backupdr/google_backup_dr_backup_plan_association.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/data/backupdr/google_backup_dr_backup_plan_association.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/data/backupdr/google_backup_dr_backup_plan_associations.json b/src/mapping/google/data/backupdr/google_backup_dr_backup_plan_associations.json new file mode 100644 index 00000000..bdc9afa1 --- /dev/null +++ b/src/mapping/google/data/backupdr/google_backup_dr_backup_plan_associations.json @@ -0,0 +1,20 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "backupdr.backupPlanAssociations.fetchForAlloydbCluster", + "backupdr.backupPlanAssociations.fetchForCloudSqlInstance", + "backupdr.backupPlanAssociations.fetchForComputeDisk", + "backupdr.backupPlanAssociations.fetchForComputeInstance", + "backupdr.backupPlanAssociations.getForAlloydbCluster", + "backupdr.backupPlanAssociations.getForCloudSqlInstance", + "backupdr.backupPlanAssociations.getForComputeDisk", + "backupdr.backupPlanAssociations.getForComputeInstance" + ] + } +] diff --git a/src/mapping/google/data/backupdr/google_backup_dr_backup_vault.json b/src/mapping/google/data/backupdr/google_backup_dr_backup_vault.json new file mode 100644 index 00000000..b168f19b --- /dev/null +++ b/src/mapping/google/data/backupdr/google_backup_dr_backup_vault.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "backupdr.backupVaults.get" + ] + } +] diff --git a/src/mapping/google/data/backupdr/google_backup_dr_data_source.json b/src/mapping/google/data/backupdr/google_backup_dr_data_source.json new file mode 100644 index 00000000..aa3071ae --- /dev/null +++ b/src/mapping/google/data/backupdr/google_backup_dr_data_source.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "backupdr.bvdataSources.get" + ] + } +] diff --git a/src/mapping/google/data/backupdr/google_backup_dr_data_source_reference.json b/src/mapping/google/data/backupdr/google_backup_dr_data_source_reference.json new file mode 100644 index 00000000..8e13b3a7 --- /dev/null +++ b/src/mapping/google/data/backupdr/google_backup_dr_data_source_reference.json @@ -0,0 +1,14 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "backupdr.dataSourceReferences.fetchForAlloydbCluster", + "backupdr.dataSourceReferences.fetchForCloudSqlInstance" + ] + } +] diff --git a/src/mapping/google/data/backupdr/google_backup_dr_data_source_references.json b/src/mapping/google/data/backupdr/google_backup_dr_data_source_references.json new file mode 100644 index 00000000..8e13b3a7 --- /dev/null +++ b/src/mapping/google/data/backupdr/google_backup_dr_data_source_references.json @@ -0,0 +1,14 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "backupdr.dataSourceReferences.fetchForAlloydbCluster", + "backupdr.dataSourceReferences.fetchForCloudSqlInstance" + ] + } +] diff --git a/src/mapping/google/data/beyondcorp/google_beyondcorp_application_iam_policy.json b/src/mapping/google/data/beyondcorp/google_beyondcorp_application_iam_policy.json new file mode 100644 index 00000000..0b458b2b --- /dev/null +++ b/src/mapping/google/data/beyondcorp/google_beyondcorp_application_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "beyondcorp.sgApplications.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/beyondcorp/google_beyondcorp_security_gateway.json b/src/mapping/google/data/beyondcorp/google_beyondcorp_security_gateway.json new file mode 100644 index 00000000..c1445d5f --- /dev/null +++ b/src/mapping/google/data/beyondcorp/google_beyondcorp_security_gateway.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "beyondcorp.securityGateways.get" + ] + } +] diff --git a/src/mapping/google/data/beyondcorp/google_beyondcorp_security_gateway_application_iam_policy.json b/src/mapping/google/data/beyondcorp/google_beyondcorp_security_gateway_application_iam_policy.json new file mode 100644 index 00000000..fe15993f --- /dev/null +++ b/src/mapping/google/data/beyondcorp/google_beyondcorp_security_gateway_application_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "beyondcorp.sgApplications.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/beyondcorp/google_beyondcorp_security_gateway_iam_policy.json b/src/mapping/google/data/beyondcorp/google_beyondcorp_security_gateway_iam_policy.json new file mode 100644 index 00000000..a044be57 --- /dev/null +++ b/src/mapping/google/data/beyondcorp/google_beyondcorp_security_gateway_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "beyondcorp.securityGateways.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/bigquery/google_bigquery_datapolicyv2_data_policy_iam_policy.json b/src/mapping/google/data/bigquery/google_bigquery_datapolicyv2_data_policy_iam_policy.json new file mode 100644 index 00000000..7fb8dfed --- /dev/null +++ b/src/mapping/google/data/bigquery/google_bigquery_datapolicyv2_data_policy_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "bigquery.dataPolicies.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/binaryauthorization/google_binary_authorization_attestor_iam_policy.json b/src/mapping/google/data/binaryauthorization/google_binary_authorization_attestor_iam_policy.json index fdd86e07..74f73db3 100644 --- a/src/mapping/google/data/binaryauthorization/google_binary_authorization_attestor_iam_policy.json +++ b/src/mapping/google/data/binaryauthorization/google_binary_authorization_attestor_iam_policy.json @@ -1,13 +1,13 @@ -[ - { - "apply": [], - "attributes": { - "tags": [] - }, - "destroy": [], - "modify": [], - "plan": [ - "binaryauthorization.attestors.getIamPolicy" - ] - } -] +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "binaryauthorization.attestors.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/certificatemanager/google_certificate_manager_certificates.json b/src/mapping/google/data/certificatemanager/google_certificate_manager_certificates.json new file mode 100644 index 00000000..ba630f21 --- /dev/null +++ b/src/mapping/google/data/certificatemanager/google_certificate_manager_certificates.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "certificatemanager.certs.list" + ] + } +] diff --git a/src/mapping/google/data/certificatemanager/google_certificate_manager_dns_authorization.json b/src/mapping/google/data/certificatemanager/google_certificate_manager_dns_authorization.json new file mode 100644 index 00000000..4a9a2317 --- /dev/null +++ b/src/mapping/google/data/certificatemanager/google_certificate_manager_dns_authorization.json @@ -0,0 +1,16 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "certificatemanager.operations.get", + "certificatemanager.dnsauthorizations.get", + "certificatemanager.dnsauthorizations.list", + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/cloudaicompanion/google_gemini_repository_group_iam_policy.json b/src/mapping/google/data/cloudaicompanion/google_gemini_repository_group_iam_policy.json new file mode 100644 index 00000000..5476b8c9 --- /dev/null +++ b/src/mapping/google/data/cloudaicompanion/google_gemini_repository_group_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudaicompanion.repositoryGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/clouddeploy/google_clouddeploy_custom_target_type_iam_policy.json b/src/mapping/google/data/clouddeploy/google_clouddeploy_custom_target_type_iam_policy.json new file mode 100644 index 00000000..73c9b912 --- /dev/null +++ b/src/mapping/google/data/clouddeploy/google_clouddeploy_custom_target_type_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "clouddeploy.customTargetTypes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/clouddeploy/google_clouddeploy_delivery_pipeline_iam_policy.json b/src/mapping/google/data/clouddeploy/google_clouddeploy_delivery_pipeline_iam_policy.json new file mode 100644 index 00000000..31272d00 --- /dev/null +++ b/src/mapping/google/data/clouddeploy/google_clouddeploy_delivery_pipeline_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "clouddeploy.deliveryPipelines.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/clouddeploy/google_clouddeploy_target_iam_policy.json b/src/mapping/google/data/clouddeploy/google_clouddeploy_target_iam_policy.json new file mode 100644 index 00000000..eebf7fb2 --- /dev/null +++ b/src/mapping/google/data/clouddeploy/google_clouddeploy_target_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "clouddeploy.targets.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/cloudkms/google_kms_ekm_connection_iam_policy.json b/src/mapping/google/data/cloudkms/google_kms_ekm_connection_iam_policy.json new file mode 100644 index 00000000..0734c60f --- /dev/null +++ b/src/mapping/google/data/cloudkms/google_kms_ekm_connection_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudkms.ekmConnections.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/cloudkms/google_kms_key_handle.json b/src/mapping/google/data/cloudkms/google_kms_key_handle.json new file mode 100644 index 00000000..3bbad249 --- /dev/null +++ b/src/mapping/google/data/cloudkms/google_kms_key_handle.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudkms.keyHandles.get" + ] + } +] diff --git a/src/mapping/google/data/cloudkms/google_kms_key_handles.json b/src/mapping/google/data/cloudkms/google_kms_key_handles.json new file mode 100644 index 00000000..25f97c9b --- /dev/null +++ b/src/mapping/google/data/cloudkms/google_kms_key_handles.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudkms.keyHandles.list" + ] + } +] diff --git a/src/mapping/google/data/cloudkms/google_kms_key_rings.json b/src/mapping/google/data/cloudkms/google_kms_key_rings.json new file mode 100644 index 00000000..2432d185 --- /dev/null +++ b/src/mapping/google/data/cloudkms/google_kms_key_rings.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudkms.keyRings.list" + ] + } +] diff --git a/src/mapping/google/data/cloudtasks/google_cloud_tasks_queue_iam_policy.json b/src/mapping/google/data/cloudtasks/google_cloud_tasks_queue_iam_policy.json index 7870ac9d..4acf6298 100644 --- a/src/mapping/google/data/cloudtasks/google_cloud_tasks_queue_iam_policy.json +++ b/src/mapping/google/data/cloudtasks/google_cloud_tasks_queue_iam_policy.json @@ -7,6 +7,7 @@ "destroy": [], "modify": [], "plan": [ + "cloudtasks.queues.getIamPolicy", "cloudtasks.queues.list" ] } diff --git a/src/mapping/google/data/composer/google_composer_user_workloads_config_map.json b/src/mapping/google/data/composer/google_composer_user_workloads_config_map.json new file mode 100644 index 00000000..2a775b35 --- /dev/null +++ b/src/mapping/google/data/composer/google_composer_user_workloads_config_map.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "composer.userworkloadsconfigmaps.get" + ] + } +] diff --git a/src/mapping/google/data/composer/google_composer_user_workloads_secret.json b/src/mapping/google/data/composer/google_composer_user_workloads_secret.json new file mode 100644 index 00000000..f44e79bf --- /dev/null +++ b/src/mapping/google/data/composer/google_composer_user_workloads_secret.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "composer.userworkloadssecrets.get" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_forwarding_rules.json b/src/mapping/google/data/compute/google_compute_forwarding_rules.json new file mode 100644 index 00000000..6c5fb9f7 --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_forwarding_rules.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.forwardingRules.list" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_images.json b/src/mapping/google/data/compute/google_compute_images.json new file mode 100644 index 00000000..ab20d72f --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_images.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.images.list" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_instance_guest_attributes.json b/src/mapping/google/data/compute/google_compute_instance_guest_attributes.json new file mode 100644 index 00000000..97fa2bf9 --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_instance_guest_attributes.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.instances.get" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_instance_template_iam_policy.json b/src/mapping/google/data/compute/google_compute_instance_template_iam_policy.json new file mode 100644 index 00000000..44b739bd --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_instance_template_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.instanceTemplates.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_instant_snapshot_iam_policy.json b/src/mapping/google/data/compute/google_compute_instant_snapshot_iam_policy.json new file mode 100644 index 00000000..675666dd --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_instant_snapshot_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.instantSnapshots.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_interconnect_location.json b/src/mapping/google/data/compute/google_compute_interconnect_location.json new file mode 100644 index 00000000..17999352 --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_interconnect_location.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.interconnectLocations.get" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_interconnect_locations.json b/src/mapping/google/data/compute/google_compute_interconnect_locations.json new file mode 100644 index 00000000..22c47504 --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_interconnect_locations.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.interconnectLocations.list" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_machine_types.json b/src/mapping/google/data/compute/google_compute_machine_types.json new file mode 100644 index 00000000..e30d0e42 --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_machine_types.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.machineTypes.list" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_network.json b/src/mapping/google/data/compute/google_compute_network.json index 017647b0..23f83a54 100644 --- a/src/mapping/google/data/compute/google_compute_network.json +++ b/src/mapping/google/data/compute/google_compute_network.json @@ -1,13 +1,13 @@ -[ - { - "apply": [ - "compute.networks.get" - ], - "attributes": { - "tags": [] - }, - "destroy": [], - "modify": [], - "plan": [] - } -] +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.networks.get" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_network_attachment.json b/src/mapping/google/data/compute/google_compute_network_attachment.json new file mode 100644 index 00000000..af2e79f8 --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_network_attachment.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.networkAttachments.get" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_region_backend_service.json b/src/mapping/google/data/compute/google_compute_region_backend_service.json new file mode 100644 index 00000000..d78140f0 --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_region_backend_service.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.regionBackendServices.get" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_region_instance_group_manager.json b/src/mapping/google/data/compute/google_compute_region_instance_group_manager.json new file mode 100644 index 00000000..6811400c --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_region_instance_group_manager.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.instanceGroupManagers.get" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_security_policy.json b/src/mapping/google/data/compute/google_compute_security_policy.json new file mode 100644 index 00000000..5dd2e4dd --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_security_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.securityPolicies.get" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_storage_pool_iam_policy.json b/src/mapping/google/data/compute/google_compute_storage_pool_iam_policy.json new file mode 100644 index 00000000..bff552c7 --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_storage_pool_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.storagePools.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_storage_pool_types.json b/src/mapping/google/data/compute/google_compute_storage_pool_types.json new file mode 100644 index 00000000..8c87d2b7 --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_storage_pool_types.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.storagePoolTypes.get" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_subnetworks.json b/src/mapping/google/data/compute/google_compute_subnetworks.json new file mode 100644 index 00000000..74c16c70 --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_subnetworks.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.subnetworks.list" + ] + } +] diff --git a/src/mapping/google/data/dataplex/google_dataplex_aspect_type_iam_policy.json b/src/mapping/google/data/dataplex/google_dataplex_aspect_type_iam_policy.json new file mode 100644 index 00000000..da60ec9c --- /dev/null +++ b/src/mapping/google/data/dataplex/google_dataplex_aspect_type_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.aspectTypes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/dataplex/google_dataplex_data_quality_rules.json b/src/mapping/google/data/dataplex/google_dataplex_data_quality_rules.json new file mode 100644 index 00000000..36049b2e --- /dev/null +++ b/src/mapping/google/data/dataplex/google_dataplex_data_quality_rules.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.datascans.getData" + ] + } +] diff --git a/src/mapping/google/data/dataplex/google_dataplex_entry_group_iam_policy.json b/src/mapping/google/data/dataplex/google_dataplex_entry_group_iam_policy.json new file mode 100644 index 00000000..a8c69d9a --- /dev/null +++ b/src/mapping/google/data/dataplex/google_dataplex_entry_group_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.entryGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/dataplex/google_dataplex_entry_type_iam_policy.json b/src/mapping/google/data/dataplex/google_dataplex_entry_type_iam_policy.json new file mode 100644 index 00000000..087e095f --- /dev/null +++ b/src/mapping/google/data/dataplex/google_dataplex_entry_type_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.entryTypes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/dataplex/google_dataplex_glossary_iam_policy.json b/src/mapping/google/data/dataplex/google_dataplex_glossary_iam_policy.json new file mode 100644 index 00000000..b62f41cd --- /dev/null +++ b/src/mapping/google/data/dataplex/google_dataplex_glossary_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.glossaries.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/dns/google_dns_managed_zones.json b/src/mapping/google/data/dns/google_dns_managed_zones.json new file mode 100644 index 00000000..3b2acf9e --- /dev/null +++ b/src/mapping/google/data/dns/google_dns_managed_zones.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dns.managedZones.list" + ] + } +] diff --git a/src/mapping/google/data/gkehub/google_gke_hub_feature.json b/src/mapping/google/data/gkehub/google_gke_hub_feature.json new file mode 100644 index 00000000..cce9a51f --- /dev/null +++ b/src/mapping/google/data/gkehub/google_gke_hub_feature.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "gkehub.features.get" + ] + } +] diff --git a/src/mapping/google/data/gkehub/google_gke_hub_membership.json b/src/mapping/google/data/gkehub/google_gke_hub_membership.json new file mode 100644 index 00000000..dfb486d1 --- /dev/null +++ b/src/mapping/google/data/gkehub/google_gke_hub_membership.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "gkehub.memberships.get" + ] + } +] diff --git a/src/mapping/google/data/gkemulticloud/google_container_attached_install_manifest.json b/src/mapping/google/data/gkemulticloud/google_container_attached_install_manifest.json new file mode 100644 index 00000000..83957a8f --- /dev/null +++ b/src/mapping/google/data/gkemulticloud/google_container_attached_install_manifest.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "gkemulticloud.attachedClusters.generateInstallManifest" + ] + } +] diff --git a/src/mapping/google/data/gkemulticloud/google_container_aws_versions.json b/src/mapping/google/data/gkemulticloud/google_container_aws_versions.json new file mode 100644 index 00000000..48130687 --- /dev/null +++ b/src/mapping/google/data/gkemulticloud/google_container_aws_versions.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "gkemulticloud.awsServerConfigs.get" + ] + } +] diff --git a/src/mapping/google/data/gkemulticloud/google_container_azure_versions.json b/src/mapping/google/data/gkemulticloud/google_container_azure_versions.json new file mode 100644 index 00000000..a9f29ccf --- /dev/null +++ b/src/mapping/google/data/gkemulticloud/google_container_azure_versions.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "gkemulticloud.azureServerConfigs.get" + ] + } +] diff --git a/src/mapping/google/data/google_cloud_identity_policy.json b/src/mapping/google/data/google_cloud_identity_policy.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/data/google_cloud_identity_policy.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/data/iam.googleapis.com/google_iam_workforce_pool_iam_policy.json b/src/mapping/google/data/iam.googleapis.com/google_iam_workforce_pool_iam_policy.json new file mode 100644 index 00000000..ce5cc002 --- /dev/null +++ b/src/mapping/google/data/iam.googleapis.com/google_iam_workforce_pool_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iam.googleapis.com/workforcePools.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/iam/google_iam_workload_identity_pool.json b/src/mapping/google/data/iam.googleapis.com/google_iam_workload_identity_pool.json similarity index 100% rename from src/mapping/google/data/iam/google_iam_workload_identity_pool.json rename to src/mapping/google/data/iam.googleapis.com/google_iam_workload_identity_pool.json diff --git a/src/mapping/google/data/iam.googleapis.com/google_iam_workload_identity_pool_iam_policy.json b/src/mapping/google/data/iam.googleapis.com/google_iam_workload_identity_pool_iam_policy.json new file mode 100644 index 00000000..0b36a48c --- /dev/null +++ b/src/mapping/google/data/iam.googleapis.com/google_iam_workload_identity_pool_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iam.googleapis.com/workloadIdentityPools.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/iam/google_iam_workload_identity_pool_provider.json b/src/mapping/google/data/iam.googleapis.com/google_iam_workload_identity_pool_provider.json similarity index 100% rename from src/mapping/google/data/iam/google_iam_workload_identity_pool_provider.json rename to src/mapping/google/data/iam.googleapis.com/google_iam_workload_identity_pool_provider.json diff --git a/src/mapping/google/data/iam/google_organization_iam_custom_role.json b/src/mapping/google/data/iam/google_organization_iam_custom_role.json new file mode 100644 index 00000000..a4b42a91 --- /dev/null +++ b/src/mapping/google/data/iam/google_organization_iam_custom_role.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iam.roles.get" + ] + } +] diff --git a/src/mapping/google/data/iam/google_organization_iam_custom_roles.json b/src/mapping/google/data/iam/google_organization_iam_custom_roles.json new file mode 100644 index 00000000..d410a5bd --- /dev/null +++ b/src/mapping/google/data/iam/google_organization_iam_custom_roles.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iam.roles.list" + ] + } +] diff --git a/src/mapping/google/data/iam/google_project_iam_custom_role.json b/src/mapping/google/data/iam/google_project_iam_custom_role.json new file mode 100644 index 00000000..a4b42a91 --- /dev/null +++ b/src/mapping/google/data/iam/google_project_iam_custom_role.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iam.roles.get" + ] + } +] diff --git a/src/mapping/google/data/iam/google_project_iam_custom_roles.json b/src/mapping/google/data/iam/google_project_iam_custom_roles.json new file mode 100644 index 00000000..d410a5bd --- /dev/null +++ b/src/mapping/google/data/iam/google_project_iam_custom_roles.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iam.roles.list" + ] + } +] diff --git a/src/mapping/google/data/iam/google_service_accounts.json b/src/mapping/google/data/iam/google_service_accounts.json new file mode 100644 index 00000000..e6331753 --- /dev/null +++ b/src/mapping/google/data/iam/google_service_accounts.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iam.serviceAccounts.list" + ] + } +] diff --git a/src/mapping/google/data/iap/google_iap_tunnel_dest_group_iam_policy.json b/src/mapping/google/data/iap/google_iap_tunnel_dest_group_iam_policy.json new file mode 100644 index 00000000..a3f66273 --- /dev/null +++ b/src/mapping/google/data/iap/google_iap_tunnel_dest_group_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.tunnelDestGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/iap/google_iap_web_cloud_run_service_iam_policy.json b/src/mapping/google/data/iap/google_iap_web_cloud_run_service_iam_policy.json new file mode 100644 index 00000000..72ef31a8 --- /dev/null +++ b/src/mapping/google/data/iap/google_iap_web_cloud_run_service_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/iap/google_iap_web_forwarding_rule_service_iam_policy.json b/src/mapping/google/data/iap/google_iap_web_forwarding_rule_service_iam_policy.json new file mode 100644 index 00000000..72ef31a8 --- /dev/null +++ b/src/mapping/google/data/iap/google_iap_web_forwarding_rule_service_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/iap/google_iap_web_region_forwarding_rule_service_iam_policy.json b/src/mapping/google/data/iap/google_iap_web_region_forwarding_rule_service_iam_policy.json new file mode 100644 index 00000000..56c6462a --- /dev/null +++ b/src/mapping/google/data/iap/google_iap_web_region_forwarding_rule_service_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "certificatemanager.dnsauthorizations.list", + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/lustre/google_lustre_instance.json b/src/mapping/google/data/lustre/google_lustre_instance.json new file mode 100644 index 00000000..43668d45 --- /dev/null +++ b/src/mapping/google/data/lustre/google_lustre_instance.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "lustre.instances.get" + ] + } +] diff --git a/src/mapping/google/data/memcache/google_memcache_instance.json b/src/mapping/google/data/memcache/google_memcache_instance.json new file mode 100644 index 00000000..3dc1c2c7 --- /dev/null +++ b/src/mapping/google/data/memcache/google_memcache_instance.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "memcache.instances.get" + ] + } +] diff --git a/src/mapping/google/data/memorystore/google_memorystore_instance.json b/src/mapping/google/data/memorystore/google_memorystore_instance.json new file mode 100644 index 00000000..16c890f6 --- /dev/null +++ b/src/mapping/google/data/memorystore/google_memorystore_instance.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "memorystore.instances.get" + ] + } +] diff --git a/src/mapping/google/data/metastore/google_dataproc_metastore_database_iam_policy.json b/src/mapping/google/data/metastore/google_dataproc_metastore_database_iam_policy.json new file mode 100644 index 00000000..6618762d --- /dev/null +++ b/src/mapping/google/data/metastore/google_dataproc_metastore_database_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "metastore.databases.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/metastore/google_dataproc_metastore_table_iam_policy.json b/src/mapping/google/data/metastore/google_dataproc_metastore_table_iam_policy.json new file mode 100644 index 00000000..d96a9f02 --- /dev/null +++ b/src/mapping/google/data/metastore/google_dataproc_metastore_table_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "metastore.tables.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/oracledatabase/google_oracle_database_autonomous_database.json b/src/mapping/google/data/oracledatabase/google_oracle_database_autonomous_database.json new file mode 100644 index 00000000..0318e71c --- /dev/null +++ b/src/mapping/google/data/oracledatabase/google_oracle_database_autonomous_database.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "oracledatabase.autonomousDatabases.get" + ] + } +] diff --git a/src/mapping/google/data/oracledatabase/google_oracle_database_autonomous_databases.json b/src/mapping/google/data/oracledatabase/google_oracle_database_autonomous_databases.json new file mode 100644 index 00000000..a80550ac --- /dev/null +++ b/src/mapping/google/data/oracledatabase/google_oracle_database_autonomous_databases.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "oracledatabase.autonomousDatabases.list" + ] + } +] diff --git a/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_exadata_infrastructure.json b/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_exadata_infrastructure.json new file mode 100644 index 00000000..361a930b --- /dev/null +++ b/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_exadata_infrastructure.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "oracledatabase.cloudExadataInfrastructures.get" + ] + } +] diff --git a/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_exadata_infrastructures.json b/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_exadata_infrastructures.json new file mode 100644 index 00000000..ed0e0e4e --- /dev/null +++ b/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_exadata_infrastructures.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "oracledatabase.cloudExadataInfrastructures.list" + ] + } +] diff --git a/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_vm_cluster.json b/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_vm_cluster.json new file mode 100644 index 00000000..39d79136 --- /dev/null +++ b/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_vm_cluster.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "oracledatabase.cloudVmClusters.get" + ] + } +] diff --git a/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_vm_clusters.json b/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_vm_clusters.json new file mode 100644 index 00000000..46586a68 --- /dev/null +++ b/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_vm_clusters.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "oracledatabase.cloudVmClusters.list" + ] + } +] diff --git a/src/mapping/google/data/oracledatabase/google_oracle_database_db_nodes.json b/src/mapping/google/data/oracledatabase/google_oracle_database_db_nodes.json new file mode 100644 index 00000000..5a130844 --- /dev/null +++ b/src/mapping/google/data/oracledatabase/google_oracle_database_db_nodes.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "oracledatabase.dbNodes.list" + ] + } +] diff --git a/src/mapping/google/data/oracledatabase/google_oracle_database_db_servers.json b/src/mapping/google/data/oracledatabase/google_oracle_database_db_servers.json new file mode 100644 index 00000000..41fd0de2 --- /dev/null +++ b/src/mapping/google/data/oracledatabase/google_oracle_database_db_servers.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "oracledatabase.dbServers.list" + ] + } +] diff --git a/src/mapping/google/data/orgpolicy/google_project_organization_policy.json b/src/mapping/google/data/orgpolicy/google_project_organization_policy.json new file mode 100644 index 00000000..9a854f86 --- /dev/null +++ b/src/mapping/google/data/orgpolicy/google_project_organization_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "orgpolicy.policy.get" + ] + } +] diff --git a/src/mapping/google/data/parametermanager/google_parameter_manager_parameter.json b/src/mapping/google/data/parametermanager/google_parameter_manager_parameter.json new file mode 100644 index 00000000..0346ede8 --- /dev/null +++ b/src/mapping/google/data/parametermanager/google_parameter_manager_parameter.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "parametermanager.parameters.get" + ] + } +] diff --git a/src/mapping/google/data/parametermanager/google_parameter_manager_parameter_version.json b/src/mapping/google/data/parametermanager/google_parameter_manager_parameter_version.json new file mode 100644 index 00000000..93b688e5 --- /dev/null +++ b/src/mapping/google/data/parametermanager/google_parameter_manager_parameter_version.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "parametermanager.parameterVersions.get" + ] + } +] diff --git a/src/mapping/google/data/parametermanager/google_parameter_manager_parameter_version_render.json b/src/mapping/google/data/parametermanager/google_parameter_manager_parameter_version_render.json new file mode 100644 index 00000000..81f8bbb9 --- /dev/null +++ b/src/mapping/google/data/parametermanager/google_parameter_manager_parameter_version_render.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "parametermanager.parameterVersions.render" + ] + } +] diff --git a/src/mapping/google/data/parametermanager/google_parameter_manager_parameters.json b/src/mapping/google/data/parametermanager/google_parameter_manager_parameters.json new file mode 100644 index 00000000..2a9ff86b --- /dev/null +++ b/src/mapping/google/data/parametermanager/google_parameter_manager_parameters.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "parametermanager.parameters.list" + ] + } +] diff --git a/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameter.json b/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameter.json new file mode 100644 index 00000000..0346ede8 --- /dev/null +++ b/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameter.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "parametermanager.parameters.get" + ] + } +] diff --git a/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameter_version.json b/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameter_version.json new file mode 100644 index 00000000..93b688e5 --- /dev/null +++ b/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameter_version.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "parametermanager.parameterVersions.get" + ] + } +] diff --git a/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameter_version_render.json b/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameter_version_render.json new file mode 100644 index 00000000..81f8bbb9 --- /dev/null +++ b/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameter_version_render.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "parametermanager.parameterVersions.render" + ] + } +] diff --git a/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameters.json b/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameters.json new file mode 100644 index 00000000..2a9ff86b --- /dev/null +++ b/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameters.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "parametermanager.parameters.list" + ] + } +] diff --git a/src/mapping/google/data/privateca/google_privateca_ca_pool_iam_policy.json b/src/mapping/google/data/privateca/google_privateca_ca_pool_iam_policy.json new file mode 100644 index 00000000..23a8225f --- /dev/null +++ b/src/mapping/google/data/privateca/google_privateca_ca_pool_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "privateca.caPools.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/privateca/google_privateca_certificate_authority.json b/src/mapping/google/data/privateca/google_privateca_certificate_authority.json new file mode 100644 index 00000000..ef7b2c73 --- /dev/null +++ b/src/mapping/google/data/privateca/google_privateca_certificate_authority.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "privateca.certificateAuthorities.get" + ] + } +] diff --git a/src/mapping/google/data/privateca/google_privateca_certificate_template_iam_policy.json b/src/mapping/google/data/privateca/google_privateca_certificate_template_iam_policy.json new file mode 100644 index 00000000..ac7c2df8 --- /dev/null +++ b/src/mapping/google/data/privateca/google_privateca_certificate_template_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "privateca.certificateTemplates.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/privilegedaccessmanager/google_privileged_access_manager_entitlement.json b/src/mapping/google/data/privilegedaccessmanager/google_privileged_access_manager_entitlement.json new file mode 100644 index 00000000..8ba411c9 --- /dev/null +++ b/src/mapping/google/data/privilegedaccessmanager/google_privileged_access_manager_entitlement.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "privilegedaccessmanager.entitlements.get" + ] + } +] diff --git a/src/mapping/google/data/pubsub/google_pubsub_schema_iam_policy.json b/src/mapping/google/data/pubsub/google_pubsub_schema_iam_policy.json new file mode 100644 index 00000000..0b16235a --- /dev/null +++ b/src/mapping/google/data/pubsub/google_pubsub_schema_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "pubsub.schemas.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/redis/google_redis_cluster.json b/src/mapping/google/data/redis/google_redis_cluster.json new file mode 100644 index 00000000..baedb999 --- /dev/null +++ b/src/mapping/google/data/redis/google_redis_cluster.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "redis.clusters.get" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_folder.json b/src/mapping/google/data/resourcemanager/google_folder.json new file mode 100644 index 00000000..3d88bd22 --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_folder.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.folders.get" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_folder_iam_policy.json b/src/mapping/google/data/resourcemanager/google_folder_iam_policy.json new file mode 100644 index 00000000..b79b946e --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_folder_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.folders.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_folders.json b/src/mapping/google/data/resourcemanager/google_folders.json new file mode 100644 index 00000000..8877de37 --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_folders.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.folders.list" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_organization_iam_policy.json b/src/mapping/google/data/resourcemanager/google_organization_iam_policy.json new file mode 100644 index 00000000..74978faa --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_organization_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.organizations.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_project_ancestry.json b/src/mapping/google/data/resourcemanager/google_project_ancestry.json new file mode 100644 index 00000000..31acf779 --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_project_ancestry.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.projects.get" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_project_iam_policy.json b/src/mapping/google/data/resourcemanager/google_project_iam_policy.json new file mode 100644 index 00000000..8f43eb49 --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_project_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.projects.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_tags_tag_key_iam_policy.json b/src/mapping/google/data/resourcemanager/google_tags_tag_key_iam_policy.json new file mode 100644 index 00000000..b6b83a17 --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_tags_tag_key_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.tagKeys.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_tags_tag_keys.json b/src/mapping/google/data/resourcemanager/google_tags_tag_keys.json new file mode 100644 index 00000000..f2b1df56 --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_tags_tag_keys.json @@ -0,0 +1,14 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.tagKeys.list", + "resourcemanager.tagKeys.get" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_tags_tag_value.json b/src/mapping/google/data/resourcemanager/google_tags_tag_value.json new file mode 100644 index 00000000..6017c8ad --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_tags_tag_value.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.tagValues.get" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_tags_tag_value_iam_policy.json b/src/mapping/google/data/resourcemanager/google_tags_tag_value_iam_policy.json new file mode 100644 index 00000000..fce4cb1e --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_tags_tag_value_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.tagValues.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_tags_tag_values.json b/src/mapping/google/data/resourcemanager/google_tags_tag_values.json new file mode 100644 index 00000000..cc10ab59 --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_tags_tag_values.json @@ -0,0 +1,14 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.tagValues.get", + "resourcemanager.tagValues.list" + ] + } +] diff --git a/src/mapping/google/data/run/google_cloud_run_v2_worker_pool.json b/src/mapping/google/data/run/google_cloud_run_v2_worker_pool.json new file mode 100644 index 00000000..a5ae60fc --- /dev/null +++ b/src/mapping/google/data/run/google_cloud_run_v2_worker_pool.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "run.workerpools.get" + ] + } +] diff --git a/src/mapping/google/data/run/google_cloud_run_v2_worker_pool_iam_policy.json b/src/mapping/google/data/run/google_cloud_run_v2_worker_pool_iam_policy.json new file mode 100644 index 00000000..b7565183 --- /dev/null +++ b/src/mapping/google/data/run/google_cloud_run_v2_worker_pool_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "run.workerpools.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/runtimeconfig/google_runtimeconfig_config_iam_policy.json b/src/mapping/google/data/runtimeconfig/google_runtimeconfig_config_iam_policy.json new file mode 100644 index 00000000..8ba4dc44 --- /dev/null +++ b/src/mapping/google/data/runtimeconfig/google_runtimeconfig_config_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "runtimeconfig.configs.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/runtimeconfig/google_runtimeconfig_variable.json b/src/mapping/google/data/runtimeconfig/google_runtimeconfig_variable.json new file mode 100644 index 00000000..a09592de --- /dev/null +++ b/src/mapping/google/data/runtimeconfig/google_runtimeconfig_variable.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "runtimeconfig.variables.get" + ] + } +] diff --git a/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret.json b/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret.json new file mode 100644 index 00000000..65f8f575 --- /dev/null +++ b/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "secretmanager.secrets.get" + ] + } +] diff --git a/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret_iam_policy.json b/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret_iam_policy.json new file mode 100644 index 00000000..bbe5224a --- /dev/null +++ b/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "secretmanager.secrets.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret_version.json b/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret_version.json new file mode 100644 index 00000000..400ae8d3 --- /dev/null +++ b/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret_version.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "secretmanager.versions.get" + ] + } +] diff --git a/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret_version_access.json b/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret_version_access.json new file mode 100644 index 00000000..65c61c3b --- /dev/null +++ b/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret_version_access.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "secretmanager.versions.access" + ] + } +] diff --git a/src/mapping/google/data/secretmanager/google_secret_manager_regional_secrets.json b/src/mapping/google/data/secretmanager/google_secret_manager_regional_secrets.json new file mode 100644 index 00000000..0c129994 --- /dev/null +++ b/src/mapping/google/data/secretmanager/google_secret_manager_regional_secrets.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "secretmanager.secrets.list" + ] + } +] diff --git a/src/mapping/google/data/securesourcemanager/google_secure_source_manager_instance_iam_policy.json b/src/mapping/google/data/securesourcemanager/google_secure_source_manager_instance_iam_policy.json new file mode 100644 index 00000000..7994fea8 --- /dev/null +++ b/src/mapping/google/data/securesourcemanager/google_secure_source_manager_instance_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "securesourcemanager.instances.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/securesourcemanager/google_secure_source_manager_repository_iam_policy.json b/src/mapping/google/data/securesourcemanager/google_secure_source_manager_repository_iam_policy.json new file mode 100644 index 00000000..2c744cd2 --- /dev/null +++ b/src/mapping/google/data/securesourcemanager/google_secure_source_manager_repository_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "securesourcemanager.repositories.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/securitycenter/google_scc_source_iam_policy.json b/src/mapping/google/data/securitycenter/google_scc_source_iam_policy.json new file mode 100644 index 00000000..404b7c3f --- /dev/null +++ b/src/mapping/google/data/securitycenter/google_scc_source_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "securitycenter.sources.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/securitycenter/google_scc_v2_organization_source_iam_policy.json b/src/mapping/google/data/securitycenter/google_scc_v2_organization_source_iam_policy.json new file mode 100644 index 00000000..404b7c3f --- /dev/null +++ b/src/mapping/google/data/securitycenter/google_scc_v2_organization_source_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "securitycenter.sources.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/spanner/google_spanner_database.json b/src/mapping/google/data/spanner/google_spanner_database.json new file mode 100644 index 00000000..73d45178 --- /dev/null +++ b/src/mapping/google/data/spanner/google_spanner_database.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "spanner.databases.get" + ] + } +] diff --git a/src/mapping/google/data/storage/google_storage_bucket_iam_member.json b/src/mapping/google/data/storage/google_storage_bucket_iam_member.json new file mode 100644 index 00000000..8ca1edde --- /dev/null +++ b/src/mapping/google/data/storage/google_storage_bucket_iam_member.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "storage.buckets.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/storage/google_storage_bucket_objects.json b/src/mapping/google/data/storage/google_storage_bucket_objects.json new file mode 100644 index 00000000..262f2968 --- /dev/null +++ b/src/mapping/google/data/storage/google_storage_bucket_objects.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "storage.objects.list" + ] + } +] diff --git a/src/mapping/google/data/storage/google_storage_buckets.json b/src/mapping/google/data/storage/google_storage_buckets.json new file mode 100644 index 00000000..de353ee5 --- /dev/null +++ b/src/mapping/google/data/storage/google_storage_buckets.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "storage.buckets.list" + ] + } +] diff --git a/src/mapping/google/data/storage/google_storage_control_folder_intelligence_config.json b/src/mapping/google/data/storage/google_storage_control_folder_intelligence_config.json new file mode 100644 index 00000000..669384ff --- /dev/null +++ b/src/mapping/google/data/storage/google_storage_control_folder_intelligence_config.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "storage.intelligenceConfigs.get" + ] + } +] diff --git a/src/mapping/google/data/storage/google_storage_control_organization_intelligence_config.json b/src/mapping/google/data/storage/google_storage_control_organization_intelligence_config.json new file mode 100644 index 00000000..d823c837 --- /dev/null +++ b/src/mapping/google/data/storage/google_storage_control_organization_intelligence_config.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "storage.intelligenceConfigs.get" + ] + } +] diff --git a/src/mapping/google/data/storage/google_storage_control_project_intelligence_config.json b/src/mapping/google/data/storage/google_storage_control_project_intelligence_config.json new file mode 100644 index 00000000..669384ff --- /dev/null +++ b/src/mapping/google/data/storage/google_storage_control_project_intelligence_config.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "storage.intelligenceConfigs.get" + ] + } +] diff --git a/src/mapping/google/data/storageinsights/google_storage_insights_dataset_config.json b/src/mapping/google/data/storageinsights/google_storage_insights_dataset_config.json new file mode 100644 index 00000000..91409b52 --- /dev/null +++ b/src/mapping/google/data/storageinsights/google_storage_insights_dataset_config.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "storageinsights.reportConfigs.get" + ] + } +] diff --git a/src/mapping/google/data/tags/google_tags_tag_value_iam_policy.json b/src/mapping/google/data/tags/google_tags_tag_value_iam_policy.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/data/tags/google_tags_tag_value_iam_policy.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/accessapproval/google_project_access_approval_settings.json b/src/mapping/google/resource/accessapproval/google_project_access_approval_settings.json new file mode 100644 index 00000000..1a338b9e --- /dev/null +++ b/src/mapping/google/resource/accessapproval/google_project_access_approval_settings.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "accessapproval.settings.delete", + "accessapproval.settings.get", + "accessapproval.settings.create", + "accessapproval.settings.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/accesscontextmanager/google_access_context_manager_service_perimeter.json b/src/mapping/google/resource/accesscontextmanager/google_access_context_manager_service_perimeter.json index 3e46e973..45e4fdaf 100644 --- a/src/mapping/google/resource/accesscontextmanager/google_access_context_manager_service_perimeter.json +++ b/src/mapping/google/resource/accesscontextmanager/google_access_context_manager_service_perimeter.json @@ -1,20 +1,11 @@ [ { - "apply": [ - "accesscontextmanager.servicePerimeters.create", - "accesscontextmanager.servicePerimeters.delete", - "accesscontextmanager.servicePerimeters.get", - "accesscontextmanager.servicePerimeters.update" - ], + "apply": [], "attributes": { "tags": [] }, - "destroy": [ - "accesscontextmanager.servicePerimeters.delete" - ], - "modify": [ - "accesscontextmanager.servicePerimeters.update" - ], + "destroy": [], + "modify": [], "plan": [] } ] diff --git a/src/mapping/google/resource/accesscontextmanager/google_access_context_manager_service_perimeters.json b/src/mapping/google/resource/accesscontextmanager/google_access_context_manager_service_perimeters.json index 3e46e973..45e4fdaf 100644 --- a/src/mapping/google/resource/accesscontextmanager/google_access_context_manager_service_perimeters.json +++ b/src/mapping/google/resource/accesscontextmanager/google_access_context_manager_service_perimeters.json @@ -1,20 +1,11 @@ [ { - "apply": [ - "accesscontextmanager.servicePerimeters.create", - "accesscontextmanager.servicePerimeters.delete", - "accesscontextmanager.servicePerimeters.get", - "accesscontextmanager.servicePerimeters.update" - ], + "apply": [], "attributes": { "tags": [] }, - "destroy": [ - "accesscontextmanager.servicePerimeters.delete" - ], - "modify": [ - "accesscontextmanager.servicePerimeters.update" - ], + "destroy": [], + "modify": [], "plan": [] } ] diff --git a/src/mapping/google/resource/aiplatform/google_colab_runtime_template_iam_binding.json b/src/mapping/google/resource/aiplatform/google_colab_runtime_template_iam_binding.json new file mode 100644 index 00000000..63082202 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_colab_runtime_template_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aiplatform.notebookRuntimeTemplates.getIamPolicy", + "aiplatform.notebookRuntimeTemplates.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_colab_runtime_template_iam_member.json b/src/mapping/google/resource/aiplatform/google_colab_runtime_template_iam_member.json new file mode 100644 index 00000000..63082202 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_colab_runtime_template_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aiplatform.notebookRuntimeTemplates.getIamPolicy", + "aiplatform.notebookRuntimeTemplates.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_colab_runtime_template_iam_policy.json b/src/mapping/google/resource/aiplatform/google_colab_runtime_template_iam_policy.json new file mode 100644 index 00000000..6881b52b --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_colab_runtime_template_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "aiplatform.notebookRuntimeTemplates.getIamPolicy", + "aiplatform.notebookRuntimeTemplates.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.notebookRuntimeTemplates.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_cache_config.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_cache_config.json new file mode 100644 index 00000000..04986d07 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_cache_config.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aiplatform.cacheConfigs.get", + "aiplatform.cacheConfigs.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_deployment_resource_pool.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_deployment_resource_pool.json new file mode 100644 index 00000000..102ccb5e --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_deployment_resource_pool.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "aiplatform.deploymentResourcePools.create", + "aiplatform.deploymentResourcePools.delete", + "aiplatform.deploymentResourcePools.get", + "aiplatform.deploymentResourcePools.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_endpoint_iam_policy.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_endpoint_iam_policy.json new file mode 100644 index 00000000..ea1d619b --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_endpoint_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.endpoints.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_endpoint_with_model_garden_deployment.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_endpoint_with_model_garden_deployment.json new file mode 100644 index 00000000..15e8f492 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_endpoint_with_model_garden_deployment.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "aiplatform.endpoints.create", + "aiplatform.endpoints.delete", + "aiplatform.endpoints.get", + "aiplatform.endpoints.update", + "aiplatform.endpoints.deploy", + "aiplatform.endpoints.undeploy", + "aiplatform.models.upload" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_binding.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_binding.json new file mode 100644 index 00000000..46cf7206 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aiplatform.featureGroups.getIamPolicy", + "aiplatform.featureGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_member.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_member.json new file mode 100644 index 00000000..46cf7206 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aiplatform.featureGroups.getIamPolicy", + "aiplatform.featureGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_policy.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_policy.json new file mode 100644 index 00000000..3a519936 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "aiplatform.featureGroups.getIamPolicy", + "aiplatform.featureGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.featureGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_binding.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_binding.json new file mode 100644 index 00000000..5b985b83 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aiplatform.featureViews.getIamPolicy", + "aiplatform.featureViews.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_member.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_member.json new file mode 100644 index 00000000..5b985b83 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aiplatform.featureViews.getIamPolicy", + "aiplatform.featureViews.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_policy.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_policy.json new file mode 100644 index 00000000..aac47776 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "aiplatform.featureViews.getIamPolicy", + "aiplatform.featureViews.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.featureViews.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_binding.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_binding.json new file mode 100644 index 00000000..9e41eda3 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aiplatform.featureOnlineStores.getIamPolicy", + "aiplatform.featureOnlineStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_member.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_member.json new file mode 100644 index 00000000..9e41eda3 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aiplatform.featureOnlineStores.getIamPolicy", + "aiplatform.featureOnlineStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_policy.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_policy.json new file mode 100644 index 00000000..03893b3b --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "aiplatform.featureOnlineStores.getIamPolicy", + "aiplatform.featureOnlineStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.featureOnlineStores.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_featurestore_entitytype_iam_policy.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_featurestore_entitytype_iam_policy.json new file mode 100644 index 00000000..a0112fb2 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_featurestore_entitytype_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "aiplatform.entityTypes.getIamPolicy", + "aiplatform.entityTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.entityTypes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_featurestore_iam.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_featurestore_iam.json index 562b2f1f..2098ec8a 100644 --- a/src/mapping/google/resource/aiplatform/google_vertex_ai_featurestore_iam.json +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_featurestore_iam.json @@ -9,6 +9,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "aiplatform.featurestores.getIamPolicy" + ] } ] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_featurestore_iam_policy.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_featurestore_iam_policy.json new file mode 100644 index 00000000..b69e35a4 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_featurestore_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "aiplatform.featurestores.getIamPolicy", + "aiplatform.featurestores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.featurestores.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_index_endpoint_deployed_index.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_index_endpoint_deployed_index.json new file mode 100644 index 00000000..c9713836 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_index_endpoint_deployed_index.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "aiplatform.indexEndpoints.delete", + "aiplatform.indexEndpoints.deploy", + "aiplatform.indexEndpoints.get", + "aiplatform.indexEndpoints.undeploy", + "aiplatform.indexEndpoints.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_rag_engine_config.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_rag_engine_config.json new file mode 100644 index 00000000..ab534ee7 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_rag_engine_config.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aiplatform.ragEngineConfigs.get", + "aiplatform.ragEngineConfigs.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_reasoning_engine.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_reasoning_engine.json new file mode 100644 index 00000000..23d19e60 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_reasoning_engine.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "aiplatform.reasoningEngines.create", + "aiplatform.reasoningEngines.delete", + "aiplatform.reasoningEngines.get", + "aiplatform.reasoningEngines.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/alloydb/google_alloydb_cluster.json b/src/mapping/google/resource/alloydb/google_alloydb_cluster.json index b2321593..6f0dc601 100644 --- a/src/mapping/google/resource/alloydb/google_alloydb_cluster.json +++ b/src/mapping/google/resource/alloydb/google_alloydb_cluster.json @@ -1,21 +1,23 @@ -[ - { - "apply": [ - "alloydb.clusters.create", - "alloydb.clusters.delete", - "alloydb.clusters.get", - "alloydb.clusters.update", - "alloydb.operations.get" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "alloydb.clusters.delete" - ], - "modify": [ - "alloydb.clusters.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "alloydb.clusters.create", + "alloydb.clusters.delete", + "alloydb.clusters.get", + "alloydb.clusters.update", + "alloydb.operations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "alloydb.clusters.delete" + ], + "modify": [ + "alloydb.clusters.update" + ], + "plan": [ + "alloydb.clusters.get" + ] + } +] diff --git a/src/mapping/google/resource/alloydb/google_alloydb_instance.json b/src/mapping/google/resource/alloydb/google_alloydb_instance.json index d53113e8..f5ee84cf 100644 --- a/src/mapping/google/resource/alloydb/google_alloydb_instance.json +++ b/src/mapping/google/resource/alloydb/google_alloydb_instance.json @@ -1,20 +1,22 @@ -[ - { - "apply": [ - "alloydb.instances.create", - "alloydb.instances.delete", - "alloydb.instances.get", - "alloydb.instances.update" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "alloydb.instances.delete" - ], - "modify": [ - "alloydb.instances.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "alloydb.instances.create", + "alloydb.instances.delete", + "alloydb.instances.get", + "alloydb.instances.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "alloydb.instances.delete" + ], + "modify": [ + "alloydb.instances.update" + ], + "plan": [ + "alloydb.instances.get" + ] + } +] diff --git a/src/mapping/google/resource/analyticshub/google_bigquery_analytics_hub_listing_subscription.json b/src/mapping/google/resource/analyticshub/google_bigquery_analytics_hub_listing_subscription.json new file mode 100644 index 00000000..e674d29a --- /dev/null +++ b/src/mapping/google/resource/analyticshub/google_bigquery_analytics_hub_listing_subscription.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "analyticshub.subscriptions.get", + "analyticshub.subscriptions.update", + "analyticshub.subscriptions.delete", + "analyticshub.subscriptions.create", + "analyticshub.listings.subscribe" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apigee/google_apigee_environment_iam_binding.json b/src/mapping/google/resource/apigee/google_apigee_environment_iam_binding.json new file mode 100644 index 00000000..68b0624b --- /dev/null +++ b/src/mapping/google/resource/apigee/google_apigee_environment_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "apigee.environments.setIamPolicy", + "apigee.environments.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apigee/google_apigee_environment_iam_member.json b/src/mapping/google/resource/apigee/google_apigee_environment_iam_member.json new file mode 100644 index 00000000..68b0624b --- /dev/null +++ b/src/mapping/google/resource/apigee/google_apigee_environment_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "apigee.environments.setIamPolicy", + "apigee.environments.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apigee/google_apigee_environment_iam_policy.json b/src/mapping/google/resource/apigee/google_apigee_environment_iam_policy.json new file mode 100644 index 00000000..68b0624b --- /dev/null +++ b/src/mapping/google/resource/apigee/google_apigee_environment_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "apigee.environments.setIamPolicy", + "apigee.environments.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apihub/google_apihub_api_hub_instance.json b/src/mapping/google/resource/apihub/google_apihub_api_hub_instance.json new file mode 100644 index 00000000..13e28441 --- /dev/null +++ b/src/mapping/google/resource/apihub/google_apihub_api_hub_instance.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "apihub.apiHubInstances.create", + "apihub.apiHubInstances.delete", + "apihub.apiHubInstances.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apihub/google_apihub_curation.json b/src/mapping/google/resource/apihub/google_apihub_curation.json new file mode 100644 index 00000000..d4a1294c --- /dev/null +++ b/src/mapping/google/resource/apihub/google_apihub_curation.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "apihub.curations.create", + "apihub.curations.delete", + "apihub.curations.get", + "apihub.curations.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apihub/google_apihub_host_project_registration.json b/src/mapping/google/resource/apihub/google_apihub_host_project_registration.json new file mode 100644 index 00000000..e9d49a9d --- /dev/null +++ b/src/mapping/google/resource/apihub/google_apihub_host_project_registration.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "apihub.hostProjectRegistrations.create", + "apihub.hostProjectRegistrations.delete", + "apihub.hostProjectRegistrations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apihub/google_apihub_plugin.json b/src/mapping/google/resource/apihub/google_apihub_plugin.json new file mode 100644 index 00000000..4e33337b --- /dev/null +++ b/src/mapping/google/resource/apihub/google_apihub_plugin.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "apihub.plugins.create", + "apihub.plugins.get", + "apihub.plugins.update", + "apihub.plugins.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apihub/google_apihub_plugin_instance.json b/src/mapping/google/resource/apihub/google_apihub_plugin_instance.json new file mode 100644 index 00000000..e182dccd --- /dev/null +++ b/src/mapping/google/resource/apihub/google_apihub_plugin_instance.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "apihub.plugininstances.create", + "apihub.plugininstances.delete", + "apihub.plugininstances.update", + "apihub.plugininstances.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apphub/google_apphub_application.json b/src/mapping/google/resource/apphub/google_apphub_application.json new file mode 100644 index 00000000..801b1414 --- /dev/null +++ b/src/mapping/google/resource/apphub/google_apphub_application.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "apphub.applications.create", + "apphub.applications.delete", + "apphub.applications.get", + "apphub.applications.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apphub/google_apphub_service.json b/src/mapping/google/resource/apphub/google_apphub_service.json new file mode 100644 index 00000000..86e2e1be --- /dev/null +++ b/src/mapping/google/resource/apphub/google_apphub_service.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "apphub.services.create", + "apphub.services.delete", + "apphub.services.get", + "apphub.services.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apphub/google_apphub_service_project_attachment.json b/src/mapping/google/resource/apphub/google_apphub_service_project_attachment.json new file mode 100644 index 00000000..97798eb0 --- /dev/null +++ b/src/mapping/google/resource/apphub/google_apphub_service_project_attachment.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "apphub.serviceProjectAttachments.attach", + "apphub.serviceProjectAttachments.create", + "apphub.serviceProjectAttachments.delete", + "apphub.serviceProjectAttachments.detach", + "apphub.serviceProjectAttachments.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apphub/google_apphub_workload.json b/src/mapping/google/resource/apphub/google_apphub_workload.json new file mode 100644 index 00000000..74f51753 --- /dev/null +++ b/src/mapping/google/resource/apphub/google_apphub_workload.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "apphub.workloads.create", + "apphub.workloads.get", + "apphub.workloads.update", + "apphub.workloads.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/artifactregistry/google_artifact_registry_repository_iam_policy.json b/src/mapping/google/resource/artifactregistry/google_artifact_registry_repository_iam_policy.json index 685cf1d4..fa4d79b3 100644 --- a/src/mapping/google/resource/artifactregistry/google_artifact_registry_repository_iam_policy.json +++ b/src/mapping/google/resource/artifactregistry/google_artifact_registry_repository_iam_policy.json @@ -9,6 +9,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "artifactregistry.repositories.getIamPolicy" + ] } ] diff --git a/src/mapping/google/resource/backend/gcs.json b/src/mapping/google/resource/backend/gcs.json new file mode 100644 index 00000000..d9f17369 --- /dev/null +++ b/src/mapping/google/resource/backend/gcs.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "storage.buckets.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/backupdr/google_backup_dr_backup_plan.json b/src/mapping/google/resource/backupdr/google_backup_dr_backup_plan.json new file mode 100644 index 00000000..8ddc374e --- /dev/null +++ b/src/mapping/google/resource/backupdr/google_backup_dr_backup_plan.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "backupdr.backupPlans.create", + "backupdr.backupPlans.delete", + "backupdr.backupPlans.get", + "backupdr.backupPlans.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/backupdr/google_backup_dr_backup_plan_association.json b/src/mapping/google/resource/backupdr/google_backup_dr_backup_plan_association.json new file mode 100644 index 00000000..9a8d07d1 --- /dev/null +++ b/src/mapping/google/resource/backupdr/google_backup_dr_backup_plan_association.json @@ -0,0 +1,27 @@ +[ + { + "apply": [ + "backupdr.backupPlanAssociations.createForCloudSqlInstance", + "backupdr.backupPlanAssociations.createForComputeDisk", + "backupdr.backupPlanAssociations.createForComputeInstance", + "backupdr.backupPlanAssociations.deleteForCloudSqlInstance", + "backupdr.backupPlanAssociations.deleteForComputeDisk", + "backupdr.backupPlanAssociations.deleteForComputeInstance", + "backupdr.backupPlanAssociations.fetchForCloudSqlInstance", + "backupdr.backupPlanAssociations.get", + "backupdr.backupPlanAssociations.getForCloudSqlInstance", + "backupdr.backupPlanAssociations.getForComputeDisk", + "backupdr.backupPlanAssociations.triggerBackupForCloudSqlInstance", + "backupdr.backupPlanAssociations.triggerBackupForComputeDisk", + "backupdr.backupPlanAssociations.triggerBackupForComputeInstance", + "backupdr.backupPlanAssociations.updateForComputeDisk", + "backupdr.backupPlanAssociations.updateForComputeInstance" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/backupdr/google_backup_dr_backup_vault.json b/src/mapping/google/resource/backupdr/google_backup_dr_backup_vault.json new file mode 100644 index 00000000..282eb8ad --- /dev/null +++ b/src/mapping/google/resource/backupdr/google_backup_dr_backup_vault.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "backupdr.backupVaults.create", + "backupdr.backupVaults.delete", + "backupdr.backupVaults.get", + "backupdr.backupVaults.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/backupdr/google_backup_dr_management_server.json b/src/mapping/google/resource/backupdr/google_backup_dr_management_server.json new file mode 100644 index 00000000..d7e9c334 --- /dev/null +++ b/src/mapping/google/resource/backupdr/google_backup_dr_management_server.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "backupdr.managementServers.create", + "backupdr.managementServers.get", + "backupdr.managementServers.update", + "backupdr.managementServers.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/backupdr/google_backup_dr_service_config.json b/src/mapping/google/resource/backupdr/google_backup_dr_service_config.json new file mode 100644 index 00000000..6e6363db --- /dev/null +++ b/src/mapping/google/resource/backupdr/google_backup_dr_service_config.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "backupdr.resourceBackupConfigs.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_app_connection.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_app_connection.json new file mode 100644 index 00000000..c357d106 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_app_connection.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "beyondcorp.appConnections.create", + "beyondcorp.appConnections.delete", + "beyondcorp.appConnections.get", + "beyondcorp.appConnections.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_app_connector.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_app_connector.json new file mode 100644 index 00000000..19896bc7 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_app_connector.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "beyondcorp.appConnectors.create", + "beyondcorp.appConnectors.get", + "beyondcorp.appConnectors.delete", + "beyondcorp.appConnectors.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_app_gateway.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_app_gateway.json new file mode 100644 index 00000000..b337d7f8 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_app_gateway.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "beyondcorp.appGateways.create", + "beyondcorp.appGateways.delete", + "beyondcorp.appGateways.update", + "beyondcorp.appGateways.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_application.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_application.json new file mode 100644 index 00000000..0083e5f6 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_application.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "beyondcorp.sgApplications.create", + "beyondcorp.sgApplications.delete", + "beyondcorp.sgApplications.get", + "beyondcorp.sgApplications.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_binding.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_binding.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_binding.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_member.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_member.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_member.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_policy.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_policy.json new file mode 100644 index 00000000..1b7d6db6 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "beyondcorp.sgApplications.getIamPolicy", + "beyondcorp.sgApplications.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "beyondcorp.sgApplications.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway.json new file mode 100644 index 00000000..04455491 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "beyondcorp.securityGateways.create", + "beyondcorp.securityGateways.get", + "beyondcorp.securityGateways.update", + "beyondcorp.securityGateways.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application.json new file mode 100644 index 00000000..0083e5f6 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "beyondcorp.sgApplications.create", + "beyondcorp.sgApplications.delete", + "beyondcorp.sgApplications.get", + "beyondcorp.sgApplications.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_binding.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_binding.json new file mode 100644 index 00000000..1b5ad869 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "beyondcorp.sgApplications.getIamPolicy", + "beyondcorp.sgApplications.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_member.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_member.json new file mode 100644 index 00000000..1b5ad869 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "beyondcorp.sgApplications.getIamPolicy", + "beyondcorp.sgApplications.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_policy.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_policy.json new file mode 100644 index 00000000..fb891754 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "beyondcorp.sgApplications.getIamPolicy", + "beyondcorp.sgApplications.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "beyondcorp.sgApplications.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_binding.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_binding.json new file mode 100644 index 00000000..87b1b386 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "beyondcorp.securityGateways.getIamPolicy", + "beyondcorp.securityGateways.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_member.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_member.json new file mode 100644 index 00000000..3055048a --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "beyondcorp.securityGateways.getIamPolicy", + "beyondcorp.securityGateways.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_policy.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_policy.json new file mode 100644 index 00000000..33e8296b --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "beyondcorp.securityGateways.getIamPolicy", + "beyondcorp.securityGateways.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "beyondcorp.securityGateways.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/biglake/google_biglake_catalog.json b/src/mapping/google/resource/biglake/google_biglake_catalog.json new file mode 100644 index 00000000..19598023 --- /dev/null +++ b/src/mapping/google/resource/biglake/google_biglake_catalog.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "biglake.catalogs.create", + "biglake.catalogs.delete", + "biglake.catalogs.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "biglake.catalogs.delete" + ], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/biglake/google_biglake_database.json b/src/mapping/google/resource/biglake/google_biglake_database.json new file mode 100644 index 00000000..966ea125 --- /dev/null +++ b/src/mapping/google/resource/biglake/google_biglake_database.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "biglake.databases.create", + "biglake.databases.delete", + "biglake.databases.get", + "biglake.databases.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "biglake.databases.delete" + ], + "modify": [ + "biglake.databases.update" + ], + "plan": [ + "biglake.databases.get" + ] + } +] diff --git a/src/mapping/google/resource/biglake/google_biglake_table.json b/src/mapping/google/resource/biglake/google_biglake_table.json new file mode 100644 index 00000000..c4a66859 --- /dev/null +++ b/src/mapping/google/resource/biglake/google_biglake_table.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "biglake.tables.create", + "biglake.tables.delete", + "biglake.tables.get", + "biglake.tables.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "biglake.tables.delete" + ], + "modify": [ + "biglake.tables.update" + ], + "plan": [ + "biglake.tables.get" + ] + } +] diff --git a/src/mapping/google/resource/bigquery/google_bigquery_connection.json b/src/mapping/google/resource/bigquery/google_bigquery_connection.json index 6045e5b7..06fd549f 100644 --- a/src/mapping/google/resource/bigquery/google_bigquery_connection.json +++ b/src/mapping/google/resource/bigquery/google_bigquery_connection.json @@ -4,21 +4,15 @@ "bigquery.connections.get", "bigquery.connections.create", "bigquery.connections.delete", - "bigquery.connections.update", - "accesscontextmanager.servicePerimeters.create", - "accesscontextmanager.servicePerimeters.delete", - "accesscontextmanager.servicePerimeters.get", - "accesscontextmanager.servicePerimeters.update" + "bigquery.connections.update" ], "attributes": { "tags": [] }, "destroy": [ - "accesscontextmanager.servicePerimeters.delete", "bigquery.connections.delete" ], "modify": [ - "accesscontextmanager.servicePerimeters.update", "bigquery.connections.update" ], "plan": [] diff --git a/src/mapping/google/resource/bigquery/google_bigquery_dataset_access.json b/src/mapping/google/resource/bigquery/google_bigquery_dataset_access.json new file mode 100644 index 00000000..2c57bc06 --- /dev/null +++ b/src/mapping/google/resource/bigquery/google_bigquery_dataset_access.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "bigquery.datasets.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/bigquery/google_bigquery_row_access_policy.json b/src/mapping/google/resource/bigquery/google_bigquery_row_access_policy.json new file mode 100644 index 00000000..2c57bc06 --- /dev/null +++ b/src/mapping/google/resource/bigquery/google_bigquery_row_access_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "bigquery.datasets.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/bigtable/google_bigtable_authorized_view.json b/src/mapping/google/resource/bigtable/google_bigtable_authorized_view.json new file mode 100644 index 00000000..94e79e45 --- /dev/null +++ b/src/mapping/google/resource/bigtable/google_bigtable_authorized_view.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "bigtable.authorizedViews.create", + "bigtable.authorizedViews.delete", + "bigtable.authorizedViews.get", + "bigtable.authorizedViews.update", + "bigtable.tables.mutateRows", + "bigtable.tables.readRows" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "bigtable.authorizedViews.delete" + ], + "modify": [ + "bigtable.authorizedViews.update" + ], + "plan": [] + } +] diff --git a/src/mapping/google/resource/bigtable/google_bigtable_logical_view.json b/src/mapping/google/resource/bigtable/google_bigtable_logical_view.json new file mode 100644 index 00000000..ca61e4ce --- /dev/null +++ b/src/mapping/google/resource/bigtable/google_bigtable_logical_view.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "bigtable.logicalViews.create", + "bigtable.logicalViews.delete", + "bigtable.logicalViews.get", + "bigtable.logicalViews.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "bigtable.logicalViews.delete" + ], + "modify": [ + "bigtable.logicalViews.update" + ], + "plan": [] + } +] diff --git a/src/mapping/google/resource/bigtable/google_bigtable_materialized_view.json b/src/mapping/google/resource/bigtable/google_bigtable_materialized_view.json new file mode 100644 index 00000000..3b43d47e --- /dev/null +++ b/src/mapping/google/resource/bigtable/google_bigtable_materialized_view.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "bigtable.materializedViews.create", + "bigtable.materializedViews.delete", + "bigtable.materializedViews.get", + "bigtable.materializedViews.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "bigtable.materializedViews.delete" + ], + "modify": [ + "bigtable.materializedViews.update" + ], + "plan": [] + } +] diff --git a/src/mapping/google/resource/bigtable/google_bigtable_schema_bundle.json b/src/mapping/google/resource/bigtable/google_bigtable_schema_bundle.json new file mode 100644 index 00000000..dc80c15c --- /dev/null +++ b/src/mapping/google/resource/bigtable/google_bigtable_schema_bundle.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "bigtable.schemaBundles.get", + "bigtable.schemaBundles.create", + "bigtable.schemaBundles.delete", + "bigtable.schemaBundles.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/billing/google_billing_account_iam_binding.json b/src/mapping/google/resource/billing/google_billing_account_iam_binding.json new file mode 100644 index 00000000..6fbf215f --- /dev/null +++ b/src/mapping/google/resource/billing/google_billing_account_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "billing.accounts.getIamPolicy", + "billing.accounts.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/billing/google_billing_account_iam_member.json b/src/mapping/google/resource/billing/google_billing_account_iam_member.json new file mode 100644 index 00000000..6fbf215f --- /dev/null +++ b/src/mapping/google/resource/billing/google_billing_account_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "billing.accounts.getIamPolicy", + "billing.accounts.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/billing/google_billing_account_iam_policy.json b/src/mapping/google/resource/billing/google_billing_account_iam_policy.json new file mode 100644 index 00000000..6fbf215f --- /dev/null +++ b/src/mapping/google/resource/billing/google_billing_account_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "billing.accounts.getIamPolicy", + "billing.accounts.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/billing/google_billing_budget.json b/src/mapping/google/resource/billing/google_billing_budget.json new file mode 100644 index 00000000..41305e00 --- /dev/null +++ b/src/mapping/google/resource/billing/google_billing_budget.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "billing.budgets.create", + "billing.budgets.get", + "billing.budgets.update", + "billing.budgets.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_binding.json b/src/mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_binding.json new file mode 100644 index 00000000..ba707022 --- /dev/null +++ b/src/mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "binaryauthorization.attestors.getIamPolicy", + "binaryauthorization.attestors.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_member.json b/src/mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_member.json new file mode 100644 index 00000000..ba707022 --- /dev/null +++ b/src/mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "binaryauthorization.attestors.getIamPolicy", + "binaryauthorization.attestors.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_policy.json b/src/mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_policy.json new file mode 100644 index 00000000..05dc7ce7 --- /dev/null +++ b/src/mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "binaryauthorization.attestors.getIamPolicy", + "binaryauthorization.attestors.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "binaryauthorization.attestors.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/certificatemanager/google_certificate_manager_dns_authorization.json b/src/mapping/google/resource/certificatemanager/google_certificate_manager_dns_authorization.json new file mode 100644 index 00000000..f9aba094 --- /dev/null +++ b/src/mapping/google/resource/certificatemanager/google_certificate_manager_dns_authorization.json @@ -0,0 +1,18 @@ +[ + { + "apply": [ + "certificatemanager.dnsauthorizations.create", + "certificatemanager.operations.delete", + "certificatemanager.dnsauthorizations.get", + "certificatemanager.dnsauthorizations.delete", + "certificatemanager.dnsauthorizations.update", + "certificatemanager.dnsauthorizations.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/chronicle/google_chronicle_data_access_label.json b/src/mapping/google/resource/chronicle/google_chronicle_data_access_label.json new file mode 100644 index 00000000..71f9c22e --- /dev/null +++ b/src/mapping/google/resource/chronicle/google_chronicle_data_access_label.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "chronicle.dataAccessLabels.create", + "chronicle.dataAccessLabels.delete", + "chronicle.dataAccessLabels.get", + "chronicle.dataAccessLabels.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/chronicle/google_chronicle_data_access_scope.json b/src/mapping/google/resource/chronicle/google_chronicle_data_access_scope.json new file mode 100644 index 00000000..85431001 --- /dev/null +++ b/src/mapping/google/resource/chronicle/google_chronicle_data_access_scope.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "chronicle.dataAccessScopes.create", + "chronicle.dataAccessScopes.delete", + "chronicle.dataAccessScopes.get", + "chronicle.dataAccessScopes.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/chronicle/google_chronicle_reference_list.json b/src/mapping/google/resource/chronicle/google_chronicle_reference_list.json new file mode 100644 index 00000000..1dfcafd2 --- /dev/null +++ b/src/mapping/google/resource/chronicle/google_chronicle_reference_list.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "chronicle.referenceLists.create", + "chronicle.referenceLists.get", + "chronicle.referenceLists.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/chronicle/google_chronicle_retrohunt.json b/src/mapping/google/resource/chronicle/google_chronicle_retrohunt.json new file mode 100644 index 00000000..715fcfe2 --- /dev/null +++ b/src/mapping/google/resource/chronicle/google_chronicle_retrohunt.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "chronicle.retrohunts.create", + "chronicle.retrohunts.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/chronicle/google_chronicle_rule.json b/src/mapping/google/resource/chronicle/google_chronicle_rule.json new file mode 100644 index 00000000..1574ad23 --- /dev/null +++ b/src/mapping/google/resource/chronicle/google_chronicle_rule.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "chronicle.rules.create", + "chronicle.rules.delete", + "chronicle.rules.get", + "chronicle.rules.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/chronicle/google_chronicle_rule_deployment.json b/src/mapping/google/resource/chronicle/google_chronicle_rule_deployment.json new file mode 100644 index 00000000..dbb01ffe --- /dev/null +++ b/src/mapping/google/resource/chronicle/google_chronicle_rule_deployment.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "chronicle.ruleDeployments.get", + "chronicle.ruleDeployments.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/chronicle/google_chronicle_watchlist.json b/src/mapping/google/resource/chronicle/google_chronicle_watchlist.json new file mode 100644 index 00000000..7d50435b --- /dev/null +++ b/src/mapping/google/resource/chronicle/google_chronicle_watchlist.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "chronicle.watchlists.create", + "chronicle.watchlists.delete", + "chronicle.watchlists.get", + "chronicle.watchlists.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_code_repository_index.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_code_repository_index.json new file mode 100644 index 00000000..76fc2a6d --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_code_repository_index.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.codeRepositoryIndexes.create", + "cloudaicompanion.codeRepositoryIndexes.delete", + "cloudaicompanion.codeRepositoryIndexes.get", + "cloudaicompanion.codeRepositoryIndexes.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_code_tools_setting.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_code_tools_setting.json new file mode 100644 index 00000000..68b8a4a0 --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_code_tools_setting.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.codeToolsSettings.create", + "cloudaicompanion.codeToolsSettings.delete", + "cloudaicompanion.codeToolsSettings.get", + "cloudaicompanion.codeToolsSettings.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_code_tools_setting_binding.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_code_tools_setting_binding.json new file mode 100644 index 00000000..e77b08a5 --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_code_tools_setting_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.settingBindings.codeToolsSettingsCreate", + "cloudaicompanion.settingBindings.codeToolsSettingsDelete", + "cloudaicompanion.settingBindings.codeToolsSettingsGet", + "cloudaicompanion.settingBindings.codeToolsSettingsUpdate" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_data_sharing_with_google_setting.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_data_sharing_with_google_setting.json new file mode 100644 index 00000000..6a25e1ad --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_data_sharing_with_google_setting.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.dataSharingWithGoogleSettings.create", + "cloudaicompanion.dataSharingWithGoogleSettings.delete", + "cloudaicompanion.dataSharingWithGoogleSettings.get", + "cloudaicompanion.dataSharingWithGoogleSettings.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_data_sharing_with_google_setting_binding.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_data_sharing_with_google_setting_binding.json new file mode 100644 index 00000000..35104cd6 --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_data_sharing_with_google_setting_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.settingBindings.dataSharingWithGoogleSettingsCreate", + "cloudaicompanion.settingBindings.dataSharingWithGoogleSettingsDelete", + "cloudaicompanion.settingBindings.dataSharingWithGoogleSettingsGet", + "cloudaicompanion.settingBindings.dataSharingWithGoogleSettingsUpdate" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_gemini_gcp_enablement_setting.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_gemini_gcp_enablement_setting.json new file mode 100644 index 00000000..8b4cab83 --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_gemini_gcp_enablement_setting.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.geminiGcpEnablementSettings.create", + "cloudaicompanion.geminiGcpEnablementSettings.delete", + "cloudaicompanion.geminiGcpEnablementSettings.get", + "cloudaicompanion.geminiGcpEnablementSettings.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_gemini_gcp_enablement_setting_binding.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_gemini_gcp_enablement_setting_binding.json new file mode 100644 index 00000000..d0298df6 --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_gemini_gcp_enablement_setting_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.settingBindings.geminiGcpEnablementSettingsCreate", + "cloudaicompanion.settingBindings.geminiGcpEnablementSettingsDelete", + "cloudaicompanion.settingBindings.geminiGcpEnablementSettingsGet", + "cloudaicompanion.settingBindings.geminiGcpEnablementSettingsUpdate" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_logging_setting.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_logging_setting.json new file mode 100644 index 00000000..fcee370f --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_logging_setting.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.loggingSettings.create", + "cloudaicompanion.loggingSettings.delete", + "cloudaicompanion.loggingSettings.get", + "cloudaicompanion.loggingSettings.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_logging_setting_binding.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_logging_setting_binding.json new file mode 100644 index 00000000..ca33e164 --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_logging_setting_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.settingBindings.loggingSettingsCreate", + "cloudaicompanion.settingBindings.loggingSettingsDelete", + "cloudaicompanion.settingBindings.loggingSettingsGet", + "cloudaicompanion.settingBindings.loggingSettingsUpdate" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_release_channel_setting.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_release_channel_setting.json new file mode 100644 index 00000000..c4adcb70 --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_release_channel_setting.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.releaseChannelSettings.create", + "cloudaicompanion.releaseChannelSettings.delete", + "cloudaicompanion.releaseChannelSettings.get", + "cloudaicompanion.releaseChannelSettings.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_release_channel_setting_binding.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_release_channel_setting_binding.json new file mode 100644 index 00000000..0f059b11 --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_release_channel_setting_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.settingBindings.releaseChannelSettingsCreate", + "cloudaicompanion.settingBindings.releaseChannelSettingsDelete", + "cloudaicompanion.settingBindings.releaseChannelSettingsGet", + "cloudaicompanion.settingBindings.releaseChannelSettingsUpdate" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group.json new file mode 100644 index 00000000..6652c195 --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.repositoryGroups.create", + "cloudaicompanion.repositoryGroups.delete", + "cloudaicompanion.repositoryGroups.get", + "cloudaicompanion.repositoryGroups.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_binding.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_binding.json new file mode 100644 index 00000000..6d39c3bc --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.repositoryGroups.getIamPolicy", + "cloudaicompanion.repositoryGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudaicompanion.repositoryGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_member.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_member.json new file mode 100644 index 00000000..6d39c3bc --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_member.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.repositoryGroups.getIamPolicy", + "cloudaicompanion.repositoryGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudaicompanion.repositoryGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_policy.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_policy.json new file mode 100644 index 00000000..6d39c3bc --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.repositoryGroups.getIamPolicy", + "cloudaicompanion.repositoryGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudaicompanion.repositoryGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/cloudbuild/google_cloudbuild_trigger.json b/src/mapping/google/resource/cloudbuild/google_cloudbuild_trigger.json index e5051fe5..6a8c36df 100644 --- a/src/mapping/google/resource/cloudbuild/google_cloudbuild_trigger.json +++ b/src/mapping/google/resource/cloudbuild/google_cloudbuild_trigger.json @@ -10,6 +10,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "cloudbuild.builds.get" + ] } ] diff --git a/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection.json b/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection.json new file mode 100644 index 00000000..ddeb47ed --- /dev/null +++ b/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "cloudbuild.connections.create", + "cloudbuild.connections.delete", + "cloudbuild.connections.get", + "cloudbuild.connections.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "cloudbuild.connections.delete" + ], + "modify": [ + "cloudbuild.connections.update" + ], + "plan": [ + "cloudbuild.connections.get" + ] + } +] diff --git a/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_binding.json b/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_binding.json new file mode 100644 index 00000000..3633066a --- /dev/null +++ b/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_binding.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "cloudbuild.connections.getIamPolicy", + "cloudbuild.connections.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "cloudbuild.connections.setIamPolicy" + ], + "modify": [ + "cloudbuild.connections.setIamPolicy" + ], + "plan": [ + "cloudbuild.connections.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_member.json b/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_member.json new file mode 100644 index 00000000..3633066a --- /dev/null +++ b/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_member.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "cloudbuild.connections.getIamPolicy", + "cloudbuild.connections.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "cloudbuild.connections.setIamPolicy" + ], + "modify": [ + "cloudbuild.connections.setIamPolicy" + ], + "plan": [ + "cloudbuild.connections.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_policy.json b/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_policy.json new file mode 100644 index 00000000..3633066a --- /dev/null +++ b/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_policy.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "cloudbuild.connections.getIamPolicy", + "cloudbuild.connections.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "cloudbuild.connections.setIamPolicy" + ], + "modify": [ + "cloudbuild.connections.setIamPolicy" + ], + "plan": [ + "cloudbuild.connections.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_repository.json b/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_repository.json new file mode 100644 index 00000000..2b616422 --- /dev/null +++ b/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_repository.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudbuild.repositories.create", + "cloudbuild.repositories.delete", + "cloudbuild.repositories.fetchGitRefs", + "cloudbuild.repositories.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_binding.json b/src/mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_binding.json new file mode 100644 index 00000000..4f97f84e --- /dev/null +++ b/src/mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "clouddeploy.customTargetTypes.getIamPolicy", + "clouddeploy.customTargetTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_member.json b/src/mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_member.json new file mode 100644 index 00000000..4f97f84e --- /dev/null +++ b/src/mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "clouddeploy.customTargetTypes.getIamPolicy", + "clouddeploy.customTargetTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_policy.json b/src/mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_policy.json new file mode 100644 index 00000000..86c94851 --- /dev/null +++ b/src/mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "clouddeploy.customTargetTypes.getIamPolicy", + "clouddeploy.customTargetTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "clouddeploy.customTargetTypes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_binding.json b/src/mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_binding.json new file mode 100644 index 00000000..252345bd --- /dev/null +++ b/src/mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "clouddeploy.deliveryPipelines.getIamPolicy", + "clouddeploy.deliveryPipelines.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_member.json b/src/mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_member.json new file mode 100644 index 00000000..252345bd --- /dev/null +++ b/src/mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "clouddeploy.deliveryPipelines.getIamPolicy", + "clouddeploy.deliveryPipelines.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_policy.json b/src/mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_policy.json new file mode 100644 index 00000000..1d753cd9 --- /dev/null +++ b/src/mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "clouddeploy.deliveryPipelines.getIamPolicy", + "clouddeploy.deliveryPipelines.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "clouddeploy.deliveryPipelines.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_binding.json b/src/mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_binding.json new file mode 100644 index 00000000..c4fff3fc --- /dev/null +++ b/src/mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "clouddeploy.targets.getIamPolicy", + "clouddeploy.targets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_member.json b/src/mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_member.json new file mode 100644 index 00000000..c4fff3fc --- /dev/null +++ b/src/mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "clouddeploy.targets.getIamPolicy", + "clouddeploy.targets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_policy.json b/src/mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_policy.json new file mode 100644 index 00000000..57830ad4 --- /dev/null +++ b/src/mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "clouddeploy.targets.getIamPolicy", + "clouddeploy.targets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "clouddeploy.targets.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function.json b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function.json new file mode 100644 index 00000000..794beaf2 --- /dev/null +++ b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function.json @@ -0,0 +1,24 @@ +[ + { + "apply": [ + "cloudfunctions.functions.create", + "cloudfunctions.functions.get", + "cloudfunctions.functions.update", + "cloudfunctions.functions.delete", + "cloudfunctions.operations.get", + "storage.objects.list" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "cloudfunctions.functions.delete" + ], + "modify": [ + "cloudfunctions.functions.update" + ], + "plan": [ + "cloudfunctions.functions.get" + ] + } +] diff --git a/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_binding.json b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_binding.json new file mode 100644 index 00000000..bbce8658 --- /dev/null +++ b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "run.services.getIamPolicy", + "run.services.setIamPolicy", + "cloudfunctions.functions.getIamPolicy", + "cloudfunctions.functions.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_member.json b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_member.json new file mode 100644 index 00000000..bbce8658 --- /dev/null +++ b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_member.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "run.services.getIamPolicy", + "run.services.setIamPolicy", + "cloudfunctions.functions.getIamPolicy", + "cloudfunctions.functions.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_policy.json b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_policy.json new file mode 100644 index 00000000..bbce8658 --- /dev/null +++ b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "run.services.getIamPolicy", + "run.services.setIamPolicy", + "cloudfunctions.functions.getIamPolicy", + "cloudfunctions.functions.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function.json b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function.json index d61d264e..29a714c2 100644 --- a/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function.json +++ b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function.json @@ -1,12 +1,12 @@ [ { "apply": [ - "iam.serviceAccounts.actAs", "cloudfunctions.functions.create", "cloudfunctions.operations.get", "cloudfunctions.functions.get", "cloudfunctions.functions.delete", - "cloudfunctions.functions.update" + "cloudfunctions.functions.update", + "storage.objects.list" ], "attributes": { "tags": [] @@ -15,6 +15,8 @@ "cloudfunctions.functions.delete" ], "modify": [], - "plan": [] + "plan": [ + "cloudfunctions.functions.get" + ] } ] diff --git a/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function_iam_binding.json b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function_iam_binding.json new file mode 100644 index 00000000..77663d7d --- /dev/null +++ b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "cloudfunctions.functions.setIamPolicy", + "cloudfunctions.functions.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function_iam_policy.json b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function_iam_policy.json index 77663d7d..d77d4ada 100644 --- a/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function_iam_policy.json +++ b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function_iam_policy.json @@ -9,6 +9,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "cloudfunctions.functions.getIamPolicy" + ] } ] diff --git a/src/mapping/google/resource/cloudkms/google_kms_crypto_key.json b/src/mapping/google/resource/cloudkms/google_kms_crypto_key.json index fb8cf48f..3bb2dae4 100644 --- a/src/mapping/google/resource/cloudkms/google_kms_crypto_key.json +++ b/src/mapping/google/resource/cloudkms/google_kms_crypto_key.json @@ -1,21 +1,23 @@ -[ - { - "apply": [ - "cloudkms.cryptoKeys.create", - "cloudkms.cryptoKeys.get", - "cloudkms.cryptoKeyVersions.list", - "cloudkms.cryptoKeyVersions.destroy", - "cloudkms.cryptoKeys.update" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "cloudkms.cryptoKeyVersions.destroy" - ], - "modify": [ - "cloudkms.cryptoKeys.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "cloudkms.cryptoKeys.create", + "cloudkms.cryptoKeys.get", + "cloudkms.cryptoKeyVersions.list", + "cloudkms.cryptoKeyVersions.destroy", + "cloudkms.cryptoKeys.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "cloudkms.cryptoKeyVersions.destroy" + ], + "modify": [ + "cloudkms.cryptoKeys.update" + ], + "plan": [ + "cloudkms.cryptoKeys.get" + ] + } +] diff --git a/src/mapping/google/resource/cloudkms/google_kms_crypto_key_iam_policy.json b/src/mapping/google/resource/cloudkms/google_kms_crypto_key_iam_policy.json index 43ac0ca3..6f09d3e1 100644 --- a/src/mapping/google/resource/cloudkms/google_kms_crypto_key_iam_policy.json +++ b/src/mapping/google/resource/cloudkms/google_kms_crypto_key_iam_policy.json @@ -9,6 +9,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "cloudkms.cryptoKeys.getIamPolicy" + ] } ] diff --git a/src/mapping/google/resource/cloudkms/google_kms_crypto_key_version.json b/src/mapping/google/resource/cloudkms/google_kms_crypto_key_version.json new file mode 100644 index 00000000..19b78ad9 --- /dev/null +++ b/src/mapping/google/resource/cloudkms/google_kms_crypto_key_version.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudkms.cryptoKeyVersions.create", + "cloudkms.cryptoKeyVersions.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudkms.cryptoKeyVersions.get" + ] + } +] diff --git a/src/mapping/google/resource/cloudkms/google_kms_key_handle.json b/src/mapping/google/resource/cloudkms/google_kms_key_handle.json new file mode 100644 index 00000000..0559ad5c --- /dev/null +++ b/src/mapping/google/resource/cloudkms/google_kms_key_handle.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudkms.keyHandles.create", + "cloudkms.keyHandles.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudkms.keyHandles.get" + ] + } +] diff --git a/src/mapping/google/resource/cloudkms/google_kms_key_ring.json b/src/mapping/google/resource/cloudkms/google_kms_key_ring.json index 0b29db2b..49f3ef53 100644 --- a/src/mapping/google/resource/cloudkms/google_kms_key_ring.json +++ b/src/mapping/google/resource/cloudkms/google_kms_key_ring.json @@ -9,6 +9,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "cloudkms.keyRings.get" + ] } ] diff --git a/src/mapping/google/resource/cloudkms/google_kms_key_ring_iam_binding.json b/src/mapping/google/resource/cloudkms/google_kms_key_ring_iam_binding.json new file mode 100644 index 00000000..01220ead --- /dev/null +++ b/src/mapping/google/resource/cloudkms/google_kms_key_ring_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "cloudkms.keyRings.setIamPolicy", + "cloudkms.keyRings.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudkms/google_kms_key_ring_iam_member.json b/src/mapping/google/resource/cloudkms/google_kms_key_ring_iam_member.json new file mode 100644 index 00000000..01220ead --- /dev/null +++ b/src/mapping/google/resource/cloudkms/google_kms_key_ring_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "cloudkms.keyRings.setIamPolicy", + "cloudkms.keyRings.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudkms/google_kms_key_ring_iam_policy.json b/src/mapping/google/resource/cloudkms/google_kms_key_ring_iam_policy.json new file mode 100644 index 00000000..cf15ca2c --- /dev/null +++ b/src/mapping/google/resource/cloudkms/google_kms_key_ring_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudkms.keyRings.setIamPolicy", + "cloudkms.keyRings.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudkms.keyRings.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/cloudkms/google_kms_key_ring_import_job.json b/src/mapping/google/resource/cloudkms/google_kms_key_ring_import_job.json new file mode 100644 index 00000000..a962d24e --- /dev/null +++ b/src/mapping/google/resource/cloudkms/google_kms_key_ring_import_job.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudkms.importJobs.create", + "cloudkms.importJobs.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudkms.importJobs.get" + ] + } +] diff --git a/src/mapping/google/resource/cloudkms/google_kms_secret_ciphertext.json b/src/mapping/google/resource/cloudkms/google_kms_secret_ciphertext.json new file mode 100644 index 00000000..4eb63999 --- /dev/null +++ b/src/mapping/google/resource/cloudkms/google_kms_secret_ciphertext.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "cloudkms.cryptoKeyVersions.useToEncrypt" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudsql/google_sql_database.json b/src/mapping/google/resource/cloudsql/google_sql_database.json index 6b085c74..8f2db262 100644 --- a/src/mapping/google/resource/cloudsql/google_sql_database.json +++ b/src/mapping/google/resource/cloudsql/google_sql_database.json @@ -1,20 +1,22 @@ -[ - { - "apply": [ - "cloudsql.databases.create", - "cloudsql.databases.delete", - "cloudsql.databases.get", - "cloudsql.databases.update" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "cloudsql.databases.delete" - ], - "modify": [ - "cloudsql.databases.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "cloudsql.databases.create", + "cloudsql.databases.delete", + "cloudsql.databases.get", + "cloudsql.databases.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "cloudsql.databases.delete" + ], + "modify": [ + "cloudsql.databases.update" + ], + "plan": [ + "cloudsql.databases.get" + ] + } +] diff --git a/src/mapping/google/resource/cloudsql/google_sql_database_instance.json b/src/mapping/google/resource/cloudsql/google_sql_database_instance.json index f6c73287..dfdf682c 100644 --- a/src/mapping/google/resource/cloudsql/google_sql_database_instance.json +++ b/src/mapping/google/resource/cloudsql/google_sql_database_instance.json @@ -1,22 +1,24 @@ -[ - { - "apply": [ - "cloudsql.instances.create", - "cloudsql.instances.get", - "cloudsql.instances.delete", - "cloudsql.instances.update", - "cloudsql.users.list", - "cloudsql.users.delete" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "cloudsql.instances.delete" - ], - "modify": [ - "cloudsql.instances.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "cloudsql.instances.create", + "cloudsql.instances.get", + "cloudsql.instances.delete", + "cloudsql.instances.update", + "cloudsql.users.list", + "cloudsql.users.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "cloudsql.instances.delete" + ], + "modify": [ + "cloudsql.instances.update" + ], + "plan": [ + "cloudsql.instances.get" + ] + } +] diff --git a/src/mapping/google/resource/cloudsql/google_sql_ssl_cert.json b/src/mapping/google/resource/cloudsql/google_sql_ssl_cert.json new file mode 100644 index 00000000..28b71a1c --- /dev/null +++ b/src/mapping/google/resource/cloudsql/google_sql_ssl_cert.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "cloudsql.sslCerts.create", + "cloudsql.sslCerts.delete", + "cloudsql.sslCerts.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_binding.json b/src/mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_binding.json new file mode 100644 index 00000000..b75e4d12 --- /dev/null +++ b/src/mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "cloudtasks.queues.getIamPolicy", + "cloudtasks.queues.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_member.json b/src/mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_member.json new file mode 100644 index 00000000..b75e4d12 --- /dev/null +++ b/src/mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "cloudtasks.queues.getIamPolicy", + "cloudtasks.queues.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_policy.json b/src/mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_policy.json new file mode 100644 index 00000000..54013553 --- /dev/null +++ b/src/mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_policy.json @@ -0,0 +1,18 @@ +[ + { + "apply": [ + "cloudtasks.queues.getIamPolicy", + "cloudtasks.queues.setIamPolicy", + "cloudtasks.queues.list" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudtasks.queues.getIamPolicy", + "cloudtasks.queues.list" + ] + } +] diff --git a/src/mapping/google/resource/composer/google_composer_user_workloads_config_map.json b/src/mapping/google/resource/composer/google_composer_user_workloads_config_map.json new file mode 100644 index 00000000..cfa782e7 --- /dev/null +++ b/src/mapping/google/resource/composer/google_composer_user_workloads_config_map.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "composer.userworkloadsconfigmaps.create", + "composer.userworkloadsconfigmaps.delete", + "composer.userworkloadsconfigmaps.get", + "composer.userworkloadsconfigmaps.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/composer/google_composer_user_workloads_secret.json b/src/mapping/google/resource/composer/google_composer_user_workloads_secret.json new file mode 100644 index 00000000..084a11c7 --- /dev/null +++ b/src/mapping/google/resource/composer/google_composer_user_workloads_secret.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "composer.userworkloadssecrets.create", + "composer.userworkloadssecrets.delete", + "composer.userworkloadssecrets.get", + "composer.userworkloadssecrets.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_address.json b/src/mapping/google/resource/compute/google_compute_address.json index 7cae8c18..3ee6d9c6 100644 --- a/src/mapping/google/resource/compute/google_compute_address.json +++ b/src/mapping/google/resource/compute/google_compute_address.json @@ -17,6 +17,8 @@ "compute.addresses.delete" ], "modify": [], - "plan": [] + "plan": [ + "compute.addresses.get" + ] } ] diff --git a/src/mapping/google/resource/compute/google_compute_backend_bucket.json b/src/mapping/google/resource/compute/google_compute_backend_bucket.json new file mode 100644 index 00000000..2358f189 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_backend_bucket.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.backendBuckets.create", + "compute.backendBuckets.get", + "compute.backendBuckets.update", + "compute.backendBuckets.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_backend_bucket_iam_binding.json b/src/mapping/google/resource/compute/google_compute_backend_bucket_iam_binding.json new file mode 100644 index 00000000..7b36fd5b --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_backend_bucket_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.backendBuckets.setIamPolicy", + "compute.backendBuckets.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_backend_bucket_iam_member.json b/src/mapping/google/resource/compute/google_compute_backend_bucket_iam_member.json new file mode 100644 index 00000000..7b36fd5b --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_backend_bucket_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.backendBuckets.setIamPolicy", + "compute.backendBuckets.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_backend_bucket_iam_policy.json b/src/mapping/google/resource/compute/google_compute_backend_bucket_iam_policy.json new file mode 100644 index 00000000..53546a85 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_backend_bucket_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.backendBuckets.setIamPolicy", + "compute.backendBuckets.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.backendBuckets.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_backend_service.json b/src/mapping/google/resource/compute/google_compute_backend_service.json new file mode 100644 index 00000000..71507945 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_backend_service.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "compute.backendServices.create", + "compute.backendServices.get", + "compute.backendServices.update", + "compute.backendServices.delete", + "compute.httpHealthChecks.useReadOnly", + "compute.healthChecks.useReadOnly", + "compute.httpsHealthChecks.useReadOnly" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_backend_service_iam_binding.json b/src/mapping/google/resource/compute/google_compute_backend_service_iam_binding.json new file mode 100644 index 00000000..9453ec82 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_backend_service_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.backendServices.setIamPolicy", + "compute.backendServices.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_backend_service_iam_member.json b/src/mapping/google/resource/compute/google_compute_backend_service_iam_member.json new file mode 100644 index 00000000..9453ec82 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_backend_service_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.backendServices.setIamPolicy", + "compute.backendServices.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_backend_service_iam_policy.json b/src/mapping/google/resource/compute/google_compute_backend_service_iam_policy.json new file mode 100644 index 00000000..a4069e30 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_backend_service_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.backendServices.setIamPolicy", + "compute.backendServices.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.backendServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_disk_iam_binding.json b/src/mapping/google/resource/compute/google_compute_disk_iam_binding.json new file mode 100644 index 00000000..710e90de --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_disk_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.disks.getIamPolicy", + "compute.disks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_disk_iam_member.json b/src/mapping/google/resource/compute/google_compute_disk_iam_member.json new file mode 100644 index 00000000..710e90de --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_disk_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.disks.getIamPolicy", + "compute.disks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_disk_iam_policy.json b/src/mapping/google/resource/compute/google_compute_disk_iam_policy.json new file mode 100644 index 00000000..85e1fa03 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_disk_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.disks.getIamPolicy", + "compute.disks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.disks.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_forwarding_rule.json b/src/mapping/google/resource/compute/google_compute_forwarding_rule.json new file mode 100644 index 00000000..ccaae82b --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_forwarding_rule.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.forwardingRules.delete", + "compute.forwardingRules.create", + "compute.forwardingRules.get", + "compute.forwardingRules.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_global_address.json b/src/mapping/google/resource/compute/google_compute_global_address.json index 5b2b2490..187f3bd4 100644 --- a/src/mapping/google/resource/compute/google_compute_global_address.json +++ b/src/mapping/google/resource/compute/google_compute_global_address.json @@ -15,6 +15,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "compute.globalAddresses.get" + ] } ] diff --git a/src/mapping/google/resource/compute/google_compute_global_forwarding_rule.json b/src/mapping/google/resource/compute/google_compute_global_forwarding_rule.json new file mode 100644 index 00000000..98ef98a8 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_global_forwarding_rule.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.globalForwardingRules.delete", + "compute.globalForwardingRules.create", + "compute.globalForwardingRules.get", + "compute.globalForwardingRules.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_global_network_endpoint_group.json b/src/mapping/google/resource/compute/google_compute_global_network_endpoint_group.json new file mode 100644 index 00000000..fbecb55f --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_global_network_endpoint_group.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.globalNetworkEndpointGroups.delete", + "compute.globalNetworkEndpointGroups.get", + "compute.globalNetworkEndpointGroups.create", + "compute.globalOperations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_health_check.json b/src/mapping/google/resource/compute/google_compute_health_check.json new file mode 100644 index 00000000..3ec76cfd --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_health_check.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "compute.healthChecks.create", + "compute.healthChecks.delete", + "compute.healthChecks.update", + "compute.healthChecks.get", + "compute.globalOperations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_http_health_check.json b/src/mapping/google/resource/compute/google_compute_http_health_check.json new file mode 100644 index 00000000..842e0a6f --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_http_health_check.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.httpHealthChecks.create", + "compute.httpHealthChecks.get", + "compute.httpHealthChecks.update", + "compute.httpHealthChecks.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_https_health_check.json b/src/mapping/google/resource/compute/google_compute_https_health_check.json new file mode 100644 index 00000000..9152f969 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_https_health_check.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "compute.httpsHealthChecks.create", + "compute.httpsHealthChecks.get", + "compute.httpsHealthChecks.update", + "compute.httpsHealthChecks.delete", + "compute.globalOperations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_image_iam_binding.json b/src/mapping/google/resource/compute/google_compute_image_iam_binding.json new file mode 100644 index 00000000..8ec5191f --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_image_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.images.getIamPolicy", + "compute.images.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_image_iam_member.json b/src/mapping/google/resource/compute/google_compute_image_iam_member.json new file mode 100644 index 00000000..8ec5191f --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_image_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.images.getIamPolicy", + "compute.images.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_image_iam_policy.json b/src/mapping/google/resource/compute/google_compute_image_iam_policy.json new file mode 100644 index 00000000..ef9898b4 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_image_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.images.getIamPolicy", + "compute.images.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.images.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_instance.json b/src/mapping/google/resource/compute/google_compute_instance.json index 111ca465..8600589f 100644 --- a/src/mapping/google/resource/compute/google_compute_instance.json +++ b/src/mapping/google/resource/compute/google_compute_instance.json @@ -20,6 +20,8 @@ "compute.instances.delete" ], "modify": [], - "plan": [] + "plan": [ + "compute.instances.get" + ] } ] diff --git a/src/mapping/google/resource/compute/google_compute_instance_iam_binding.json b/src/mapping/google/resource/compute/google_compute_instance_iam_binding.json new file mode 100644 index 00000000..4334d995 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_instance_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.instances.getIamPolicy", + "compute.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_instance_iam_member.json b/src/mapping/google/resource/compute/google_compute_instance_iam_member.json new file mode 100644 index 00000000..4334d995 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_instance_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.instances.getIamPolicy", + "compute.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_instance_iam_policy.json b/src/mapping/google/resource/compute/google_compute_instance_iam_policy.json new file mode 100644 index 00000000..4334d995 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_instance_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.instances.getIamPolicy", + "compute.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_instance_template.json b/src/mapping/google/resource/compute/google_compute_instance_template.json index cc2d5d4b..4e86c569 100644 --- a/src/mapping/google/resource/compute/google_compute_instance_template.json +++ b/src/mapping/google/resource/compute/google_compute_instance_template.json @@ -13,6 +13,8 @@ "compute.instanceTemplates.delete" ], "modify": [], - "plan": [] + "plan": [ + "compute.instanceTemplates.get" + ] } ] diff --git a/src/mapping/google/resource/compute/google_compute_instance_template_iam_binding.json b/src/mapping/google/resource/compute/google_compute_instance_template_iam_binding.json new file mode 100644 index 00000000..1aab841c --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_instance_template_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.instanceTemplates.getIamPolicy", + "compute.instanceTemplates.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_instance_template_iam_member.json b/src/mapping/google/resource/compute/google_compute_instance_template_iam_member.json new file mode 100644 index 00000000..1aab841c --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_instance_template_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.instanceTemplates.getIamPolicy", + "compute.instanceTemplates.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_instance_template_iam_policy.json b/src/mapping/google/resource/compute/google_compute_instance_template_iam_policy.json new file mode 100644 index 00000000..54187607 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_instance_template_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.instanceTemplates.getIamPolicy", + "compute.instanceTemplates.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.instanceTemplates.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_instant_snapshot_iam_binding.json b/src/mapping/google/resource/compute/google_compute_instant_snapshot_iam_binding.json new file mode 100644 index 00000000..54a48d6c --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_instant_snapshot_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.instantSnapshots.getIamPolicy", + "compute.instantSnapshots.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_instant_snapshot_iam_member.json b/src/mapping/google/resource/compute/google_compute_instant_snapshot_iam_member.json new file mode 100644 index 00000000..54a48d6c --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_instant_snapshot_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.instantSnapshots.getIamPolicy", + "compute.instantSnapshots.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_instant_snapshot_iam_policy.json b/src/mapping/google/resource/compute/google_compute_instant_snapshot_iam_policy.json new file mode 100644 index 00000000..055038da --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_instant_snapshot_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.instantSnapshots.getIamPolicy", + "compute.instantSnapshots.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.instantSnapshots.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_machine_image_iam_binding.json b/src/mapping/google/resource/compute/google_compute_machine_image_iam_binding.json new file mode 100644 index 00000000..7f170c84 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_machine_image_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.machineImages.getIamPolicy", + "compute.machineImages.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_machine_image_iam_member.json b/src/mapping/google/resource/compute/google_compute_machine_image_iam_member.json new file mode 100644 index 00000000..7f170c84 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_machine_image_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.machineImages.getIamPolicy", + "compute.machineImages.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_machine_image_iam_policy.json b/src/mapping/google/resource/compute/google_compute_machine_image_iam_policy.json new file mode 100644 index 00000000..4faa0149 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_machine_image_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.machineImages.getIamPolicy", + "compute.machineImages.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.machineImages.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_network.json b/src/mapping/google/resource/compute/google_compute_network.json index 61516d5f..627bb0fa 100644 --- a/src/mapping/google/resource/compute/google_compute_network.json +++ b/src/mapping/google/resource/compute/google_compute_network.json @@ -1,16 +1,18 @@ -[ - { - "apply": [ - "compute.networks.create", - "compute.networks.get" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "compute.networks.delete" - ], - "modify": [], - "plan": [] - } -] +[ + { + "apply": [ + "compute.networks.create", + "compute.networks.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "compute.networks.delete" + ], + "modify": [], + "plan": [ + "compute.networks.get" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_network_attachment.json b/src/mapping/google/resource/compute/google_compute_network_attachment.json new file mode 100644 index 00000000..10dc9ec7 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_network_attachment.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.networkAttachments.create", + "compute.networkAttachments.delete", + "compute.networkAttachments.update", + "compute.networkAttachments.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_network_endpoint_group.json b/src/mapping/google/resource/compute/google_compute_network_endpoint_group.json new file mode 100644 index 00000000..42356cd8 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_network_endpoint_group.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "compute.networkEndpointGroups.create", + "compute.networkEndpointGroups.get", + "compute.networkEndpointGroups.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_backend_service.json b/src/mapping/google/resource/compute/google_compute_region_backend_service.json new file mode 100644 index 00000000..8a41913d --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_backend_service.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "compute.regionBackendServices.create", + "compute.regionBackendServices.get", + "compute.regionBackendServices.update", + "compute.regionBackendServices.delete", + "compute.healthChecks.useReadOnly", + "compute.httpHealthChecks.useReadOnly", + "compute.httpsHealthChecks.useReadOnly", + "compute.regionHealthChecks.useReadOnly" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_backend_service_iam_binding.json b/src/mapping/google/resource/compute/google_compute_region_backend_service_iam_binding.json new file mode 100644 index 00000000..c5f8e63b --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_backend_service_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.regionBackendServices.getIamPolicy", + "compute.regionBackendServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_backend_service_iam_member.json b/src/mapping/google/resource/compute/google_compute_region_backend_service_iam_member.json new file mode 100644 index 00000000..c5f8e63b --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_backend_service_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.regionBackendServices.getIamPolicy", + "compute.regionBackendServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_backend_service_iam_policy.json b/src/mapping/google/resource/compute/google_compute_region_backend_service_iam_policy.json new file mode 100644 index 00000000..9c0e8c4f --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_backend_service_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.regionBackendServices.getIamPolicy", + "compute.regionBackendServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.regionBackendServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_disk_iam_binding.json b/src/mapping/google/resource/compute/google_compute_region_disk_iam_binding.json new file mode 100644 index 00000000..710e90de --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_disk_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.disks.getIamPolicy", + "compute.disks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_disk_iam_member.json b/src/mapping/google/resource/compute/google_compute_region_disk_iam_member.json new file mode 100644 index 00000000..710e90de --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_disk_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.disks.getIamPolicy", + "compute.disks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_disk_iam_policy.json b/src/mapping/google/resource/compute/google_compute_region_disk_iam_policy.json new file mode 100644 index 00000000..c257cb5f --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_disk_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.disks.getIamPolicy", + "compute.disks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.disks.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_health_check.json b/src/mapping/google/resource/compute/google_compute_region_health_check.json new file mode 100644 index 00000000..203d7af2 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_health_check.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.regionHealthChecks.create", + "compute.regionHealthChecks.delete", + "compute.regionHealthChecks.update", + "compute.regionHealthChecks.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_network_endpoint_group.json b/src/mapping/google/resource/compute/google_compute_region_network_endpoint_group.json new file mode 100644 index 00000000..7aaaa748 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_network_endpoint_group.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.regionNetworkEndpointGroups.create", + "compute.regionNetworkEndpointGroups.get", + "compute.regionNetworkEndpointGroups.delete", + "compute.regionOperations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_target_http_proxy.json b/src/mapping/google/resource/compute/google_compute_region_target_http_proxy.json new file mode 100644 index 00000000..4839531e --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_target_http_proxy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.regionTargetHttpProxies.create", + "compute.regionTargetHttpProxies.get", + "compute.regionTargetHttpProxies.update", + "compute.regionTargetHttpProxies.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_target_https_proxy.json b/src/mapping/google/resource/compute/google_compute_region_target_https_proxy.json new file mode 100644 index 00000000..be23d36e --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_target_https_proxy.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "compute.regionTargetHttpsProxies.create", + "compute.regionTargetHttpsProxies.get", + "compute.regionTargetHttpsProxies.update", + "compute.regionTargetHttpsProxies.delete" + ], + "attributes": { + "ssl_certificates": [ + "compute.regionSslCertificates.get", + "compute.regionTargetHttpsProxies.setSslCertificates" + ], + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_target_tcp_proxy.json b/src/mapping/google/resource/compute/google_compute_region_target_tcp_proxy.json new file mode 100644 index 00000000..6257df9c --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_target_tcp_proxy.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "compute.regionTargetTcpProxies.create", + "compute.regionTargetTcpProxies.get", + "compute.regionTargetTcpProxies.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_url_map.json b/src/mapping/google/resource/compute/google_compute_region_url_map.json new file mode 100644 index 00000000..2f8325fc --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_url_map.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "compute.regionBackendServices.use", + "compute.regionUrlMaps.create", + "compute.regionUrlMaps.get", + "compute.regionUrlMaps.update", + "compute.regionUrlMaps.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_snapshot_iam_binding.json b/src/mapping/google/resource/compute/google_compute_snapshot_iam_binding.json new file mode 100644 index 00000000..d98fcab2 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_snapshot_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.snapshots.getIamPolicy", + "compute.snapshots.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_snapshot_iam_member.json b/src/mapping/google/resource/compute/google_compute_snapshot_iam_member.json new file mode 100644 index 00000000..d98fcab2 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_snapshot_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.snapshots.getIamPolicy", + "compute.snapshots.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_snapshot_iam_policy.json b/src/mapping/google/resource/compute/google_compute_snapshot_iam_policy.json new file mode 100644 index 00000000..81f35406 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_snapshot_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.snapshots.getIamPolicy", + "compute.snapshots.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.snapshots.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_storage_pool_iam_binding.json b/src/mapping/google/resource/compute/google_compute_storage_pool_iam_binding.json new file mode 100644 index 00000000..7714b4b3 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_storage_pool_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.storagePools.getIamPolicy", + "compute.storagePools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_storage_pool_iam_member.json b/src/mapping/google/resource/compute/google_compute_storage_pool_iam_member.json new file mode 100644 index 00000000..7714b4b3 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_storage_pool_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.storagePools.getIamPolicy", + "compute.storagePools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_storage_pool_iam_policy.json b/src/mapping/google/resource/compute/google_compute_storage_pool_iam_policy.json new file mode 100644 index 00000000..cb3f877a --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_storage_pool_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.storagePools.getIamPolicy", + "compute.storagePools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.storagePools.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_subnetwork.json b/src/mapping/google/resource/compute/google_compute_subnetwork.json index d2d7e58e..efac1fa8 100644 --- a/src/mapping/google/resource/compute/google_compute_subnetwork.json +++ b/src/mapping/google/resource/compute/google_compute_subnetwork.json @@ -13,6 +13,8 @@ "compute.subnetworks.delete" ], "modify": [], - "plan": [] + "plan": [ + "compute.subnetworks.get" + ] } ] diff --git a/src/mapping/google/resource/compute/google_compute_subnetwork_iam_binding.json b/src/mapping/google/resource/compute/google_compute_subnetwork_iam_binding.json new file mode 100644 index 00000000..18d45216 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_subnetwork_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.subnetworks.getIamPolicy", + "compute.subnetworks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_subnetwork_iam_member.json b/src/mapping/google/resource/compute/google_compute_subnetwork_iam_member.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_subnetwork_iam_member.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_subnetwork_iam_policy.json b/src/mapping/google/resource/compute/google_compute_subnetwork_iam_policy.json new file mode 100644 index 00000000..5575bb10 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_subnetwork_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.subnetworks.getIamPolicy", + "compute.subnetworks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.subnetworks.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_target_http_proxy.json b/src/mapping/google/resource/compute/google_compute_target_http_proxy.json new file mode 100644 index 00000000..889d00d3 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_target_http_proxy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.targetHttpProxies.create", + "compute.targetHttpProxies.delete", + "compute.targetHttpProxies.update", + "compute.targetHttpProxies.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_target_https_proxy.json b/src/mapping/google/resource/compute/google_compute_target_https_proxy.json new file mode 100644 index 00000000..8ec69317 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_target_https_proxy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.targetHttpsProxies.create", + "compute.targetHttpsProxies.delete", + "compute.targetHttpsProxies.update", + "compute.targetHttpsProxies.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_url_map.json b/src/mapping/google/resource/compute/google_compute_url_map.json new file mode 100644 index 00000000..481225c1 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_url_map.json @@ -0,0 +1,18 @@ +[ + { + "apply": [ + "compute.backendBuckets.use", + "compute.backendServices.use", + "compute.urlMaps.create", + "compute.urlMaps.get", + "compute.urlMaps.update", + "compute.urlMaps.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_project_usage_export_bucket.json b/src/mapping/google/resource/compute/google_project_usage_export_bucket.json new file mode 100644 index 00000000..6031d67b --- /dev/null +++ b/src/mapping/google/resource/compute/google_project_usage_export_bucket.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "compute.projects.setUsageExportBucket", + "compute.globalOperations.get", + "compute.projects.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/contactcenterinsights/google_contact_center_insights_analysis_rule.json b/src/mapping/google/resource/contactcenterinsights/google_contact_center_insights_analysis_rule.json new file mode 100644 index 00000000..9ecc7e83 --- /dev/null +++ b/src/mapping/google/resource/contactcenterinsights/google_contact_center_insights_analysis_rule.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "contactcenterinsights.analysisRules.create", + "contactcenterinsights.analysisRules.delete", + "contactcenterinsights.analysisRules.get", + "contactcenterinsights.analysisRules.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/contactcenterinsights/google_contact_center_insights_view.json b/src/mapping/google/resource/contactcenterinsights/google_contact_center_insights_view.json new file mode 100644 index 00000000..9d63fe76 --- /dev/null +++ b/src/mapping/google/resource/contactcenterinsights/google_contact_center_insights_view.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "contactcenterinsights.views.create", + "contactcenterinsights.views.delete", + "contactcenterinsights.views.get", + "contactcenterinsights.views.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/container/google_container_cluster.json b/src/mapping/google/resource/container/google_container_cluster.json index 59446403..5ac2b910 100644 --- a/src/mapping/google/resource/container/google_container_cluster.json +++ b/src/mapping/google/resource/container/google_container_cluster.json @@ -1,22 +1,24 @@ -[ - { - "apply": [ - "container.clusters.create", - "container.operations.get", - "container.clusters.get", - "compute.instanceGroupManagers.get", - "container.clusters.delete", - "container.clusters.update" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "container.clusters.delete" - ], - "modify": [ - "container.clusters.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "container.clusters.create", + "container.operations.get", + "container.clusters.get", + "compute.instanceGroupManagers.get", + "container.clusters.delete", + "container.clusters.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "container.clusters.delete" + ], + "modify": [ + "container.clusters.update" + ], + "plan": [ + "container.clusters.get" + ] + } +] diff --git a/src/mapping/google/resource/containeranalysis/google_container_analysis_note_iam_binding.json b/src/mapping/google/resource/containeranalysis/google_container_analysis_note_iam_binding.json new file mode 100644 index 00000000..6b0f4bc4 --- /dev/null +++ b/src/mapping/google/resource/containeranalysis/google_container_analysis_note_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "containeranalysis.notes.getIamPolicy", + "containeranalysis.notes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/containeranalysis/google_container_analysis_note_iam_member.json b/src/mapping/google/resource/containeranalysis/google_container_analysis_note_iam_member.json new file mode 100644 index 00000000..6b0f4bc4 --- /dev/null +++ b/src/mapping/google/resource/containeranalysis/google_container_analysis_note_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "containeranalysis.notes.getIamPolicy", + "containeranalysis.notes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/containeranalysis/google_container_analysis_note_iam_policy.json b/src/mapping/google/resource/containeranalysis/google_container_analysis_note_iam_policy.json new file mode 100644 index 00000000..cc44d773 --- /dev/null +++ b/src/mapping/google/resource/containeranalysis/google_container_analysis_note_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "containeranalysis.notes.getIamPolicy", + "containeranalysis.notes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "containeranalysis.notes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy.json b/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy.json new file mode 100644 index 00000000..f4482a6f --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.tagTemplates.setIamPolicy", + "datacatalog.tagTemplates.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_binding.json b/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_binding.json new file mode 100644 index 00000000..f4482a6f --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.tagTemplates.setIamPolicy", + "datacatalog.tagTemplates.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_member.json b/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_member.json new file mode 100644 index 00000000..f4482a6f --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.tagTemplates.setIamPolicy", + "datacatalog.tagTemplates.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_policy.json b/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_policy.json new file mode 100644 index 00000000..f4482a6f --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.tagTemplates.setIamPolicy", + "datacatalog.tagTemplates.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_entry.json b/src/mapping/google/resource/datacatalog/google_data_catalog_entry.json new file mode 100644 index 00000000..bfdc63a3 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_entry.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "datacatalog.entries.create", + "datacatalog.entries.get", + "datacatalog.entries.update", + "datacatalog.entries.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "datacatalog.entries.delete" + ], + "modify": [ + "datacatalog.entries.update" + ], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group.json b/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group.json new file mode 100644 index 00000000..05f217a1 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "datacatalog.entryGroups.create", + "datacatalog.entryGroups.get", + "datacatalog.entryGroups.update", + "datacatalog.entryGroups.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "datacatalog.entryGroups.delete" + ], + "modify": [ + "datacatalog.entryGroups.update" + ], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_binding.json b/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_binding.json new file mode 100644 index 00000000..506d3f61 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.entryGroups.setIamPolicy", + "datacatalog.entryGroups.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_member.json b/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_member.json new file mode 100644 index 00000000..506d3f61 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.entryGroups.setIamPolicy", + "datacatalog.entryGroups.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_policy.json b/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_policy.json new file mode 100644 index 00000000..506d3f61 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.entryGroups.setIamPolicy", + "datacatalog.entryGroups.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag.json b/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag_iam_binding.json b/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag_iam_binding.json new file mode 100644 index 00000000..c3c2c148 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.categories.getIamPolicy", + "datacatalog.categories.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag_iam_member.json b/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag_iam_member.json new file mode 100644 index 00000000..ee196a44 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.categories.getIamPolicy", + "datacatalog.categories.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag_iam_policy.json b/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag_iam_policy.json new file mode 100644 index 00000000..c3c2c148 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.categories.getIamPolicy", + "datacatalog.categories.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_tag.json b/src/mapping/google/resource/datacatalog/google_data_catalog_tag.json new file mode 100644 index 00000000..77b6b2d3 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_tag.json @@ -0,0 +1,21 @@ +[ + { + "apply": [ + "datacatalog.tagTemplates.get", + "datacatalog.tagTemplates.getTag", + "datacatalog.tagTemplates.use", + "datacatalog.tagTemplates.delete", + "datacatalog.entries.updateTag" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "datacatalog.tagTemplates.delete" + ], + "modify": [ + "datacatalog.entries.updateTag" + ], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template.json b/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template.json new file mode 100644 index 00000000..ad05a33f --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "datacatalog.tagTemplates.create", + "datacatalog.tagTemplates.getIamPolicy", + "datacatalog.tagTemplates.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_binding.json b/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_binding.json new file mode 100644 index 00000000..f4482a6f --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.tagTemplates.setIamPolicy", + "datacatalog.tagTemplates.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_member.json b/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_member.json new file mode 100644 index 00000000..f4482a6f --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.tagTemplates.setIamPolicy", + "datacatalog.tagTemplates.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_policy.json b/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_policy.json new file mode 100644 index 00000000..f4482a6f --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.tagTemplates.setIamPolicy", + "datacatalog.tagTemplates.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy.json b/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy.json new file mode 100644 index 00000000..9ad67899 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "datacatalog.taxonomies.create", + "datacatalog.taxonomies.get", + "datacatalog.taxonomies.update", + "datacatalog.taxonomies.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "datacatalog.taxonomies.delete" + ], + "modify": [ + "datacatalog.taxonomies.update" + ], + "plan": [ + "datacatalog.taxonomies.get" + ] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_binding.json b/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_binding.json new file mode 100644 index 00000000..cfab57bb --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.taxonomies.setIamPolicy", + "datacatalog.taxonomies.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_member.json b/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_member.json new file mode 100644 index 00000000..cfab57bb --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.taxonomies.setIamPolicy", + "datacatalog.taxonomies.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_policy.json b/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_policy.json new file mode 100644 index 00000000..c257ce68 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "datacatalog.taxonomies.setIamPolicy", + "datacatalog.taxonomies.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "datacatalog.taxonomies.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataflow/google_dataflow_job.json b/src/mapping/google/resource/dataflow/google_dataflow_job.json new file mode 100644 index 00000000..4562a75f --- /dev/null +++ b/src/mapping/google/resource/dataflow/google_dataflow_job.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "resourcemanager.projects.get", + "dataflow.jobs.create", + "dataflow.jobs.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataform/google_dataform_repository.json b/src/mapping/google/resource/dataform/google_dataform_repository.json new file mode 100644 index 00000000..da37c3fb --- /dev/null +++ b/src/mapping/google/resource/dataform/google_dataform_repository.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "dataform.repositories.create", + "dataform.repositories.get", + "dataform.repositories.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataform/google_dataform_repository_iam_binding.json b/src/mapping/google/resource/dataform/google_dataform_repository_iam_binding.json new file mode 100644 index 00000000..945538b1 --- /dev/null +++ b/src/mapping/google/resource/dataform/google_dataform_repository_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataform.repositories.getIamPolicy", + "dataform.repositories.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataform/google_dataform_repository_iam_member.json b/src/mapping/google/resource/dataform/google_dataform_repository_iam_member.json new file mode 100644 index 00000000..945538b1 --- /dev/null +++ b/src/mapping/google/resource/dataform/google_dataform_repository_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataform.repositories.getIamPolicy", + "dataform.repositories.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataform/google_dataform_repository_iam_policy.json b/src/mapping/google/resource/dataform/google_dataform_repository_iam_policy.json new file mode 100644 index 00000000..f84ffe5e --- /dev/null +++ b/src/mapping/google/resource/dataform/google_dataform_repository_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataform.repositories.getIamPolicy", + "dataform.repositories.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataform.repositories.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataform/google_dataform_repository_release_config.json b/src/mapping/google/resource/dataform/google_dataform_repository_release_config.json new file mode 100644 index 00000000..038bee36 --- /dev/null +++ b/src/mapping/google/resource/dataform/google_dataform_repository_release_config.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataform.releaseConfigs.create", + "dataform.releaseConfigs.get", + "dataform.releaseConfigs.update", + "dataform.releaseConfigs.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataform/google_dataform_repository_workflow_config.json b/src/mapping/google/resource/dataform/google_dataform_repository_workflow_config.json new file mode 100644 index 00000000..1bb346ec --- /dev/null +++ b/src/mapping/google/resource/dataform/google_dataform_repository_workflow_config.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataform.workflowConfigs.create", + "dataform.workflowConfigs.get", + "dataform.workflowConfigs.update", + "dataform.workflowConfigs.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datafusion/google_data_fusion_instance_iam_binding.json b/src/mapping/google/resource/datafusion/google_data_fusion_instance_iam_binding.json new file mode 100644 index 00000000..a70aae7c --- /dev/null +++ b/src/mapping/google/resource/datafusion/google_data_fusion_instance_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datafusion.instances.getIamPolicy", + "datafusion.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datafusion/google_data_fusion_instance_iam_member.json b/src/mapping/google/resource/datafusion/google_data_fusion_instance_iam_member.json new file mode 100644 index 00000000..a70aae7c --- /dev/null +++ b/src/mapping/google/resource/datafusion/google_data_fusion_instance_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datafusion.instances.getIamPolicy", + "datafusion.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datafusion/google_data_fusion_instance_iam_policy.json b/src/mapping/google/resource/datafusion/google_data_fusion_instance_iam_policy.json new file mode 100644 index 00000000..b89ee453 --- /dev/null +++ b/src/mapping/google/resource/datafusion/google_data_fusion_instance_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "datafusion.instances.getIamPolicy", + "datafusion.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "datafusion.instances.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_aspect_type.json b/src/mapping/google/resource/dataplex/google_dataplex_aspect_type.json new file mode 100644 index 00000000..c37476af --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_aspect_type.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.aspectTypes.create", + "dataplex.aspectTypes.delete", + "dataplex.aspectTypes.get", + "dataplex.aspectTypes.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_binding.json b/src/mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_binding.json new file mode 100644 index 00000000..05fc6b20 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.aspectTypes.getIamPolicy", + "dataplex.aspectTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_member.json b/src/mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_member.json new file mode 100644 index 00000000..05fc6b20 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.aspectTypes.getIamPolicy", + "dataplex.aspectTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_policy.json b/src/mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_policy.json new file mode 100644 index 00000000..7c76e4b5 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.aspectTypes.getIamPolicy", + "dataplex.aspectTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.aspectTypes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_asset.json b/src/mapping/google/resource/dataplex/google_dataplex_asset.json new file mode 100644 index 00000000..fd5bce16 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_asset.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.assets.create", + "dataplex.assets.delete", + "dataplex.assets.get", + "dataplex.assets.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_asset_iam_binding.json b/src/mapping/google/resource/dataplex/google_dataplex_asset_iam_binding.json new file mode 100644 index 00000000..373e1c4b --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_asset_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.assets.getIamPolicy", + "dataplex.assets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_asset_iam_member.json b/src/mapping/google/resource/dataplex/google_dataplex_asset_iam_member.json new file mode 100644 index 00000000..373e1c4b --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_asset_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.assets.getIamPolicy", + "dataplex.assets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_asset_iam_policy.json b/src/mapping/google/resource/dataplex/google_dataplex_asset_iam_policy.json new file mode 100644 index 00000000..d80ff76c --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_asset_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.assets.getIamPolicy", + "dataplex.assets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.assets.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_datascan.json b/src/mapping/google/resource/dataplex/google_dataplex_datascan.json new file mode 100644 index 00000000..18e60a74 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_datascan.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.datascans.create", + "dataplex.datascans.delete", + "dataplex.datascans.get", + "dataplex.datascans.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_datascan_iam_binding.json b/src/mapping/google/resource/dataplex/google_dataplex_datascan_iam_binding.json new file mode 100644 index 00000000..54172815 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_datascan_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.datascans.getIamPolicy", + "dataplex.datascans.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_datascan_iam_member.json b/src/mapping/google/resource/dataplex/google_dataplex_datascan_iam_member.json new file mode 100644 index 00000000..54172815 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_datascan_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.datascans.getIamPolicy", + "dataplex.datascans.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_datascan_iam_policy.json b/src/mapping/google/resource/dataplex/google_dataplex_datascan_iam_policy.json new file mode 100644 index 00000000..b2e1eef7 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_datascan_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.datascans.getIamPolicy", + "dataplex.datascans.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.datascans.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_entry.json b/src/mapping/google/resource/dataplex/google_dataplex_entry.json new file mode 100644 index 00000000..cf24b229 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_entry.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.entries.create", + "dataplex.entries.delete", + "dataplex.entries.get", + "dataplex.entries.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_entry_group.json b/src/mapping/google/resource/dataplex/google_dataplex_entry_group.json new file mode 100644 index 00000000..a4b1b19c --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_entry_group.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.entryGroups.create", + "dataplex.entryGroups.delete", + "dataplex.entryGroups.get", + "dataplex.entryGroups.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_entry_group_iam_binding.json b/src/mapping/google/resource/dataplex/google_dataplex_entry_group_iam_binding.json new file mode 100644 index 00000000..71fca963 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_entry_group_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.entryGroups.getIamPolicy", + "dataplex.entryGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_entry_group_iam_member.json b/src/mapping/google/resource/dataplex/google_dataplex_entry_group_iam_member.json new file mode 100644 index 00000000..71fca963 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_entry_group_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.entryGroups.getIamPolicy", + "dataplex.entryGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_entry_group_iam_policy.json b/src/mapping/google/resource/dataplex/google_dataplex_entry_group_iam_policy.json new file mode 100644 index 00000000..22829f17 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_entry_group_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.entryGroups.getIamPolicy", + "dataplex.entryGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.entryGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_entry_type.json b/src/mapping/google/resource/dataplex/google_dataplex_entry_type.json new file mode 100644 index 00000000..b7c13bb1 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_entry_type.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.entryTypes.create", + "dataplex.entryTypes.delete", + "dataplex.entryTypes.get", + "dataplex.entryTypes.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_entry_type_iam_binding.json b/src/mapping/google/resource/dataplex/google_dataplex_entry_type_iam_binding.json new file mode 100644 index 00000000..025abc2c --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_entry_type_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.entryTypes.getIamPolicy", + "dataplex.entryTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_entry_type_iam_member.json b/src/mapping/google/resource/dataplex/google_dataplex_entry_type_iam_member.json new file mode 100644 index 00000000..025abc2c --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_entry_type_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.entryTypes.getIamPolicy", + "dataplex.entryTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_entry_type_iam_policy.json b/src/mapping/google/resource/dataplex/google_dataplex_entry_type_iam_policy.json new file mode 100644 index 00000000..c08904bf --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_entry_type_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.entryTypes.getIamPolicy", + "dataplex.entryTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.entryTypes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_glossary.json b/src/mapping/google/resource/dataplex/google_dataplex_glossary.json new file mode 100644 index 00000000..d7452cbb --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_glossary.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "dataplex.glossaries.create", + "dataplex.glossaries.get", + "dataplex.glossaries.update", + "dataplex.operations.get", + "dataplex.glossaries.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_glossary_category.json b/src/mapping/google/resource/dataplex/google_dataplex_glossary_category.json new file mode 100644 index 00000000..bbbc5abd --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_glossary_category.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.glossaryCategories.create", + "dataplex.glossaryCategories.get", + "dataplex.glossaryCategories.update", + "dataplex.glossaryCategories.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_glossary_iam_binding.json b/src/mapping/google/resource/dataplex/google_dataplex_glossary_iam_binding.json new file mode 100644 index 00000000..a80e4286 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_glossary_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.glossaries.getIamPolicy", + "dataplex.glossaries.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_glossary_iam_member.json b/src/mapping/google/resource/dataplex/google_dataplex_glossary_iam_member.json new file mode 100644 index 00000000..a80e4286 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_glossary_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.glossaries.getIamPolicy", + "dataplex.glossaries.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_glossary_iam_policy.json b/src/mapping/google/resource/dataplex/google_dataplex_glossary_iam_policy.json new file mode 100644 index 00000000..d44a08bf --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_glossary_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.glossaries.getIamPolicy", + "dataplex.glossaries.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.glossaries.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_glossary_term.json b/src/mapping/google/resource/dataplex/google_dataplex_glossary_term.json new file mode 100644 index 00000000..5865073a --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_glossary_term.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.glossaryTerms.create", + "dataplex.glossaryTerms.get", + "dataplex.glossaryTerms.update", + "dataplex.glossaryTerms.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_lake.json b/src/mapping/google/resource/dataplex/google_dataplex_lake.json new file mode 100644 index 00000000..278ae353 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_lake.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.lakes.create", + "dataplex.lakes.delete", + "dataplex.lakes.get", + "dataplex.lakes.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_lake_iam_binding.json b/src/mapping/google/resource/dataplex/google_dataplex_lake_iam_binding.json new file mode 100644 index 00000000..d2e1276d --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_lake_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.lakes.setIamPolicy", + "dataplex.lakes.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_lake_iam_member.json b/src/mapping/google/resource/dataplex/google_dataplex_lake_iam_member.json new file mode 100644 index 00000000..d2e1276d --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_lake_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.lakes.setIamPolicy", + "dataplex.lakes.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_lake_iam_policy.json b/src/mapping/google/resource/dataplex/google_dataplex_lake_iam_policy.json new file mode 100644 index 00000000..4800f72e --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_lake_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.lakes.setIamPolicy", + "dataplex.lakes.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.lakes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_task.json b/src/mapping/google/resource/dataplex/google_dataplex_task.json new file mode 100644 index 00000000..d0a43fa1 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_task.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.tasks.create", + "dataplex.tasks.delete", + "dataplex.tasks.get", + "dataplex.tasks.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_task_iam_binding.json b/src/mapping/google/resource/dataplex/google_dataplex_task_iam_binding.json new file mode 100644 index 00000000..a0487f9a --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_task_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.tasks.getIamPolicy", + "dataplex.tasks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_task_iam_member.json b/src/mapping/google/resource/dataplex/google_dataplex_task_iam_member.json new file mode 100644 index 00000000..a0487f9a --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_task_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.tasks.getIamPolicy", + "dataplex.tasks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_task_iam_policy.json b/src/mapping/google/resource/dataplex/google_dataplex_task_iam_policy.json new file mode 100644 index 00000000..89c0645e --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_task_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.tasks.getIamPolicy", + "dataplex.tasks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.tasks.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_zone.json b/src/mapping/google/resource/dataplex/google_dataplex_zone.json new file mode 100644 index 00000000..eb4b730c --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_zone.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.zones.create", + "dataplex.zones.delete", + "dataplex.zones.get", + "dataplex.zones.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_zone_iam_binding.json b/src/mapping/google/resource/dataplex/google_dataplex_zone_iam_binding.json new file mode 100644 index 00000000..27938fa5 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_zone_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.zones.getIamPolicy", + "dataplex.zones.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_zone_iam_member.json b/src/mapping/google/resource/dataplex/google_dataplex_zone_iam_member.json new file mode 100644 index 00000000..27938fa5 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_zone_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.zones.getIamPolicy", + "dataplex.zones.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_zone_iam_policy.json b/src/mapping/google/resource/dataplex/google_dataplex_zone_iam_policy.json new file mode 100644 index 00000000..54a95c83 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_zone_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.zones.getIamPolicy", + "dataplex.zones.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.zones.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy.json b/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy.json new file mode 100644 index 00000000..e09fa3f6 --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataproc.autoscalingPolicies.update", + "dataproc.autoscalingPolicies.get", + "dataproc.autoscalingPolicies.delete", + "dataproc.autoscalingPolicies.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_binding.json b/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_binding.json new file mode 100644 index 00000000..5254b2d9 --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataproc.autoscalingPolicies.getIamPolicy", + "dataproc.autoscalingPolicies.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_member.json b/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_member.json new file mode 100644 index 00000000..5254b2d9 --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataproc.autoscalingPolicies.getIamPolicy", + "dataproc.autoscalingPolicies.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_policy.json b/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_policy.json new file mode 100644 index 00000000..5254b2d9 --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataproc.autoscalingPolicies.getIamPolicy", + "dataproc.autoscalingPolicies.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_batch.json b/src/mapping/google/resource/dataproc/google_dataproc_batch.json new file mode 100644 index 00000000..5b72d8f0 --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_batch.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "dataproc.batches.get", + "dataproc.batches.delete", + "dataproc.batches.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_cluster.json b/src/mapping/google/resource/dataproc/google_dataproc_cluster.json new file mode 100644 index 00000000..30e38690 --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_cluster.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataproc.clusters.update", + "dataproc.clusters.get", + "dataproc.clusters.delete", + "dataproc.clusters.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_cluster_iam_binding.json b/src/mapping/google/resource/dataproc/google_dataproc_cluster_iam_binding.json new file mode 100644 index 00000000..30eeb478 --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_cluster_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataproc.clusters.getIamPolicy", + "dataproc.clusters.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_cluster_iam_member.json b/src/mapping/google/resource/dataproc/google_dataproc_cluster_iam_member.json new file mode 100644 index 00000000..30eeb478 --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_cluster_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataproc.clusters.getIamPolicy", + "dataproc.clusters.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_cluster_iam_policy.json b/src/mapping/google/resource/dataproc/google_dataproc_cluster_iam_policy.json new file mode 100644 index 00000000..30eeb478 --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_cluster_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataproc.clusters.getIamPolicy", + "dataproc.clusters.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_job.json b/src/mapping/google/resource/dataproc/google_dataproc_job.json new file mode 100644 index 00000000..153afa8d --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_job.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataproc.jobs.update", + "dataproc.jobs.get", + "dataproc.jobs.delete", + "dataproc.jobs.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_job_iam_binding.json b/src/mapping/google/resource/dataproc/google_dataproc_job_iam_binding.json new file mode 100644 index 00000000..382d37ce --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_job_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataproc.jobs.getIamPolicy", + "dataproc.jobs.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_job_iam_member.json b/src/mapping/google/resource/dataproc/google_dataproc_job_iam_member.json new file mode 100644 index 00000000..382d37ce --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_job_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataproc.jobs.getIamPolicy", + "dataproc.jobs.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_job_iam_policy.json b/src/mapping/google/resource/dataproc/google_dataproc_job_iam_policy.json new file mode 100644 index 00000000..382d37ce --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_job_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataproc.jobs.getIamPolicy", + "dataproc.jobs.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_session_template.json b/src/mapping/google/resource/dataproc/google_dataproc_session_template.json new file mode 100644 index 00000000..ea0a508b --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_session_template.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataproc.sessionTemplates.update", + "dataproc.sessionTemplates.get", + "dataproc.sessionTemplates.delete", + "dataproc.sessionTemplates.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_workflow_template.json b/src/mapping/google/resource/dataproc/google_dataproc_workflow_template.json new file mode 100644 index 00000000..dac21daa --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_workflow_template.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataproc.workflowTemplates.update", + "dataproc.workflowTemplates.get", + "dataproc.workflowTemplates.delete", + "dataproc.workflowTemplates.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/deploymentmanager/google_deployment_manager_deployment.json b/src/mapping/google/resource/deploymentmanager/google_deployment_manager_deployment.json new file mode 100644 index 00000000..e091a4a0 --- /dev/null +++ b/src/mapping/google/resource/deploymentmanager/google_deployment_manager_deployment.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "deploymentmanager.deployments.create", + "deploymentmanager.deployments.delete", + "deploymentmanager.deployments.get", + "deploymentmanager.deployments.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/developerconnect/google_developer_connect_account_connector.json b/src/mapping/google/resource/developerconnect/google_developer_connect_account_connector.json new file mode 100644 index 00000000..f6eaca18 --- /dev/null +++ b/src/mapping/google/resource/developerconnect/google_developer_connect_account_connector.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "developerconnect.accountConnectors.create", + "developerconnect.accountConnectors.delete", + "developerconnect.accountConnectors.get", + "developerconnect.accountConnectors.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/developerconnect/google_developer_connect_connection.json b/src/mapping/google/resource/developerconnect/google_developer_connect_connection.json new file mode 100644 index 00000000..c2f369cc --- /dev/null +++ b/src/mapping/google/resource/developerconnect/google_developer_connect_connection.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "developerconnect.connections.create", + "developerconnect.connections.delete", + "developerconnect.connections.update", + "developerconnect.connections.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/developerconnect/google_developer_connect_git_repository_link.json b/src/mapping/google/resource/developerconnect/google_developer_connect_git_repository_link.json new file mode 100644 index 00000000..48125aeb --- /dev/null +++ b/src/mapping/google/resource/developerconnect/google_developer_connect_git_repository_link.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "developerconnect.gitRepositoryLinks.create", + "developerconnect.gitRepositoryLinks.delete", + "developerconnect.gitRepositoryLinks.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_agent.json b/src/mapping/google/resource/dialogflow/google_dialogflow_agent.json new file mode 100644 index 00000000..3071aad8 --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_agent.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.agents.get", + "dialogflow.agents.create", + "dialogflow.agents.update", + "dialogflow.agents.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_conversation_profile.json b/src/mapping/google/resource/dialogflow/google_dialogflow_conversation_profile.json new file mode 100644 index 00000000..4f8ea4b4 --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_conversation_profile.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.conversationProfiles.update", + "dialogflow.conversationProfiles.get", + "dialogflow.conversationProfiles.delete", + "dialogflow.conversationProfiles.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_agent.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_agent.json new file mode 100644 index 00000000..3071aad8 --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_agent.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.agents.get", + "dialogflow.agents.create", + "dialogflow.agents.update", + "dialogflow.agents.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_entity_type.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_entity_type.json new file mode 100644 index 00000000..dfa858e8 --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_entity_type.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.entityTypes.update", + "dialogflow.entityTypes.get", + "dialogflow.entityTypes.delete", + "dialogflow.entityTypes.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_environment.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_environment.json new file mode 100644 index 00000000..4db2c7b5 --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_environment.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.environments.create", + "dialogflow.environments.get", + "dialogflow.environments.update", + "dialogflow.environments.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_flow.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_flow.json new file mode 100644 index 00000000..89d3febf --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_flow.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.flows.create", + "dialogflow.flows.get", + "dialogflow.flows.update", + "dialogflow.flows.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_generative_settings.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_generative_settings.json new file mode 100644 index 00000000..c3c0dcdb --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_generative_settings.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.securitySettings.create", + "dialogflow.securitySettings.get", + "dialogflow.securitySettings.update", + "dialogflow.securitySettings.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_generator.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_generator.json new file mode 100644 index 00000000..bedd2afe --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_generator.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.generators.create", + "dialogflow.generators.get", + "dialogflow.generators.update", + "dialogflow.generators.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_intent.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_intent.json new file mode 100644 index 00000000..eadc2c22 --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_intent.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.intents.create", + "dialogflow.intents.get", + "dialogflow.intents.update", + "dialogflow.intents.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_page.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_page.json new file mode 100644 index 00000000..78836a3b --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_page.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.pages.create", + "dialogflow.pages.get", + "dialogflow.pages.delete", + "dialogflow.pages.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_playbook.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_playbook.json new file mode 100644 index 00000000..3630f068 --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_playbook.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.playbooks.create", + "dialogflow.playbooks.get", + "dialogflow.playbooks.update", + "dialogflow.playbooks.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_security_settings.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_security_settings.json new file mode 100644 index 00000000..c3c0dcdb --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_security_settings.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.securitySettings.create", + "dialogflow.securitySettings.get", + "dialogflow.securitySettings.update", + "dialogflow.securitySettings.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_tool.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_tool.json new file mode 100644 index 00000000..7715a638 --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_tool.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.tools.create", + "dialogflow.tools.get", + "dialogflow.tools.update", + "dialogflow.tools.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_version.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_version.json new file mode 100644 index 00000000..c9e9d35b --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_version.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "dialogflow.versions.create", + "dialogflow.versions.get", + "dialogflow.versions.update", + "dialogflow.versions.delete", + "dialogflow.operations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_webhook.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_webhook.json new file mode 100644 index 00000000..623db5bb --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_webhook.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.webhooks.create", + "dialogflow.webhooks.delete", + "dialogflow.webhooks.get", + "dialogflow.webhooks.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_encryption_spec.json b/src/mapping/google/resource/dialogflow/google_dialogflow_encryption_spec.json new file mode 100644 index 00000000..4bf8dcfc --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_encryption_spec.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dialogflow.encryptionspec.update", + "dialogflow.encryptionspec.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_entity_type.json b/src/mapping/google/resource/dialogflow/google_dialogflow_entity_type.json new file mode 100644 index 00000000..dfa858e8 --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_entity_type.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.entityTypes.update", + "dialogflow.entityTypes.get", + "dialogflow.entityTypes.delete", + "dialogflow.entityTypes.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_fulfillment.json b/src/mapping/google/resource/dialogflow/google_dialogflow_fulfillment.json new file mode 100644 index 00000000..8a802c3d --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_fulfillment.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dialogflow.fulfillments.update", + "dialogflow.fulfillments.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_intent.json b/src/mapping/google/resource/dialogflow/google_dialogflow_intent.json new file mode 100644 index 00000000..9cbde953 --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_intent.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.intents.update", + "dialogflow.intents.get", + "dialogflow.intents.delete", + "dialogflow.intents.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dns/google_dns_managed_zone.json b/src/mapping/google/resource/dns/google_dns_managed_zone.json index b4dfe956..bf5b674d 100644 --- a/src/mapping/google/resource/dns/google_dns_managed_zone.json +++ b/src/mapping/google/resource/dns/google_dns_managed_zone.json @@ -1,27 +1,29 @@ -[ - { - "apply": [ - "dns.managedZones.get", - "dns.managedZones.create", - "dns.managedZones.delete", - "dns.managedZones.update" - ], - "attributes": { - "gke_clusters": [ - "dns.gkeClusters.bindPrivateDNSZone" - ], - "private_visibility_config": [ - "dns.networks.bindPrivateDNSZone", - "dns.networks.targetWithPeeringZone" - ], - "tags": [] - }, - "destroy": [ - "dns.managedZones.delete" - ], - "modify": [], - "plan": [ - "dns.managedZones.update" - ] - } -] +[ + { + "apply": [ + "dns.managedZones.get", + "dns.managedZones.create", + "dns.managedZones.delete", + "dns.managedZones.update" + ], + "attributes": { + "gke_clusters": [ + "dns.gkeClusters.bindPrivateDNSZone" + ], + "private_visibility_config": [ + "dns.networks.bindPrivateDNSZone", + "dns.networks.targetWithPeeringZone" + ], + "tags": [] + }, + "destroy": [ + "dns.managedZones.delete" + ], + "modify": [ + "dns.managedZones.update" + ], + "plan": [ + "dns.managedZones.get" + ] + } +] diff --git a/src/mapping/google/resource/dns/google_dns_managed_zone_iam_binding.json b/src/mapping/google/resource/dns/google_dns_managed_zone_iam_binding.json new file mode 100644 index 00000000..a7122ffc --- /dev/null +++ b/src/mapping/google/resource/dns/google_dns_managed_zone_iam_binding.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "dns.managedZones.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dns/google_dns_managed_zone_iam_member.json b/src/mapping/google/resource/dns/google_dns_managed_zone_iam_member.json new file mode 100644 index 00000000..a7122ffc --- /dev/null +++ b/src/mapping/google/resource/dns/google_dns_managed_zone_iam_member.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "dns.managedZones.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dns/google_dns_managed_zone_iam_policy.json b/src/mapping/google/resource/dns/google_dns_managed_zone_iam_policy.json new file mode 100644 index 00000000..089e1bb6 --- /dev/null +++ b/src/mapping/google/resource/dns/google_dns_managed_zone_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dns.managedZones.getIamPolicy", + "dns.managedZones.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dns.managedZones.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/edgecontainer/google_edgecontainer_cluster.json b/src/mapping/google/resource/edgecontainer/google_edgecontainer_cluster.json new file mode 100644 index 00000000..496d10b4 --- /dev/null +++ b/src/mapping/google/resource/edgecontainer/google_edgecontainer_cluster.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "edgecontainer.clusters.create", + "edgecontainer.clusters.delete", + "edgecontainer.clusters.get", + "edgecontainer.clusters.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/edgecontainer/google_edgecontainer_node_pool.json b/src/mapping/google/resource/edgecontainer/google_edgecontainer_node_pool.json new file mode 100644 index 00000000..2fc0156c --- /dev/null +++ b/src/mapping/google/resource/edgecontainer/google_edgecontainer_node_pool.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "edgecontainer.nodePools.create", + "edgecontainer.nodePools.delete", + "edgecontainer.nodePools.get", + "edgecontainer.nodePools.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/edgecontainer/google_edgecontainer_vpn_connection.json b/src/mapping/google/resource/edgecontainer/google_edgecontainer_vpn_connection.json new file mode 100644 index 00000000..0c74247b --- /dev/null +++ b/src/mapping/google/resource/edgecontainer/google_edgecontainer_vpn_connection.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "edgecontainer.vpnConnections.create", + "edgecontainer.vpnConnections.delete", + "edgecontainer.vpnConnections.get", + "edgecontainer.vpnConnections.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/edgenetwork/google_edgenetwork_interconnect_attachment.json b/src/mapping/google/resource/edgenetwork/google_edgenetwork_interconnect_attachment.json new file mode 100644 index 00000000..a75f395d --- /dev/null +++ b/src/mapping/google/resource/edgenetwork/google_edgenetwork_interconnect_attachment.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "edgenetwork.interconnectAttachments.create", + "edgenetwork.interconnectAttachments.delete", + "edgenetwork.interconnectAttachments.get", + "edgenetwork.interconnectAttachments.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/edgenetwork/google_edgenetwork_network.json b/src/mapping/google/resource/edgenetwork/google_edgenetwork_network.json new file mode 100644 index 00000000..b3cf845d --- /dev/null +++ b/src/mapping/google/resource/edgenetwork/google_edgenetwork_network.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "edgenetwork.networks.create", + "edgenetwork.networks.delete", + "edgenetwork.networks.get", + "edgenetwork.networks.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/edgenetwork/google_edgenetwork_subnet.json b/src/mapping/google/resource/edgenetwork/google_edgenetwork_subnet.json new file mode 100644 index 00000000..82fd35d2 --- /dev/null +++ b/src/mapping/google/resource/edgenetwork/google_edgenetwork_subnet.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "edgenetwork.subnetworks.create", + "edgenetwork.subnetworks.delete", + "edgenetwork.subnetworks.get", + "edgenetwork.subnetworks.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/eventarc/google_eventarc_channel.json b/src/mapping/google/resource/eventarc/google_eventarc_channel.json new file mode 100644 index 00000000..0f3cb13a --- /dev/null +++ b/src/mapping/google/resource/eventarc/google_eventarc_channel.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "eventarc.channels.create", + "eventarc.channels.delete", + "eventarc.channels.get", + "eventarc.channels.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/eventarc/google_eventarc_enrollment.json b/src/mapping/google/resource/eventarc/google_eventarc_enrollment.json new file mode 100644 index 00000000..046eae72 --- /dev/null +++ b/src/mapping/google/resource/eventarc/google_eventarc_enrollment.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "eventarc.enrollments.create", + "eventarc.enrollments.delete", + "eventarc.enrollments.get", + "eventarc.enrollments.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/eventarc/google_eventarc_google_api_source.json b/src/mapping/google/resource/eventarc/google_eventarc_google_api_source.json new file mode 100644 index 00000000..c2d6763a --- /dev/null +++ b/src/mapping/google/resource/eventarc/google_eventarc_google_api_source.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "eventarc.googleApiSources.create", + "eventarc.googleApiSources.delete", + "eventarc.googleApiSources.get", + "eventarc.googleApiSources.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/eventarc/google_eventarc_google_channel_config.json b/src/mapping/google/resource/eventarc/google_eventarc_google_channel_config.json new file mode 100644 index 00000000..0ed64a36 --- /dev/null +++ b/src/mapping/google/resource/eventarc/google_eventarc_google_channel_config.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "eventarc.googleChannelConfigs.get", + "eventarc.googleChannelConfigs.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/eventarc/google_eventarc_message_bus.json b/src/mapping/google/resource/eventarc/google_eventarc_message_bus.json new file mode 100644 index 00000000..818325e9 --- /dev/null +++ b/src/mapping/google/resource/eventarc/google_eventarc_message_bus.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "eventarc.messageBuses.create", + "eventarc.messageBuses.delete", + "eventarc.messageBuses.get", + "eventarc.messageBuses.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/eventarc/google_eventarc_pipeline.json b/src/mapping/google/resource/eventarc/google_eventarc_pipeline.json new file mode 100644 index 00000000..f2c85918 --- /dev/null +++ b/src/mapping/google/resource/eventarc/google_eventarc_pipeline.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "eventarc.pipelines.create", + "eventarc.pipelines.delete", + "eventarc.pipelines.get", + "eventarc.pipelines.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/eventarc/google_eventarc_trigger.json b/src/mapping/google/resource/eventarc/google_eventarc_trigger.json new file mode 100644 index 00000000..b0d0ffdc --- /dev/null +++ b/src/mapping/google/resource/eventarc/google_eventarc_trigger.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "eventarc.triggers.update", + "eventarc.triggers.get", + "eventarc.triggers.delete", + "eventarc.triggers.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/firebase/google_firebase_web_app.json b/src/mapping/google/resource/firebase/google_firebase_web_app.json new file mode 100644 index 00000000..47a73452 --- /dev/null +++ b/src/mapping/google/resource/firebase/google_firebase_web_app.json @@ -0,0 +1,24 @@ +[ + { + "apply": [ + "resourcemanager.projects.get", + "serviceusage.services.enable", + "serviceusage.services.get", + "firebase.clients.create", + "firebase.clients.delete", + "firebase.clients.update", + "firebase.clients.get", + "clientauthconfig.clients.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "firebase.clients.delete" + ], + "modify": [ + "firebase.clients.update" + ], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_binding.json b/src/mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_binding.json new file mode 100644 index 00000000..15ec09a7 --- /dev/null +++ b/src/mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "gkebackup.backupPlans.getIamPolicy", + "gkebackup.backupPlans.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_member.json b/src/mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_member.json new file mode 100644 index 00000000..15ec09a7 --- /dev/null +++ b/src/mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "gkebackup.backupPlans.getIamPolicy", + "gkebackup.backupPlans.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_policy.json b/src/mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_policy.json new file mode 100644 index 00000000..01cf86c3 --- /dev/null +++ b/src/mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "gkebackup.backupPlans.getIamPolicy", + "gkebackup.backupPlans.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "gkebackup.backupPlans.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_binding.json b/src/mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_binding.json new file mode 100644 index 00000000..3c4be9c1 --- /dev/null +++ b/src/mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "gkebackup.restorePlans.getIamPolicy", + "gkebackup.restorePlans.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_member.json b/src/mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_member.json new file mode 100644 index 00000000..3c4be9c1 --- /dev/null +++ b/src/mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "gkebackup.restorePlans.getIamPolicy", + "gkebackup.restorePlans.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_policy.json b/src/mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_policy.json new file mode 100644 index 00000000..bcf9e5d8 --- /dev/null +++ b/src/mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "gkebackup.restorePlans.getIamPolicy", + "gkebackup.restorePlans.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "gkebackup.restorePlans.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/gkehub/google_gke_hub_feature_iam_binding.json b/src/mapping/google/resource/gkehub/google_gke_hub_feature_iam_binding.json new file mode 100644 index 00000000..a628e4aa --- /dev/null +++ b/src/mapping/google/resource/gkehub/google_gke_hub_feature_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "gkehub.features.getIamPolicy", + "gkehub.features.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkehub/google_gke_hub_feature_iam_member.json b/src/mapping/google/resource/gkehub/google_gke_hub_feature_iam_member.json new file mode 100644 index 00000000..a628e4aa --- /dev/null +++ b/src/mapping/google/resource/gkehub/google_gke_hub_feature_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "gkehub.features.getIamPolicy", + "gkehub.features.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkehub/google_gke_hub_feature_iam_policy.json b/src/mapping/google/resource/gkehub/google_gke_hub_feature_iam_policy.json new file mode 100644 index 00000000..a8ca6a93 --- /dev/null +++ b/src/mapping/google/resource/gkehub/google_gke_hub_feature_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "gkehub.features.getIamPolicy", + "gkehub.features.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "gkehub.features.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/gkehub/google_gke_hub_membership_iam_binding.json b/src/mapping/google/resource/gkehub/google_gke_hub_membership_iam_binding.json new file mode 100644 index 00000000..76b22174 --- /dev/null +++ b/src/mapping/google/resource/gkehub/google_gke_hub_membership_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "gkehub.memberships.getIamPolicy", + "gkehub.memberships.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkehub/google_gke_hub_membership_iam_member.json b/src/mapping/google/resource/gkehub/google_gke_hub_membership_iam_member.json new file mode 100644 index 00000000..76b22174 --- /dev/null +++ b/src/mapping/google/resource/gkehub/google_gke_hub_membership_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "gkehub.memberships.getIamPolicy", + "gkehub.memberships.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkehub/google_gke_hub_membership_iam_policy.json b/src/mapping/google/resource/gkehub/google_gke_hub_membership_iam_policy.json new file mode 100644 index 00000000..cd6cd3f7 --- /dev/null +++ b/src/mapping/google/resource/gkehub/google_gke_hub_membership_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "gkehub.memberships.getIamPolicy", + "gkehub.memberships.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "gkehub.memberships.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/gkehub/google_gke_hub_scope_iam_binding.json b/src/mapping/google/resource/gkehub/google_gke_hub_scope_iam_binding.json new file mode 100644 index 00000000..ac65a607 --- /dev/null +++ b/src/mapping/google/resource/gkehub/google_gke_hub_scope_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "gkehub.scopes.getIamPolicy", + "gkehub.scopes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkehub/google_gke_hub_scope_iam_member.json b/src/mapping/google/resource/gkehub/google_gke_hub_scope_iam_member.json new file mode 100644 index 00000000..ac65a607 --- /dev/null +++ b/src/mapping/google/resource/gkehub/google_gke_hub_scope_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "gkehub.scopes.getIamPolicy", + "gkehub.scopes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkehub/google_gke_hub_scope_iam_policy.json b/src/mapping/google/resource/gkehub/google_gke_hub_scope_iam_policy.json new file mode 100644 index 00000000..b248451d --- /dev/null +++ b/src/mapping/google/resource/gkehub/google_gke_hub_scope_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "gkehub.scopes.getIamPolicy", + "gkehub.scopes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "gkehub.scopes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/google_apigee_environment.json b/src/mapping/google/resource/google_apigee_environment.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/resource/google_apigee_environment.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_consent_store_iam_binding.json b/src/mapping/google/resource/healthcare/google_healthcare_consent_store_iam_binding.json new file mode 100644 index 00000000..add4b9fe --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_consent_store_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "healthcare.consentStores.getIamPolicy", + "healthcare.consentStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_consent_store_iam_member.json b/src/mapping/google/resource/healthcare/google_healthcare_consent_store_iam_member.json new file mode 100644 index 00000000..add4b9fe --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_consent_store_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "healthcare.consentStores.getIamPolicy", + "healthcare.consentStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_consent_store_iam_policy.json b/src/mapping/google/resource/healthcare/google_healthcare_consent_store_iam_policy.json new file mode 100644 index 00000000..e1f8cdb4 --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_consent_store_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "healthcare.consentStores.getIamPolicy", + "healthcare.consentStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "healthcare.consentStores.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_dataset_iam_binding.json b/src/mapping/google/resource/healthcare/google_healthcare_dataset_iam_binding.json new file mode 100644 index 00000000..534516d8 --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_dataset_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "healthcare.datasets.getIamPolicy", + "healthcare.datasets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_dataset_iam_member.json b/src/mapping/google/resource/healthcare/google_healthcare_dataset_iam_member.json new file mode 100644 index 00000000..534516d8 --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_dataset_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "healthcare.datasets.getIamPolicy", + "healthcare.datasets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_dataset_iam_policy.json b/src/mapping/google/resource/healthcare/google_healthcare_dataset_iam_policy.json new file mode 100644 index 00000000..0272db19 --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_dataset_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "healthcare.datasets.getIamPolicy", + "healthcare.datasets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "healthcare.datasets.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_binding.json b/src/mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_binding.json new file mode 100644 index 00000000..44ad44c3 --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "healthcare.dicomStores.getIamPolicy", + "healthcare.dicomStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_member.json b/src/mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_member.json new file mode 100644 index 00000000..44ad44c3 --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "healthcare.dicomStores.getIamPolicy", + "healthcare.dicomStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_policy.json b/src/mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_policy.json new file mode 100644 index 00000000..791029e5 --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "healthcare.dicomStores.getIamPolicy", + "healthcare.dicomStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "healthcare.dicomStores.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_binding.json b/src/mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_binding.json new file mode 100644 index 00000000..4f956554 --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "healthcare.fhirStores.getIamPolicy", + "healthcare.fhirStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_member.json b/src/mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_member.json new file mode 100644 index 00000000..4f956554 --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "healthcare.fhirStores.getIamPolicy", + "healthcare.fhirStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_policy.json b/src/mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_policy.json new file mode 100644 index 00000000..9eea946b --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "healthcare.fhirStores.getIamPolicy", + "healthcare.fhirStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "healthcare.fhirStores.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_binding.json b/src/mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_binding.json new file mode 100644 index 00000000..1db1c90c --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "healthcare.hl7V2Stores.getIamPolicy", + "healthcare.hl7V2Stores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_member.json b/src/mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_member.json new file mode 100644 index 00000000..1db1c90c --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "healthcare.hl7V2Stores.getIamPolicy", + "healthcare.hl7V2Stores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_policy.json b/src/mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_policy.json new file mode 100644 index 00000000..6a08f9c3 --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "healthcare.hl7V2Stores.getIamPolicy", + "healthcare.hl7V2Stores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "healthcare.hl7V2Stores.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool.json b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool.json new file mode 100644 index 00000000..9c4820c2 --- /dev/null +++ b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iam.googleapis.com/workforcePools.update", + "iam.googleapis.com/workforcePools.get", + "iam.googleapis.com/workforcePools.create", + "iam.googleapis.com/workforcePools.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_binding.json b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_binding.json new file mode 100644 index 00000000..220eb8cc --- /dev/null +++ b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iam.googleapis.com/workforcePools.getIamPolicy", + "iam.googleapis.com/workforcePools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_member.json b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_member.json new file mode 100644 index 00000000..220eb8cc --- /dev/null +++ b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iam.googleapis.com/workforcePools.getIamPolicy", + "iam.googleapis.com/workforcePools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_policy.json b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_policy.json new file mode 100644 index 00000000..220eb8cc --- /dev/null +++ b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iam.googleapis.com/workforcePools.getIamPolicy", + "iam.googleapis.com/workforcePools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_provider.json b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_provider.json new file mode 100644 index 00000000..a62fa309 --- /dev/null +++ b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_provider.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iam.googleapis.com/workforcePoolProviders.create", + "iam.googleapis.com/workforcePoolProviders.delete", + "iam.googleapis.com/workforcePoolProviders.get", + "iam.googleapis.com/workforcePoolProviders.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_provider_key.json b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_provider_key.json new file mode 100644 index 00000000..bd16b01e --- /dev/null +++ b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_provider_key.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "iam.googleapis.com/workforcePoolProviderKeys.create", + "iam.googleapis.com/workforcePoolProviderKeys.delete", + "iam.googleapis.com/workforcePoolProviderKeys.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_binding.json b/src/mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_binding.json new file mode 100644 index 00000000..220eb8cc --- /dev/null +++ b/src/mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iam.googleapis.com/workforcePools.getIamPolicy", + "iam.googleapis.com/workforcePools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_member.json b/src/mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_member.json new file mode 100644 index 00000000..220eb8cc --- /dev/null +++ b/src/mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iam.googleapis.com/workforcePools.getIamPolicy", + "iam.googleapis.com/workforcePools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_policy.json b/src/mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_policy.json new file mode 100644 index 00000000..8b851596 --- /dev/null +++ b/src/mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iam.googleapis.com/workloadIdentityPools.getIamPolicy", + "iam.googleapis.com/workloadIdentityPools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iam.googleapis.com/workloadIdentityPools.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iam/google_default_service_accounts.json b/src/mapping/google/resource/iam/google_default_service_accounts.json new file mode 100644 index 00000000..eb272b93 --- /dev/null +++ b/src/mapping/google/resource/iam/google_default_service_accounts.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iam.serviceAccounts.disable", + "iam.serviceAccounts.enable" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam/google_project_default_service_accounts.json b/src/mapping/google/resource/iam/google_project_default_service_accounts.json new file mode 100644 index 00000000..763c2cef --- /dev/null +++ b/src/mapping/google/resource/iam/google_project_default_service_accounts.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "iam.serviceAccounts.list" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam/google_project_iam_custom_role.json b/src/mapping/google/resource/iam/google_project_iam_custom_role.json index 8f0ce2e1..c1e3f457 100644 --- a/src/mapping/google/resource/iam/google_project_iam_custom_role.json +++ b/src/mapping/google/resource/iam/google_project_iam_custom_role.json @@ -1,18 +1,20 @@ -[ - { - "apply": [ - "iam.roles.get", - "iam.roles.create" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "iam.roles.delete" - ], - "modify": [ - "iam.roles.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "iam.roles.get", + "iam.roles.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "iam.roles.delete" + ], + "modify": [ + "iam.roles.update" + ], + "plan": [ + "iam.roles.get" + ] + } +] diff --git a/src/mapping/google/resource/iam/google_service_account.json b/src/mapping/google/resource/iam/google_service_account.json index 0f5d3f50..5b6691a9 100644 --- a/src/mapping/google/resource/iam/google_service_account.json +++ b/src/mapping/google/resource/iam/google_service_account.json @@ -13,6 +13,8 @@ "modify": [ "iam.serviceAccounts.update" ], - "plan": [] + "plan": [ + "iam.serviceAccounts.get" + ] } ] diff --git a/src/mapping/google/resource/iam/google_service_account_iam_policy.json b/src/mapping/google/resource/iam/google_service_account_iam_policy.json index 60650881..6befb2e7 100644 --- a/src/mapping/google/resource/iam/google_service_account_iam_policy.json +++ b/src/mapping/google/resource/iam/google_service_account_iam_policy.json @@ -9,6 +9,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "iam.serviceAccounts.getIamPolicy" + ] } ] diff --git a/src/mapping/google/resource/iam/google_service_account_key.json b/src/mapping/google/resource/iam/google_service_account_key.json index 96625498..c7ebf1a4 100644 --- a/src/mapping/google/resource/iam/google_service_account_key.json +++ b/src/mapping/google/resource/iam/google_service_account_key.json @@ -9,6 +9,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "iam.serviceAccountKeys.get" + ] } ] diff --git a/src/mapping/google/resource/iap/google_iap_app_engine_service_iam_binding.json b/src/mapping/google/resource/iap/google_iap_app_engine_service_iam_binding.json new file mode 100644 index 00000000..187c96ae --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_app_engine_service_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_app_engine_service_iam_member.json b/src/mapping/google/resource/iap/google_iap_app_engine_service_iam_member.json new file mode 100644 index 00000000..886fd193 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_app_engine_service_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_app_engine_service_iam_policy.json b/src/mapping/google/resource/iap/google_iap_app_engine_service_iam_policy.json new file mode 100644 index 00000000..45d8a940 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_app_engine_service_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_app_engine_version_iam_binding.json b/src/mapping/google/resource/iap/google_iap_app_engine_version_iam_binding.json new file mode 100644 index 00000000..187c96ae --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_app_engine_version_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_app_engine_version_iam_member.json b/src/mapping/google/resource/iap/google_iap_app_engine_version_iam_member.json new file mode 100644 index 00000000..187c96ae --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_app_engine_version_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_app_engine_version_iam_policy.json b/src/mapping/google/resource/iap/google_iap_app_engine_version_iam_policy.json new file mode 100644 index 00000000..0ab53f8d --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_app_engine_version_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServiceVersions.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_settings.json b/src/mapping/google/resource/iap/google_iap_settings.json new file mode 100644 index 00000000..d9abc424 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_settings.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webServices.getSettings", + "iap.webServices.updateSettings" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_tunnel_dest_group.json b/src/mapping/google/resource/iap/google_iap_tunnel_dest_group.json new file mode 100644 index 00000000..3b5e3fe2 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_tunnel_dest_group.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.tunnelDestGroups.create", + "iap.tunnelDestGroups.delete", + "iap.tunnelDestGroups.get", + "iap.tunnelDestGroups.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_binding.json b/src/mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_binding.json new file mode 100644 index 00000000..5a4139da --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.tunnelDestGroups.getIamPolicy", + "iap.tunnelDestGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_member.json b/src/mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_member.json new file mode 100644 index 00000000..5a4139da --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.tunnelDestGroups.getIamPolicy", + "iap.tunnelDestGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_policy.json b/src/mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_policy.json new file mode 100644 index 00000000..1ef22e4e --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.tunnelDestGroups.getIamPolicy", + "iap.tunnelDestGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.tunnelDestGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_tunnel_iam_binding.json b/src/mapping/google/resource/iap/google_iap_tunnel_iam_binding.json new file mode 100644 index 00000000..16ac30bb --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_tunnel_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.tunnel.getIamPolicy", + "iap.tunnel.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_tunnel_iam_member.json b/src/mapping/google/resource/iap/google_iap_tunnel_iam_member.json new file mode 100644 index 00000000..16ac30bb --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_tunnel_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.tunnel.getIamPolicy", + "iap.tunnel.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_tunnel_iam_policy.json b/src/mapping/google/resource/iap/google_iap_tunnel_iam_policy.json new file mode 100644 index 00000000..733c71c6 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_tunnel_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.tunnel.getIamPolicy", + "iap.tunnel.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.tunnel.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_tunnel_instance_iam_binding.json b/src/mapping/google/resource/iap/google_iap_tunnel_instance_iam_binding.json new file mode 100644 index 00000000..82821da3 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_tunnel_instance_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.tunnelInstances.getIamPolicy", + "iap.tunnelInstances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_tunnel_instance_iam_member.json b/src/mapping/google/resource/iap/google_iap_tunnel_instance_iam_member.json new file mode 100644 index 00000000..82821da3 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_tunnel_instance_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.tunnelInstances.getIamPolicy", + "iap.tunnelInstances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_tunnel_instance_iam_policy.json b/src/mapping/google/resource/iap/google_iap_tunnel_instance_iam_policy.json new file mode 100644 index 00000000..5557cda3 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_tunnel_instance_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.tunnelInstances.getIamPolicy", + "iap.tunnelInstances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.tunnelInstances.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_backend_service_iam_binding.json b/src/mapping/google/resource/iap/google_iap_web_backend_service_iam_binding.json new file mode 100644 index 00000000..886fd193 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_backend_service_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_backend_service_iam_member.json b/src/mapping/google/resource/iap/google_iap_web_backend_service_iam_member.json new file mode 100644 index 00000000..886fd193 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_backend_service_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_backend_service_iam_policy.json b/src/mapping/google/resource/iap/google_iap_web_backend_service_iam_policy.json new file mode 100644 index 00000000..45d8a940 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_backend_service_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_binding.json b/src/mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_binding.json new file mode 100644 index 00000000..37814a4f --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_member.json b/src/mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_member.json new file mode 100644 index 00000000..37814a4f --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_member.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_policy.json b/src/mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_policy.json new file mode 100644 index 00000000..37814a4f --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_binding.json b/src/mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_binding.json new file mode 100644 index 00000000..187c96ae --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_member.json b/src/mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_member.json new file mode 100644 index 00000000..187c96ae --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_policy.json b/src/mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_policy.json new file mode 100644 index 00000000..187c96ae --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_iam_binding.json b/src/mapping/google/resource/iap/google_iap_web_iam_binding.json new file mode 100644 index 00000000..331f5f94 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.web.getIamPolicy", + "iap.web.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_iam_member.json b/src/mapping/google/resource/iap/google_iap_web_iam_member.json new file mode 100644 index 00000000..331f5f94 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.web.getIamPolicy", + "iap.web.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_iam_policy.json b/src/mapping/google/resource/iap/google_iap_web_iam_policy.json new file mode 100644 index 00000000..de36f83c --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.web.getIamPolicy", + "iap.web.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.web.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_region_backend_service_iam_binding.json b/src/mapping/google/resource/iap/google_iap_web_region_backend_service_iam_binding.json new file mode 100644 index 00000000..45d8a940 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_region_backend_service_iam_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_region_backend_service_iam_member.json b/src/mapping/google/resource/iap/google_iap_web_region_backend_service_iam_member.json new file mode 100644 index 00000000..45d8a940 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_region_backend_service_iam_member.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_region_backend_service_iam_policy.json b/src/mapping/google/resource/iap/google_iap_web_region_backend_service_iam_policy.json new file mode 100644 index 00000000..45d8a940 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_region_backend_service_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_binding.json b/src/mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_binding.json new file mode 100644 index 00000000..45d8a940 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_member.json b/src/mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_member.json new file mode 100644 index 00000000..45d8a940 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_member.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_policy.json b/src/mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_policy.json new file mode 100644 index 00000000..45d8a940 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_type_app_engine_iam_binding.json b/src/mapping/google/resource/iap/google_iap_web_type_app_engine_iam_binding.json new file mode 100644 index 00000000..f92ccd33 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_type_app_engine_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webTypes.getIamPolicy", + "iap.webTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_type_app_engine_iam_member.json b/src/mapping/google/resource/iap/google_iap_web_type_app_engine_iam_member.json new file mode 100644 index 00000000..f92ccd33 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_type_app_engine_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webTypes.getIamPolicy", + "iap.webTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_type_app_engine_iam_policy.json b/src/mapping/google/resource/iap/google_iap_web_type_app_engine_iam_policy.json new file mode 100644 index 00000000..0794b0fd --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_type_app_engine_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webTypes.getIamPolicy", + "iap.webTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webTypes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_type_compute_iam_binding.json b/src/mapping/google/resource/iap/google_iap_web_type_compute_iam_binding.json new file mode 100644 index 00000000..f92ccd33 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_type_compute_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webTypes.getIamPolicy", + "iap.webTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_type_compute_iam_member.json b/src/mapping/google/resource/iap/google_iap_web_type_compute_iam_member.json new file mode 100644 index 00000000..f92ccd33 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_type_compute_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webTypes.getIamPolicy", + "iap.webTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_type_compute_iam_policy.json b/src/mapping/google/resource/iap/google_iap_web_type_compute_iam_policy.json new file mode 100644 index 00000000..0794b0fd --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_type_compute_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webTypes.getIamPolicy", + "iap.webTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webTypes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/kms/google_kms_ekm_connection_iam_binding.json b/src/mapping/google/resource/kms/google_kms_ekm_connection_iam_binding.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/resource/kms/google_kms_ekm_connection_iam_binding.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/kms/google_kms_ekm_connection_iam_member.json b/src/mapping/google/resource/kms/google_kms_ekm_connection_iam_member.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/resource/kms/google_kms_ekm_connection_iam_member.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/kms/google_kms_ekm_connection_iam_policy.json b/src/mapping/google/resource/kms/google_kms_ekm_connection_iam_policy.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/resource/kms/google_kms_ekm_connection_iam_policy.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_billing_account_exclusion.json b/src/mapping/google/resource/logging/google_logging_billing_account_exclusion.json new file mode 100644 index 00000000..3f642a0d --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_billing_account_exclusion.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.exclusions.create", + "logging.exclusions.delete", + "logging.exclusions.get", + "logging.exclusions.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_billing_account_sink.json b/src/mapping/google/resource/logging/google_logging_billing_account_sink.json new file mode 100644 index 00000000..42fe9b37 --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_billing_account_sink.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.sinks.create", + "logging.sinks.delete", + "logging.sinks.get", + "logging.sinks.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_folder_exclusion.json b/src/mapping/google/resource/logging/google_logging_folder_exclusion.json new file mode 100644 index 00000000..3f642a0d --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_folder_exclusion.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.exclusions.create", + "logging.exclusions.delete", + "logging.exclusions.get", + "logging.exclusions.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_folder_settings.json b/src/mapping/google/resource/logging/google_logging_folder_settings.json new file mode 100644 index 00000000..cf6a6a52 --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_folder_settings.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "logging.settings.get", + "logging.settings.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_folder_sink.json b/src/mapping/google/resource/logging/google_logging_folder_sink.json new file mode 100644 index 00000000..42fe9b37 --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_folder_sink.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.sinks.create", + "logging.sinks.delete", + "logging.sinks.get", + "logging.sinks.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_linked_dataset.json b/src/mapping/google/resource/logging/google_logging_linked_dataset.json new file mode 100644 index 00000000..5bfe5ce2 --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_linked_dataset.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "logging.links.create", + "logging.links.delete", + "logging.links.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_log_scope.json b/src/mapping/google/resource/logging/google_logging_log_scope.json new file mode 100644 index 00000000..b9f3b151 --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_log_scope.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.logScopes.create", + "logging.logScopes.delete", + "logging.logScopes.get", + "logging.logScopes.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_log_view.json b/src/mapping/google/resource/logging/google_logging_log_view.json new file mode 100644 index 00000000..91574519 --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_log_view.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.views.create", + "logging.views.delete", + "logging.views.get", + "logging.views.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_log_view_iam_binding.json b/src/mapping/google/resource/logging/google_logging_log_view_iam_binding.json new file mode 100644 index 00000000..0078a88b --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_log_view_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "logging.views.getIamPolicy", + "logging.views.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_log_view_iam_member.json b/src/mapping/google/resource/logging/google_logging_log_view_iam_member.json new file mode 100644 index 00000000..0078a88b --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_log_view_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "logging.views.getIamPolicy", + "logging.views.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_log_view_iam_policy.json b/src/mapping/google/resource/logging/google_logging_log_view_iam_policy.json new file mode 100644 index 00000000..0078a88b --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_log_view_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "logging.views.getIamPolicy", + "logging.views.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_metric.json b/src/mapping/google/resource/logging/google_logging_metric.json new file mode 100644 index 00000000..6f25ab17 --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_metric.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.logMetrics.create", + "logging.logMetrics.delete", + "logging.logMetrics.get", + "logging.logMetrics.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_organization_exclusion.json b/src/mapping/google/resource/logging/google_logging_organization_exclusion.json new file mode 100644 index 00000000..3f642a0d --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_organization_exclusion.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.exclusions.create", + "logging.exclusions.delete", + "logging.exclusions.get", + "logging.exclusions.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_organization_settings.json b/src/mapping/google/resource/logging/google_logging_organization_settings.json new file mode 100644 index 00000000..cf6a6a52 --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_organization_settings.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "logging.settings.get", + "logging.settings.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_organization_sink.json b/src/mapping/google/resource/logging/google_logging_organization_sink.json new file mode 100644 index 00000000..42fe9b37 --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_organization_sink.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.sinks.create", + "logging.sinks.delete", + "logging.sinks.get", + "logging.sinks.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_project_exclusion.json b/src/mapping/google/resource/logging/google_logging_project_exclusion.json new file mode 100644 index 00000000..3f642a0d --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_project_exclusion.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.exclusions.create", + "logging.exclusions.delete", + "logging.exclusions.get", + "logging.exclusions.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_project_sink.json b/src/mapping/google/resource/logging/google_logging_project_sink.json new file mode 100644 index 00000000..42fe9b37 --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_project_sink.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.sinks.create", + "logging.sinks.delete", + "logging.sinks.get", + "logging.sinks.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/managedkafka/google_managed_kafka_acl.json b/src/mapping/google/resource/managedkafka/google_managed_kafka_acl.json new file mode 100644 index 00000000..ae47c306 --- /dev/null +++ b/src/mapping/google/resource/managedkafka/google_managed_kafka_acl.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "managedkafka.acls.create", + "managedkafka.acls.get", + "managedkafka.acls.update", + "managedkafka.acls.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/managedkafka/google_managed_kafka_cluster.json b/src/mapping/google/resource/managedkafka/google_managed_kafka_cluster.json new file mode 100644 index 00000000..173c7ce4 --- /dev/null +++ b/src/mapping/google/resource/managedkafka/google_managed_kafka_cluster.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "managedkafka.operations.get", + "managedkafka.clusters.create", + "managedkafka.clusters.delete", + "managedkafka.clusters.get", + "managedkafka.clusters.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/managedkafka/google_managed_kafka_connect_cluster.json b/src/mapping/google/resource/managedkafka/google_managed_kafka_connect_cluster.json new file mode 100644 index 00000000..9153e8c6 --- /dev/null +++ b/src/mapping/google/resource/managedkafka/google_managed_kafka_connect_cluster.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "managedkafka.connectClusters.create", + "managedkafka.connectClusters.delete", + "managedkafka.connectClusters.get", + "managedkafka.connectClusters.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/managedkafka/google_managed_kafka_connector.json b/src/mapping/google/resource/managedkafka/google_managed_kafka_connector.json new file mode 100644 index 00000000..7aaff0e7 --- /dev/null +++ b/src/mapping/google/resource/managedkafka/google_managed_kafka_connector.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "managedkafka.connectors.create", + "managedkafka.connectors.delete", + "managedkafka.connectors.get", + "managedkafka.connectors.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/managedkafka/google_managed_kafka_topic.json b/src/mapping/google/resource/managedkafka/google_managed_kafka_topic.json new file mode 100644 index 00000000..0e883415 --- /dev/null +++ b/src/mapping/google/resource/managedkafka/google_managed_kafka_topic.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "managedkafka.topics.create", + "managedkafka.topics.delete", + "managedkafka.topics.get", + "managedkafka.topics.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/memcache/google_memcache_instance.json b/src/mapping/google/resource/memcache/google_memcache_instance.json new file mode 100644 index 00000000..9d41770b --- /dev/null +++ b/src/mapping/google/resource/memcache/google_memcache_instance.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "memcache.instances.create", + "memcache.instances.delete", + "memcache.instances.get", + "memcache.instances.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/memorystore/google_memorystore_instance.json b/src/mapping/google/resource/memorystore/google_memorystore_instance.json new file mode 100644 index 00000000..373399d3 --- /dev/null +++ b/src/mapping/google/resource/memorystore/google_memorystore_instance.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "memorystore.instances.create", + "memorystore.instances.delete", + "memorystore.instances.get", + "memorystore.instances.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_database_iam_binding.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_database_iam_binding.json new file mode 100644 index 00000000..92a6e38d --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_database_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "metastore.databases.getIamPolicy", + "metastore.databases.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_database_iam_member.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_database_iam_member.json new file mode 100644 index 00000000..92a6e38d --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_database_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "metastore.databases.getIamPolicy", + "metastore.databases.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_database_iam_policy.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_database_iam_policy.json new file mode 100644 index 00000000..c00e781b --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_database_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "metastore.databases.getIamPolicy", + "metastore.databases.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "metastore.databases.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_binding.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_binding.json new file mode 100644 index 00000000..83c21eb8 --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "metastore.federations.getIamPolicy", + "metastore.federations.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_member.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_member.json new file mode 100644 index 00000000..bde192e8 --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "metastore.federations.getIamPolicy", + "metastore.federations.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_policy.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_policy.json new file mode 100644 index 00000000..dbe537fa --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "metastore.federations.getIamPolicy", + "metastore.federations.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "metastore.federations.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_service_iam_binding.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_service_iam_binding.json new file mode 100644 index 00000000..fd29e0ce --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_service_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "metastore.services.getIamPolicy", + "metastore.services.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_service_iam_member.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_service_iam_member.json new file mode 100644 index 00000000..fd29e0ce --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_service_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "metastore.services.getIamPolicy", + "metastore.services.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_service_iam_policy.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_service_iam_policy.json new file mode 100644 index 00000000..47253269 --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_service_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "metastore.services.getIamPolicy", + "metastore.services.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "metastore.services.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_table_iam_binding.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_table_iam_binding.json new file mode 100644 index 00000000..16dc262b --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_table_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "metastore.tables.getIamPolicy", + "metastore.tables.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_table_iam_member.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_table_iam_member.json new file mode 100644 index 00000000..16dc262b --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_table_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "metastore.tables.getIamPolicy", + "metastore.tables.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_table_iam_policy.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_table_iam_policy.json new file mode 100644 index 00000000..f8d3a2b6 --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_table_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "metastore.tables.getIamPolicy", + "metastore.tables.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "metastore.tables.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/modelarmor/google_model_armor_floorsetting.json b/src/mapping/google/resource/modelarmor/google_model_armor_floorsetting.json new file mode 100644 index 00000000..f015b70c --- /dev/null +++ b/src/mapping/google/resource/modelarmor/google_model_armor_floorsetting.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "modelarmor.floorSettings.get", + "modelarmor.floorSettings.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/modelarmor/google_model_armor_template.json b/src/mapping/google/resource/modelarmor/google_model_armor_template.json new file mode 100644 index 00000000..2b5199b6 --- /dev/null +++ b/src/mapping/google/resource/modelarmor/google_model_armor_template.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "modelarmor.templates.create", + "modelarmor.templates.delete", + "modelarmor.templates.get", + "modelarmor.templates.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/monitoring/google_monitoring_alert_policy.json b/src/mapping/google/resource/monitoring/google_monitoring_alert_policy.json new file mode 100644 index 00000000..f7005cac --- /dev/null +++ b/src/mapping/google/resource/monitoring/google_monitoring_alert_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "monitoring.alertPolicies.update", + "monitoring.alertPolicies.create", + "monitoring.alertPolicies.delete", + "monitoring.alertPolicies.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/monitoring/google_monitoring_custom_service.json b/src/mapping/google/resource/monitoring/google_monitoring_custom_service.json new file mode 100644 index 00000000..02f27609 --- /dev/null +++ b/src/mapping/google/resource/monitoring/google_monitoring_custom_service.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "monitoring.services.create", + "monitoring.services.get", + "monitoring.services.delete", + "monitoring.services.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/monitoring/google_monitoring_dashboard.json b/src/mapping/google/resource/monitoring/google_monitoring_dashboard.json new file mode 100644 index 00000000..c5e327fc --- /dev/null +++ b/src/mapping/google/resource/monitoring/google_monitoring_dashboard.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "monitoring.dashboards.delete", + "monitoring.dashboards.create", + "monitoring.dashboards.update", + "monitoring.dashboards.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/monitoring/google_monitoring_group.json b/src/mapping/google/resource/monitoring/google_monitoring_group.json new file mode 100644 index 00000000..0dbd4c5b --- /dev/null +++ b/src/mapping/google/resource/monitoring/google_monitoring_group.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "monitoring.groups.create", + "monitoring.groups.delete", + "monitoring.groups.get", + "monitoring.groups.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/monitoring/google_monitoring_metric_descriptor.json b/src/mapping/google/resource/monitoring/google_monitoring_metric_descriptor.json new file mode 100644 index 00000000..6cc7876f --- /dev/null +++ b/src/mapping/google/resource/monitoring/google_monitoring_metric_descriptor.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "monitoring.metricDescriptors.create", + "monitoring.metricDescriptors.delete", + "monitoring.metricDescriptors.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/monitoring/google_monitoring_monitored_project.json b/src/mapping/google/resource/monitoring/google_monitoring_monitored_project.json new file mode 100644 index 00000000..76ea4abf --- /dev/null +++ b/src/mapping/google/resource/monitoring/google_monitoring_monitored_project.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "monitoring.metricsScopes.link" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/monitoring/google_monitoring_notification_channel.json b/src/mapping/google/resource/monitoring/google_monitoring_notification_channel.json new file mode 100644 index 00000000..1f31388e --- /dev/null +++ b/src/mapping/google/resource/monitoring/google_monitoring_notification_channel.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "monitoring.notificationChannels.create", + "monitoring.notificationChannels.delete", + "monitoring.notificationChannels.get", + "monitoring.notificationChannels.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/monitoring/google_monitoring_service.json b/src/mapping/google/resource/monitoring/google_monitoring_service.json new file mode 100644 index 00000000..ea5a0a16 --- /dev/null +++ b/src/mapping/google/resource/monitoring/google_monitoring_service.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "monitoring.services.create", + "monitoring.services.delete", + "monitoring.services.get", + "monitoring.services.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/monitoring/google_monitoring_slo.json b/src/mapping/google/resource/monitoring/google_monitoring_slo.json new file mode 100644 index 00000000..71690592 --- /dev/null +++ b/src/mapping/google/resource/monitoring/google_monitoring_slo.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "monitoring.slos.create", + "monitoring.slos.delete", + "monitoring.slos.get", + "monitoring.slos.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/monitoring/google_monitoring_uptime_check_config.json b/src/mapping/google/resource/monitoring/google_monitoring_uptime_check_config.json new file mode 100644 index 00000000..714992ef --- /dev/null +++ b/src/mapping/google/resource/monitoring/google_monitoring_uptime_check_config.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "monitoring.uptimeCheckConfigs.create", + "monitoring.uptimeCheckConfigs.delete", + "monitoring.uptimeCheckConfigs.get", + "monitoring.uptimeCheckConfigs.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/networksecurity/google_network_security_address_group_iam_binding.json b/src/mapping/google/resource/networksecurity/google_network_security_address_group_iam_binding.json new file mode 100644 index 00000000..edec3438 --- /dev/null +++ b/src/mapping/google/resource/networksecurity/google_network_security_address_group_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "networksecurity.addressGroups.getIamPolicy", + "networksecurity.addressGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/networksecurity/google_network_security_address_group_iam_member.json b/src/mapping/google/resource/networksecurity/google_network_security_address_group_iam_member.json new file mode 100644 index 00000000..edec3438 --- /dev/null +++ b/src/mapping/google/resource/networksecurity/google_network_security_address_group_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "networksecurity.addressGroups.getIamPolicy", + "networksecurity.addressGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/networksecurity/google_network_security_address_group_iam_policy.json b/src/mapping/google/resource/networksecurity/google_network_security_address_group_iam_policy.json new file mode 100644 index 00000000..a5853ef4 --- /dev/null +++ b/src/mapping/google/resource/networksecurity/google_network_security_address_group_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "networksecurity.addressGroups.getIamPolicy", + "networksecurity.addressGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "networksecurity.addressGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/notebooks/google_notebooks_environment.json b/src/mapping/google/resource/notebooks/google_notebooks_environment.json new file mode 100644 index 00000000..dcb902ad --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_notebooks_environment.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "notebooks.environments.create", + "notebooks.environments.get", + "notebooks.environments.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_notebooks_instance.json b/src/mapping/google/resource/notebooks/google_notebooks_instance.json new file mode 100644 index 00000000..c7dfcaac --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_notebooks_instance.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "notebooks.instances.create", + "notebooks.instances.delete", + "notebooks.instances.update", + "notebooks.instances.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_notebooks_instance_iam_binding.json b/src/mapping/google/resource/notebooks/google_notebooks_instance_iam_binding.json new file mode 100644 index 00000000..23967943 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_notebooks_instance_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "notebooks.instances.getIamPolicy", + "notebooks.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_notebooks_instance_iam_member.json b/src/mapping/google/resource/notebooks/google_notebooks_instance_iam_member.json new file mode 100644 index 00000000..23967943 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_notebooks_instance_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "notebooks.instances.getIamPolicy", + "notebooks.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_notebooks_instance_iam_policy.json b/src/mapping/google/resource/notebooks/google_notebooks_instance_iam_policy.json new file mode 100644 index 00000000..23967943 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_notebooks_instance_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "notebooks.instances.getIamPolicy", + "notebooks.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_notebooks_runtime.json b/src/mapping/google/resource/notebooks/google_notebooks_runtime.json new file mode 100644 index 00000000..075657d4 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_notebooks_runtime.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "notebooks.runtimes.create", + "notebooks.runtimes.delete", + "notebooks.runtimes.get", + "notebooks.runtimes.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_notebooks_runtime_iam_binding.json b/src/mapping/google/resource/notebooks/google_notebooks_runtime_iam_binding.json new file mode 100644 index 00000000..23967943 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_notebooks_runtime_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "notebooks.instances.getIamPolicy", + "notebooks.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_notebooks_runtime_iam_member.json b/src/mapping/google/resource/notebooks/google_notebooks_runtime_iam_member.json new file mode 100644 index 00000000..23967943 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_notebooks_runtime_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "notebooks.instances.getIamPolicy", + "notebooks.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_notebooks_runtime_iam_policy.json b/src/mapping/google/resource/notebooks/google_notebooks_runtime_iam_policy.json new file mode 100644 index 00000000..23967943 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_notebooks_runtime_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "notebooks.instances.getIamPolicy", + "notebooks.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_workbench_instance.json b/src/mapping/google/resource/notebooks/google_workbench_instance.json new file mode 100644 index 00000000..4369cd64 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_workbench_instance.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "notebooks.instances.create", + "notebooks.instances.delete", + "notebooks.instances.get", + "notebooks.instances.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_workbench_instance_iam_binding.json b/src/mapping/google/resource/notebooks/google_workbench_instance_iam_binding.json new file mode 100644 index 00000000..23967943 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_workbench_instance_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "notebooks.instances.getIamPolicy", + "notebooks.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_workbench_instance_iam_member.json b/src/mapping/google/resource/notebooks/google_workbench_instance_iam_member.json new file mode 100644 index 00000000..23967943 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_workbench_instance_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "notebooks.instances.getIamPolicy", + "notebooks.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_workbench_instance_iam_policy.json b/src/mapping/google/resource/notebooks/google_workbench_instance_iam_policy.json new file mode 100644 index 00000000..f5265a27 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_workbench_instance_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "notebooks.instances.getIamPolicy", + "notebooks.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "notebooks.instances.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/orgpolicy/google_project_organization_policy.json b/src/mapping/google/resource/orgpolicy/google_project_organization_policy.json new file mode 100644 index 00000000..527d46c2 --- /dev/null +++ b/src/mapping/google/resource/orgpolicy/google_project_organization_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "orgpolicy.policy.set", + "orgpolicy.policy.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/osconfig/google_os_config_guest_policies.json b/src/mapping/google/resource/osconfig/google_os_config_guest_policies.json new file mode 100644 index 00000000..034ffd3f --- /dev/null +++ b/src/mapping/google/resource/osconfig/google_os_config_guest_policies.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "osconfig.guestPolicies.create", + "osconfig.guestPolicies.delete", + "osconfig.guestPolicies.get", + "osconfig.guestPolicies.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/osconfig/google_os_config_os_policy_assignment.json b/src/mapping/google/resource/osconfig/google_os_config_os_policy_assignment.json new file mode 100644 index 00000000..ff6ec407 --- /dev/null +++ b/src/mapping/google/resource/osconfig/google_os_config_os_policy_assignment.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "osconfig.osPolicyAssignments.create", + "osconfig.osPolicyAssignments.delete", + "osconfig.osPolicyAssignments.get", + "osconfig.osPolicyAssignments.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/osconfig/google_os_config_patch_deployment.json b/src/mapping/google/resource/osconfig/google_os_config_patch_deployment.json new file mode 100644 index 00000000..76d305f0 --- /dev/null +++ b/src/mapping/google/resource/osconfig/google_os_config_patch_deployment.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "osconfig.patchDeployments.create", + "osconfig.patchDeployments.delete", + "osconfig.patchDeployments.update", + "osconfig.patchDeployments.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator.json b/src/mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator.json new file mode 100644 index 00000000..14e8558b --- /dev/null +++ b/src/mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "osconfig.policyOrchestrators.create", + "osconfig.policyOrchestrators.delete", + "osconfig.policyOrchestrators.get", + "osconfig.policyOrchestrators.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator_for_folder.json b/src/mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator_for_folder.json new file mode 100644 index 00000000..14e8558b --- /dev/null +++ b/src/mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator_for_folder.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "osconfig.policyOrchestrators.create", + "osconfig.policyOrchestrators.delete", + "osconfig.policyOrchestrators.get", + "osconfig.policyOrchestrators.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator_for_organization.json b/src/mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator_for_organization.json new file mode 100644 index 00000000..14e8558b --- /dev/null +++ b/src/mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator_for_organization.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "osconfig.policyOrchestrators.create", + "osconfig.policyOrchestrators.delete", + "osconfig.policyOrchestrators.get", + "osconfig.policyOrchestrators.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/parallelstore/google_parallelstore_instance.json b/src/mapping/google/resource/parallelstore/google_parallelstore_instance.json new file mode 100644 index 00000000..1a3aadf0 --- /dev/null +++ b/src/mapping/google/resource/parallelstore/google_parallelstore_instance.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "parallelstore.instances.create", + "parallelstore.instances.get", + "parallelstore.instances.update", + "parallelstore.instances.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/privateca/google_privateca_ca_pool.json b/src/mapping/google/resource/privateca/google_privateca_ca_pool.json new file mode 100644 index 00000000..f2023311 --- /dev/null +++ b/src/mapping/google/resource/privateca/google_privateca_ca_pool.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "privateca.caPools.create", + "privateca.caPools.get", + "privateca.caPools.delete", + "privateca.caPools.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "privateca.caPools.delete" + ], + "modify": [ + "privateca.caPools.update" + ], + "plan": [ + "privateca.caPools.get" + ] + } +] diff --git a/src/mapping/google/resource/privateca/google_privateca_ca_pool_iam_binding.json b/src/mapping/google/resource/privateca/google_privateca_ca_pool_iam_binding.json new file mode 100644 index 00000000..d4e6b1a1 --- /dev/null +++ b/src/mapping/google/resource/privateca/google_privateca_ca_pool_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "privateca.caPools.getIamPolicy", + "privateca.caPools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/privateca/google_privateca_ca_pool_iam_member.json b/src/mapping/google/resource/privateca/google_privateca_ca_pool_iam_member.json new file mode 100644 index 00000000..d4e6b1a1 --- /dev/null +++ b/src/mapping/google/resource/privateca/google_privateca_ca_pool_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "privateca.caPools.getIamPolicy", + "privateca.caPools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/privateca/google_privateca_ca_pool_iam_policy.json b/src/mapping/google/resource/privateca/google_privateca_ca_pool_iam_policy.json new file mode 100644 index 00000000..7ddb7897 --- /dev/null +++ b/src/mapping/google/resource/privateca/google_privateca_ca_pool_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "privateca.caPools.getIamPolicy", + "privateca.caPools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "privateca.caPools.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/privateca/google_privateca_certificate.json b/src/mapping/google/resource/privateca/google_privateca_certificate.json new file mode 100644 index 00000000..c3c4fe3a --- /dev/null +++ b/src/mapping/google/resource/privateca/google_privateca_certificate.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "privateca.certificates.create", + "privateca.certificates.get", + "privateca.certificates.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/privateca/google_privateca_certificate_authority.json b/src/mapping/google/resource/privateca/google_privateca_certificate_authority.json new file mode 100644 index 00000000..81312ca2 --- /dev/null +++ b/src/mapping/google/resource/privateca/google_privateca_certificate_authority.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "privateca.certificateAuthorities.create", + "privateca.certificateAuthorities.get", + "privateca.certificateAuthorities.update", + "privateca.certificateAuthorities.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/privateca/google_privateca_certificate_template.json b/src/mapping/google/resource/privateca/google_privateca_certificate_template.json new file mode 100644 index 00000000..8dfeb2dc --- /dev/null +++ b/src/mapping/google/resource/privateca/google_privateca_certificate_template.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "privateca.certificateTemplates.create", + "privateca.certificateTemplates.get", + "privateca.certificateTemplates.delete", + "privateca.operations.get", + "privateca.operations.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/privateca/google_privateca_certificate_template_iam_binding.json b/src/mapping/google/resource/privateca/google_privateca_certificate_template_iam_binding.json new file mode 100644 index 00000000..fcd861ad --- /dev/null +++ b/src/mapping/google/resource/privateca/google_privateca_certificate_template_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "privateca.certificateTemplates.getIamPolicy", + "privateca.certificateTemplates.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/privateca/google_privateca_certificate_template_iam_member.json b/src/mapping/google/resource/privateca/google_privateca_certificate_template_iam_member.json new file mode 100644 index 00000000..fcd861ad --- /dev/null +++ b/src/mapping/google/resource/privateca/google_privateca_certificate_template_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "privateca.certificateTemplates.getIamPolicy", + "privateca.certificateTemplates.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/privateca/google_privateca_certificate_template_iam_policy.json b/src/mapping/google/resource/privateca/google_privateca_certificate_template_iam_policy.json new file mode 100644 index 00000000..21db326c --- /dev/null +++ b/src/mapping/google/resource/privateca/google_privateca_certificate_template_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "privateca.certificateTemplates.getIamPolicy", + "privateca.certificateTemplates.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "privateca.certificateTemplates.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/privilegedaccessmanager/google_privileged_access_manager_entitlement.json b/src/mapping/google/resource/privilegedaccessmanager/google_privileged_access_manager_entitlement.json new file mode 100644 index 00000000..4a19a167 --- /dev/null +++ b/src/mapping/google/resource/privilegedaccessmanager/google_privileged_access_manager_entitlement.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "privilegedaccessmanager.entitlements.get", + "privilegedaccessmanager.entitlements.list", + "privilegedaccessmanager.entitlements.update", + "privilegedaccessmanager.entitlements.create", + "privilegedaccessmanager.entitlements.delete", + "privilegedaccessmanager.entitlements.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "privilegedaccessmanager.entitlements.get" + ] + } +] diff --git a/src/mapping/google/resource/pubsub/google_pubsub_schema_iam_binding.json b/src/mapping/google/resource/pubsub/google_pubsub_schema_iam_binding.json new file mode 100644 index 00000000..c3e4810d --- /dev/null +++ b/src/mapping/google/resource/pubsub/google_pubsub_schema_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "pubsub.schemas.getIamPolicy", + "pubsub.schemas.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/pubsub/google_pubsub_schema_iam_member.json b/src/mapping/google/resource/pubsub/google_pubsub_schema_iam_member.json new file mode 100644 index 00000000..c3e4810d --- /dev/null +++ b/src/mapping/google/resource/pubsub/google_pubsub_schema_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "pubsub.schemas.getIamPolicy", + "pubsub.schemas.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/pubsub/google_pubsub_schema_iam_policy.json b/src/mapping/google/resource/pubsub/google_pubsub_schema_iam_policy.json new file mode 100644 index 00000000..ab5ed7e5 --- /dev/null +++ b/src/mapping/google/resource/pubsub/google_pubsub_schema_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "pubsub.schemas.getIamPolicy", + "pubsub.schemas.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "pubsub.schemas.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/pubsub/google_pubsub_subscription.json b/src/mapping/google/resource/pubsub/google_pubsub_subscription.json index e9bcf53e..44aa95c7 100644 --- a/src/mapping/google/resource/pubsub/google_pubsub_subscription.json +++ b/src/mapping/google/resource/pubsub/google_pubsub_subscription.json @@ -14,6 +14,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "pubsub.subscriptions.get" + ] } ] diff --git a/src/mapping/google/resource/pubsub/google_pubsub_subscription_iam_binding.json b/src/mapping/google/resource/pubsub/google_pubsub_subscription_iam_binding.json new file mode 100644 index 00000000..4c0b7ac8 --- /dev/null +++ b/src/mapping/google/resource/pubsub/google_pubsub_subscription_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "pubsub.subscriptions.getIamPolicy", + "pubsub.subscriptions.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/pubsub/google_pubsub_subscription_iam_member.json b/src/mapping/google/resource/pubsub/google_pubsub_subscription_iam_member.json new file mode 100644 index 00000000..4c0b7ac8 --- /dev/null +++ b/src/mapping/google/resource/pubsub/google_pubsub_subscription_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "pubsub.subscriptions.getIamPolicy", + "pubsub.subscriptions.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/pubsub/google_pubsub_subscription_iam_policy.json b/src/mapping/google/resource/pubsub/google_pubsub_subscription_iam_policy.json new file mode 100644 index 00000000..ad47cd92 --- /dev/null +++ b/src/mapping/google/resource/pubsub/google_pubsub_subscription_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "pubsub.subscriptions.getIamPolicy", + "pubsub.subscriptions.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "pubsub.subscriptions.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/pubsub/google_pubsub_topic.json b/src/mapping/google/resource/pubsub/google_pubsub_topic.json index 371b65b8..f7dfdd70 100644 --- a/src/mapping/google/resource/pubsub/google_pubsub_topic.json +++ b/src/mapping/google/resource/pubsub/google_pubsub_topic.json @@ -11,6 +11,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "pubsub.topics.get" + ] } ] diff --git a/src/mapping/google/resource/pubsub/google_pubsub_topic_iam_policy.json b/src/mapping/google/resource/pubsub/google_pubsub_topic_iam_policy.json new file mode 100644 index 00000000..c3a19d5b --- /dev/null +++ b/src/mapping/google/resource/pubsub/google_pubsub_topic_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "pubsub.topics.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/redis/google_redis_cluster.json b/src/mapping/google/resource/redis/google_redis_cluster.json new file mode 100644 index 00000000..bb3b262f --- /dev/null +++ b/src/mapping/google/resource/redis/google_redis_cluster.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "redis.clusters.get", + "redis.clusters.create", + "redis.operations.get", + "redis.clusters.update", + "redis.clusters.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/redis/google_redis_cluster_user_created_connections.json b/src/mapping/google/resource/redis/google_redis_cluster_user_created_connections.json new file mode 100644 index 00000000..599a50a0 --- /dev/null +++ b/src/mapping/google/resource/redis/google_redis_cluster_user_created_connections.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "redis.clusters.connect" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_billing_project_info.json b/src/mapping/google/resource/resourcemanager/google_billing_project_info.json new file mode 100644 index 00000000..4de8ae1e --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_billing_project_info.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "resourcemanager.projects.get", + "resourcemanager.projects.deleteBillingAssignment", + "resourcemanager.projects.createBillingAssignment" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_folder_iam_binding.json b/src/mapping/google/resource/resourcemanager/google_folder_iam_binding.json new file mode 100644 index 00000000..564d4c7b --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_folder_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "resourcemanager.folders.getIamPolicy", + "resourcemanager.folders.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_folder_iam_member.json b/src/mapping/google/resource/resourcemanager/google_folder_iam_member.json new file mode 100644 index 00000000..564d4c7b --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_folder_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "resourcemanager.folders.getIamPolicy", + "resourcemanager.folders.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_folder_iam_policy.json b/src/mapping/google/resource/resourcemanager/google_folder_iam_policy.json new file mode 100644 index 00000000..07f8dced --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_folder_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "resourcemanager.folders.getIamPolicy", + "resourcemanager.folders.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.folders.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_organization_iam_binding.json b/src/mapping/google/resource/resourcemanager/google_organization_iam_binding.json new file mode 100644 index 00000000..6d588b66 --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_organization_iam_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "resourcemanager.organizations.getIamPolicy", + "resourcemanager.organizations.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.organizations.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_organization_iam_member.json b/src/mapping/google/resource/resourcemanager/google_organization_iam_member.json new file mode 100644 index 00000000..74978faa --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_organization_iam_member.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.organizations.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_organization_iam_policy.json b/src/mapping/google/resource/resourcemanager/google_organization_iam_policy.json new file mode 100644 index 00000000..6d588b66 --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_organization_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "resourcemanager.organizations.getIamPolicy", + "resourcemanager.organizations.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.organizations.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_project.json b/src/mapping/google/resource/resourcemanager/google_project.json new file mode 100644 index 00000000..18ab5802 --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_project.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "resourcemanager.organizations.get", + "resourcemanager.projects.create", + "resourcemanager.projects.delete", + "resourcemanager.projects.get", + "resourcemanager.projects.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_project_iam_member_remove.json b/src/mapping/google/resource/resourcemanager/google_project_iam_member_remove.json new file mode 100644 index 00000000..81b04628 --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_project_iam_member_remove.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "resourcemanager.projects.setIamPolicy", + "resourcemanager.projects.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_project_iam_policy.json b/src/mapping/google/resource/resourcemanager/google_project_iam_policy.json new file mode 100644 index 00000000..06958c4b --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_project_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "resourcemanager.projects.setIamPolicy", + "resourcemanager.projects.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.projects.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_tags_location_tag_binding.json b/src/mapping/google/resource/resourcemanager/google_tags_location_tag_binding.json new file mode 100644 index 00000000..16223e3f --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_tags_location_tag_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "resourcemanager.tagValueBindings.create", + "resourcemanager.tagValueBindings.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_tags_tag_binding.json b/src/mapping/google/resource/resourcemanager/google_tags_tag_binding.json new file mode 100644 index 00000000..16223e3f --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_tags_tag_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "resourcemanager.tagValueBindings.create", + "resourcemanager.tagValueBindings.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_tags_tag_key.json b/src/mapping/google/resource/resourcemanager/google_tags_tag_key.json new file mode 100644 index 00000000..a977ae2d --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_tags_tag_key.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "resourcemanager.tagKeys.create", + "resourcemanager.tagKeys.delete", + "resourcemanager.tagKeys.get", + "resourcemanager.tagKeys.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_tags_tag_key_iam_binding.json b/src/mapping/google/resource/resourcemanager/google_tags_tag_key_iam_binding.json new file mode 100644 index 00000000..d1bbd30a --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_tags_tag_key_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "resourcemanager.tagKeys.getIamPolicy", + "resourcemanager.tagKeys.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_tags_tag_key_iam_member.json b/src/mapping/google/resource/resourcemanager/google_tags_tag_key_iam_member.json new file mode 100644 index 00000000..d1bbd30a --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_tags_tag_key_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "resourcemanager.tagKeys.getIamPolicy", + "resourcemanager.tagKeys.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_tags_tag_key_iam_policy.json b/src/mapping/google/resource/resourcemanager/google_tags_tag_key_iam_policy.json new file mode 100644 index 00000000..5e0dbbcd --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_tags_tag_key_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "resourcemanager.tagKeys.getIamPolicy", + "resourcemanager.tagKeys.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.tagKeys.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_tags_tag_value.json b/src/mapping/google/resource/resourcemanager/google_tags_tag_value.json new file mode 100644 index 00000000..4eb0c0b1 --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_tags_tag_value.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "resourcemanager.tagValues.create", + "resourcemanager.tagValues.update", + "resourcemanager.tagValues.delete", + "resourcemanager.tagValues.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_tags_tag_value_iam_binding.json b/src/mapping/google/resource/resourcemanager/google_tags_tag_value_iam_binding.json new file mode 100644 index 00000000..b87a8a3d --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_tags_tag_value_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "resourcemanager.tagValues.getIamPolicy", + "resourcemanager.tagValues.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_tags_tag_value_iam_member.json b/src/mapping/google/resource/resourcemanager/google_tags_tag_value_iam_member.json new file mode 100644 index 00000000..b87a8a3d --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_tags_tag_value_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "resourcemanager.tagValues.getIamPolicy", + "resourcemanager.tagValues.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_tags_tag_value_iam_policy.json b/src/mapping/google/resource/resourcemanager/google_tags_tag_value_iam_policy.json new file mode 100644 index 00000000..b2c6d5f4 --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_tags_tag_value_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "resourcemanager.tagValues.getIamPolicy", + "resourcemanager.tagValues.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.tagValues.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/run/google_cloud_run_domain_mapping.json b/src/mapping/google/resource/run/google_cloud_run_domain_mapping.json new file mode 100644 index 00000000..670b80ca --- /dev/null +++ b/src/mapping/google/resource/run/google_cloud_run_domain_mapping.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "run.domainmappings.create", + "run.domainmappings.get", + "run.domainmappings.delete", + "run.domainmappings.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "run.domainmappings.delete" + ], + "modify": [ + "run.domainmappings.update" + ], + "plan": [] + } +] diff --git a/src/mapping/google/resource/run/google_cloud_run_service.json b/src/mapping/google/resource/run/google_cloud_run_service.json new file mode 100644 index 00000000..938d5ca6 --- /dev/null +++ b/src/mapping/google/resource/run/google_cloud_run_service.json @@ -0,0 +1,23 @@ +[ + { + "apply": [ + "run.services.create", + "run.services.get", + "run.services.delete", + "run.services.update", + "run.operations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "run.services.delete" + ], + "modify": [ + "run.services.update" + ], + "plan": [ + "run.services.get" + ] + } +] diff --git a/src/mapping/google/resource/run/google_cloud_run_service_iam_binding.json b/src/mapping/google/resource/run/google_cloud_run_service_iam_binding.json new file mode 100644 index 00000000..a69c8dd3 --- /dev/null +++ b/src/mapping/google/resource/run/google_cloud_run_service_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "run.services.getIamPolicy", + "run.services.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/run/google_cloud_run_service_iam_member.json b/src/mapping/google/resource/run/google_cloud_run_service_iam_member.json new file mode 100644 index 00000000..a69c8dd3 --- /dev/null +++ b/src/mapping/google/resource/run/google_cloud_run_service_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "run.services.getIamPolicy", + "run.services.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/run/google_cloud_run_service_iam_policy.json b/src/mapping/google/resource/run/google_cloud_run_service_iam_policy.json new file mode 100644 index 00000000..d0a9d794 --- /dev/null +++ b/src/mapping/google/resource/run/google_cloud_run_service_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "run.services.getIamPolicy", + "run.services.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "run.services.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/run/google_cloud_run_v2_job.json b/src/mapping/google/resource/run/google_cloud_run_v2_job.json index b4f20b11..7acab11b 100644 --- a/src/mapping/google/resource/run/google_cloud_run_v2_job.json +++ b/src/mapping/google/resource/run/google_cloud_run_v2_job.json @@ -1,21 +1,23 @@ -[ - { - "apply": [ - "run.jobs.create", - "run.jobs.get", - "run.operations.get", - "run.jobs.delete", - "run.jobs.update" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "run.jobs.delete" - ], - "modify": [ - "run.jobs.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "run.jobs.create", + "run.jobs.get", + "run.operations.get", + "run.jobs.delete", + "run.jobs.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "run.jobs.delete" + ], + "modify": [ + "run.jobs.update" + ], + "plan": [ + "run.jobs.get" + ] + } +] diff --git a/src/mapping/google/resource/run/google_cloud_run_v2_service.json b/src/mapping/google/resource/run/google_cloud_run_v2_service.json index 1a29dd24..311267a1 100644 --- a/src/mapping/google/resource/run/google_cloud_run_v2_service.json +++ b/src/mapping/google/resource/run/google_cloud_run_v2_service.json @@ -4,9 +4,13 @@ "run.services.create", "run.services.get", "run.services.delete", - "run.services.update" + "run.services.update", + "run.operations.get" ], "attributes": { + "image_uri": [ + "artifactregistry.repositories.downloadArtifacts" + ], "tags": [] }, "destroy": [ @@ -15,6 +19,8 @@ "modify": [ "run.services.update" ], - "plan": [] + "plan": [ + "run.services.get" + ] } ] diff --git a/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool.json b/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool.json new file mode 100644 index 00000000..b051de2f --- /dev/null +++ b/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "run.workerpools.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "run.workerpools.get" + ] + } +] diff --git a/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_binding.json b/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_binding.json new file mode 100644 index 00000000..b17b287e --- /dev/null +++ b/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "run.workerpools.getIamPolicy", + "run.workerpools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_member.json b/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_member.json new file mode 100644 index 00000000..b17b287e --- /dev/null +++ b/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "run.workerpools.getIamPolicy", + "run.workerpools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_policy.json b/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_policy.json new file mode 100644 index 00000000..53f40436 --- /dev/null +++ b/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "run.workerpools.getIamPolicy", + "run.workerpools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "run.workerpools.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config.json b/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config.json new file mode 100644 index 00000000..7770456d --- /dev/null +++ b/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "runtimeconfig.configs.create", + "runtimeconfig.configs.get", + "runtimeconfig.configs.update", + "runtimeconfig.configs.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_binding.json b/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_binding.json new file mode 100644 index 00000000..f3a89537 --- /dev/null +++ b/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "runtimeconfig.configs.getIamPolicy", + "runtimeconfig.configs.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_member.json b/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_member.json new file mode 100644 index 00000000..f3a89537 --- /dev/null +++ b/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "runtimeconfig.configs.getIamPolicy", + "runtimeconfig.configs.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_policy.json b/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_policy.json new file mode 100644 index 00000000..463acda2 --- /dev/null +++ b/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "runtimeconfig.configs.getIamPolicy", + "runtimeconfig.configs.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "runtimeconfig.configs.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_variable.json b/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_variable.json new file mode 100644 index 00000000..73ffaf2a --- /dev/null +++ b/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_variable.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "runtimeconfig.variables.create", + "runtimeconfig.variables.delete", + "runtimeconfig.variables.get", + "runtimeconfig.variables.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret.json b/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret.json new file mode 100644 index 00000000..478b9d78 --- /dev/null +++ b/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "secretmanager.secrets.create", + "secretmanager.secrets.get", + "secretmanager.secrets.update", + "secretmanager.secrets.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "secretmanager.secrets.delete" + ], + "modify": [ + "secretmanager.secrets.update" + ], + "plan": [ + "secretmanager.secrets.get" + ] + } +] diff --git a/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_binding.json b/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_binding.json new file mode 100644 index 00000000..aa7d0851 --- /dev/null +++ b/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "secretmanager.secrets.getIamPolicy", + "secretmanager.secrets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_member.json b/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_member.json new file mode 100644 index 00000000..aa7d0851 --- /dev/null +++ b/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "secretmanager.secrets.getIamPolicy", + "secretmanager.secrets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_policy.json b/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_policy.json new file mode 100644 index 00000000..9f1df28a --- /dev/null +++ b/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "secretmanager.secrets.getIamPolicy", + "secretmanager.secrets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "secretmanager.secrets.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_version.json b/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_version.json new file mode 100644 index 00000000..2733eb1a --- /dev/null +++ b/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_version.json @@ -0,0 +1,23 @@ +[ + { + "apply": [ + "secretmanager.versions.add", + "secretmanager.versions.enable", + "secretmanager.versions.get", + "secretmanager.versions.disable", + "secretmanager.versions.access", + "secretmanager.versions.destroy" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "secretmanager.versions.disable", + "secretmanager.versions.destroy" + ], + "modify": [], + "plan": [ + "secretmanager.versions.get" + ] + } +] diff --git a/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_branch_rule.json b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_branch_rule.json new file mode 100644 index 00000000..35c1e881 --- /dev/null +++ b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_branch_rule.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "securesourcemanager.branchRules.delete", + "securesourcemanager.branchRules.create", + "securesourcemanager.branchRules.get", + "securesourcemanager.branchRules.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance.json b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance.json new file mode 100644 index 00000000..57c9d967 --- /dev/null +++ b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "securesourcemanager.instances.create", + "securesourcemanager.instances.get", + "securesourcemanager.instances.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_binding.json b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_binding.json new file mode 100644 index 00000000..2e67a409 --- /dev/null +++ b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securesourcemanager.instances.getIamPolicy", + "securesourcemanager.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_member.json b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_member.json new file mode 100644 index 00000000..2e67a409 --- /dev/null +++ b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securesourcemanager.instances.getIamPolicy", + "securesourcemanager.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_policy.json b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_policy.json new file mode 100644 index 00000000..1f17ab2d --- /dev/null +++ b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "securesourcemanager.instances.getIamPolicy", + "securesourcemanager.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "securesourcemanager.instances.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository.json b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository.json new file mode 100644 index 00000000..c72b880f --- /dev/null +++ b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "securesourcemanager.repositories.get", + "securesourcemanager.repositories.create", + "securesourcemanager.repositories.update", + "securesourcemanager.repositories.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_binding.json b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_binding.json new file mode 100644 index 00000000..fc1a8baf --- /dev/null +++ b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securesourcemanager.repositories.getIamPolicy", + "securesourcemanager.repositories.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_member.json b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_member.json new file mode 100644 index 00000000..fc1a8baf --- /dev/null +++ b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securesourcemanager.repositories.getIamPolicy", + "securesourcemanager.repositories.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_policy.json b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_policy.json new file mode 100644 index 00000000..871acd6b --- /dev/null +++ b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "securesourcemanager.repositories.getIamPolicy", + "securesourcemanager.repositories.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "securesourcemanager.repositories.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/securitycenter/google_scc_source_iam_binding.json b/src/mapping/google/resource/securitycenter/google_scc_source_iam_binding.json new file mode 100644 index 00000000..9b11e06f --- /dev/null +++ b/src/mapping/google/resource/securitycenter/google_scc_source_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securitycenter.sources.getIamPolicy", + "securitycenter.sources.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securitycenter/google_scc_source_iam_member.json b/src/mapping/google/resource/securitycenter/google_scc_source_iam_member.json new file mode 100644 index 00000000..9b11e06f --- /dev/null +++ b/src/mapping/google/resource/securitycenter/google_scc_source_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securitycenter.sources.getIamPolicy", + "securitycenter.sources.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securitycenter/google_scc_source_iam_policy.json b/src/mapping/google/resource/securitycenter/google_scc_source_iam_policy.json new file mode 100644 index 00000000..670013cf --- /dev/null +++ b/src/mapping/google/resource/securitycenter/google_scc_source_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "securitycenter.sources.getIamPolicy", + "securitycenter.sources.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "securitycenter.sources.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_binding.json b/src/mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_binding.json new file mode 100644 index 00000000..9b11e06f --- /dev/null +++ b/src/mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securitycenter.sources.getIamPolicy", + "securitycenter.sources.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_member.json b/src/mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_member.json new file mode 100644 index 00000000..9b11e06f --- /dev/null +++ b/src/mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securitycenter.sources.getIamPolicy", + "securitycenter.sources.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_policy.json b/src/mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_policy.json new file mode 100644 index 00000000..670013cf --- /dev/null +++ b/src/mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "securitycenter.sources.getIamPolicy", + "securitycenter.sources.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "securitycenter.sources.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/servicedirectory/google_service_directory_namespace_iam_policy.json b/src/mapping/google/resource/servicedirectory/google_service_directory_namespace_iam_policy.json index 94aba09d..5d313248 100644 --- a/src/mapping/google/resource/servicedirectory/google_service_directory_namespace_iam_policy.json +++ b/src/mapping/google/resource/servicedirectory/google_service_directory_namespace_iam_policy.json @@ -9,6 +9,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "servicedirectory.namespaces.getIamPolicy" + ] } ] diff --git a/src/mapping/google/resource/servicedirectory/google_service_directory_service_iam_policy.json b/src/mapping/google/resource/servicedirectory/google_service_directory_service_iam_policy.json index 025bf9be..8872696a 100644 --- a/src/mapping/google/resource/servicedirectory/google_service_directory_service_iam_policy.json +++ b/src/mapping/google/resource/servicedirectory/google_service_directory_service_iam_policy.json @@ -9,6 +9,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "servicedirectory.services.getIamPolicy" + ] } ] diff --git a/src/mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_binding.json b/src/mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_binding.json new file mode 100644 index 00000000..abf5af0b --- /dev/null +++ b/src/mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "servicemanagement.services.setIamPolicy", + "servicemanagement.services.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_member.json b/src/mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_member.json new file mode 100644 index 00000000..abf5af0b --- /dev/null +++ b/src/mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "servicemanagement.services.setIamPolicy", + "servicemanagement.services.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_policy.json b/src/mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_policy.json new file mode 100644 index 00000000..abf5af0b --- /dev/null +++ b/src/mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "servicemanagement.services.setIamPolicy", + "servicemanagement.services.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/servicemanagement/google_endpoints_service_iam_binding.json b/src/mapping/google/resource/servicemanagement/google_endpoints_service_iam_binding.json new file mode 100644 index 00000000..abf5af0b --- /dev/null +++ b/src/mapping/google/resource/servicemanagement/google_endpoints_service_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "servicemanagement.services.setIamPolicy", + "servicemanagement.services.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/servicemanagement/google_endpoints_service_iam_member.json b/src/mapping/google/resource/servicemanagement/google_endpoints_service_iam_member.json new file mode 100644 index 00000000..abf5af0b --- /dev/null +++ b/src/mapping/google/resource/servicemanagement/google_endpoints_service_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "servicemanagement.services.setIamPolicy", + "servicemanagement.services.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/servicemanagement/google_endpoints_service_iam_policy.json b/src/mapping/google/resource/servicemanagement/google_endpoints_service_iam_policy.json new file mode 100644 index 00000000..8a22e54c --- /dev/null +++ b/src/mapping/google/resource/servicemanagement/google_endpoints_service_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "servicemanagement.services.setIamPolicy", + "servicemanagement.services.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "servicemanagement.services.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/source/google_sourcerepo_repository_iam_binding.json b/src/mapping/google/resource/source/google_sourcerepo_repository_iam_binding.json new file mode 100644 index 00000000..327b5075 --- /dev/null +++ b/src/mapping/google/resource/source/google_sourcerepo_repository_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "source.repos.getIamPolicy", + "source.repos.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/source/google_sourcerepo_repository_iam_member.json b/src/mapping/google/resource/source/google_sourcerepo_repository_iam_member.json new file mode 100644 index 00000000..327b5075 --- /dev/null +++ b/src/mapping/google/resource/source/google_sourcerepo_repository_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "source.repos.getIamPolicy", + "source.repos.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/source/google_sourcerepo_repository_iam_policy.json b/src/mapping/google/resource/source/google_sourcerepo_repository_iam_policy.json new file mode 100644 index 00000000..497b9782 --- /dev/null +++ b/src/mapping/google/resource/source/google_sourcerepo_repository_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "source.repos.getIamPolicy", + "source.repos.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "source.repos.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/spanner/google_spanner_backup_schedule.json b/src/mapping/google/resource/spanner/google_spanner_backup_schedule.json new file mode 100644 index 00000000..2e72af7a --- /dev/null +++ b/src/mapping/google/resource/spanner/google_spanner_backup_schedule.json @@ -0,0 +1,21 @@ +[ + { + "apply": [ + "spanner.databases.createBackup", + "spanner.backupSchedules.create", + "spanner.backupSchedules.get", + "spanner.backupSchedules.delete", + "spanner.backupSchedules.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "spanner.backupSchedules.delete" + ], + "modify": [ + "spanner.backupSchedules.update" + ], + "plan": [] + } +] diff --git a/src/mapping/google/resource/spanner/google_spanner_database.json b/src/mapping/google/resource/spanner/google_spanner_database.json index 48cfe204..9346d30c 100644 --- a/src/mapping/google/resource/spanner/google_spanner_database.json +++ b/src/mapping/google/resource/spanner/google_spanner_database.json @@ -1,23 +1,25 @@ -[ - { - "apply": [ - "spanner.databases.create", - "spanner.databases.drop", - "spanner.databases.updateDdl", - "spanner.databases.update", - "spanner.databases.get", - "spanner.databaseOperations.get" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "spanner.databases.drop" - ], - "modify": [ - "spanner.databases.updateDdl", - "spanner.databases.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "spanner.databases.create", + "spanner.databases.drop", + "spanner.databases.updateDdl", + "spanner.databases.update", + "spanner.databases.get", + "spanner.databaseOperations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "spanner.databases.drop" + ], + "modify": [ + "spanner.databases.updateDdl", + "spanner.databases.update" + ], + "plan": [ + "spanner.databases.get" + ] + } +] diff --git a/src/mapping/google/resource/spanner/google_spanner_instance.json b/src/mapping/google/resource/spanner/google_spanner_instance.json index 3f7a54a9..ec5fd758 100644 --- a/src/mapping/google/resource/spanner/google_spanner_instance.json +++ b/src/mapping/google/resource/spanner/google_spanner_instance.json @@ -1,21 +1,23 @@ -[ - { - "apply": [ - "spanner.instances.create", - "spanner.instances.delete", - "spanner.instances.update", - "spanner.instances.get", - "spanner.instanceOperations.get" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "spanner.instances.delete" - ], - "modify": [ - "spanner.instances.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "spanner.instances.create", + "spanner.instances.delete", + "spanner.instances.update", + "spanner.instances.get", + "spanner.instanceOperations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "spanner.instances.delete" + ], + "modify": [ + "spanner.instances.update" + ], + "plan": [ + "spanner.instances.get" + ] + } +] diff --git a/src/mapping/google/resource/spanner/google_spanner_instance_config.json b/src/mapping/google/resource/spanner/google_spanner_instance_config.json new file mode 100644 index 00000000..c3776c78 --- /dev/null +++ b/src/mapping/google/resource/spanner/google_spanner_instance_config.json @@ -0,0 +1,23 @@ +[ + { + "apply": [ + "spanner.instanceConfigs.get", + "spanner.instanceConfigs.create", + "spanner.instanceConfigs.update", + "spanner.instanceConfigs.delete", + "spanner.instanceConfigOperations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "spanner.instanceConfigs.delete" + ], + "modify": [ + "spanner.instanceConfigs.update" + ], + "plan": [ + "spanner.instanceConfigOperations.get" + ] + } +] diff --git a/src/mapping/google/resource/spanner/google_spanner_instance_partition.json b/src/mapping/google/resource/spanner/google_spanner_instance_partition.json new file mode 100644 index 00000000..0432bef9 --- /dev/null +++ b/src/mapping/google/resource/spanner/google_spanner_instance_partition.json @@ -0,0 +1,23 @@ +[ + { + "apply": [ + "spanner.instancePartitions.create", + "spanner.instancePartitions.get", + "spanner.instancePartitions.update", + "spanner.instancePartitions.delete", + "spanner.instancePartitionOperations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "spanner.instancePartitions.delete" + ], + "modify": [ + "spanner.instancePartitions.update" + ], + "plan": [ + "spanner.instancePartitions.get" + ] + } +] diff --git a/src/mapping/google/resource/storage/google_storage_bucket.json b/src/mapping/google/resource/storage/google_storage_bucket.json index 74e9554b..0c73f1f8 100644 --- a/src/mapping/google/resource/storage/google_storage_bucket.json +++ b/src/mapping/google/resource/storage/google_storage_bucket.json @@ -1,19 +1,21 @@ -[ - { - "apply": [ - "storage.buckets.create", - "storage.buckets.get", - "storage.buckets.delete" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "storage.buckets.delete" - ], - "modify": [ - "storage.buckets.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "storage.buckets.create", + "storage.buckets.get", + "storage.buckets.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "storage.buckets.delete" + ], + "modify": [ + "storage.buckets.update" + ], + "plan": [ + "storage.buckets.get" + ] + } +] diff --git a/src/mapping/google/resource/storage/google_storage_bucket_iam_member.json b/src/mapping/google/resource/storage/google_storage_bucket_iam_member.json index fa816333..039c73b1 100644 --- a/src/mapping/google/resource/storage/google_storage_bucket_iam_member.json +++ b/src/mapping/google/resource/storage/google_storage_bucket_iam_member.json @@ -1,14 +1,16 @@ -[ - { - "apply": [ - "storage.buckets.getIamPolicy", - "storage.buckets.setIamPolicy" - ], - "attributes": { - "tags": [] - }, - "destroy": [], - "modify": [], - "plan": [] - } -] +[ + { + "apply": [ + "storage.buckets.getIamPolicy", + "storage.buckets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "storage.buckets.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/storage/google_storage_bucket_iam_policy.json b/src/mapping/google/resource/storage/google_storage_bucket_iam_policy.json index fa816333..1115d60d 100644 --- a/src/mapping/google/resource/storage/google_storage_bucket_iam_policy.json +++ b/src/mapping/google/resource/storage/google_storage_bucket_iam_policy.json @@ -9,6 +9,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "storage.buckets.getIamPolicy" + ] } ] diff --git a/src/mapping/google/resource/storage/google_storage_bucket_object.json b/src/mapping/google/resource/storage/google_storage_bucket_object.json index ab601cde..8ded2526 100644 --- a/src/mapping/google/resource/storage/google_storage_bucket_object.json +++ b/src/mapping/google/resource/storage/google_storage_bucket_object.json @@ -1,18 +1,20 @@ -[ - { - "apply": [ - "storage.objects.create", - "storage.objects.delete" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "storage.objects.delete" - ], - "modify": [ - "storage.objects.get" - ], - "plan": [] - } -] +[ + { + "apply": [ + "storage.objects.create", + "storage.objects.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "storage.objects.delete" + ], + "modify": [ + "storage.objects.get" + ], + "plan": [ + "storage.objects.list" + ] + } +] diff --git a/src/mapping/google/resource/storage/google_storage_control_folder_intelligence_config.json b/src/mapping/google/resource/storage/google_storage_control_folder_intelligence_config.json new file mode 100644 index 00000000..9e66cdec --- /dev/null +++ b/src/mapping/google/resource/storage/google_storage_control_folder_intelligence_config.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "storage.intelligenceConfigs.get", + "storage.intelligenceConfigs.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/storage/google_storage_control_organization_intelligence_config.json b/src/mapping/google/resource/storage/google_storage_control_organization_intelligence_config.json new file mode 100644 index 00000000..9e66cdec --- /dev/null +++ b/src/mapping/google/resource/storage/google_storage_control_organization_intelligence_config.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "storage.intelligenceConfigs.get", + "storage.intelligenceConfigs.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/storage/google_storage_control_project_intelligence_config.json b/src/mapping/google/resource/storage/google_storage_control_project_intelligence_config.json new file mode 100644 index 00000000..29e3fb56 --- /dev/null +++ b/src/mapping/google/resource/storage/google_storage_control_project_intelligence_config.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "storage.intelligenceConfigs.get", + "storage.intelligenceConfigs.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/storage/google_storage_managed_folder_iam_binding.json b/src/mapping/google/resource/storage/google_storage_managed_folder_iam_binding.json new file mode 100644 index 00000000..04e7576b --- /dev/null +++ b/src/mapping/google/resource/storage/google_storage_managed_folder_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "storage.managedFolders.getIamPolicy", + "storage.managedFolders.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/storage/google_storage_managed_folder_iam_member.json b/src/mapping/google/resource/storage/google_storage_managed_folder_iam_member.json new file mode 100644 index 00000000..04e7576b --- /dev/null +++ b/src/mapping/google/resource/storage/google_storage_managed_folder_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "storage.managedFolders.getIamPolicy", + "storage.managedFolders.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/storage/google_storage_managed_folder_iam_policy.json b/src/mapping/google/resource/storage/google_storage_managed_folder_iam_policy.json new file mode 100644 index 00000000..04e7576b --- /dev/null +++ b/src/mapping/google/resource/storage/google_storage_managed_folder_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "storage.managedFolders.getIamPolicy", + "storage.managedFolders.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/storageinsights/google_storage_insights_dataset_config.json b/src/mapping/google/resource/storageinsights/google_storage_insights_dataset_config.json new file mode 100644 index 00000000..b77bd46a --- /dev/null +++ b/src/mapping/google/resource/storageinsights/google_storage_insights_dataset_config.json @@ -0,0 +1,25 @@ +[ + { + "apply": [ + "storage.buckets.get", + "storage.objects.list", + "storage.buckets.getObjectInsights", + "storage.objects.create", + "storage.buckets.get", + "storageinsights.reportConfigs.get", + "storageinsights.reportConfigs.create", + "storageinsights.reportConfigs.delete", + "storageinsights.reportConfigs.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "storageinsights.reportConfigs.delete" + ], + "modify": [ + "storageinsights.reportConfigs.update" + ], + "plan": [] + } +] diff --git a/src/mapping/google/resource/tpu/google_tpu_node.json b/src/mapping/google/resource/tpu/google_tpu_node.json new file mode 100644 index 00000000..a8e6e84a --- /dev/null +++ b/src/mapping/google/resource/tpu/google_tpu_node.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "tpu.nodes.create", + "tpu.nodes.get", + "tpu.nodes.delete", + "tpu.nodes.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/tpu/google_tpu_v2_queued_resource.json b/src/mapping/google/resource/tpu/google_tpu_v2_queued_resource.json new file mode 100644 index 00000000..a8e6e84a --- /dev/null +++ b/src/mapping/google/resource/tpu/google_tpu_v2_queued_resource.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "tpu.nodes.create", + "tpu.nodes.get", + "tpu.nodes.delete", + "tpu.nodes.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/tpu/google_tpu_v2_vm.json b/src/mapping/google/resource/tpu/google_tpu_v2_vm.json new file mode 100644 index 00000000..a8e6e84a --- /dev/null +++ b/src/mapping/google/resource/tpu/google_tpu_v2_vm.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "tpu.nodes.create", + "tpu.nodes.get", + "tpu.nodes.delete", + "tpu.nodes.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/transcoder/google_transcoder_job.json b/src/mapping/google/resource/transcoder/google_transcoder_job.json new file mode 100644 index 00000000..8b781d7e --- /dev/null +++ b/src/mapping/google/resource/transcoder/google_transcoder_job.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "transcoder.jobs.create", + "transcoder.jobs.get", + "transcoder.jobs.delete", + "transcoder.jobs.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/transcoder/google_transcoder_job_template.json b/src/mapping/google/resource/transcoder/google_transcoder_job_template.json new file mode 100644 index 00000000..ebe5f17e --- /dev/null +++ b/src/mapping/google/resource/transcoder/google_transcoder_job_template.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "transcoder.jobTemplates.create", + "transcoder.jobTemplates.get", + "transcoder.jobTemplates.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/vmwareengine/google_vmwareengine_cluster.json b/src/mapping/google/resource/vmwareengine/google_vmwareengine_cluster.json new file mode 100644 index 00000000..52ec3615 --- /dev/null +++ b/src/mapping/google/resource/vmwareengine/google_vmwareengine_cluster.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "vmwareengine.clusters.create", + "vmwareengine.clusters.delete", + "vmwareengine.clusters.get", + "vmwareengine.clusters.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/vmwareengine/google_vmwareengine_external_access_rule.json b/src/mapping/google/resource/vmwareengine/google_vmwareengine_external_access_rule.json new file mode 100644 index 00000000..d9447e1b --- /dev/null +++ b/src/mapping/google/resource/vmwareengine/google_vmwareengine_external_access_rule.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "vmwareengine.externalAccessRules.create", + "vmwareengine.externalAccessRules.delete", + "vmwareengine.externalAccessRules.get", + "vmwareengine.externalAccessRules.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/vmwareengine/google_vmwareengine_external_address.json b/src/mapping/google/resource/vmwareengine/google_vmwareengine_external_address.json new file mode 100644 index 00000000..8a3f5329 --- /dev/null +++ b/src/mapping/google/resource/vmwareengine/google_vmwareengine_external_address.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "vmwareengine.externalAddresses.create", + "vmwareengine.externalAddresses.delete", + "vmwareengine.externalAddresses.get", + "vmwareengine.externalAddresses.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/vmwareengine/google_vmwareengine_network.json b/src/mapping/google/resource/vmwareengine/google_vmwareengine_network.json new file mode 100644 index 00000000..57e7ec5f --- /dev/null +++ b/src/mapping/google/resource/vmwareengine/google_vmwareengine_network.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "vmwareengine.vmwareEngineNetworks.create", + "vmwareengine.vmwareEngineNetworks.delete", + "vmwareengine.vmwareEngineNetworks.get", + "vmwareengine.vmwareEngineNetworks.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/vmwareengine/google_vmwareengine_network_peering.json b/src/mapping/google/resource/vmwareengine/google_vmwareengine_network_peering.json new file mode 100644 index 00000000..fee1226f --- /dev/null +++ b/src/mapping/google/resource/vmwareengine/google_vmwareengine_network_peering.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "vmwareengine.externalAddresses.create", + "vmwareengine.externalAddresses.delete", + "vmwareengine.externalAddresses.get", + "vmwareengine.externalAddresses.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/vmwareengine/google_vmwareengine_network_policy.json b/src/mapping/google/resource/vmwareengine/google_vmwareengine_network_policy.json new file mode 100644 index 00000000..3dacb5d2 --- /dev/null +++ b/src/mapping/google/resource/vmwareengine/google_vmwareengine_network_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "vmwareengine.networkPolicies.create", + "vmwareengine.networkPolicies.delete", + "vmwareengine.networkPolicies.get", + "vmwareengine.networkPolicies.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/vmwareengine/google_vmwareengine_private_cloud.json b/src/mapping/google/resource/vmwareengine/google_vmwareengine_private_cloud.json new file mode 100644 index 00000000..b8ec8759 --- /dev/null +++ b/src/mapping/google/resource/vmwareengine/google_vmwareengine_private_cloud.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "vmwareengine.privateClouds.create", + "vmwareengine.privateClouds.get", + "vmwareengine.privateClouds.delete", + "vmwareengine.privateClouds.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/vmwareengine/google_vmwareengine_subnet.json b/src/mapping/google/resource/vmwareengine/google_vmwareengine_subnet.json new file mode 100644 index 00000000..090dbc7c --- /dev/null +++ b/src/mapping/google/resource/vmwareengine/google_vmwareengine_subnet.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "vmwareengine.subnets.get", + "vmwareengine.subnets.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/vpcaccess/google_vpc_access_connector.json b/src/mapping/google/resource/vpcaccess/google_vpc_access_connector.json new file mode 100644 index 00000000..4dadb545 --- /dev/null +++ b/src/mapping/google/resource/vpcaccess/google_vpc_access_connector.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "vpcaccess.connectors.create", + "vpcaccess.connectors.delete", + "vpcaccess.connectors.get", + "vpcaccess.connectors.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/workflows/google_workflows_workflow.json b/src/mapping/google/resource/workflows/google_workflows_workflow.json new file mode 100644 index 00000000..45efd560 --- /dev/null +++ b/src/mapping/google/resource/workflows/google_workflows_workflow.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "workflows.workflows.create", + "workflows.workflows.delete", + "workflows.workflows.get", + "workflows.workflows.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/workstations/google_workstations_workstation.json b/src/mapping/google/resource/workstations/google_workstations_workstation.json new file mode 100644 index 00000000..d83fe594 --- /dev/null +++ b/src/mapping/google/resource/workstations/google_workstations_workstation.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "workstations.workstations.create", + "workstations.workstations.delete", + "workstations.workstations.get", + "workstations.workstations.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/workstations/google_workstations_workstation_cluster.json b/src/mapping/google/resource/workstations/google_workstations_workstation_cluster.json new file mode 100644 index 00000000..525e4cf2 --- /dev/null +++ b/src/mapping/google/resource/workstations/google_workstations_workstation_cluster.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "workstations.workstationClusters.create", + "workstations.workstationClusters.delete", + "workstations.workstationClusters.get", + "workstations.workstationClusters.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/workstations/google_workstations_workstation_config.json b/src/mapping/google/resource/workstations/google_workstations_workstation_config.json new file mode 100644 index 00000000..4b11e785 --- /dev/null +++ b/src/mapping/google/resource/workstations/google_workstations_workstation_config.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "workstations.workstationConfigs.create", + "workstations.workstationConfigs.delete", + "workstations.workstationConfigs.get", + "workstations.workstationConfigs.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/workstations/google_workstations_workstation_config_iam_binding.json b/src/mapping/google/resource/workstations/google_workstations_workstation_config_iam_binding.json new file mode 100644 index 00000000..a8904bc7 --- /dev/null +++ b/src/mapping/google/resource/workstations/google_workstations_workstation_config_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "workstations.workstationConfigs.getIamPolicy", + "workstations.workstationConfigs.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/workstations/google_workstations_workstation_config_iam_member.json b/src/mapping/google/resource/workstations/google_workstations_workstation_config_iam_member.json new file mode 100644 index 00000000..a8904bc7 --- /dev/null +++ b/src/mapping/google/resource/workstations/google_workstations_workstation_config_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "workstations.workstationConfigs.getIamPolicy", + "workstations.workstationConfigs.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/workstations/google_workstations_workstation_config_iam_policy.json b/src/mapping/google/resource/workstations/google_workstations_workstation_config_iam_policy.json new file mode 100644 index 00000000..60e562c0 --- /dev/null +++ b/src/mapping/google/resource/workstations/google_workstations_workstation_config_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "workstations.workstationConfigs.getIamPolicy", + "workstations.workstationConfigs.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "workstations.workstationConfigs.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/workstations/google_workstations_workstation_iam_binding.json b/src/mapping/google/resource/workstations/google_workstations_workstation_iam_binding.json new file mode 100644 index 00000000..a9763718 --- /dev/null +++ b/src/mapping/google/resource/workstations/google_workstations_workstation_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "workstations.workstations.getIamPolicy", + "workstations.workstations.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/workstations/google_workstations_workstation_iam_member.json b/src/mapping/google/resource/workstations/google_workstations_workstation_iam_member.json new file mode 100644 index 00000000..a9763718 --- /dev/null +++ b/src/mapping/google/resource/workstations/google_workstations_workstation_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "workstations.workstations.getIamPolicy", + "workstations.workstations.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/workstations/google_workstations_workstation_iam_policy.json b/src/mapping/google/resource/workstations/google_workstations_workstation_iam_policy.json new file mode 100644 index 00000000..a9763718 --- /dev/null +++ b/src/mapping/google/resource/workstations/google_workstations_workstation_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "workstations.workstations.getIamPolicy", + "workstations.workstations.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/modules.go b/src/modules.go new file mode 100644 index 00000000..a3f34b17 --- /dev/null +++ b/src/modules.go @@ -0,0 +1,101 @@ +package pike + +import ( + "encoding/json" + "fmt" + "io" + "os" + "path/filepath" + + "github.com/hashicorp/go-version" +) + +const ( + ManifestSnapshotFilename = "modules.json" +) + +// Record represents some metadata about an installed module, as part +// of a module JSON. +type Record struct { + Key string `json:"Key"` + SourceAddr string `json:"Source"` + Version *version.Version `json:"-"` + VersionStr string `json:"Version,omitempty"` + Dir string `json:"Dir"` +} + +type ModuleJson map[string]Record + +type modulesJson struct { + Records []Record `json:"Modules"` +} + +type invalidVersionError struct { + err error + key string + version string +} + +func (m *invalidVersionError) Error() string { + return fmt.Sprintf("invalid version %q for %s: %s", m.version, m.key, m.err) +} + +func ReadModuleJson(r io.Reader) (ModuleJson, error) { + src, err := io.ReadAll(r) + + if err != nil { + return nil, err + } + + if len(src) == 0 { + return make(ModuleJson), nil + } + + var read modulesJson + err = json.Unmarshal(src, &read) + + if err != nil { + return nil, &unmarshallJSONError{err, ""} + } + + newModuleJson := make(ModuleJson) + for _, record := range read.Records { + if record.VersionStr != "" { + record.Version, err = version.NewVersion(record.VersionStr) + if err != nil { + return nil, &invalidVersionError{err, record.Key, record.VersionStr} + } + } + // Ensure Windows is using the proper modules path format after + // reading the module's manifest Dir records + record.Dir = filepath.FromSlash(record.Dir) + + if _, exists := newModuleJson[record.Key]; exists { + return nil, fmt.Errorf("snapshot file contains two records for path %s", record.Key) + } + newModuleJson[record.Key] = record + } + return newModuleJson, nil +} + +func ReadModuleJsonForDir(dir string) (ModuleJson, error) { + fn := filepath.Join(dir, ManifestSnapshotFilename) + r, err := os.Open(fn) + if err != nil { + if os.IsNotExist(err) { + return make(ModuleJson), nil + } + return nil, err + } + defer r.Close() + return ReadModuleJson(r) +} + +func ReturnLocalAddrFromSource(source string, listModules ModuleJson) string { + for _, module := range listModules { + if module.SourceAddr == source { + return module.Dir + } + } + return "" +} diff --git a/src/modules_test.go b/src/modules_test.go new file mode 100644 index 00000000..ca4836d7 --- /dev/null +++ b/src/modules_test.go @@ -0,0 +1,305 @@ +package pike + +import ( + "os" + "path/filepath" + "strings" + "testing" +) + +func TestReadModuleJson_ValidInput(t *testing.T) { + jsonInput := `{ + "Modules": [ + { + "Key": "module1", + "Source": "github.com/example/module1", + "Version": "1.0.0", + "Dir": "modules/module1" + }, + { + "Key": "module2", + "Source": "github.com/example/module2", + "Dir": "modules/module2" + } + ] + }` + + reader := strings.NewReader(jsonInput) + result, err := ReadModuleJson(reader) + + if err != nil { + t.Fatalf("Expected no error, got: %v", err) + } + + if len(result) != 2 { + t.Fatalf("Expected 2 modules, got: %d", len(result)) + } + + // Test module1 + module1, exists := result["module1"] + if !exists { + t.Fatal("Expected module1 to exist") + } + if module1.Key != "module1" { + t.Errorf("Expected Key 'module1', got: %s", module1.Key) + } + if module1.SourceAddr != "github.com/example/module1" { + t.Errorf("Expected SourceAddr 'github.com/example/module1', got: %s", module1.SourceAddr) + } + if module1.VersionStr != "1.0.0" { + t.Errorf("Expected VersionStr '1.0.0', got: %s", module1.VersionStr) + } + if module1.Version == nil { + t.Error("Expected Version to be parsed") + } else if module1.Version.String() != "1.0.0" { + t.Errorf("Expected Version '1.0.0', got: %s", module1.Version.String()) + } + + // Test module2 (no version) + module2, exists := result["module2"] + if !exists { + t.Fatal("Expected module2 to exist") + } + if module2.Version != nil { + t.Error("Expected Version to be nil for module without version") + } +} + +func TestReadModuleJson_EmptyInput(t *testing.T) { + reader := strings.NewReader("") + result, err := ReadModuleJson(reader) + + if err != nil { + t.Fatalf("Expected no error, got: %v", err) + } + + if len(result) != 0 { + t.Fatalf("Expected empty ModuleJson, got: %d modules", len(result)) + } +} + +func TestReadModuleJson_InvalidJSON(t *testing.T) { + reader := strings.NewReader(`{"invalid": json}`) + _, err := ReadModuleJson(reader) + + if err == nil { + t.Fatal("Expected error for invalid JSON") + } + + if !strings.Contains(err.Error(), "invalid character 'j' looking for beginning of value") { + t.Errorf("Expected unmarshalling error, got: %v", err) + } +} + +func TestReadModuleJson_DuplicateKeys(t *testing.T) { + jsonInput := `{ + "Modules": [ + { + "Key": "duplicate", + "Source": "github.com/example/module1", + "Dir": "modules/module1" + }, + { + "Key": "duplicate", + "Source": "github.com/example/module2", + "Dir": "modules/module2" + } + ] + }` + + reader := strings.NewReader(jsonInput) + _, err := ReadModuleJson(reader) + + if err == nil { + t.Fatal("Expected error for duplicate keys") + } + + if !strings.Contains(err.Error(), "snapshot file contains two records for path duplicate") { + t.Errorf("Expected duplicate key error, got: %v", err) + } +} + +func TestReadModuleJson_InvalidVersion(t *testing.T) { + jsonInput := `{ + "Modules": [ + { + "Key": "module1", + "Source": "github.com/example/module1", + "Version": "invalid-version", + "Dir": "modules/module1" + } + ] + }` + + reader := strings.NewReader(jsonInput) + _, err := ReadModuleJson(reader) + + if err == nil { + t.Fatal("Expected error for invalid version") + } + + if !strings.Contains(err.Error(), "invalid version") { + t.Errorf("Expected invalid version error, got: %v", err) + } +} + +func TestReadModuleJson_WindowsPathHandling(t *testing.T) { + jsonInput := `{ + "Modules": [ + { + "Key": "module1", + "Source": "github.com/example/module1", + "Dir": "modules/subdir/module1" + } + ] + }` + + reader := strings.NewReader(jsonInput) + result, err := ReadModuleJson(reader) + + if err != nil { + t.Fatalf("Expected no error, got: %v", err) + } + + module1 := result["module1"] + expectedDir := filepath.FromSlash("modules/subdir/module1") + if module1.Dir != expectedDir { + t.Errorf("Expected Dir '%s', got: '%s'", expectedDir, module1.Dir) + } +} + +func TestReadModuleJsonForDir_ValidFile(t *testing.T) { + // Create a temporary directory + tempDir, err := os.MkdirTemp("", "pike-test") + if err != nil { + t.Fatalf("Failed to create temp dir: %v", err) + } + defer os.RemoveAll(tempDir) + + // Create a modules.json file + jsonContent := `{ + "Modules": [ + { + "Key": "test-module", + "Source": "github.com/example/test", + "Dir": "modules/test" + } + ] + }` + + modulesFile := filepath.Join(tempDir, ManifestSnapshotFilename) + err = os.WriteFile(modulesFile, []byte(jsonContent), 0644) + if err != nil { + t.Fatalf("Failed to write modules file: %v", err) + } + + result, err := ReadModuleJsonForDir(tempDir) + if err != nil { + t.Fatalf("Expected no error, got: %v", err) + } + + if len(result) != 1 { + t.Fatalf("Expected 1 module, got: %d", len(result)) + } + + module, exists := result["test-module"] + if !exists { + t.Fatal("Expected test-module to exist") + } + if module.SourceAddr != "github.com/example/test" { + t.Errorf("Expected SourceAddr 'github.com/example/test', got: %s", module.SourceAddr) + } +} + +func TestReadModuleJsonForDir_NonExistentFile(t *testing.T) { + // Create a temporary directory without modules.json + tempDir, err := os.MkdirTemp("", "pike-test") + if err != nil { + t.Fatalf("Failed to create temp dir: %v", err) + } + defer os.RemoveAll(tempDir) + + result, err := ReadModuleJsonForDir(tempDir) + if err != nil { + t.Fatalf("Expected no error for non-existent file, got: %v", err) + } + + if len(result) != 0 { + t.Fatalf("Expected empty ModuleJson, got: %d modules", len(result)) + } +} + +func TestReadModuleJsonForDir_NonExistentDirectory(t *testing.T) { + result, err := ReadModuleJsonForDir("/non/existent/directory") + if err != nil { + t.Fatalf("Expected no error for non-existent directory, got: %v", err) + } + + if len(result) != 0 { + t.Fatalf("Expected empty ModuleJson, got: %d modules", len(result)) + } +} + +func TestReturnLocalAddrFromSource_Found(t *testing.T) { + modules := ModuleJson{ + "module1": Record{ + Key: "module1", + SourceAddr: "github.com/example/module1", + Dir: "/path/to/module1", + }, + "module2": Record{ + Key: "module2", + SourceAddr: "github.com/example/module2", + Dir: "/path/to/module2", + }, + } + + result := ReturnLocalAddrFromSource("github.com/example/module2", modules) + expected := "/path/to/module2" + + if result != expected { + t.Errorf("Expected '%s', got: '%s'", expected, result) + } +} + +func TestReturnLocalAddrFromSource_NotFound(t *testing.T) { + modules := ModuleJson{ + "module1": Record{ + Key: "module1", + SourceAddr: "github.com/example/module1", + Dir: "/path/to/module1", + }, + } + + result := ReturnLocalAddrFromSource("github.com/example/nonexistent", modules) + + if result != "" { + t.Errorf("Expected empty string, got: '%s'", result) + } +} + +func TestReturnLocalAddrFromSource_EmptyModules(t *testing.T) { + modules := make(ModuleJson) + + result := ReturnLocalAddrFromSource("github.com/example/any", modules) + + if result != "" { + t.Errorf("Expected empty string, got: '%s'", result) + } +} + +func TestReturnLocalAddrFromSource_EmptySource(t *testing.T) { + modules := ModuleJson{ + "module1": Record{ + Key: "module1", + SourceAddr: "github.com/example/module1", + Dir: "/path/to/module1", + }, + } + + result := ReturnLocalAddrFromSource("", modules) + + if result != "" { + t.Errorf("Expected empty string, got: '%s'", result) + } +} diff --git a/src/parse/aws-members.json b/src/parse/aws-members.json index 14fd6821..1c433ceb 100755 --- a/src/parse/aws-members.json +++ b/src/parse/aws-members.json @@ -1,2121 +1,2195 @@ -{ - "dataSources": [ - "aws_account_primary_contact", - "aws_acm_certificate", - "aws_acmpca_certificate", - "aws_acmpca_certificate_authority", - "aws_ami", - "aws_ami_ids", - "aws_api_gateway_api_key", - "aws_api_gateway_api_keys", - "aws_api_gateway_authorizer", - "aws_api_gateway_authorizers", - "aws_api_gateway_domain_name", - "aws_api_gateway_export", - "aws_api_gateway_resource", - "aws_api_gateway_rest_api", - "aws_api_gateway_sdk", - "aws_api_gateway_vpc_link", - "aws_apigatewayv2_api", - "aws_apigatewayv2_apis", - "aws_apigatewayv2_export", - "aws_apigatewayv2_vpc_link", - "aws_appconfig_configuration_profile", - "aws_appconfig_configuration_profiles", - "aws_appconfig_environment", - "aws_appconfig_environments", - "aws_appintegrations_event_integration", - "aws_appmesh_gateway_route", - "aws_appmesh_mesh", - "aws_appmesh_route", - "aws_appmesh_virtual_gateway", - "aws_appmesh_virtual_node", - "aws_appmesh_virtual_router", - "aws_appmesh_virtual_service", - "aws_apprunner_hosted_zone_id", - "aws_appstream_image", - "aws_arn", - "aws_athena_named_query", - "aws_auditmanager_control", - "aws_auditmanager_framework", - "aws_autoscaling_group", - "aws_autoscaling_groups", - "aws_availability_zone", - "aws_availability_zones", - "aws_backup_framework", - "aws_backup_plan", - "aws_backup_report_plan", - "aws_backup_selection", - "aws_backup_vault", - "aws_batch_compute_environment", - "aws_batch_job_definition", - "aws_batch_job_queue", - "aws_batch_scheduling_policy", - "aws_bedrock_custom_model", - "aws_bedrock_custom_models", - "aws_bedrock_foundation_model", - "aws_bedrock_foundation_models", - "aws_bedrock_inference_profile", - "aws_bedrock_inference_profiles", - "aws_bedrockagent_agent_versions", - "aws_billing_service_account", - "aws_budgets_budget", - "aws_caller_identity", - "aws_canonical_user_id", - "aws_ce_tags", - "aws_chatbot_slack_workspace", - "aws_cloudcontrolapi_resource", - "aws_cloudformation_export", - "aws_cloudformation_stack", - "aws_cloudformation_type", - "aws_cloudfront_cache_policy", - "aws_cloudfront_distribution", - "aws_cloudfront_function", - "aws_cloudfront_log_delivery_canonical_user_id", - "aws_cloudfront_origin_access_control", - "aws_cloudfront_origin_access_identities", - "aws_cloudfront_origin_access_identity", - "aws_cloudfront_origin_request_policy", - "aws_cloudfront_realtime_log_config", - "aws_cloudfront_response_headers_policy", - "aws_cloudhsm_v2_cluster", - "aws_cloudtrail_service_account", - "aws_cloudwatch_contributor_managed_insight_rules", - "aws_cloudwatch_event_bus", - "aws_cloudwatch_event_buses", - "aws_cloudwatch_event_connection", - "aws_cloudwatch_event_source", - "aws_cloudwatch_log_data_protection_policy_document", - "aws_cloudwatch_log_group", - "aws_cloudwatch_log_groups", - "aws_codeartifact_authorization_token", - "aws_codeartifact_repository_endpoint", - "aws_codebuild_fleet", - "aws_codecatalyst_dev_environment", - "aws_codecommit_approval_rule_template", - "aws_codecommit_repository", - "aws_codeguruprofiler_profiling_group", - "aws_codestarconnections_connection", - "aws_cognito_identity_pool", - "aws_cognito_user_group", - "aws_cognito_user_groups", - "aws_cognito_user_pool", - "aws_cognito_user_pool_client", - "aws_cognito_user_pool_clients", - "aws_cognito_user_pool_signing_certificate", - "aws_cognito_user_pools", - "aws_connect_bot_association", - "aws_connect_contact_flow", - "aws_connect_contact_flow_module", - "aws_connect_hours_of_operation", - "aws_connect_instance", - "aws_connect_instance_storage_config", - "aws_connect_lambda_function_association", - "aws_connect_prompt", - "aws_connect_queue", - "aws_connect_quick_connect", - "aws_connect_routing_profile", - "aws_connect_security_profile", - "aws_connect_user", - "aws_connect_user_hierarchy_group", - "aws_connect_user_hierarchy_structure", - "aws_connect_vocabulary", - "aws_controltower_controls", - "aws_cur_report_definition", - "aws_customer_gateway", - "aws_datapipeline_pipeline", - "aws_datapipeline_pipeline_definition", - "aws_datazone_domain", - "aws_datazone_environment_blueprint", - "aws_db_cluster_snapshot", - "aws_db_event_categories", - "aws_db_instance", - "aws_db_instances", - "aws_db_parameter_group", - "aws_db_proxy", - "aws_db_snapshot", - "aws_db_subnet_group", - "aws_default_tags", - "aws_devopsguru_notification_channel", - "aws_devopsguru_resource_collection", - "aws_directory_service_directory", - "aws_dms_certificate", - "aws_dms_endpoint", - "aws_dms_replication_instance", - "aws_dms_replication_subnet_group", - "aws_dms_replication_task", - "aws_docdb_engine_version", - "aws_docdb_orderable_db_instance", - "aws_dx_connection", - "aws_dx_gateway", - "aws_dx_location", - "aws_dx_locations", - "aws_dx_router_configuration", - "aws_dynamodb_table", - "aws_dynamodb_table_item", - "aws_dynamodb_tables", - "aws_ebs_default_kms_key", - "aws_ebs_encryption_by_default", - "aws_ebs_snapshot", - "aws_ebs_snapshot_ids", - "aws_ebs_volume", - "aws_ebs_volumes", - "aws_ec2_capacity_block_offering", - "aws_ec2_client_vpn_endpoint", - "aws_ec2_coip_pool", - "aws_ec2_coip_pools", - "aws_ec2_host", - "aws_ec2_instance_type", - "aws_ec2_instance_type_offering", - "aws_ec2_instance_type_offerings", - "aws_ec2_instance_types", - "aws_ec2_local_gateway", - "aws_ec2_local_gateway_route_table", - "aws_ec2_local_gateway_route_tables", - "aws_ec2_local_gateway_virtual_interface", - "aws_ec2_local_gateway_virtual_interface_group", - "aws_ec2_local_gateway_virtual_interface_groups", - "aws_ec2_local_gateways", - "aws_ec2_managed_prefix_list", - "aws_ec2_managed_prefix_lists", - "aws_ec2_network_insights_analysis", - "aws_ec2_network_insights_path", - "aws_ec2_public_ipv4_pool", - "aws_ec2_public_ipv4_pools", - "aws_ec2_serial_console_access", - "aws_ec2_spot_price", - "aws_ec2_transit_gateway", - "aws_ec2_transit_gateway_attachment", - "aws_ec2_transit_gateway_attachments", - "aws_ec2_transit_gateway_connect", - "aws_ec2_transit_gateway_connect_peer", - "aws_ec2_transit_gateway_dx_gateway_attachment", - "aws_ec2_transit_gateway_multicast_domain", - "aws_ec2_transit_gateway_peering_attachment", - "aws_ec2_transit_gateway_peering_attachments", - "aws_ec2_transit_gateway_route_table", - "aws_ec2_transit_gateway_route_table_associations", - "aws_ec2_transit_gateway_route_table_propagations", - "aws_ec2_transit_gateway_route_table_routes", - "aws_ec2_transit_gateway_route_tables", - "aws_ec2_transit_gateway_vpc_attachment", - "aws_ec2_transit_gateway_vpc_attachments", - "aws_ec2_transit_gateway_vpn_attachment", - "aws_ecr_authorization_token", - "aws_ecr_image", - "aws_ecr_lifecycle_policy_document", - "aws_ecr_pull_through_cache_rule", - "aws_ecr_repositories", - "aws_ecr_repository", - "aws_ecr_repository_creation_template", - "aws_ecrpublic_authorization_token", - "aws_ecs_cluster", - "aws_ecs_clusters", - "aws_ecs_container_definition", - "aws_ecs_service", - "aws_ecs_task_definition", - "aws_ecs_task_execution", - "aws_efs_access_point", - "aws_efs_access_points", - "aws_efs_file_system", - "aws_efs_mount_target", - "aws_eip", - "aws_eips", - "aws_eks_access_entry", - "aws_eks_addon", - "aws_eks_addon_version", - "aws_eks_cluster", - "aws_eks_cluster_auth", - "aws_eks_cluster_versions", - "aws_eks_clusters", - "aws_eks_node_group", - "aws_eks_node_groups", - "aws_elastic_beanstalk_application", - "aws_elastic_beanstalk_hosted_zone", - "aws_elastic_beanstalk_solution_stack", - "aws_elasticache_cluster", - "aws_elasticache_replication_group", - "aws_elasticache_reserved_cache_node_offering", - "aws_elasticache_serverless_cache", - "aws_elasticache_user", - "aws_elasticsearch_domain", - "aws_elb", - "aws_elb_hosted_zone_id", - "aws_elb_service_account", - "aws_emr_release_labels", - "aws_emr_supported_instance_types", - "aws_emrcontainers_virtual_cluster", - "aws_fis_experiment_templates", - "aws_fsx_ontap_file_system", - "aws_fsx_ontap_storage_virtual_machine", - "aws_fsx_ontap_storage_virtual_machines", - "aws_fsx_openzfs_snapshot", - "aws_fsx_windows_file_system", - "aws_globalaccelerator_accelerator", - "aws_globalaccelerator_custom_routing_accelerator", - "aws_glue_catalog_table", - "aws_glue_connection", - "aws_glue_data_catalog_encryption_settings", - "aws_glue_registry", - "aws_glue_script", - "aws_grafana_workspace", - "aws_guardduty_detector", - "aws_guardduty_finding_ids", - "aws_iam_access_keys", - "aws_iam_account_alias", - "aws_iam_group", - "aws_iam_instance_profile", - "aws_iam_instance_profiles", - "aws_iam_openid_connect_provider", - "aws_iam_policy", - "aws_iam_policy_document", - "aws_iam_principal_policy_simulation", - "aws_iam_role", - "aws_iam_roles", - "aws_iam_saml_provider", - "aws_iam_server_certificate", - "aws_iam_session_context", - "aws_iam_user", - "aws_iam_user_ssh_key", - "aws_iam_users", - "aws_identitystore_group", - "aws_identitystore_group_memberships", - "aws_identitystore_groups", - "aws_identitystore_user", - "aws_identitystore_users", - "aws_imagebuilder_component", - "aws_imagebuilder_components", - "aws_imagebuilder_container_recipe", - "aws_imagebuilder_container_recipes", - "aws_imagebuilder_distribution_configuration", - "aws_imagebuilder_distribution_configurations", - "aws_imagebuilder_image", - "aws_imagebuilder_image_pipeline", - "aws_imagebuilder_image_pipelines", - "aws_imagebuilder_image_recipe", - "aws_imagebuilder_image_recipes", - "aws_imagebuilder_infrastructure_configuration", - "aws_imagebuilder_infrastructure_configurations", - "aws_inspector_rules_packages", - "aws_instance", - "aws_instances", - "aws_internet_gateway", - "aws_iot_endpoint", - "aws_iot_registration_code", - "aws_ip_ranges", - "aws_ivs_stream_key", - "aws_kendra_experience", - "aws_kendra_faq", - "aws_kendra_index", - "aws_kendra_query_suggestions_block_list", - "aws_kendra_thesaurus", - "aws_key_pair", - "aws_kinesis_firehose_delivery_stream", - "aws_kinesis_stream", - "aws_kinesis_stream_consumer", - "aws_kms_alias", - "aws_kms_ciphertext", - "aws_kms_custom_key_store", - "aws_kms_key", - "aws_kms_public_key", - "aws_kms_secret", - "aws_kms_secrets", - "aws_lakeformation_data_lake_settings", - "aws_lakeformation_permissions", - "aws_lakeformation_resource", - "aws_lambda_alias", - "aws_lambda_code_signing_config", - "aws_lambda_function", - "aws_lambda_function_url", - "aws_lambda_functions", - "aws_lambda_invocation", - "aws_lambda_layer_version", - "aws_launch_configuration", - "aws_launch_template", - "aws_lb", - "aws_lb_hosted_zone_id", - "aws_lb_listener", - "aws_lb_listener_rule", - "aws_lb_target_group", - "aws_lb_trust_store", - "aws_lbs", - "aws_lex_bot", - "aws_lex_bot_alias", - "aws_lex_intent", - "aws_lex_slot_type", - "aws_licensemanager_grants", - "aws_licensemanager_received_license", - "aws_licensemanager_received_licenses", - "aws_location_geofence_collection", - "aws_location_map", - "aws_location_place_index", - "aws_location_route_calculator", - "aws_location_tracker", - "aws_location_tracker_association", - "aws_location_tracker_associations", - "aws_medialive_input", - "aws_mq_broker", - "aws_mq_broker_engine_types", - "aws_mq_broker_instance_type_offerings", - "aws_msk_bootstrap_brokers", - "aws_msk_broker_nodes", - "aws_msk_cluster", - "aws_msk_configuration", - "aws_msk_kafka_version", - "aws_msk_vpc_connection", - "aws_mskconnect_connector", - "aws_mskconnect_custom_plugin", - "aws_mskconnect_worker_configuration", - "aws_nat_gateway", - "aws_nat_gateways", - "aws_neptune_engine_version", - "aws_neptune_orderable_db_instance", - "aws_network_acls", - "aws_network_interface", - "aws_network_interfaces", - "aws_networkfirewall_firewall", - "aws_networkfirewall_firewall_policy", - "aws_networkfirewall_resource_policy", - "aws_networkmanager_connection", - "aws_networkmanager_connections", - "aws_networkmanager_core_network_policy_document", - "aws_networkmanager_device", - "aws_networkmanager_devices", - "aws_networkmanager_global_network", - "aws_networkmanager_global_networks", - "aws_networkmanager_link", - "aws_networkmanager_links", - "aws_networkmanager_site", - "aws_networkmanager_sites", - "aws_oam_link", - "aws_oam_links", - "aws_oam_sink", - "aws_oam_sinks", - "aws_opensearch_domain", - "aws_opensearchserverless_access_policy", - "aws_opensearchserverless_collection", - "aws_opensearchserverless_lifecycle_policy", - "aws_opensearchserverless_security_config", - "aws_opensearchserverless_security_policy", - "aws_opensearchserverless_vpc_endpoint", - "aws_organizations_delegated_administrators", - "aws_organizations_delegated_services", - "aws_organizations_organization", - "aws_organizations_organizational_unit", - "aws_organizations_organizational_unit_child_accounts", - "aws_organizations_organizational_unit_descendant_accounts", - "aws_organizations_organizational_unit_descendant_organizational_units", - "aws_organizations_organizational_units", - "aws_organizations_policies", - "aws_organizations_policies_for_target", - "aws_organizations_policy", - "aws_organizations_resource_tags", - "aws_outposts_asset", - "aws_outposts_assets", - "aws_outposts_outpost", - "aws_outposts_outpost_instance_type", - "aws_outposts_outpost_instance_types", - "aws_outposts_outposts", - "aws_outposts_site", - "aws_outposts_sites", - "aws_partition", - "aws_polly_voices", - "aws_prefix_list", - "aws_pricing_product", - "aws_prometheus_default_scraper_configuration", - "aws_prometheus_workspace", - "aws_prometheus_workspaces", - "aws_qldb_ledger", - "aws_quicksight_analysis", - "aws_quicksight_data_set", - "aws_quicksight_group", - "aws_quicksight_theme", - "aws_quicksight_user", - "aws_ram_resource_share", - "aws_rds_certificate", - "aws_rds_cluster", - "aws_rds_cluster_parameter_group", - "aws_rds_clusters", - "aws_rds_engine_version", - "aws_rds_orderable_db_instance", - "aws_rds_reserved_instance_offering", - "aws_redshift_cluster", - "aws_redshift_cluster_credentials", - "aws_redshift_data_shares", - "aws_redshift_orderable_cluster", - "aws_redshift_producer_data_shares", - "aws_redshift_service_account", - "aws_redshift_subnet_group", - "aws_redshiftserverless_credentials", - "aws_redshiftserverless_namespace", - "aws_redshiftserverless_workgroup", - "aws_region", - "aws_regions", - "aws_resourceexplorer2_search", - "aws_resourcegroupstaggingapi_resources", - "aws_route", - "aws_route53_delegation_set", - "aws_route53_records", - "aws_route53_resolver_endpoint", - "aws_route53_resolver_firewall_config", - "aws_route53_resolver_firewall_domain_list", - "aws_route53_resolver_firewall_rule_group", - "aws_route53_resolver_firewall_rule_group_association", - "aws_route53_resolver_firewall_rules", - "aws_route53_resolver_query_log_config", - "aws_route53_resolver_rule", - "aws_route53_resolver_rules", - "aws_route53_traffic_policy_document", - "aws_route53_zone", - "aws_route53_zones", - "aws_route53profiles_profiles", - "aws_route_table", - "aws_route_tables", - "aws_s3_account_public_access_block", - "aws_s3_bucket", - "aws_s3_bucket_object", - "aws_s3_bucket_objects", - "aws_s3_bucket_policy", - "aws_s3_directory_buckets", - "aws_s3_object", - "aws_s3_objects", - "aws_s3control_multi_region_access_point", - "aws_sagemaker_prebuilt_ecr_image", - "aws_secretsmanager_random_password", - "aws_secretsmanager_secret", - "aws_secretsmanager_secret_rotation", - "aws_secretsmanager_secret_version", - "aws_secretsmanager_secret_versions", - "aws_secretsmanager_secrets", - "aws_security_group", - "aws_security_groups", - "aws_serverlessapplicationrepository_application", - "aws_service", - "aws_service_discovery_dns_namespace", - "aws_service_discovery_http_namespace", - "aws_service_discovery_service", - "aws_service_principal", - "aws_servicecatalog_constraint", - "aws_servicecatalog_launch_paths", - "aws_servicecatalog_portfolio", - "aws_servicecatalog_portfolio_constraints", - "aws_servicecatalog_product", - "aws_servicecatalog_provisioning_artifacts", - "aws_servicecatalogappregistry_application", - "aws_servicecatalogappregistry_attribute_group", - "aws_servicecatalogappregistry_attribute_group_associations", - "aws_servicequotas_service", - "aws_servicequotas_service_quota", - "aws_servicequotas_templates", - "aws_ses_active_receipt_rule_set", - "aws_ses_domain_identity", - "aws_ses_email_identity", - "aws_sesv2_configuration_set", - "aws_sesv2_dedicated_ip_pool", - "aws_sesv2_email_identity", - "aws_sesv2_email_identity_mail_from_attributes", - "aws_sfn_activity", - "aws_sfn_alias", - "aws_sfn_state_machine", - "aws_sfn_state_machine_versions", - "aws_shield_protection", - "aws_signer_signing_job", - "aws_signer_signing_profile", - "aws_sns_topic", - "aws_spot_datafeed_subscription", - "aws_sqs_queue", - "aws_sqs_queues", - "aws_ssm_document", - "aws_ssm_instances", - "aws_ssm_maintenance_windows", - "aws_ssm_parameter", - "aws_ssm_parameters_by_path", - "aws_ssm_patch_baseline", - "aws_ssm_patch_baselines", - "aws_ssmcontacts_contact", - "aws_ssmcontacts_contact_channel", - "aws_ssmcontacts_plan", - "aws_ssmcontacts_rotation", - "aws_ssmincidents_replication_set", - "aws_ssmincidents_response_plan", - "aws_ssoadmin_application", - "aws_ssoadmin_application_assignments", - "aws_ssoadmin_application_providers", - "aws_ssoadmin_instances", - "aws_ssoadmin_permission_set", - "aws_ssoadmin_permission_sets", - "aws_ssoadmin_principal_application_assignments", - "aws_storagegateway_local_disk", - "aws_subnet", - "aws_subnet_ids", - "aws_subnets", - "aws_synthetics_runtime_version", - "aws_synthetics_runtime_versions", - "aws_timestreamwrite_database", - "aws_timestreamwrite_table", - "aws_transfer_connector", - "aws_transfer_server", - "aws_verifiedpermissions_policy_store", - "aws_vpc", - "aws_vpc_dhcp_options", - "aws_vpc_endpoint", - "aws_vpc_endpoint_associations", - "aws_vpc_endpoint_service", - "aws_vpc_ipam", - "aws_vpc_ipam_pool", - "aws_vpc_ipam_pool_cidrs", - "aws_vpc_ipam_pools", - "aws_vpc_ipam_preview_next_cidr", - "aws_vpc_ipams", - "aws_vpc_peering_connection", - "aws_vpc_peering_connections", - "aws_vpc_security_group_rule", - "aws_vpc_security_group_rules", - "aws_vpclattice_auth_policy", - "aws_vpclattice_listener", - "aws_vpclattice_resource_policy", - "aws_vpclattice_service", - "aws_vpclattice_service_network", - "aws_vpcs", - "aws_vpn_gateway", - "aws_waf_ipset", - "aws_waf_rate_based_rule", - "aws_waf_rule", - "aws_waf_subscribed_rule_group", - "aws_waf_web_acl", - "aws_wafregional_ipset", - "aws_wafregional_rate_based_rule", - "aws_wafregional_rule", - "aws_wafregional_subscribed_rule_group", - "aws_wafregional_web_acl", - "aws_wafv2_ip_set", - "aws_wafv2_regex_pattern_set", - "aws_wafv2_rule_group", - "aws_wafv2_web_acl", - "aws_workspaces_bundle", - "aws_workspaces_directory", - "aws_workspaces_image" - ], - "resources": [ - "aws_accessanalyzer_analyzer", - "aws_accessanalyzer_archive_rule", - "aws_account_alternate_contact", - "aws_account_primary_contact", - "aws_account_region", - "aws_acm_certificate", - "aws_acm_certificate_validation", - "aws_acmpca_certificate", - "aws_acmpca_certificate_authority", - "aws_acmpca_certificate_authority_certificate", - "aws_acmpca_permission", - "aws_acmpca_policy", - "aws_alb", - "aws_ami", - "aws_ami_copy", - "aws_ami_from_instance", - "aws_ami_launch_permission", - "aws_amplify_app", - "aws_amplify_backend_environment", - "aws_amplify_branch", - "aws_amplify_domain_association", - "aws_amplify_webhook", - "aws_api_gateway_account", - "aws_api_gateway_api_key", - "aws_api_gateway_authorizer", - "aws_api_gateway_base_path_mapping", - "aws_api_gateway_client_certificate", - "aws_api_gateway_deployment", - "aws_api_gateway_documentation_part", - "aws_api_gateway_documentation_version", - "aws_api_gateway_domain_name", - "aws_api_gateway_domain_name_access_association", - "aws_api_gateway_gateway_response", - "aws_api_gateway_integration", - "aws_api_gateway_integration_response", - "aws_api_gateway_method", - "aws_api_gateway_method_response", - "aws_api_gateway_method_settings", - "aws_api_gateway_model", - "aws_api_gateway_request_validator", - "aws_api_gateway_resource", - "aws_api_gateway_rest_api", - "aws_api_gateway_rest_api_policy", - "aws_api_gateway_rest_api_put", - "aws_api_gateway_stage", - "aws_api_gateway_usage_plan", - "aws_api_gateway_usage_plan_key", - "aws_api_gateway_vpc_link", - "aws_apigatewayv2_api", - "aws_apigatewayv2_api_mapping", - "aws_apigatewayv2_authorizer", - "aws_apigatewayv2_deployment", - "aws_apigatewayv2_domain_name", - "aws_apigatewayv2_integration", - "aws_apigatewayv2_integration_response", - "aws_apigatewayv2_model", - "aws_apigatewayv2_route", - "aws_apigatewayv2_route_response", - "aws_apigatewayv2_stage", - "aws_apigatewayv2_vpc_link", - "aws_app_cookie_stickiness_policy", - "aws_appautoscaling_policy", - "aws_appautoscaling_scheduled_action", - "aws_appautoscaling_target", - "aws_appconfig_application", - "aws_appconfig_configuration_profile", - "aws_appconfig_deployment", - "aws_appconfig_deployment_strategy", - "aws_appconfig_environment", - "aws_appconfig_extension", - "aws_appconfig_extension_association", - "aws_appconfig_hosted_configuration_version", - "aws_appfabric_app_authorization", - "aws_appfabric_app_authorization_connection", - "aws_appfabric_app_bundle", - "aws_appfabric_ingestion", - "aws_appfabric_ingestion_destination", - "aws_appflow_connector_profile", - "aws_appflow_flow", - "aws_appintegrations_data_integration", - "aws_appintegrations_event_integration", - "aws_applicationinsights_application", - "aws_appmesh_gateway_route", - "aws_appmesh_mesh", - "aws_appmesh_route", - "aws_appmesh_virtual_gateway", - "aws_appmesh_virtual_node", - "aws_appmesh_virtual_router", - "aws_appmesh_virtual_service", - "aws_apprunner_auto_scaling_configuration_version", - "aws_apprunner_connection", - "aws_apprunner_custom_domain_association", - "aws_apprunner_default_auto_scaling_configuration_version", - "aws_apprunner_deployment", - "aws_apprunner_observability_configuration", - "aws_apprunner_service", - "aws_apprunner_vpc_connector", - "aws_apprunner_vpc_ingress_connection", - "aws_appstream_directory_config", - "aws_appstream_fleet", - "aws_appstream_fleet_stack_association", - "aws_appstream_image_builder", - "aws_appstream_stack", - "aws_appstream_user", - "aws_appstream_user_stack_association", - "aws_appsync_api_cache", - "aws_appsync_api_key", - "aws_appsync_datasource", - "aws_appsync_domain_name", - "aws_appsync_domain_name_api_association", - "aws_appsync_function", - "aws_appsync_graphql_api", - "aws_appsync_resolver", - "aws_appsync_source_api_association", - "aws_appsync_type", - "aws_athena_capacity_reservation", - "aws_athena_data_catalog", - "aws_athena_database", - "aws_athena_named_query", - "aws_athena_prepared_statement", - "aws_athena_workgroup", - "aws_auditmanager_account_registration", - "aws_auditmanager_assessment", - "aws_auditmanager_assessment_delegation", - "aws_auditmanager_assessment_report", - "aws_auditmanager_control", - "aws_auditmanager_framework", - "aws_auditmanager_framework_share", - "aws_auditmanager_organization_admin_account_registration", - "aws_autoscaling_attachment", - "aws_autoscaling_group", - "aws_autoscaling_group_tag", - "aws_autoscaling_lifecycle_hook", - "aws_autoscaling_notification", - "aws_autoscaling_policy", - "aws_autoscaling_schedule", - "aws_autoscaling_traffic_source_attachment", - "aws_autoscalingplans_scaling_plan", - "aws_backup_framework", - "aws_backup_global_settings", - "aws_backup_logically_air_gapped_vault", - "aws_backup_plan", - "aws_backup_region_settings", - "aws_backup_report_plan", - "aws_backup_selection", - "aws_backup_vault", - "aws_backup_vault_lock_configuration", - "aws_backup_vault_notifications", - "aws_backup_vault_policy", - "aws_batch_compute_environment", - "aws_batch_job_definition", - "aws_batch_job_queue", - "aws_batch_scheduling_policy", - "aws_bcmdataexports_export", - "aws_bedrock_custom_model", - "aws_bedrock_guardrail", - "aws_bedrock_guardrail_version", - "aws_bedrock_inference_profile", - "aws_bedrock_model_invocation_logging_configuration", - "aws_bedrock_provisioned_model_throughput", - "aws_bedrockagent_agent", - "aws_bedrockagent_agent_action_group", - "aws_bedrockagent_agent_alias", - "aws_bedrockagent_agent_collaborator", - "aws_bedrockagent_agent_knowledge_base_association", - "aws_bedrockagent_data_source", - "aws_bedrockagent_knowledge_base", - "aws_bedrockagent_prompt", - "aws_budgets_budget", - "aws_budgets_budget_action", - "aws_ce_anomaly_monitor", - "aws_ce_anomaly_subscription", - "aws_ce_cost_allocation_tag", - "aws_ce_cost_category", - "aws_chatbot_slack_channel_configuration", - "aws_chatbot_teams_channel_configuration", - "aws_chime_voice_connector", - "aws_chime_voice_connector_group", - "aws_chime_voice_connector_logging", - "aws_chime_voice_connector_origination", - "aws_chime_voice_connector_streaming", - "aws_chime_voice_connector_termination", - "aws_chime_voice_connector_termination_credentials", - "aws_chimesdkmediapipelines_media_insights_pipeline_configuration", - "aws_chimesdkvoice_global_settings", - "aws_chimesdkvoice_sip_media_application", - "aws_chimesdkvoice_sip_rule", - "aws_chimesdkvoice_voice_profile_domain", - "aws_cleanrooms_collaboration", - "aws_cleanrooms_configured_table", - "aws_cleanrooms_membership", - "aws_cloud9_environment_ec2", - "aws_cloud9_environment_membership", - "aws_cloudcontrolapi_resource", - "aws_cloudformation_stack", - "aws_cloudformation_stack_instances", - "aws_cloudformation_stack_set", - "aws_cloudformation_stack_set_instance", - "aws_cloudformation_type", - "aws_cloudfront_cache_policy", - "aws_cloudfront_continuous_deployment_policy", - "aws_cloudfront_distribution", - "aws_cloudfront_field_level_encryption_config", - "aws_cloudfront_field_level_encryption_profile", - "aws_cloudfront_function", - "aws_cloudfront_key_group", - "aws_cloudfront_key_value_store", - "aws_cloudfront_monitoring_subscription", - "aws_cloudfront_origin_access_control", - "aws_cloudfront_origin_access_identity", - "aws_cloudfront_origin_request_policy", - "aws_cloudfront_public_key", - "aws_cloudfront_realtime_log_config", - "aws_cloudfront_response_headers_policy", - "aws_cloudfront_vpc_origin", - "aws_cloudfrontkeyvaluestore_key", - "aws_cloudfrontkeyvaluestore_keys_exclusive", - "aws_cloudhsm_v2_cluster", - "aws_cloudhsm_v2_hsm", - "aws_cloudsearch_domain", - "aws_cloudsearch_domain_service_access_policy", - "aws_cloudtrail", - "aws_cloudtrail_event_data_store", - "aws_cloudtrail_organization_delegated_admin_account", - "aws_cloudwatch_composite_alarm", - "aws_cloudwatch_contributor_insight_rule", - "aws_cloudwatch_contributor_managed_insight_rule", - "aws_cloudwatch_dashboard", - "aws_cloudwatch_event_api_destination", - "aws_cloudwatch_event_archive", - "aws_cloudwatch_event_bus", - "aws_cloudwatch_event_bus_policy", - "aws_cloudwatch_event_connection", - "aws_cloudwatch_event_endpoint", - "aws_cloudwatch_event_permission", - "aws_cloudwatch_event_rule", - "aws_cloudwatch_event_target", - "aws_cloudwatch_log_account_policy", - "aws_cloudwatch_log_anomaly_detector", - "aws_cloudwatch_log_data_protection_policy", - "aws_cloudwatch_log_delivery", - "aws_cloudwatch_log_delivery_destination", - "aws_cloudwatch_log_delivery_destination_policy", - "aws_cloudwatch_log_delivery_source", - "aws_cloudwatch_log_destination", - "aws_cloudwatch_log_destination_policy", - "aws_cloudwatch_log_group", - "aws_cloudwatch_log_index_policy", - "aws_cloudwatch_log_metric_filter", - "aws_cloudwatch_log_resource_policy", - "aws_cloudwatch_log_stream", - "aws_cloudwatch_log_subscription_filter", - "aws_cloudwatch_metric_alarm", - "aws_cloudwatch_metric_stream", - "aws_cloudwatch_query_definition", - "aws_codeartifact_domain", - "aws_codeartifact_domain_permissions_policy", - "aws_codeartifact_repository", - "aws_codeartifact_repository_permissions_policy", - "aws_codebuild_fleet", - "aws_codebuild_project", - "aws_codebuild_report_group", - "aws_codebuild_resource_policy", - "aws_codebuild_source_credential", - "aws_codebuild_webhook", - "aws_codecatalyst_dev_environment", - "aws_codecatalyst_project", - "aws_codecatalyst_source_repository", - "aws_codecommit_approval_rule_template", - "aws_codecommit_approval_rule_template_association", - "aws_codecommit_repository", - "aws_codecommit_trigger", - "aws_codeconnections_connection", - "aws_codeconnections_host", - "aws_codedeploy_app", - "aws_codedeploy_deployment_config", - "aws_codedeploy_deployment_group", - "aws_codeguruprofiler_profiling_group", - "aws_codegurureviewer_repository_association", - "aws_codepipeline", - "aws_codepipeline_custom_action_type", - "aws_codepipeline_webhook", - "aws_codestarconnections_connection", - "aws_codestarconnections_host", - "aws_codestarnotifications_notification_rule", - "aws_cognito_identity_pool", - "aws_cognito_identity_pool_provider_principal_tag", - "aws_cognito_identity_pool_roles_attachment", - "aws_cognito_identity_provider", - "aws_cognito_managed_user_pool_client", - "aws_cognito_resource_server", - "aws_cognito_risk_configuration", - "aws_cognito_user", - "aws_cognito_user_group", - "aws_cognito_user_in_group", - "aws_cognito_user_pool", - "aws_cognito_user_pool_client", - "aws_cognito_user_pool_domain", - "aws_cognito_user_pool_ui_customization", - "aws_comprehend_document_classifier", - "aws_comprehend_entity_recognizer", - "aws_computeoptimizer_enrollment_status", - "aws_computeoptimizer_recommendation_preferences", - "aws_config_aggregate_authorization", - "aws_config_config_rule", - "aws_config_configuration_aggregator", - "aws_config_configuration_recorder", - "aws_config_configuration_recorder_status", - "aws_config_conformance_pack", - "aws_config_delivery_channel", - "aws_config_organization_conformance_pack", - "aws_config_organization_custom_policy_rule", - "aws_config_organization_custom_rule", - "aws_config_organization_managed_rule", - "aws_config_remediation_configuration", - "aws_config_retention_configuration", - "aws_connect_bot_association", - "aws_connect_contact_flow", - "aws_connect_contact_flow_module", - "aws_connect_hours_of_operation", - "aws_connect_instance", - "aws_connect_instance_storage_config", - "aws_connect_lambda_function_association", - "aws_connect_phone_number", - "aws_connect_queue", - "aws_connect_quick_connect", - "aws_connect_routing_profile", - "aws_connect_security_profile", - "aws_connect_user", - "aws_connect_user_hierarchy_group", - "aws_connect_user_hierarchy_structure", - "aws_connect_vocabulary", - "aws_controltower_control", - "aws_controltower_landing_zone", - "aws_costoptimizationhub_enrollment_status", - "aws_costoptimizationhub_preferences", - "aws_cur_report_definition", - "aws_customer_gateway", - "aws_customerprofiles_domain", - "aws_customerprofiles_profile", - "aws_dataexchange_data_set", - "aws_dataexchange_event_action", - "aws_dataexchange_revision", - "aws_dataexchange_revision_assets", - "aws_datapipeline_pipeline", - "aws_datapipeline_pipeline_definition", - "aws_datasync_agent", - "aws_datasync_location_azure_blob", - "aws_datasync_location_efs", - "aws_datasync_location_fsx_lustre_file_system", - "aws_datasync_location_fsx_ontap_file_system", - "aws_datasync_location_fsx_openzfs_file_system", - "aws_datasync_location_fsx_windows_file_system", - "aws_datasync_location_hdfs", - "aws_datasync_location_nfs", - "aws_datasync_location_object_storage", - "aws_datasync_location_s3", - "aws_datasync_location_smb", - "aws_datasync_task", - "aws_datazone_asset_type", - "aws_datazone_domain", - "aws_datazone_environment", - "aws_datazone_environment_blueprint_configuration", - "aws_datazone_environment_profile", - "aws_datazone_form_type", - "aws_datazone_glossary", - "aws_datazone_glossary_term", - "aws_datazone_project", - "aws_datazone_user_profile", - "aws_dax_cluster", - "aws_dax_parameter_group", - "aws_dax_subnet_group", - "aws_db_cluster_snapshot", - "aws_db_event_subscription", - "aws_db_instance", - "aws_db_instance_automated_backups_replication", - "aws_db_instance_role_association", - "aws_db_option_group", - "aws_db_parameter_group", - "aws_db_proxy", - "aws_db_proxy_default_target_group", - "aws_db_proxy_endpoint", - "aws_db_proxy_target", - "aws_db_snapshot", - "aws_db_snapshot_copy", - "aws_db_subnet_group", - "aws_default_network_acl", - "aws_default_route_table", - "aws_default_security_group", - "aws_default_subnet", - "aws_default_vpc", - "aws_default_vpc_dhcp_options", - "aws_detective_graph", - "aws_detective_invitation_accepter", - "aws_detective_member", - "aws_detective_organization_admin_account", - "aws_detective_organization_configuration", - "aws_devicefarm_device_pool", - "aws_devicefarm_instance_profile", - "aws_devicefarm_network_profile", - "aws_devicefarm_project", - "aws_devicefarm_upload", - "aws_devopsguru_event_sources_config", - "aws_devopsguru_notification_channel", - "aws_devopsguru_resource_collection", - "aws_devopsguru_service_integration", - "aws_directory_service_conditional_forwarder", - "aws_directory_service_directory", - "aws_directory_service_log_subscription", - "aws_directory_service_radius_settings", - "aws_directory_service_region", - "aws_directory_service_shared_directory", - "aws_directory_service_shared_directory_accepter", - "aws_directory_service_trust", - "aws_dlm_lifecycle_policy", - "aws_dms_certificate", - "aws_dms_endpoint", - "aws_dms_event_subscription", - "aws_dms_replication_config", - "aws_dms_replication_instance", - "aws_dms_replication_subnet_group", - "aws_dms_replication_task", - "aws_dms_s3_endpoint", - "aws_docdb_cluster", - "aws_docdb_cluster_instance", - "aws_docdb_cluster_parameter_group", - "aws_docdb_cluster_snapshot", - "aws_docdb_event_subscription", - "aws_docdb_global_cluster", - "aws_docdb_subnet_group", - "aws_docdbelastic_cluster", - "aws_drs_replication_configuration_template", - "aws_dsql_cluster", - "aws_dsql_cluster_peering", - "aws_dx_bgp_peer", - "aws_dx_connection", - "aws_dx_connection_association", - "aws_dx_connection_confirmation", - "aws_dx_gateway", - "aws_dx_gateway_association", - "aws_dx_gateway_association_proposal", - "aws_dx_hosted_connection", - "aws_dx_hosted_private_virtual_interface", - "aws_dx_hosted_private_virtual_interface_accepter", - "aws_dx_hosted_public_virtual_interface", - "aws_dx_hosted_public_virtual_interface_accepter", - "aws_dx_hosted_transit_virtual_interface", - "aws_dx_hosted_transit_virtual_interface_accepter", - "aws_dx_lag", - "aws_dx_macsec_key_association", - "aws_dx_private_virtual_interface", - "aws_dx_public_virtual_interface", - "aws_dx_transit_virtual_interface", - "aws_dynamodb_contributor_insights", - "aws_dynamodb_global_table", - "aws_dynamodb_kinesis_streaming_destination", - "aws_dynamodb_resource_policy", - "aws_dynamodb_table", - "aws_dynamodb_table_export", - "aws_dynamodb_table_item", - "aws_dynamodb_table_replica", - "aws_dynamodb_tag", - "aws_ebs_default_kms_key", - "aws_ebs_encryption_by_default", - "aws_ebs_fast_snapshot_restore", - "aws_ebs_snapshot", - "aws_ebs_snapshot_block_public_access", - "aws_ebs_snapshot_copy", - "aws_ebs_snapshot_import", - "aws_ebs_volume", - "aws_ec2_availability_zone_group", - "aws_ec2_capacity_block_reservation", - "aws_ec2_capacity_reservation", - "aws_ec2_carrier_gateway", - "aws_ec2_client_vpn_authorization_rule", - "aws_ec2_client_vpn_endpoint", - "aws_ec2_client_vpn_network_association", - "aws_ec2_client_vpn_route", - "aws_ec2_default_credit_specification", - "aws_ec2_fleet", - "aws_ec2_host", - "aws_ec2_image_block_public_access", - "aws_ec2_instance", - "aws_ec2_instance_connect_endpoint", - "aws_ec2_instance_metadata_defaults", - "aws_ec2_instance_state", - "aws_ec2_local_gateway_route", - "aws_ec2_local_gateway_route_table_vpc_association", - "aws_ec2_managed_prefix_list", - "aws_ec2_managed_prefix_list_entry", - "aws_ec2_network_insights_analysis", - "aws_ec2_network_insights_path", - "aws_ec2_serial_console_access", - "aws_ec2_subnet_cidr_reservation", - "aws_ec2_tag", - "aws_ec2_traffic_mirror_filter", - "aws_ec2_traffic_mirror_filter_rule", - "aws_ec2_traffic_mirror_session", - "aws_ec2_traffic_mirror_target", - "aws_ec2_transit_gateway", - "aws_ec2_transit_gateway_connect", - "aws_ec2_transit_gateway_connect_peer", - "aws_ec2_transit_gateway_default_route_table_association", - "aws_ec2_transit_gateway_default_route_table_propagation", - "aws_ec2_transit_gateway_multicast_domain", - "aws_ec2_transit_gateway_multicast_domain_association", - "aws_ec2_transit_gateway_multicast_group_member", - "aws_ec2_transit_gateway_multicast_group_source", - "aws_ec2_transit_gateway_peering_attachment", - "aws_ec2_transit_gateway_peering_attachment_accepter", - "aws_ec2_transit_gateway_policy_table", - "aws_ec2_transit_gateway_policy_table_association", - "aws_ec2_transit_gateway_prefix_list_reference", - "aws_ec2_transit_gateway_route", - "aws_ec2_transit_gateway_route_table", - "aws_ec2_transit_gateway_route_table_association", - "aws_ec2_transit_gateway_route_table_propagation", - "aws_ec2_transit_gateway_vpc_attachment", - "aws_ec2_transit_gateway_vpc_attachment_accepter", - "aws_ecr_account_setting", - "aws_ecr_lifecycle_policy", - "aws_ecr_pull_through_cache_rule", - "aws_ecr_registry_policy", - "aws_ecr_registry_scanning_configuration", - "aws_ecr_replication_configuration", - "aws_ecr_repository", - "aws_ecr_repository_creation_template", - "aws_ecr_repository_policy", - "aws_ecrpublic_repository", - "aws_ecrpublic_repository_policy", - "aws_ecs_account_setting_default", - "aws_ecs_capacity_provider", - "aws_ecs_cluster", - "aws_ecs_cluster_capacity_providers", - "aws_ecs_service", - "aws_ecs_tag", - "aws_ecs_task_definition", - "aws_ecs_task_set", - "aws_efs_access_point", - "aws_efs_backup_policy", - "aws_efs_file_system", - "aws_efs_file_system_policy", - "aws_efs_mount_target", - "aws_efs_replication_configuration", - "aws_egress_only_internet_gateway", - "aws_eip", - "aws_eip_association", - "aws_eip_domain_name", - "aws_eks_access_entry", - "aws_eks_access_policy_association", - "aws_eks_addon", - "aws_eks_cluster", - "aws_eks_fargate_profile", - "aws_eks_identity_provider_config", - "aws_eks_node_group", - "aws_eks_pod_identity_association", - "aws_elastic_beanstalk_application", - "aws_elastic_beanstalk_application_version", - "aws_elastic_beanstalk_configuration_template", - "aws_elastic_beanstalk_environment", - "aws_elasticache_cluster", - "aws_elasticache_global_replication_group", - "aws_elasticache_parameter_group", - "aws_elasticache_replication_group", - "aws_elasticache_reserved_cache_node", - "aws_elasticache_serverless_cache", - "aws_elasticache_subnet_group", - "aws_elasticache_user", - "aws_elasticache_user_group", - "aws_elasticache_user_group_association", - "aws_elasticsearch_domain", - "aws_elasticsearch_domain_policy", - "aws_elasticsearch_domain_saml_options", - "aws_elasticsearch_vpc_endpoint", - "aws_elastictranscoder_pipeline", - "aws_elastictranscoder_preset", - "aws_elb", - "aws_elb_attachment", - "aws_emr_block_public_access_configuration", - "aws_emr_cluster", - "aws_emr_instance_fleet", - "aws_emr_instance_group", - "aws_emr_managed_scaling_policy", - "aws_emr_security_configuration", - "aws_emr_studio", - "aws_emr_studio_session_mapping", - "aws_emrcontainers_job_template", - "aws_emrcontainers_virtual_cluster", - "aws_emrserverless_application", - "aws_evidently_feature", - "aws_evidently_launch", - "aws_evidently_project", - "aws_evidently_segment", - "aws_finspace_kx_cluster", - "aws_finspace_kx_database", - "aws_finspace_kx_dataview", - "aws_finspace_kx_environment", - "aws_finspace_kx_scaling_group", - "aws_finspace_kx_user", - "aws_finspace_kx_volume", - "aws_fis_experiment_template", - "aws_flow_log", - "aws_fms_admin_account", - "aws_fms_policy", - "aws_fms_resource_set", - "aws_fsx_backup", - "aws_fsx_data_repository_association", - "aws_fsx_file_cache", - "aws_fsx_lustre_file_system", - "aws_fsx_ontap_file_system", - "aws_fsx_ontap_storage_virtual_machine", - "aws_fsx_ontap_volume", - "aws_fsx_openzfs_file_system", - "aws_fsx_openzfs_snapshot", - "aws_fsx_openzfs_volume", - "aws_fsx_windows_file_system", - "aws_gamelift_alias", - "aws_gamelift_build", - "aws_gamelift_fleet", - "aws_gamelift_game_server_group", - "aws_gamelift_game_session_queue", - "aws_gamelift_script", - "aws_glacier_vault", - "aws_glacier_vault_lock", - "aws_globalaccelerator_accelerator", - "aws_globalaccelerator_cross_account_attachment", - "aws_globalaccelerator_custom_routing_accelerator", - "aws_globalaccelerator_custom_routing_endpoint_group", - "aws_globalaccelerator_custom_routing_listener", - "aws_globalaccelerator_endpoint_group", - "aws_globalaccelerator_listener", - "aws_glue_catalog_database", - "aws_glue_catalog_table", - "aws_glue_catalog_table_optimizer", - "aws_glue_classifier", - "aws_glue_connection", - "aws_glue_crawler", - "aws_glue_data_catalog_encryption_settings", - "aws_glue_data_quality_ruleset", - "aws_glue_dev_endpoint", - "aws_glue_job", - "aws_glue_ml_transform", - "aws_glue_partition", - "aws_glue_partition_index", - "aws_glue_registry", - "aws_glue_resource_policy", - "aws_glue_schema", - "aws_glue_security_configuration", - "aws_glue_trigger", - "aws_glue_user_defined_function", - "aws_glue_workflow", - "aws_grafana_license_association", - "aws_grafana_role_association", - "aws_grafana_workspace", - "aws_grafana_workspace_api_key", - "aws_grafana_workspace_saml_configuration", - "aws_grafana_workspace_service_account", - "aws_grafana_workspace_service_account_token", - "aws_guardduty_detector", - "aws_guardduty_detector_feature", - "aws_guardduty_filter", - "aws_guardduty_invite_accepter", - "aws_guardduty_ipset", - "aws_guardduty_malware_protection_plan", - "aws_guardduty_member", - "aws_guardduty_member_detector_feature", - "aws_guardduty_organization_admin_account", - "aws_guardduty_organization_configuration", - "aws_guardduty_organization_configuration_feature", - "aws_guardduty_publishing_destination", - "aws_guardduty_threatintelset", - "aws_iam_access_key", - "aws_iam_account_alias", - "aws_iam_account_password_policy", - "aws_iam_group", - "aws_iam_group_membership", - "aws_iam_group_policies_exclusive", - "aws_iam_group_policy", - "aws_iam_group_policy_attachment", - "aws_iam_group_policy_attachments_exclusive", - "aws_iam_instance_profile", - "aws_iam_openid_connect_provider", - "aws_iam_organizations_features", - "aws_iam_policy", - "aws_iam_policy_attachment", - "aws_iam_role", - "aws_iam_role_policies_exclusive", - "aws_iam_role_policy", - "aws_iam_role_policy_attachment", - "aws_iam_role_policy_attachments_exclusive", - "aws_iam_saml_provider", - "aws_iam_security_token_service_preferences", - "aws_iam_server_certificate", - "aws_iam_service_linked_role", - "aws_iam_service_specific_credential", - "aws_iam_signing_certificate", - "aws_iam_user", - "aws_iam_user_group_membership", - "aws_iam_user_login_profile", - "aws_iam_user_policies_exclusive", - "aws_iam_user_policy", - "aws_iam_user_policy_attachment", - "aws_iam_user_policy_attachments_exclusive", - "aws_iam_user_ssh_key", - "aws_iam_virtual_mfa_device", - "aws_identitystore_group", - "aws_identitystore_group_membership", - "aws_identitystore_user", - "aws_imagebuilder_component", - "aws_imagebuilder_container_recipe", - "aws_imagebuilder_distribution_configuration", - "aws_imagebuilder_image", - "aws_imagebuilder_image_pipeline", - "aws_imagebuilder_image_recipe", - "aws_imagebuilder_infrastructure_configuration", - "aws_imagebuilder_lifecycle_policy", - "aws_imagebuilder_workflow", - "aws_inspector2_delegated_admin_account", - "aws_inspector2_enabler", - "aws_inspector2_filter", - "aws_inspector2_member_association", - "aws_inspector2_organization_configuration", - "aws_inspector_assessment_target", - "aws_inspector_assessment_template", - "aws_inspector_resource_group", - "aws_instance", - "aws_internet_gateway", - "aws_internet_gateway_attachment", - "aws_internetmonitor_monitor", - "aws_iot_authorizer", - "aws_iot_billing_group", - "aws_iot_ca_certificate", - "aws_iot_certificate", - "aws_iot_domain_configuration", - "aws_iot_event_configurations", - "aws_iot_indexing_configuration", - "aws_iot_logging_options", - "aws_iot_policy", - "aws_iot_policy_attachment", - "aws_iot_provisioning_template", - "aws_iot_role_alias", - "aws_iot_thing", - "aws_iot_thing_group", - "aws_iot_thing_group_membership", - "aws_iot_thing_principal_attachment", - "aws_iot_thing_type", - "aws_iot_topic_rule", - "aws_iot_topic_rule_destination", - "aws_ivs_channel", - "aws_ivs_playback_key_pair", - "aws_ivs_recording_configuration", - "aws_ivschat_logging_configuration", - "aws_ivschat_room", - "aws_kendra_data_source", - "aws_kendra_experience", - "aws_kendra_faq", - "aws_kendra_index", - "aws_kendra_query_suggestions_block_list", - "aws_kendra_thesaurus", - "aws_key_pair", - "aws_keyspaces_keyspace", - "aws_keyspaces_table", - "aws_kinesis_analytics_application", - "aws_kinesis_firehose_delivery_stream", - "aws_kinesis_resource_policy", - "aws_kinesis_stream", - "aws_kinesis_stream_consumer", - "aws_kinesis_video_stream", - "aws_kinesisanalyticsv2_application", - "aws_kinesisanalyticsv2_application_snapshot", - "aws_kms_alias", - "aws_kms_ciphertext", - "aws_kms_custom_key_store", - "aws_kms_external_key", - "aws_kms_grant", - "aws_kms_key", - "aws_kms_key_policy", - "aws_kms_replica_external_key", - "aws_kms_replica_key", - "aws_lakeformation_data_cells_filter", - "aws_lakeformation_data_lake_settings", - "aws_lakeformation_lf_tag", - "aws_lakeformation_opt_in", - "aws_lakeformation_permissions", - "aws_lakeformation_resource", - "aws_lakeformation_resource_lf_tag", - "aws_lakeformation_resource_lf_tags", - "aws_lambda_alias", - "aws_lambda_code_signing_config", - "aws_lambda_event_source_mapping", - "aws_lambda_function", - "aws_lambda_function_event_invoke_config", - "aws_lambda_function_recursion_config", - "aws_lambda_function_url", - "aws_lambda_invocation", - "aws_lambda_layer_version", - "aws_lambda_layer_version_permission", - "aws_lambda_permission", - "aws_lambda_provisioned_concurrency_config", - "aws_lambda_runtime_management_config", - "aws_launch_configuration", - "aws_launch_template", - "aws_lb", - "aws_lb_cookie_stickiness_policy", - "aws_lb_listener", - "aws_lb_listener_certificate", - "aws_lb_listener_rule", - "aws_lb_ssl_negotiation_policy", - "aws_lb_target_group", - "aws_lb_target_group_attachment", - "aws_lb_trust_store", - "aws_lb_trust_store_revocation", - "aws_lex_bot", - "aws_lex_bot_alias", - "aws_lex_intent", - "aws_lex_slot_type", - "aws_lexv2models_bot", - "aws_lexv2models_bot_locale", - "aws_lexv2models_bot_version", - "aws_lexv2models_intent", - "aws_lexv2models_slot", - "aws_lexv2models_slot_type", - "aws_licensemanager_association", - "aws_licensemanager_grant", - "aws_licensemanager_grant_accepter", - "aws_licensemanager_license_configuration", - "aws_lightsail_bucket", - "aws_lightsail_bucket_access_key", - "aws_lightsail_bucket_resource_access", - "aws_lightsail_certificate", - "aws_lightsail_container_service", - "aws_lightsail_container_service_deployment_version", - "aws_lightsail_database", - "aws_lightsail_disk", - "aws_lightsail_disk_attachment", - "aws_lightsail_distribution", - "aws_lightsail_domain", - "aws_lightsail_domain_entry", - "aws_lightsail_instance", - "aws_lightsail_instance_public_ports", - "aws_lightsail_key_pair", - "aws_lightsail_lb", - "aws_lightsail_lb_attachment", - "aws_lightsail_lb_certificate", - "aws_lightsail_lb_certificate_attachment", - "aws_lightsail_lb_https_redirection_policy", - "aws_lightsail_lb_stickiness_policy", - "aws_lightsail_static_ip", - "aws_lightsail_static_ip_attachment", - "aws_load_balancer_backend_server_policy", - "aws_load_balancer_listener_policy", - "aws_load_balancer_policy", - "aws_location_geofence_collection", - "aws_location_map", - "aws_location_place_index", - "aws_location_route_calculator", - "aws_location_tracker", - "aws_location_tracker_association", - "aws_m2_application", - "aws_m2_deployment", - "aws_m2_environment", - "aws_macie2_account", - "aws_macie2_classification_export_configuration", - "aws_macie2_classification_job", - "aws_macie2_custom_data_identifier", - "aws_macie2_findings_filter", - "aws_macie2_invitation_accepter", - "aws_macie2_member", - "aws_macie2_organization_admin_account", - "aws_macie2_organization_configuration", - "aws_main_route_table_association", - "aws_media_convert_queue", - "aws_media_package_channel", - "aws_media_packagev2_channel_group", - "aws_media_store_container", - "aws_media_store_container_policy", - "aws_medialive_channel", - "aws_medialive_input", - "aws_medialive_input_security_group", - "aws_medialive_multiplex", - "aws_medialive_multiplex_program", - "aws_memorydb_acl", - "aws_memorydb_cluster", - "aws_memorydb_multi_region_cluster", - "aws_memorydb_parameter_group", - "aws_memorydb_snapshot", - "aws_memorydb_subnet_group", - "aws_memorydb_user", - "aws_mq_broker", - "aws_mq_configuration", - "aws_msk_cluster", - "aws_msk_cluster_policy", - "aws_msk_configuration", - "aws_msk_replicator", - "aws_msk_scram_secret_association", - "aws_msk_serverless_cluster", - "aws_msk_single_scram_secret_association", - "aws_msk_vpc_connection", - "aws_mskconnect_connector", - "aws_mskconnect_custom_plugin", - "aws_mskconnect_worker_configuration", - "aws_mwaa_environment", - "aws_nat_gateway", - "aws_neptune_cluster", - "aws_neptune_cluster_endpoint", - "aws_neptune_cluster_instance", - "aws_neptune_cluster_parameter_group", - "aws_neptune_cluster_snapshot", - "aws_neptune_event_subscription", - "aws_neptune_global_cluster", - "aws_neptune_parameter_group", - "aws_neptune_subnet_group", - "aws_neptunegraph_graph", - "aws_network_acl", - "aws_network_acl_association", - "aws_network_acl_rule", - "aws_network_interface", - "aws_network_interface_attachment", - "aws_network_interface_permission", - "aws_network_interface_sg_attachment", - "aws_networkfirewall_firewall", - "aws_networkfirewall_firewall_policy", - "aws_networkfirewall_logging_configuration", - "aws_networkfirewall_resource_policy", - "aws_networkfirewall_rule_group", - "aws_networkfirewall_tls_inspection_configuration", - "aws_networkmanager_attachment_accepter", - "aws_networkmanager_connect_attachment", - "aws_networkmanager_connect_peer", - "aws_networkmanager_connection", - "aws_networkmanager_core_network", - "aws_networkmanager_core_network_policy_attachment", - "aws_networkmanager_customer_gateway_association", - "aws_networkmanager_device", - "aws_networkmanager_dx_gateway_attachment", - "aws_networkmanager_global_network", - "aws_networkmanager_link", - "aws_networkmanager_link_association", - "aws_networkmanager_site", - "aws_networkmanager_site_to_site_vpn_attachment", - "aws_networkmanager_transit_gateway_connect_peer_association", - "aws_networkmanager_transit_gateway_peering", - "aws_networkmanager_transit_gateway_registration", - "aws_networkmanager_transit_gateway_route_table_attachment", - "aws_networkmanager_vpc_attachment", - "aws_networkmonitor_monitor", - "aws_networkmonitor_probe", - "aws_notifications_channel_association", - "aws_notifications_event_rule", - "aws_notifications_notification_configuration", - "aws_notifications_notification_hub", - "aws_notificationscontacts_email_contact", - "aws_oam_link", - "aws_oam_sink", - "aws_oam_sink_policy", - "aws_opensearch_authorize_vpc_endpoint_access", - "aws_opensearch_domain", - "aws_opensearch_domain_policy", - "aws_opensearch_domain_saml_options", - "aws_opensearch_inbound_connection_accepter", - "aws_opensearch_outbound_connection", - "aws_opensearch_package", - "aws_opensearch_package_association", - "aws_opensearch_vpc_endpoint", - "aws_opensearchserverless_access_policy", - "aws_opensearchserverless_collection", - "aws_opensearchserverless_lifecycle_policy", - "aws_opensearchserverless_security_config", - "aws_opensearchserverless_security_policy", - "aws_opensearchserverless_vpc_endpoint", - "aws_opsworks_application", - "aws_opsworks_custom_layer", - "aws_opsworks_ecs_cluster_layer", - "aws_opsworks_ganglia_layer", - "aws_opsworks_haproxy_layer", - "aws_opsworks_instance", - "aws_opsworks_java_app_layer", - "aws_opsworks_memcached_layer", - "aws_opsworks_mysql_layer", - "aws_opsworks_nodejs_app_layer", - "aws_opsworks_permission", - "aws_opsworks_php_app_layer", - "aws_opsworks_rails_app_layer", - "aws_opsworks_rds_db_instance", - "aws_opsworks_stack", - "aws_opsworks_static_web_layer", - "aws_opsworks_user_profile", - "aws_organizations_account", - "aws_organizations_delegated_administrator", - "aws_organizations_organization", - "aws_organizations_organizational_unit", - "aws_organizations_policy", - "aws_organizations_policy_attachment", - "aws_organizations_resource_policy", - "aws_osis_pipeline", - "aws_paymentcryptography_key", - "aws_paymentcryptography_key_alias", - "aws_pinpoint_adm_channel", - "aws_pinpoint_apns_channel", - "aws_pinpoint_apns_sandbox_channel", - "aws_pinpoint_apns_voip_channel", - "aws_pinpoint_apns_voip_sandbox_channel", - "aws_pinpoint_app", - "aws_pinpoint_baidu_channel", - "aws_pinpoint_email_channel", - "aws_pinpoint_email_template", - "aws_pinpoint_event_stream", - "aws_pinpoint_gcm_channel", - "aws_pinpoint_sms_channel", - "aws_pinpointsmsvoicev2_configuration_set", - "aws_pinpointsmsvoicev2_opt_out_list", - "aws_pinpointsmsvoicev2_phone_number", - "aws_pipes_pipe", - "aws_placement_group", - "aws_prometheus_alert_manager_definition", - "aws_prometheus_rule_group_namespace", - "aws_prometheus_scraper", - "aws_prometheus_workspace", - "aws_prometheus_workspace_configuration", - "aws_proxy_protocol_policy", - "aws_qbusiness_application", - "aws_qldb_ledger", - "aws_qldb_stream", - "aws_quicksight_account_settings", - "aws_quicksight_account_subscription", - "aws_quicksight_analysis", - "aws_quicksight_dashboard", - "aws_quicksight_data_set", - "aws_quicksight_data_source", - "aws_quicksight_folder", - "aws_quicksight_folder_membership", - "aws_quicksight_group", - "aws_quicksight_group_membership", - "aws_quicksight_iam_policy_assignment", - "aws_quicksight_ingestion", - "aws_quicksight_namespace", - "aws_quicksight_refresh_schedule", - "aws_quicksight_role_membership", - "aws_quicksight_template", - "aws_quicksight_template_alias", - "aws_quicksight_theme", - "aws_quicksight_user", - "aws_quicksight_vpc_connection", - "aws_ram_principal_association", - "aws_ram_resource_association", - "aws_ram_resource_share", - "aws_ram_resource_share_accepter", - "aws_ram_sharing_with_organization", - "aws_rbin_rule", - "aws_rds_certificate", - "aws_rds_cluster", - "aws_rds_cluster_activity_stream", - "aws_rds_cluster_endpoint", - "aws_rds_cluster_instance", - "aws_rds_cluster_parameter_group", - "aws_rds_cluster_role_association", - "aws_rds_cluster_snapshot_copy", - "aws_rds_custom_db_engine_version", - "aws_rds_export_task", - "aws_rds_global_cluster", - "aws_rds_instance_state", - "aws_rds_integration", - "aws_rds_reserved_instance", - "aws_rds_shard_group", - "aws_redshift_authentication_profile", - "aws_redshift_cluster", - "aws_redshift_cluster_iam_roles", - "aws_redshift_cluster_snapshot", - "aws_redshift_data_share_authorization", - "aws_redshift_data_share_consumer_association", - "aws_redshift_endpoint_access", - "aws_redshift_endpoint_authorization", - "aws_redshift_event_subscription", - "aws_redshift_hsm_client_certificate", - "aws_redshift_hsm_configuration", - "aws_redshift_integration", - "aws_redshift_logging", - "aws_redshift_parameter_group", - "aws_redshift_partner", - "aws_redshift_resource_policy", - "aws_redshift_scheduled_action", - "aws_redshift_snapshot_copy", - "aws_redshift_snapshot_copy_grant", - "aws_redshift_snapshot_schedule", - "aws_redshift_snapshot_schedule_association", - "aws_redshift_subnet_group", - "aws_redshift_usage_limit", - "aws_redshiftdata_statement", - "aws_redshiftserverless_custom_domain_association", - "aws_redshiftserverless_endpoint_access", - "aws_redshiftserverless_namespace", - "aws_redshiftserverless_resource_policy", - "aws_redshiftserverless_snapshot", - "aws_redshiftserverless_usage_limit", - "aws_redshiftserverless_workgroup", - "aws_rekognition_collection", - "aws_rekognition_project", - "aws_rekognition_stream_processor", - "aws_resiliencehub_resiliency_policy", - "aws_resourceexplorer2_index", - "aws_resourceexplorer2_view", - "aws_resourcegroups_group", - "aws_resourcegroups_resource", - "aws_rolesanywhere_profile", - "aws_rolesanywhere_trust_anchor", - "aws_route", - "aws_route53_cidr_collection", - "aws_route53_cidr_location", - "aws_route53_delegation_set", - "aws_route53_health_check", - "aws_route53_hosted_zone_dnssec", - "aws_route53_key_signing_key", - "aws_route53_query_log", - "aws_route53_record", - "aws_route53_records_exclusive", - "aws_route53_resolver_config", - "aws_route53_resolver_dnssec_config", - "aws_route53_resolver_endpoint", - "aws_route53_resolver_firewall_config", - "aws_route53_resolver_firewall_domain_list", - "aws_route53_resolver_firewall_rule", - "aws_route53_resolver_firewall_rule_group", - "aws_route53_resolver_firewall_rule_group_association", - "aws_route53_resolver_query_log_config", - "aws_route53_resolver_query_log_config_association", - "aws_route53_resolver_rule", - "aws_route53_resolver_rule_association", - "aws_route53_traffic_policy", - "aws_route53_traffic_policy_instance", - "aws_route53_vpc_association_authorization", - "aws_route53_zone", - "aws_route53_zone_association", - "aws_route53domains_delegation_signer_record", - "aws_route53domains_domain", - "aws_route53domains_registered_domain", - "aws_route53profiles_association", - "aws_route53profiles_profile", - "aws_route53profiles_resource_association", - "aws_route53recoverycontrolconfig_cluster", - "aws_route53recoverycontrolconfig_control_panel", - "aws_route53recoverycontrolconfig_routing_control", - "aws_route53recoverycontrolconfig_safety_rule", - "aws_route53recoveryreadiness_cell", - "aws_route53recoveryreadiness_readiness_check", - "aws_route53recoveryreadiness_recovery_group", - "aws_route53recoveryreadiness_resource_set", - "aws_route_table", - "aws_route_table_association", - "aws_rum_app_monitor", - "aws_rum_metrics_destination", - "aws_s3_access_point", - "aws_s3_account_public_access_block", - "aws_s3_bucket", - "aws_s3_bucket_accelerate_configuration", - "aws_s3_bucket_acl", - "aws_s3_bucket_analytics_configuration", - "aws_s3_bucket_cors_configuration", - "aws_s3_bucket_intelligent_tiering_configuration", - "aws_s3_bucket_inventory", - "aws_s3_bucket_lifecycle_configuration", - "aws_s3_bucket_logging", - "aws_s3_bucket_metric", - "aws_s3_bucket_notification", - "aws_s3_bucket_object", - "aws_s3_bucket_object_lock_configuration", - "aws_s3_bucket_ownership_controls", - "aws_s3_bucket_policy", - "aws_s3_bucket_public_access_block", - "aws_s3_bucket_replication_configuration", - "aws_s3_bucket_request_payment_configuration", - "aws_s3_bucket_server_side_encryption_configuration", - "aws_s3_bucket_versioning", - "aws_s3_bucket_website_configuration", - "aws_s3_directory_bucket", - "aws_s3_object", - "aws_s3_object_copy", - "aws_s3control_access_grant", - "aws_s3control_access_grants_instance", - "aws_s3control_access_grants_instance_resource_policy", - "aws_s3control_access_grants_location", - "aws_s3control_access_point_policy", - "aws_s3control_bucket", - "aws_s3control_bucket_lifecycle_configuration", - "aws_s3control_bucket_policy", - "aws_s3control_directory_bucket_access_point_scope", - "aws_s3control_multi_region_access_point", - "aws_s3control_multi_region_access_point_policy", - "aws_s3control_object_lambda_access_point", - "aws_s3control_object_lambda_access_point_policy", - "aws_s3control_storage_lens_configuration", - "aws_s3outposts_endpoint", - "aws_s3tables_namespace", - "aws_s3tables_table", - "aws_s3tables_table_bucket", - "aws_s3tables_table_bucket_policy", - "aws_s3tables_table_policy", - "aws_sagemaker_app", - "aws_sagemaker_app_image_config", - "aws_sagemaker_code_repository", - "aws_sagemaker_data_quality_job_definition", - "aws_sagemaker_device", - "aws_sagemaker_device_fleet", - "aws_sagemaker_domain", - "aws_sagemaker_endpoint", - "aws_sagemaker_endpoint_configuration", - "aws_sagemaker_feature_group", - "aws_sagemaker_flow_definition", - "aws_sagemaker_hub", - "aws_sagemaker_human_task_ui", - "aws_sagemaker_image", - "aws_sagemaker_image_version", - "aws_sagemaker_mlflow_tracking_server", - "aws_sagemaker_model", - "aws_sagemaker_model_package_group", - "aws_sagemaker_model_package_group_policy", - "aws_sagemaker_monitoring_schedule", - "aws_sagemaker_notebook_instance", - "aws_sagemaker_notebook_instance_lifecycle_configuration", - "aws_sagemaker_pipeline", - "aws_sagemaker_project", - "aws_sagemaker_servicecatalog_portfolio_status", - "aws_sagemaker_space", - "aws_sagemaker_studio_lifecycle_config", - "aws_sagemaker_user_profile", - "aws_sagemaker_workforce", - "aws_sagemaker_workteam", - "aws_scheduler_schedule", - "aws_scheduler_schedule_group", - "aws_schemas_discoverer", - "aws_schemas_registry", - "aws_schemas_registry_policy", - "aws_schemas_schema", - "aws_secretsmanager_secret", - "aws_secretsmanager_secret_policy", - "aws_secretsmanager_secret_rotation", - "aws_secretsmanager_secret_version", - "aws_security_group", - "aws_security_group_rule", - "aws_securityhub_account", - "aws_securityhub_action_target", - "aws_securityhub_automation_rule", - "aws_securityhub_configuration_policy", - "aws_securityhub_configuration_policy_association", - "aws_securityhub_finding_aggregator", - "aws_securityhub_insight", - "aws_securityhub_invite_accepter", - "aws_securityhub_member", - "aws_securityhub_organization_admin_account", - "aws_securityhub_organization_configuration", - "aws_securityhub_product_subscription", - "aws_securityhub_standards_control", - "aws_securityhub_standards_control_association", - "aws_securityhub_standards_subscription", - "aws_securitylake_aws_log_source", - "aws_securitylake_custom_log_source", - "aws_securitylake_data_lake", - "aws_securitylake_subscriber", - "aws_securitylake_subscriber_notification", - "aws_serverlessapplicationrepository_cloudformation_stack", - "aws_service_discovery_http_namespace", - "aws_service_discovery_instance", - "aws_service_discovery_private_dns_namespace", - "aws_service_discovery_public_dns_namespace", - "aws_service_discovery_service", - "aws_servicecatalog_budget_resource_association", - "aws_servicecatalog_constraint", - "aws_servicecatalog_organizations_access", - "aws_servicecatalog_portfolio", - "aws_servicecatalog_portfolio_share", - "aws_servicecatalog_principal_portfolio_association", - "aws_servicecatalog_product", - "aws_servicecatalog_product_portfolio_association", - "aws_servicecatalog_provisioned_product", - "aws_servicecatalog_provisioning_artifact", - "aws_servicecatalog_service_action", - "aws_servicecatalog_tag_option", - "aws_servicecatalog_tag_option_resource_association", - "aws_servicecatalogappregistry_application", - "aws_servicecatalogappregistry_attribute_group", - "aws_servicecatalogappregistry_attribute_group_association", - "aws_servicequotas_service_quota", - "aws_servicequotas_template", - "aws_servicequotas_template_association", - "aws_ses_active_receipt_rule_set", - "aws_ses_configuration_set", - "aws_ses_domain_dkim", - "aws_ses_domain_identity", - "aws_ses_domain_identity_verification", - "aws_ses_domain_mail_from", - "aws_ses_email_identity", - "aws_ses_event_destination", - "aws_ses_identity_notification_topic", - "aws_ses_identity_policy", - "aws_ses_receipt_filter", - "aws_ses_receipt_rule", - "aws_ses_receipt_rule_set", - "aws_ses_template", - "aws_sesv2_account_suppression_attributes", - "aws_sesv2_account_vdm_attributes", - "aws_sesv2_configuration_set", - "aws_sesv2_configuration_set_event_destination", - "aws_sesv2_contact_list", - "aws_sesv2_dedicated_ip_assignment", - "aws_sesv2_dedicated_ip_pool", - "aws_sesv2_email_identity", - "aws_sesv2_email_identity_feedback_attributes", - "aws_sesv2_email_identity_mail_from_attributes", - "aws_sesv2_email_identity_policy", - "aws_sfn_activity", - "aws_sfn_alias", - "aws_sfn_state_machine", - "aws_shield_application_layer_automatic_response", - "aws_shield_drt_access_log_bucket_association", - "aws_shield_drt_access_role_arn_association", - "aws_shield_proactive_engagement", - "aws_shield_protection", - "aws_shield_protection_group", - "aws_shield_protection_health_check_association", - "aws_shield_subscription", - "aws_signer_signing_job", - "aws_signer_signing_profile", - "aws_signer_signing_profile_permission", - "aws_simpledb_domain", - "aws_snapshot_create_volume_permission", - "aws_sns_platform_application", - "aws_sns_sms_preferences", - "aws_sns_topic", - "aws_sns_topic_data_protection_policy", - "aws_sns_topic_policy", - "aws_sns_topic_subscription", - "aws_spot_datafeed_subscription", - "aws_spot_fleet_request", - "aws_spot_instance_request", - "aws_sqs_queue", - "aws_sqs_queue_policy", - "aws_sqs_queue_redrive_allow_policy", - "aws_sqs_queue_redrive_policy", - "aws_ssm_activation", - "aws_ssm_association", - "aws_ssm_default_patch_baseline", - "aws_ssm_document", - "aws_ssm_maintenance_window", - "aws_ssm_maintenance_window_target", - "aws_ssm_maintenance_window_task", - "aws_ssm_parameter", - "aws_ssm_patch_baseline", - "aws_ssm_patch_group", - "aws_ssm_resource_data_sync", - "aws_ssm_service_setting", - "aws_ssmcontacts_contact", - "aws_ssmcontacts_contact_channel", - "aws_ssmcontacts_plan", - "aws_ssmcontacts_rotation", - "aws_ssmincidents_replication_set", - "aws_ssmincidents_response_plan", - "aws_ssmquicksetup_configuration_manager", - "aws_ssoadmin_account_assignment", - "aws_ssoadmin_application", - "aws_ssoadmin_application_access_scope", - "aws_ssoadmin_application_assignment", - "aws_ssoadmin_application_assignment_configuration", - "aws_ssoadmin_customer_managed_policy_attachment", - "aws_ssoadmin_instance_access_control_attributes", - "aws_ssoadmin_managed_policy_attachment", - "aws_ssoadmin_permission_set", - "aws_ssoadmin_permission_set_inline_policy", - "aws_ssoadmin_permissions_boundary_attachment", - "aws_ssoadmin_trusted_token_issuer", - "aws_storagegateway_cache", - "aws_storagegateway_cached_iscsi_volume", - "aws_storagegateway_file_system_association", - "aws_storagegateway_gateway", - "aws_storagegateway_nfs_file_share", - "aws_storagegateway_smb_file_share", - "aws_storagegateway_stored_iscsi_volume", - "aws_storagegateway_tape_pool", - "aws_storagegateway_upload_buffer", - "aws_storagegateway_working_storage", - "aws_subnet", - "aws_swf_domain", - "aws_synthetics_canary", - "aws_synthetics_group", - "aws_synthetics_group_association", - "aws_timestreaminfluxdb_db_instance", - "aws_timestreamquery_scheduled_query", - "aws_timestreamwrite_database", - "aws_timestreamwrite_table", - "aws_transcribe_language_model", - "aws_transcribe_medical_vocabulary", - "aws_transcribe_vocabulary", - "aws_transcribe_vocabulary_filter", - "aws_transfer_access", - "aws_transfer_agreement", - "aws_transfer_certificate", - "aws_transfer_connector", - "aws_transfer_profile", - "aws_transfer_server", - "aws_transfer_ssh_key", - "aws_transfer_tag", - "aws_transfer_user", - "aws_transfer_workflow", - "aws_verifiedaccess_endpoint", - "aws_verifiedaccess_group", - "aws_verifiedaccess_instance", - "aws_verifiedaccess_instance_logging_configuration", - "aws_verifiedaccess_instance_trust_provider_attachment", - "aws_verifiedaccess_trust_provider", - "aws_verifiedpermissions_identity_source", - "aws_verifiedpermissions_policy", - "aws_verifiedpermissions_policy_store", - "aws_verifiedpermissions_policy_template", - "aws_verifiedpermissions_schema", - "aws_volume_attachment", - "aws_vpc", - "aws_vpc_block_public_access_exclusion", - "aws_vpc_block_public_access_options", - "aws_vpc_dhcp_options", - "aws_vpc_dhcp_options_association", - "aws_vpc_endpoint", - "aws_vpc_endpoint_connection_accepter", - "aws_vpc_endpoint_connection_notification", - "aws_vpc_endpoint_policy", - "aws_vpc_endpoint_private_dns", - "aws_vpc_endpoint_route_table_association", - "aws_vpc_endpoint_security_group_association", - "aws_vpc_endpoint_service", - "aws_vpc_endpoint_service_allowed_principal", - "aws_vpc_endpoint_service_private_dns_verification", - "aws_vpc_endpoint_subnet_association", - "aws_vpc_ipam", - "aws_vpc_ipam_organization_admin_account", - "aws_vpc_ipam_pool", - "aws_vpc_ipam_pool_cidr", - "aws_vpc_ipam_pool_cidr_allocation", - "aws_vpc_ipam_preview_next_cidr", - "aws_vpc_ipam_resource_discovery", - "aws_vpc_ipam_resource_discovery_association", - "aws_vpc_ipam_scope", - "aws_vpc_ipv4_cidr_block_association", - "aws_vpc_ipv6_cidr_block_association", - "aws_vpc_network_performance_metric_subscription", - "aws_vpc_peering_connection", - "aws_vpc_peering_connection_accepter", - "aws_vpc_peering_connection_options", - "aws_vpc_route_server", - "aws_vpc_route_server_association", - "aws_vpc_route_server_endpoint", - "aws_vpc_route_server_peer", - "aws_vpc_route_server_propagation", - "aws_vpc_route_server_vpc_association", - "aws_vpc_security_group_egress_rule", - "aws_vpc_security_group_ingress_rule", - "aws_vpc_security_group_vpc_association", - "aws_vpclattice_access_log_subscription", - "aws_vpclattice_auth_policy", - "aws_vpclattice_listener", - "aws_vpclattice_listener_rule", - "aws_vpclattice_resource_configuration", - "aws_vpclattice_resource_gateway", - "aws_vpclattice_resource_policy", - "aws_vpclattice_service", - "aws_vpclattice_service_network", - "aws_vpclattice_service_network_resource_association", - "aws_vpclattice_service_network_service_association", - "aws_vpclattice_service_network_vpc_association", - "aws_vpclattice_target_group", - "aws_vpclattice_target_group_attachment", - "aws_vpn_connection", - "aws_vpn_connection_route", - "aws_vpn_gateway", - "aws_vpn_gateway_attachment", - "aws_vpn_gateway_route_propagation", - "aws_waf_byte_match_set", - "aws_waf_geo_match_set", - "aws_waf_ipset", - "aws_waf_rate_based_rule", - "aws_waf_regex_match_set", - "aws_waf_regex_pattern_set", - "aws_waf_rule", - "aws_waf_rule_group", - "aws_waf_size_constraint_set", - "aws_waf_sql_injection_match_set", - "aws_waf_web_acl", - "aws_waf_xss_match_set", - "aws_wafregional_byte_match_set", - "aws_wafregional_geo_match_set", - "aws_wafregional_ipset", - "aws_wafregional_rate_based_rule", - "aws_wafregional_regex_match_set", - "aws_wafregional_regex_pattern_set", - "aws_wafregional_rule", - "aws_wafregional_rule_group", - "aws_wafregional_size_constraint_set", - "aws_wafregional_sql_injection_match_set", - "aws_wafregional_web_acl", - "aws_wafregional_web_acl_association", - "aws_wafregional_xss_match_set", - "aws_wafv2_api_key", - "aws_wafv2_ip_set", - "aws_wafv2_regex_pattern_set", - "aws_wafv2_rule_group", - "aws_wafv2_web_acl", - "aws_wafv2_web_acl_association", - "aws_wafv2_web_acl_logging_configuration", - "aws_worklink_fleet", - "aws_worklink_website_certificate_authority_association", - "aws_workspaces_connection_alias", - "aws_workspaces_directory", - "aws_workspaces_ip_group", - "aws_workspaces_workspace", - "aws_workspacesweb_browser_settings", - "aws_workspacesweb_data_protection_settings", - "aws_workspacesweb_ip_access_settings", - "aws_workspacesweb_network_settings", - "aws_workspacesweb_user_access_logging_settings", - "aws_workspacesweb_user_settings", - "aws_xray_encryption_config", - "aws_xray_group", - "aws_xray_resource_policy", - "aws_xray_sampling_rule" - ] -} +{ + "resources": [ + "aws_accessanalyzer_analyzer", + "aws_accessanalyzer_archive_rule", + "aws_account_alternate_contact", + "aws_account_primary_contact", + "aws_account_region", + "aws_acm_certificate", + "aws_acm_certificate_validation", + "aws_acmpca_certificate", + "aws_acmpca_certificate_authority", + "aws_acmpca_certificate_authority_certificate", + "aws_acmpca_permission", + "aws_acmpca_policy", + "aws_alb", + "aws_ami", + "aws_ami_copy", + "aws_ami_from_instance", + "aws_ami_launch_permission", + "aws_amplify_app", + "aws_amplify_backend_environment", + "aws_amplify_branch", + "aws_amplify_domain_association", + "aws_amplify_webhook", + "aws_api_gateway_account", + "aws_api_gateway_api_key", + "aws_api_gateway_authorizer", + "aws_api_gateway_base_path_mapping", + "aws_api_gateway_client_certificate", + "aws_api_gateway_deployment", + "aws_api_gateway_documentation_part", + "aws_api_gateway_documentation_version", + "aws_api_gateway_domain_name", + "aws_api_gateway_domain_name_access_association", + "aws_api_gateway_gateway_response", + "aws_api_gateway_integration", + "aws_api_gateway_integration_response", + "aws_api_gateway_method", + "aws_api_gateway_method_response", + "aws_api_gateway_method_settings", + "aws_api_gateway_model", + "aws_api_gateway_request_validator", + "aws_api_gateway_resource", + "aws_api_gateway_rest_api", + "aws_api_gateway_rest_api_policy", + "aws_api_gateway_rest_api_put", + "aws_api_gateway_stage", + "aws_api_gateway_usage_plan", + "aws_api_gateway_usage_plan_key", + "aws_api_gateway_vpc_link", + "aws_apigatewayv2_api", + "aws_apigatewayv2_api_mapping", + "aws_apigatewayv2_authorizer", + "aws_apigatewayv2_deployment", + "aws_apigatewayv2_domain_name", + "aws_apigatewayv2_integration", + "aws_apigatewayv2_integration_response", + "aws_apigatewayv2_model", + "aws_apigatewayv2_route", + "aws_apigatewayv2_route_response", + "aws_apigatewayv2_stage", + "aws_apigatewayv2_vpc_link", + "aws_app_cookie_stickiness_policy", + "aws_appautoscaling_policy", + "aws_appautoscaling_scheduled_action", + "aws_appautoscaling_target", + "aws_appconfig_application", + "aws_appconfig_configuration_profile", + "aws_appconfig_deployment", + "aws_appconfig_deployment_strategy", + "aws_appconfig_environment", + "aws_appconfig_extension", + "aws_appconfig_extension_association", + "aws_appconfig_hosted_configuration_version", + "aws_appfabric_app_authorization", + "aws_appfabric_app_authorization_connection", + "aws_appfabric_app_bundle", + "aws_appfabric_ingestion", + "aws_appfabric_ingestion_destination", + "aws_appflow_connector_profile", + "aws_appflow_flow", + "aws_appintegrations_data_integration", + "aws_appintegrations_event_integration", + "aws_applicationinsights_application", + "aws_appmesh_gateway_route", + "aws_appmesh_mesh", + "aws_appmesh_route", + "aws_appmesh_virtual_gateway", + "aws_appmesh_virtual_node", + "aws_appmesh_virtual_router", + "aws_appmesh_virtual_service", + "aws_apprunner_auto_scaling_configuration_version", + "aws_apprunner_connection", + "aws_apprunner_custom_domain_association", + "aws_apprunner_default_auto_scaling_configuration_version", + "aws_apprunner_deployment", + "aws_apprunner_observability_configuration", + "aws_apprunner_service", + "aws_apprunner_vpc_connector", + "aws_apprunner_vpc_ingress_connection", + "aws_appstream_directory_config", + "aws_appstream_fleet", + "aws_appstream_fleet_stack_association", + "aws_appstream_image_builder", + "aws_appstream_stack", + "aws_appstream_user", + "aws_appstream_user_stack_association", + "aws_appsync_api", + "aws_appsync_api_cache", + "aws_appsync_api_key", + "aws_appsync_channel_namespace", + "aws_appsync_datasource", + "aws_appsync_domain_name", + "aws_appsync_domain_name_api_association", + "aws_appsync_function", + "aws_appsync_graphql_api", + "aws_appsync_resolver", + "aws_appsync_source_api_association", + "aws_appsync_type", + "aws_athena_capacity_reservation", + "aws_athena_data_catalog", + "aws_athena_database", + "aws_athena_named_query", + "aws_athena_prepared_statement", + "aws_athena_workgroup", + "aws_auditmanager_account_registration", + "aws_auditmanager_assessment", + "aws_auditmanager_assessment_delegation", + "aws_auditmanager_assessment_report", + "aws_auditmanager_control", + "aws_auditmanager_framework", + "aws_auditmanager_framework_share", + "aws_auditmanager_organization_admin_account_registration", + "aws_autoscaling_attachment", + "aws_autoscaling_group", + "aws_autoscaling_group_tag", + "aws_autoscaling_lifecycle_hook", + "aws_autoscaling_notification", + "aws_autoscaling_policy", + "aws_autoscaling_schedule", + "aws_autoscaling_traffic_source_attachment", + "aws_autoscalingplans_scaling_plan", + "aws_backup_framework", + "aws_backup_global_settings", + "aws_backup_logically_air_gapped_vault", + "aws_backup_plan", + "aws_backup_region_settings", + "aws_backup_report_plan", + "aws_backup_selection", + "aws_backup_vault", + "aws_backup_vault_lock_configuration", + "aws_backup_vault_notifications", + "aws_backup_vault_policy", + "aws_batch_compute_environment", + "aws_batch_job_definition", + "aws_batch_job_queue", + "aws_batch_scheduling_policy", + "aws_bcmdataexports_export", + "aws_bedrock_custom_model", + "aws_bedrock_guardrail", + "aws_bedrock_guardrail_version", + "aws_bedrock_inference_profile", + "aws_bedrock_model_invocation_logging_configuration", + "aws_bedrock_provisioned_model_throughput", + "aws_bedrockagent_agent", + "aws_bedrockagent_agent_action_group", + "aws_bedrockagent_agent_alias", + "aws_bedrockagent_agent_collaborator", + "aws_bedrockagent_agent_knowledge_base_association", + "aws_bedrockagent_data_source", + "aws_bedrockagent_flow", + "aws_bedrockagent_knowledge_base", + "aws_bedrockagent_prompt", + "aws_bedrockagentcore_agent_runtime", + "aws_bedrockagentcore_agent_runtime_endpoint", + "aws_bedrockagentcore_api_key_credential_provider", + "aws_bedrockagentcore_browser", + "aws_bedrockagentcore_code_interpreter", + "aws_bedrockagentcore_gateway", + "aws_bedrockagentcore_gateway_target", + "aws_bedrockagentcore_memory", + "aws_bedrockagentcore_memory_strategy", + "aws_bedrockagentcore_oauth2_credential_provider", + "aws_bedrockagentcore_token_vault_cmk", + "aws_bedrockagentcore_workload_identity", + "aws_budgets_budget", + "aws_budgets_budget_action", + "aws_ce_anomaly_monitor", + "aws_ce_anomaly_subscription", + "aws_ce_cost_allocation_tag", + "aws_ce_cost_category", + "aws_chatbot_slack_channel_configuration", + "aws_chatbot_teams_channel_configuration", + "aws_chime_voice_connector", + "aws_chime_voice_connector_group", + "aws_chime_voice_connector_logging", + "aws_chime_voice_connector_origination", + "aws_chime_voice_connector_streaming", + "aws_chime_voice_connector_termination", + "aws_chime_voice_connector_termination_credentials", + "aws_chimesdkmediapipelines_media_insights_pipeline_configuration", + "aws_chimesdkvoice_global_settings", + "aws_chimesdkvoice_sip_media_application", + "aws_chimesdkvoice_sip_rule", + "aws_chimesdkvoice_voice_profile_domain", + "aws_cleanrooms_collaboration", + "aws_cleanrooms_configured_table", + "aws_cleanrooms_membership", + "aws_cloud9_environment_ec2", + "aws_cloud9_environment_membership", + "aws_cloudcontrolapi_resource", + "aws_cloudformation_stack", + "aws_cloudformation_stack_instances", + "aws_cloudformation_stack_set", + "aws_cloudformation_stack_set_instance", + "aws_cloudformation_type", + "aws_cloudfront_cache_policy", + "aws_cloudfront_continuous_deployment_policy", + "aws_cloudfront_distribution", + "aws_cloudfront_field_level_encryption_config", + "aws_cloudfront_field_level_encryption_profile", + "aws_cloudfront_function", + "aws_cloudfront_key_group", + "aws_cloudfront_key_value_store", + "aws_cloudfront_monitoring_subscription", + "aws_cloudfront_origin_access_control", + "aws_cloudfront_origin_access_identity", + "aws_cloudfront_origin_request_policy", + "aws_cloudfront_public_key", + "aws_cloudfront_realtime_log_config", + "aws_cloudfront_response_headers_policy", + "aws_cloudfront_vpc_origin", + "aws_cloudfrontkeyvaluestore_key", + "aws_cloudfrontkeyvaluestore_keys_exclusive", + "aws_cloudhsm_v2_cluster", + "aws_cloudhsm_v2_hsm", + "aws_cloudsearch_domain", + "aws_cloudsearch_domain_service_access_policy", + "aws_cloudtrail", + "aws_cloudtrail_event_data_store", + "aws_cloudtrail_organization_delegated_admin_account", + "aws_cloudwatch_composite_alarm", + "aws_cloudwatch_contributor_insight_rule", + "aws_cloudwatch_contributor_managed_insight_rule", + "aws_cloudwatch_dashboard", + "aws_cloudwatch_event_api_destination", + "aws_cloudwatch_event_archive", + "aws_cloudwatch_event_bus", + "aws_cloudwatch_event_bus_policy", + "aws_cloudwatch_event_connection", + "aws_cloudwatch_event_endpoint", + "aws_cloudwatch_event_permission", + "aws_cloudwatch_event_rule", + "aws_cloudwatch_event_target", + "aws_cloudwatch_log_account_policy", + "aws_cloudwatch_log_anomaly_detector", + "aws_cloudwatch_log_data_protection_policy", + "aws_cloudwatch_log_delivery", + "aws_cloudwatch_log_delivery_destination", + "aws_cloudwatch_log_delivery_destination_policy", + "aws_cloudwatch_log_delivery_source", + "aws_cloudwatch_log_destination", + "aws_cloudwatch_log_destination_policy", + "aws_cloudwatch_log_group", + "aws_cloudwatch_log_index_policy", + "aws_cloudwatch_log_metric_filter", + "aws_cloudwatch_log_resource_policy", + "aws_cloudwatch_log_stream", + "aws_cloudwatch_log_subscription_filter", + "aws_cloudwatch_metric_alarm", + "aws_cloudwatch_metric_stream", + "aws_cloudwatch_query_definition", + "aws_codeartifact_domain", + "aws_codeartifact_domain_permissions_policy", + "aws_codeartifact_repository", + "aws_codeartifact_repository_permissions_policy", + "aws_codebuild_fleet", + "aws_codebuild_project", + "aws_codebuild_report_group", + "aws_codebuild_resource_policy", + "aws_codebuild_source_credential", + "aws_codebuild_webhook", + "aws_codecatalyst_dev_environment", + "aws_codecatalyst_project", + "aws_codecatalyst_source_repository", + "aws_codecommit_approval_rule_template", + "aws_codecommit_approval_rule_template_association", + "aws_codecommit_repository", + "aws_codecommit_trigger", + "aws_codeconnections_connection", + "aws_codeconnections_host", + "aws_codedeploy_app", + "aws_codedeploy_deployment_config", + "aws_codedeploy_deployment_group", + "aws_codeguruprofiler_profiling_group", + "aws_codegurureviewer_repository_association", + "aws_codepipeline", + "aws_codepipeline_custom_action_type", + "aws_codepipeline_webhook", + "aws_codestarconnections_connection", + "aws_codestarconnections_host", + "aws_codestarnotifications_notification_rule", + "aws_cognito_identity_pool", + "aws_cognito_identity_pool_provider_principal_tag", + "aws_cognito_identity_pool_roles_attachment", + "aws_cognito_identity_provider", + "aws_cognito_log_delivery_configuration", + "aws_cognito_managed_login_branding", + "aws_cognito_managed_user_pool_client", + "aws_cognito_resource_server", + "aws_cognito_risk_configuration", + "aws_cognito_user", + "aws_cognito_user_group", + "aws_cognito_user_in_group", + "aws_cognito_user_pool", + "aws_cognito_user_pool_client", + "aws_cognito_user_pool_domain", + "aws_cognito_user_pool_ui_customization", + "aws_comprehend_document_classifier", + "aws_comprehend_entity_recognizer", + "aws_computeoptimizer_enrollment_status", + "aws_computeoptimizer_recommendation_preferences", + "aws_config_aggregate_authorization", + "aws_config_config_rule", + "aws_config_configuration_aggregator", + "aws_config_configuration_recorder", + "aws_config_configuration_recorder_status", + "aws_config_conformance_pack", + "aws_config_delivery_channel", + "aws_config_organization_conformance_pack", + "aws_config_organization_custom_policy_rule", + "aws_config_organization_custom_rule", + "aws_config_organization_managed_rule", + "aws_config_remediation_configuration", + "aws_config_retention_configuration", + "aws_connect_bot_association", + "aws_connect_contact_flow", + "aws_connect_contact_flow_module", + "aws_connect_hours_of_operation", + "aws_connect_instance", + "aws_connect_instance_storage_config", + "aws_connect_lambda_function_association", + "aws_connect_phone_number", + "aws_connect_phone_number_contact_flow_association", + "aws_connect_queue", + "aws_connect_quick_connect", + "aws_connect_routing_profile", + "aws_connect_security_profile", + "aws_connect_user", + "aws_connect_user_hierarchy_group", + "aws_connect_user_hierarchy_structure", + "aws_connect_vocabulary", + "aws_controltower_baseline", + "aws_controltower_control", + "aws_controltower_landing_zone", + "aws_costoptimizationhub_enrollment_status", + "aws_costoptimizationhub_preferences", + "aws_cur_report_definition", + "aws_customer_gateway", + "aws_customerprofiles_domain", + "aws_customerprofiles_profile", + "aws_dataexchange_data_set", + "aws_dataexchange_event_action", + "aws_dataexchange_revision", + "aws_dataexchange_revision_assets", + "aws_datapipeline_pipeline", + "aws_datapipeline_pipeline_definition", + "aws_datasync_agent", + "aws_datasync_location_azure_blob", + "aws_datasync_location_efs", + "aws_datasync_location_fsx_lustre_file_system", + "aws_datasync_location_fsx_ontap_file_system", + "aws_datasync_location_fsx_openzfs_file_system", + "aws_datasync_location_fsx_windows_file_system", + "aws_datasync_location_hdfs", + "aws_datasync_location_nfs", + "aws_datasync_location_object_storage", + "aws_datasync_location_s3", + "aws_datasync_location_smb", + "aws_datasync_task", + "aws_datazone_asset_type", + "aws_datazone_domain", + "aws_datazone_environment", + "aws_datazone_environment_blueprint_configuration", + "aws_datazone_environment_profile", + "aws_datazone_form_type", + "aws_datazone_glossary", + "aws_datazone_glossary_term", + "aws_datazone_project", + "aws_datazone_user_profile", + "aws_dax_cluster", + "aws_dax_parameter_group", + "aws_dax_subnet_group", + "aws_db_cluster_snapshot", + "aws_db_event_subscription", + "aws_db_instance", + "aws_db_instance_automated_backups_replication", + "aws_db_instance_role_association", + "aws_db_option_group", + "aws_db_parameter_group", + "aws_db_proxy", + "aws_db_proxy_default_target_group", + "aws_db_proxy_endpoint", + "aws_db_proxy_target", + "aws_db_snapshot", + "aws_db_snapshot_copy", + "aws_db_subnet_group", + "aws_default_network_acl", + "aws_default_route_table", + "aws_default_security_group", + "aws_default_subnet", + "aws_default_vpc", + "aws_default_vpc_dhcp_options", + "aws_detective_graph", + "aws_detective_invitation_accepter", + "aws_detective_member", + "aws_detective_organization_admin_account", + "aws_detective_organization_configuration", + "aws_devicefarm_device_pool", + "aws_devicefarm_instance_profile", + "aws_devicefarm_network_profile", + "aws_devicefarm_project", + "aws_devicefarm_upload", + "aws_devopsguru_event_sources_config", + "aws_devopsguru_notification_channel", + "aws_devopsguru_resource_collection", + "aws_devopsguru_service_integration", + "aws_directory_service_conditional_forwarder", + "aws_directory_service_directory", + "aws_directory_service_log_subscription", + "aws_directory_service_radius_settings", + "aws_directory_service_region", + "aws_directory_service_shared_directory", + "aws_directory_service_shared_directory_accepter", + "aws_directory_service_trust", + "aws_dlm_lifecycle_policy", + "aws_dms_certificate", + "aws_dms_endpoint", + "aws_dms_event_subscription", + "aws_dms_replication_config", + "aws_dms_replication_instance", + "aws_dms_replication_subnet_group", + "aws_dms_replication_task", + "aws_dms_s3_endpoint", + "aws_docdb_cluster", + "aws_docdb_cluster_instance", + "aws_docdb_cluster_parameter_group", + "aws_docdb_cluster_snapshot", + "aws_docdb_event_subscription", + "aws_docdb_global_cluster", + "aws_docdb_subnet_group", + "aws_docdbelastic_cluster", + "aws_drs_replication_configuration_template", + "aws_dsql_cluster", + "aws_dsql_cluster_peering", + "aws_dx_bgp_peer", + "aws_dx_connection", + "aws_dx_connection_association", + "aws_dx_connection_confirmation", + "aws_dx_gateway", + "aws_dx_gateway_association", + "aws_dx_gateway_association_proposal", + "aws_dx_hosted_connection", + "aws_dx_hosted_private_virtual_interface", + "aws_dx_hosted_private_virtual_interface_accepter", + "aws_dx_hosted_public_virtual_interface", + "aws_dx_hosted_public_virtual_interface_accepter", + "aws_dx_hosted_transit_virtual_interface", + "aws_dx_hosted_transit_virtual_interface_accepter", + "aws_dx_lag", + "aws_dx_macsec_key_association", + "aws_dx_private_virtual_interface", + "aws_dx_public_virtual_interface", + "aws_dx_transit_virtual_interface", + "aws_dynamodb_contributor_insights", + "aws_dynamodb_global_table", + "aws_dynamodb_kinesis_streaming_destination", + "aws_dynamodb_resource_policy", + "aws_dynamodb_table", + "aws_dynamodb_table_export", + "aws_dynamodb_table_item", + "aws_dynamodb_table_replica", + "aws_dynamodb_tag", + "aws_ebs_default_kms_key", + "aws_ebs_encryption_by_default", + "aws_ebs_fast_snapshot_restore", + "aws_ebs_snapshot", + "aws_ebs_snapshot_block_public_access", + "aws_ebs_snapshot_copy", + "aws_ebs_snapshot_import", + "aws_ebs_volume", + "aws_ec2_allowed_images_settings", + "aws_ec2_availability_zone_group", + "aws_ec2_capacity_block_reservation", + "aws_ec2_capacity_reservation", + "aws_ec2_carrier_gateway", + "aws_ec2_client_vpn_authorization_rule", + "aws_ec2_client_vpn_endpoint", + "aws_ec2_client_vpn_network_association", + "aws_ec2_client_vpn_route", + "aws_ec2_default_credit_specification", + "aws_ec2_fleet", + "aws_ec2_host", + "aws_ec2_image_block_public_access", + "aws_ec2_instance", + "aws_ec2_instance_connect_endpoint", + "aws_ec2_instance_metadata_defaults", + "aws_ec2_instance_state", + "aws_ec2_local_gateway_route", + "aws_ec2_local_gateway_route_table_vpc_association", + "aws_ec2_managed_prefix_list", + "aws_ec2_managed_prefix_list_entry", + "aws_ec2_network_insights_analysis", + "aws_ec2_network_insights_path", + "aws_ec2_serial_console_access", + "aws_ec2_subnet_cidr_reservation", + "aws_ec2_tag", + "aws_ec2_traffic_mirror_filter", + "aws_ec2_traffic_mirror_filter_rule", + "aws_ec2_traffic_mirror_session", + "aws_ec2_traffic_mirror_target", + "aws_ec2_transit_gateway", + "aws_ec2_transit_gateway_connect", + "aws_ec2_transit_gateway_connect_peer", + "aws_ec2_transit_gateway_default_route_table_association", + "aws_ec2_transit_gateway_default_route_table_propagation", + "aws_ec2_transit_gateway_multicast_domain", + "aws_ec2_transit_gateway_multicast_domain_association", + "aws_ec2_transit_gateway_multicast_group_member", + "aws_ec2_transit_gateway_multicast_group_source", + "aws_ec2_transit_gateway_peering_attachment", + "aws_ec2_transit_gateway_peering_attachment_accepter", + "aws_ec2_transit_gateway_policy_table", + "aws_ec2_transit_gateway_policy_table_association", + "aws_ec2_transit_gateway_prefix_list_reference", + "aws_ec2_transit_gateway_route", + "aws_ec2_transit_gateway_route_table", + "aws_ec2_transit_gateway_route_table_association", + "aws_ec2_transit_gateway_route_table_propagation", + "aws_ec2_transit_gateway_vpc_attachment", + "aws_ec2_transit_gateway_vpc_attachment_accepter", + "aws_ecr_account_setting", + "aws_ecr_lifecycle_policy", + "aws_ecr_pull_through_cache_rule", + "aws_ecr_registry_policy", + "aws_ecr_registry_scanning_configuration", + "aws_ecr_replication_configuration", + "aws_ecr_repository", + "aws_ecr_repository_creation_template", + "aws_ecr_repository_policy", + "aws_ecrpublic_repository", + "aws_ecrpublic_repository_policy", + "aws_ecs_account_setting_default", + "aws_ecs_capacity_provider", + "aws_ecs_cluster", + "aws_ecs_cluster_capacity_providers", + "aws_ecs_service", + "aws_ecs_tag", + "aws_ecs_task_definition", + "aws_ecs_task_set", + "aws_efs_access_point", + "aws_efs_backup_policy", + "aws_efs_file_system", + "aws_efs_file_system_policy", + "aws_efs_mount_target", + "aws_efs_replication_configuration", + "aws_egress_only_internet_gateway", + "aws_eip", + "aws_eip_association", + "aws_eip_domain_name", + "aws_eks_access_entry", + "aws_eks_access_policy_association", + "aws_eks_addon", + "aws_eks_cluster", + "aws_eks_fargate_profile", + "aws_eks_identity_provider_config", + "aws_eks_node_group", + "aws_eks_pod_identity_association", + "aws_elastic_beanstalk_application", + "aws_elastic_beanstalk_application_version", + "aws_elastic_beanstalk_configuration_template", + "aws_elastic_beanstalk_environment", + "aws_elasticache_cluster", + "aws_elasticache_global_replication_group", + "aws_elasticache_parameter_group", + "aws_elasticache_replication_group", + "aws_elasticache_reserved_cache_node", + "aws_elasticache_serverless_cache", + "aws_elasticache_subnet_group", + "aws_elasticache_user", + "aws_elasticache_user_group", + "aws_elasticache_user_group_association", + "aws_elasticsearch_domain", + "aws_elasticsearch_domain_policy", + "aws_elasticsearch_domain_saml_options", + "aws_elasticsearch_vpc_endpoint", + "aws_elastictranscoder_pipeline", + "aws_elastictranscoder_preset", + "aws_elb", + "aws_elb_attachment", + "aws_emr_block_public_access_configuration", + "aws_emr_cluster", + "aws_emr_instance_fleet", + "aws_emr_instance_group", + "aws_emr_managed_scaling_policy", + "aws_emr_security_configuration", + "aws_emr_studio", + "aws_emr_studio_session_mapping", + "aws_emrcontainers_job_template", + "aws_emrcontainers_virtual_cluster", + "aws_emrserverless_application", + "aws_evidently_feature", + "aws_evidently_launch", + "aws_evidently_project", + "aws_evidently_segment", + "aws_finspace_kx_cluster", + "aws_finspace_kx_database", + "aws_finspace_kx_dataview", + "aws_finspace_kx_environment", + "aws_finspace_kx_scaling_group", + "aws_finspace_kx_user", + "aws_finspace_kx_volume", + "aws_fis_experiment_template", + "aws_fis_target_account_configuration", + "aws_flow_log", + "aws_fms_admin_account", + "aws_fms_policy", + "aws_fms_resource_set", + "aws_fsx_backup", + "aws_fsx_data_repository_association", + "aws_fsx_file_cache", + "aws_fsx_lustre_file_system", + "aws_fsx_ontap_file_system", + "aws_fsx_ontap_storage_virtual_machine", + "aws_fsx_ontap_volume", + "aws_fsx_openzfs_file_system", + "aws_fsx_openzfs_snapshot", + "aws_fsx_openzfs_volume", + "aws_fsx_s3_access_point_attachment", + "aws_fsx_windows_file_system", + "aws_gamelift_alias", + "aws_gamelift_build", + "aws_gamelift_fleet", + "aws_gamelift_game_server_group", + "aws_gamelift_game_session_queue", + "aws_gamelift_script", + "aws_glacier_vault", + "aws_glacier_vault_lock", + "aws_globalaccelerator_accelerator", + "aws_globalaccelerator_cross_account_attachment", + "aws_globalaccelerator_custom_routing_accelerator", + "aws_globalaccelerator_custom_routing_endpoint_group", + "aws_globalaccelerator_custom_routing_listener", + "aws_globalaccelerator_endpoint_group", + "aws_globalaccelerator_listener", + "aws_glue_catalog_database", + "aws_glue_catalog_table", + "aws_glue_catalog_table_optimizer", + "aws_glue_classifier", + "aws_glue_connection", + "aws_glue_crawler", + "aws_glue_data_catalog_encryption_settings", + "aws_glue_data_quality_ruleset", + "aws_glue_dev_endpoint", + "aws_glue_job", + "aws_glue_ml_transform", + "aws_glue_partition", + "aws_glue_partition_index", + "aws_glue_registry", + "aws_glue_resource_policy", + "aws_glue_schema", + "aws_glue_security_configuration", + "aws_glue_trigger", + "aws_glue_user_defined_function", + "aws_glue_workflow", + "aws_grafana_license_association", + "aws_grafana_role_association", + "aws_grafana_workspace", + "aws_grafana_workspace_api_key", + "aws_grafana_workspace_saml_configuration", + "aws_grafana_workspace_service_account", + "aws_grafana_workspace_service_account_token", + "aws_guardduty_detector", + "aws_guardduty_detector_feature", + "aws_guardduty_filter", + "aws_guardduty_invite_accepter", + "aws_guardduty_ipset", + "aws_guardduty_malware_protection_plan", + "aws_guardduty_member", + "aws_guardduty_member_detector_feature", + "aws_guardduty_organization_admin_account", + "aws_guardduty_organization_configuration", + "aws_guardduty_organization_configuration_feature", + "aws_guardduty_publishing_destination", + "aws_guardduty_threatintelset", + "aws_iam_access_key", + "aws_iam_account_alias", + "aws_iam_account_password_policy", + "aws_iam_group", + "aws_iam_group_membership", + "aws_iam_group_policies_exclusive", + "aws_iam_group_policy", + "aws_iam_group_policy_attachment", + "aws_iam_group_policy_attachments_exclusive", + "aws_iam_instance_profile", + "aws_iam_openid_connect_provider", + "aws_iam_organizations_features", + "aws_iam_policy", + "aws_iam_policy_attachment", + "aws_iam_role", + "aws_iam_role_policies_exclusive", + "aws_iam_role_policy", + "aws_iam_role_policy_attachment", + "aws_iam_role_policy_attachments_exclusive", + "aws_iam_saml_provider", + "aws_iam_security_token_service_preferences", + "aws_iam_server_certificate", + "aws_iam_service_linked_role", + "aws_iam_service_specific_credential", + "aws_iam_signing_certificate", + "aws_iam_user", + "aws_iam_user_group_membership", + "aws_iam_user_login_profile", + "aws_iam_user_policies_exclusive", + "aws_iam_user_policy", + "aws_iam_user_policy_attachment", + "aws_iam_user_policy_attachments_exclusive", + "aws_iam_user_ssh_key", + "aws_iam_virtual_mfa_device", + "aws_identitystore_group", + "aws_identitystore_group_membership", + "aws_identitystore_user", + "aws_imagebuilder_component", + "aws_imagebuilder_container_recipe", + "aws_imagebuilder_distribution_configuration", + "aws_imagebuilder_image", + "aws_imagebuilder_image_pipeline", + "aws_imagebuilder_image_recipe", + "aws_imagebuilder_infrastructure_configuration", + "aws_imagebuilder_lifecycle_policy", + "aws_imagebuilder_workflow", + "aws_inspector2_delegated_admin_account", + "aws_inspector2_enabler", + "aws_inspector2_filter", + "aws_inspector2_member_association", + "aws_inspector2_organization_configuration", + "aws_inspector_assessment_target", + "aws_inspector_assessment_template", + "aws_inspector_resource_group", + "aws_instance", + "aws_internet_gateway", + "aws_internet_gateway_attachment", + "aws_internetmonitor_monitor", + "aws_invoicing_invoice_unit", + "aws_iot_authorizer", + "aws_iot_billing_group", + "aws_iot_ca_certificate", + "aws_iot_certificate", + "aws_iot_domain_configuration", + "aws_iot_event_configurations", + "aws_iot_indexing_configuration", + "aws_iot_logging_options", + "aws_iot_policy", + "aws_iot_policy_attachment", + "aws_iot_provisioning_template", + "aws_iot_role_alias", + "aws_iot_thing", + "aws_iot_thing_group", + "aws_iot_thing_group_membership", + "aws_iot_thing_principal_attachment", + "aws_iot_thing_type", + "aws_iot_topic_rule", + "aws_iot_topic_rule_destination", + "aws_ivs_channel", + "aws_ivs_playback_key_pair", + "aws_ivs_recording_configuration", + "aws_ivschat_logging_configuration", + "aws_ivschat_room", + "aws_kendra_data_source", + "aws_kendra_experience", + "aws_kendra_faq", + "aws_kendra_index", + "aws_kendra_query_suggestions_block_list", + "aws_kendra_thesaurus", + "aws_key_pair", + "aws_keyspaces_keyspace", + "aws_keyspaces_table", + "aws_kinesis_analytics_application", + "aws_kinesis_firehose_delivery_stream", + "aws_kinesis_resource_policy", + "aws_kinesis_stream", + "aws_kinesis_stream_consumer", + "aws_kinesis_video_stream", + "aws_kinesisanalyticsv2_application", + "aws_kinesisanalyticsv2_application_snapshot", + "aws_kms_alias", + "aws_kms_ciphertext", + "aws_kms_custom_key_store", + "aws_kms_external_key", + "aws_kms_grant", + "aws_kms_key", + "aws_kms_key_policy", + "aws_kms_replica_external_key", + "aws_kms_replica_key", + "aws_lakeformation_data_cells_filter", + "aws_lakeformation_data_lake_settings", + "aws_lakeformation_identity_center_configuration", + "aws_lakeformation_lf_tag", + "aws_lakeformation_lf_tag_expression", + "aws_lakeformation_opt_in", + "aws_lakeformation_permissions", + "aws_lakeformation_resource", + "aws_lakeformation_resource_lf_tag", + "aws_lakeformation_resource_lf_tags", + "aws_lambda_alias", + "aws_lambda_code_signing_config", + "aws_lambda_event_source_mapping", + "aws_lambda_function", + "aws_lambda_function_event_invoke_config", + "aws_lambda_function_recursion_config", + "aws_lambda_function_url", + "aws_lambda_invocation", + "aws_lambda_layer_version", + "aws_lambda_layer_version_permission", + "aws_lambda_permission", + "aws_lambda_provisioned_concurrency_config", + "aws_lambda_runtime_management_config", + "aws_launch_configuration", + "aws_launch_template", + "aws_lb", + "aws_lb_cookie_stickiness_policy", + "aws_lb_listener", + "aws_lb_listener_certificate", + "aws_lb_listener_rule", + "aws_lb_ssl_negotiation_policy", + "aws_lb_target_group", + "aws_lb_target_group_attachment", + "aws_lb_trust_store", + "aws_lb_trust_store_revocation", + "aws_lex_bot", + "aws_lex_bot_alias", + "aws_lex_intent", + "aws_lex_slot_type", + "aws_lexv2models_bot", + "aws_lexv2models_bot_locale", + "aws_lexv2models_bot_version", + "aws_lexv2models_intent", + "aws_lexv2models_slot", + "aws_lexv2models_slot_type", + "aws_licensemanager_association", + "aws_licensemanager_grant", + "aws_licensemanager_grant_accepter", + "aws_licensemanager_license_configuration", + "aws_lightsail_bucket", + "aws_lightsail_bucket_access_key", + "aws_lightsail_bucket_resource_access", + "aws_lightsail_certificate", + "aws_lightsail_container_service", + "aws_lightsail_container_service_deployment_version", + "aws_lightsail_database", + "aws_lightsail_disk", + "aws_lightsail_disk_attachment", + "aws_lightsail_distribution", + "aws_lightsail_domain", + "aws_lightsail_domain_entry", + "aws_lightsail_instance", + "aws_lightsail_instance_public_ports", + "aws_lightsail_key_pair", + "aws_lightsail_lb", + "aws_lightsail_lb_attachment", + "aws_lightsail_lb_certificate", + "aws_lightsail_lb_certificate_attachment", + "aws_lightsail_lb_https_redirection_policy", + "aws_lightsail_lb_stickiness_policy", + "aws_lightsail_static_ip", + "aws_lightsail_static_ip_attachment", + "aws_load_balancer_backend_server_policy", + "aws_load_balancer_listener_policy", + "aws_load_balancer_policy", + "aws_location_geofence_collection", + "aws_location_map", + "aws_location_place_index", + "aws_location_route_calculator", + "aws_location_tracker", + "aws_location_tracker_association", + "aws_m2_application", + "aws_m2_deployment", + "aws_m2_environment", + "aws_macie2_account", + "aws_macie2_classification_export_configuration", + "aws_macie2_classification_job", + "aws_macie2_custom_data_identifier", + "aws_macie2_findings_filter", + "aws_macie2_invitation_accepter", + "aws_macie2_member", + "aws_macie2_organization_admin_account", + "aws_macie2_organization_configuration", + "aws_main_route_table_association", + "aws_media_convert_queue", + "aws_media_package_channel", + "aws_media_packagev2_channel_group", + "aws_media_store_container", + "aws_media_store_container_policy", + "aws_medialive_channel", + "aws_medialive_input", + "aws_medialive_input_security_group", + "aws_medialive_multiplex", + "aws_medialive_multiplex_program", + "aws_memorydb_acl", + "aws_memorydb_cluster", + "aws_memorydb_multi_region_cluster", + "aws_memorydb_parameter_group", + "aws_memorydb_snapshot", + "aws_memorydb_subnet_group", + "aws_memorydb_user", + "aws_mq_broker", + "aws_mq_configuration", + "aws_msk_cluster", + "aws_msk_cluster_policy", + "aws_msk_configuration", + "aws_msk_replicator", + "aws_msk_scram_secret_association", + "aws_msk_serverless_cluster", + "aws_msk_single_scram_secret_association", + "aws_msk_vpc_connection", + "aws_mskconnect_connector", + "aws_mskconnect_custom_plugin", + "aws_mskconnect_worker_configuration", + "aws_mwaa_environment", + "aws_nat_gateway", + "aws_nat_gateway_eip_association", + "aws_neptune_cluster", + "aws_neptune_cluster_endpoint", + "aws_neptune_cluster_instance", + "aws_neptune_cluster_parameter_group", + "aws_neptune_cluster_snapshot", + "aws_neptune_event_subscription", + "aws_neptune_global_cluster", + "aws_neptune_parameter_group", + "aws_neptune_subnet_group", + "aws_neptunegraph_graph", + "aws_network_acl", + "aws_network_acl_association", + "aws_network_acl_rule", + "aws_network_interface", + "aws_network_interface_attachment", + "aws_network_interface_permission", + "aws_network_interface_sg_attachment", + "aws_networkfirewall_firewall", + "aws_networkfirewall_firewall_policy", + "aws_networkfirewall_firewall_transit_gateway_attachment_accepter", + "aws_networkfirewall_logging_configuration", + "aws_networkfirewall_resource_policy", + "aws_networkfirewall_rule_group", + "aws_networkfirewall_tls_inspection_configuration", + "aws_networkfirewall_vpc_endpoint_association", + "aws_networkflowmonitor_monitor", + "aws_networkflowmonitor_scope", + "aws_networkmanager_attachment_accepter", + "aws_networkmanager_connect_attachment", + "aws_networkmanager_connect_peer", + "aws_networkmanager_connection", + "aws_networkmanager_core_network", + "aws_networkmanager_core_network_policy_attachment", + "aws_networkmanager_customer_gateway_association", + "aws_networkmanager_device", + "aws_networkmanager_dx_gateway_attachment", + "aws_networkmanager_global_network", + "aws_networkmanager_link", + "aws_networkmanager_link_association", + "aws_networkmanager_site", + "aws_networkmanager_site_to_site_vpn_attachment", + "aws_networkmanager_transit_gateway_connect_peer_association", + "aws_networkmanager_transit_gateway_peering", + "aws_networkmanager_transit_gateway_registration", + "aws_networkmanager_transit_gateway_route_table_attachment", + "aws_networkmanager_vpc_attachment", + "aws_networkmonitor_monitor", + "aws_networkmonitor_probe", + "aws_notifications_channel_association", + "aws_notifications_event_rule", + "aws_notifications_notification_configuration", + "aws_notifications_notification_hub", + "aws_notificationscontacts_email_contact", + "aws_oam_link", + "aws_oam_sink", + "aws_oam_sink_policy", + "aws_observabilityadmin_centralization_rule_for_organization", + "aws_odb_cloud_autonomous_vm_cluster", + "aws_odb_cloud_exadata_infrastructure", + "aws_odb_cloud_vm_cluster", + "aws_odb_network", + "aws_odb_network_peering_connection", + "aws_opensearch_authorize_vpc_endpoint_access", + "aws_opensearch_domain", + "aws_opensearch_domain_policy", + "aws_opensearch_domain_saml_options", + "aws_opensearch_inbound_connection_accepter", + "aws_opensearch_outbound_connection", + "aws_opensearch_package", + "aws_opensearch_package_association", + "aws_opensearch_vpc_endpoint", + "aws_opensearchserverless_access_policy", + "aws_opensearchserverless_collection", + "aws_opensearchserverless_lifecycle_policy", + "aws_opensearchserverless_security_config", + "aws_opensearchserverless_security_policy", + "aws_opensearchserverless_vpc_endpoint", + "aws_organizations_account", + "aws_organizations_delegated_administrator", + "aws_organizations_organization", + "aws_organizations_organizational_unit", + "aws_organizations_policy", + "aws_organizations_policy_attachment", + "aws_organizations_resource_policy", + "aws_osis_pipeline", + "aws_paymentcryptography_key", + "aws_paymentcryptography_key_alias", + "aws_pinpoint_adm_channel", + "aws_pinpoint_apns_channel", + "aws_pinpoint_apns_sandbox_channel", + "aws_pinpoint_apns_voip_channel", + "aws_pinpoint_apns_voip_sandbox_channel", + "aws_pinpoint_app", + "aws_pinpoint_baidu_channel", + "aws_pinpoint_email_channel", + "aws_pinpoint_email_template", + "aws_pinpoint_event_stream", + "aws_pinpoint_gcm_channel", + "aws_pinpoint_sms_channel", + "aws_pinpointsmsvoicev2_configuration_set", + "aws_pinpointsmsvoicev2_opt_out_list", + "aws_pinpointsmsvoicev2_phone_number", + "aws_pipes_pipe", + "aws_placement_group", + "aws_prometheus_alert_manager_definition", + "aws_prometheus_query_logging_configuration", + "aws_prometheus_resource_policy", + "aws_prometheus_rule_group_namespace", + "aws_prometheus_scraper", + "aws_prometheus_workspace", + "aws_prometheus_workspace_configuration", + "aws_proxy_protocol_policy", + "aws_qbusiness_application", + "aws_qldb_ledger", + "aws_qldb_stream", + "aws_quicksight_account_settings", + "aws_quicksight_account_subscription", + "aws_quicksight_analysis", + "aws_quicksight_custom_permissions", + "aws_quicksight_dashboard", + "aws_quicksight_data_set", + "aws_quicksight_data_source", + "aws_quicksight_folder", + "aws_quicksight_folder_membership", + "aws_quicksight_group", + "aws_quicksight_group_membership", + "aws_quicksight_iam_policy_assignment", + "aws_quicksight_ingestion", + "aws_quicksight_ip_restriction", + "aws_quicksight_key_registration", + "aws_quicksight_namespace", + "aws_quicksight_refresh_schedule", + "aws_quicksight_role_custom_permission", + "aws_quicksight_role_membership", + "aws_quicksight_template", + "aws_quicksight_template_alias", + "aws_quicksight_theme", + "aws_quicksight_user", + "aws_quicksight_user_custom_permission", + "aws_quicksight_vpc_connection", + "aws_ram_principal_association", + "aws_ram_resource_association", + "aws_ram_resource_share", + "aws_ram_resource_share_accepter", + "aws_ram_sharing_with_organization", + "aws_rbin_rule", + "aws_rds_certificate", + "aws_rds_cluster", + "aws_rds_cluster_activity_stream", + "aws_rds_cluster_endpoint", + "aws_rds_cluster_instance", + "aws_rds_cluster_parameter_group", + "aws_rds_cluster_role_association", + "aws_rds_cluster_snapshot_copy", + "aws_rds_custom_db_engine_version", + "aws_rds_export_task", + "aws_rds_global_cluster", + "aws_rds_instance_state", + "aws_rds_integration", + "aws_rds_reserved_instance", + "aws_rds_shard_group", + "aws_redshift_authentication_profile", + "aws_redshift_cluster", + "aws_redshift_cluster_iam_roles", + "aws_redshift_cluster_snapshot", + "aws_redshift_data_share_authorization", + "aws_redshift_data_share_consumer_association", + "aws_redshift_endpoint_access", + "aws_redshift_endpoint_authorization", + "aws_redshift_event_subscription", + "aws_redshift_hsm_client_certificate", + "aws_redshift_hsm_configuration", + "aws_redshift_integration", + "aws_redshift_logging", + "aws_redshift_parameter_group", + "aws_redshift_partner", + "aws_redshift_resource_policy", + "aws_redshift_scheduled_action", + "aws_redshift_snapshot_copy", + "aws_redshift_snapshot_copy_grant", + "aws_redshift_snapshot_schedule", + "aws_redshift_snapshot_schedule_association", + "aws_redshift_subnet_group", + "aws_redshift_usage_limit", + "aws_redshiftdata_statement", + "aws_redshiftserverless_custom_domain_association", + "aws_redshiftserverless_endpoint_access", + "aws_redshiftserverless_namespace", + "aws_redshiftserverless_resource_policy", + "aws_redshiftserverless_snapshot", + "aws_redshiftserverless_usage_limit", + "aws_redshiftserverless_workgroup", + "aws_rekognition_collection", + "aws_rekognition_project", + "aws_rekognition_stream_processor", + "aws_resiliencehub_resiliency_policy", + "aws_resourceexplorer2_index", + "aws_resourceexplorer2_view", + "aws_resourcegroups_group", + "aws_resourcegroups_resource", + "aws_rolesanywhere_profile", + "aws_rolesanywhere_trust_anchor", + "aws_route", + "aws_route53_cidr_collection", + "aws_route53_cidr_location", + "aws_route53_delegation_set", + "aws_route53_health_check", + "aws_route53_hosted_zone_dnssec", + "aws_route53_key_signing_key", + "aws_route53_query_log", + "aws_route53_record", + "aws_route53_records_exclusive", + "aws_route53_resolver_config", + "aws_route53_resolver_dnssec_config", + "aws_route53_resolver_endpoint", + "aws_route53_resolver_firewall_config", + "aws_route53_resolver_firewall_domain_list", + "aws_route53_resolver_firewall_rule", + "aws_route53_resolver_firewall_rule_group", + "aws_route53_resolver_firewall_rule_group_association", + "aws_route53_resolver_query_log_config", + "aws_route53_resolver_query_log_config_association", + "aws_route53_resolver_rule", + "aws_route53_resolver_rule_association", + "aws_route53_traffic_policy", + "aws_route53_traffic_policy_instance", + "aws_route53_vpc_association_authorization", + "aws_route53_zone", + "aws_route53_zone_association", + "aws_route53domains_delegation_signer_record", + "aws_route53domains_domain", + "aws_route53domains_registered_domain", + "aws_route53profiles_association", + "aws_route53profiles_profile", + "aws_route53profiles_resource_association", + "aws_route53recoverycontrolconfig_cluster", + "aws_route53recoverycontrolconfig_control_panel", + "aws_route53recoverycontrolconfig_routing_control", + "aws_route53recoverycontrolconfig_safety_rule", + "aws_route53recoveryreadiness_cell", + "aws_route53recoveryreadiness_readiness_check", + "aws_route53recoveryreadiness_recovery_group", + "aws_route53recoveryreadiness_resource_set", + "aws_route_table", + "aws_route_table_association", + "aws_rum_app_monitor", + "aws_rum_metrics_destination", + "aws_s3_access_point", + "aws_s3_account_public_access_block", + "aws_s3_bucket", + "aws_s3_bucket_accelerate_configuration", + "aws_s3_bucket_acl", + "aws_s3_bucket_analytics_configuration", + "aws_s3_bucket_cors_configuration", + "aws_s3_bucket_intelligent_tiering_configuration", + "aws_s3_bucket_inventory", + "aws_s3_bucket_lifecycle_configuration", + "aws_s3_bucket_logging", + "aws_s3_bucket_metadata_configuration", + "aws_s3_bucket_metric", + "aws_s3_bucket_notification", + "aws_s3_bucket_object", + "aws_s3_bucket_object_lock_configuration", + "aws_s3_bucket_ownership_controls", + "aws_s3_bucket_policy", + "aws_s3_bucket_public_access_block", + "aws_s3_bucket_replication_configuration", + "aws_s3_bucket_request_payment_configuration", + "aws_s3_bucket_server_side_encryption_configuration", + "aws_s3_bucket_versioning", + "aws_s3_bucket_website_configuration", + "aws_s3_directory_bucket", + "aws_s3_object", + "aws_s3_object_copy", + "aws_s3control_access_grant", + "aws_s3control_access_grants_instance", + "aws_s3control_access_grants_instance_resource_policy", + "aws_s3control_access_grants_location", + "aws_s3control_access_point_policy", + "aws_s3control_bucket", + "aws_s3control_bucket_lifecycle_configuration", + "aws_s3control_bucket_policy", + "aws_s3control_directory_bucket_access_point_scope", + "aws_s3control_multi_region_access_point", + "aws_s3control_multi_region_access_point_policy", + "aws_s3control_object_lambda_access_point", + "aws_s3control_object_lambda_access_point_policy", + "aws_s3control_storage_lens_configuration", + "aws_s3outposts_endpoint", + "aws_s3tables_namespace", + "aws_s3tables_table", + "aws_s3tables_table_bucket", + "aws_s3tables_table_bucket_policy", + "aws_s3tables_table_policy", + "aws_sagemaker_app", + "aws_sagemaker_app_image_config", + "aws_sagemaker_code_repository", + "aws_sagemaker_data_quality_job_definition", + "aws_sagemaker_device", + "aws_sagemaker_device_fleet", + "aws_sagemaker_domain", + "aws_sagemaker_endpoint", + "aws_sagemaker_endpoint_configuration", + "aws_sagemaker_feature_group", + "aws_sagemaker_flow_definition", + "aws_sagemaker_hub", + "aws_sagemaker_human_task_ui", + "aws_sagemaker_image", + "aws_sagemaker_image_version", + "aws_sagemaker_mlflow_tracking_server", + "aws_sagemaker_model", + "aws_sagemaker_model_package_group", + "aws_sagemaker_model_package_group_policy", + "aws_sagemaker_monitoring_schedule", + "aws_sagemaker_notebook_instance", + "aws_sagemaker_notebook_instance_lifecycle_configuration", + "aws_sagemaker_pipeline", + "aws_sagemaker_project", + "aws_sagemaker_servicecatalog_portfolio_status", + "aws_sagemaker_space", + "aws_sagemaker_studio_lifecycle_config", + "aws_sagemaker_user_profile", + "aws_sagemaker_workforce", + "aws_sagemaker_workteam", + "aws_scheduler_schedule", + "aws_scheduler_schedule_group", + "aws_schemas_discoverer", + "aws_schemas_registry", + "aws_schemas_registry_policy", + "aws_schemas_schema", + "aws_secretsmanager_secret", + "aws_secretsmanager_secret_policy", + "aws_secretsmanager_secret_rotation", + "aws_secretsmanager_secret_version", + "aws_security_group", + "aws_security_group_rule", + "aws_securityhub_account", + "aws_securityhub_action_target", + "aws_securityhub_automation_rule", + "aws_securityhub_configuration_policy", + "aws_securityhub_configuration_policy_association", + "aws_securityhub_finding_aggregator", + "aws_securityhub_insight", + "aws_securityhub_invite_accepter", + "aws_securityhub_member", + "aws_securityhub_organization_admin_account", + "aws_securityhub_organization_configuration", + "aws_securityhub_product_subscription", + "aws_securityhub_standards_control", + "aws_securityhub_standards_control_association", + "aws_securityhub_standards_subscription", + "aws_securitylake_aws_log_source", + "aws_securitylake_custom_log_source", + "aws_securitylake_data_lake", + "aws_securitylake_subscriber", + "aws_securitylake_subscriber_notification", + "aws_serverlessapplicationrepository_cloudformation_stack", + "aws_service_discovery_http_namespace", + "aws_service_discovery_instance", + "aws_service_discovery_private_dns_namespace", + "aws_service_discovery_public_dns_namespace", + "aws_service_discovery_service", + "aws_servicecatalog_budget_resource_association", + "aws_servicecatalog_constraint", + "aws_servicecatalog_organizations_access", + "aws_servicecatalog_portfolio", + "aws_servicecatalog_portfolio_share", + "aws_servicecatalog_principal_portfolio_association", + "aws_servicecatalog_product", + "aws_servicecatalog_product_portfolio_association", + "aws_servicecatalog_provisioned_product", + "aws_servicecatalog_provisioning_artifact", + "aws_servicecatalog_service_action", + "aws_servicecatalog_tag_option", + "aws_servicecatalog_tag_option_resource_association", + "aws_servicecatalogappregistry_application", + "aws_servicecatalogappregistry_attribute_group", + "aws_servicecatalogappregistry_attribute_group_association", + "aws_servicequotas_service_quota", + "aws_servicequotas_template", + "aws_servicequotas_template_association", + "aws_ses_active_receipt_rule_set", + "aws_ses_configuration_set", + "aws_ses_domain_dkim", + "aws_ses_domain_identity", + "aws_ses_domain_identity_verification", + "aws_ses_domain_mail_from", + "aws_ses_email_identity", + "aws_ses_event_destination", + "aws_ses_identity_notification_topic", + "aws_ses_identity_policy", + "aws_ses_receipt_filter", + "aws_ses_receipt_rule", + "aws_ses_receipt_rule_set", + "aws_ses_template", + "aws_sesv2_account_suppression_attributes", + "aws_sesv2_account_vdm_attributes", + "aws_sesv2_configuration_set", + "aws_sesv2_configuration_set_event_destination", + "aws_sesv2_contact_list", + "aws_sesv2_dedicated_ip_assignment", + "aws_sesv2_dedicated_ip_pool", + "aws_sesv2_email_identity", + "aws_sesv2_email_identity_feedback_attributes", + "aws_sesv2_email_identity_mail_from_attributes", + "aws_sesv2_email_identity_policy", + "aws_sfn_activity", + "aws_sfn_alias", + "aws_sfn_state_machine", + "aws_shield_application_layer_automatic_response", + "aws_shield_drt_access_log_bucket_association", + "aws_shield_drt_access_role_arn_association", + "aws_shield_proactive_engagement", + "aws_shield_protection", + "aws_shield_protection_group", + "aws_shield_protection_health_check_association", + "aws_shield_subscription", + "aws_signer_signing_job", + "aws_signer_signing_profile", + "aws_signer_signing_profile_permission", + "aws_snapshot_create_volume_permission", + "aws_sns_platform_application", + "aws_sns_sms_preferences", + "aws_sns_topic", + "aws_sns_topic_data_protection_policy", + "aws_sns_topic_policy", + "aws_sns_topic_subscription", + "aws_spot_datafeed_subscription", + "aws_spot_fleet_request", + "aws_spot_instance_request", + "aws_sqs_queue", + "aws_sqs_queue_policy", + "aws_sqs_queue_redrive_allow_policy", + "aws_sqs_queue_redrive_policy", + "aws_ssm_activation", + "aws_ssm_association", + "aws_ssm_default_patch_baseline", + "aws_ssm_document", + "aws_ssm_maintenance_window", + "aws_ssm_maintenance_window_target", + "aws_ssm_maintenance_window_task", + "aws_ssm_parameter", + "aws_ssm_patch_baseline", + "aws_ssm_patch_group", + "aws_ssm_resource_data_sync", + "aws_ssm_service_setting", + "aws_ssmcontacts_contact", + "aws_ssmcontacts_contact_channel", + "aws_ssmcontacts_plan", + "aws_ssmcontacts_rotation", + "aws_ssmincidents_replication_set", + "aws_ssmincidents_response_plan", + "aws_ssmquicksetup_configuration_manager", + "aws_ssoadmin_account_assignment", + "aws_ssoadmin_application", + "aws_ssoadmin_application_access_scope", + "aws_ssoadmin_application_assignment", + "aws_ssoadmin_application_assignment_configuration", + "aws_ssoadmin_customer_managed_policy_attachment", + "aws_ssoadmin_instance_access_control_attributes", + "aws_ssoadmin_managed_policy_attachment", + "aws_ssoadmin_permission_set", + "aws_ssoadmin_permission_set_inline_policy", + "aws_ssoadmin_permissions_boundary_attachment", + "aws_ssoadmin_trusted_token_issuer", + "aws_storagegateway_cache", + "aws_storagegateway_cached_iscsi_volume", + "aws_storagegateway_file_system_association", + "aws_storagegateway_gateway", + "aws_storagegateway_nfs_file_share", + "aws_storagegateway_smb_file_share", + "aws_storagegateway_stored_iscsi_volume", + "aws_storagegateway_tape_pool", + "aws_storagegateway_upload_buffer", + "aws_storagegateway_working_storage", + "aws_subnet", + "aws_swf_domain", + "aws_synthetics_canary", + "aws_synthetics_group", + "aws_synthetics_group_association", + "aws_timestreaminfluxdb_db_cluster", + "aws_timestreaminfluxdb_db_instance", + "aws_timestreamquery_scheduled_query", + "aws_timestreamwrite_database", + "aws_timestreamwrite_table", + "aws_transcribe_language_model", + "aws_transcribe_medical_vocabulary", + "aws_transcribe_vocabulary", + "aws_transcribe_vocabulary_filter", + "aws_transfer_access", + "aws_transfer_agreement", + "aws_transfer_certificate", + "aws_transfer_connector", + "aws_transfer_host_key", + "aws_transfer_profile", + "aws_transfer_server", + "aws_transfer_ssh_key", + "aws_transfer_tag", + "aws_transfer_user", + "aws_transfer_web_app", + "aws_transfer_web_app_customization", + "aws_transfer_workflow", + "aws_verifiedaccess_endpoint", + "aws_verifiedaccess_group", + "aws_verifiedaccess_instance", + "aws_verifiedaccess_instance_logging_configuration", + "aws_verifiedaccess_instance_trust_provider_attachment", + "aws_verifiedaccess_trust_provider", + "aws_verifiedpermissions_identity_source", + "aws_verifiedpermissions_policy", + "aws_verifiedpermissions_policy_store", + "aws_verifiedpermissions_policy_template", + "aws_verifiedpermissions_schema", + "aws_volume_attachment", + "aws_vpc", + "aws_vpc_block_public_access_exclusion", + "aws_vpc_block_public_access_options", + "aws_vpc_dhcp_options", + "aws_vpc_dhcp_options_association", + "aws_vpc_endpoint", + "aws_vpc_endpoint_connection_accepter", + "aws_vpc_endpoint_connection_notification", + "aws_vpc_endpoint_policy", + "aws_vpc_endpoint_private_dns", + "aws_vpc_endpoint_route_table_association", + "aws_vpc_endpoint_security_group_association", + "aws_vpc_endpoint_service", + "aws_vpc_endpoint_service_allowed_principal", + "aws_vpc_endpoint_service_private_dns_verification", + "aws_vpc_endpoint_subnet_association", + "aws_vpc_ipam", + "aws_vpc_ipam_organization_admin_account", + "aws_vpc_ipam_pool", + "aws_vpc_ipam_pool_cidr", + "aws_vpc_ipam_pool_cidr_allocation", + "aws_vpc_ipam_preview_next_cidr", + "aws_vpc_ipam_resource_discovery", + "aws_vpc_ipam_resource_discovery_association", + "aws_vpc_ipam_scope", + "aws_vpc_ipv4_cidr_block_association", + "aws_vpc_ipv6_cidr_block_association", + "aws_vpc_network_performance_metric_subscription", + "aws_vpc_peering_connection", + "aws_vpc_peering_connection_accepter", + "aws_vpc_peering_connection_options", + "aws_vpc_route_server", + "aws_vpc_route_server_association", + "aws_vpc_route_server_endpoint", + "aws_vpc_route_server_peer", + "aws_vpc_route_server_propagation", + "aws_vpc_route_server_vpc_association", + "aws_vpc_security_group_egress_rule", + "aws_vpc_security_group_ingress_rule", + "aws_vpc_security_group_vpc_association", + "aws_vpclattice_access_log_subscription", + "aws_vpclattice_auth_policy", + "aws_vpclattice_listener", + "aws_vpclattice_listener_rule", + "aws_vpclattice_resource_configuration", + "aws_vpclattice_resource_gateway", + "aws_vpclattice_resource_policy", + "aws_vpclattice_service", + "aws_vpclattice_service_network", + "aws_vpclattice_service_network_resource_association", + "aws_vpclattice_service_network_service_association", + "aws_vpclattice_service_network_vpc_association", + "aws_vpclattice_target_group", + "aws_vpclattice_target_group_attachment", + "aws_vpn_connection", + "aws_vpn_connection_route", + "aws_vpn_gateway", + "aws_vpn_gateway_attachment", + "aws_vpn_gateway_route_propagation", + "aws_waf_byte_match_set", + "aws_waf_geo_match_set", + "aws_waf_ipset", + "aws_waf_rate_based_rule", + "aws_waf_regex_match_set", + "aws_waf_regex_pattern_set", + "aws_waf_rule", + "aws_waf_rule_group", + "aws_waf_size_constraint_set", + "aws_waf_sql_injection_match_set", + "aws_waf_web_acl", + "aws_waf_xss_match_set", + "aws_wafregional_byte_match_set", + "aws_wafregional_geo_match_set", + "aws_wafregional_ipset", + "aws_wafregional_rate_based_rule", + "aws_wafregional_regex_match_set", + "aws_wafregional_regex_pattern_set", + "aws_wafregional_rule", + "aws_wafregional_rule_group", + "aws_wafregional_size_constraint_set", + "aws_wafregional_sql_injection_match_set", + "aws_wafregional_web_acl", + "aws_wafregional_web_acl_association", + "aws_wafregional_xss_match_set", + "aws_wafv2_api_key", + "aws_wafv2_ip_set", + "aws_wafv2_regex_pattern_set", + "aws_wafv2_rule_group", + "aws_wafv2_web_acl", + "aws_wafv2_web_acl_association", + "aws_wafv2_web_acl_logging_configuration", + "aws_wafv2_web_acl_rule_group_association", + "aws_workspaces_connection_alias", + "aws_workspaces_directory", + "aws_workspaces_ip_group", + "aws_workspaces_workspace", + "aws_workspacesweb_browser_settings", + "aws_workspacesweb_browser_settings_association", + "aws_workspacesweb_data_protection_settings", + "aws_workspacesweb_data_protection_settings_association", + "aws_workspacesweb_identity_provider", + "aws_workspacesweb_ip_access_settings", + "aws_workspacesweb_ip_access_settings_association", + "aws_workspacesweb_network_settings", + "aws_workspacesweb_network_settings_association", + "aws_workspacesweb_portal", + "aws_workspacesweb_session_logger", + "aws_workspacesweb_session_logger_association", + "aws_workspacesweb_trust_store", + "aws_workspacesweb_trust_store_association", + "aws_workspacesweb_user_access_logging_settings", + "aws_workspacesweb_user_access_logging_settings_association", + "aws_workspacesweb_user_settings", + "aws_workspacesweb_user_settings_association", + "aws_xray_encryption_config", + "aws_xray_group", + "aws_xray_resource_policy", + "aws_xray_sampling_rule" + ], + "dataSources": [ + "aws_account_primary_contact", + "aws_acm_certificate", + "aws_acmpca_certificate", + "aws_acmpca_certificate_authority", + "aws_ami", + "aws_ami_ids", + "aws_api_gateway_api_key", + "aws_api_gateway_api_keys", + "aws_api_gateway_authorizer", + "aws_api_gateway_authorizers", + "aws_api_gateway_domain_name", + "aws_api_gateway_export", + "aws_api_gateway_resource", + "aws_api_gateway_rest_api", + "aws_api_gateway_sdk", + "aws_api_gateway_vpc_link", + "aws_apigatewayv2_api", + "aws_apigatewayv2_apis", + "aws_apigatewayv2_export", + "aws_apigatewayv2_vpc_link", + "aws_appconfig_application", + "aws_appconfig_configuration_profile", + "aws_appconfig_configuration_profiles", + "aws_appconfig_environment", + "aws_appconfig_environments", + "aws_appintegrations_event_integration", + "aws_appmesh_gateway_route", + "aws_appmesh_mesh", + "aws_appmesh_route", + "aws_appmesh_virtual_gateway", + "aws_appmesh_virtual_node", + "aws_appmesh_virtual_router", + "aws_appmesh_virtual_service", + "aws_apprunner_hosted_zone_id", + "aws_appstream_image", + "aws_arn", + "aws_athena_named_query", + "aws_auditmanager_control", + "aws_auditmanager_framework", + "aws_autoscaling_group", + "aws_autoscaling_groups", + "aws_availability_zone", + "aws_availability_zones", + "aws_backup_framework", + "aws_backup_plan", + "aws_backup_report_plan", + "aws_backup_selection", + "aws_backup_vault", + "aws_batch_compute_environment", + "aws_batch_job_definition", + "aws_batch_job_queue", + "aws_batch_scheduling_policy", + "aws_bedrock_custom_model", + "aws_bedrock_custom_models", + "aws_bedrock_foundation_model", + "aws_bedrock_foundation_models", + "aws_bedrock_inference_profile", + "aws_bedrock_inference_profiles", + "aws_bedrockagent_agent_versions", + "aws_billing_service_account", + "aws_billing_views", + "aws_budgets_budget", + "aws_caller_identity", + "aws_canonical_user_id", + "aws_ce_cost_category", + "aws_ce_tags", + "aws_chatbot_slack_workspace", + "aws_cloudcontrolapi_resource", + "aws_cloudformation_export", + "aws_cloudformation_stack", + "aws_cloudformation_type", + "aws_cloudfront_cache_policy", + "aws_cloudfront_distribution", + "aws_cloudfront_function", + "aws_cloudfront_log_delivery_canonical_user_id", + "aws_cloudfront_origin_access_control", + "aws_cloudfront_origin_access_identities", + "aws_cloudfront_origin_access_identity", + "aws_cloudfront_origin_request_policy", + "aws_cloudfront_realtime_log_config", + "aws_cloudfront_response_headers_policy", + "aws_cloudhsm_v2_cluster", + "aws_cloudtrail_service_account", + "aws_cloudwatch_contributor_managed_insight_rules", + "aws_cloudwatch_event_bus", + "aws_cloudwatch_event_buses", + "aws_cloudwatch_event_connection", + "aws_cloudwatch_event_source", + "aws_cloudwatch_log_data_protection_policy_document", + "aws_cloudwatch_log_group", + "aws_cloudwatch_log_groups", + "aws_codeartifact_authorization_token", + "aws_codeartifact_repository_endpoint", + "aws_codebuild_fleet", + "aws_codecatalyst_dev_environment", + "aws_codecommit_approval_rule_template", + "aws_codecommit_repository", + "aws_codeguruprofiler_profiling_group", + "aws_codestarconnections_connection", + "aws_cognito_identity_pool", + "aws_cognito_user_group", + "aws_cognito_user_groups", + "aws_cognito_user_pool", + "aws_cognito_user_pool_client", + "aws_cognito_user_pool_clients", + "aws_cognito_user_pool_signing_certificate", + "aws_cognito_user_pools", + "aws_connect_bot_association", + "aws_connect_contact_flow", + "aws_connect_contact_flow_module", + "aws_connect_hours_of_operation", + "aws_connect_instance", + "aws_connect_instance_storage_config", + "aws_connect_lambda_function_association", + "aws_connect_prompt", + "aws_connect_queue", + "aws_connect_quick_connect", + "aws_connect_routing_profile", + "aws_connect_security_profile", + "aws_connect_user", + "aws_connect_user_hierarchy_group", + "aws_connect_user_hierarchy_structure", + "aws_connect_vocabulary", + "aws_controltower_controls", + "aws_cur_report_definition", + "aws_customer_gateway", + "aws_datapipeline_pipeline", + "aws_datapipeline_pipeline_definition", + "aws_datazone_domain", + "aws_datazone_environment_blueprint", + "aws_db_cluster_snapshot", + "aws_db_event_categories", + "aws_db_instance", + "aws_db_instances", + "aws_db_parameter_group", + "aws_db_proxy", + "aws_db_snapshot", + "aws_db_subnet_group", + "aws_default_tags", + "aws_devopsguru_notification_channel", + "aws_devopsguru_resource_collection", + "aws_directory_service_directory", + "aws_dms_certificate", + "aws_dms_endpoint", + "aws_dms_replication_instance", + "aws_dms_replication_subnet_group", + "aws_dms_replication_task", + "aws_docdb_engine_version", + "aws_docdb_orderable_db_instance", + "aws_dx_connection", + "aws_dx_gateway", + "aws_dx_location", + "aws_dx_locations", + "aws_dx_router_configuration", + "aws_dynamodb_table", + "aws_dynamodb_table_item", + "aws_dynamodb_tables", + "aws_ebs_default_kms_key", + "aws_ebs_encryption_by_default", + "aws_ebs_snapshot", + "aws_ebs_snapshot_ids", + "aws_ebs_volume", + "aws_ebs_volumes", + "aws_ec2_capacity_block_offering", + "aws_ec2_client_vpn_endpoint", + "aws_ec2_coip_pool", + "aws_ec2_coip_pools", + "aws_ec2_host", + "aws_ec2_instance_type", + "aws_ec2_instance_type_offering", + "aws_ec2_instance_type_offerings", + "aws_ec2_instance_types", + "aws_ec2_local_gateway", + "aws_ec2_local_gateway_route_table", + "aws_ec2_local_gateway_route_tables", + "aws_ec2_local_gateway_virtual_interface", + "aws_ec2_local_gateway_virtual_interface_group", + "aws_ec2_local_gateway_virtual_interface_groups", + "aws_ec2_local_gateways", + "aws_ec2_managed_prefix_list", + "aws_ec2_managed_prefix_lists", + "aws_ec2_network_insights_analysis", + "aws_ec2_network_insights_path", + "aws_ec2_public_ipv4_pool", + "aws_ec2_public_ipv4_pools", + "aws_ec2_serial_console_access", + "aws_ec2_spot_price", + "aws_ec2_transit_gateway", + "aws_ec2_transit_gateway_attachment", + "aws_ec2_transit_gateway_attachments", + "aws_ec2_transit_gateway_connect", + "aws_ec2_transit_gateway_connect_peer", + "aws_ec2_transit_gateway_dx_gateway_attachment", + "aws_ec2_transit_gateway_multicast_domain", + "aws_ec2_transit_gateway_peering_attachment", + "aws_ec2_transit_gateway_peering_attachments", + "aws_ec2_transit_gateway_route_table", + "aws_ec2_transit_gateway_route_table_associations", + "aws_ec2_transit_gateway_route_table_propagations", + "aws_ec2_transit_gateway_route_table_routes", + "aws_ec2_transit_gateway_route_tables", + "aws_ec2_transit_gateway_vpc_attachment", + "aws_ec2_transit_gateway_vpc_attachments", + "aws_ec2_transit_gateway_vpn_attachment", + "aws_ecr_authorization_token", + "aws_ecr_image", + "aws_ecr_images", + "aws_ecr_lifecycle_policy_document", + "aws_ecr_pull_through_cache_rule", + "aws_ecr_repositories", + "aws_ecr_repository", + "aws_ecr_repository_creation_template", + "aws_ecrpublic_authorization_token", + "aws_ecrpublic_images", + "aws_ecs_cluster", + "aws_ecs_clusters", + "aws_ecs_container_definition", + "aws_ecs_service", + "aws_ecs_task_definition", + "aws_ecs_task_execution", + "aws_efs_access_point", + "aws_efs_access_points", + "aws_efs_file_system", + "aws_efs_mount_target", + "aws_eip", + "aws_eips", + "aws_eks_access_entry", + "aws_eks_addon", + "aws_eks_addon_version", + "aws_eks_cluster", + "aws_eks_cluster_auth", + "aws_eks_cluster_versions", + "aws_eks_clusters", + "aws_eks_node_group", + "aws_eks_node_groups", + "aws_elastic_beanstalk_application", + "aws_elastic_beanstalk_hosted_zone", + "aws_elastic_beanstalk_solution_stack", + "aws_elasticache_cluster", + "aws_elasticache_replication_group", + "aws_elasticache_reserved_cache_node_offering", + "aws_elasticache_serverless_cache", + "aws_elasticache_subnet_group", + "aws_elasticache_user", + "aws_elasticsearch_domain", + "aws_elb", + "aws_elb_hosted_zone_id", + "aws_elb_service_account", + "aws_emr_release_labels", + "aws_emr_supported_instance_types", + "aws_emrcontainers_virtual_cluster", + "aws_fis_experiment_templates", + "aws_fsx_ontap_file_system", + "aws_fsx_ontap_storage_virtual_machine", + "aws_fsx_ontap_storage_virtual_machines", + "aws_fsx_openzfs_snapshot", + "aws_fsx_windows_file_system", + "aws_globalaccelerator_accelerator", + "aws_globalaccelerator_custom_routing_accelerator", + "aws_glue_catalog_table", + "aws_glue_connection", + "aws_glue_data_catalog_encryption_settings", + "aws_glue_registry", + "aws_glue_script", + "aws_grafana_workspace", + "aws_guardduty_detector", + "aws_guardduty_finding_ids", + "aws_iam_access_keys", + "aws_iam_account_alias", + "aws_iam_group", + "aws_iam_instance_profile", + "aws_iam_instance_profiles", + "aws_iam_openid_connect_provider", + "aws_iam_policy", + "aws_iam_policy_document", + "aws_iam_principal_policy_simulation", + "aws_iam_role", + "aws_iam_roles", + "aws_iam_saml_provider", + "aws_iam_server_certificate", + "aws_iam_session_context", + "aws_iam_user", + "aws_iam_user_ssh_key", + "aws_iam_users", + "aws_identitystore_group", + "aws_identitystore_group_memberships", + "aws_identitystore_groups", + "aws_identitystore_user", + "aws_identitystore_users", + "aws_imagebuilder_component", + "aws_imagebuilder_components", + "aws_imagebuilder_container_recipe", + "aws_imagebuilder_container_recipes", + "aws_imagebuilder_distribution_configuration", + "aws_imagebuilder_distribution_configurations", + "aws_imagebuilder_image", + "aws_imagebuilder_image_pipeline", + "aws_imagebuilder_image_pipelines", + "aws_imagebuilder_image_recipe", + "aws_imagebuilder_image_recipes", + "aws_imagebuilder_infrastructure_configuration", + "aws_imagebuilder_infrastructure_configurations", + "aws_inspector_rules_packages", + "aws_instance", + "aws_instances", + "aws_internet_gateway", + "aws_iot_endpoint", + "aws_iot_registration_code", + "aws_ip_ranges", + "aws_ivs_stream_key", + "aws_kendra_experience", + "aws_kendra_faq", + "aws_kendra_index", + "aws_kendra_query_suggestions_block_list", + "aws_kendra_thesaurus", + "aws_key_pair", + "aws_kinesis_firehose_delivery_stream", + "aws_kinesis_stream", + "aws_kinesis_stream_consumer", + "aws_kms_alias", + "aws_kms_ciphertext", + "aws_kms_custom_key_store", + "aws_kms_key", + "aws_kms_public_key", + "aws_kms_secret", + "aws_kms_secrets", + "aws_lakeformation_data_lake_settings", + "aws_lakeformation_permissions", + "aws_lakeformation_resource", + "aws_lambda_alias", + "aws_lambda_code_signing_config", + "aws_lambda_function", + "aws_lambda_function_url", + "aws_lambda_functions", + "aws_lambda_invocation", + "aws_lambda_layer_version", + "aws_launch_configuration", + "aws_launch_template", + "aws_lb", + "aws_lb_hosted_zone_id", + "aws_lb_listener", + "aws_lb_listener_rule", + "aws_lb_target_group", + "aws_lb_trust_store", + "aws_lbs", + "aws_lex_bot", + "aws_lex_bot_alias", + "aws_lex_intent", + "aws_lex_slot_type", + "aws_licensemanager_grants", + "aws_licensemanager_received_license", + "aws_licensemanager_received_licenses", + "aws_location_geofence_collection", + "aws_location_map", + "aws_location_place_index", + "aws_location_route_calculator", + "aws_location_tracker", + "aws_location_tracker_association", + "aws_location_tracker_associations", + "aws_media_convert_queue", + "aws_medialive_input", + "aws_memorydb_acl", + "aws_memorydb_cluster", + "aws_memorydb_parameter_group", + "aws_memorydb_snapshot", + "aws_memorydb_subnet_group", + "aws_memorydb_user", + "aws_mq_broker", + "aws_mq_broker_engine_types", + "aws_mq_broker_instance_type_offerings", + "aws_msk_bootstrap_brokers", + "aws_msk_broker_nodes", + "aws_msk_cluster", + "aws_msk_configuration", + "aws_msk_kafka_version", + "aws_msk_vpc_connection", + "aws_mskconnect_connector", + "aws_mskconnect_custom_plugin", + "aws_mskconnect_worker_configuration", + "aws_nat_gateway", + "aws_nat_gateways", + "aws_neptune_engine_version", + "aws_neptune_orderable_db_instance", + "aws_network_acls", + "aws_network_interface", + "aws_network_interfaces", + "aws_networkfirewall_firewall", + "aws_networkfirewall_firewall_policy", + "aws_networkfirewall_resource_policy", + "aws_networkmanager_connection", + "aws_networkmanager_connections", + "aws_networkmanager_core_network_policy_document", + "aws_networkmanager_device", + "aws_networkmanager_devices", + "aws_networkmanager_global_network", + "aws_networkmanager_global_networks", + "aws_networkmanager_link", + "aws_networkmanager_links", + "aws_networkmanager_site", + "aws_networkmanager_sites", + "aws_oam_link", + "aws_oam_links", + "aws_oam_sink", + "aws_oam_sinks", + "aws_odb_cloud_autonomous_vm_cluster", + "aws_odb_cloud_autonomous_vm_clusters", + "aws_odb_cloud_exadata_infrastructure", + "aws_odb_cloud_exadata_infrastructures", + "aws_odb_cloud_vm_cluster", + "aws_odb_cloud_vm_clusters", + "aws_odb_db_node", + "aws_odb_db_nodes", + "aws_odb_db_server", + "aws_odb_db_servers", + "aws_odb_db_system_shapes", + "aws_odb_gi_versions", + "aws_odb_network", + "aws_odb_network_peering_connection", + "aws_odb_network_peering_connections", + "aws_odb_networks", + "aws_opensearch_domain", + "aws_opensearchserverless_access_policy", + "aws_opensearchserverless_collection", + "aws_opensearchserverless_lifecycle_policy", + "aws_opensearchserverless_security_config", + "aws_opensearchserverless_security_policy", + "aws_opensearchserverless_vpc_endpoint", + "aws_organizations_delegated_administrators", + "aws_organizations_delegated_services", + "aws_organizations_organization", + "aws_organizations_organizational_unit", + "aws_organizations_organizational_unit_child_accounts", + "aws_organizations_organizational_unit_descendant_accounts", + "aws_organizations_organizational_unit_descendant_organizational_units", + "aws_organizations_organizational_units", + "aws_organizations_policies", + "aws_organizations_policies_for_target", + "aws_organizations_policy", + "aws_organizations_resource_tags", + "aws_outposts_asset", + "aws_outposts_assets", + "aws_outposts_outpost", + "aws_outposts_outpost_instance_type", + "aws_outposts_outpost_instance_types", + "aws_outposts_outposts", + "aws_outposts_site", + "aws_outposts_sites", + "aws_partition", + "aws_polly_voices", + "aws_prefix_list", + "aws_pricing_product", + "aws_prometheus_default_scraper_configuration", + "aws_prometheus_workspace", + "aws_prometheus_workspaces", + "aws_qldb_ledger", + "aws_quicksight_analysis", + "aws_quicksight_data_set", + "aws_quicksight_group", + "aws_quicksight_theme", + "aws_quicksight_user", + "aws_ram_resource_share", + "aws_rds_certificate", + "aws_rds_cluster", + "aws_rds_cluster_parameter_group", + "aws_rds_clusters", + "aws_rds_engine_version", + "aws_rds_global_cluster", + "aws_rds_orderable_db_instance", + "aws_rds_reserved_instance_offering", + "aws_redshift_cluster", + "aws_redshift_cluster_credentials", + "aws_redshift_data_shares", + "aws_redshift_orderable_cluster", + "aws_redshift_producer_data_shares", + "aws_redshift_subnet_group", + "aws_redshiftserverless_credentials", + "aws_redshiftserverless_namespace", + "aws_redshiftserverless_workgroup", + "aws_region", + "aws_regions", + "aws_resourceexplorer2_search", + "aws_resourcegroupstaggingapi_resources", + "aws_route", + "aws_route53_delegation_set", + "aws_route53_records", + "aws_route53_resolver_endpoint", + "aws_route53_resolver_firewall_config", + "aws_route53_resolver_firewall_domain_list", + "aws_route53_resolver_firewall_rule_group", + "aws_route53_resolver_firewall_rule_group_association", + "aws_route53_resolver_firewall_rules", + "aws_route53_resolver_query_log_config", + "aws_route53_resolver_rule", + "aws_route53_resolver_rules", + "aws_route53_traffic_policy_document", + "aws_route53_zone", + "aws_route53_zones", + "aws_route53profiles_profiles", + "aws_route_table", + "aws_route_tables", + "aws_s3_access_point", + "aws_s3_account_public_access_block", + "aws_s3_bucket", + "aws_s3_bucket_object", + "aws_s3_bucket_objects", + "aws_s3_bucket_policy", + "aws_s3_directory_buckets", + "aws_s3_object", + "aws_s3_objects", + "aws_s3control_multi_region_access_point", + "aws_sagemaker_prebuilt_ecr_image", + "aws_secretsmanager_random_password", + "aws_secretsmanager_secret", + "aws_secretsmanager_secret_rotation", + "aws_secretsmanager_secret_version", + "aws_secretsmanager_secret_versions", + "aws_secretsmanager_secrets", + "aws_security_group", + "aws_security_groups", + "aws_securityhub_standards_control_associations", + "aws_serverlessapplicationrepository_application", + "aws_service", + "aws_service_discovery_dns_namespace", + "aws_service_discovery_http_namespace", + "aws_service_discovery_service", + "aws_service_principal", + "aws_servicecatalog_constraint", + "aws_servicecatalog_launch_paths", + "aws_servicecatalog_portfolio", + "aws_servicecatalog_portfolio_constraints", + "aws_servicecatalog_product", + "aws_servicecatalog_provisioning_artifacts", + "aws_servicecatalogappregistry_application", + "aws_servicecatalogappregistry_attribute_group", + "aws_servicecatalogappregistry_attribute_group_associations", + "aws_servicequotas_service", + "aws_servicequotas_service_quota", + "aws_servicequotas_templates", + "aws_ses_active_receipt_rule_set", + "aws_ses_domain_identity", + "aws_ses_email_identity", + "aws_sesv2_configuration_set", + "aws_sesv2_dedicated_ip_pool", + "aws_sesv2_email_identity", + "aws_sesv2_email_identity_mail_from_attributes", + "aws_sfn_activity", + "aws_sfn_alias", + "aws_sfn_state_machine", + "aws_sfn_state_machine_versions", + "aws_shield_protection", + "aws_signer_signing_job", + "aws_signer_signing_profile", + "aws_sns_topic", + "aws_spot_datafeed_subscription", + "aws_sqs_queue", + "aws_sqs_queues", + "aws_ssm_document", + "aws_ssm_instances", + "aws_ssm_maintenance_windows", + "aws_ssm_parameter", + "aws_ssm_parameters_by_path", + "aws_ssm_patch_baseline", + "aws_ssm_patch_baselines", + "aws_ssmcontacts_contact", + "aws_ssmcontacts_contact_channel", + "aws_ssmcontacts_plan", + "aws_ssmcontacts_rotation", + "aws_ssmincidents_replication_set", + "aws_ssmincidents_response_plan", + "aws_ssoadmin_application", + "aws_ssoadmin_application_assignments", + "aws_ssoadmin_application_providers", + "aws_ssoadmin_instances", + "aws_ssoadmin_permission_set", + "aws_ssoadmin_permission_sets", + "aws_ssoadmin_principal_application_assignments", + "aws_storagegateway_local_disk", + "aws_subnet", + "aws_subnet_ids", + "aws_subnets", + "aws_synthetics_runtime_version", + "aws_synthetics_runtime_versions", + "aws_timestreamwrite_database", + "aws_timestreamwrite_table", + "aws_transfer_connector", + "aws_transfer_server", + "aws_verifiedpermissions_policy_store", + "aws_vpc", + "aws_vpc_dhcp_options", + "aws_vpc_endpoint", + "aws_vpc_endpoint_associations", + "aws_vpc_endpoint_service", + "aws_vpc_ipam", + "aws_vpc_ipam_pool", + "aws_vpc_ipam_pool_cidrs", + "aws_vpc_ipam_pools", + "aws_vpc_ipam_preview_next_cidr", + "aws_vpc_ipams", + "aws_vpc_peering_connection", + "aws_vpc_peering_connections", + "aws_vpc_security_group_rule", + "aws_vpc_security_group_rules", + "aws_vpclattice_auth_policy", + "aws_vpclattice_listener", + "aws_vpclattice_resource_policy", + "aws_vpclattice_service", + "aws_vpclattice_service_network", + "aws_vpcs", + "aws_vpn_connection", + "aws_vpn_gateway", + "aws_waf_ipset", + "aws_waf_rate_based_rule", + "aws_waf_rule", + "aws_waf_subscribed_rule_group", + "aws_waf_web_acl", + "aws_wafregional_ipset", + "aws_wafregional_rate_based_rule", + "aws_wafregional_rule", + "aws_wafregional_subscribed_rule_group", + "aws_wafregional_web_acl", + "aws_wafv2_ip_set", + "aws_wafv2_regex_pattern_set", + "aws_wafv2_rule_group", + "aws_wafv2_web_acl", + "aws_workspaces_bundle", + "aws_workspaces_directory", + "aws_workspaces_image", + "aws_workspaces_workspace" + ] +} \ No newline at end of file diff --git a/src/parse/azurerm-members.json b/src/parse/azurerm-members.json index e4e929c8..753b8536 100755 --- a/src/parse/azurerm-members.json +++ b/src/parse/azurerm-members.json @@ -1,1453 +1,1519 @@ -{ - "dataSources": [ - "azurerm_aadb2c_directory", - "azurerm_active_directory_domain_service", - "azurerm_advisor_recommendations", - "azurerm_api_management", - "azurerm_api_management_api", - "azurerm_api_management_api_version_set", - "azurerm_api_management_gateway", - "azurerm_api_management_gateway_host_name_configuration", - "azurerm_api_management_group", - "azurerm_api_management_product", - "azurerm_api_management_subscription", - "azurerm_api_management_user", - "azurerm_app_configuration", - "azurerm_app_configuration_key", - "azurerm_app_configuration_keys", - "azurerm_app_service", - "azurerm_app_service_certificate", - "azurerm_app_service_certificate_order", - "azurerm_app_service_environment_v3", - "azurerm_app_service_plan", - "azurerm_application_gateway", - "azurerm_application_insights", - "azurerm_application_security_group", - "azurerm_arc_machine", - "azurerm_arc_resource_bridge_appliance", - "azurerm_attestation", - "azurerm_automation_account", - "azurerm_automation_runbook", - "azurerm_automation_variable_bool", - "azurerm_automation_variable_datetime", - "azurerm_automation_variable_int", - "azurerm_automation_variable_object", - "azurerm_automation_variable_string", - "azurerm_automation_variables", - "azurerm_availability_set", - "azurerm_backup_policy_file_share", - "azurerm_backup_policy_vm", - "azurerm_bastion_host", - "azurerm_batch_account", - "azurerm_batch_application", - "azurerm_batch_certificate", - "azurerm_batch_pool", - "azurerm_billing_enrollment_account_scope", - "azurerm_billing_mca_account_scope", - "azurerm_billing_mpa_account_scope", - "azurerm_blueprint_definition", - "azurerm_blueprint_published_version", - "azurerm_cdn_frontdoor_custom_domain", - "azurerm_cdn_frontdoor_endpoint", - "azurerm_cdn_frontdoor_firewall_policy", - "azurerm_cdn_frontdoor_origin_group", - "azurerm_cdn_frontdoor_profile", - "azurerm_cdn_frontdoor_rule_set", - "azurerm_cdn_frontdoor_secret", - "azurerm_cdn_profile", - "azurerm_client_config", - "azurerm_cognitive_account", - "azurerm_communication_service", - "azurerm_confidential_ledger", - "azurerm_consumption_budget_resource_group", - "azurerm_consumption_budget_subscription", - "azurerm_container_app", - "azurerm_container_app_environment.", - "azurerm_container_app_environment_certificate.", - "azurerm_container_app_environment_dapr_component.", - "azurerm_container_group", - "azurerm_container_registry", - "azurerm_container_registry_cache_rule", - "azurerm_container_registry_scope_map", - "azurerm_container_registry_token", - "azurerm_cosmosdb_account", - "azurerm_cosmosdb_mongo_database", - "azurerm_cosmosdb_restorable_database_accounts", - "azurerm_cosmosdb_sql_database", - "azurerm_dashboard_grafana", - "azurerm_data_factory", - "azurerm_data_factory_trigger_schedule", - "azurerm_data_factory_trigger_schedules", - "azurerm_data_lake_store", - "azurerm_data_protection_backup_vault", - "azurerm_data_share", - "azurerm_data_share_account", - "azurerm_data_share_dataset_blob_storage", - "azurerm_data_share_dataset_data_lake_gen1", - "azurerm_data_share_dataset_data_lake_gen2", - "azurerm_data_share_dataset_kusto_cluster", - "azurerm_data_share_dataset_kusto_database", - "azurerm_database_migration_project", - "azurerm_database_migration_service", - "azurerm_databricks_access_connector", - "azurerm_databricks_workspace", - "azurerm_databricks_workspace_private_endpoint_connection", - "azurerm_dedicated_host", - "azurerm_dedicated_host_group", - "azurerm_dev_center", - "azurerm_dev_center_catalog", - "azurerm_dev_center_gallery", - "azurerm_dev_center_network_connection", - "azurerm_dev_center_project", - "azurerm_dev_center_project_environment_type", - "azurerm_digital_twins_instance", - "azurerm_disk_access", - "azurerm_disk_encryption_set", - "azurerm_dns_a_record", - "azurerm_dns_aaaa_record", - "azurerm_dns_caa_record", - "azurerm_dns_cname_record", - "azurerm_dns_mx_record", - "azurerm_dns_ns_record", - "azurerm_dns_ptr_record", - "azurerm_dns_soa_record", - "azurerm_dns_srv_record", - "azurerm_dns_txt_record", - "azurerm_dns_zone", - "azurerm_dynatrace_monitor", - "azurerm_elastic_cloud_elasticsearch", - "azurerm_elastic_san", - "azurerm_elastic_san_volume_group", - "azurerm_elastic_san_volume_snapshot", - "azurerm_eventgrid_domain", - "azurerm_eventgrid_domain_topic", - "azurerm_eventgrid_system_topic", - "azurerm_eventgrid_topic", - "azurerm_eventhub", - "azurerm_eventhub_cluster", - "azurerm_eventhub_consumer_group", - "azurerm_eventhub_namespace", - "azurerm_eventhub_namespace_authorization_rule", - "azurerm_eventhub_sas", - "azurerm_express_route_circuit", - "azurerm_express_route_circuit_peering", - "azurerm_extended_location_custom_location", - "azurerm_extended_locations", - "azurerm_firewall", - "azurerm_firewall_policy", - "azurerm_function_app", - "azurerm_function_app_host_keys", - "azurerm_hdinsight_cluster", - "azurerm_healthcare_dicom_service", - "azurerm_healthcare_fhir_service", - "azurerm_healthcare_medtech_service", - "azurerm_healthcare_service", - "azurerm_healthcare_workspace", - "azurerm_image", - "azurerm_images", - "azurerm_iothub", - "azurerm_iothub_dps", - "azurerm_iothub_dps_shared_access_policy", - "azurerm_iothub_shared_access_policy", - "azurerm_ip_group", - "azurerm_ip_groups", - "azurerm_key_vault", - "azurerm_key_vault_access_policy", - "azurerm_key_vault_certificate", - "azurerm_key_vault_certificate_data", - "azurerm_key_vault_certificate_issuer", - "azurerm_key_vault_certificates", - "azurerm_key_vault_encrypted_value", - "azurerm_key_vault_key", - "azurerm_key_vault_managed_hardware_security_module", - "azurerm_key_vault_managed_hardware_security_module_key", - "azurerm_key_vault_managed_hardware_security_module_role_definition", - "azurerm_key_vault_secret", - "azurerm_key_vault_secrets", - "azurerm_kubernetes_cluster", - "azurerm_kubernetes_cluster_node_pool", - "azurerm_kubernetes_fleet_manager", - "azurerm_kubernetes_node_pool_snapshot", - "azurerm_kubernetes_service_versions", - "azurerm_kusto_cluster", - "azurerm_kusto_database", - "azurerm_lb", - "azurerm_lb_backend_address_pool", - "azurerm_lb_outbound_rule", - "azurerm_lb_rule", - "azurerm_linux_function_app", - "azurerm_linux_web_app", - "azurerm_local_network_gateway", - "azurerm_location", - "azurerm_log_analytics_workspace", - "azurerm_logic_app_integration_account", - "azurerm_logic_app_standard", - "azurerm_logic_app_workflow", - "azurerm_machine_learning_workspace", - "azurerm_maintenance_configuration", - "azurerm_managed_api", - "azurerm_managed_application_definition", - "azurerm_managed_disk", - "azurerm_management_group", - "azurerm_management_group_template_deployment", - "azurerm_maps_account", - "azurerm_monitor_action_group", - "azurerm_monitor_data_collection_endpoint", - "azurerm_monitor_data_collection_rule", - "azurerm_monitor_diagnostic_categories", - "azurerm_monitor_scheduled_query_rules_alert", - "azurerm_monitor_scheduled_query_rules_log", - "azurerm_monitor_workspace", - "azurerm_mssql_database", - "azurerm_mssql_elasticpool", - "azurerm_mssql_managed_database", - "azurerm_mssql_managed_instance", - "azurerm_mssql_server", - "azurerm_nat_gateway", - "azurerm_netapp_account", - "azurerm_netapp_account_encryption", - "azurerm_netapp_pool", - "azurerm_netapp_snapshot", - "azurerm_netapp_snapshot_policy", - "azurerm_netapp_volume", - "azurerm_netapp_volume_group_oracle", - "azurerm_netapp_volume_group_sap_hana", - "azurerm_netapp_volume_quota_rule", - "azurerm_network_ddos_protection_plan", - "azurerm_network_interface", - "azurerm_network_manager_connectivity_configuration", - "azurerm_network_security_group", - "azurerm_network_service_tags", - "azurerm_network_watcher", - "azurerm_nginx_api_key", - "azurerm_nginx_certificate", - "azurerm_nginx_configuration", - "azurerm_nginx_deployment", - "azurerm_notification_hub", - "azurerm_notification_hub_namespace", - "azurerm_oracle_adbs_character_sets", - "azurerm_oracle_adbs_national_character_sets", - "azurerm_oracle_autonomous_database", - "azurerm_oracle_cloud_vm_cluster", - "azurerm_oracle_db_nodes", - "azurerm_oracle_db_servers", - "azurerm_oracle_db_system_shapes", - "azurerm_oracle_exadata_infrastructure", - "azurerm_oracle_gi_versions", - "azurerm_orchestrated_virtual_machine_scale_set", - "azurerm_palo_alto_local_rulestack", - "azurerm_platform_image", - "azurerm_policy_assignment", - "azurerm_policy_definition", - "azurerm_policy_definition_built_in", - "azurerm_policy_set_definition", - "azurerm_policy_virtual_machine_configuration_assignment", - "azurerm_portal_dashboard", - "azurerm_postgresql_flexible_server", - "azurerm_postgresql_server", - "azurerm_private_dns_a_record", - "azurerm_private_dns_aaaa_record", - "azurerm_private_dns_cname_record", - "azurerm_private_dns_mx_record", - "azurerm_private_dns_ptr_record", - "azurerm_private_dns_resolver", - "azurerm_private_dns_resolver_dns_forwarding_ruleset", - "azurerm_private_dns_resolver_forwarding_rule", - "azurerm_private_dns_resolver_inbound_endpoint", - "azurerm_private_dns_resolver_outbound_endpoint", - "azurerm_private_dns_resolver_virtual_network_link", - "azurerm_private_dns_soa_record", - "azurerm_private_dns_srv_record", - "azurerm_private_dns_txt_record", - "azurerm_private_dns_zone", - "azurerm_private_dns_zone_virtual_network_link", - "azurerm_private_endpoint_connection", - "azurerm_private_link_service", - "azurerm_private_link_service_endpoint_connections", - "azurerm_proximity_placement_group", - "azurerm_public_ip", - "azurerm_public_ip_prefix", - "azurerm_public_ips", - "azurerm_public_maintenance_configurations", - "azurerm_recovery_services_vault", - "azurerm_redis_cache", - "azurerm_redis_enterprise_database", - "azurerm_resource_group", - "azurerm_resource_group_template_deployment", - "azurerm_resources", - "azurerm_role_assignments", - "azurerm_role_definition", - "azurerm_role_management_policy", - "azurerm_route_filter", - "azurerm_route_table", - "azurerm_sentinel_alert_rule", - "azurerm_sentinel_alert_rule_anomaly", - "azurerm_sentinel_alert_rule_template", - "azurerm_service_plan", - "azurerm_servicebus_namespace", - "azurerm_servicebus_namespace_authorization_rule", - "azurerm_servicebus_namespace_disaster_recovery_config", - "azurerm_servicebus_queue", - "azurerm_servicebus_queue_authorization_rule", - "azurerm_servicebus_subscription", - "azurerm_servicebus_topic", - "azurerm_servicebus_topic_authorization_rule", - "azurerm_shared_image", - "azurerm_shared_image_gallery", - "azurerm_shared_image_version", - "azurerm_shared_image_versions", - "azurerm_signalr_service", - "azurerm_site_recovery_fabric", - "azurerm_site_recovery_protection_container", - "azurerm_site_recovery_replication_policy", - "azurerm_snapshot", - "azurerm_source_control_token", - "azurerm_spring_cloud_app", - "azurerm_spring_cloud_service", - "azurerm_ssh_public_key", - "azurerm_stack_hci_cluster", - "azurerm_stack_hci_storage_path", - "azurerm_static_web_app", - "azurerm_storage_account", - "azurerm_storage_account_blob_container_sas", - "azurerm_storage_account_sas", - "azurerm_storage_blob", - "azurerm_storage_container", - "azurerm_storage_containers", - "azurerm_storage_encryption_scope", - "azurerm_storage_management_policy", - "azurerm_storage_queue", - "azurerm_storage_share", - "azurerm_storage_sync", - "azurerm_storage_sync_group", - "azurerm_storage_table", - "azurerm_storage_table_entity", - "azurerm_stream_analytics_job", - "azurerm_subnet", - "azurerm_subscription", - "azurerm_subscription_template_deployment", - "azurerm_subscriptions", - "azurerm_synapse_workspace", - "azurerm_system_center_virtual_machine_manager_inventory_items", - "azurerm_template_spec_version", - "azurerm_tenant_template_deployment", - "azurerm_traffic_manager_geographical_location", - "azurerm_traffic_manager_profile", - "azurerm_user_assigned_identity", - "azurerm_virtual_desktop_application_group", - "azurerm_virtual_desktop_host_pool", - "azurerm_virtual_desktop_workspace", - "azurerm_virtual_hub", - "azurerm_virtual_hub_connection", - "azurerm_virtual_hub_route_table", - "azurerm_virtual_machine", - "azurerm_virtual_machine_scale_set", - "azurerm_virtual_network", - "azurerm_virtual_network_gateway", - "azurerm_virtual_network_gateway_connection", - "azurerm_virtual_network_peering", - "azurerm_virtual_wan", - "azurerm_vmware_private_cloud", - "azurerm_vpn_gateway", - "azurerm_vpn_server_configuration", - "azurerm_web_application_firewall_policy", - "azurerm_web_pubsub", - "azurerm_web_pubsub_private_link_resource", - "azurerm_windows_function_app", - "azurerm_windows_web_app", - "netapp_backup_policy", - "netapp_backup_vault" - ], - "resources": [ - "azurerm_aadb2c_directory", - "azurerm_active_directory_domain_service", - "azurerm_active_directory_domain_service_replica_set", - "azurerm_active_directory_domain_service_trust", - "azurerm_advanced_threat_protection", - "azurerm_advisor_suppression", - "azurerm_ai_foundry", - "azurerm_ai_foundry_project", - "azurerm_ai_services", - "azurerm_analysis_services_server", - "azurerm_api_connection", - "azurerm_api_management", - "azurerm_api_management_api", - "azurerm_api_management_api_diagnostic", - "azurerm_api_management_api_operation", - "azurerm_api_management_api_operation_policy", - "azurerm_api_management_api_operation_tag", - "azurerm_api_management_api_policy", - "azurerm_api_management_api_release", - "azurerm_api_management_api_schema", - "azurerm_api_management_api_tag", - "azurerm_api_management_api_tag_description", - "azurerm_api_management_api_version_set", - "azurerm_api_management_authorization_server", - "azurerm_api_management_backend", - "azurerm_api_management_certificate", - "azurerm_api_management_custom_domain", - "azurerm_api_management_diagnostic", - "azurerm_api_management_email_template", - "azurerm_api_management_gateway", - "azurerm_api_management_gateway_api", - "azurerm_api_management_gateway_certificate_authority", - "azurerm_api_management_gateway_host_name_configuration", - "azurerm_api_management_global_schema", - "azurerm_api_management_group", - "azurerm_api_management_group_user", - "azurerm_api_management_identity_provider_aad", - "azurerm_api_management_identity_provider_aadb2c", - "azurerm_api_management_identity_provider_facebook", - "azurerm_api_management_identity_provider_google", - "azurerm_api_management_identity_provider_microsoft", - "azurerm_api_management_identity_provider_twitter", - "azurerm_api_management_logger", - "azurerm_api_management_named_value", - "azurerm_api_management_notification_recipient_email", - "azurerm_api_management_notification_recipient_user", - "azurerm_api_management_openid_connect_provider", - "azurerm_api_management_policy", - "azurerm_api_management_policy_fragment", - "azurerm_api_management_product", - "azurerm_api_management_product_api", - "azurerm_api_management_product_group", - "azurerm_api_management_product_policy", - "azurerm_api_management_product_tag", - "azurerm_api_management_redis_cache", - "azurerm_api_management_subscription", - "azurerm_api_management_tag", - "azurerm_api_management_user", - "azurerm_app_configuration", - "azurerm_app_configuration_feature", - "azurerm_app_configuration_key", - "azurerm_app_service", - "azurerm_app_service_active_slot", - "azurerm_app_service_certificate", - "azurerm_app_service_certificate_binding", - "azurerm_app_service_certificate_order", - "azurerm_app_service_connection", - "azurerm_app_service_custom_hostname_binding", - "azurerm_app_service_environment_v3", - "azurerm_app_service_hybrid_connection", - "azurerm_app_service_managed_certificate", - "azurerm_app_service_plan", - "azurerm_app_service_public_certificate", - "azurerm_app_service_slot", - "azurerm_app_service_slot_custom_hostname_binding", - "azurerm_app_service_slot_virtual_network_swift_connection", - "azurerm_app_service_source_control", - "azurerm_app_service_source_control_slot", - "azurerm_app_service_source_control_token", - "azurerm_app_service_virtual_network_swift_connection", - "azurerm_application_gateway", - "azurerm_application_insights", - "azurerm_application_insights_analytics_item", - "azurerm_application_insights_api_key", - "azurerm_application_insights_smart_detection_rule", - "azurerm_application_insights_workbook", - "azurerm_application_insights_workbook_template", - "azurerm_application_load_balancer", - "azurerm_application_load_balancer_frontend", - "azurerm_application_load_balancer_subnet_association", - "azurerm_application_security_group", - "azurerm_arc_kubernetes_cluster", - "azurerm_arc_kubernetes_cluster_extension", - "azurerm_arc_kubernetes_flux_configuration", - "azurerm_arc_kubernetes_provisioned_cluster", - "azurerm_arc_machine", - "azurerm_arc_machine_automanage_configuration_assignment", - "azurerm_arc_machine_extension", - "azurerm_arc_private_link_scope", - "azurerm_arc_resource_bridge_appliance", - "azurerm_attestation_provider", - "azurerm_automanage_configuration", - "azurerm_automation_account", - "azurerm_automation_certificate", - "azurerm_automation_connection", - "azurerm_automation_connection_certificate", - "azurerm_automation_connection_classic_certificate", - "azurerm_automation_connection_service_principal", - "azurerm_automation_connection_type", - "azurerm_automation_credential", - "azurerm_automation_dsc_configuration", - "azurerm_automation_dsc_nodeconfiguration", - "azurerm_automation_hybrid_runbook_worker", - "azurerm_automation_hybrid_runbook_worker_group", - "azurerm_automation_job_schedule", - "azurerm_automation_module", - "azurerm_automation_powershell72_module", - "azurerm_automation_python3_package", - "azurerm_automation_runbook", - "azurerm_automation_schedule", - "azurerm_automation_software_update_configuration", - "azurerm_automation_source_control", - "azurerm_automation_variable_bool", - "azurerm_automation_variable_datetime", - "azurerm_automation_variable_int", - "azurerm_automation_variable_object", - "azurerm_automation_variable_string", - "azurerm_automation_watcher", - "azurerm_automation_webhook", - "azurerm_availability_set", - "azurerm_backup_container_storage_account", - "azurerm_backup_policy_file_share", - "azurerm_backup_policy_vm", - "azurerm_backup_policy_vm_workload", - "azurerm_backup_protected_file_share", - "azurerm_backup_protected_vm", - "azurerm_bastion_host", - "azurerm_batch_account", - "azurerm_batch_application", - "azurerm_batch_certificate", - "azurerm_batch_job", - "azurerm_batch_pool", - "azurerm_billing_account_cost_management_export", - "azurerm_blueprint_assignment", - "azurerm_bot_channel_alexa", - "azurerm_bot_channel_direct_line_speech", - "azurerm_bot_channel_directline", - "azurerm_bot_channel_email", - "azurerm_bot_channel_facebook", - "azurerm_bot_channel_line", - "azurerm_bot_channel_ms_teams", - "azurerm_bot_channel_slack", - "azurerm_bot_channel_sms", - "azurerm_bot_channel_web_chat", - "azurerm_bot_channels_registration", - "azurerm_bot_connection", - "azurerm_bot_service_azure_bot", - "azurerm_bot_web_app", - "azurerm_capacity_reservation", - "azurerm_capacity_reservation_group", - "azurerm_cdn_endpoint", - "azurerm_cdn_endpoint_custom_domain", - "azurerm_cdn_frontdoor_custom_domain", - "azurerm_cdn_frontdoor_custom_domain_association", - "azurerm_cdn_frontdoor_endpoint", - "azurerm_cdn_frontdoor_firewall_policy", - "azurerm_cdn_frontdoor_origin", - "azurerm_cdn_frontdoor_origin_group", - "azurerm_cdn_frontdoor_profile", - "azurerm_cdn_frontdoor_route", - "azurerm_cdn_frontdoor_rule", - "azurerm_cdn_frontdoor_rule_set", - "azurerm_cdn_frontdoor_secret", - "azurerm_cdn_frontdoor_security_policy", - "azurerm_cdn_profile", - "azurerm_chaos_studio_capability", - "azurerm_chaos_studio_experiment", - "azurerm_chaos_studio_target", - "azurerm_cognitive_account", - "azurerm_cognitive_account_customer_managed_key", - "azurerm_cognitive_account_rai_blocklist", - "azurerm_cognitive_account_rai_policy", - "azurerm_cognitive_deployment", - "azurerm_communication_service", - "azurerm_communication_service_email_domain_association", - "azurerm_confidential_ledger", - "azurerm_consumption_budget_management_group", - "azurerm_consumption_budget_resource_group", - "azurerm_consumption_budget_subscription", - "azurerm_container_app", - "azurerm_container_app_custom_domain", - "azurerm_container_app_environment", - "azurerm_container_app_environment_certificate", - "azurerm_container_app_environment_custom_domain", - "azurerm_container_app_environment_dapr_component", - "azurerm_container_app_environment_storage", - "azurerm_container_app_job", - "azurerm_container_connected_registry", - "azurerm_container_group", - "azurerm_container_registry", - "azurerm_container_registry_agent_pool", - "azurerm_container_registry_cache_rule", - "azurerm_container_registry_credential_set", - "azurerm_container_registry_scope_map", - "azurerm_container_registry_task", - "azurerm_container_registry_task_schedule_run_now", - "azurerm_container_registry_token", - "azurerm_container_registry_token_password", - "azurerm_container_registry_webhook", - "azurerm_cosmosdb_account", - "azurerm_cosmosdb_cassandra_cluster", - "azurerm_cosmosdb_cassandra_datacenter", - "azurerm_cosmosdb_cassandra_keyspace", - "azurerm_cosmosdb_cassandra_table", - "azurerm_cosmosdb_gremlin_database", - "azurerm_cosmosdb_gremlin_graph", - "azurerm_cosmosdb_mongo_collection", - "azurerm_cosmosdb_mongo_database", - "azurerm_cosmosdb_mongo_role_definition", - "azurerm_cosmosdb_mongo_user_definition", - "azurerm_cosmosdb_postgresql_cluster", - "azurerm_cosmosdb_postgresql_coordinator_configuration", - "azurerm_cosmosdb_postgresql_firewall_rule", - "azurerm_cosmosdb_postgresql_node_configuration", - "azurerm_cosmosdb_postgresql_role", - "azurerm_cosmosdb_sql_container", - "azurerm_cosmosdb_sql_database", - "azurerm_cosmosdb_sql_dedicated_gateway", - "azurerm_cosmosdb_sql_function", - "azurerm_cosmosdb_sql_role_assignment", - "azurerm_cosmosdb_sql_role_definition", - "azurerm_cosmosdb_sql_stored_procedure", - "azurerm_cosmosdb_sql_trigger", - "azurerm_cosmosdb_table", - "azurerm_cost_anomaly_alert", - "azurerm_cost_management_scheduled_action", - "azurerm_custom_ip_prefix", - "azurerm_custom_provider", - "azurerm_dashboard", - "azurerm_dashboard_grafana", - "azurerm_dashboard_grafana_managed_private_endpoint", - "azurerm_data_factory", - "azurerm_data_factory_credential_service_principal", - "azurerm_data_factory_credential_user_managed_identity", - "azurerm_data_factory_custom_dataset", - "azurerm_data_factory_data_flow", - "azurerm_data_factory_dataset_azure_blob", - "azurerm_data_factory_dataset_azure_sql_table", - "azurerm_data_factory_dataset_binary", - "azurerm_data_factory_dataset_cosmosdb_sqlapi", - "azurerm_data_factory_dataset_delimited_text", - "azurerm_data_factory_dataset_http", - "azurerm_data_factory_dataset_json", - "azurerm_data_factory_dataset_mysql", - "azurerm_data_factory_dataset_parquet", - "azurerm_data_factory_dataset_postgresql", - "azurerm_data_factory_dataset_snowflake", - "azurerm_data_factory_dataset_sql_server_table", - "azurerm_data_factory_flowlet_data_flow", - "azurerm_data_factory_integration_runtime_azure", - "azurerm_data_factory_integration_runtime_azure_ssis", - "azurerm_data_factory_integration_runtime_self_hosted", - "azurerm_data_factory_linked_custom_service", - "azurerm_data_factory_linked_service_azure_blob_storage", - "azurerm_data_factory_linked_service_azure_databricks", - "azurerm_data_factory_linked_service_azure_file_storage", - "azurerm_data_factory_linked_service_azure_function", - "azurerm_data_factory_linked_service_azure_search", - "azurerm_data_factory_linked_service_azure_sql_database", - "azurerm_data_factory_linked_service_azure_table_storage", - "azurerm_data_factory_linked_service_cosmosdb", - "azurerm_data_factory_linked_service_cosmosdb_mongoapi", - "azurerm_data_factory_linked_service_data_lake_storage_gen2", - "azurerm_data_factory_linked_service_key_vault", - "azurerm_data_factory_linked_service_kusto", - "azurerm_data_factory_linked_service_mysql", - "azurerm_data_factory_linked_service_odata", - "azurerm_data_factory_linked_service_odbc", - "azurerm_data_factory_linked_service_postgresql", - "azurerm_data_factory_linked_service_sftp", - "azurerm_data_factory_linked_service_snowflake", - "azurerm_data_factory_linked_service_sql_server", - "azurerm_data_factory_linked_service_synapse", - "azurerm_data_factory_linked_service_web", - "azurerm_data_factory_managed_private_endpoint", - "azurerm_data_factory_pipeline", - "azurerm_data_factory_trigger_blob_event", - "azurerm_data_factory_trigger_custom_event", - "azurerm_data_factory_trigger_schedule", - "azurerm_data_factory_trigger_tumbling_window", - "azurerm_data_protection_backup_instance_blob_storage", - "azurerm_data_protection_backup_instance_disk", - "azurerm_data_protection_backup_instance_kubernetes_cluster", - "azurerm_data_protection_backup_instance_mysql_flexible_server", - "azurerm_data_protection_backup_instance_postgresql", - "azurerm_data_protection_backup_instance_postgresql_flexible_server", - "azurerm_data_protection_backup_policy_blob_storage", - "azurerm_data_protection_backup_policy_disk", - "azurerm_data_protection_backup_policy_kubernetes_cluster", - "azurerm_data_protection_backup_policy_mysql_flexible_server", - "azurerm_data_protection_backup_policy_postgresql", - "azurerm_data_protection_backup_policy_postgresql_flexible_server", - "azurerm_data_protection_backup_vault", - "azurerm_data_protection_backup_vault_customer_managed_key", - "azurerm_data_protection_resource_guard", - "azurerm_data_share", - "azurerm_data_share_account", - "azurerm_data_share_dataset_blob_storage", - "azurerm_data_share_dataset_data_lake_gen2", - "azurerm_data_share_dataset_kusto_cluster", - "azurerm_data_share_dataset_kusto_database", - "azurerm_database_migration_project", - "azurerm_database_migration_service", - "azurerm_databox_edge_device", - "azurerm_databricks_access_connector", - "azurerm_databricks_virtual_network_peering", - "azurerm_databricks_workspace", - "azurerm_databricks_workspace_root_dbfs_customer_managed_key", - "azurerm_datadog_monitor", - "azurerm_datadog_monitor_sso_configuration", - "azurerm_datadog_monitor_tag_rule", - "azurerm_dedicated_hardware_security_module", - "azurerm_dedicated_host", - "azurerm_dedicated_host_group", - "azurerm_dev_center", - "azurerm_dev_center_attached_network", - "azurerm_dev_center_catalog", - "azurerm_dev_center_dev_box_definition", - "azurerm_dev_center_environment_type", - "azurerm_dev_center_gallery", - "azurerm_dev_center_network_connection", - "azurerm_dev_center_project", - "azurerm_dev_center_project_environment_type", - "azurerm_dev_center_project_pool", - "azurerm_digital_twins_endpoint_eventgrid", - "azurerm_digital_twins_endpoint_eventhub", - "azurerm_digital_twins_endpoint_servicebus", - "azurerm_digital_twins_instance", - "azurerm_digital_twins_time_series_database_connection", - "azurerm_disk_access", - "azurerm_disk_encryption_set", - "azurerm_dns_a_record", - "azurerm_dns_aaaa_record", - "azurerm_dns_caa_record", - "azurerm_dns_cname_record", - "azurerm_dns_mx_record", - "azurerm_dns_ns_record", - "azurerm_dns_ptr_record", - "azurerm_dns_srv_record", - "azurerm_dns_txt_record", - "azurerm_dns_zone", - "azurerm_dynatrace_monitor", - "azurerm_dynatrace_tag_rules", - "azurerm_elastic_cloud_elasticsearch", - "azurerm_elastic_san", - "azurerm_elastic_san_volume", - "azurerm_elastic_san_volume_group", - "azurerm_email_communication_service", - "azurerm_email_communication_service_domain", - "azurerm_eventgrid_domain", - "azurerm_eventgrid_domain_topic", - "azurerm_eventgrid_event_subscription", - "azurerm_eventgrid_namespace", - "azurerm_eventgrid_partner_configuration", - "azurerm_eventgrid_system_topic", - "azurerm_eventgrid_system_topic_event_subscription", - "azurerm_eventgrid_topic", - "azurerm_eventhub", - "azurerm_eventhub_authorization_rule", - "azurerm_eventhub_cluster", - "azurerm_eventhub_consumer_group", - "azurerm_eventhub_namespace", - "azurerm_eventhub_namespace_authorization_rule", - "azurerm_eventhub_namespace_customer_managed_key", - "azurerm_eventhub_namespace_disaster_recovery_config", - "azurerm_eventhub_namespace_schema_group", - "azurerm_express_route_circuit", - "azurerm_express_route_circuit_authorization", - "azurerm_express_route_circuit_connection", - "azurerm_express_route_circuit_peering", - "azurerm_express_route_connection", - "azurerm_express_route_gateway", - "azurerm_express_route_port", - "azurerm_express_route_port_authorization", - "azurerm_extended_location_custom_location", - "azurerm_fabric_capacity", - "azurerm_federated_identity_credential", - "azurerm_firewall", - "azurerm_firewall_application_rule_collection", - "azurerm_firewall_nat_rule_collection", - "azurerm_firewall_network_rule_collection", - "azurerm_firewall_policy", - "azurerm_firewall_policy_rule_collection_group", - "azurerm_fluid_relay_server", - "azurerm_frontdoor", - "azurerm_frontdoor_custom_https_configuration", - "azurerm_frontdoor_firewall_policy", - "azurerm_frontdoor_rules_engine", - "azurerm_function_app", - "azurerm_function_app_active_slot", - "azurerm_function_app_connection", - "azurerm_function_app_flex_consumption", - "azurerm_function_app_function", - "azurerm_function_app_hybrid_connection", - "azurerm_function_app_slot", - "azurerm_gallery_application", - "azurerm_gallery_application_version", - "azurerm_graph_services_account", - "azurerm_hdinsight_hadoop_cluster", - "azurerm_hdinsight_hbase_cluster", - "azurerm_hdinsight_interactive_query_cluster", - "azurerm_hdinsight_kafka_cluster", - "azurerm_hdinsight_spark_cluster", - "azurerm_healthbot", - "azurerm_healthcare_dicom_service", - "azurerm_healthcare_fhir_service", - "azurerm_healthcare_medtech_service", - "azurerm_healthcare_medtech_service_fhir_destination", - "azurerm_healthcare_service", - "azurerm_healthcare_workspace", - "azurerm_hpc_cache", - "azurerm_hpc_cache_access_policy", - "azurerm_hpc_cache_blob_nfs_target", - "azurerm_hpc_cache_blob_target", - "azurerm_hpc_cache_nfs_target", - "azurerm_image", - "azurerm_iot_security_device_group", - "azurerm_iot_security_solution", - "azurerm_iotcentral_application", - "azurerm_iotcentral_application_network_rule_set", - "azurerm_iotcentral_organization", - "azurerm_iothub", - "azurerm_iothub_certificate", - "azurerm_iothub_consumer_group", - "azurerm_iothub_device_update_account", - "azurerm_iothub_device_update_instance", - "azurerm_iothub_dps", - "azurerm_iothub_dps_certificate", - "azurerm_iothub_dps_shared_access_policy", - "azurerm_iothub_endpoint_cosmosdb_account", - "azurerm_iothub_endpoint_eventhub", - "azurerm_iothub_endpoint_servicebus_queue", - "azurerm_iothub_endpoint_servicebus_topic", - "azurerm_iothub_endpoint_storage_container", - "azurerm_iothub_enrichment", - "azurerm_iothub_fallback_route", - "azurerm_iothub_file_upload", - "azurerm_iothub_route", - "azurerm_iothub_shared_access_policy", - "azurerm_ip_group", - "azurerm_ip_group_cidr", - "azurerm_key_vault", - "azurerm_key_vault_access_policy", - "azurerm_key_vault_certificate", - "azurerm_key_vault_certificate_contacts", - "azurerm_key_vault_certificate_issuer", - "azurerm_key_vault_key", - "azurerm_key_vault_managed_hardware_security_module", - "azurerm_key_vault_managed_hardware_security_module_key", - "azurerm_key_vault_managed_hardware_security_module_key_rotation_policy", - "azurerm_key_vault_managed_hardware_security_module_role_assignment", - "azurerm_key_vault_managed_hardware_security_module_role_definition", - "azurerm_key_vault_managed_storage_account", - "azurerm_key_vault_managed_storage_account_sas_token_definition", - "azurerm_key_vault_secret", - "azurerm_kubernetes_cluster", - "azurerm_kubernetes_cluster_extension", - "azurerm_kubernetes_cluster_node_pool", - "azurerm_kubernetes_cluster_trusted_access_role_binding", - "azurerm_kubernetes_fleet_manager", - "azurerm_kubernetes_fleet_member", - "azurerm_kubernetes_fleet_update_run", - "azurerm_kubernetes_fleet_update_strategy", - "azurerm_kubernetes_flux_configuration", - "azurerm_kusto_attached_database_configuration", - "azurerm_kusto_cluster", - "azurerm_kusto_cluster_customer_managed_key", - "azurerm_kusto_cluster_managed_private_endpoint", - "azurerm_kusto_cluster_principal_assignment", - "azurerm_kusto_cosmosdb_data_connection", - "azurerm_kusto_database", - "azurerm_kusto_database_principal_assignment", - "azurerm_kusto_eventgrid_data_connection", - "azurerm_kusto_eventhub_data_connection", - "azurerm_kusto_iothub_data_connection", - "azurerm_kusto_script", - "azurerm_lb", - "azurerm_lb_backend_address_pool", - "azurerm_lb_backend_address_pool_address", - "azurerm_lb_nat_pool", - "azurerm_lb_nat_rule", - "azurerm_lb_outbound_rule", - "azurerm_lb_probe", - "azurerm_lb_rule", - "azurerm_lighthouse_assignment", - "azurerm_lighthouse_definition", - "azurerm_linux_function_app", - "azurerm_linux_function_app_slot", - "azurerm_linux_virtual_machine", - "azurerm_linux_virtual_machine_scale_set", - "azurerm_linux_web_app", - "azurerm_linux_web_app_slot", - "azurerm_local_network_gateway", - "azurerm_log_analytics_cluster", - "azurerm_log_analytics_cluster_customer_managed_key", - "azurerm_log_analytics_data_export_rule", - "azurerm_log_analytics_datasource_windows_event", - "azurerm_log_analytics_datasource_windows_performance_counter", - "azurerm_log_analytics_linked_service", - "azurerm_log_analytics_linked_storage_account", - "azurerm_log_analytics_query_pack", - "azurerm_log_analytics_query_pack_query", - "azurerm_log_analytics_saved_search", - "azurerm_log_analytics_solution", - "azurerm_log_analytics_storage_insights", - "azurerm_log_analytics_workspace", - "azurerm_log_analytics_workspace_table", - "azurerm_logic_app_action_custom", - "azurerm_logic_app_action_http", - "azurerm_logic_app_integration_account", - "azurerm_logic_app_integration_account_agreement", - "azurerm_logic_app_integration_account_assembly", - "azurerm_logic_app_integration_account_batch_configuration", - "azurerm_logic_app_integration_account_certificate", - "azurerm_logic_app_integration_account_map", - "azurerm_logic_app_integration_account_partner", - "azurerm_logic_app_integration_account_schema", - "azurerm_logic_app_integration_account_session", - "azurerm_logic_app_standard", - "azurerm_logic_app_trigger_custom", - "azurerm_logic_app_trigger_http_request", - "azurerm_logic_app_trigger_recurrence", - "azurerm_logic_app_workflow", - "azurerm_machine_learning_compute_cluster", - "azurerm_machine_learning_compute_instance", - "azurerm_machine_learning_datastore_blobstorage", - "azurerm_machine_learning_datastore_datalake_gen2", - "azurerm_machine_learning_datastore_fileshare", - "azurerm_machine_learning_inference_cluster", - "azurerm_machine_learning_synapse_spark", - "azurerm_machine_learning_workspace", - "azurerm_machine_learning_workspace_network_outbound_rule_fqdn", - "azurerm_machine_learning_workspace_network_outbound_rule_private_endpoint", - "azurerm_machine_learning_workspace_network_outbound_rule_service_tag", - "azurerm_maintenance_assignment_dedicated_host", - "azurerm_maintenance_assignment_dynamic_scope", - "azurerm_maintenance_assignment_virtual_machine", - "azurerm_maintenance_assignment_virtual_machine_scale_set", - "azurerm_maintenance_configuration", - "azurerm_managed_application", - "azurerm_managed_application_definition", - "azurerm_managed_disk", - "azurerm_managed_disk_sas_token", - "azurerm_managed_lustre_file_system", - "azurerm_management_group", - "azurerm_management_group_policy_assignment", - "azurerm_management_group_policy_exemption", - "azurerm_management_group_policy_remediation", - "azurerm_management_group_subscription_association", - "azurerm_management_group_template_deployment", - "azurerm_management_lock", - "azurerm_maps_account", - "azurerm_maps_creator", - "azurerm_marketplace_agreement", - "azurerm_marketplace_role_assignment", - "azurerm_media_services_account", - "azurerm_media_transform", - "azurerm_mobile_network", - "azurerm_mobile_network_attached_data_network", - "azurerm_mobile_network_data_network", - "azurerm_mobile_network_packet_core_control_plane", - "azurerm_mobile_network_packet_core_data_plane", - "azurerm_mobile_network_service", - "azurerm_mobile_network_sim", - "azurerm_mobile_network_sim_group", - "azurerm_mobile_network_sim_policy", - "azurerm_mobile_network_site", - "azurerm_mobile_network_slice", - "azurerm_mongo_cluster", - "azurerm_monitor_aad_diagnostic_setting", - "azurerm_monitor_action_group", - "azurerm_monitor_activity_log_alert", - "azurerm_monitor_alert_processing_rule_action_group", - "azurerm_monitor_alert_processing_rule_suppression", - "azurerm_monitor_alert_prometheus_rule_group", - "azurerm_monitor_autoscale_setting", - "azurerm_monitor_data_collection_endpoint", - "azurerm_monitor_data_collection_rule", - "azurerm_monitor_data_collection_rule_association", - "azurerm_monitor_diagnostic_setting", - "azurerm_monitor_metric_alert", - "azurerm_monitor_private_link_scope", - "azurerm_monitor_private_link_scoped_service", - "azurerm_monitor_scheduled_query_rules_alert", - "azurerm_monitor_scheduled_query_rules_alert_v2", - "azurerm_monitor_scheduled_query_rules_log", - "azurerm_monitor_smart_detector_alert_rule", - "azurerm_monitor_workspace", - "azurerm_mssql_database", - "azurerm_mssql_database_extended_auditing_policy", - "azurerm_mssql_database_vulnerability_assessment_rule_baseline", - "azurerm_mssql_elasticpool", - "azurerm_mssql_failover_group", - "azurerm_mssql_firewall_rule", - "azurerm_mssql_job", - "azurerm_mssql_job_agent", - "azurerm_mssql_job_credential", - "azurerm_mssql_job_schedule", - "azurerm_mssql_job_step", - "azurerm_mssql_job_target_group", - "azurerm_mssql_managed_database", - "azurerm_mssql_managed_instance", - "azurerm_mssql_managed_instance_active_directory_administrator", - "azurerm_mssql_managed_instance_failover_group", - "azurerm_mssql_managed_instance_security_alert_policy", - "azurerm_mssql_managed_instance_transparent_data_encryption", - "azurerm_mssql_managed_instance_vulnerability_assessment", - "azurerm_mssql_outbound_firewall_rule", - "azurerm_mssql_server", - "azurerm_mssql_server_dns_alias", - "azurerm_mssql_server_extended_auditing_policy", - "azurerm_mssql_server_microsoft_support_auditing_policy", - "azurerm_mssql_server_security_alert_policy", - "azurerm_mssql_server_transparent_data_encryption", - "azurerm_mssql_server_vulnerability_assessment", - "azurerm_mssql_virtual_machine", - "azurerm_mssql_virtual_machine_availability_group_listener", - "azurerm_mssql_virtual_machine_group", - "azurerm_mssql_virtual_network_rule", - "azurerm_mysql_flexible_database", - "azurerm_mysql_flexible_server", - "azurerm_mysql_flexible_server_active_directory_administrator", - "azurerm_mysql_flexible_server_configuration", - "azurerm_mysql_flexible_server_firewall_rule", - "azurerm_nat_gateway", - "azurerm_nat_gateway_public_ip_association", - "azurerm_nat_gateway_public_ip_prefix_association", - "azurerm_netapp_account", - "azurerm_netapp_account_encryption", - "azurerm_netapp_backup_policy", - "azurerm_netapp_backup_vault", - "azurerm_netapp_pool", - "azurerm_netapp_snapshot", - "azurerm_netapp_snapshot_policy", - "azurerm_netapp_volume", - "azurerm_netapp_volume_group_oracle", - "azurerm_netapp_volume_group_sap_hana", - "azurerm_netapp_volume_quota_rule", - "azurerm_network_connection_monitor", - "azurerm_network_ddos_protection_plan", - "azurerm_network_function_azure_traffic_collector", - "azurerm_network_function_collector_policy", - "azurerm_network_interface", - "azurerm_network_interface_application_gateway_backend_address_pool_association", - "azurerm_network_interface_application_security_group_association", - "azurerm_network_interface_backend_address_pool_association", - "azurerm_network_interface_nat_rule_association", - "azurerm_network_interface_security_group_association", - "azurerm_network_manager", - "azurerm_network_manager_admin_rule", - "azurerm_network_manager_admin_rule_collection", - "azurerm_network_manager_connectivity_configuration", - "azurerm_network_manager_deployment", - "azurerm_network_manager_ipam_pool", - "azurerm_network_manager_management_group_connection", - "azurerm_network_manager_network_group", - "azurerm_network_manager_routing_configuration", - "azurerm_network_manager_scope_connection", - "azurerm_network_manager_security_admin_configuration", - "azurerm_network_manager_static_member", - "azurerm_network_manager_subscription_connection", - "azurerm_network_manager_verifier_workspace", - "azurerm_network_profile", - "azurerm_network_security_group", - "azurerm_network_security_rule", - "azurerm_network_watcher", - "azurerm_network_watcher_flow_log", - "azurerm_new_relic_monitor", - "azurerm_new_relic_tag_rule", - "azurerm_nginx_api_key", - "azurerm_nginx_certificate", - "azurerm_nginx_configuration", - "azurerm_nginx_deployment", - "azurerm_notification_hub", - "azurerm_notification_hub_authorization_rule", - "azurerm_notification_hub_namespace", - "azurerm_oracle_autonomous_database", - "azurerm_oracle_cloud_vm_cluster", - "azurerm_oracle_exadata_infrastructure", - "azurerm_orbital_contact", - "azurerm_orbital_contact_profile", - "azurerm_orbital_spacecraft", - "azurerm_orchestrated_virtual_machine_scale_set", - "azurerm_palo_alto_local_rulestack", - "azurerm_palo_alto_local_rulestack_certificate", - "azurerm_palo_alto_local_rulestack_fqdn_list", - "azurerm_palo_alto_local_rulestack_outbound_trust_certificate_association", - "azurerm_palo_alto_local_rulestack_outbound_untrust_certificate_association", - "azurerm_palo_alto_local_rulestack_prefix_list", - "azurerm_palo_alto_local_rulestack_rule", - "azurerm_palo_alto_next_generation_firewall_virtual_hub_local_rulestack", - "azurerm_palo_alto_next_generation_firewall_virtual_hub_panorama", - "azurerm_palo_alto_next_generation_firewall_virtual_network_local_rulestack", - "azurerm_palo_alto_next_generation_firewall_virtual_network_panorama", - "azurerm_palo_alto_virtual_network_appliance", - "azurerm_pim_active_role_assignment", - "azurerm_pim_eligible_role_assignment", - "azurerm_point_to_site_vpn_gateway", - "azurerm_policy_definition", - "azurerm_policy_set_definition", - "azurerm_policy_virtual_machine_configuration_assignment", - "azurerm_portal_dashboard", - "azurerm_portal_tenant_configuration", - "azurerm_postgresql_active_directory_administrator", - "azurerm_postgresql_configuration", - "azurerm_postgresql_database", - "azurerm_postgresql_firewall_rule", - "azurerm_postgresql_flexible_server", - "azurerm_postgresql_flexible_server_active_directory_administrator", - "azurerm_postgresql_flexible_server_configuration", - "azurerm_postgresql_flexible_server_database", - "azurerm_postgresql_flexible_server_firewall_rule", - "azurerm_postgresql_flexible_server_virtual_endpoint", - "azurerm_postgresql_server", - "azurerm_postgresql_server_key", - "azurerm_postgresql_virtual_network_rule", - "azurerm_powerbi_embedded", - "azurerm_private_dns_a_record", - "azurerm_private_dns_aaaa_record", - "azurerm_private_dns_cname_record", - "azurerm_private_dns_mx_record", - "azurerm_private_dns_ptr_record", - "azurerm_private_dns_resolver", - "azurerm_private_dns_resolver_dns_forwarding_ruleset", - "azurerm_private_dns_resolver_forwarding_rule", - "azurerm_private_dns_resolver_inbound_endpoint", - "azurerm_private_dns_resolver_outbound_endpoint", - "azurerm_private_dns_resolver_virtual_network_link", - "azurerm_private_dns_soa_record", - "azurerm_private_dns_srv_record", - "azurerm_private_dns_txt_record", - "azurerm_private_dns_zone", - "azurerm_private_dns_zone_virtual_network_link", - "azurerm_private_endpoint", - "azurerm_private_endpoint_application_security_group_association", - "azurerm_private_link_service", - "azurerm_proximity_placement_group", - "azurerm_public_ip", - "azurerm_public_ip_prefix", - "azurerm_purview_account", - "azurerm_qumulo_file_system", - "azurerm_recovery_services_vault", - "azurerm_recovery_services_vault_resource_guard_association", - "azurerm_redhat_openshift_cluster", - "azurerm_redis_cache", - "azurerm_redis_cache_access_policy", - "azurerm_redis_cache_access_policy_assignment", - "azurerm_redis_enterprise_cluster", - "azurerm_redis_enterprise_database", - "azurerm_redis_firewall_rule", - "azurerm_redis_linked_server", - "azurerm_relay_hybrid_connection", - "azurerm_relay_hybrid_connection_authorization_rule", - "azurerm_relay_namespace", - "azurerm_relay_namespace_authorization_rule", - "azurerm_resource_deployment_script_azure_cli", - "azurerm_resource_deployment_script_azure_power_shell", - "azurerm_resource_group", - "azurerm_resource_group_cost_management_export", - "azurerm_resource_group_cost_management_view", - "azurerm_resource_group_policy_assignment", - "azurerm_resource_group_policy_exemption", - "azurerm_resource_group_policy_remediation", - "azurerm_resource_group_template_deployment", - "azurerm_resource_management_private_link", - "azurerm_resource_management_private_link_association", - "azurerm_resource_policy_assignment", - "azurerm_resource_policy_exemption", - "azurerm_resource_policy_remediation", - "azurerm_resource_provider_registration", - "azurerm_role_assignment", - "azurerm_role_definition", - "azurerm_role_management_policy", - "azurerm_route", - "azurerm_route_filter", - "azurerm_route_map", - "azurerm_route_server", - "azurerm_route_server_bgp_connection", - "azurerm_route_table", - "azurerm_search_service", - "azurerm_search_shared_private_link_service", - "azurerm_security_center_assessment", - "azurerm_security_center_assessment_policy", - "azurerm_security_center_auto_provisioning", - "azurerm_security_center_automation", - "azurerm_security_center_contact", - "azurerm_security_center_server_vulnerability_assessment_virtual_machine", - "azurerm_security_center_server_vulnerability_assessments_setting", - "azurerm_security_center_setting", - "azurerm_security_center_storage_defender", - "azurerm_security_center_subscription_pricing", - "azurerm_security_center_workspace", - "azurerm_sentinel_alert_rule_anomaly_built_in", - "azurerm_sentinel_alert_rule_anomaly_duplicate", - "azurerm_sentinel_alert_rule_fusion", - "azurerm_sentinel_alert_rule_machine_learning_behavior_analytics", - "azurerm_sentinel_alert_rule_ms_security_incident", - "azurerm_sentinel_alert_rule_nrt", - "azurerm_sentinel_alert_rule_scheduled", - "azurerm_sentinel_alert_rule_threat_intelligence", - "azurerm_sentinel_automation_rule", - "azurerm_sentinel_data_connector_aws_cloud_trail", - "azurerm_sentinel_data_connector_aws_s3", - "azurerm_sentinel_data_connector_azure_active_directory", - "azurerm_sentinel_data_connector_azure_advanced_threat_protection", - "azurerm_sentinel_data_connector_azure_security_center", - "azurerm_sentinel_data_connector_dynamics_365", - "azurerm_sentinel_data_connector_iot", - "azurerm_sentinel_data_connector_microsoft_cloud_app_security", - "azurerm_sentinel_data_connector_microsoft_defender_advanced_threat_protection", - "azurerm_sentinel_data_connector_microsoft_threat_intelligence", - "azurerm_sentinel_data_connector_microsoft_threat_protection", - "azurerm_sentinel_data_connector_office_365", - "azurerm_sentinel_data_connector_office_365_project", - "azurerm_sentinel_data_connector_office_atp", - "azurerm_sentinel_data_connector_office_irm", - "azurerm_sentinel_data_connector_office_power_bi", - "azurerm_sentinel_data_connector_threat_intelligence", - "azurerm_sentinel_data_connector_threat_intelligence_taxii", - "azurerm_sentinel_log_analytics_workspace_onboarding", - "azurerm_sentinel_metadata", - "azurerm_sentinel_threat_intelligence_indicator", - "azurerm_sentinel_watchlist", - "azurerm_sentinel_watchlist_item", - "azurerm_service_fabric_cluster", - "azurerm_service_fabric_managed_cluster", - "azurerm_service_plan", - "azurerm_servicebus_namespace", - "azurerm_servicebus_namespace_authorization_rule", - "azurerm_servicebus_namespace_customer_managed_key", - "azurerm_servicebus_namespace_disaster_recovery_config", - "azurerm_servicebus_queue", - "azurerm_servicebus_queue_authorization_rule", - "azurerm_servicebus_subscription", - "azurerm_servicebus_subscription_rule", - "azurerm_servicebus_topic", - "azurerm_servicebus_topic_authorization_rule", - "azurerm_shared_image", - "azurerm_shared_image_gallery", - "azurerm_shared_image_version", - "azurerm_signalr_service", - "azurerm_signalr_service_custom_certificate", - "azurerm_signalr_service_custom_domain", - "azurerm_signalr_service_network_acl", - "azurerm_signalr_shared_private_link_resource", - "azurerm_site_recovery_fabric", - "azurerm_site_recovery_hyperv_network_mapping", - "azurerm_site_recovery_hyperv_replication_policy", - "azurerm_site_recovery_hyperv_replication_policy_association", - "azurerm_site_recovery_network_mapping", - "azurerm_site_recovery_protection_container", - "azurerm_site_recovery_protection_container_mapping", - "azurerm_site_recovery_replicated_vm", - "azurerm_site_recovery_replication_policy", - "azurerm_site_recovery_replication_recovery_plan", - "azurerm_site_recovery_services_vault_hyperv_site", - "azurerm_site_recovery_vmware_replicated_vm", - "azurerm_site_recovery_vmware_replication_policy", - "azurerm_site_recovery_vmware_replication_policy_association", - "azurerm_snapshot", - "azurerm_source_control_token", - "azurerm_spatial_anchors_account", - "azurerm_spring_cloud_accelerator", - "azurerm_spring_cloud_active_deployment", - "azurerm_spring_cloud_api_portal", - "azurerm_spring_cloud_api_portal_custom_domain", - "azurerm_spring_cloud_app", - "azurerm_spring_cloud_app_cosmosdb_association", - "azurerm_spring_cloud_app_dynamics_application_performance_monitoring", - "azurerm_spring_cloud_app_mysql_association", - "azurerm_spring_cloud_app_redis_association", - "azurerm_spring_cloud_application_insights_application_performance_monitoring", - "azurerm_spring_cloud_application_live_view", - "azurerm_spring_cloud_build_deployment", - "azurerm_spring_cloud_build_pack_binding", - "azurerm_spring_cloud_builder", - "azurerm_spring_cloud_certificate", - "azurerm_spring_cloud_configuration_service", - "azurerm_spring_cloud_connection", - "azurerm_spring_cloud_container_deployment", - "azurerm_spring_cloud_custom_domain", - "azurerm_spring_cloud_customized_accelerator", - "azurerm_spring_cloud_dev_tool_portal", - "azurerm_spring_cloud_dynatrace_application_performance_monitoring", - "azurerm_spring_cloud_elastic_application_performance_monitoring", - "azurerm_spring_cloud_gateway", - "azurerm_spring_cloud_gateway_custom_domain", - "azurerm_spring_cloud_gateway_route_config", - "azurerm_spring_cloud_java_deployment", - "azurerm_spring_cloud_new_relic_application_performance_monitoring", - "azurerm_spring_cloud_service", - "azurerm_spring_cloud_storage", - "azurerm_sql_firewall_rule", - "azurerm_sql_server", - "azurerm_sql_virtual_network_rule", - "azurerm_ssh_public_key", - "azurerm_stack_hci_cluster", - "azurerm_stack_hci_deployment_setting", - "azurerm_stack_hci_extension", - "azurerm_stack_hci_logical_network", - "azurerm_stack_hci_marketplace_gallery_image", - "azurerm_stack_hci_network_interface", - "azurerm_stack_hci_storage_path", - "azurerm_stack_hci_virtual_hard_disk", - "azurerm_static_site", - "azurerm_static_site_custom_domain", - "azurerm_static_web_app", - "azurerm_static_web_app_custom_domain", - "azurerm_static_web_app_function_app_registration", - "azurerm_storage_account", - "azurerm_storage_account_customer_managed_key", - "azurerm_storage_account_local_user", - "azurerm_storage_account_network_rules", - "azurerm_storage_account_queue_properties", - "azurerm_storage_account_static_website", - "azurerm_storage_blob", - "azurerm_storage_blob_inventory_policy", - "azurerm_storage_container", - "azurerm_storage_container_immutability_policy", - "azurerm_storage_data_lake_gen2_filesystem", - "azurerm_storage_data_lake_gen2_path", - "azurerm_storage_encryption_scope", - "azurerm_storage_management_policy", - "azurerm_storage_mover", - "azurerm_storage_mover_agent", - "azurerm_storage_mover_job_definition", - "azurerm_storage_mover_project", - "azurerm_storage_mover_source_endpoint", - "azurerm_storage_mover_target_endpoint", - "azurerm_storage_object_replication", - "azurerm_storage_queue", - "azurerm_storage_share", - "azurerm_storage_share_directory", - "azurerm_storage_share_file", - "azurerm_storage_sync", - "azurerm_storage_sync_cloud_endpoint", - "azurerm_storage_sync_group", - "azurerm_storage_sync_server_endpoint", - "azurerm_storage_table", - "azurerm_storage_table_entity", - "azurerm_stream_analytics_cluster", - "azurerm_stream_analytics_function_javascript_uda", - "azurerm_stream_analytics_function_javascript_udf", - "azurerm_stream_analytics_job", - "azurerm_stream_analytics_job_schedule", - "azurerm_stream_analytics_job_storage_account", - "azurerm_stream_analytics_managed_private_endpoint", - "azurerm_stream_analytics_output_blob", - "azurerm_stream_analytics_output_cosmosdb", - "azurerm_stream_analytics_output_eventhub", - "azurerm_stream_analytics_output_function", - "azurerm_stream_analytics_output_mssql", - "azurerm_stream_analytics_output_powerbi", - "azurerm_stream_analytics_output_servicebus_queue", - "azurerm_stream_analytics_output_servicebus_topic", - "azurerm_stream_analytics_output_synapse", - "azurerm_stream_analytics_output_table", - "azurerm_stream_analytics_reference_input_blob", - "azurerm_stream_analytics_reference_input_mssql", - "azurerm_stream_analytics_stream_input_blob", - "azurerm_stream_analytics_stream_input_eventhub", - "azurerm_stream_analytics_stream_input_eventhub_v2", - "azurerm_stream_analytics_stream_input_iothub", - "azurerm_subnet", - "azurerm_subnet_nat_gateway_association", - "azurerm_subnet_network_security_group_association", - "azurerm_subnet_route_table_association", - "azurerm_subnet_service_endpoint_storage_policy", - "azurerm_subscription", - "azurerm_subscription_cost_management_export", - "azurerm_subscription_cost_management_view", - "azurerm_subscription_policy_assignment", - "azurerm_subscription_policy_exemption", - "azurerm_subscription_policy_remediation", - "azurerm_subscription_template_deployment", - "azurerm_synapse_firewall_rule", - "azurerm_synapse_integration_runtime_azure", - "azurerm_synapse_integration_runtime_self_hosted", - "azurerm_synapse_linked_service", - "azurerm_synapse_managed_private_endpoint", - "azurerm_synapse_private_link_hub", - "azurerm_synapse_role_assignment", - "azurerm_synapse_spark_pool", - "azurerm_synapse_sql_pool", - "azurerm_synapse_sql_pool_extended_auditing_policy", - "azurerm_synapse_sql_pool_security_alert_policy", - "azurerm_synapse_sql_pool_vulnerability_assessment", - "azurerm_synapse_sql_pool_vulnerability_assessment_baseline", - "azurerm_synapse_sql_pool_workload_classifier", - "azurerm_synapse_sql_pool_workload_group", - "azurerm_synapse_workspace", - "azurerm_synapse_workspace_aad_admin", - "azurerm_synapse_workspace_extended_auditing_policy", - "azurerm_synapse_workspace_key", - "azurerm_synapse_workspace_security_alert_policy", - "azurerm_synapse_workspace_sql_aad_admin", - "azurerm_synapse_workspace_vulnerability_assessment", - "azurerm_system_center_virtual_machine_manager_availability_set", - "azurerm_system_center_virtual_machine_manager_cloud", - "azurerm_system_center_virtual_machine_manager_server", - "azurerm_system_center_virtual_machine_manager_virtual_machine_instance", - "azurerm_system_center_virtual_machine_manager_virtual_machine_instance_guest_agent", - "azurerm_system_center_virtual_machine_manager_virtual_machine_template", - "azurerm_system_center_virtual_machine_manager_virtual_network", - "azurerm_tenant_template_deployment", - "azurerm_traffic_manager_azure_endpoint", - "azurerm_traffic_manager_external_endpoint", - "azurerm_traffic_manager_nested_endpoint", - "azurerm_traffic_manager_profile", - "azurerm_trusted_signing_account", - "azurerm_user_assigned_identity", - "azurerm_video_indexer_account", - "azurerm_virtual_desktop_application", - "azurerm_virtual_desktop_application_group", - "azurerm_virtual_desktop_host_pool", - "azurerm_virtual_desktop_host_pool_registration_info", - "azurerm_virtual_desktop_scaling_plan", - "azurerm_virtual_desktop_scaling_plan_host_pool_association", - "azurerm_virtual_desktop_workspace", - "azurerm_virtual_desktop_workspace_application_group_association", - "azurerm_virtual_hub", - "azurerm_virtual_hub_bgp_connection", - "azurerm_virtual_hub_connection", - "azurerm_virtual_hub_ip", - "azurerm_virtual_hub_route_table", - "azurerm_virtual_hub_route_table_route", - "azurerm_virtual_hub_routing_intent", - "azurerm_virtual_hub_security_partner_provider", - "azurerm_virtual_machine", - "azurerm_virtual_machine_automanage_configuration_assignment", - "azurerm_virtual_machine_data_disk_attachment", - "azurerm_virtual_machine_extension", - "azurerm_virtual_machine_gallery_application_assignment", - "azurerm_virtual_machine_implicit_data_disk_from_source", - "azurerm_virtual_machine_packet_capture", - "azurerm_virtual_machine_restore_point", - "azurerm_virtual_machine_restore_point_collection", - "azurerm_virtual_machine_run_command", - "azurerm_virtual_machine_scale_set", - "azurerm_virtual_machine_scale_set_extension", - "azurerm_virtual_machine_scale_set_packet_capture", - "azurerm_virtual_machine_scale_set_standby_pool", - "azurerm_virtual_network", - "azurerm_virtual_network_dns_servers", - "azurerm_virtual_network_gateway", - "azurerm_virtual_network_gateway_connection", - "azurerm_virtual_network_gateway_nat_rule", - "azurerm_virtual_network_peering", - "azurerm_virtual_wan", - "azurerm_vmware_cluster", - "azurerm_vmware_express_route_authorization", - "azurerm_vmware_netapp_volume_attachment", - "azurerm_vmware_private_cloud", - "azurerm_voice_services_communications_gateway", - "azurerm_vpn_gateway", - "azurerm_vpn_gateway_connection", - "azurerm_vpn_gateway_nat_rule", - "azurerm_vpn_server_configuration", - "azurerm_vpn_server_configuration_policy_group", - "azurerm_vpn_site", - "azurerm_web_app_active_slot", - "azurerm_web_app_hybrid_connection", - "azurerm_web_application_firewall_policy", - "azurerm_web_pubsub", - "azurerm_web_pubsub_custom_certificate", - "azurerm_web_pubsub_custom_domain", - "azurerm_web_pubsub_hub", - "azurerm_web_pubsub_network_acl", - "azurerm_web_pubsub_service", - "azurerm_web_pubsub_shared_private_link_resource", - "azurerm_web_pubsub_socketio", - "azurerm_windows_function_app", - "azurerm_windows_function_app_slot", - "azurerm_windows_virtual_machine", - "azurerm_windows_virtual_machine_scale_set", - "azurerm_windows_web_app", - "azurerm_windows_web_app_slot", - "azurerm_workloads_sap_discovery_virtual_instance", - "azurerm_workloads_sap_single_node_virtual_instance", - "azurerm_workloads_sap_three_tier_virtual_instance" - ] -} +{ + "resources": [ + "azurerm_aadb2c_directory", + "azurerm_active_directory_domain_service", + "azurerm_active_directory_domain_service_replica_set", + "azurerm_active_directory_domain_service_trust", + "azurerm_advanced_threat_protection", + "azurerm_advisor_suppression", + "azurerm_ai_foundry", + "azurerm_ai_foundry_project", + "azurerm_ai_services", + "azurerm_analysis_services_server", + "azurerm_api_connection", + "azurerm_api_management", + "azurerm_api_management_api", + "azurerm_api_management_api_diagnostic", + "azurerm_api_management_api_operation", + "azurerm_api_management_api_operation_policy", + "azurerm_api_management_api_operation_tag", + "azurerm_api_management_api_policy", + "azurerm_api_management_api_release", + "azurerm_api_management_api_schema", + "azurerm_api_management_api_tag", + "azurerm_api_management_api_tag_description", + "azurerm_api_management_api_version_set", + "azurerm_api_management_authorization_server", + "azurerm_api_management_backend", + "azurerm_api_management_certificate", + "azurerm_api_management_custom_domain", + "azurerm_api_management_diagnostic", + "azurerm_api_management_email_template", + "azurerm_api_management_gateway", + "azurerm_api_management_gateway_api", + "azurerm_api_management_gateway_certificate_authority", + "azurerm_api_management_gateway_host_name_configuration", + "azurerm_api_management_global_schema", + "azurerm_api_management_group", + "azurerm_api_management_group_user", + "azurerm_api_management_identity_provider_aad", + "azurerm_api_management_identity_provider_aadb2c", + "azurerm_api_management_identity_provider_facebook", + "azurerm_api_management_identity_provider_google", + "azurerm_api_management_identity_provider_microsoft", + "azurerm_api_management_identity_provider_twitter", + "azurerm_api_management_logger", + "azurerm_api_management_named_value", + "azurerm_api_management_notification_recipient_email", + "azurerm_api_management_notification_recipient_user", + "azurerm_api_management_openid_connect_provider", + "azurerm_api_management_policy", + "azurerm_api_management_policy_fragment", + "azurerm_api_management_product", + "azurerm_api_management_product_api", + "azurerm_api_management_product_group", + "azurerm_api_management_product_policy", + "azurerm_api_management_product_tag", + "azurerm_api_management_redis_cache", + "azurerm_api_management_standalone_gateway", + "azurerm_api_management_subscription", + "azurerm_api_management_tag", + "azurerm_api_management_user", + "azurerm_api_management_workspace", + "azurerm_api_management_workspace_api_version_set", + "azurerm_api_management_workspace_certificate", + "azurerm_api_management_workspace_policy", + "azurerm_api_management_workspace_policy_fragment", + "azurerm_app_configuration", + "azurerm_app_configuration_feature", + "azurerm_app_configuration_key", + "azurerm_app_service", + "azurerm_app_service_active_slot", + "azurerm_app_service_certificate", + "azurerm_app_service_certificate_binding", + "azurerm_app_service_certificate_order", + "azurerm_app_service_connection", + "azurerm_app_service_custom_hostname_binding", + "azurerm_app_service_environment_v3", + "azurerm_app_service_hybrid_connection", + "azurerm_app_service_managed_certificate", + "azurerm_app_service_plan", + "azurerm_app_service_public_certificate", + "azurerm_app_service_slot", + "azurerm_app_service_slot_custom_hostname_binding", + "azurerm_app_service_slot_virtual_network_swift_connection", + "azurerm_app_service_source_control", + "azurerm_app_service_source_control_slot", + "azurerm_app_service_source_control_token", + "azurerm_app_service_virtual_network_swift_connection", + "azurerm_application_gateway", + "azurerm_application_insights", + "azurerm_application_insights_analytics_item", + "azurerm_application_insights_api_key", + "azurerm_application_insights_smart_detection_rule", + "azurerm_application_insights_workbook", + "azurerm_application_insights_workbook_template", + "azurerm_application_load_balancer", + "azurerm_application_load_balancer_frontend", + "azurerm_application_load_balancer_security_policy", + "azurerm_application_load_balancer_subnet_association", + "azurerm_application_security_group", + "azurerm_arc_kubernetes_cluster", + "azurerm_arc_kubernetes_cluster_extension", + "azurerm_arc_kubernetes_flux_configuration", + "azurerm_arc_kubernetes_provisioned_cluster", + "azurerm_arc_machine", + "azurerm_arc_machine_automanage_configuration_assignment", + "azurerm_arc_machine_extension", + "azurerm_arc_private_link_scope", + "azurerm_arc_resource_bridge_appliance", + "azurerm_attestation_provider", + "azurerm_automanage_configuration", + "azurerm_automation_account", + "azurerm_automation_certificate", + "azurerm_automation_connection", + "azurerm_automation_connection_certificate", + "azurerm_automation_connection_classic_certificate", + "azurerm_automation_connection_service_principal", + "azurerm_automation_connection_type", + "azurerm_automation_credential", + "azurerm_automation_dsc_configuration", + "azurerm_automation_dsc_nodeconfiguration", + "azurerm_automation_hybrid_runbook_worker", + "azurerm_automation_hybrid_runbook_worker_group", + "azurerm_automation_job_schedule", + "azurerm_automation_module", + "azurerm_automation_powershell72_module", + "azurerm_automation_python3_package", + "azurerm_automation_runbook", + "azurerm_automation_schedule", + "azurerm_automation_software_update_configuration", + "azurerm_automation_source_control", + "azurerm_automation_variable_bool", + "azurerm_automation_variable_datetime", + "azurerm_automation_variable_int", + "azurerm_automation_variable_object", + "azurerm_automation_variable_string", + "azurerm_automation_watcher", + "azurerm_automation_webhook", + "azurerm_availability_set", + "azurerm_backup_container_storage_account", + "azurerm_backup_policy_file_share", + "azurerm_backup_policy_vm", + "azurerm_backup_policy_vm_workload", + "azurerm_backup_protected_file_share", + "azurerm_backup_protected_vm", + "azurerm_bastion_host", + "azurerm_batch_account", + "azurerm_batch_application", + "azurerm_batch_certificate", + "azurerm_batch_job", + "azurerm_batch_pool", + "azurerm_billing_account_cost_management_export", + "azurerm_blueprint_assignment", + "azurerm_bot_channel_alexa", + "azurerm_bot_channel_direct_line_speech", + "azurerm_bot_channel_directline", + "azurerm_bot_channel_email", + "azurerm_bot_channel_facebook", + "azurerm_bot_channel_line", + "azurerm_bot_channel_ms_teams", + "azurerm_bot_channel_slack", + "azurerm_bot_channel_sms", + "azurerm_bot_channel_web_chat", + "azurerm_bot_channels_registration", + "azurerm_bot_connection", + "azurerm_bot_service_azure_bot", + "azurerm_bot_web_app", + "azurerm_capacity_reservation", + "azurerm_capacity_reservation_group", + "azurerm_cdn_endpoint", + "azurerm_cdn_endpoint_custom_domain", + "azurerm_cdn_frontdoor_custom_domain", + "azurerm_cdn_frontdoor_custom_domain_association", + "azurerm_cdn_frontdoor_endpoint", + "azurerm_cdn_frontdoor_firewall_policy", + "azurerm_cdn_frontdoor_origin", + "azurerm_cdn_frontdoor_origin_group", + "azurerm_cdn_frontdoor_profile", + "azurerm_cdn_frontdoor_route", + "azurerm_cdn_frontdoor_rule", + "azurerm_cdn_frontdoor_rule_set", + "azurerm_cdn_frontdoor_secret", + "azurerm_cdn_frontdoor_security_policy", + "azurerm_cdn_profile", + "azurerm_chaos_studio_capability", + "azurerm_chaos_studio_experiment", + "azurerm_chaos_studio_target", + "azurerm_cognitive_account", + "azurerm_cognitive_account_customer_managed_key", + "azurerm_cognitive_account_rai_blocklist", + "azurerm_cognitive_account_rai_policy", + "azurerm_cognitive_deployment", + "azurerm_communication_service", + "azurerm_communication_service_email_domain_association", + "azurerm_confidential_ledger", + "azurerm_consumption_budget_management_group", + "azurerm_consumption_budget_resource_group", + "azurerm_consumption_budget_subscription", + "azurerm_container_app", + "azurerm_container_app_custom_domain", + "azurerm_container_app_environment", + "azurerm_container_app_environment_certificate", + "azurerm_container_app_environment_custom_domain", + "azurerm_container_app_environment_dapr_component", + "azurerm_container_app_environment_storage", + "azurerm_container_app_job", + "azurerm_container_connected_registry", + "azurerm_container_group", + "azurerm_container_registry", + "azurerm_container_registry_agent_pool", + "azurerm_container_registry_cache_rule", + "azurerm_container_registry_credential_set", + "azurerm_container_registry_scope_map", + "azurerm_container_registry_task", + "azurerm_container_registry_task_schedule_run_now", + "azurerm_container_registry_token", + "azurerm_container_registry_token_password", + "azurerm_container_registry_webhook", + "azurerm_cosmosdb_account", + "azurerm_cosmosdb_cassandra_cluster", + "azurerm_cosmosdb_cassandra_datacenter", + "azurerm_cosmosdb_cassandra_keyspace", + "azurerm_cosmosdb_cassandra_table", + "azurerm_cosmosdb_gremlin_database", + "azurerm_cosmosdb_gremlin_graph", + "azurerm_cosmosdb_mongo_collection", + "azurerm_cosmosdb_mongo_database", + "azurerm_cosmosdb_mongo_role_definition", + "azurerm_cosmosdb_mongo_user_definition", + "azurerm_cosmosdb_postgresql_cluster", + "azurerm_cosmosdb_postgresql_coordinator_configuration", + "azurerm_cosmosdb_postgresql_firewall_rule", + "azurerm_cosmosdb_postgresql_node_configuration", + "azurerm_cosmosdb_postgresql_role", + "azurerm_cosmosdb_sql_container", + "azurerm_cosmosdb_sql_database", + "azurerm_cosmosdb_sql_dedicated_gateway", + "azurerm_cosmosdb_sql_function", + "azurerm_cosmosdb_sql_role_assignment", + "azurerm_cosmosdb_sql_role_definition", + "azurerm_cosmosdb_sql_stored_procedure", + "azurerm_cosmosdb_sql_trigger", + "azurerm_cosmosdb_table", + "azurerm_cost_anomaly_alert", + "azurerm_cost_management_scheduled_action", + "azurerm_custom_ip_prefix", + "azurerm_custom_provider", + "azurerm_dashboard", + "azurerm_dashboard_grafana", + "azurerm_dashboard_grafana_managed_private_endpoint", + "azurerm_data_factory", + "azurerm_data_factory_credential_service_principal", + "azurerm_data_factory_credential_user_managed_identity", + "azurerm_data_factory_custom_dataset", + "azurerm_data_factory_customer_managed_key", + "azurerm_data_factory_data_flow", + "azurerm_data_factory_dataset_azure_blob", + "azurerm_data_factory_dataset_azure_sql_table", + "azurerm_data_factory_dataset_binary", + "azurerm_data_factory_dataset_cosmosdb_sqlapi", + "azurerm_data_factory_dataset_delimited_text", + "azurerm_data_factory_dataset_http", + "azurerm_data_factory_dataset_json", + "azurerm_data_factory_dataset_mysql", + "azurerm_data_factory_dataset_parquet", + "azurerm_data_factory_dataset_postgresql", + "azurerm_data_factory_dataset_snowflake", + "azurerm_data_factory_dataset_sql_server_table", + "azurerm_data_factory_flowlet_data_flow", + "azurerm_data_factory_integration_runtime_azure", + "azurerm_data_factory_integration_runtime_azure_ssis", + "azurerm_data_factory_integration_runtime_self_hosted", + "azurerm_data_factory_linked_custom_service", + "azurerm_data_factory_linked_service_azure_blob_storage", + "azurerm_data_factory_linked_service_azure_databricks", + "azurerm_data_factory_linked_service_azure_file_storage", + "azurerm_data_factory_linked_service_azure_function", + "azurerm_data_factory_linked_service_azure_search", + "azurerm_data_factory_linked_service_azure_sql_database", + "azurerm_data_factory_linked_service_azure_table_storage", + "azurerm_data_factory_linked_service_cosmosdb", + "azurerm_data_factory_linked_service_cosmosdb_mongoapi", + "azurerm_data_factory_linked_service_data_lake_storage_gen2", + "azurerm_data_factory_linked_service_key_vault", + "azurerm_data_factory_linked_service_kusto", + "azurerm_data_factory_linked_service_mysql", + "azurerm_data_factory_linked_service_odata", + "azurerm_data_factory_linked_service_odbc", + "azurerm_data_factory_linked_service_postgresql", + "azurerm_data_factory_linked_service_sftp", + "azurerm_data_factory_linked_service_snowflake", + "azurerm_data_factory_linked_service_sql_server", + "azurerm_data_factory_linked_service_synapse", + "azurerm_data_factory_linked_service_web", + "azurerm_data_factory_managed_private_endpoint", + "azurerm_data_factory_pipeline", + "azurerm_data_factory_trigger_blob_event", + "azurerm_data_factory_trigger_custom_event", + "azurerm_data_factory_trigger_schedule", + "azurerm_data_factory_trigger_tumbling_window", + "azurerm_data_protection_backup_instance_blob_storage", + "azurerm_data_protection_backup_instance_disk", + "azurerm_data_protection_backup_instance_kubernetes_cluster", + "azurerm_data_protection_backup_instance_mysql_flexible_server", + "azurerm_data_protection_backup_instance_postgresql", + "azurerm_data_protection_backup_instance_postgresql_flexible_server", + "azurerm_data_protection_backup_policy_blob_storage", + "azurerm_data_protection_backup_policy_disk", + "azurerm_data_protection_backup_policy_kubernetes_cluster", + "azurerm_data_protection_backup_policy_mysql_flexible_server", + "azurerm_data_protection_backup_policy_postgresql", + "azurerm_data_protection_backup_policy_postgresql_flexible_server", + "azurerm_data_protection_backup_vault", + "azurerm_data_protection_backup_vault_customer_managed_key", + "azurerm_data_protection_resource_guard", + "azurerm_data_share", + "azurerm_data_share_account", + "azurerm_data_share_dataset_blob_storage", + "azurerm_data_share_dataset_data_lake_gen2", + "azurerm_data_share_dataset_kusto_cluster", + "azurerm_data_share_dataset_kusto_database", + "azurerm_database_migration_project", + "azurerm_database_migration_service", + "azurerm_databox_edge_device", + "azurerm_databricks_access_connector", + "azurerm_databricks_virtual_network_peering", + "azurerm_databricks_workspace", + "azurerm_databricks_workspace_root_dbfs_customer_managed_key", + "azurerm_datadog_monitor", + "azurerm_datadog_monitor_sso_configuration", + "azurerm_datadog_monitor_tag_rule", + "azurerm_dedicated_hardware_security_module", + "azurerm_dedicated_host", + "azurerm_dedicated_host_group", + "azurerm_dev_center", + "azurerm_dev_center_attached_network", + "azurerm_dev_center_catalog", + "azurerm_dev_center_dev_box_definition", + "azurerm_dev_center_environment_type", + "azurerm_dev_center_gallery", + "azurerm_dev_center_network_connection", + "azurerm_dev_center_project", + "azurerm_dev_center_project_environment_type", + "azurerm_dev_center_project_pool", + "azurerm_digital_twins_endpoint_eventgrid", + "azurerm_digital_twins_endpoint_eventhub", + "azurerm_digital_twins_endpoint_servicebus", + "azurerm_digital_twins_instance", + "azurerm_digital_twins_time_series_database_connection", + "azurerm_disk_access", + "azurerm_disk_encryption_set", + "azurerm_dns_a_record", + "azurerm_dns_aaaa_record", + "azurerm_dns_caa_record", + "azurerm_dns_cname_record", + "azurerm_dns_mx_record", + "azurerm_dns_ns_record", + "azurerm_dns_ptr_record", + "azurerm_dns_srv_record", + "azurerm_dns_txt_record", + "azurerm_dns_zone", + "azurerm_dynatrace_monitor", + "azurerm_dynatrace_tag_rules", + "azurerm_elastic_cloud_elasticsearch", + "azurerm_elastic_san", + "azurerm_elastic_san_volume", + "azurerm_elastic_san_volume_group", + "azurerm_email_communication_service", + "azurerm_email_communication_service_domain", + "azurerm_email_communication_service_domain_sender_username", + "azurerm_eventgrid_domain", + "azurerm_eventgrid_domain_topic", + "azurerm_eventgrid_event_subscription", + "azurerm_eventgrid_namespace", + "azurerm_eventgrid_partner_configuration", + "azurerm_eventgrid_partner_namespace", + "azurerm_eventgrid_partner_registration", + "azurerm_eventgrid_system_topic", + "azurerm_eventgrid_system_topic_event_subscription", + "azurerm_eventgrid_topic", + "azurerm_eventhub", + "azurerm_eventhub_authorization_rule", + "azurerm_eventhub_cluster", + "azurerm_eventhub_consumer_group", + "azurerm_eventhub_namespace", + "azurerm_eventhub_namespace_authorization_rule", + "azurerm_eventhub_namespace_customer_managed_key", + "azurerm_eventhub_namespace_disaster_recovery_config", + "azurerm_eventhub_namespace_schema_group", + "azurerm_express_route_circuit", + "azurerm_express_route_circuit_authorization", + "azurerm_express_route_circuit_connection", + "azurerm_express_route_circuit_peering", + "azurerm_express_route_connection", + "azurerm_express_route_gateway", + "azurerm_express_route_port", + "azurerm_express_route_port_authorization", + "azurerm_extended_location_custom_location", + "azurerm_fabric_capacity", + "azurerm_federated_identity_credential", + "azurerm_firewall", + "azurerm_firewall_application_rule_collection", + "azurerm_firewall_nat_rule_collection", + "azurerm_firewall_network_rule_collection", + "azurerm_firewall_policy", + "azurerm_firewall_policy_rule_collection_group", + "azurerm_fluid_relay_server", + "azurerm_frontdoor", + "azurerm_frontdoor_custom_https_configuration", + "azurerm_frontdoor_firewall_policy", + "azurerm_frontdoor_rules_engine", + "azurerm_function_app", + "azurerm_function_app_active_slot", + "azurerm_function_app_connection", + "azurerm_function_app_flex_consumption", + "azurerm_function_app_function", + "azurerm_function_app_hybrid_connection", + "azurerm_function_app_slot", + "azurerm_gallery_application", + "azurerm_gallery_application_version", + "azurerm_graph_services_account", + "azurerm_hdinsight_hadoop_cluster", + "azurerm_hdinsight_hbase_cluster", + "azurerm_hdinsight_interactive_query_cluster", + "azurerm_hdinsight_kafka_cluster", + "azurerm_hdinsight_spark_cluster", + "azurerm_healthbot", + "azurerm_healthcare_dicom_service", + "azurerm_healthcare_fhir_service", + "azurerm_healthcare_medtech_service", + "azurerm_healthcare_medtech_service_fhir_destination", + "azurerm_healthcare_service", + "azurerm_healthcare_workspace", + "azurerm_hpc_cache", + "azurerm_hpc_cache_access_policy", + "azurerm_hpc_cache_blob_nfs_target", + "azurerm_hpc_cache_blob_target", + "azurerm_hpc_cache_nfs_target", + "azurerm_image", + "azurerm_iot_security_device_group", + "azurerm_iot_security_solution", + "azurerm_iotcentral_application", + "azurerm_iotcentral_application_network_rule_set", + "azurerm_iotcentral_organization", + "azurerm_iothub", + "azurerm_iothub_certificate", + "azurerm_iothub_consumer_group", + "azurerm_iothub_device_update_account", + "azurerm_iothub_device_update_instance", + "azurerm_iothub_dps", + "azurerm_iothub_dps_certificate", + "azurerm_iothub_dps_shared_access_policy", + "azurerm_iothub_endpoint_cosmosdb_account", + "azurerm_iothub_endpoint_eventhub", + "azurerm_iothub_endpoint_servicebus_queue", + "azurerm_iothub_endpoint_servicebus_topic", + "azurerm_iothub_endpoint_storage_container", + "azurerm_iothub_enrichment", + "azurerm_iothub_fallback_route", + "azurerm_iothub_file_upload", + "azurerm_iothub_route", + "azurerm_iothub_shared_access_policy", + "azurerm_ip_group", + "azurerm_ip_group_cidr", + "azurerm_key_vault", + "azurerm_key_vault_access_policy", + "azurerm_key_vault_certificate", + "azurerm_key_vault_certificate_contacts", + "azurerm_key_vault_certificate_issuer", + "azurerm_key_vault_key", + "azurerm_key_vault_managed_hardware_security_module", + "azurerm_key_vault_managed_hardware_security_module_key", + "azurerm_key_vault_managed_hardware_security_module_key_rotation_policy", + "azurerm_key_vault_managed_hardware_security_module_role_assignment", + "azurerm_key_vault_managed_hardware_security_module_role_definition", + "azurerm_key_vault_managed_storage_account", + "azurerm_key_vault_managed_storage_account_sas_token_definition", + "azurerm_key_vault_secret", + "azurerm_kubernetes_cluster", + "azurerm_kubernetes_cluster_extension", + "azurerm_kubernetes_cluster_node_pool", + "azurerm_kubernetes_cluster_trusted_access_role_binding", + "azurerm_kubernetes_fleet_manager", + "azurerm_kubernetes_fleet_member", + "azurerm_kubernetes_fleet_update_run", + "azurerm_kubernetes_fleet_update_strategy", + "azurerm_kubernetes_flux_configuration", + "azurerm_kusto_attached_database_configuration", + "azurerm_kusto_cluster", + "azurerm_kusto_cluster_customer_managed_key", + "azurerm_kusto_cluster_managed_private_endpoint", + "azurerm_kusto_cluster_principal_assignment", + "azurerm_kusto_cosmosdb_data_connection", + "azurerm_kusto_database", + "azurerm_kusto_database_principal_assignment", + "azurerm_kusto_eventgrid_data_connection", + "azurerm_kusto_eventhub_data_connection", + "azurerm_kusto_iothub_data_connection", + "azurerm_kusto_script", + "azurerm_lb", + "azurerm_lb_backend_address_pool", + "azurerm_lb_backend_address_pool_address", + "azurerm_lb_nat_pool", + "azurerm_lb_nat_rule", + "azurerm_lb_outbound_rule", + "azurerm_lb_probe", + "azurerm_lb_rule", + "azurerm_lighthouse_assignment", + "azurerm_lighthouse_definition", + "azurerm_linux_function_app", + "azurerm_linux_function_app_slot", + "azurerm_linux_virtual_machine", + "azurerm_linux_virtual_machine_scale_set", + "azurerm_linux_web_app", + "azurerm_linux_web_app_slot", + "azurerm_local_network_gateway", + "azurerm_log_analytics_cluster", + "azurerm_log_analytics_cluster_customer_managed_key", + "azurerm_log_analytics_data_export_rule", + "azurerm_log_analytics_datasource_windows_event", + "azurerm_log_analytics_datasource_windows_performance_counter", + "azurerm_log_analytics_linked_service", + "azurerm_log_analytics_linked_storage_account", + "azurerm_log_analytics_query_pack", + "azurerm_log_analytics_query_pack_query", + "azurerm_log_analytics_saved_search", + "azurerm_log_analytics_solution", + "azurerm_log_analytics_storage_insights", + "azurerm_log_analytics_workspace", + "azurerm_log_analytics_workspace_table", + "azurerm_logic_app_action_custom", + "azurerm_logic_app_action_http", + "azurerm_logic_app_integration_account", + "azurerm_logic_app_integration_account_agreement", + "azurerm_logic_app_integration_account_assembly", + "azurerm_logic_app_integration_account_batch_configuration", + "azurerm_logic_app_integration_account_certificate", + "azurerm_logic_app_integration_account_map", + "azurerm_logic_app_integration_account_partner", + "azurerm_logic_app_integration_account_schema", + "azurerm_logic_app_integration_account_session", + "azurerm_logic_app_standard", + "azurerm_logic_app_trigger_custom", + "azurerm_logic_app_trigger_http_request", + "azurerm_logic_app_trigger_recurrence", + "azurerm_logic_app_workflow", + "azurerm_machine_learning_compute_cluster", + "azurerm_machine_learning_compute_instance", + "azurerm_machine_learning_datastore_blobstorage", + "azurerm_machine_learning_datastore_datalake_gen2", + "azurerm_machine_learning_datastore_fileshare", + "azurerm_machine_learning_inference_cluster", + "azurerm_machine_learning_synapse_spark", + "azurerm_machine_learning_workspace", + "azurerm_machine_learning_workspace_network_outbound_rule_fqdn", + "azurerm_machine_learning_workspace_network_outbound_rule_private_endpoint", + "azurerm_machine_learning_workspace_network_outbound_rule_service_tag", + "azurerm_maintenance_assignment_dedicated_host", + "azurerm_maintenance_assignment_dynamic_scope", + "azurerm_maintenance_assignment_virtual_machine", + "azurerm_maintenance_assignment_virtual_machine_scale_set", + "azurerm_maintenance_configuration", + "azurerm_managed_application", + "azurerm_managed_application_definition", + "azurerm_managed_disk", + "azurerm_managed_disk_sas_token", + "azurerm_managed_lustre_file_system", + "azurerm_managed_redis", + "azurerm_managed_redis_geo_replication", + "azurerm_management_group", + "azurerm_management_group_policy_assignment", + "azurerm_management_group_policy_exemption", + "azurerm_management_group_policy_remediation", + "azurerm_management_group_policy_set_definition", + "azurerm_management_group_subscription_association", + "azurerm_management_group_template_deployment", + "azurerm_management_lock", + "azurerm_maps_account", + "azurerm_maps_creator", + "azurerm_marketplace_agreement", + "azurerm_marketplace_role_assignment", + "azurerm_media_services_account", + "azurerm_media_transform", + "azurerm_mobile_network", + "azurerm_mobile_network_attached_data_network", + "azurerm_mobile_network_data_network", + "azurerm_mobile_network_packet_core_control_plane", + "azurerm_mobile_network_packet_core_data_plane", + "azurerm_mobile_network_service", + "azurerm_mobile_network_sim", + "azurerm_mobile_network_sim_group", + "azurerm_mobile_network_sim_policy", + "azurerm_mobile_network_site", + "azurerm_mobile_network_slice", + "azurerm_mongo_cluster", + "azurerm_mongo_cluster_firewall_rule", + "azurerm_monitor_aad_diagnostic_setting", + "azurerm_monitor_action_group", + "azurerm_monitor_activity_log_alert", + "azurerm_monitor_alert_processing_rule_action_group", + "azurerm_monitor_alert_processing_rule_suppression", + "azurerm_monitor_alert_prometheus_rule_group", + "azurerm_monitor_autoscale_setting", + "azurerm_monitor_data_collection_endpoint", + "azurerm_monitor_data_collection_rule", + "azurerm_monitor_data_collection_rule_association", + "azurerm_monitor_diagnostic_setting", + "azurerm_monitor_metric_alert", + "azurerm_monitor_private_link_scope", + "azurerm_monitor_private_link_scoped_service", + "azurerm_monitor_scheduled_query_rules_alert", + "azurerm_monitor_scheduled_query_rules_alert_v2", + "azurerm_monitor_scheduled_query_rules_log", + "azurerm_monitor_smart_detector_alert_rule", + "azurerm_monitor_workspace", + "azurerm_mssql_database", + "azurerm_mssql_database_extended_auditing_policy", + "azurerm_mssql_database_vulnerability_assessment_rule_baseline", + "azurerm_mssql_elasticpool", + "azurerm_mssql_failover_group", + "azurerm_mssql_firewall_rule", + "azurerm_mssql_job", + "azurerm_mssql_job_agent", + "azurerm_mssql_job_credential", + "azurerm_mssql_job_schedule", + "azurerm_mssql_job_step", + "azurerm_mssql_job_target_group", + "azurerm_mssql_managed_database", + "azurerm_mssql_managed_instance", + "azurerm_mssql_managed_instance_active_directory_administrator", + "azurerm_mssql_managed_instance_failover_group", + "azurerm_mssql_managed_instance_security_alert_policy", + "azurerm_mssql_managed_instance_start_stop_schedule", + "azurerm_mssql_managed_instance_transparent_data_encryption", + "azurerm_mssql_managed_instance_vulnerability_assessment", + "azurerm_mssql_outbound_firewall_rule", + "azurerm_mssql_server", + "azurerm_mssql_server_dns_alias", + "azurerm_mssql_server_extended_auditing_policy", + "azurerm_mssql_server_microsoft_support_auditing_policy", + "azurerm_mssql_server_security_alert_policy", + "azurerm_mssql_server_transparent_data_encryption", + "azurerm_mssql_server_vulnerability_assessment", + "azurerm_mssql_virtual_machine", + "azurerm_mssql_virtual_machine_availability_group_listener", + "azurerm_mssql_virtual_machine_group", + "azurerm_mssql_virtual_network_rule", + "azurerm_mysql_flexible_database", + "azurerm_mysql_flexible_server", + "azurerm_mysql_flexible_server_active_directory_administrator", + "azurerm_mysql_flexible_server_configuration", + "azurerm_mysql_flexible_server_firewall_rule", + "azurerm_nat_gateway", + "azurerm_nat_gateway_public_ip_association", + "azurerm_nat_gateway_public_ip_prefix_association", + "azurerm_netapp_account", + "azurerm_netapp_account_encryption", + "azurerm_netapp_backup_policy", + "azurerm_netapp_backup_vault", + "azurerm_netapp_pool", + "azurerm_netapp_snapshot", + "azurerm_netapp_snapshot_policy", + "azurerm_netapp_volume", + "azurerm_netapp_volume_group_oracle", + "azurerm_netapp_volume_group_sap_hana", + "azurerm_netapp_volume_quota_rule", + "azurerm_network_connection_monitor", + "azurerm_network_ddos_protection_plan", + "azurerm_network_function_azure_traffic_collector", + "azurerm_network_function_collector_policy", + "azurerm_network_interface", + "azurerm_network_interface_application_gateway_backend_address_pool_association", + "azurerm_network_interface_application_security_group_association", + "azurerm_network_interface_backend_address_pool_association", + "azurerm_network_interface_nat_rule_association", + "azurerm_network_interface_security_group_association", + "azurerm_network_manager", + "azurerm_network_manager_admin_rule", + "azurerm_network_manager_admin_rule_collection", + "azurerm_network_manager_connectivity_configuration", + "azurerm_network_manager_deployment", + "azurerm_network_manager_ipam_pool", + "azurerm_network_manager_ipam_pool_static_cidr", + "azurerm_network_manager_management_group_connection", + "azurerm_network_manager_network_group", + "azurerm_network_manager_routing_configuration", + "azurerm_network_manager_routing_rule", + "azurerm_network_manager_routing_rule_collection", + "azurerm_network_manager_scope_connection", + "azurerm_network_manager_security_admin_configuration", + "azurerm_network_manager_static_member", + "azurerm_network_manager_subscription_connection", + "azurerm_network_manager_verifier_workspace", + "azurerm_network_manager_verifier_workspace_reachability_analysis_intent", + "azurerm_network_profile", + "azurerm_network_security_group", + "azurerm_network_security_rule", + "azurerm_network_watcher", + "azurerm_network_watcher_flow_log", + "azurerm_new_relic_monitor", + "azurerm_new_relic_tag_rule", + "azurerm_nginx_api_key", + "azurerm_nginx_certificate", + "azurerm_nginx_configuration", + "azurerm_nginx_deployment", + "azurerm_notification_hub", + "azurerm_notification_hub_authorization_rule", + "azurerm_notification_hub_namespace", + "azurerm_oracle_autonomous_database", + "azurerm_oracle_autonomous_database_backup", + "azurerm_oracle_autonomous_database_clone_from_backup", + "azurerm_oracle_autonomous_database_clone_from_database", + "azurerm_oracle_cloud_vm_cluster", + "azurerm_oracle_exadata_infrastructure", + "azurerm_oracle_exascale_database_storage_vault", + "azurerm_oracle_resource_anchor", + "azurerm_orbital_contact", + "azurerm_orbital_contact_profile", + "azurerm_orbital_spacecraft", + "azurerm_orchestrated_virtual_machine_scale_set", + "azurerm_palo_alto_local_rulestack", + "azurerm_palo_alto_local_rulestack_certificate", + "azurerm_palo_alto_local_rulestack_fqdn_list", + "azurerm_palo_alto_local_rulestack_outbound_trust_certificate_association", + "azurerm_palo_alto_local_rulestack_outbound_untrust_certificate_association", + "azurerm_palo_alto_local_rulestack_prefix_list", + "azurerm_palo_alto_local_rulestack_rule", + "azurerm_palo_alto_next_generation_firewall_virtual_hub_local_rulestack", + "azurerm_palo_alto_next_generation_firewall_virtual_hub_panorama", + "azurerm_palo_alto_next_generation_firewall_virtual_network_local_rulestack", + "azurerm_palo_alto_next_generation_firewall_virtual_network_panorama", + "azurerm_palo_alto_virtual_network_appliance", + "azurerm_pim_active_role_assignment", + "azurerm_pim_eligible_role_assignment", + "azurerm_point_to_site_vpn_gateway", + "azurerm_policy_definition", + "azurerm_policy_set_definition", + "azurerm_policy_virtual_machine_configuration_assignment", + "azurerm_portal_dashboard", + "azurerm_portal_tenant_configuration", + "azurerm_postgresql_active_directory_administrator", + "azurerm_postgresql_configuration", + "azurerm_postgresql_database", + "azurerm_postgresql_firewall_rule", + "azurerm_postgresql_flexible_server", + "azurerm_postgresql_flexible_server_active_directory_administrator", + "azurerm_postgresql_flexible_server_backup", + "azurerm_postgresql_flexible_server_configuration", + "azurerm_postgresql_flexible_server_database", + "azurerm_postgresql_flexible_server_firewall_rule", + "azurerm_postgresql_flexible_server_virtual_endpoint", + "azurerm_postgresql_server", + "azurerm_postgresql_server_key", + "azurerm_postgresql_virtual_network_rule", + "azurerm_powerbi_embedded", + "azurerm_private_dns_a_record", + "azurerm_private_dns_aaaa_record", + "azurerm_private_dns_cname_record", + "azurerm_private_dns_mx_record", + "azurerm_private_dns_ptr_record", + "azurerm_private_dns_resolver", + "azurerm_private_dns_resolver_dns_forwarding_ruleset", + "azurerm_private_dns_resolver_forwarding_rule", + "azurerm_private_dns_resolver_inbound_endpoint", + "azurerm_private_dns_resolver_outbound_endpoint", + "azurerm_private_dns_resolver_virtual_network_link", + "azurerm_private_dns_soa_record", + "azurerm_private_dns_srv_record", + "azurerm_private_dns_txt_record", + "azurerm_private_dns_zone", + "azurerm_private_dns_zone_virtual_network_link", + "azurerm_private_endpoint", + "azurerm_private_endpoint_application_security_group_association", + "azurerm_private_link_service", + "azurerm_proximity_placement_group", + "azurerm_public_ip", + "azurerm_public_ip_prefix", + "azurerm_purview_account", + "azurerm_qumulo_file_system", + "azurerm_recovery_services_vault", + "azurerm_recovery_services_vault_resource_guard_association", + "azurerm_redhat_openshift_cluster", + "azurerm_redis_cache", + "azurerm_redis_cache_access_policy", + "azurerm_redis_cache_access_policy_assignment", + "azurerm_redis_enterprise_cluster", + "azurerm_redis_enterprise_database", + "azurerm_redis_firewall_rule", + "azurerm_redis_linked_server", + "azurerm_relay_hybrid_connection", + "azurerm_relay_hybrid_connection_authorization_rule", + "azurerm_relay_namespace", + "azurerm_relay_namespace_authorization_rule", + "azurerm_resource_deployment_script_azure_cli", + "azurerm_resource_deployment_script_azure_power_shell", + "azurerm_resource_group", + "azurerm_resource_group_cost_management_export", + "azurerm_resource_group_cost_management_view", + "azurerm_resource_group_policy_assignment", + "azurerm_resource_group_policy_exemption", + "azurerm_resource_group_policy_remediation", + "azurerm_resource_group_template_deployment", + "azurerm_resource_management_private_link", + "azurerm_resource_management_private_link_association", + "azurerm_resource_policy_assignment", + "azurerm_resource_policy_exemption", + "azurerm_resource_policy_remediation", + "azurerm_resource_provider_registration", + "azurerm_role_assignment", + "azurerm_role_definition", + "azurerm_role_management_policy", + "azurerm_route", + "azurerm_route_filter", + "azurerm_route_map", + "azurerm_route_server", + "azurerm_route_server_bgp_connection", + "azurerm_route_table", + "azurerm_search_service", + "azurerm_search_shared_private_link_service", + "azurerm_security_center_assessment", + "azurerm_security_center_assessment_policy", + "azurerm_security_center_auto_provisioning", + "azurerm_security_center_automation", + "azurerm_security_center_contact", + "azurerm_security_center_server_vulnerability_assessment_virtual_machine", + "azurerm_security_center_server_vulnerability_assessments_setting", + "azurerm_security_center_setting", + "azurerm_security_center_storage_defender", + "azurerm_security_center_subscription_pricing", + "azurerm_security_center_workspace", + "azurerm_sentinel_alert_rule_anomaly_built_in", + "azurerm_sentinel_alert_rule_anomaly_duplicate", + "azurerm_sentinel_alert_rule_fusion", + "azurerm_sentinel_alert_rule_machine_learning_behavior_analytics", + "azurerm_sentinel_alert_rule_ms_security_incident", + "azurerm_sentinel_alert_rule_nrt", + "azurerm_sentinel_alert_rule_scheduled", + "azurerm_sentinel_alert_rule_threat_intelligence", + "azurerm_sentinel_automation_rule", + "azurerm_sentinel_data_connector_aws_cloud_trail", + "azurerm_sentinel_data_connector_aws_s3", + "azurerm_sentinel_data_connector_azure_active_directory", + "azurerm_sentinel_data_connector_azure_advanced_threat_protection", + "azurerm_sentinel_data_connector_azure_security_center", + "azurerm_sentinel_data_connector_dynamics_365", + "azurerm_sentinel_data_connector_iot", + "azurerm_sentinel_data_connector_microsoft_cloud_app_security", + "azurerm_sentinel_data_connector_microsoft_defender_advanced_threat_protection", + "azurerm_sentinel_data_connector_microsoft_threat_intelligence", + "azurerm_sentinel_data_connector_microsoft_threat_protection", + "azurerm_sentinel_data_connector_office_365", + "azurerm_sentinel_data_connector_office_365_project", + "azurerm_sentinel_data_connector_office_atp", + "azurerm_sentinel_data_connector_office_irm", + "azurerm_sentinel_data_connector_office_power_bi", + "azurerm_sentinel_data_connector_threat_intelligence", + "azurerm_sentinel_data_connector_threat_intelligence_taxii", + "azurerm_sentinel_log_analytics_workspace_onboarding", + "azurerm_sentinel_metadata", + "azurerm_sentinel_threat_intelligence_indicator", + "azurerm_sentinel_watchlist", + "azurerm_sentinel_watchlist_item", + "azurerm_service_fabric_cluster", + "azurerm_service_fabric_managed_cluster", + "azurerm_service_plan", + "azurerm_servicebus_namespace", + "azurerm_servicebus_namespace_authorization_rule", + "azurerm_servicebus_namespace_customer_managed_key", + "azurerm_servicebus_namespace_disaster_recovery_config", + "azurerm_servicebus_queue", + "azurerm_servicebus_queue_authorization_rule", + "azurerm_servicebus_subscription", + "azurerm_servicebus_subscription_rule", + "azurerm_servicebus_topic", + "azurerm_servicebus_topic_authorization_rule", + "azurerm_shared_image", + "azurerm_shared_image_gallery", + "azurerm_shared_image_version", + "azurerm_signalr_service", + "azurerm_signalr_service_custom_certificate", + "azurerm_signalr_service_custom_domain", + "azurerm_signalr_service_network_acl", + "azurerm_signalr_shared_private_link_resource", + "azurerm_site_recovery_fabric", + "azurerm_site_recovery_hyperv_network_mapping", + "azurerm_site_recovery_hyperv_replication_policy", + "azurerm_site_recovery_hyperv_replication_policy_association", + "azurerm_site_recovery_network_mapping", + "azurerm_site_recovery_protection_container", + "azurerm_site_recovery_protection_container_mapping", + "azurerm_site_recovery_replicated_vm", + "azurerm_site_recovery_replication_policy", + "azurerm_site_recovery_replication_recovery_plan", + "azurerm_site_recovery_services_vault_hyperv_site", + "azurerm_site_recovery_vmware_replicated_vm", + "azurerm_site_recovery_vmware_replication_policy", + "azurerm_site_recovery_vmware_replication_policy_association", + "azurerm_snapshot", + "azurerm_source_control_token", + "azurerm_spring_cloud_accelerator", + "azurerm_spring_cloud_active_deployment", + "azurerm_spring_cloud_api_portal", + "azurerm_spring_cloud_api_portal_custom_domain", + "azurerm_spring_cloud_app", + "azurerm_spring_cloud_app_cosmosdb_association", + "azurerm_spring_cloud_app_dynamics_application_performance_monitoring", + "azurerm_spring_cloud_app_mysql_association", + "azurerm_spring_cloud_app_redis_association", + "azurerm_spring_cloud_application_insights_application_performance_monitoring", + "azurerm_spring_cloud_application_live_view", + "azurerm_spring_cloud_build_deployment", + "azurerm_spring_cloud_build_pack_binding", + "azurerm_spring_cloud_builder", + "azurerm_spring_cloud_certificate", + "azurerm_spring_cloud_configuration_service", + "azurerm_spring_cloud_connection", + "azurerm_spring_cloud_container_deployment", + "azurerm_spring_cloud_custom_domain", + "azurerm_spring_cloud_customized_accelerator", + "azurerm_spring_cloud_dev_tool_portal", + "azurerm_spring_cloud_dynatrace_application_performance_monitoring", + "azurerm_spring_cloud_elastic_application_performance_monitoring", + "azurerm_spring_cloud_gateway", + "azurerm_spring_cloud_gateway_custom_domain", + "azurerm_spring_cloud_gateway_route_config", + "azurerm_spring_cloud_java_deployment", + "azurerm_spring_cloud_new_relic_application_performance_monitoring", + "azurerm_spring_cloud_service", + "azurerm_spring_cloud_storage", + "azurerm_sql_firewall_rule", + "azurerm_sql_server", + "azurerm_sql_virtual_network_rule", + "azurerm_ssh_public_key", + "azurerm_stack_hci_cluster", + "azurerm_stack_hci_deployment_setting", + "azurerm_stack_hci_extension", + "azurerm_stack_hci_logical_network", + "azurerm_stack_hci_marketplace_gallery_image", + "azurerm_stack_hci_network_interface", + "azurerm_stack_hci_storage_path", + "azurerm_stack_hci_virtual_hard_disk", + "azurerm_static_site", + "azurerm_static_site_custom_domain", + "azurerm_static_web_app", + "azurerm_static_web_app_custom_domain", + "azurerm_static_web_app_function_app_registration", + "azurerm_storage_account", + "azurerm_storage_account_customer_managed_key", + "azurerm_storage_account_local_user", + "azurerm_storage_account_network_rules", + "azurerm_storage_account_queue_properties", + "azurerm_storage_account_static_website", + "azurerm_storage_blob", + "azurerm_storage_blob_inventory_policy", + "azurerm_storage_container", + "azurerm_storage_container_immutability_policy", + "azurerm_storage_data_lake_gen2_filesystem", + "azurerm_storage_data_lake_gen2_path", + "azurerm_storage_encryption_scope", + "azurerm_storage_management_policy", + "azurerm_storage_mover", + "azurerm_storage_mover_agent", + "azurerm_storage_mover_job_definition", + "azurerm_storage_mover_project", + "azurerm_storage_mover_source_endpoint", + "azurerm_storage_mover_target_endpoint", + "azurerm_storage_object_replication", + "azurerm_storage_queue", + "azurerm_storage_share", + "azurerm_storage_share_directory", + "azurerm_storage_share_file", + "azurerm_storage_sync", + "azurerm_storage_sync_cloud_endpoint", + "azurerm_storage_sync_group", + "azurerm_storage_sync_server_endpoint", + "azurerm_storage_table", + "azurerm_storage_table_entity", + "azurerm_stream_analytics_cluster", + "azurerm_stream_analytics_function_javascript_uda", + "azurerm_stream_analytics_function_javascript_udf", + "azurerm_stream_analytics_job", + "azurerm_stream_analytics_job_schedule", + "azurerm_stream_analytics_job_storage_account", + "azurerm_stream_analytics_managed_private_endpoint", + "azurerm_stream_analytics_output_blob", + "azurerm_stream_analytics_output_cosmosdb", + "azurerm_stream_analytics_output_eventhub", + "azurerm_stream_analytics_output_function", + "azurerm_stream_analytics_output_mssql", + "azurerm_stream_analytics_output_powerbi", + "azurerm_stream_analytics_output_servicebus_queue", + "azurerm_stream_analytics_output_servicebus_topic", + "azurerm_stream_analytics_output_synapse", + "azurerm_stream_analytics_output_table", + "azurerm_stream_analytics_reference_input_blob", + "azurerm_stream_analytics_reference_input_mssql", + "azurerm_stream_analytics_stream_input_blob", + "azurerm_stream_analytics_stream_input_eventhub", + "azurerm_stream_analytics_stream_input_eventhub_v2", + "azurerm_stream_analytics_stream_input_iothub", + "azurerm_subnet", + "azurerm_subnet_nat_gateway_association", + "azurerm_subnet_network_security_group_association", + "azurerm_subnet_route_table_association", + "azurerm_subnet_service_endpoint_storage_policy", + "azurerm_subscription", + "azurerm_subscription_cost_management_export", + "azurerm_subscription_cost_management_view", + "azurerm_subscription_policy_assignment", + "azurerm_subscription_policy_exemption", + "azurerm_subscription_policy_remediation", + "azurerm_subscription_template_deployment", + "azurerm_synapse_firewall_rule", + "azurerm_synapse_integration_runtime_azure", + "azurerm_synapse_integration_runtime_self_hosted", + "azurerm_synapse_linked_service", + "azurerm_synapse_managed_private_endpoint", + "azurerm_synapse_private_link_hub", + "azurerm_synapse_role_assignment", + "azurerm_synapse_spark_pool", + "azurerm_synapse_sql_pool", + "azurerm_synapse_sql_pool_extended_auditing_policy", + "azurerm_synapse_sql_pool_security_alert_policy", + "azurerm_synapse_sql_pool_vulnerability_assessment", + "azurerm_synapse_sql_pool_vulnerability_assessment_baseline", + "azurerm_synapse_sql_pool_workload_classifier", + "azurerm_synapse_sql_pool_workload_group", + "azurerm_synapse_workspace", + "azurerm_synapse_workspace_aad_admin", + "azurerm_synapse_workspace_extended_auditing_policy", + "azurerm_synapse_workspace_key", + "azurerm_synapse_workspace_security_alert_policy", + "azurerm_synapse_workspace_sql_aad_admin", + "azurerm_synapse_workspace_vulnerability_assessment", + "azurerm_system_center_virtual_machine_manager_availability_set", + "azurerm_system_center_virtual_machine_manager_cloud", + "azurerm_system_center_virtual_machine_manager_server", + "azurerm_system_center_virtual_machine_manager_virtual_machine_instance", + "azurerm_system_center_virtual_machine_manager_virtual_machine_instance_guest_agent", + "azurerm_system_center_virtual_machine_manager_virtual_machine_template", + "azurerm_system_center_virtual_machine_manager_virtual_network", + "azurerm_tenant_template_deployment", + "azurerm_traffic_manager_azure_endpoint", + "azurerm_traffic_manager_external_endpoint", + "azurerm_traffic_manager_nested_endpoint", + "azurerm_traffic_manager_profile", + "azurerm_trusted_signing_account", + "azurerm_user_assigned_identity", + "azurerm_video_indexer_account", + "azurerm_virtual_desktop_application", + "azurerm_virtual_desktop_application_group", + "azurerm_virtual_desktop_host_pool", + "azurerm_virtual_desktop_host_pool_registration_info", + "azurerm_virtual_desktop_scaling_plan", + "azurerm_virtual_desktop_scaling_plan_host_pool_association", + "azurerm_virtual_desktop_workspace", + "azurerm_virtual_desktop_workspace_application_group_association", + "azurerm_virtual_hub", + "azurerm_virtual_hub_bgp_connection", + "azurerm_virtual_hub_connection", + "azurerm_virtual_hub_ip", + "azurerm_virtual_hub_route_table", + "azurerm_virtual_hub_route_table_route", + "azurerm_virtual_hub_routing_intent", + "azurerm_virtual_hub_security_partner_provider", + "azurerm_virtual_machine", + "azurerm_virtual_machine_automanage_configuration_assignment", + "azurerm_virtual_machine_data_disk_attachment", + "azurerm_virtual_machine_extension", + "azurerm_virtual_machine_gallery_application_assignment", + "azurerm_virtual_machine_implicit_data_disk_from_source", + "azurerm_virtual_machine_packet_capture", + "azurerm_virtual_machine_restore_point", + "azurerm_virtual_machine_restore_point_collection", + "azurerm_virtual_machine_run_command", + "azurerm_virtual_machine_scale_set", + "azurerm_virtual_machine_scale_set_extension", + "azurerm_virtual_machine_scale_set_packet_capture", + "azurerm_virtual_machine_scale_set_standby_pool", + "azurerm_virtual_network", + "azurerm_virtual_network_dns_servers", + "azurerm_virtual_network_gateway", + "azurerm_virtual_network_gateway_connection", + "azurerm_virtual_network_gateway_nat_rule", + "azurerm_virtual_network_peering", + "azurerm_virtual_wan", + "azurerm_vmware_cluster", + "azurerm_vmware_express_route_authorization", + "azurerm_vmware_netapp_volume_attachment", + "azurerm_vmware_private_cloud", + "azurerm_voice_services_communications_gateway", + "azurerm_vpn_gateway", + "azurerm_vpn_gateway_connection", + "azurerm_vpn_gateway_nat_rule", + "azurerm_vpn_server_configuration", + "azurerm_vpn_server_configuration_policy_group", + "azurerm_vpn_site", + "azurerm_web_app_active_slot", + "azurerm_web_app_hybrid_connection", + "azurerm_web_application_firewall_policy", + "azurerm_web_pubsub", + "azurerm_web_pubsub_custom_certificate", + "azurerm_web_pubsub_custom_domain", + "azurerm_web_pubsub_hub", + "azurerm_web_pubsub_network_acl", + "azurerm_web_pubsub_service", + "azurerm_web_pubsub_shared_private_link_resource", + "azurerm_web_pubsub_socketio", + "azurerm_windows_function_app", + "azurerm_windows_function_app_slot", + "azurerm_windows_virtual_machine", + "azurerm_windows_virtual_machine_scale_set", + "azurerm_windows_web_app", + "azurerm_windows_web_app_slot", + "azurerm_workloads_sap_discovery_virtual_instance", + "azurerm_workloads_sap_single_node_virtual_instance", + "azurerm_workloads_sap_three_tier_virtual_instance" + ], + "dataSources": [ + "azurerm_aadb2c_directory", + "azurerm_active_directory_domain_service", + "azurerm_advisor_recommendations", + "azurerm_api_connection", + "azurerm_api_management", + "azurerm_api_management_api", + "azurerm_api_management_api_version_set", + "azurerm_api_management_gateway", + "azurerm_api_management_gateway_host_name_configuration", + "azurerm_api_management_group", + "azurerm_api_management_product", + "azurerm_api_management_subscription", + "azurerm_api_management_user", + "azurerm_app_configuration", + "azurerm_app_configuration_key", + "azurerm_app_configuration_keys", + "azurerm_app_service", + "azurerm_app_service_certificate", + "azurerm_app_service_certificate_order", + "azurerm_app_service_environment_v3", + "azurerm_app_service_plan", + "azurerm_application_gateway", + "azurerm_application_insights", + "azurerm_application_security_group", + "azurerm_arc_machine", + "azurerm_arc_resource_bridge_appliance", + "azurerm_attestation_provider", + "azurerm_automation_account", + "azurerm_automation_runbook", + "azurerm_automation_variable_bool", + "azurerm_automation_variable_datetime", + "azurerm_automation_variable_int", + "azurerm_automation_variable_object", + "azurerm_automation_variable_string", + "azurerm_automation_variables", + "azurerm_availability_set", + "azurerm_backup_policy_file_share", + "azurerm_backup_policy_vm", + "azurerm_bastion_host", + "azurerm_batch_account", + "azurerm_batch_application", + "azurerm_batch_certificate", + "azurerm_batch_pool", + "azurerm_billing_enrollment_account_scope", + "azurerm_billing_mca_account_scope", + "azurerm_billing_mpa_account_scope", + "azurerm_blueprint_definition", + "azurerm_blueprint_published_version", + "azurerm_cdn_frontdoor_custom_domain", + "azurerm_cdn_frontdoor_endpoint", + "azurerm_cdn_frontdoor_firewall_policy", + "azurerm_cdn_frontdoor_origin_group", + "azurerm_cdn_frontdoor_profile", + "azurerm_cdn_frontdoor_rule_set", + "azurerm_cdn_frontdoor_secret", + "azurerm_cdn_profile", + "azurerm_client_config", + "azurerm_cognitive_account", + "azurerm_communication_service", + "azurerm_confidential_ledger", + "azurerm_consumption_budget_resource_group", + "azurerm_consumption_budget_subscription", + "azurerm_container_app", + "azurerm_container_app_environment", + "azurerm_container_app_environment_certificate", + "azurerm_container_app_environment_dapr_component.", + "azurerm_container_group", + "azurerm_container_registry", + "azurerm_container_registry_cache_rule", + "azurerm_container_registry_scope_map", + "azurerm_container_registry_token", + "azurerm_cosmosdb_account", + "azurerm_cosmosdb_mongo_database", + "azurerm_cosmosdb_restorable_database_accounts", + "azurerm_cosmosdb_sql_database", + "azurerm_cosmosdb_sql_role_definition", + "azurerm_dashboard_grafana", + "azurerm_data_factory", + "azurerm_data_factory_trigger_schedule", + "azurerm_data_factory_trigger_schedules", + "azurerm_data_lake_store", + "azurerm_data_protection_backup_vault", + "azurerm_data_share", + "azurerm_data_share_account", + "azurerm_data_share_dataset_blob_storage", + "azurerm_data_share_dataset_data_lake_gen1", + "azurerm_data_share_dataset_data_lake_gen2", + "azurerm_data_share_dataset_kusto_cluster", + "azurerm_data_share_dataset_kusto_database", + "azurerm_database_migration_project", + "azurerm_database_migration_service", + "azurerm_databox_edge_device", + "azurerm_databricks_access_connector", + "azurerm_databricks_workspace", + "azurerm_databricks_workspace_private_endpoint_connection", + "azurerm_dedicated_host", + "azurerm_dedicated_host_group", + "azurerm_dev_center", + "azurerm_dev_center_attached_network", + "azurerm_dev_center_catalog", + "azurerm_dev_center_dev_box_definition", + "azurerm_dev_center_environment_type", + "azurerm_dev_center_gallery", + "azurerm_dev_center_network_connection", + "azurerm_dev_center_project", + "azurerm_dev_center_project_environment_type", + "azurerm_dev_center_project_pool", + "azurerm_digital_twins_instance", + "azurerm_disk_access", + "azurerm_disk_encryption_set", + "azurerm_dns_a_record", + "azurerm_dns_aaaa_record", + "azurerm_dns_caa_record", + "azurerm_dns_cname_record", + "azurerm_dns_mx_record", + "azurerm_dns_ns_record", + "azurerm_dns_ptr_record", + "azurerm_dns_soa_record", + "azurerm_dns_srv_record", + "azurerm_dns_txt_record", + "azurerm_dns_zone", + "azurerm_dynatrace_monitor", + "azurerm_elastic_cloud_elasticsearch", + "azurerm_elastic_san", + "azurerm_elastic_san_volume_group", + "azurerm_elastic_san_volume_snapshot", + "azurerm_eventgrid_domain", + "azurerm_eventgrid_domain_topic", + "azurerm_eventgrid_partner_namespace", + "azurerm_eventgrid_partner_registration", + "azurerm_eventgrid_system_topic", + "azurerm_eventgrid_topic", + "azurerm_eventhub", + "azurerm_eventhub_authorization_rule", + "azurerm_eventhub_cluster", + "azurerm_eventhub_consumer_group", + "azurerm_eventhub_namespace", + "azurerm_eventhub_namespace_authorization_rule", + "azurerm_eventhub_sas", + "azurerm_express_route_circuit", + "azurerm_express_route_circuit_peering", + "azurerm_extended_location_custom_location", + "azurerm_extended_locations", + "azurerm_firewall", + "azurerm_firewall_policy", + "azurerm_function_app", + "azurerm_function_app_host_keys", + "azurerm_graph_services_account", + "azurerm_hdinsight_cluster", + "azurerm_healthcare_dicom_service", + "azurerm_healthcare_fhir_service", + "azurerm_healthcare_medtech_service", + "azurerm_healthcare_service", + "azurerm_healthcare_workspace", + "azurerm_image", + "azurerm_images", + "azurerm_iothub", + "azurerm_iothub_dps", + "azurerm_iothub_dps_shared_access_policy", + "azurerm_iothub_shared_access_policy", + "azurerm_ip_group", + "azurerm_ip_groups", + "azurerm_key_vault", + "azurerm_key_vault_access_policy", + "azurerm_key_vault_certificate", + "azurerm_key_vault_certificate_data", + "azurerm_key_vault_certificate_issuer", + "azurerm_key_vault_certificates", + "azurerm_key_vault_encrypted_value", + "azurerm_key_vault_key", + "azurerm_key_vault_managed_hardware_security_module", + "azurerm_key_vault_managed_hardware_security_module_key", + "azurerm_key_vault_managed_hardware_security_module_role_definition", + "azurerm_key_vault_secret", + "azurerm_key_vault_secrets", + "azurerm_kubernetes_cluster", + "azurerm_kubernetes_cluster_node_pool", + "azurerm_kubernetes_fleet_manager", + "azurerm_kubernetes_node_pool_snapshot", + "azurerm_kubernetes_service_versions", + "azurerm_kusto_cluster", + "azurerm_kusto_database", + "azurerm_lb", + "azurerm_lb_backend_address_pool", + "azurerm_lb_outbound_rule", + "azurerm_lb_rule", + "azurerm_linux_function_app", + "azurerm_linux_web_app", + "azurerm_local_network_gateway", + "azurerm_location", + "azurerm_log_analytics_workspace", + "azurerm_log_analytics_workspace_table", + "azurerm_logic_app_integration_account", + "azurerm_logic_app_standard", + "azurerm_logic_app_workflow", + "azurerm_machine_learning_workspace", + "azurerm_maintenance_configuration", + "azurerm_managed_api", + "azurerm_managed_application_definition", + "azurerm_managed_disk", + "azurerm_managed_disks", + "azurerm_managed_redis", + "azurerm_management_group", + "azurerm_management_group_template_deployment", + "azurerm_maps_account", + "azurerm_marketplace_agreement", + "azurerm_mobile_network", + "azurerm_mobile_network_attached_data_network", + "azurerm_mobile_network_data_network", + "azurerm_mobile_network_packet_core_control_plane", + "azurerm_mobile_network_packet_core_data_plane", + "azurerm_mobile_network_service", + "azurerm_mobile_network_sim", + "azurerm_mobile_network_sim_group", + "azurerm_mobile_network_sim_policy", + "azurerm_mobile_network_site", + "azurerm_mobile_network_slice", + "azurerm_monitor_action_group", + "azurerm_monitor_data_collection_endpoint", + "azurerm_monitor_data_collection_rule", + "azurerm_monitor_diagnostic_categories", + "azurerm_monitor_scheduled_query_rules_alert", + "azurerm_monitor_scheduled_query_rules_log", + "azurerm_monitor_workspace", + "azurerm_mssql_database", + "azurerm_mssql_elasticpool", + "azurerm_mssql_failover_group", + "azurerm_mssql_managed_database", + "azurerm_mssql_managed_instance", + "azurerm_mssql_server", + "azurerm_mysql_flexible_server", + "azurerm_nat_gateway", + "azurerm_netapp_account", + "azurerm_netapp_account_encryption", + "azurerm_netapp_backup_policy", + "azurerm_netapp_backup_vault", + "azurerm_netapp_pool", + "azurerm_netapp_snapshot", + "azurerm_netapp_snapshot_policy", + "azurerm_netapp_volume", + "azurerm_netapp_volume_group_oracle", + "azurerm_netapp_volume_group_sap_hana", + "azurerm_netapp_volume_quota_rule", + "azurerm_network_ddos_protection_plan", + "azurerm_network_interface", + "azurerm_network_manager", + "azurerm_network_manager_connectivity_configuration", + "azurerm_network_manager_ipam_pool", + "azurerm_network_manager_network_group", + "azurerm_network_security_group", + "azurerm_network_service_tags", + "azurerm_network_watcher", + "azurerm_nginx_api_key", + "azurerm_nginx_certificate", + "azurerm_nginx_configuration", + "azurerm_nginx_deployment", + "azurerm_notification_hub", + "azurerm_notification_hub_namespace", + "azurerm_oracle_adbs_character_sets", + "azurerm_oracle_adbs_national_character_sets", + "azurerm_oracle_autonomous_database", + "azurerm_oracle_autonomous_database_backup", + "azurerm_oracle_autonomous_database_backups", + "azurerm_oracle_autonomous_database_clone_from_backup", + "azurerm_oracle_autonomous_database_clone_from_database", + "azurerm_oracle_cloud_vm_cluster", + "azurerm_oracle_db_nodes", + "azurerm_oracle_db_servers", + "azurerm_oracle_db_system_shapes", + "azurerm_oracle_exadata_infrastructure", + "azurerm_oracle_exascale_database_storage_vault", + "azurerm_oracle_gi_versions", + "azurerm_oracle_resource_anchor", + "azurerm_orchestrated_virtual_machine_scale_set", + "azurerm_palo_alto_local_rulestack", + "azurerm_platform_image", + "azurerm_policy_assignment", + "azurerm_policy_definition", + "azurerm_policy_definition_built_in", + "azurerm_policy_set_definition", + "azurerm_policy_virtual_machine_configuration_assignment", + "azurerm_portal_dashboard", + "azurerm_postgresql_flexible_server", + "azurerm_postgresql_server", + "azurerm_private_dns_a_record", + "azurerm_private_dns_aaaa_record", + "azurerm_private_dns_cname_record", + "azurerm_private_dns_mx_record", + "azurerm_private_dns_ptr_record", + "azurerm_private_dns_resolver", + "azurerm_private_dns_resolver_dns_forwarding_ruleset", + "azurerm_private_dns_resolver_forwarding_rule", + "azurerm_private_dns_resolver_inbound_endpoint", + "azurerm_private_dns_resolver_outbound_endpoint", + "azurerm_private_dns_resolver_virtual_network_link", + "azurerm_private_dns_soa_record", + "azurerm_private_dns_srv_record", + "azurerm_private_dns_txt_record", + "azurerm_private_dns_zone", + "azurerm_private_dns_zone_virtual_network_link", + "azurerm_private_endpoint_connection", + "azurerm_private_link_service", + "azurerm_private_link_service_endpoint_connections", + "azurerm_proximity_placement_group", + "azurerm_public_ip", + "azurerm_public_ip_prefix", + "azurerm_public_ips", + "azurerm_public_maintenance_configurations", + "azurerm_recovery_services_vault", + "azurerm_redis_cache", + "azurerm_redis_enterprise_database", + "azurerm_resource_group", + "azurerm_resource_group_template_deployment", + "azurerm_resources", + "azurerm_role_assignments", + "azurerm_role_definition", + "azurerm_role_management_policy", + "azurerm_route_filter", + "azurerm_route_table", + "azurerm_search_service", + "azurerm_sentinel_alert_rule", + "azurerm_sentinel_alert_rule_anomaly", + "azurerm_sentinel_alert_rule_template", + "azurerm_service_plan", + "azurerm_servicebus_namespace", + "azurerm_servicebus_namespace_authorization_rule", + "azurerm_servicebus_namespace_disaster_recovery_config", + "azurerm_servicebus_queue", + "azurerm_servicebus_queue_authorization_rule", + "azurerm_servicebus_subscription", + "azurerm_servicebus_topic", + "azurerm_servicebus_topic_authorization_rule", + "azurerm_shared_image", + "azurerm_shared_image_gallery", + "azurerm_shared_image_version", + "azurerm_shared_image_versions", + "azurerm_signalr_service", + "azurerm_site_recovery_fabric", + "azurerm_site_recovery_protection_container", + "azurerm_site_recovery_replication_policy", + "azurerm_site_recovery_replication_recovery_plan", + "azurerm_snapshot", + "azurerm_source_control_token", + "azurerm_spring_cloud_app", + "azurerm_spring_cloud_service", + "azurerm_ssh_public_key", + "azurerm_stack_hci_cluster", + "azurerm_stack_hci_storage_path", + "azurerm_static_web_app", + "azurerm_storage_account", + "azurerm_storage_account_blob_container_sas", + "azurerm_storage_account_sas", + "azurerm_storage_blob", + "azurerm_storage_container", + "azurerm_storage_containers", + "azurerm_storage_encryption_scope", + "azurerm_storage_management_policy", + "azurerm_storage_queue", + "azurerm_storage_share", + "azurerm_storage_sync", + "azurerm_storage_sync_group", + "azurerm_storage_table", + "azurerm_storage_table_entities", + "azurerm_storage_table_entity", + "azurerm_stream_analytics_job", + "azurerm_subnet", + "azurerm_subscription", + "azurerm_subscription_template_deployment", + "azurerm_subscriptions", + "azurerm_synapse_workspace", + "azurerm_system_center_virtual_machine_manager_inventory_items", + "azurerm_template_spec_version", + "azurerm_tenant_template_deployment", + "azurerm_traffic_manager_geographical_location", + "azurerm_traffic_manager_profile", + "azurerm_trusted_signing_account", + "azurerm_user_assigned_identity", + "azurerm_virtual_desktop_application_group", + "azurerm_virtual_desktop_host_pool", + "azurerm_virtual_desktop_workspace", + "azurerm_virtual_hub", + "azurerm_virtual_hub_connection", + "azurerm_virtual_hub_route_table", + "azurerm_virtual_machine", + "azurerm_virtual_machine_scale_set", + "azurerm_virtual_network", + "azurerm_virtual_network_gateway", + "azurerm_virtual_network_gateway_connection", + "azurerm_virtual_network_peering", + "azurerm_virtual_wan", + "azurerm_vmware_private_cloud", + "azurerm_vpn_gateway", + "azurerm_vpn_server_configuration", + "azurerm_web_application_firewall_policy", + "azurerm_web_pubsub", + "azurerm_web_pubsub_private_link_resource", + "azurerm_windows_function_app", + "azurerm_windows_web_app" + ] +} \ No newline at end of file diff --git a/src/parse/google-members.json b/src/parse/google-members.json index 562f6f9c..ec006955 100755 --- a/src/parse/google-members.json +++ b/src/parse/google-members.json @@ -1,1556 +1,1664 @@ -{ - "dataSources": [ - "google_access_approval_folder_service_account", - "google_access_approval_organization_service_account", - "google_access_approval_project_service_account", - "google_access_context_manager_access_policy", - "google_access_context_manager_access_policy_iam_policy", - "google_active_folder", - "google_alloydb_cluster", - "google_alloydb_instance", - "google_alloydb_locations", - "google_alloydb_supported_database_flags", - "google_api_gateway_api_config_iam_policy", - "google_api_gateway_api_iam_policy", - "google_api_gateway_gateway_iam_policy", - "google_apigee_environment_iam_policy", - "google_app_engine_default_service_account", - "google_apphub_application", - "google_apphub_discovered_service", - "google_apphub_discovered_workload", - "google_artifact_registry_docker_image", - "google_artifact_registry_locations", - "google_artifact_registry_repository", - "google_artifact_registry_repository_iam_policy", - "google_backup_dr_backup", - "google_backup_dr_backup_plan_association", - "google_backup_dr_backup_vault", - "google_backup_dr_data_source", - "google_beyondcorp_app_connection", - "google_beyondcorp_app_connector", - "google_beyondcorp_app_gateway", - "google_beyondcorp_application_iam_policy", - "google_beyondcorp_security_gateway", - "google_beyondcorp_security_gateway_application_iam_policy", - "google_beyondcorp_security_gateway_iam_policy", - "google_bigquery_analytics_hub_data_exchange_iam_policy", - "google_bigquery_analytics_hub_listing_iam_policy", - "google_bigquery_connection_iam_policy", - "google_bigquery_datapolicy_data_policy_iam_policy", - "google_bigquery_dataset", - "google_bigquery_dataset_iam_policy", - "google_bigquery_datasets", - "google_bigquery_default_service_account", - "google_bigquery_table", - "google_bigquery_table_iam_policy", - "google_bigquery_tables", - "google_bigtable_instance_iam_policy", - "google_bigtable_table_iam_policy", - "google_billing_account", - "google_billing_account_iam_policy", - "google_binary_authorization_attestor_iam_policy", - "google_certificate_manager_certificate_map", - "google_certificate_manager_certificates", - "google_client_config", - "google_client_openid_userinfo", - "google_cloud_identity_group_lookup", - "google_cloud_identity_group_memberships", - "google_cloud_identity_group_transitive_memberships", - "google_cloud_identity_groups", - "google_cloud_quotas_quota_info", - "google_cloud_quotas_quota_infos", - "google_cloud_run_locations", - "google_cloud_run_service", - "google_cloud_run_service_iam_policy", - "google_cloud_run_v2_job", - "google_cloud_run_v2_job_iam_policy", - "google_cloud_run_v2_service", - "google_cloud_run_v2_service_iam_policy", - "google_cloud_run_v2_worker_pool", - "google_cloud_run_v2_worker_pool_iam_policy", - "google_cloud_tasks_queue_iam_policy", - "google_cloudbuild_trigger", - "google_cloudbuildv2_connection_iam_policy", - "google_clouddeploy_custom_target_type_iam_policy", - "google_clouddeploy_delivery_pipeline_iam_policy", - "google_clouddeploy_target_iam_policy", - "google_cloudfunctions2_function", - "google_cloudfunctions2_function_iam_policy", - "google_cloudfunctions_function", - "google_cloudfunctions_function_iam_policy", - "google_colab_runtime_template_iam_policy", - "google_composer_environment", - "google_composer_image_versions", - "google_composer_user_workloads_config_map", - "google_composer_user_workloads_secret", - "google_compute_address", - "google_compute_addresses", - "google_compute_backend_bucket", - "google_compute_backend_bucket_iam_policy", - "google_compute_backend_service", - "google_compute_backend_service_iam_policy", - "google_compute_default_service_account", - "google_compute_disk", - "google_compute_disk_iam_policy", - "google_compute_forwarding_rule", - "google_compute_forwarding_rules", - "google_compute_global_address", - "google_compute_global_forwarding_rule", - "google_compute_ha_vpn_gateway", - "google_compute_health_check", - "google_compute_image", - "google_compute_image_iam_policy", - "google_compute_images", - "google_compute_instance", - "google_compute_instance_group", - "google_compute_instance_group_manager", - "google_compute_instance_guest_attributes", - "google_compute_instance_iam_policy", - "google_compute_instance_serial_port", - "google_compute_instance_template", - "google_compute_instance_template_iam_policy", - "google_compute_instant_snapshot_iam_policy", - "google_compute_lb_ip_ranges", - "google_compute_machine_image_iam_policy", - "google_compute_machine_types", - "google_compute_network", - "google_compute_network_endpoint_group", - "google_compute_network_peering", - "google_compute_networks", - "google_compute_node_types", - "google_compute_region_backend_service", - "google_compute_region_backend_service_iam_policy", - "google_compute_region_disk", - "google_compute_region_disk_iam_policy", - "google_compute_region_instance_group", - "google_compute_region_instance_group_manager", - "google_compute_region_instance_template", - "google_compute_region_network_endpoint_group", - "google_compute_region_ssl_certificate", - "google_compute_regions", - "google_compute_reservation", - "google_compute_resource_policy", - "google_compute_router", - "google_compute_router_nat", - "google_compute_router_status", - "google_compute_security_policy", - "google_compute_snapshot", - "google_compute_snapshot_iam_policy", - "google_compute_ssl_certificate", - "google_compute_ssl_policy", - "google_compute_storage_pool_iam_policy", - "google_compute_storage_pool_types", - "google_compute_subnetwork", - "google_compute_subnetwork_iam_policy", - "google_compute_subnetworks", - "google_compute_vpn_gateway", - "google_compute_zones", - "google_container_analysis_note_iam_policy", - "google_container_attached_install_manifest", - "google_container_attached_versions", - "google_container_aws_versions", - "google_container_azure_versions", - "google_container_cluster", - "google_container_engine_versions", - "google_container_registry_image", - "google_container_registry_repository", - "google_data_catalog_entry_group_iam_policy", - "google_data_catalog_policy_tag_iam_policy", - "google_data_catalog_tag_template_iam_policy", - "google_data_catalog_taxonomy_iam_policy", - "google_data_fusion_instance_iam_policy", - "google_dataform_repository_iam_policy", - "google_dataplex_aspect_type_iam_policy", - "google_dataplex_asset_iam_policy", - "google_dataplex_datascan_iam_policy", - "google_dataplex_entry_group_iam_policy", - "google_dataplex_entry_type_iam_policy", - "google_dataplex_glossary_iam_policy", - "google_dataplex_lake_iam_policy", - "google_dataplex_task_iam_policy", - "google_dataplex_zone_iam_policy", - "google_dataproc_autoscaling_policy_iam_policy", - "google_dataproc_cluster_iam_policy", - "google_dataproc_job_iam_policy", - "google_dataproc_metastore_database_iam_policy", - "google_dataproc_metastore_federation_iam_policy", - "google_dataproc_metastore_service", - "google_dataproc_metastore_service_iam_policy", - "google_dataproc_metastore_table_iam_policy", - "google_datastream_static_ips", - "google_dns_keys", - "google_dns_managed_zone", - "google_dns_managed_zone_iam_policy", - "google_dns_managed_zones", - "google_dns_record_set", - "google_endpoints_service_consumers_iam_policy", - "google_endpoints_service_iam_policy", - "google_filestore_instance", - "google_firebase_web_app_config", - "google_folder", - "google_folder_iam_policy", - "google_folder_organization_policy", - "google_folders", - "google_gemini_repository_group_iam_policy", - "google_gke_backup_backup_plan_iam_policy", - "google_gke_backup_restore_plan_iam_policy", - "google_gke_hub_feature", - "google_gke_hub_feature_iam_policy", - "google_gke_hub_membership", - "google_gke_hub_membership_iam_policy", - "google_gke_hub_scope_iam_policy", - "google_healthcare_consent_store_iam_policy", - "google_healthcare_dataset_iam_policy", - "google_healthcare_dicom_store_iam_policy", - "google_healthcare_fhir_store_iam_policy", - "google_healthcare_hl7_v2_store_iam_policy", - "google_iam_policy", - "google_iam_role", - "google_iam_workload_identity_pool", - "google_iam_workload_identity_pool_iam_policy", - "google_iam_workload_identity_pool_provider", - "google_iap_app_engine_service_iam_policy", - "google_iap_app_engine_version_iam_policy", - "google_iap_client", - "google_iap_tunnel_dest_group_iam_policy", - "google_iap_tunnel_iam_policy", - "google_iap_tunnel_instance_iam_policy", - "google_iap_web_backend_service_iam_policy", - "google_iap_web_cloud_run_service_iam_policy", - "google_iap_web_iam_policy", - "google_iap_web_region_backend_service_iam_policy", - "google_iap_web_type_app_engine_iam_policy", - "google_iap_web_type_compute_iam_policy", - "google_kms_autokey_config", - "google_kms_crypto_key", - "google_kms_crypto_key_iam_policy", - "google_kms_crypto_key_latest_version", - "google_kms_crypto_key_version", - "google_kms_crypto_key_versions", - "google_kms_crypto_keys", - "google_kms_ekm_connection_iam_policy", - "google_kms_key_handle", - "google_kms_key_handles", - "google_kms_key_ring", - "google_kms_key_ring_iam_policy", - "google_kms_key_rings", - "google_kms_secret", - "google_kms_secret_asymmetric", - "google_kms_secret_ciphertext", - "google_logging_folder_settings", - "google_logging_log_view_iam_policy", - "google_logging_organization_settings", - "google_logging_project_cmek_settings", - "google_logging_project_settings", - "google_lustre_instance", - "google_memcache_instance", - "google_memorystore_instance", - "google_monitoring_app_engine_service", - "google_monitoring_cluster_istio_service", - "google_monitoring_istio_canonical_service", - "google_monitoring_mesh_istio_service", - "google_monitoring_notification_channel", - "google_monitoring_uptime_check_ips", - "google_netblock_ip_ranges", - "google_network_security_address_group_iam_policy", - "google_notebooks_instance_iam_policy", - "google_notebooks_runtime_iam_policy", - "google_oracle_database_autonomous_database", - "google_oracle_database_autonomous_databases", - "google_oracle_database_cloud_exadata_infrastructure", - "google_oracle_database_cloud_exadata_infrastructures", - "google_oracle_database_cloud_vm_cluster", - "google_oracle_database_cloud_vm_clusters", - "google_oracle_database_db_nodes", - "google_oracle_database_db_servers", - "google_organization", - "google_organization_iam_custom_role", - "google_organization_iam_custom_roles", - "google_organization_iam_policy", - "google_organizations", - "google_parameter_manager_parameter", - "google_parameter_manager_parameter_version", - "google_parameter_manager_parameter_version_render", - "google_parameter_manager_parameters", - "google_parameter_manager_regional_parameter", - "google_parameter_manager_regional_parameter_version", - "google_parameter_manager_regional_parameter_version_render", - "google_parameter_manager_regional_parameters", - "google_privateca_ca_pool_iam_policy", - "google_privateca_certificate_authority", - "google_privateca_certificate_template_iam_policy", - "google_privileged_access_manager_entitlement", - "google_project", - "google_project_ancestry", - "google_project_iam_custom_role", - "google_project_iam_custom_roles", - "google_project_iam_policy", - "google_project_organization_policy", - "google_project_service", - "google_projects", - "google_pubsub_schema_iam_policy", - "google_pubsub_subscription", - "google_pubsub_subscription_iam_policy", - "google_pubsub_topic", - "google_pubsub_topic_iam_policy", - "google_redis_instance", - "google_runtimeconfig_config", - "google_runtimeconfig_config_iam_policy", - "google_runtimeconfig_variable", - "google_scc_source_iam_policy", - "google_scc_v2_organization_source_iam_policy", - "google_secret_manager_regional_secret", - "google_secret_manager_regional_secret_iam_policy", - "google_secret_manager_regional_secret_version", - "google_secret_manager_regional_secret_version_access", - "google_secret_manager_regional_secrets", - "google_secret_manager_secret", - "google_secret_manager_secret_iam_policy", - "google_secret_manager_secret_version", - "google_secret_manager_secret_version_access", - "google_secret_manager_secrets", - "google_secure_source_manager_instance_iam_policy", - "google_secure_source_manager_repository_iam_policy", - "google_service_account", - "google_service_account_access_token", - "google_service_account_iam_policy", - "google_service_account_id_token", - "google_service_account_jwt", - "google_service_account_key", - "google_service_accounts", - "google_service_directory_namespace_iam_policy", - "google_service_directory_service_iam_policy", - "google_site_verification_token", - "google_sourcerepo_repository", - "google_sourcerepo_repository_iam_policy", - "google_spanner_database", - "google_spanner_database_iam_policy", - "google_spanner_instance", - "google_spanner_instance_iam_policy", - "google_sql_backup_run", - "google_sql_ca_certs", - "google_sql_database", - "google_sql_database_instance", - "google_sql_database_instance_latest_recovery_time", - "google_sql_database_instances", - "google_sql_databases", - "google_sql_tiers", - "google_storage_bucket", - "google_storage_bucket_iam_policy", - "google_storage_bucket_object", - "google_storage_bucket_object_content", - "google_storage_bucket_objects", - "google_storage_buckets", - "google_storage_control_folder_intelligence_config", - "google_storage_control_organization_intelligence_config", - "google_storage_control_project_intelligence_config", - "google_storage_object_signed_url", - "google_storage_project_service_account", - "google_storage_transfer_project_service_account", - "google_tags_tag_key", - "google_tags_tag_key_iam_policy", - "google_tags_tag_keys", - "google_tags_tag_value", - "google_tags_tag_value_iam_policy", - "google_tags_tag_values", - "google_tpu_tensorflow_versions", - "google_tpu_v2_accelerator_types", - "google_tpu_v2_runtime_versions", - "google_vertex_ai_endpoint_iam_policy", - "google_vertex_ai_feature_group_iam_policy", - "google_vertex_ai_feature_online_store_featureview_iam_policy", - "google_vertex_ai_feature_online_store_iam_policy", - "google_vertex_ai_featurestore_entitytype_iam_policy", - "google_vertex_ai_featurestore_iam_policy", - "google_vmwareengine_cluster", - "google_vmwareengine_external_access_rule", - "google_vmwareengine_external_address", - "google_vmwareengine_network", - "google_vmwareengine_network_peering", - "google_vmwareengine_network_policy", - "google_vmwareengine_nsx_credentials", - "google_vmwareengine_private_cloud", - "google_vmwareengine_subnet", - "google_vmwareengine_vcenter_credentials", - "google_vpc_access_connector", - "google_workbench_instance_iam_policy", - "google_workstations_workstation_config_iam_policy", - "google_workstations_workstation_iam_policy" - ], - "resources": [ - "google_access_context_manager_access_level", - "google_access_context_manager_access_level_condition", - "google_access_context_manager_access_levels", - "google_access_context_manager_access_policy", - "google_access_context_manager_access_policy_iam_binding", - "google_access_context_manager_access_policy_iam_member", - "google_access_context_manager_access_policy_iam_policy", - "google_access_context_manager_authorized_orgs_desc", - "google_access_context_manager_gcp_user_access_binding", - "google_access_context_manager_service_perimeter", - "google_access_context_manager_service_perimeter_dry_run_egress_policy", - "google_access_context_manager_service_perimeter_dry_run_ingress_policy", - "google_access_context_manager_service_perimeter_dry_run_resource", - "google_access_context_manager_service_perimeter_egress_policy", - "google_access_context_manager_service_perimeter_ingress_policy", - "google_access_context_manager_service_perimeter_resource", - "google_access_context_manager_service_perimeters", - "google_active_directory_domain", - "google_active_directory_domain_trust", - "google_active_directory_peering", - "google_alloydb_backup", - "google_alloydb_cluster", - "google_alloydb_instance", - "google_alloydb_user", - "google_api_gateway_api", - "google_api_gateway_api_config", - "google_api_gateway_api_config_iam_binding", - "google_api_gateway_api_config_iam_member", - "google_api_gateway_api_config_iam_policy", - "google_api_gateway_api_iam_binding", - "google_api_gateway_api_iam_member", - "google_api_gateway_api_iam_policy", - "google_api_gateway_gateway", - "google_api_gateway_gateway_iam_binding", - "google_api_gateway_gateway_iam_member", - "google_api_gateway_gateway_iam_policy", - "google_apigee_addons_config", - "google_apigee_api", - "google_apigee_app_group", - "google_apigee_control_plane_access", - "google_apigee_developer", - "google_apigee_dns_zone", - "google_apigee_env_keystore", - "google_apigee_envgroup", - "google_apigee_envgroup_attachment", - "google_apigee_environment", - "google_apigee_environment_addons_config", - "google_apigee_environment_iam_binding", - "google_apigee_environment_iam_member", - "google_apigee_environment_iam_policy", - "google_apigee_environment_keyvaluemaps", - "google_apigee_environment_keyvaluemaps_entries", - "google_apigee_instance", - "google_apigee_instance_attachment", - "google_apigee_keystores_aliases_self_signed_cert", - "google_apigee_nat_address", - "google_apigee_organization", - "google_apigee_security_monitoring_condition", - "google_apigee_security_profile_v2", - "google_apigee_sync_authorization", - "google_apigee_target_server", - "google_apihub_api_hub_instance", - "google_apihub_curation", - "google_apihub_host_project_registration", - "google_apikeys_key", - "google_app_engine_application", - "google_app_engine_application_url_dispatch_rules", - "google_app_engine_domain_mapping", - "google_app_engine_firewall_rule", - "google_app_engine_flexible_app_version", - "google_app_engine_service_network_settings", - "google_app_engine_service_split_traffic", - "google_app_engine_standard_app_version", - "google_apphub_application", - "google_apphub_service", - "google_apphub_service_project_attachment", - "google_apphub_workload", - "google_artifact_registry_repository", - "google_artifact_registry_repository_iam_binding", - "google_artifact_registry_repository_iam_member", - "google_artifact_registry_repository_iam_policy", - "google_artifact_registry_vpcsc_config", - "google_assured_workloads_workload", - "google_backup_dr_backup_plan", - "google_backup_dr_backup_plan_association", - "google_backup_dr_backup_vault", - "google_backup_dr_management_server", - "google_beyondcorp_app_connection", - "google_beyondcorp_app_connector", - "google_beyondcorp_app_gateway", - "google_beyondcorp_application", - "google_beyondcorp_application_iam_binding", - "google_beyondcorp_application_iam_member", - "google_beyondcorp_application_iam_policy", - "google_beyondcorp_security_gateway", - "google_beyondcorp_security_gateway_application", - "google_beyondcorp_security_gateway_application_iam_binding", - "google_beyondcorp_security_gateway_application_iam_member", - "google_beyondcorp_security_gateway_application_iam_policy", - "google_beyondcorp_security_gateway_iam_binding", - "google_beyondcorp_security_gateway_iam_member", - "google_beyondcorp_security_gateway_iam_policy", - "google_biglake_catalog", - "google_biglake_database", - "google_biglake_table", - "google_bigquery_analytics_hub_data_exchange", - "google_bigquery_analytics_hub_data_exchange_iam_binding", - "google_bigquery_analytics_hub_data_exchange_iam_member", - "google_bigquery_analytics_hub_data_exchange_iam_policy", - "google_bigquery_analytics_hub_listing", - "google_bigquery_analytics_hub_listing_iam_binding", - "google_bigquery_analytics_hub_listing_iam_member", - "google_bigquery_analytics_hub_listing_iam_policy", - "google_bigquery_analytics_hub_listing_subscription", - "google_bigquery_bi_reservation", - "google_bigquery_capacity_commitment", - "google_bigquery_connection", - "google_bigquery_connection_iam_binding", - "google_bigquery_connection_iam_member", - "google_bigquery_connection_iam_policy", - "google_bigquery_data_transfer_config", - "google_bigquery_datapolicy_data_policy", - "google_bigquery_datapolicy_data_policy_iam_binding", - "google_bigquery_datapolicy_data_policy_iam_member", - "google_bigquery_datapolicy_data_policy_iam_policy", - "google_bigquery_dataset", - "google_bigquery_dataset_access", - "google_bigquery_dataset_iam_binding", - "google_bigquery_dataset_iam_member", - "google_bigquery_dataset_iam_policy", - "google_bigquery_job", - "google_bigquery_reservation", - "google_bigquery_reservation_assignment", - "google_bigquery_routine", - "google_bigquery_row_access_policy", - "google_bigquery_table", - "google_bigquery_table_iam_binding", - "google_bigquery_table_iam_member", - "google_bigquery_table_iam_policy", - "google_bigtable_app_profile", - "google_bigtable_authorized_view", - "google_bigtable_gc_policy", - "google_bigtable_instance", - "google_bigtable_instance_iam_binding", - "google_bigtable_instance_iam_member", - "google_bigtable_instance_iam_policy", - "google_bigtable_logical_view", - "google_bigtable_materialized_view", - "google_bigtable_table", - "google_bigtable_table_iam_binding", - "google_bigtable_table_iam_member", - "google_bigtable_table_iam_policy", - "google_billing_account_iam_binding", - "google_billing_account_iam_member", - "google_billing_account_iam_policy", - "google_billing_budget", - "google_billing_project_info", - "google_billing_subaccount", - "google_binary_authorization_attestor", - "google_binary_authorization_attestor_iam_binding", - "google_binary_authorization_attestor_iam_member", - "google_binary_authorization_attestor_iam_policy", - "google_binary_authorization_policy", - "google_blockchain_node_engine_blockchain_nodes", - "google_certificate_manager_certificate", - "google_certificate_manager_certificate_issuance_config", - "google_certificate_manager_certificate_map", - "google_certificate_manager_certificate_map_entry", - "google_certificate_manager_dns_authorization", - "google_certificate_manager_trust_config", - "google_chronicle_data_access_label", - "google_chronicle_data_access_scope", - "google_chronicle_reference_list", - "google_chronicle_retrohunt", - "google_chronicle_rule", - "google_chronicle_rule_deployment", - "google_chronicle_watchlist", - "google_cloud_asset_folder_feed", - "google_cloud_asset_organization_feed", - "google_cloud_asset_project_feed", - "google_cloud_identity_group", - "google_cloud_identity_group_membership", - "google_cloud_ids_endpoint", - "google_cloud_quotas_quota_adjuster_settings", - "google_cloud_quotas_quota_preference", - "google_cloud_run_domain_mapping", - "google_cloud_run_service", - "google_cloud_run_service_iam_binding", - "google_cloud_run_service_iam_member", - "google_cloud_run_service_iam_policy", - "google_cloud_run_v2_job", - "google_cloud_run_v2_job_iam_binding", - "google_cloud_run_v2_job_iam_member", - "google_cloud_run_v2_job_iam_policy", - "google_cloud_run_v2_service", - "google_cloud_run_v2_service_iam_binding", - "google_cloud_run_v2_service_iam_member", - "google_cloud_run_v2_service_iam_policy", - "google_cloud_run_v2_worker_pool", - "google_cloud_run_v2_worker_pool_iam_binding", - "google_cloud_run_v2_worker_pool_iam_member", - "google_cloud_run_v2_worker_pool_iam_policy", - "google_cloud_scheduler_job", - "google_cloud_tasks_queue", - "google_cloud_tasks_queue_iam_binding", - "google_cloud_tasks_queue_iam_member", - "google_cloud_tasks_queue_iam_policy", - "google_cloudbuild_bitbucket_server_config", - "google_cloudbuild_trigger", - "google_cloudbuild_worker_pool", - "google_cloudbuildv2_connection", - "google_cloudbuildv2_connection_iam_binding", - "google_cloudbuildv2_connection_iam_member", - "google_cloudbuildv2_connection_iam_policy", - "google_cloudbuildv2_repository", - "google_clouddeploy_automation", - "google_clouddeploy_custom_target_type", - "google_clouddeploy_custom_target_type_iam_binding", - "google_clouddeploy_custom_target_type_iam_member", - "google_clouddeploy_custom_target_type_iam_policy", - "google_clouddeploy_delivery_pipeline", - "google_clouddeploy_delivery_pipeline_iam_binding", - "google_clouddeploy_delivery_pipeline_iam_member", - "google_clouddeploy_delivery_pipeline_iam_policy", - "google_clouddeploy_deploy_policy", - "google_clouddeploy_target", - "google_clouddeploy_target_iam_binding", - "google_clouddeploy_target_iam_member", - "google_clouddeploy_target_iam_policy", - "google_clouddomains_registration", - "google_cloudfunctions2_function", - "google_cloudfunctions2_function_iam_binding", - "google_cloudfunctions2_function_iam_member", - "google_cloudfunctions2_function_iam_policy", - "google_cloudfunctions_function", - "google_cloudfunctions_function_iam_binding", - "google_cloudfunctions_function_iam_member", - "google_cloudfunctions_function_iam_policy", - "google_cloudiot_registry", - "google_colab_notebook_execution", - "google_colab_runtime", - "google_colab_runtime_template", - "google_colab_runtime_template_iam_binding", - "google_colab_runtime_template_iam_member", - "google_colab_runtime_template_iam_policy", - "google_colab_schedule", - "google_composer_environment", - "google_composer_user_workloads_config_map", - "google_composer_user_workloads_secret", - "google_compute_address", - "google_compute_attached_disk", - "google_compute_autoscaler", - "google_compute_backend_bucket", - "google_compute_backend_bucket_iam_binding", - "google_compute_backend_bucket_iam_member", - "google_compute_backend_bucket_iam_policy", - "google_compute_backend_bucket_signed_url_key", - "google_compute_backend_service", - "google_compute_backend_service_iam_binding", - "google_compute_backend_service_iam_member", - "google_compute_backend_service_iam_policy", - "google_compute_backend_service_signed_url_key", - "google_compute_cross_site_network", - "google_compute_disk", - "google_compute_disk_async_replication", - "google_compute_disk_iam_binding", - "google_compute_disk_iam_member", - "google_compute_disk_iam_policy", - "google_compute_disk_resource_policy_attachment", - "google_compute_external_vpn_gateway", - "google_compute_firewall", - "google_compute_firewall_policy", - "google_compute_firewall_policy_association", - "google_compute_firewall_policy_rule", - "google_compute_firewall_policy_with_rules", - "google_compute_forwarding_rule", - "google_compute_future_reservation", - "google_compute_global_address", - "google_compute_global_forwarding_rule", - "google_compute_global_network_endpoint", - "google_compute_global_network_endpoint_group", - "google_compute_ha_vpn_gateway", - "google_compute_health_check", - "google_compute_http_health_check", - "google_compute_https_health_check", - "google_compute_image", - "google_compute_image_iam_binding", - "google_compute_image_iam_member", - "google_compute_image_iam_policy", - "google_compute_instance", - "google_compute_instance_from_machine_image", - "google_compute_instance_from_template", - "google_compute_instance_group", - "google_compute_instance_group_manager", - "google_compute_instance_group_membership", - "google_compute_instance_group_named_port", - "google_compute_instance_iam_binding", - "google_compute_instance_iam_member", - "google_compute_instance_iam_policy", - "google_compute_instance_settings", - "google_compute_instance_template", - "google_compute_instance_template_iam_binding", - "google_compute_instance_template_iam_member", - "google_compute_instance_template_iam_policy", - "google_compute_instant_snapshot", - "google_compute_instant_snapshot_iam_binding", - "google_compute_instant_snapshot_iam_member", - "google_compute_instant_snapshot_iam_policy", - "google_compute_interconnect", - "google_compute_interconnect_attachment", - "google_compute_interconnect_attachment_group", - "google_compute_interconnect_group", - "google_compute_machine_image", - "google_compute_machine_image_iam_binding", - "google_compute_machine_image_iam_member", - "google_compute_machine_image_iam_policy", - "google_compute_managed_ssl_certificate", - "google_compute_network", - "google_compute_network_attachment", - "google_compute_network_edge_security_service", - "google_compute_network_endpoint", - "google_compute_network_endpoint_group", - "google_compute_network_endpoints", - "google_compute_network_firewall_policy", - "google_compute_network_firewall_policy_association", - "google_compute_network_firewall_policy_packet_mirroring_rule", - "google_compute_network_firewall_policy_rule", - "google_compute_network_firewall_policy_with_rules", - "google_compute_network_peering", - "google_compute_network_peering_routes_config", - "google_compute_node_group", - "google_compute_node_template", - "google_compute_organization_security_policy", - "google_compute_organization_security_policy_association", - "google_compute_organization_security_policy_rule", - "google_compute_packet_mirroring", - "google_compute_per_instance_config", - "google_compute_project_cloud_armor_tier", - "google_compute_project_default_network_tier", - "google_compute_project_metadata", - "google_compute_project_metadata_item", - "google_compute_public_advertised_prefix", - "google_compute_public_delegated_prefix", - "google_compute_region_autoscaler", - "google_compute_region_backend_service", - "google_compute_region_backend_service_iam_binding", - "google_compute_region_backend_service_iam_member", - "google_compute_region_backend_service_iam_policy", - "google_compute_region_commitment", - "google_compute_region_disk", - "google_compute_region_disk_iam_binding", - "google_compute_region_disk_iam_member", - "google_compute_region_disk_iam_policy", - "google_compute_region_disk_resource_policy_attachment", - "google_compute_region_health_check", - "google_compute_region_instance_group_manager", - "google_compute_region_instance_template", - "google_compute_region_network_endpoint", - "google_compute_region_network_endpoint_group", - "google_compute_region_network_firewall_policy", - "google_compute_region_network_firewall_policy_association", - "google_compute_region_network_firewall_policy_rule", - "google_compute_region_network_firewall_policy_with_rules", - "google_compute_region_per_instance_config", - "google_compute_region_resize_request", - "google_compute_region_security_policy", - "google_compute_region_security_policy_rule", - "google_compute_region_ssl_certificate", - "google_compute_region_target_http_proxy", - "google_compute_region_target_https_proxy", - "google_compute_region_target_tcp_proxy", - "google_compute_region_url_map", - "google_compute_reservation", - "google_compute_resize_request", - "google_compute_resource_policy", - "google_compute_resource_policy_attachment", - "google_compute_route", - "google_compute_router", - "google_compute_router_interface", - "google_compute_router_nat", - "google_compute_router_nat_address", - "google_compute_router_peer", - "google_compute_router_route_policy", - "google_compute_security_policy", - "google_compute_security_policy_rule", - "google_compute_service_attachment", - "google_compute_shared_vpc_host_project", - "google_compute_shared_vpc_service_project", - "google_compute_snapshot", - "google_compute_snapshot_iam_binding", - "google_compute_snapshot_iam_member", - "google_compute_snapshot_iam_policy", - "google_compute_snapshot_settings", - "google_compute_ssl_certificate", - "google_compute_ssl_policy", - "google_compute_storage_pool", - "google_compute_storage_pool_iam_binding", - "google_compute_storage_pool_iam_member", - "google_compute_storage_pool_iam_policy", - "google_compute_subnetwork", - "google_compute_subnetwork_iam_binding", - "google_compute_subnetwork_iam_member", - "google_compute_subnetwork_iam_policy", - "google_compute_target_grpc_proxy", - "google_compute_target_http_proxy", - "google_compute_target_https_proxy", - "google_compute_target_instance", - "google_compute_target_pool", - "google_compute_target_ssl_proxy", - "google_compute_target_tcp_proxy", - "google_compute_url_map", - "google_compute_vpn_gateway", - "google_compute_vpn_tunnel", - "google_compute_wire_group", - "google_container_analysis_note", - "google_container_analysis_note_iam_binding", - "google_container_analysis_note_iam_member", - "google_container_analysis_note_iam_policy", - "google_container_analysis_occurrence", - "google_container_attached_cluster", - "google_container_aws_cluster", - "google_container_aws_node_pool", - "google_container_azure_client", - "google_container_azure_cluster", - "google_container_azure_node_pool", - "google_container_cluster", - "google_container_node_pool", - "google_container_registry", - "google_data_catalog_entry", - "google_data_catalog_entry_group", - "google_data_catalog_entry_group_iam_binding", - "google_data_catalog_entry_group_iam_member", - "google_data_catalog_entry_group_iam_policy", - "google_data_catalog_policy_tag", - "google_data_catalog_policy_tag_iam_binding", - "google_data_catalog_policy_tag_iam_member", - "google_data_catalog_policy_tag_iam_policy", - "google_data_catalog_tag", - "google_data_catalog_tag_template", - "google_data_catalog_tag_template_iam_binding", - "google_data_catalog_tag_template_iam_member", - "google_data_catalog_tag_template_iam_policy", - "google_data_catalog_taxonomy", - "google_data_catalog_taxonomy_iam_binding", - "google_data_catalog_taxonomy_iam_member", - "google_data_catalog_taxonomy_iam_policy", - "google_data_fusion_instance", - "google_data_fusion_instance_iam_binding", - "google_data_fusion_instance_iam_member", - "google_data_fusion_instance_iam_policy", - "google_data_loss_prevention_deidentify_template", - "google_data_loss_prevention_discovery_config", - "google_data_loss_prevention_inspect_template", - "google_data_loss_prevention_job_trigger", - "google_data_loss_prevention_stored_info_type", - "google_data_pipeline_pipeline", - "google_database_migration_service_connection_profile", - "google_database_migration_service_migration_job", - "google_database_migration_service_private_connection", - "google_dataflow_flex_template_job", - "google_dataflow_job", - "google_dataform_repository", - "google_dataform_repository_iam_binding", - "google_dataform_repository_iam_member", - "google_dataform_repository_iam_policy", - "google_dataform_repository_release_config", - "google_dataform_repository_workflow_config", - "google_dataplex_aspect_type", - "google_dataplex_aspect_type_iam_binding", - "google_dataplex_aspect_type_iam_member", - "google_dataplex_aspect_type_iam_policy", - "google_dataplex_asset", - "google_dataplex_asset_iam_binding", - "google_dataplex_asset_iam_member", - "google_dataplex_asset_iam_policy", - "google_dataplex_datascan", - "google_dataplex_datascan_iam_binding", - "google_dataplex_datascan_iam_member", - "google_dataplex_datascan_iam_policy", - "google_dataplex_entry", - "google_dataplex_entry_group", - "google_dataplex_entry_group_iam_binding", - "google_dataplex_entry_group_iam_member", - "google_dataplex_entry_group_iam_policy", - "google_dataplex_entry_type", - "google_dataplex_entry_type_iam_binding", - "google_dataplex_entry_type_iam_member", - "google_dataplex_entry_type_iam_policy", - "google_dataplex_glossary", - "google_dataplex_glossary_category", - "google_dataplex_glossary_iam_binding", - "google_dataplex_glossary_iam_member", - "google_dataplex_glossary_iam_policy", - "google_dataplex_glossary_term", - "google_dataplex_lake", - "google_dataplex_lake_iam_binding", - "google_dataplex_lake_iam_member", - "google_dataplex_lake_iam_policy", - "google_dataplex_task", - "google_dataplex_task_iam_binding", - "google_dataplex_task_iam_member", - "google_dataplex_task_iam_policy", - "google_dataplex_zone", - "google_dataplex_zone_iam_binding", - "google_dataplex_zone_iam_member", - "google_dataplex_zone_iam_policy", - "google_dataproc_autoscaling_policy", - "google_dataproc_autoscaling_policy_iam_binding", - "google_dataproc_autoscaling_policy_iam_member", - "google_dataproc_autoscaling_policy_iam_policy", - "google_dataproc_batch", - "google_dataproc_cluster", - "google_dataproc_cluster_iam_binding", - "google_dataproc_cluster_iam_member", - "google_dataproc_cluster_iam_policy", - "google_dataproc_gdc_application_environment", - "google_dataproc_gdc_service_instance", - "google_dataproc_gdc_spark_application", - "google_dataproc_job", - "google_dataproc_job_iam_binding", - "google_dataproc_job_iam_member", - "google_dataproc_job_iam_policy", - "google_dataproc_metastore_database_iam_binding", - "google_dataproc_metastore_database_iam_member", - "google_dataproc_metastore_database_iam_policy", - "google_dataproc_metastore_federation", - "google_dataproc_metastore_federation_iam_binding", - "google_dataproc_metastore_federation_iam_member", - "google_dataproc_metastore_federation_iam_policy", - "google_dataproc_metastore_service", - "google_dataproc_metastore_service_iam_binding", - "google_dataproc_metastore_service_iam_member", - "google_dataproc_metastore_service_iam_policy", - "google_dataproc_metastore_table_iam_binding", - "google_dataproc_metastore_table_iam_member", - "google_dataproc_metastore_table_iam_policy", - "google_dataproc_workflow_template", - "google_datastream_connection_profile", - "google_datastream_private_connection", - "google_datastream_stream", - "google_deployment_manager_deployment", - "google_developer_connect_account_connector", - "google_developer_connect_connection", - "google_developer_connect_git_repository_link", - "google_dialogflow_agent", - "google_dialogflow_cx_agent", - "google_dialogflow_cx_entity_type", - "google_dialogflow_cx_environment", - "google_dialogflow_cx_flow", - "google_dialogflow_cx_intent", - "google_dialogflow_cx_page", - "google_dialogflow_cx_security_settings", - "google_dialogflow_cx_tool", - "google_dialogflow_cx_version", - "google_dialogflow_cx_webhook", - "google_dialogflow_entity_type", - "google_dialogflow_fulfillment", - "google_dialogflow_intent", - "google_discovery_engine_chat_engine", - "google_discovery_engine_data_store", - "google_discovery_engine_schema", - "google_discovery_engine_search_engine", - "google_discovery_engine_sitemap", - "google_discovery_engine_target_site", - "google_dns_managed_zone", - "google_dns_managed_zone_iam_binding", - "google_dns_managed_zone_iam_member", - "google_dns_managed_zone_iam_policy", - "google_dns_policy", - "google_dns_record_set", - "google_dns_response_policy", - "google_dns_response_policy_rule", - "google_document_ai_processor", - "google_document_ai_processor_default_version", - "google_document_ai_warehouse_document_schema", - "google_document_ai_warehouse_location", - "google_edgecontainer_cluster", - "google_edgecontainer_node_pool", - "google_edgecontainer_vpn_connection", - "google_edgenetwork_interconnect_attachment", - "google_edgenetwork_network", - "google_edgenetwork_subnet", - "google_endpoints_service", - "google_endpoints_service_consumers_iam_binding", - "google_endpoints_service_consumers_iam_member", - "google_endpoints_service_consumers_iam_policy", - "google_endpoints_service_iam_binding", - "google_endpoints_service_iam_member", - "google_endpoints_service_iam_policy", - "google_essential_contacts_contact", - "google_eventarc_channel", - "google_eventarc_enrollment", - "google_eventarc_google_api_source", - "google_eventarc_google_channel_config", - "google_eventarc_message_bus", - "google_eventarc_pipeline", - "google_eventarc_trigger", - "google_filestore_backup", - "google_filestore_instance", - "google_filestore_snapshot", - "google_firebase_android_app", - "google_firebase_app_check_app_attest_config", - "google_firebase_app_check_debug_token", - "google_firebase_app_check_device_check_config", - "google_firebase_app_check_play_integrity_config", - "google_firebase_app_check_recaptcha_enterprise_config", - "google_firebase_app_check_recaptcha_v3_config", - "google_firebase_app_check_service_config", - "google_firebase_app_hosting_backend", - "google_firebase_app_hosting_build", - "google_firebase_app_hosting_default_domain", - "google_firebase_app_hosting_domain", - "google_firebase_app_hosting_traffic", - "google_firebase_apple_app", - "google_firebase_data_connect_service", - "google_firebase_database_instance", - "google_firebase_extensions_instance", - "google_firebase_hosting_channel", - "google_firebase_hosting_custom_domain", - "google_firebase_hosting_release", - "google_firebase_hosting_site", - "google_firebase_hosting_version", - "google_firebase_project", - "google_firebase_project_location", - "google_firebase_storage_bucket", - "google_firebase_web_app", - "google_firebaserules_release", - "google_firebaserules_ruleset", - "google_firestore_backup_schedule", - "google_firestore_database", - "google_firestore_document", - "google_firestore_field", - "google_firestore_index", - "google_folder", - "google_folder_access_approval_settings", - "google_folder_iam_audit_config", - "google_folder_iam_binding", - "google_folder_iam_member", - "google_folder_iam_policy", - "google_folder_organization_policy", - "google_folder_service_identity", - "google_gemini_code_repository_index", - "google_gemini_code_tools_setting", - "google_gemini_code_tools_setting_binding", - "google_gemini_data_sharing_with_google_setting", - "google_gemini_data_sharing_with_google_setting_binding", - "google_gemini_gemini_gcp_enablement_setting", - "google_gemini_gemini_gcp_enablement_setting_binding", - "google_gemini_logging_setting", - "google_gemini_logging_setting_binding", - "google_gemini_release_channel_setting", - "google_gemini_release_channel_setting_binding", - "google_gemini_repository_group", - "google_gemini_repository_group_iam_binding", - "google_gemini_repository_group_iam_member", - "google_gemini_repository_group_iam_policy", - "google_gke_backup_backup_channel", - "google_gke_backup_backup_plan", - "google_gke_backup_backup_plan_iam_binding", - "google_gke_backup_backup_plan_iam_member", - "google_gke_backup_backup_plan_iam_policy", - "google_gke_backup_restore_channel", - "google_gke_backup_restore_plan", - "google_gke_backup_restore_plan_iam_binding", - "google_gke_backup_restore_plan_iam_member", - "google_gke_backup_restore_plan_iam_policy", - "google_gke_hub_feature", - "google_gke_hub_feature_iam_binding", - "google_gke_hub_feature_iam_member", - "google_gke_hub_feature_iam_policy", - "google_gke_hub_feature_membership", - "google_gke_hub_fleet", - "google_gke_hub_membership", - "google_gke_hub_membership_binding", - "google_gke_hub_membership_iam_binding", - "google_gke_hub_membership_iam_member", - "google_gke_hub_membership_iam_policy", - "google_gke_hub_membership_rbac_role_binding", - "google_gke_hub_namespace", - "google_gke_hub_scope", - "google_gke_hub_scope_iam_binding", - "google_gke_hub_scope_iam_member", - "google_gke_hub_scope_iam_policy", - "google_gke_hub_scope_rbac_role_binding", - "google_gkeonprem_bare_metal_admin_cluster", - "google_gkeonprem_bare_metal_cluster", - "google_gkeonprem_bare_metal_node_pool", - "google_gkeonprem_vmware_admin_cluster", - "google_gkeonprem_vmware_cluster", - "google_gkeonprem_vmware_node_pool", - "google_healthcare_consent_store", - "google_healthcare_consent_store_iam_binding", - "google_healthcare_consent_store_iam_member", - "google_healthcare_consent_store_iam_policy", - "google_healthcare_dataset", - "google_healthcare_dataset_iam_binding", - "google_healthcare_dataset_iam_member", - "google_healthcare_dataset_iam_policy", - "google_healthcare_dicom_store", - "google_healthcare_dicom_store_iam_binding", - "google_healthcare_dicom_store_iam_member", - "google_healthcare_dicom_store_iam_policy", - "google_healthcare_fhir_store", - "google_healthcare_fhir_store_iam_binding", - "google_healthcare_fhir_store_iam_member", - "google_healthcare_fhir_store_iam_policy", - "google_healthcare_hl7_v2_store", - "google_healthcare_hl7_v2_store_iam_binding", - "google_healthcare_hl7_v2_store_iam_member", - "google_healthcare_hl7_v2_store_iam_policy", - "google_healthcare_pipeline_job", - "google_healthcare_workspace", - "google_iam_access_boundary_policy", - "google_iam_deny_policy", - "google_iam_folders_policy_binding", - "google_iam_oauth_client", - "google_iam_oauth_client_credential", - "google_iam_organizations_policy_binding", - "google_iam_principal_access_boundary_policy", - "google_iam_projects_policy_binding", - "google_iam_workforce_pool", - "google_iam_workforce_pool_provider", - "google_iam_workforce_pool_provider_key", - "google_iam_workload_identity_pool", - "google_iam_workload_identity_pool_iam_binding", - "google_iam_workload_identity_pool_iam_member", - "google_iam_workload_identity_pool_iam_policy", - "google_iam_workload_identity_pool_managed_identity", - "google_iam_workload_identity_pool_namespace", - "google_iam_workload_identity_pool_provider", - "google_iap_app_engine_service_iam_binding", - "google_iap_app_engine_service_iam_member", - "google_iap_app_engine_service_iam_policy", - "google_iap_app_engine_version_iam_binding", - "google_iap_app_engine_version_iam_member", - "google_iap_app_engine_version_iam_policy", - "google_iap_brand", - "google_iap_client", - "google_iap_settings", - "google_iap_tunnel_dest_group", - "google_iap_tunnel_dest_group_iam_binding", - "google_iap_tunnel_dest_group_iam_member", - "google_iap_tunnel_dest_group_iam_policy", - "google_iap_tunnel_iam_binding", - "google_iap_tunnel_iam_member", - "google_iap_tunnel_iam_policy", - "google_iap_tunnel_instance_iam_binding", - "google_iap_tunnel_instance_iam_member", - "google_iap_tunnel_instance_iam_policy", - "google_iap_web_backend_service_iam_binding", - "google_iap_web_backend_service_iam_member", - "google_iap_web_backend_service_iam_policy", - "google_iap_web_cloud_run_service_iam_binding", - "google_iap_web_cloud_run_service_iam_member", - "google_iap_web_cloud_run_service_iam_policy", - "google_iap_web_iam_binding", - "google_iap_web_iam_member", - "google_iap_web_iam_policy", - "google_iap_web_region_backend_service_iam_binding", - "google_iap_web_region_backend_service_iam_member", - "google_iap_web_region_backend_service_iam_policy", - "google_iap_web_type_app_engine_iam_binding", - "google_iap_web_type_app_engine_iam_member", - "google_iap_web_type_app_engine_iam_policy", - "google_iap_web_type_compute_iam_binding", - "google_iap_web_type_compute_iam_member", - "google_iap_web_type_compute_iam_policy", - "google_identity_platform_config", - "google_identity_platform_default_supported_idp_config", - "google_identity_platform_inbound_saml_config", - "google_identity_platform_oauth_idp_config", - "google_identity_platform_tenant", - "google_identity_platform_tenant_default_supported_idp_config", - "google_identity_platform_tenant_inbound_saml_config", - "google_identity_platform_tenant_oauth_idp_config", - "google_integration_connectors_connection", - "google_integration_connectors_endpoint_attachment", - "google_integration_connectors_managed_zone", - "google_integrations_auth_config", - "google_integrations_client", - "google_kms_autokey_config", - "google_kms_crypto_key", - "google_kms_crypto_key_iam_binding", - "google_kms_crypto_key_iam_member", - "google_kms_crypto_key_iam_policy", - "google_kms_crypto_key_version", - "google_kms_ekm_connection", - "google_kms_ekm_connection_iam_binding", - "google_kms_ekm_connection_iam_member", - "google_kms_ekm_connection_iam_policy", - "google_kms_key_handle", - "google_kms_key_ring", - "google_kms_key_ring_iam_binding", - "google_kms_key_ring_iam_member", - "google_kms_key_ring_iam_policy", - "google_kms_key_ring_import_job", - "google_kms_secret_ciphertext", - "google_logging_billing_account_bucket_config", - "google_logging_billing_account_exclusion", - "google_logging_billing_account_sink", - "google_logging_folder_bucket_config", - "google_logging_folder_exclusion", - "google_logging_folder_settings", - "google_logging_folder_sink", - "google_logging_linked_dataset", - "google_logging_log_scope", - "google_logging_log_view", - "google_logging_log_view_iam_binding", - "google_logging_log_view_iam_member", - "google_logging_log_view_iam_policy", - "google_logging_metric", - "google_logging_organization_bucket_config", - "google_logging_organization_exclusion", - "google_logging_organization_settings", - "google_logging_organization_sink", - "google_logging_project_bucket_config", - "google_logging_project_exclusion", - "google_logging_project_sink", - "google_looker_instance", - "google_lustre_instance", - "google_managed_kafka_acl", - "google_managed_kafka_cluster", - "google_managed_kafka_connect_cluster", - "google_managed_kafka_connector", - "google_managed_kafka_topic", - "google_memcache_instance", - "google_memorystore_instance", - "google_memorystore_instance_desired_user_created_endpoints", - "google_migration_center_group", - "google_migration_center_preference_set", - "google_ml_engine_model", - "google_monitoring_alert_policy", - "google_monitoring_custom_service", - "google_monitoring_dashboard", - "google_monitoring_group", - "google_monitoring_metric_descriptor", - "google_monitoring_monitored_project", - "google_monitoring_notification_channel", - "google_monitoring_service", - "google_monitoring_slo", - "google_monitoring_uptime_check_config", - "google_netapp_active_directory", - "google_netapp_backup", - "google_netapp_backup_policy", - "google_netapp_backup_vault", - "google_netapp_kmsconfig", - "google_netapp_storage_pool", - "google_netapp_volume", - "google_netapp_volume_quota_rule", - "google_netapp_volume_replication", - "google_netapp_volume_snapshot", - "google_network_connectivity_group", - "google_network_connectivity_hub", - "google_network_connectivity_internal_range", - "google_network_connectivity_policy_based_route", - "google_network_connectivity_regional_endpoint", - "google_network_connectivity_service_connection_policy", - "google_network_connectivity_spoke", - "google_network_management_vpc_flow_logs_config", - "google_network_security_address_group", - "google_network_security_address_group_iam_binding", - "google_network_security_address_group_iam_member", - "google_network_security_address_group_iam_policy", - "google_network_security_authorization_policy", - "google_network_security_authz_policy", - "google_network_security_backend_authentication_config", - "google_network_security_client_tls_policy", - "google_network_security_firewall_endpoint", - "google_network_security_firewall_endpoint_association", - "google_network_security_gateway_security_policy", - "google_network_security_gateway_security_policy_rule", - "google_network_security_intercept_deployment", - "google_network_security_intercept_deployment_group", - "google_network_security_intercept_endpoint_group", - "google_network_security_intercept_endpoint_group_association", - "google_network_security_mirroring_deployment", - "google_network_security_mirroring_deployment_group", - "google_network_security_mirroring_endpoint_group", - "google_network_security_mirroring_endpoint_group_association", - "google_network_security_security_profile", - "google_network_security_security_profile_group", - "google_network_security_server_tls_policy", - "google_network_security_tls_inspection_policy", - "google_network_security_url_lists", - "google_network_services_authz_extension", - "google_network_services_edge_cache_keyset", - "google_network_services_edge_cache_origin", - "google_network_services_edge_cache_service", - "google_network_services_endpoint_policy", - "google_network_services_gateway", - "google_network_services_grpc_route", - "google_network_services_http_route", - "google_network_services_lb_route_extension", - "google_network_services_lb_traffic_extension", - "google_network_services_mesh", - "google_network_services_service_binding", - "google_network_services_service_lb_policies", - "google_network_services_tcp_route", - "google_network_services_tls_route", - "google_notebooks_environment", - "google_notebooks_instance", - "google_notebooks_instance_iam_binding", - "google_notebooks_instance_iam_member", - "google_notebooks_instance_iam_policy", - "google_notebooks_runtime", - "google_notebooks_runtime_iam_binding", - "google_notebooks_runtime_iam_member", - "google_notebooks_runtime_iam_policy", - "google_oracle_database_autonomous_database", - "google_oracle_database_cloud_exadata_infrastructure", - "google_oracle_database_cloud_vm_cluster", - "google_org_policy_custom_constraint", - "google_org_policy_policy", - "google_organization_access_approval_settings", - "google_organization_iam_audit_config", - "google_organization_iam_binding", - "google_organization_iam_custom_role", - "google_organization_iam_member", - "google_organization_iam_policy", - "google_organization_policy", - "google_os_config_guest_policies", - "google_os_config_os_policy_assignment", - "google_os_config_patch_deployment", - "google_os_config_v2_policy_orchestrator", - "google_os_config_v2_policy_orchestrator_for_folder", - "google_os_config_v2_policy_orchestrator_for_organization", - "google_os_login_ssh_public_key", - "google_parallelstore_instance", - "google_parameter_manager_parameter", - "google_parameter_manager_parameter_version", - "google_parameter_manager_regional_parameter", - "google_parameter_manager_regional_parameter_version", - "google_privateca_ca_pool", - "google_privateca_ca_pool_iam_binding", - "google_privateca_ca_pool_iam_member", - "google_privateca_ca_pool_iam_policy", - "google_privateca_certificate", - "google_privateca_certificate_authority", - "google_privateca_certificate_template", - "google_privateca_certificate_template_iam_binding", - "google_privateca_certificate_template_iam_member", - "google_privateca_certificate_template_iam_policy", - "google_privileged_access_manager_entitlement", - "google_project", - "google_project_access_approval_settings", - "google_project_default_service_accounts", - "google_project_iam_audit_config", - "google_project_iam_binding", - "google_project_iam_custom_role", - "google_project_iam_member", - "google_project_iam_member_remove", - "google_project_iam_policy", - "google_project_organization_policy", - "google_project_service", - "google_project_service_identity", - "google_project_services", - "google_project_usage_export_bucket", - "google_public_ca_external_account_key", - "google_pubsub_lite_reservation", - "google_pubsub_lite_subscription", - "google_pubsub_lite_topic", - "google_pubsub_schema", - "google_pubsub_schema_iam_binding", - "google_pubsub_schema_iam_member", - "google_pubsub_schema_iam_policy", - "google_pubsub_subscription", - "google_pubsub_subscription_iam_binding", - "google_pubsub_subscription_iam_member", - "google_pubsub_subscription_iam_policy", - "google_pubsub_topic", - "google_pubsub_topic_iam_binding", - "google_pubsub_topic_iam_member", - "google_pubsub_topic_iam_policy", - "google_recaptcha_enterprise_key", - "google_redis_cluster", - "google_redis_cluster_user_created_connections", - "google_redis_instance", - "google_resource_manager_capability", - "google_resource_manager_lien", - "google_runtimeconfig_config", - "google_runtimeconfig_config_iam_binding", - "google_runtimeconfig_config_iam_member", - "google_runtimeconfig_config_iam_policy", - "google_runtimeconfig_variable", - "google_scc_event_threat_detection_custom_module", - "google_scc_folder_custom_module", - "google_scc_folder_notification_config", - "google_scc_folder_scc_big_query_export", - "google_scc_management_folder_security_health_analytics_custom_module", - "google_scc_management_organization_event_threat_detection_custom_module", - "google_scc_management_organization_security_health_analytics_custom_module", - "google_scc_management_project_security_health_analytics_custom_module", - "google_scc_mute_config", - "google_scc_notification_config", - "google_scc_organization_custom_module", - "google_scc_organization_scc_big_query_export", - "google_scc_project_custom_module", - "google_scc_project_notification_config", - "google_scc_project_scc_big_query_export", - "google_scc_source", - "google_scc_source_iam_binding", - "google_scc_source_iam_member", - "google_scc_source_iam_policy", - "google_scc_v2_folder_mute_config", - "google_scc_v2_folder_notification_config", - "google_scc_v2_folder_scc_big_query_export", - "google_scc_v2_organization_mute_config", - "google_scc_v2_organization_notification_config", - "google_scc_v2_organization_scc_big_query_export", - "google_scc_v2_organization_scc_big_query_exports", - "google_scc_v2_organization_source_iam_binding", - "google_scc_v2_organization_source_iam_member", - "google_scc_v2_organization_source_iam_policy", - "google_scc_v2_project_mute_config", - "google_scc_v2_project_notification_config", - "google_scc_v2_project_scc_big_query_export", - "google_secret_manager_regional_secret", - "google_secret_manager_regional_secret_iam_binding", - "google_secret_manager_regional_secret_iam_member", - "google_secret_manager_regional_secret_iam_policy", - "google_secret_manager_regional_secret_version", - "google_secret_manager_secret", - "google_secret_manager_secret_iam_binding", - "google_secret_manager_secret_iam_member", - "google_secret_manager_secret_iam_policy", - "google_secret_manager_secret_version", - "google_secure_source_manager_branch_rule", - "google_secure_source_manager_instance", - "google_secure_source_manager_instance_iam_binding", - "google_secure_source_manager_instance_iam_member", - "google_secure_source_manager_instance_iam_policy", - "google_secure_source_manager_repository", - "google_secure_source_manager_repository_iam_binding", - "google_secure_source_manager_repository_iam_member", - "google_secure_source_manager_repository_iam_policy", - "google_security_scanner_scan_config", - "google_securityposture_posture", - "google_service_account", - "google_service_account_iam_binding", - "google_service_account_iam_member", - "google_service_account_iam_policy", - "google_service_account_key", - "google_service_directory_endpoint", - "google_service_directory_namespace", - "google_service_directory_namespace_iam_binding", - "google_service_directory_namespace_iam_member", - "google_service_directory_namespace_iam_policy", - "google_service_directory_service", - "google_service_directory_service_iam_binding", - "google_service_directory_service_iam_member", - "google_service_directory_service_iam_policy", - "google_service_networking_connection", - "google_service_networking_peered_dns_domain", - "google_service_networking_vpc_service_controls", - "google_service_usage_consumer_quota_override", - "google_site_verification_owner", - "google_site_verification_web_resource", - "google_sourcerepo_repository", - "google_sourcerepo_repository_iam_binding", - "google_sourcerepo_repository_iam_member", - "google_sourcerepo_repository_iam_policy", - "google_spanner_backup_schedule", - "google_spanner_database", - "google_spanner_database_iam_binding", - "google_spanner_database_iam_member", - "google_spanner_database_iam_policy", - "google_spanner_instance", - "google_spanner_instance_config", - "google_spanner_instance_iam_binding", - "google_spanner_instance_iam_member", - "google_spanner_instance_iam_policy", - "google_spanner_instance_partition", - "google_sql_database", - "google_sql_database_instance", - "google_sql_source_representation_instance", - "google_sql_ssl_cert", - "google_sql_user", - "google_storage_anywhere_cache", - "google_storage_batch_operations_job", - "google_storage_bucket", - "google_storage_bucket_access_control", - "google_storage_bucket_acl", - "google_storage_bucket_iam_binding", - "google_storage_bucket_iam_member", - "google_storage_bucket_iam_policy", - "google_storage_bucket_object", - "google_storage_control_folder_intelligence_config", - "google_storage_control_organization_intelligence_config", - "google_storage_control_project_intelligence_config", - "google_storage_default_object_access_control", - "google_storage_default_object_acl", - "google_storage_folder", - "google_storage_hmac_key", - "google_storage_insights_report_config", - "google_storage_managed_folder", - "google_storage_managed_folder_iam_binding", - "google_storage_managed_folder_iam_member", - "google_storage_managed_folder_iam_policy", - "google_storage_notification", - "google_storage_object_access_control", - "google_storage_object_acl", - "google_storage_transfer_agent_pool", - "google_storage_transfer_job", - "google_tags_location_tag_binding", - "google_tags_tag_binding", - "google_tags_tag_key", - "google_tags_tag_key_iam_binding", - "google_tags_tag_key_iam_member", - "google_tags_tag_key_iam_policy", - "google_tags_tag_value", - "google_tags_tag_value_iam_binding", - "google_tags_tag_value_iam_member", - "google_tags_tag_value_iam_policy", - "google_tpu_node", - "google_tpu_v2_queued_resource", - "google_tpu_v2_vm", - "google_transcoder_job", - "google_transcoder_job_template", - "google_vertex_ai_dataset", - "google_vertex_ai_deployment_resource_pool", - "google_vertex_ai_endpoint", - "google_vertex_ai_endpoint_iam_binding", - "google_vertex_ai_endpoint_iam_member", - "google_vertex_ai_endpoint_iam_policy", - "google_vertex_ai_feature_group", - "google_vertex_ai_feature_group_feature", - "google_vertex_ai_feature_group_iam_binding", - "google_vertex_ai_feature_group_iam_member", - "google_vertex_ai_feature_group_iam_policy", - "google_vertex_ai_feature_online_store", - "google_vertex_ai_feature_online_store_featureview", - "google_vertex_ai_feature_online_store_featureview_iam_binding", - "google_vertex_ai_feature_online_store_featureview_iam_member", - "google_vertex_ai_feature_online_store_featureview_iam_policy", - "google_vertex_ai_feature_online_store_iam_binding", - "google_vertex_ai_feature_online_store_iam_member", - "google_vertex_ai_feature_online_store_iam_policy", - "google_vertex_ai_featurestore", - "google_vertex_ai_featurestore_entitytype", - "google_vertex_ai_featurestore_entitytype_feature", - "google_vertex_ai_featurestore_entitytype_iam_binding", - "google_vertex_ai_featurestore_entitytype_iam_member", - "google_vertex_ai_featurestore_entitytype_iam_policy", - "google_vertex_ai_featurestore_iam_binding", - "google_vertex_ai_featurestore_iam_member", - "google_vertex_ai_featurestore_iam_policy", - "google_vertex_ai_index", - "google_vertex_ai_index_endpoint", - "google_vertex_ai_index_endpoint_deployed_index", - "google_vertex_ai_metadata_store", - "google_vertex_ai_tensorboard", - "google_vmwareengine_cluster", - "google_vmwareengine_external_access_rule", - "google_vmwareengine_external_address", - "google_vmwareengine_network", - "google_vmwareengine_network_peering", - "google_vmwareengine_network_policy", - "google_vmwareengine_private_cloud", - "google_vmwareengine_subnet", - "google_vpc_access_connector", - "google_workbench_instance", - "google_workbench_instance_iam_binding", - "google_workbench_instance_iam_member", - "google_workbench_instance_iam_policy", - "google_workflows_workflow", - "google_workstations_workstation", - "google_workstations_workstation_cluster", - "google_workstations_workstation_config", - "google_workstations_workstation_config_iam_binding", - "google_workstations_workstation_config_iam_member", - "google_workstations_workstation_config_iam_policy", - "google_workstations_workstation_iam_binding", - "google_workstations_workstation_iam_member", - "google_workstations_workstation_iam_policy" - ] -} +{ + "resources": [ + "google_access_context_manager_access_level", + "google_access_context_manager_access_level_condition", + "google_access_context_manager_access_levels", + "google_access_context_manager_access_policy", + "google_access_context_manager_access_policy_iam_binding", + "google_access_context_manager_access_policy_iam_member", + "google_access_context_manager_access_policy_iam_policy", + "google_access_context_manager_authorized_orgs_desc", + "google_access_context_manager_gcp_user_access_binding", + "google_access_context_manager_service_perimeter", + "google_access_context_manager_service_perimeter_dry_run_egress_policy", + "google_access_context_manager_service_perimeter_dry_run_ingress_policy", + "google_access_context_manager_service_perimeter_dry_run_resource", + "google_access_context_manager_service_perimeter_egress_policy", + "google_access_context_manager_service_perimeter_ingress_policy", + "google_access_context_manager_service_perimeter_resource", + "google_access_context_manager_service_perimeters", + "google_active_directory_domain", + "google_active_directory_domain_trust", + "google_active_directory_peering", + "google_alloydb_backup", + "google_alloydb_cluster", + "google_alloydb_instance", + "google_alloydb_user", + "google_api_gateway_api", + "google_api_gateway_api_config", + "google_api_gateway_api_config_iam_binding", + "google_api_gateway_api_config_iam_member", + "google_api_gateway_api_config_iam_policy", + "google_api_gateway_api_iam_binding", + "google_api_gateway_api_iam_member", + "google_api_gateway_api_iam_policy", + "google_api_gateway_gateway", + "google_api_gateway_gateway_iam_binding", + "google_api_gateway_gateway_iam_member", + "google_api_gateway_gateway_iam_policy", + "google_apigee_addons_config", + "google_apigee_api", + "google_apigee_api_deployment", + "google_apigee_api_product", + "google_apigee_app_group", + "google_apigee_control_plane_access", + "google_apigee_developer", + "google_apigee_developer_app", + "google_apigee_dns_zone", + "google_apigee_env_keystore", + "google_apigee_envgroup", + "google_apigee_envgroup_attachment", + "google_apigee_environment", + "google_apigee_environment_addons_config", + "google_apigee_environment_api_revision_deployment", + "google_apigee_environment_iam_binding", + "google_apigee_environment_iam_member", + "google_apigee_environment_iam_policy", + "google_apigee_environment_keyvaluemaps", + "google_apigee_environment_keyvaluemaps_entries", + "google_apigee_instance", + "google_apigee_instance_attachment", + "google_apigee_keystores_aliases_self_signed_cert", + "google_apigee_nat_address", + "google_apigee_organization", + "google_apigee_security_action", + "google_apigee_security_monitoring_condition", + "google_apigee_security_profile_v2", + "google_apigee_sync_authorization", + "google_apigee_target_server", + "google_apihub_api_hub_instance", + "google_apihub_curation", + "google_apihub_host_project_registration", + "google_apihub_plugin", + "google_apihub_plugin_instance", + "google_apikeys_key", + "google_app_engine_application", + "google_app_engine_application_url_dispatch_rules", + "google_app_engine_domain_mapping", + "google_app_engine_firewall_rule", + "google_app_engine_flexible_app_version", + "google_app_engine_service_network_settings", + "google_app_engine_service_split_traffic", + "google_app_engine_standard_app_version", + "google_apphub_application", + "google_apphub_service", + "google_apphub_service_project_attachment", + "google_apphub_workload", + "google_artifact_registry_package", + "google_artifact_registry_repository", + "google_artifact_registry_repository_iam_binding", + "google_artifact_registry_repository_iam_member", + "google_artifact_registry_repository_iam_policy", + "google_artifact_registry_vpcsc_config", + "google_assured_workloads_workload", + "google_backup_dr_backup_plan", + "google_backup_dr_backup_plan_association", + "google_backup_dr_backup_vault", + "google_backup_dr_management_server", + "google_backup_dr_service_config", + "google_beyondcorp_app_connection", + "google_beyondcorp_app_connector", + "google_beyondcorp_app_gateway", + "google_beyondcorp_security_gateway", + "google_beyondcorp_security_gateway_application", + "google_beyondcorp_security_gateway_application_iam_binding", + "google_beyondcorp_security_gateway_application_iam_member", + "google_beyondcorp_security_gateway_application_iam_policy", + "google_beyondcorp_security_gateway_iam_binding", + "google_beyondcorp_security_gateway_iam_member", + "google_beyondcorp_security_gateway_iam_policy", + "google_biglake_catalog", + "google_biglake_database", + "google_biglake_table", + "google_bigquery_analytics_hub_data_exchange", + "google_bigquery_analytics_hub_data_exchange_iam_binding", + "google_bigquery_analytics_hub_data_exchange_iam_member", + "google_bigquery_analytics_hub_data_exchange_iam_policy", + "google_bigquery_analytics_hub_data_exchange_subscription", + "google_bigquery_analytics_hub_listing", + "google_bigquery_analytics_hub_listing_iam_binding", + "google_bigquery_analytics_hub_listing_iam_member", + "google_bigquery_analytics_hub_listing_iam_policy", + "google_bigquery_analytics_hub_listing_subscription", + "google_bigquery_bi_reservation", + "google_bigquery_capacity_commitment", + "google_bigquery_connection", + "google_bigquery_connection_iam_binding", + "google_bigquery_connection_iam_member", + "google_bigquery_connection_iam_policy", + "google_bigquery_data_transfer_config", + "google_bigquery_datapolicy_data_policy", + "google_bigquery_datapolicy_data_policy_iam_binding", + "google_bigquery_datapolicy_data_policy_iam_member", + "google_bigquery_datapolicy_data_policy_iam_policy", + "google_bigquery_datapolicyv2_data_policy", + "google_bigquery_datapolicyv2_data_policy_iam_binding", + "google_bigquery_datapolicyv2_data_policy_iam_member", + "google_bigquery_datapolicyv2_data_policy_iam_policy", + "google_bigquery_dataset", + "google_bigquery_dataset_access", + "google_bigquery_dataset_iam_binding", + "google_bigquery_dataset_iam_member", + "google_bigquery_dataset_iam_policy", + "google_bigquery_job", + "google_bigquery_reservation", + "google_bigquery_reservation_assignment", + "google_bigquery_routine", + "google_bigquery_row_access_policy", + "google_bigquery_table", + "google_bigquery_table_iam_binding", + "google_bigquery_table_iam_member", + "google_bigquery_table_iam_policy", + "google_bigtable_app_profile", + "google_bigtable_authorized_view", + "google_bigtable_gc_policy", + "google_bigtable_instance", + "google_bigtable_instance_iam_binding", + "google_bigtable_instance_iam_member", + "google_bigtable_instance_iam_policy", + "google_bigtable_logical_view", + "google_bigtable_materialized_view", + "google_bigtable_schema_bundle", + "google_bigtable_table", + "google_bigtable_table_iam_binding", + "google_bigtable_table_iam_member", + "google_bigtable_table_iam_policy", + "google_billing_account_iam_binding", + "google_billing_account_iam_member", + "google_billing_account_iam_policy", + "google_billing_budget", + "google_billing_project_info", + "google_billing_subaccount", + "google_binary_authorization_attestor", + "google_binary_authorization_attestor_iam_binding", + "google_binary_authorization_attestor_iam_member", + "google_binary_authorization_attestor_iam_policy", + "google_binary_authorization_policy", + "google_blockchain_node_engine_blockchain_nodes", + "google_certificate_manager_certificate", + "google_certificate_manager_certificate_issuance_config", + "google_certificate_manager_certificate_map", + "google_certificate_manager_certificate_map_entry", + "google_certificate_manager_dns_authorization", + "google_certificate_manager_trust_config", + "google_ces_agent", + "google_ces_app", + "google_ces_deployment", + "google_ces_example", + "google_ces_guardrail", + "google_ces_tool", + "google_ces_toolset", + "google_chronicle_data_access_label", + "google_chronicle_data_access_scope", + "google_chronicle_reference_list", + "google_chronicle_retrohunt", + "google_chronicle_rule", + "google_chronicle_rule_deployment", + "google_chronicle_watchlist", + "google_cloud_asset_folder_feed", + "google_cloud_asset_organization_feed", + "google_cloud_asset_project_feed", + "google_cloud_identity_group", + "google_cloud_identity_group_membership", + "google_cloud_ids_endpoint", + "google_cloud_quotas_quota_adjuster_settings", + "google_cloud_quotas_quota_preference", + "google_cloud_run_domain_mapping", + "google_cloud_run_service", + "google_cloud_run_service_iam_binding", + "google_cloud_run_service_iam_member", + "google_cloud_run_service_iam_policy", + "google_cloud_run_v2_job", + "google_cloud_run_v2_job_iam_binding", + "google_cloud_run_v2_job_iam_member", + "google_cloud_run_v2_job_iam_policy", + "google_cloud_run_v2_service", + "google_cloud_run_v2_service_iam_binding", + "google_cloud_run_v2_service_iam_member", + "google_cloud_run_v2_service_iam_policy", + "google_cloud_run_v2_worker_pool", + "google_cloud_run_v2_worker_pool_iam_binding", + "google_cloud_run_v2_worker_pool_iam_member", + "google_cloud_run_v2_worker_pool_iam_policy", + "google_cloud_scheduler_job", + "google_cloud_security_compliance_cloud_control", + "google_cloud_security_compliance_framework", + "google_cloud_security_compliance_framework_deployment", + "google_cloud_tasks_queue", + "google_cloud_tasks_queue_iam_binding", + "google_cloud_tasks_queue_iam_member", + "google_cloud_tasks_queue_iam_policy", + "google_cloudbuild_bitbucket_server_config", + "google_cloudbuild_trigger", + "google_cloudbuild_worker_pool", + "google_cloudbuildv2_connection", + "google_cloudbuildv2_connection_iam_binding", + "google_cloudbuildv2_connection_iam_member", + "google_cloudbuildv2_connection_iam_policy", + "google_cloudbuildv2_repository", + "google_clouddeploy_automation", + "google_clouddeploy_custom_target_type", + "google_clouddeploy_custom_target_type_iam_binding", + "google_clouddeploy_custom_target_type_iam_member", + "google_clouddeploy_custom_target_type_iam_policy", + "google_clouddeploy_delivery_pipeline", + "google_clouddeploy_delivery_pipeline_iam_binding", + "google_clouddeploy_delivery_pipeline_iam_member", + "google_clouddeploy_delivery_pipeline_iam_policy", + "google_clouddeploy_deploy_policy", + "google_clouddeploy_target", + "google_clouddeploy_target_iam_binding", + "google_clouddeploy_target_iam_member", + "google_clouddeploy_target_iam_policy", + "google_clouddomains_registration", + "google_cloudfunctions2_function", + "google_cloudfunctions2_function_iam_binding", + "google_cloudfunctions2_function_iam_member", + "google_cloudfunctions2_function_iam_policy", + "google_cloudfunctions_function", + "google_cloudfunctions_function_iam_binding", + "google_cloudfunctions_function_iam_member", + "google_cloudfunctions_function_iam_policy", + "google_cloudiot_registry", + "google_colab_notebook_execution", + "google_colab_runtime", + "google_colab_runtime_template", + "google_colab_runtime_template_iam_binding", + "google_colab_runtime_template_iam_member", + "google_colab_runtime_template_iam_policy", + "google_colab_schedule", + "google_composer_environment", + "google_composer_user_workloads_config_map", + "google_composer_user_workloads_secret", + "google_compute_address", + "google_compute_attached_disk", + "google_compute_autoscaler", + "google_compute_backend_bucket", + "google_compute_backend_bucket_iam_binding", + "google_compute_backend_bucket_iam_member", + "google_compute_backend_bucket_iam_policy", + "google_compute_backend_bucket_signed_url_key", + "google_compute_backend_service", + "google_compute_backend_service_iam_binding", + "google_compute_backend_service_iam_member", + "google_compute_backend_service_iam_policy", + "google_compute_backend_service_signed_url_key", + "google_compute_cross_site_network", + "google_compute_disk", + "google_compute_disk_async_replication", + "google_compute_disk_iam_binding", + "google_compute_disk_iam_member", + "google_compute_disk_iam_policy", + "google_compute_disk_resource_policy_attachment", + "google_compute_external_vpn_gateway", + "google_compute_firewall", + "google_compute_firewall_policy", + "google_compute_firewall_policy_association", + "google_compute_firewall_policy_rule", + "google_compute_firewall_policy_with_rules", + "google_compute_forwarding_rule", + "google_compute_future_reservation", + "google_compute_global_address", + "google_compute_global_forwarding_rule", + "google_compute_global_network_endpoint", + "google_compute_global_network_endpoint_group", + "google_compute_ha_vpn_gateway", + "google_compute_health_check", + "google_compute_http_health_check", + "google_compute_https_health_check", + "google_compute_image", + "google_compute_image_iam_binding", + "google_compute_image_iam_member", + "google_compute_image_iam_policy", + "google_compute_instance", + "google_compute_instance_from_machine_image", + "google_compute_instance_from_template", + "google_compute_instance_group", + "google_compute_instance_group_manager", + "google_compute_instance_group_membership", + "google_compute_instance_group_named_port", + "google_compute_instance_iam_binding", + "google_compute_instance_iam_member", + "google_compute_instance_iam_policy", + "google_compute_instance_settings", + "google_compute_instance_template", + "google_compute_instance_template_iam_binding", + "google_compute_instance_template_iam_member", + "google_compute_instance_template_iam_policy", + "google_compute_instant_snapshot", + "google_compute_instant_snapshot_iam_binding", + "google_compute_instant_snapshot_iam_member", + "google_compute_instant_snapshot_iam_policy", + "google_compute_interconnect", + "google_compute_interconnect_attachment", + "google_compute_interconnect_attachment_group", + "google_compute_interconnect_group", + "google_compute_machine_image", + "google_compute_machine_image_iam_binding", + "google_compute_machine_image_iam_member", + "google_compute_machine_image_iam_policy", + "google_compute_managed_ssl_certificate", + "google_compute_network", + "google_compute_network_attachment", + "google_compute_network_edge_security_service", + "google_compute_network_endpoint", + "google_compute_network_endpoint_group", + "google_compute_network_endpoints", + "google_compute_network_firewall_policy", + "google_compute_network_firewall_policy_association", + "google_compute_network_firewall_policy_packet_mirroring_rule", + "google_compute_network_firewall_policy_rule", + "google_compute_network_firewall_policy_with_rules", + "google_compute_network_peering", + "google_compute_network_peering_routes_config", + "google_compute_node_group", + "google_compute_node_template", + "google_compute_organization_security_policy", + "google_compute_organization_security_policy_association", + "google_compute_organization_security_policy_rule", + "google_compute_packet_mirroring", + "google_compute_per_instance_config", + "google_compute_preview_feature", + "google_compute_project_cloud_armor_tier", + "google_compute_project_default_network_tier", + "google_compute_project_metadata", + "google_compute_project_metadata_item", + "google_compute_public_advertised_prefix", + "google_compute_public_delegated_prefix", + "google_compute_region_autoscaler", + "google_compute_region_backend_service", + "google_compute_region_backend_service_iam_binding", + "google_compute_region_backend_service_iam_member", + "google_compute_region_backend_service_iam_policy", + "google_compute_region_commitment", + "google_compute_region_disk", + "google_compute_region_disk_iam_binding", + "google_compute_region_disk_iam_member", + "google_compute_region_disk_iam_policy", + "google_compute_region_disk_resource_policy_attachment", + "google_compute_region_health_aggregation_policy", + "google_compute_region_health_check", + "google_compute_region_instance_group_manager", + "google_compute_region_instance_template", + "google_compute_region_network_endpoint", + "google_compute_region_network_endpoint_group", + "google_compute_region_network_firewall_policy", + "google_compute_region_network_firewall_policy_association", + "google_compute_region_network_firewall_policy_rule", + "google_compute_region_network_firewall_policy_with_rules", + "google_compute_region_per_instance_config", + "google_compute_region_resize_request", + "google_compute_region_security_policy", + "google_compute_region_security_policy_rule", + "google_compute_region_ssl_certificate", + "google_compute_region_target_http_proxy", + "google_compute_region_target_https_proxy", + "google_compute_region_target_tcp_proxy", + "google_compute_region_url_map", + "google_compute_reservation", + "google_compute_resize_request", + "google_compute_resource_policy", + "google_compute_resource_policy_attachment", + "google_compute_route", + "google_compute_router", + "google_compute_router_interface", + "google_compute_router_nat", + "google_compute_router_nat_address", + "google_compute_router_peer", + "google_compute_router_route_policy", + "google_compute_security_policy", + "google_compute_security_policy_rule", + "google_compute_service_attachment", + "google_compute_shared_vpc_host_project", + "google_compute_shared_vpc_service_project", + "google_compute_snapshot", + "google_compute_snapshot_iam_binding", + "google_compute_snapshot_iam_member", + "google_compute_snapshot_iam_policy", + "google_compute_snapshot_settings", + "google_compute_ssl_certificate", + "google_compute_ssl_policy", + "google_compute_storage_pool", + "google_compute_storage_pool_iam_binding", + "google_compute_storage_pool_iam_member", + "google_compute_storage_pool_iam_policy", + "google_compute_subnetwork", + "google_compute_subnetwork_iam_binding", + "google_compute_subnetwork_iam_member", + "google_compute_subnetwork_iam_policy", + "google_compute_target_grpc_proxy", + "google_compute_target_http_proxy", + "google_compute_target_https_proxy", + "google_compute_target_instance", + "google_compute_target_pool", + "google_compute_target_ssl_proxy", + "google_compute_target_tcp_proxy", + "google_compute_url_map", + "google_compute_vpn_gateway", + "google_compute_vpn_tunnel", + "google_compute_wire_group", + "google_contact_center_insights_analysis_rule", + "google_contact_center_insights_view", + "google_container_analysis_note", + "google_container_analysis_note_iam_binding", + "google_container_analysis_note_iam_member", + "google_container_analysis_note_iam_policy", + "google_container_analysis_occurrence", + "google_container_attached_cluster", + "google_container_aws_cluster", + "google_container_aws_node_pool", + "google_container_azure_client", + "google_container_azure_cluster", + "google_container_azure_node_pool", + "google_container_cluster", + "google_container_node_pool", + "google_container_registry", + "google_data_catalog_entry", + "google_data_catalog_entry_group", + "google_data_catalog_entry_group_iam_binding", + "google_data_catalog_entry_group_iam_member", + "google_data_catalog_entry_group_iam_policy", + "google_data_catalog_policy_tag", + "google_data_catalog_policy_tag_iam_binding", + "google_data_catalog_policy_tag_iam_member", + "google_data_catalog_policy_tag_iam_policy", + "google_data_catalog_tag", + "google_data_catalog_tag_template", + "google_data_catalog_tag_template_iam_binding", + "google_data_catalog_tag_template_iam_member", + "google_data_catalog_tag_template_iam_policy", + "google_data_catalog_taxonomy", + "google_data_catalog_taxonomy_iam_binding", + "google_data_catalog_taxonomy_iam_member", + "google_data_catalog_taxonomy_iam_policy", + "google_data_fusion_instance", + "google_data_fusion_instance_iam_binding", + "google_data_fusion_instance_iam_member", + "google_data_fusion_instance_iam_policy", + "google_data_loss_prevention_deidentify_template", + "google_data_loss_prevention_discovery_config", + "google_data_loss_prevention_inspect_template", + "google_data_loss_prevention_job_trigger", + "google_data_loss_prevention_stored_info_type", + "google_data_pipeline_pipeline", + "google_database_migration_service_connection_profile", + "google_database_migration_service_migration_job", + "google_database_migration_service_private_connection", + "google_dataflow_flex_template_job", + "google_dataflow_job", + "google_dataform_repository", + "google_dataform_repository_iam_binding", + "google_dataform_repository_iam_member", + "google_dataform_repository_iam_policy", + "google_dataform_repository_release_config", + "google_dataform_repository_workflow_config", + "google_dataplex_aspect_type", + "google_dataplex_aspect_type_iam_binding", + "google_dataplex_aspect_type_iam_member", + "google_dataplex_aspect_type_iam_policy", + "google_dataplex_asset", + "google_dataplex_asset_iam_binding", + "google_dataplex_asset_iam_member", + "google_dataplex_asset_iam_policy", + "google_dataplex_datascan", + "google_dataplex_datascan_iam_binding", + "google_dataplex_datascan_iam_member", + "google_dataplex_datascan_iam_policy", + "google_dataplex_entry", + "google_dataplex_entry_group", + "google_dataplex_entry_group_iam_binding", + "google_dataplex_entry_group_iam_member", + "google_dataplex_entry_group_iam_policy", + "google_dataplex_entry_link", + "google_dataplex_entry_type", + "google_dataplex_entry_type_iam_binding", + "google_dataplex_entry_type_iam_member", + "google_dataplex_entry_type_iam_policy", + "google_dataplex_glossary", + "google_dataplex_glossary_category", + "google_dataplex_glossary_iam_binding", + "google_dataplex_glossary_iam_member", + "google_dataplex_glossary_iam_policy", + "google_dataplex_glossary_term", + "google_dataplex_lake", + "google_dataplex_lake_iam_binding", + "google_dataplex_lake_iam_member", + "google_dataplex_lake_iam_policy", + "google_dataplex_task", + "google_dataplex_task_iam_binding", + "google_dataplex_task_iam_member", + "google_dataplex_task_iam_policy", + "google_dataplex_zone", + "google_dataplex_zone_iam_binding", + "google_dataplex_zone_iam_member", + "google_dataplex_zone_iam_policy", + "google_dataproc_autoscaling_policy", + "google_dataproc_autoscaling_policy_iam_binding", + "google_dataproc_autoscaling_policy_iam_member", + "google_dataproc_autoscaling_policy_iam_policy", + "google_dataproc_batch", + "google_dataproc_cluster", + "google_dataproc_cluster_iam_binding", + "google_dataproc_cluster_iam_member", + "google_dataproc_cluster_iam_policy", + "google_dataproc_gdc_application_environment", + "google_dataproc_gdc_service_instance", + "google_dataproc_gdc_spark_application", + "google_dataproc_job", + "google_dataproc_job_iam_binding", + "google_dataproc_job_iam_member", + "google_dataproc_job_iam_policy", + "google_dataproc_metastore_database_iam_binding", + "google_dataproc_metastore_database_iam_member", + "google_dataproc_metastore_database_iam_policy", + "google_dataproc_metastore_federation", + "google_dataproc_metastore_federation_iam_binding", + "google_dataproc_metastore_federation_iam_member", + "google_dataproc_metastore_federation_iam_policy", + "google_dataproc_metastore_service", + "google_dataproc_metastore_service_iam_binding", + "google_dataproc_metastore_service_iam_member", + "google_dataproc_metastore_service_iam_policy", + "google_dataproc_metastore_table_iam_binding", + "google_dataproc_metastore_table_iam_member", + "google_dataproc_metastore_table_iam_policy", + "google_dataproc_session_template", + "google_dataproc_workflow_template", + "google_datastream_connection_profile", + "google_datastream_private_connection", + "google_datastream_stream", + "google_deployment_manager_deployment", + "google_developer_connect_account_connector", + "google_developer_connect_connection", + "google_developer_connect_git_repository_link", + "google_developer_connect_insights_config", + "google_dialogflow_agent", + "google_dialogflow_conversation_profile", + "google_dialogflow_cx_agent", + "google_dialogflow_cx_entity_type", + "google_dialogflow_cx_environment", + "google_dialogflow_cx_flow", + "google_dialogflow_cx_generative_settings", + "google_dialogflow_cx_generator", + "google_dialogflow_cx_intent", + "google_dialogflow_cx_page", + "google_dialogflow_cx_playbook", + "google_dialogflow_cx_security_settings", + "google_dialogflow_cx_tool", + "google_dialogflow_cx_version", + "google_dialogflow_cx_webhook", + "google_dialogflow_encryption_spec", + "google_dialogflow_entity_type", + "google_dialogflow_fulfillment", + "google_dialogflow_intent", + "google_discovery_engine_acl_config", + "google_discovery_engine_assistant", + "google_discovery_engine_chat_engine", + "google_discovery_engine_cmek_config", + "google_discovery_engine_control", + "google_discovery_engine_data_connector", + "google_discovery_engine_data_store", + "google_discovery_engine_license_config", + "google_discovery_engine_recommendation_engine", + "google_discovery_engine_schema", + "google_discovery_engine_search_engine", + "google_discovery_engine_sitemap", + "google_discovery_engine_target_site", + "google_discovery_engine_user_store", + "google_dns_managed_zone", + "google_dns_managed_zone_iam_binding", + "google_dns_managed_zone_iam_member", + "google_dns_managed_zone_iam_policy", + "google_dns_policy", + "google_dns_record_set", + "google_dns_response_policy", + "google_dns_response_policy_rule", + "google_document_ai_processor", + "google_document_ai_processor_default_version", + "google_document_ai_warehouse_document_schema", + "google_document_ai_warehouse_location", + "google_edgecontainer_cluster", + "google_edgecontainer_node_pool", + "google_edgecontainer_vpn_connection", + "google_edgenetwork_interconnect_attachment", + "google_edgenetwork_network", + "google_edgenetwork_subnet", + "google_endpoints_service", + "google_endpoints_service_consumers_iam_binding", + "google_endpoints_service_consumers_iam_member", + "google_endpoints_service_consumers_iam_policy", + "google_endpoints_service_iam_binding", + "google_endpoints_service_iam_member", + "google_endpoints_service_iam_policy", + "google_essential_contacts_contact", + "google_eventarc_channel", + "google_eventarc_enrollment", + "google_eventarc_google_api_source", + "google_eventarc_google_channel_config", + "google_eventarc_message_bus", + "google_eventarc_pipeline", + "google_eventarc_trigger", + "google_filestore_backup", + "google_filestore_instance", + "google_filestore_snapshot", + "google_firebase_android_app", + "google_firebase_app_check_app_attest_config", + "google_firebase_app_check_debug_token", + "google_firebase_app_check_device_check_config", + "google_firebase_app_check_play_integrity_config", + "google_firebase_app_check_recaptcha_enterprise_config", + "google_firebase_app_check_recaptcha_v3_config", + "google_firebase_app_check_service_config", + "google_firebase_app_hosting_backend", + "google_firebase_app_hosting_build", + "google_firebase_app_hosting_default_domain", + "google_firebase_app_hosting_domain", + "google_firebase_app_hosting_traffic", + "google_firebase_apple_app", + "google_firebase_data_connect_service", + "google_firebase_database_instance", + "google_firebase_extensions_instance", + "google_firebase_hosting_channel", + "google_firebase_hosting_custom_domain", + "google_firebase_hosting_release", + "google_firebase_hosting_site", + "google_firebase_hosting_version", + "google_firebase_project", + "google_firebase_project_location", + "google_firebase_storage_bucket", + "google_firebase_web_app", + "google_firebaserules_release", + "google_firebaserules_ruleset", + "google_firestore_backup_schedule", + "google_firestore_database", + "google_firestore_document", + "google_firestore_field", + "google_firestore_index", + "google_firestore_user_creds", + "google_folder", + "google_folder_access_approval_settings", + "google_folder_iam_audit_config", + "google_folder_iam_binding", + "google_folder_iam_member", + "google_folder_iam_policy", + "google_folder_organization_policy", + "google_folder_service_identity", + "google_gemini_code_repository_index", + "google_gemini_code_tools_setting", + "google_gemini_code_tools_setting_binding", + "google_gemini_data_sharing_with_google_setting", + "google_gemini_data_sharing_with_google_setting_binding", + "google_gemini_gemini_gcp_enablement_setting", + "google_gemini_gemini_gcp_enablement_setting_binding", + "google_gemini_logging_setting", + "google_gemini_logging_setting_binding", + "google_gemini_release_channel_setting", + "google_gemini_release_channel_setting_binding", + "google_gemini_repository_group", + "google_gemini_repository_group_iam_binding", + "google_gemini_repository_group_iam_member", + "google_gemini_repository_group_iam_policy", + "google_gke_backup_backup_channel", + "google_gke_backup_backup_plan", + "google_gke_backup_backup_plan_iam_binding", + "google_gke_backup_backup_plan_iam_member", + "google_gke_backup_backup_plan_iam_policy", + "google_gke_backup_restore_channel", + "google_gke_backup_restore_plan", + "google_gke_backup_restore_plan_iam_binding", + "google_gke_backup_restore_plan_iam_member", + "google_gke_backup_restore_plan_iam_policy", + "google_gke_hub_feature", + "google_gke_hub_feature_iam_binding", + "google_gke_hub_feature_iam_member", + "google_gke_hub_feature_iam_policy", + "google_gke_hub_feature_membership", + "google_gke_hub_fleet", + "google_gke_hub_membership", + "google_gke_hub_membership_binding", + "google_gke_hub_membership_iam_binding", + "google_gke_hub_membership_iam_member", + "google_gke_hub_membership_iam_policy", + "google_gke_hub_membership_rbac_role_binding", + "google_gke_hub_namespace", + "google_gke_hub_scope", + "google_gke_hub_scope_iam_binding", + "google_gke_hub_scope_iam_member", + "google_gke_hub_scope_iam_policy", + "google_gke_hub_scope_rbac_role_binding", + "google_gkeonprem_bare_metal_admin_cluster", + "google_gkeonprem_bare_metal_cluster", + "google_gkeonprem_bare_metal_node_pool", + "google_gkeonprem_vmware_admin_cluster", + "google_gkeonprem_vmware_cluster", + "google_gkeonprem_vmware_node_pool", + "google_healthcare_consent_store", + "google_healthcare_consent_store_iam_binding", + "google_healthcare_consent_store_iam_member", + "google_healthcare_consent_store_iam_policy", + "google_healthcare_dataset", + "google_healthcare_dataset_iam_binding", + "google_healthcare_dataset_iam_member", + "google_healthcare_dataset_iam_policy", + "google_healthcare_dicom_store", + "google_healthcare_dicom_store_iam_binding", + "google_healthcare_dicom_store_iam_member", + "google_healthcare_dicom_store_iam_policy", + "google_healthcare_fhir_store", + "google_healthcare_fhir_store_iam_binding", + "google_healthcare_fhir_store_iam_member", + "google_healthcare_fhir_store_iam_policy", + "google_healthcare_hl7_v2_store", + "google_healthcare_hl7_v2_store_iam_binding", + "google_healthcare_hl7_v2_store_iam_member", + "google_healthcare_hl7_v2_store_iam_policy", + "google_healthcare_pipeline_job", + "google_healthcare_workspace", + "google_iam_access_boundary_policy", + "google_iam_deny_policy", + "google_iam_folders_policy_binding", + "google_iam_oauth_client", + "google_iam_oauth_client_credential", + "google_iam_organizations_policy_binding", + "google_iam_principal_access_boundary_policy", + "google_iam_projects_policy_binding", + "google_iam_workforce_pool", + "google_iam_workforce_pool_iam_binding", + "google_iam_workforce_pool_iam_member", + "google_iam_workforce_pool_iam_policy", + "google_iam_workforce_pool_provider", + "google_iam_workforce_pool_provider_key", + "google_iam_workforce_pool_provider_scim_tenant", + "google_iam_workload_identity_pool", + "google_iam_workload_identity_pool_iam_binding", + "google_iam_workload_identity_pool_iam_member", + "google_iam_workload_identity_pool_iam_policy", + "google_iam_workload_identity_pool_managed_identity", + "google_iam_workload_identity_pool_namespace", + "google_iam_workload_identity_pool_provider", + "google_iap_app_engine_service_iam_binding", + "google_iap_app_engine_service_iam_member", + "google_iap_app_engine_service_iam_policy", + "google_iap_app_engine_version_iam_binding", + "google_iap_app_engine_version_iam_member", + "google_iap_app_engine_version_iam_policy", + "google_iap_brand", + "google_iap_client", + "google_iap_settings", + "google_iap_tunnel_dest_group", + "google_iap_tunnel_dest_group_iam_binding", + "google_iap_tunnel_dest_group_iam_member", + "google_iap_tunnel_dest_group_iam_policy", + "google_iap_tunnel_iam_binding", + "google_iap_tunnel_iam_member", + "google_iap_tunnel_iam_policy", + "google_iap_tunnel_instance_iam_binding", + "google_iap_tunnel_instance_iam_member", + "google_iap_tunnel_instance_iam_policy", + "google_iap_web_backend_service_iam_binding", + "google_iap_web_backend_service_iam_member", + "google_iap_web_backend_service_iam_policy", + "google_iap_web_cloud_run_service_iam_binding", + "google_iap_web_cloud_run_service_iam_member", + "google_iap_web_cloud_run_service_iam_policy", + "google_iap_web_forwarding_rule_service_iam_binding", + "google_iap_web_forwarding_rule_service_iam_member", + "google_iap_web_forwarding_rule_service_iam_policy", + "google_iap_web_iam_binding", + "google_iap_web_iam_member", + "google_iap_web_iam_policy", + "google_iap_web_region_backend_service_iam_binding", + "google_iap_web_region_backend_service_iam_member", + "google_iap_web_region_backend_service_iam_policy", + "google_iap_web_region_forwarding_rule_service_iam_binding", + "google_iap_web_region_forwarding_rule_service_iam_member", + "google_iap_web_region_forwarding_rule_service_iam_policy", + "google_iap_web_type_app_engine_iam_binding", + "google_iap_web_type_app_engine_iam_member", + "google_iap_web_type_app_engine_iam_policy", + "google_iap_web_type_compute_iam_binding", + "google_iap_web_type_compute_iam_member", + "google_iap_web_type_compute_iam_policy", + "google_identity_platform_config", + "google_identity_platform_default_supported_idp_config", + "google_identity_platform_inbound_saml_config", + "google_identity_platform_oauth_idp_config", + "google_identity_platform_tenant", + "google_identity_platform_tenant_default_supported_idp_config", + "google_identity_platform_tenant_inbound_saml_config", + "google_identity_platform_tenant_oauth_idp_config", + "google_integration_connectors_connection", + "google_integration_connectors_endpoint_attachment", + "google_integration_connectors_managed_zone", + "google_integrations_auth_config", + "google_integrations_client", + "google_kms_autokey_config", + "google_kms_crypto_key", + "google_kms_crypto_key_iam_binding", + "google_kms_crypto_key_iam_member", + "google_kms_crypto_key_iam_policy", + "google_kms_crypto_key_version", + "google_kms_ekm_connection", + "google_kms_ekm_connection_iam_binding", + "google_kms_ekm_connection_iam_member", + "google_kms_ekm_connection_iam_policy", + "google_kms_folder_kaj_policy_config", + "google_kms_key_handle", + "google_kms_key_ring", + "google_kms_key_ring_iam_binding", + "google_kms_key_ring_iam_member", + "google_kms_key_ring_iam_policy", + "google_kms_key_ring_import_job", + "google_kms_organization_kaj_policy_config", + "google_kms_project_kaj_policy_config", + "google_kms_secret_ciphertext", + "google_logging_billing_account_bucket_config", + "google_logging_billing_account_exclusion", + "google_logging_billing_account_sink", + "google_logging_folder_bucket_config", + "google_logging_folder_exclusion", + "google_logging_folder_settings", + "google_logging_folder_sink", + "google_logging_linked_dataset", + "google_logging_log_scope", + "google_logging_log_view", + "google_logging_log_view_iam_binding", + "google_logging_log_view_iam_member", + "google_logging_log_view_iam_policy", + "google_logging_metric", + "google_logging_organization_bucket_config", + "google_logging_organization_exclusion", + "google_logging_organization_settings", + "google_logging_organization_sink", + "google_logging_project_bucket_config", + "google_logging_project_exclusion", + "google_logging_project_sink", + "google_looker_instance", + "google_lustre_instance", + "google_managed_kafka_acl", + "google_managed_kafka_cluster", + "google_managed_kafka_connect_cluster", + "google_managed_kafka_connector", + "google_managed_kafka_topic", + "google_memcache_instance", + "google_memorystore_instance", + "google_memorystore_instance_desired_user_created_endpoints", + "google_migration_center_group", + "google_migration_center_preference_set", + "google_ml_engine_model", + "google_model_armor_floorsetting", + "google_model_armor_template", + "google_monitoring_alert_policy", + "google_monitoring_custom_service", + "google_monitoring_dashboard", + "google_monitoring_group", + "google_monitoring_metric_descriptor", + "google_monitoring_monitored_project", + "google_monitoring_notification_channel", + "google_monitoring_service", + "google_monitoring_slo", + "google_monitoring_uptime_check_config", + "google_netapp_active_directory", + "google_netapp_backup", + "google_netapp_backup_policy", + "google_netapp_backup_vault", + "google_netapp_host_group", + "google_netapp_kmsconfig", + "google_netapp_storage_pool", + "google_netapp_volume", + "google_netapp_volume_quota_rule", + "google_netapp_volume_replication", + "google_netapp_volume_snapshot", + "google_network_connectivity_group", + "google_network_connectivity_hub", + "google_network_connectivity_internal_range", + "google_network_connectivity_policy_based_route", + "google_network_connectivity_regional_endpoint", + "google_network_connectivity_service_connection_policy", + "google_network_connectivity_spoke", + "google_network_management_organization_vpc_flow_logs_config", + "google_network_management_vpc_flow_logs_config", + "google_network_security_address_group", + "google_network_security_address_group_iam_binding", + "google_network_security_address_group_iam_member", + "google_network_security_address_group_iam_policy", + "google_network_security_authorization_policy", + "google_network_security_authz_policy", + "google_network_security_backend_authentication_config", + "google_network_security_client_tls_policy", + "google_network_security_dns_threat_detector", + "google_network_security_firewall_endpoint", + "google_network_security_firewall_endpoint_association", + "google_network_security_gateway_security_policy", + "google_network_security_gateway_security_policy_rule", + "google_network_security_intercept_deployment", + "google_network_security_intercept_deployment_group", + "google_network_security_intercept_endpoint_group", + "google_network_security_intercept_endpoint_group_association", + "google_network_security_mirroring_deployment", + "google_network_security_mirroring_deployment_group", + "google_network_security_mirroring_endpoint", + "google_network_security_mirroring_endpoint_group", + "google_network_security_mirroring_endpoint_group_association", + "google_network_security_security_profile", + "google_network_security_security_profile_group", + "google_network_security_server_tls_policy", + "google_network_security_tls_inspection_policy", + "google_network_security_url_lists", + "google_network_services_authz_extension", + "google_network_services_edge_cache_keyset", + "google_network_services_edge_cache_origin", + "google_network_services_edge_cache_service", + "google_network_services_endpoint_policy", + "google_network_services_gateway", + "google_network_services_grpc_route", + "google_network_services_http_route", + "google_network_services_lb_route_extension", + "google_network_services_lb_traffic_extension", + "google_network_services_mesh", + "google_network_services_multicast_domain", + "google_network_services_service_binding", + "google_network_services_service_lb_policies", + "google_network_services_tcp_route", + "google_network_services_tls_route", + "google_network_services_wasm_plugin", + "google_notebooks_environment", + "google_notebooks_instance", + "google_notebooks_instance_iam_binding", + "google_notebooks_instance_iam_member", + "google_notebooks_instance_iam_policy", + "google_notebooks_runtime", + "google_notebooks_runtime_iam_binding", + "google_notebooks_runtime_iam_member", + "google_notebooks_runtime_iam_policy", + "google_observability_trace_scope", + "google_oracle_database_autonomous_database", + "google_oracle_database_cloud_exadata_infrastructure", + "google_oracle_database_cloud_vm_cluster", + "google_oracle_database_db_system", + "google_oracle_database_exascale_db_storage_vault", + "google_oracle_database_odb_network", + "google_oracle_database_odb_subnet", + "google_org_policy_custom_constraint", + "google_org_policy_policy", + "google_organization_access_approval_settings", + "google_organization_iam_audit_config", + "google_organization_iam_binding", + "google_organization_iam_custom_role", + "google_organization_iam_member", + "google_organization_iam_policy", + "google_organization_policy", + "google_os_config_guest_policies", + "google_os_config_os_policy_assignment", + "google_os_config_patch_deployment", + "google_os_config_v2_policy_orchestrator", + "google_os_config_v2_policy_orchestrator_for_folder", + "google_os_config_v2_policy_orchestrator_for_organization", + "google_os_login_ssh_public_key", + "google_parallelstore_instance", + "google_parameter_manager_parameter", + "google_parameter_manager_parameter_version", + "google_parameter_manager_regional_parameter", + "google_parameter_manager_regional_parameter_version", + "google_privateca_ca_pool", + "google_privateca_ca_pool_iam_binding", + "google_privateca_ca_pool_iam_member", + "google_privateca_ca_pool_iam_policy", + "google_privateca_certificate", + "google_privateca_certificate_authority", + "google_privateca_certificate_template", + "google_privateca_certificate_template_iam_binding", + "google_privateca_certificate_template_iam_member", + "google_privateca_certificate_template_iam_policy", + "google_privileged_access_manager_entitlement", + "google_privileged_access_manager_settings", + "google_project", + "google_project_access_approval_settings", + "google_project_default_service_accounts", + "google_project_iam_audit_config", + "google_project_iam_binding", + "google_project_iam_custom_role", + "google_project_iam_member", + "google_project_iam_member_remove", + "google_project_iam_policy", + "google_project_organization_policy", + "google_project_service", + "google_project_service_identity", + "google_project_services", + "google_project_usage_export_bucket", + "google_public_ca_external_account_key", + "google_pubsub_lite_reservation", + "google_pubsub_lite_subscription", + "google_pubsub_lite_topic", + "google_pubsub_schema", + "google_pubsub_schema_iam_binding", + "google_pubsub_schema_iam_member", + "google_pubsub_schema_iam_policy", + "google_pubsub_subscription", + "google_pubsub_subscription_iam_binding", + "google_pubsub_subscription_iam_member", + "google_pubsub_subscription_iam_policy", + "google_pubsub_topic", + "google_pubsub_topic_iam_binding", + "google_pubsub_topic_iam_member", + "google_pubsub_topic_iam_policy", + "google_recaptcha_enterprise_key", + "google_redis_cluster", + "google_redis_cluster_user_created_connections", + "google_redis_instance", + "google_resource_manager_capability", + "google_resource_manager_lien", + "google_runtimeconfig_config", + "google_runtimeconfig_config_iam_binding", + "google_runtimeconfig_config_iam_member", + "google_runtimeconfig_config_iam_policy", + "google_runtimeconfig_variable", + "google_saas_runtime_release", + "google_saas_runtime_rollout_kind", + "google_saas_runtime_saas", + "google_saas_runtime_tenant", + "google_saas_runtime_unit", + "google_saas_runtime_unit_kind", + "google_scc_event_threat_detection_custom_module", + "google_scc_folder_custom_module", + "google_scc_folder_notification_config", + "google_scc_folder_scc_big_query_export", + "google_scc_management_folder_security_health_analytics_custom_module", + "google_scc_management_organization_event_threat_detection_custom_module", + "google_scc_management_organization_security_health_analytics_custom_module", + "google_scc_management_project_security_health_analytics_custom_module", + "google_scc_mute_config", + "google_scc_notification_config", + "google_scc_organization_custom_module", + "google_scc_organization_scc_big_query_export", + "google_scc_project_custom_module", + "google_scc_project_notification_config", + "google_scc_project_scc_big_query_export", + "google_scc_source", + "google_scc_source_iam_binding", + "google_scc_source_iam_member", + "google_scc_source_iam_policy", + "google_scc_v2_folder_mute_config", + "google_scc_v2_folder_notification_config", + "google_scc_v2_folder_scc_big_query_export", + "google_scc_v2_organization_mute_config", + "google_scc_v2_organization_notification_config", + "google_scc_v2_organization_scc_big_query_export", + "google_scc_v2_organization_scc_big_query_exports", + "google_scc_v2_organization_source_iam_binding", + "google_scc_v2_organization_source_iam_member", + "google_scc_v2_organization_source_iam_policy", + "google_scc_v2_project_mute_config", + "google_scc_v2_project_notification_config", + "google_scc_v2_project_scc_big_query_export", + "google_secret_manager_regional_secret", + "google_secret_manager_regional_secret_iam_binding", + "google_secret_manager_regional_secret_iam_member", + "google_secret_manager_regional_secret_iam_policy", + "google_secret_manager_regional_secret_version", + "google_secret_manager_secret", + "google_secret_manager_secret_iam_binding", + "google_secret_manager_secret_iam_member", + "google_secret_manager_secret_iam_policy", + "google_secret_manager_secret_version", + "google_secure_source_manager_branch_rule", + "google_secure_source_manager_hook", + "google_secure_source_manager_instance", + "google_secure_source_manager_instance_iam_binding", + "google_secure_source_manager_instance_iam_member", + "google_secure_source_manager_instance_iam_policy", + "google_secure_source_manager_repository", + "google_secure_source_manager_repository_iam_binding", + "google_secure_source_manager_repository_iam_member", + "google_secure_source_manager_repository_iam_policy", + "google_security_scanner_scan_config", + "google_securityposture_posture", + "google_service_account", + "google_service_account_iam_binding", + "google_service_account_iam_member", + "google_service_account_iam_policy", + "google_service_account_key", + "google_service_directory_endpoint", + "google_service_directory_namespace", + "google_service_directory_namespace_iam_binding", + "google_service_directory_namespace_iam_member", + "google_service_directory_namespace_iam_policy", + "google_service_directory_service", + "google_service_directory_service_iam_binding", + "google_service_directory_service_iam_member", + "google_service_directory_service_iam_policy", + "google_service_networking_connection", + "google_service_networking_peered_dns_domain", + "google_service_networking_vpc_service_controls", + "google_service_usage_consumer_quota_override", + "google_site_verification_owner", + "google_site_verification_web_resource", + "google_sourcerepo_repository", + "google_sourcerepo_repository_iam_binding", + "google_sourcerepo_repository_iam_member", + "google_sourcerepo_repository_iam_policy", + "google_spanner_backup_schedule", + "google_spanner_database", + "google_spanner_database_iam_binding", + "google_spanner_database_iam_member", + "google_spanner_database_iam_policy", + "google_spanner_instance", + "google_spanner_instance_config", + "google_spanner_instance_iam_binding", + "google_spanner_instance_iam_member", + "google_spanner_instance_iam_policy", + "google_spanner_instance_partition", + "google_sql_database", + "google_sql_database_instance", + "google_sql_source_representation_instance", + "google_sql_ssl_cert", + "google_sql_user", + "google_storage_anywhere_cache", + "google_storage_batch_operations_job", + "google_storage_bucket", + "google_storage_bucket_access_control", + "google_storage_bucket_acl", + "google_storage_bucket_iam_binding", + "google_storage_bucket_iam_member", + "google_storage_bucket_iam_policy", + "google_storage_bucket_object", + "google_storage_control_folder_intelligence_config", + "google_storage_control_organization_intelligence_config", + "google_storage_control_project_intelligence_config", + "google_storage_default_object_access_control", + "google_storage_default_object_acl", + "google_storage_folder", + "google_storage_hmac_key", + "google_storage_insights_dataset_config", + "google_storage_insights_report_config", + "google_storage_managed_folder", + "google_storage_managed_folder_iam_binding", + "google_storage_managed_folder_iam_member", + "google_storage_managed_folder_iam_policy", + "google_storage_notification", + "google_storage_object_access_control", + "google_storage_object_acl", + "google_storage_transfer_agent_pool", + "google_storage_transfer_job", + "google_tags_location_tag_binding", + "google_tags_tag_binding", + "google_tags_tag_key", + "google_tags_tag_key_iam_binding", + "google_tags_tag_key_iam_member", + "google_tags_tag_key_iam_policy", + "google_tags_tag_value", + "google_tags_tag_value_iam_binding", + "google_tags_tag_value_iam_member", + "google_tags_tag_value_iam_policy", + "google_tpu_node", + "google_tpu_v2_queued_resource", + "google_tpu_v2_vm", + "google_transcoder_job", + "google_transcoder_job_template", + "google_vertex_ai_cache_config", + "google_vertex_ai_dataset", + "google_vertex_ai_deployment_resource_pool", + "google_vertex_ai_endpoint", + "google_vertex_ai_endpoint_iam_binding", + "google_vertex_ai_endpoint_iam_member", + "google_vertex_ai_endpoint_iam_policy", + "google_vertex_ai_endpoint_with_model_garden_deployment", + "google_vertex_ai_feature_group", + "google_vertex_ai_feature_group_feature", + "google_vertex_ai_feature_group_iam_binding", + "google_vertex_ai_feature_group_iam_member", + "google_vertex_ai_feature_group_iam_policy", + "google_vertex_ai_feature_online_store", + "google_vertex_ai_feature_online_store_featureview", + "google_vertex_ai_feature_online_store_featureview_iam_binding", + "google_vertex_ai_feature_online_store_featureview_iam_member", + "google_vertex_ai_feature_online_store_featureview_iam_policy", + "google_vertex_ai_feature_online_store_iam_binding", + "google_vertex_ai_feature_online_store_iam_member", + "google_vertex_ai_feature_online_store_iam_policy", + "google_vertex_ai_featurestore", + "google_vertex_ai_featurestore_entitytype", + "google_vertex_ai_featurestore_entitytype_feature", + "google_vertex_ai_featurestore_entitytype_iam_binding", + "google_vertex_ai_featurestore_entitytype_iam_member", + "google_vertex_ai_featurestore_entitytype_iam_policy", + "google_vertex_ai_featurestore_iam_binding", + "google_vertex_ai_featurestore_iam_member", + "google_vertex_ai_featurestore_iam_policy", + "google_vertex_ai_index", + "google_vertex_ai_index_endpoint", + "google_vertex_ai_index_endpoint_deployed_index", + "google_vertex_ai_metadata_store", + "google_vertex_ai_rag_engine_config", + "google_vertex_ai_reasoning_engine", + "google_vertex_ai_tensorboard", + "google_vmwareengine_cluster", + "google_vmwareengine_external_access_rule", + "google_vmwareengine_external_address", + "google_vmwareengine_network", + "google_vmwareengine_network_peering", + "google_vmwareengine_network_policy", + "google_vmwareengine_private_cloud", + "google_vmwareengine_subnet", + "google_vpc_access_connector", + "google_workbench_instance", + "google_workbench_instance_iam_binding", + "google_workbench_instance_iam_member", + "google_workbench_instance_iam_policy", + "google_workflows_workflow", + "google_workstations_workstation", + "google_workstations_workstation_cluster", + "google_workstations_workstation_config", + "google_workstations_workstation_config_iam_binding", + "google_workstations_workstation_config_iam_member", + "google_workstations_workstation_config_iam_policy", + "google_workstations_workstation_iam_binding", + "google_workstations_workstation_iam_member", + "google_workstations_workstation_iam_policy" + ], + "dataSources": [ + "google_access_approval_folder_service_account", + "google_access_approval_organization_service_account", + "google_access_approval_project_service_account", + "google_access_context_manager_access_policy", + "google_access_context_manager_access_policy_iam_policy", + "google_active_folder", + "google_alloydb_cluster", + "google_alloydb_instance", + "google_alloydb_locations", + "google_alloydb_supported_database_flags", + "google_api_gateway_api_config_iam_policy", + "google_api_gateway_api_iam_policy", + "google_api_gateway_gateway_iam_policy", + "google_apigee_environment_iam_policy", + "google_app_engine_default_service_account", + "google_apphub_application", + "google_apphub_discovered_service", + "google_apphub_discovered_workload", + "google_artifact_registry_docker_image", + "google_artifact_registry_docker_images", + "google_artifact_registry_locations", + "google_artifact_registry_maven_artifact", + "google_artifact_registry_maven_artifacts", + "google_artifact_registry_npm_package", + "google_artifact_registry_npm_packages", + "google_artifact_registry_packages", + "google_artifact_registry_python_package", + "google_artifact_registry_python_packages", + "google_artifact_registry_repositories", + "google_artifact_registry_repository", + "google_artifact_registry_repository_iam_policy", + "google_artifact_registry_tags", + "google_artifact_registry_versions", + "google_backup_dr_backup", + "google_backup_dr_backup_plan_association", + "google_backup_dr_backup_plan_associations", + "google_backup_dr_backup_vault", + "google_backup_dr_data_source", + "google_backup_dr_data_source_reference", + "google_backup_dr_data_source_references", + "google_beyondcorp_app_connection", + "google_beyondcorp_app_connector", + "google_beyondcorp_app_gateway", + "google_beyondcorp_security_gateway", + "google_beyondcorp_security_gateway_application_iam_policy", + "google_beyondcorp_security_gateway_iam_policy", + "google_bigquery_analytics_hub_data_exchange_iam_policy", + "google_bigquery_analytics_hub_listing_iam_policy", + "google_bigquery_connection_iam_policy", + "google_bigquery_datapolicy_data_policy_iam_policy", + "google_bigquery_datapolicyv2_data_policy_iam_policy", + "google_bigquery_dataset", + "google_bigquery_dataset_iam_policy", + "google_bigquery_datasets", + "google_bigquery_default_service_account", + "google_bigquery_table", + "google_bigquery_table_iam_policy", + "google_bigquery_tables", + "google_bigtable_instance_iam_policy", + "google_bigtable_table_iam_policy", + "google_billing_account", + "google_billing_account_iam_policy", + "google_binary_authorization_attestor_iam_policy", + "google_certificate_manager_certificate_map", + "google_certificate_manager_certificates", + "google_certificate_manager_dns_authorization", + "google_client_config", + "google_client_openid_userinfo", + "google_cloud_identity_group_lookup", + "google_cloud_identity_group_memberships", + "google_cloud_identity_group_transitive_memberships", + "google_cloud_identity_groups", + "google_cloud_identity_policy", + "google_cloud_quotas_quota_info", + "google_cloud_quotas_quota_infos", + "google_cloud_run_locations", + "google_cloud_run_service", + "google_cloud_run_service_iam_policy", + "google_cloud_run_v2_job", + "google_cloud_run_v2_job_iam_policy", + "google_cloud_run_v2_service", + "google_cloud_run_v2_service_iam_policy", + "google_cloud_run_v2_worker_pool", + "google_cloud_run_v2_worker_pool_iam_policy", + "google_cloud_tasks_queue_iam_policy", + "google_cloudbuild_trigger", + "google_cloudbuildv2_connection_iam_policy", + "google_clouddeploy_custom_target_type_iam_policy", + "google_clouddeploy_delivery_pipeline_iam_policy", + "google_clouddeploy_target_iam_policy", + "google_cloudfunctions2_function", + "google_cloudfunctions2_function_iam_policy", + "google_cloudfunctions_function", + "google_cloudfunctions_function_iam_policy", + "google_colab_runtime_template_iam_policy", + "google_composer_environment", + "google_composer_image_versions", + "google_composer_user_workloads_config_map", + "google_composer_user_workloads_secret", + "google_compute_address", + "google_compute_addresses", + "google_compute_backend_bucket", + "google_compute_backend_bucket_iam_policy", + "google_compute_backend_service", + "google_compute_backend_service_iam_policy", + "google_compute_default_service_account", + "google_compute_disk", + "google_compute_disk_iam_policy", + "google_compute_forwarding_rule", + "google_compute_forwarding_rules", + "google_compute_global_address", + "google_compute_global_forwarding_rule", + "google_compute_ha_vpn_gateway", + "google_compute_health_check", + "google_compute_image", + "google_compute_image_iam_policy", + "google_compute_images", + "google_compute_instance", + "google_compute_instance_group", + "google_compute_instance_group_manager", + "google_compute_instance_guest_attributes", + "google_compute_instance_iam_policy", + "google_compute_instance_serial_port", + "google_compute_instance_template", + "google_compute_instance_template_iam_policy", + "google_compute_instant_snapshot_iam_policy", + "google_compute_interconnect_location", + "google_compute_interconnect_locations", + "google_compute_lb_ip_ranges", + "google_compute_machine_image_iam_policy", + "google_compute_machine_types", + "google_compute_network", + "google_compute_network_attachment", + "google_compute_network_endpoint_group", + "google_compute_network_peering", + "google_compute_networks", + "google_compute_node_types", + "google_compute_region_backend_service", + "google_compute_region_backend_service_iam_policy", + "google_compute_region_disk", + "google_compute_region_disk_iam_policy", + "google_compute_region_instance_group", + "google_compute_region_instance_group_manager", + "google_compute_region_instance_template", + "google_compute_region_network_endpoint_group", + "google_compute_region_ssl_certificate", + "google_compute_regions", + "google_compute_reservation", + "google_compute_reservation_block", + "google_compute_reservation_sub_block", + "google_compute_resource_policy", + "google_compute_router", + "google_compute_router_nat", + "google_compute_router_status", + "google_compute_security_policy", + "google_compute_snapshot", + "google_compute_snapshot_iam_policy", + "google_compute_ssl_certificate", + "google_compute_ssl_policy", + "google_compute_storage_pool_iam_policy", + "google_compute_storage_pool_types", + "google_compute_subnetwork", + "google_compute_subnetwork_iam_policy", + "google_compute_subnetworks", + "google_compute_vpn_gateway", + "google_compute_zones", + "google_container_analysis_note_iam_policy", + "google_container_attached_install_manifest", + "google_container_attached_versions", + "google_container_aws_versions", + "google_container_azure_versions", + "google_container_cluster", + "google_container_engine_versions", + "google_container_registry_image", + "google_container_registry_repository", + "google_data_catalog_entry_group_iam_policy", + "google_data_catalog_policy_tag_iam_policy", + "google_data_catalog_tag_template_iam_policy", + "google_data_catalog_taxonomy_iam_policy", + "google_data_fusion_instance_iam_policy", + "google_dataform_repository_iam_policy", + "google_dataplex_aspect_type_iam_policy", + "google_dataplex_asset_iam_policy", + "google_dataplex_data_quality_rules", + "google_dataplex_datascan_iam_policy", + "google_dataplex_entry_group_iam_policy", + "google_dataplex_entry_type_iam_policy", + "google_dataplex_glossary_iam_policy", + "google_dataplex_lake_iam_policy", + "google_dataplex_task_iam_policy", + "google_dataplex_zone_iam_policy", + "google_dataproc_autoscaling_policy_iam_policy", + "google_dataproc_cluster_iam_policy", + "google_dataproc_job_iam_policy", + "google_dataproc_metastore_database_iam_policy", + "google_dataproc_metastore_federation_iam_policy", + "google_dataproc_metastore_service", + "google_dataproc_metastore_service_iam_policy", + "google_dataproc_metastore_table_iam_policy", + "google_datastream_static_ips", + "google_dns_keys", + "google_dns_managed_zone", + "google_dns_managed_zone_iam_policy", + "google_dns_managed_zones", + "google_dns_record_set", + "google_endpoints_service_consumers_iam_policy", + "google_endpoints_service_iam_policy", + "google_filestore_instance", + "google_firebase_web_app_config", + "google_folder", + "google_folder_iam_policy", + "google_folder_organization_policy", + "google_folders", + "google_gemini_repository_group_iam_policy", + "google_gke_backup_backup_plan_iam_policy", + "google_gke_backup_restore_plan_iam_policy", + "google_gke_hub_feature", + "google_gke_hub_feature_iam_policy", + "google_gke_hub_membership", + "google_gke_hub_membership_iam_policy", + "google_gke_hub_scope_iam_policy", + "google_healthcare_consent_store_iam_policy", + "google_healthcare_dataset_iam_policy", + "google_healthcare_dicom_store_iam_policy", + "google_healthcare_fhir_store_iam_policy", + "google_healthcare_hl7_v2_store_iam_policy", + "google_iam_policy", + "google_iam_role", + "google_iam_workforce_pool_iam_policy", + "google_iam_workload_identity_pool", + "google_iam_workload_identity_pool_iam_policy", + "google_iam_workload_identity_pool_provider", + "google_iap_app_engine_service_iam_policy", + "google_iap_app_engine_version_iam_policy", + "google_iap_client", + "google_iap_tunnel_dest_group_iam_policy", + "google_iap_tunnel_iam_policy", + "google_iap_tunnel_instance_iam_policy", + "google_iap_web_backend_service_iam_policy", + "google_iap_web_cloud_run_service_iam_policy", + "google_iap_web_forwarding_rule_service_iam_policy", + "google_iap_web_iam_policy", + "google_iap_web_region_backend_service_iam_policy", + "google_iap_web_region_forwarding_rule_service_iam_policy", + "google_iap_web_type_app_engine_iam_policy", + "google_iap_web_type_compute_iam_policy", + "google_kms_autokey_config", + "google_kms_crypto_key", + "google_kms_crypto_key_iam_policy", + "google_kms_crypto_key_latest_version", + "google_kms_crypto_key_version", + "google_kms_crypto_key_versions", + "google_kms_crypto_keys", + "google_kms_ekm_connection_iam_policy", + "google_kms_key_handle", + "google_kms_key_handles", + "google_kms_key_ring", + "google_kms_key_ring_iam_policy", + "google_kms_key_rings", + "google_kms_secret", + "google_kms_secret_asymmetric", + "google_kms_secret_ciphertext", + "google_logging_folder_settings", + "google_logging_log_view_iam_policy", + "google_logging_organization_settings", + "google_logging_project_cmek_settings", + "google_logging_project_settings", + "google_lustre_instance", + "google_memcache_instance", + "google_memorystore_instance", + "google_monitoring_app_engine_service", + "google_monitoring_cluster_istio_service", + "google_monitoring_istio_canonical_service", + "google_monitoring_mesh_istio_service", + "google_monitoring_notification_channel", + "google_monitoring_uptime_check_ips", + "google_netblock_ip_ranges", + "google_network_security_address_group_iam_policy", + "google_notebooks_instance_iam_policy", + "google_notebooks_runtime_iam_policy", + "google_oracle_database_autonomous_database", + "google_oracle_database_autonomous_databases", + "google_oracle_database_cloud_exadata_infrastructure", + "google_oracle_database_cloud_exadata_infrastructures", + "google_oracle_database_cloud_vm_cluster", + "google_oracle_database_cloud_vm_clusters", + "google_oracle_database_db_nodes", + "google_oracle_database_db_servers", + "google_organization", + "google_organization_iam_custom_role", + "google_organization_iam_custom_roles", + "google_organization_iam_policy", + "google_organizations", + "google_parameter_manager_parameter", + "google_parameter_manager_parameter_version", + "google_parameter_manager_parameter_version_render", + "google_parameter_manager_parameters", + "google_parameter_manager_regional_parameter", + "google_parameter_manager_regional_parameter_version", + "google_parameter_manager_regional_parameter_version_render", + "google_parameter_manager_regional_parameters", + "google_privateca_ca_pool_iam_policy", + "google_privateca_certificate_authority", + "google_privateca_certificate_template_iam_policy", + "google_privileged_access_manager_entitlement", + "google_project", + "google_project_ancestry", + "google_project_iam_custom_role", + "google_project_iam_custom_roles", + "google_project_iam_policy", + "google_project_organization_policy", + "google_project_service", + "google_projects", + "google_pubsub_schema_iam_policy", + "google_pubsub_subscription", + "google_pubsub_subscription_iam_policy", + "google_pubsub_topic", + "google_pubsub_topic_iam_policy", + "google_redis_cluster", + "google_redis_instance", + "google_runtimeconfig_config", + "google_runtimeconfig_config_iam_policy", + "google_runtimeconfig_variable", + "google_scc_source_iam_policy", + "google_scc_v2_organization_source_iam_policy", + "google_secret_manager_regional_secret", + "google_secret_manager_regional_secret_iam_policy", + "google_secret_manager_regional_secret_version", + "google_secret_manager_regional_secret_version_access", + "google_secret_manager_regional_secrets", + "google_secret_manager_secret", + "google_secret_manager_secret_iam_policy", + "google_secret_manager_secret_version", + "google_secret_manager_secret_version_access", + "google_secret_manager_secrets", + "google_secure_source_manager_instance_iam_policy", + "google_secure_source_manager_repository_iam_policy", + "google_service_account", + "google_service_account_access_token", + "google_service_account_iam_policy", + "google_service_account_id_token", + "google_service_account_jwt", + "google_service_account_key", + "google_service_accounts", + "google_service_directory_namespace_iam_policy", + "google_service_directory_service_iam_policy", + "google_site_verification_token", + "google_sourcerepo_repository", + "google_sourcerepo_repository_iam_policy", + "google_spanner_database", + "google_spanner_database_iam_policy", + "google_spanner_instance", + "google_spanner_instance_iam_policy", + "google_sql_backup_run", + "google_sql_ca_certs", + "google_sql_database", + "google_sql_database_instance", + "google_sql_database_instance_latest_recovery_time", + "google_sql_database_instances", + "google_sql_databases", + "google_sql_tiers", + "google_storage_bucket", + "google_storage_bucket_iam_policy", + "google_storage_bucket_object", + "google_storage_bucket_object_content", + "google_storage_bucket_objects", + "google_storage_buckets", + "google_storage_control_folder_intelligence_config", + "google_storage_control_organization_intelligence_config", + "google_storage_control_project_intelligence_config", + "google_storage_insights_dataset_config", + "google_storage_object_signed_url", + "google_storage_project_service_account", + "google_storage_transfer_project_service_account", + "google_tags_tag_key", + "google_tags_tag_key_iam_policy", + "google_tags_tag_keys", + "google_tags_tag_value", + "google_tags_tag_value_iam_policy", + "google_tags_tag_values", + "google_tpu_tensorflow_versions", + "google_tpu_v2_accelerator_types", + "google_tpu_v2_runtime_versions", + "google_vertex_ai_endpoint_iam_policy", + "google_vertex_ai_feature_group_iam_policy", + "google_vertex_ai_feature_online_store_featureview_iam_policy", + "google_vertex_ai_feature_online_store_iam_policy", + "google_vertex_ai_featurestore_entitytype_iam_policy", + "google_vertex_ai_featurestore_iam_policy", + "google_vmwareengine_cluster", + "google_vmwareengine_external_access_rule", + "google_vmwareengine_external_address", + "google_vmwareengine_network", + "google_vmwareengine_network_peering", + "google_vmwareengine_network_policy", + "google_vmwareengine_nsx_credentials", + "google_vmwareengine_private_cloud", + "google_vmwareengine_subnet", + "google_vmwareengine_vcenter_credentials", + "google_vpc_access_connector", + "google_workbench_instance_iam_policy", + "google_workstations_workstation_config_iam_policy", + "google_workstations_workstation_iam_policy" + ] +} \ No newline at end of file diff --git a/src/policy.go b/src/policy.go index 504a1a21..71f407a8 100644 --- a/src/policy.go +++ b/src/policy.go @@ -93,7 +93,7 @@ func NewAWSPolicy(actions []string, resources bool) (Policy, error) { } // GetPolicy creates new iam polices from a list of Permissions. -func GetPolicy(actions Sorted, resources bool) (OutputPolicy, error) { +func GetPolicy(actions Sorted, resources bool, policyName string) (OutputPolicy, error) { var ( OutPolicy OutputPolicy Empty bool @@ -119,7 +119,7 @@ func GetPolicy(actions Sorted, resources bool) (OutputPolicy, error) { Empty = false // dedupe AWSPermissions := Unique(actions.AWS) - OutPolicy.AWS, err = AWSPolicy(AWSPermissions, resources) + OutPolicy.AWS, err = AWSPolicy(AWSPermissions, resources, policyName) if err != nil { log.Error().Err(err) @@ -135,7 +135,7 @@ func GetPolicy(actions Sorted, resources bool) (OutputPolicy, error) { Empty = false // dedupe GCPPermissions := Unique(actions.GCP) - OutPolicy.GCP, err = GCPPolicy(GCPPermissions) + OutPolicy.GCP, err = GCPPolicy(GCPPermissions, policyName) if err != nil { log.Error().Err(err) @@ -151,7 +151,7 @@ func GetPolicy(actions Sorted, resources bool) (OutputPolicy, error) { Empty = false // dedupe AZUREPermissions := Unique(actions.AZURE) - OutPolicy.AZURE, err = AZUREPolicy(AZUREPermissions, defaultPolicyName) + OutPolicy.AZURE, err = AZUREPolicy(AZUREPermissions, policyName) if err != nil { log.Error().Err(err) @@ -169,7 +169,7 @@ func GetPolicy(actions Sorted, resources bool) (OutputPolicy, error) { } // AWSPolicy create an IAM policy. -func AWSPolicy(permissions []string, resources bool) (AwsOutput, error) { +func AWSPolicy(permissions []string, resources bool, policyName string) (AwsOutput, error) { var OutPolicy AwsOutput Policy, err := NewAWSPolicy(permissions, resources) @@ -184,7 +184,13 @@ func AWSPolicy(permissions []string, resources bool) (AwsOutput, error) { return OutPolicy, &marshallAWSPolicyError{err} } - theDetails := policyDetails{string(indent), defaultPolicyName, "/", "Pike Autogenerated policy from IAC"} + var theDetails policyDetails + + if policyName != "" { + theDetails = policyDetails{string(indent), policyName, "/", "Pike Autogenerated policy from IAC"} + } else { + theDetails = policyDetails{string(indent), defaultPolicyName, "/", "Pike Autogenerated policy from IAC"} + } var output bytes.Buffer @@ -222,3 +228,11 @@ func Unique(s []string) []string { return result } + +func Minify(JSONOut string) string { + return strings.ReplaceAll( + strings.ReplaceAll( + strings.ReplaceAll( + strings.ReplaceAll( + strings.ReplaceAll(JSONOut, "\n", ""), " ", ""), " ", ""), "\r", ""), "\t", "") +} diff --git a/src/policy_test.go b/src/policy_test.go index eee2da24..5f490211 100644 --- a/src/policy_test.go +++ b/src/policy_test.go @@ -1,12 +1,9 @@ -package pike_test +package pike import ( _ "embed" "reflect" - "strings" "testing" - - pike "github.com/jameswoolfenden/pike/src" ) func TestNewAWSPolicy(t *testing.T) { @@ -19,7 +16,7 @@ func TestNewAWSPolicy(t *testing.T) { tests := []struct { name string args args - want pike.Policy + want Policy wantErr bool }{ { @@ -44,9 +41,9 @@ func TestNewAWSPolicy(t *testing.T) { "s3:GetReplicationConfiguration", "s3:ListBucket", }}, - pike.Policy{ + Policy{ Version: "2012-10-17", - Statements: []pike.Statement{ + Statements: []Statement{ {"VisualEditor0", "Allow", []string{ "s3:CreateBucket", "s3:DeleteBucket", @@ -78,7 +75,7 @@ func TestNewAWSPolicy(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - got, err := pike.NewAWSPolicy(tt.args.Actions, false) + got, err := NewAWSPolicy(tt.args.Actions, false) if (err != nil) != tt.wantErr { t.Errorf("NewAWSPolicy() error = %v, wantErr %v", err, tt.wantErr) @@ -97,7 +94,7 @@ func TestGetPolicy(t *testing.T) { t.Parallel() type args struct { - actions pike.Sorted + actions Sorted } tests := []struct { @@ -108,7 +105,7 @@ func TestGetPolicy(t *testing.T) { }{ { "first", - args{pike.Sorted{ + args{Sorted{ AWS: []string{}, }}, ``, @@ -116,7 +113,7 @@ func TestGetPolicy(t *testing.T) { }, { "aws", - args{pike.Sorted{AWS: []string{ + args{Sorted{AWS: []string{ "ec2:DescribeInstances", "ec2:DescribeTags", "ec2:DescribeInstanceAttribute", @@ -160,7 +157,7 @@ func TestGetPolicy(t *testing.T) { }, { "short", - args{pike.Sorted{AWS: []string{"s3:*"}}}, + args{Sorted{AWS: []string{"s3:*"}}}, `{ "Version": "2012-10-17", "Statement": [ @@ -185,7 +182,7 @@ func TestGetPolicy(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - got, err := pike.GetPolicy(tt.args.actions, false) + got, err := GetPolicy(tt.args.actions, false, "") if (err != nil) != tt.wantErr { t.Errorf("GetPolicy() error = %v, wantErr %v", err, tt.wantErr) @@ -203,14 +200,6 @@ func TestGetPolicy(t *testing.T) { } } -func Minify(JSONOut string) string { - return strings.ReplaceAll( - strings.ReplaceAll( - strings.ReplaceAll( - strings.ReplaceAll( - strings.ReplaceAll(JSONOut, "\n", ""), " ", ""), " ", ""), "\r", ""), "\t", "") -} - func TestAWSPolicy(t *testing.T) { t.Parallel() @@ -221,20 +210,20 @@ func TestAWSPolicy(t *testing.T) { tests := []struct { name string args args - want pike.AwsOutput + want AwsOutput wantErr bool }{ { "fail", args{[]string{"woof"}}, - pike.AwsOutput{}, + AwsOutput{}, true, }, - {"fail2", args{[]string{"woof", "meow:*"}}, pike.AwsOutput{}, true}, + {"fail2", args{[]string{"woof", "meow:*"}}, AwsOutput{}, true}, { "pass", args{[]string{"woof:*"}}, - pike.AwsOutput{JSONOut: `{ + AwsOutput{JSONOut: `{ "Version": "2012-10-17", "Statement": [ { @@ -258,7 +247,7 @@ func TestAWSPolicy(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - got, err := pike.AWSPolicy(tt.args.Permissions, false) + got, err := AWSPolicy(tt.args.Permissions, false, "") if (err != nil) != tt.wantErr { t.Errorf("AWSPolicy() error = %v, wantErr %v", err, tt.wantErr) @@ -293,7 +282,7 @@ func Test_unique(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - if got := pike.Unique(tt.args.s); !reflect.DeepEqual(got, tt.want) { + if got := Unique(tt.args.s); !reflect.DeepEqual(got, tt.want) { t.Errorf("Unique() = %v, want %v", got, tt.want) } }) diff --git a/src/readme.go b/src/readme.go index ae8acf6f..bafb6c8c 100644 --- a/src/readme.go +++ b/src/readme.go @@ -35,7 +35,7 @@ func Readme(dirName string, output string, init bool, autoAppend bool) error { return &fileDoesNotExistError{file, err} } - OutPolicy, err := MakePolicy(dirName, nil, init, false, "") + OutPolicy, err := MakePolicy(dirName, nil, init, false, "", "") if err != nil { log.Info().Msg("failed to make policy") diff --git a/src/repository.go b/src/repository.go index 82b72b8b..e12c314d 100644 --- a/src/repository.go +++ b/src/repository.go @@ -68,5 +68,5 @@ func Repository(repository, destination, directory, output string, init, write, return &gitCommitObjectError{repository, destination, err} } - return Scan(filepath.Join(destination, directory), output, nil, init, write, enableResources, "") + return Scan(filepath.Join(destination, directory), output, nil, init, write, enableResources, "", "", "") } diff --git a/src/repository_internal_test.go b/src/repository_internal_test.go new file mode 100644 index 00000000..78f7c580 --- /dev/null +++ b/src/repository_internal_test.go @@ -0,0 +1,175 @@ +package pike + +import ( + "errors" + "testing" +) + +func TestGitCloneError_Error(t *testing.T) { + tests := []struct { + name string + repository string + destination string + err error + expected string + }{ + { + name: "basic error message", + repository: "https://github.com/user/repo.git", + destination: "/tmp/repo", + err: errors.New("connection failed"), + expected: "failed to clone repository https://github.com/user/repo.git /tmp/repo connection failed", + }, + { + name: "empty repository", + repository: "", + destination: "/tmp/repo", + err: errors.New("invalid URL"), + expected: "failed to clone repository /tmp/repo invalid URL", + }, + { + name: "empty destination", + repository: "https://github.com/user/repo.git", + destination: "", + err: errors.New("no destination"), + expected: "failed to clone repository https://github.com/user/repo.git no destination", + }, + { + name: "nil error", + repository: "https://github.com/user/repo.git", + destination: "/tmp/repo", + err: nil, + expected: "failed to clone repository https://github.com/user/repo.git /tmp/repo ", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &gitCloneError{ + repository: tt.repository, + destination: tt.destination, + err: tt.err, + } + if got := e.Error(); got != tt.expected { + t.Errorf("gitCloneError.Error() = %v, want %v", got, tt.expected) + } + }) + } +} + +func TestGitHeadError_Error(t *testing.T) { + tests := []struct { + name string + repository string + destination string + err error + expected string + }{ + { + name: "basic error message", + repository: "https://github.com/user/repo.git", + destination: "/tmp/repo", + err: errors.New("head not found"), + expected: "failed to get head https://github.com/user/repo.git /tmp/repo head not found", + }, + { + name: "empty strings", + repository: "", + destination: "", + err: errors.New("reference error"), + expected: "failed to get head reference error", + }, + { + name: "nil error", + repository: "repo", + destination: "dest", + err: nil, + expected: "failed to get head repo dest ", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &gitHeadError{ + repository: tt.repository, + destination: tt.destination, + err: tt.err, + } + if got := e.Error(); got != tt.expected { + t.Errorf("gitHeadError.Error() = %v, want %v", got, tt.expected) + } + }) + } +} + +func TestGitCommitObjectError_Error(t *testing.T) { + tests := []struct { + name string + repository string + destination string + err error + expected string + }{ + { + name: "basic error message", + repository: "https://github.com/user/repo.git", + destination: "/tmp/repo", + err: errors.New("commit not found"), + expected: "failed to get commit object https://github.com/user/repo.git /tmp/repo commit not found", + }, + { + name: "long repository URL", + repository: "https://very-long-domain-name.example.com/organization/very-long-repository-name.git", + destination: "/very/long/path/to/destination/directory", + err: errors.New("object does not exist"), + expected: "failed to get commit object https://very-long-domain-name.example.com/organization/very-long-repository-name.git /very/long/path/to/destination/directory object does not exist", + }, + { + name: "all empty except error", + repository: "", + destination: "", + err: errors.New("some error"), + expected: "failed to get commit object some error", + }, + { + name: "nil error", + repository: "repo", + destination: "dest", + err: nil, + expected: "failed to get commit object repo dest ", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &gitCommitObjectError{ + repository: tt.repository, + destination: tt.destination, + err: tt.err, + } + if got := e.Error(); got != tt.expected { + t.Errorf("gitCommitObjectError.Error() = %v, want %v", got, tt.expected) + } + }) + } +} + +func TestErrorTypes_ImplementErrorInterface(t *testing.T) { + var err error + + // Test that all error types implement the error interface + err = &gitCloneError{repository: "repo", destination: "dest", err: errors.New("test")} + if err.Error() == "" { + t.Error("gitCloneError should implement error interface") + } + + err = &gitHeadError{repository: "repo", destination: "dest", err: errors.New("test")} + if err.Error() == "" { + t.Error("gitHeadError should implement error interface") + } + + err = &gitCommitObjectError{repository: "repo", destination: "dest", err: errors.New("test")} + if err.Error() == "" { + t.Error("gitCommitObjectError should implement error interface") + } +} diff --git a/src/scan.go b/src/scan.go index f950b717..6b6d9515 100644 --- a/src/scan.go +++ b/src/scan.go @@ -2,12 +2,15 @@ package pike import ( "context" + "errors" "fmt" "os" "os/exec" "path" "path/filepath" "strings" + "sync" + "time" "github.com/hashicorp/go-version" "github.com/hashicorp/hc-install/product" @@ -18,7 +21,16 @@ import ( const tfVersion = "1.5.4" -var dotTfModules = path.Join(".terraform", "modules") +const ( + modulesJSON = "modules.json" + dsStore = ".DS_Store" + dotTfModules = ".terraform/modules" +) + +var ( + terraformMutex sync.Mutex + initMutex sync.Map // per-directory mutex +) type emptyIACError struct{} @@ -109,90 +121,111 @@ func (m *getPolicyError) Error() string { } // Scan looks for resources in a given directory. -func Scan(dirName string, output string, file *string, init bool, write bool, enableResources bool, provider string) error { +func Scan(dirName string, outputType string, file *string, init bool, write bool, enableResources bool, provider string, outFile string, policyName string) error { if dirName == "" && file == nil { return &emptyScanLocationError{} } - OutPolicy, err := MakePolicy(dirName, file, init, enableResources, provider) + OutPolicy, err := MakePolicy(dirName, file, init, enableResources, provider, policyName) if err != nil { + fmt.Print(err.Error()) return &makePolicyError{err} } if write { - err = WriteOutput(OutPolicy, output, dirName) + err = WriteOutput(OutPolicy, outputType, dirName, outFile) if err != nil { - return &writeFileError{file: output, err: err} + return &writeFileError{file: outputType, err: err} } } else { - fmt.Print(OutPolicy.AsString(output)) // permit + fmt.Print(OutPolicy.AsString(outputType)) // permit } return err } -// WriteOutput writes out the policy as json or terraform. -func WriteOutput(outPolicy OutputPolicy, output, location string) error { - if location == "" { - location = "." - } +// WriteOutput writes out the policy as JSON or Terraform. +func WriteOutput(outPolicy OutputPolicy, outputType string, scanPath string, outFile string) error { - newPath, _ := filepath.Abs(location + "/.pike") - err := os.MkdirAll(newPath, os.ModePerm) + var newPath string - if err != nil { - return &makeDirectoryError{directory: newPath, err: err} - } + d1 := []byte(outPolicy.AsString(outputType)) - var outFile string + if outFile != "" { - d1 := []byte(outPolicy.AsString(output)) + } else { + if scanPath == "" { + scanPath = "." + } + newPath, _ = filepath.Abs(path.Join(scanPath, ".pike")) - switch strings.ToLower(output) { - case terraform: - outFile = newPath + "/pike.generated_policy.tf" + err := os.MkdirAll(newPath, os.ModePerm) - if outPolicy.AWS.Terraform != "" { - roleFile := path.Join(newPath, "aws_iam_role.terraform_pike.tf") - err = os.WriteFile(roleFile, roleTemplate, 0o644) + if err != nil { + return &makeDirectoryError{directory: newPath, err: err} + } - if err != nil { - return &writeFileError{file: roleFile, err: err} + switch strings.ToLower(outputType) { + case terraform: + outFile = filepath.Join(newPath, "pike.generated_policy.tf") //path.join does not work here + + if outPolicy.AWS.Terraform != "" { + roleFile := path.Join(newPath, "aws_iam_role.terraform_pike.tf") + err = os.WriteFile(roleFile, roleTemplate, 0o644) + + if err != nil { + return &writeFileError{file: roleFile, err: err} + } } - } - case "json": - outFile = newPath + "/pike.generated_policy.json" - default: - return &tfPolicyFormatError{} + case "json": + outFile = path.Join(newPath, "pike.generated_policy.json") + default: + return &tfPolicyFormatError{} + } } - err = os.WriteFile(outFile, d1, 0o644) + err := os.WriteFile(outFile, d1, 0o644) if err != nil { return &writeFileError{file: outFile, err: err} } + log.Info().Msgf("wrote %s", outFile) + return nil } // Init can download and install terraform if required and then terraform init your specified directory. + func Init(dirName string) (*string, []string, error) { + // Per-directory locking + dirMutex, _ := initMutex.LoadOrStore(dirName, &sync.Mutex{}) + mutex := dirMutex.(*sync.Mutex) + mutex.Lock() + defer mutex.Unlock() + tfPath, err := LocateTerraform() if err != nil { return nil, nil, &locateTerraformError{err} } tf, err := tfexec.NewTerraform(dirName, tfPath) + if err != nil { return nil, nil, &terraformExecError{err} } - err = tf.Init(context.Background(), tfexec.Upgrade(true)) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Minute) + defer cancel() + err = tf.Init(ctx, tfexec.Upgrade(true)) if err != nil { + if errors.Is(context.DeadlineExceeded, ctx.Err()) { + return nil, nil, fmt.Errorf("terraform init timed out after 10 minutes: %w", err) + } return nil, nil, &terraformInitError{err} } - log.Printf("terraform init at %s", dirName) + log.Info().Msgf("terraform init at %s", dirName) modulesDir := path.Join(dirName, dotTfModules) modules, err := os.ReadDir(modulesDir) @@ -217,11 +250,14 @@ func Init(dirName string) (*string, []string, error) { // LocateTerraform finds the Terraform executable or installs it. func LocateTerraform() (string, error) { + terraformMutex.Lock() + defer terraformMutex.Unlock() + tfPath, err := exec.LookPath(terraform) // if you don't have tf installed, we have to install it if err != nil || tfPath == "" { - log.Printf("installing Terraform %s\n", tfVersion) + log.Info().Msgf("installing Terraform %s\n", tfVersion) installer := &releases.ExactVersion{ Product: product.Terraform, Version: version.Must(version.NewVersion(tfVersion)), @@ -239,18 +275,20 @@ func LocateTerraform() (string, error) { } // MakePolicy does the guts of determining a policy from code. -func MakePolicy(dirName string, file *string, init bool, EnableResources bool, provider string) (OutputPolicy, error) { - var ( - output OutputPolicy - ) +func MakePolicy(dirName string, file *string, init bool, enableResources bool, provider string, policyName string) (OutputPolicy, error) { + // Validate inputs early + if dirName == "" && file == nil { + return OutputPolicy{}, errors.New("either directory or file should be be set") + } - permissionsBag, err := MakePermissionBag(dirName, file, init, provider) + var output OutputPolicy + permissionsBag, err := makePermissionBag(dirName, file, init, provider) if err != nil { - return output, err + return output, fmt.Errorf("failed to create permission bag: %w", err) } - output, err = GetPolicy(permissionsBag, EnableResources) + output, err = GetPolicy(permissionsBag, enableResources, policyName) if err != nil { return output, &getPolicyError{err: err} } @@ -258,14 +296,22 @@ func MakePolicy(dirName string, file *string, init bool, EnableResources bool, p return output, nil } -func MakePermissionBag(dirName string, file *string, init bool, provider string) (Sorted, error) { +// Extract common absolute path logic +func getAbsolutePath(path string) (string, error) { + absPath, err := filepath.Abs(path) + if err != nil { + return "", &absolutePathError{directory: path, err: err} + } + return absPath, nil +} +func makePermissionBag(dirName string, file *string, init bool, provider string) (Sorted, error) { var files []string if file == nil { - fullPath, err := filepath.Abs(dirName) + fullPath, err := getAbsolutePath(dirName) if err != nil { - return Sorted{}, &absolutePathError{directory: dirName, err: err} + return Sorted{}, err } if init { @@ -284,9 +330,9 @@ func MakePermissionBag(dirName string, file *string, init bool, provider string) return Sorted{}, &getTFError{directory: fullPath, err: err} } } else { - myFile, err := filepath.Abs(*file) + myFile, err := getAbsolutePath(*file) if err != nil { - return Sorted{}, &absolutePathError{directory: *file, err: err} + return Sorted{}, err } // is this a tfFile? @@ -302,22 +348,34 @@ func MakePermissionBag(dirName string, file *string, init bool, provider string) } var resources []ResourceV2 + var failedFiles []string + var criticalErrors []error for _, tfFile := range files { resource, err := GetResources(tfFile, dirName) if err != nil { - // parse the other files - log.Print(err) + failedFiles = append(failedFiles, tfFile) + criticalErrors = append(criticalErrors, fmt.Errorf("failed to parse %s: %w", tfFile, err)) + continue } if resource != nil { resources = append(resources, resource...) } } + + // Fail fast if too many critical files failed + if len(criticalErrors) > 0 { + if len(failedFiles) > len(files)/2 { // More than 50% failed + return Sorted{}, fmt.Errorf("critical parsing failures in %d/%d files: %v", + len(failedFiles), len(files), criticalErrors) + } + log.Warn().Int("failed_files", len(failedFiles)).Msg("some terraform files failed to parse") + } + permissionsBag := GetPermissionBag(resources, provider) return permissionsBag, nil } - func GetPermissionBag(resources []ResourceV2, provider string) Sorted { var permissionBag Sorted var newPerms Sorted @@ -410,3 +468,16 @@ func StringInSlice(a string, list []string) bool { func GetHCLType(resourceName string) string { return strings.Split(resourceName, "_")[0] } + +const ( + maxFiles = 1000 + maxFileSize = 10 * 1024 * 1024 // 10MB + maxResources = 50000 +) + +func validateLimits(files []string) error { + if len(files) > maxFiles { + return fmt.Errorf("too many files: %d > %d", len(files), maxFiles) + } + return nil +} diff --git a/src/scan_test.go b/src/scan_test.go index 464902cf..e575bda6 100644 --- a/src/scan_test.go +++ b/src/scan_test.go @@ -1,4 +1,4 @@ -package pike_test +package pike import ( "os" @@ -7,7 +7,6 @@ import ( "runtime" "testing" - pike "github.com/jameswoolfenden/pike/src" "github.com/rs/zerolog/log" ) @@ -20,16 +19,16 @@ func TestScan(t *testing.T) { write bool } - testpath, _ := filepath.Abs("../terraform/aws/backup") + testPath, _ := filepath.Abs("../terraform/aws/backup") tests := []struct { name string args args wantErr bool }{ - {"aws", args{testpath, "json", false}, false}, - {"aws-out", args{testpath, "terraform", true}, false}, - {"google", args{testpath, "json", false}, false}, + {"aws", args{testPath, "json", false}, false}, + {"aws-out", args{testPath, "terraform", true}, false}, + {"google", args{testPath, "json", false}, false}, } for _, tt := range tests { @@ -37,13 +36,7 @@ func TestScan(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - if err := pike.Scan( - tt.args.dirname, - tt.args.output, - nil, false, - tt.args.write, - false, - ""); (err != nil) != tt.wantErr { + if err := Scan(tt.args.dirname, tt.args.output, nil, false, tt.args.write, false, "", "", ""); (err != nil) != tt.wantErr { t.Errorf("Scan() error = %v, wantErr %v", err, tt.wantErr) } }) @@ -80,7 +73,7 @@ func TestGetTF(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - got, err := pike.GetTF(tt.args.dirname) + got, err := GetTF(tt.args.dirname) if (err != nil) != tt.wantErr { t.Errorf("GetTF() error = %v, wantErr %v", err, tt.wantErr) @@ -99,7 +92,7 @@ func TestGetPermissionBag(t *testing.T) { t.Parallel() type args struct { - resources []pike.ResourceV2 + resources []ResourceV2 provider string } @@ -107,12 +100,12 @@ func TestGetPermissionBag(t *testing.T) { tests := []struct { name string args args - want pike.Sorted + want Sorted }{ { "basic_aws", args{ - resources: []pike.ResourceV2{ + resources: []ResourceV2{ { TypeName: "terraform", Name: "aws_s3_bucket", @@ -123,7 +116,7 @@ func TestGetPermissionBag(t *testing.T) { }, }, }, - pike.Sorted{ + Sorted{ AWS: []string{ "s3:PutBucketTagging", "s3:DeleteBucket", @@ -155,7 +148,7 @@ func TestGetPermissionBag(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - permissionBag := pike.GetPermissionBag(tt.args.resources, tt.args.provider) + permissionBag := GetPermissionBag(tt.args.resources, tt.args.provider) if !reflect.DeepEqual(permissionBag, tt.want) { t.Errorf("MakePolicy() = %v, want %v", permissionBag, tt.want) @@ -186,7 +179,7 @@ func Test_stringInSlice(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - if got := pike.StringInSlice(tt.args.a, tt.args.list); got != tt.want { + if got := StringInSlice(tt.args.a, tt.args.list); got != tt.want { t.Errorf("StringInSlice() = %v, want %v", got, tt.want) } }) @@ -570,7 +563,7 @@ func TestMakePolicy(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - got, err := pike.MakePolicy(tt.args.dirName, tt.args.file, tt.args.init, false, "") + got, err := MakePolicy(tt.args.dirName, tt.args.file, tt.args.init, false, "", "") if (err != nil) != tt.wantErr { t.Errorf("MakePolicy() error = %v, wantErr %v", err, tt.wantErr) @@ -601,6 +594,8 @@ func TestGetHCLType(t *testing.T) { want string }{ {"basic", args{"aws_s3_bucket"}, "aws"}, + {"gcp", args{"google_storage_bucket"}, "google"}, + {"azurerm", args{"azurerm_storage_account"}, "azurerm"}, } for _, tt := range tests { @@ -608,7 +603,7 @@ func TestGetHCLType(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - if got := pike.GetHCLType(tt.args.resourceName); got != tt.want { + if got := GetHCLType(tt.args.resourceName); got != tt.want { t.Errorf("GetHCLType() = %v, want %v", got, tt.want) } }) @@ -650,7 +645,7 @@ func Test_getTFFiles(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - got, err := pike.GetTFFiles(tt.args.dirName) + got, err := GetTFFiles(tt.args.dirName) if (err != nil) != tt.wantErr { t.Errorf("GetTFFiles() error = %v, wantErr %v", err, tt.wantErr) @@ -669,12 +664,12 @@ func TestWriteOutput(t *testing.T) { t.Parallel() type args struct { - OutPolicy pike.OutputPolicy + OutPolicy OutputPolicy output string location string } - out := pike.OutputPolicy{AWS: pike.AwsOutput{ + out := OutputPolicy{AWS: AwsOutput{ JSONOut: "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"VisualEditor0\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"SNS:CreateTopic\",\n \"SNS:DeleteTopic\",\n \"SNS:GetTopicAttributes\",\n \"SNS:ListTagsForResource\",\n \"SNS:ListTopics\",\n \"SNS:SetTopicAttributes\",\n \"SNS:TagResource\",\n \"SNS:UnTagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor1\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"acm:AddTagsToCertificate\",\n \"acm:DeleteCertificate\",\n \"acm:DescribeCertificate\",\n \"acm:ListTagsForCertificate\",\n \"acm:RemoveTagsFromCertificate\",\n \"acm:RequestCertificate\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor2\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"acm-pa:DescribeCertificateAuthority\",\n \"acm-pa:ListTags\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor3\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"acm-pca:CreateCertificateAuthority\",\n \"acm-pca:DeleteCertificateAuthority\",\n \"acm-pca:GetCertificateAuthorityCertificate\",\n \"acm-pca:UpdateCertificateAuthority\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor4\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"apigateway:DELETE\",\n \"apigateway:GET\",\n \"apigateway:PATCH\",\n \"apigateway:POST\",\n \"apigateway:PUT\",\n \"apigateway:UpdateRestApiPolicy\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor5\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"application-autoscaling:DeleteScalingPolicy\",\n \"application-autoscaling:DeleteScheduledAction\",\n \"application-autoscaling:DeregisterScalableTarget\",\n \"application-autoscaling:DescribeScalableTargets\",\n \"application-autoscaling:DescribeScalingPolicies\",\n \"application-autoscaling:DescribeScheduledActions\",\n \"application-autoscaling:PutScalingPolicy\",\n \"application-autoscaling:PutScheduledAction\",\n \"application-autoscaling:RegisterScalableTarget\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor6\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"application-autoscaling:DeleteScalingPolicy\",\n \"application-autoscaling:DeleteScheduledAction\",\n \"application-autoscaling:DeregisterScalableTarget\",\n \"application-autoscaling:DescribeScalableTargets\",\n \"application-autoscaling:DescribeScalingPolicies\",\n \"application-autoscaling:DescribeScheduledActions\",\n \"application-autoscaling:PutScalingPolicy\",\n \"application-autoscaling:PutScheduledAction\",\n \"application-autoscaling:RegisterScalableTarget\",\n \"autoscaling:AttachLoadBalancers\",\n \"autoscaling:CreateAutoScalingGroup\",\n \"autoscaling:CreateLaunchConfiguration\",\n \"autoscaling:DeleteAutoScalingGroup\",\n \"autoscaling:DeleteLaunchConfiguration\",\n \"autoscaling:DescribeAutoScalingGroups\",\n \"autoscaling:DescribeLaunchConfigurations\",\n \"autoscaling:DescribeScalingActivities\",\n \"autoscaling:DetachLoadBalancers\",\n \"autoscaling:UpdateAutoScalingGroup\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor7\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"budgets:ModifyBudget\",\n \"budgets:ViewBudget\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor8\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"cloudtrail:AddTags\",\n \"cloudtrail:CreateTrail\",\n \"cloudtrail:DeleteTrail\",\n \"cloudtrail:DescribeTrails\",\n \"cloudtrail:GetEventSelectors\",\n \"cloudtrail:GetTrailStatus\",\n \"cloudtrail:ListTags\",\n \"cloudtrail:PutEventSelectors\",\n \"cloudtrail:RemoveTags\",\n \"cloudtrail:StartLogging\",\n \"cloudtrail:UpdateTrail\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor9\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"cloudwatch:DeleteAlarms\",\n \"cloudwatch:DescribeAlarms\",\n \"cloudwatch:ListTagsForResource\",\n \"cloudwatch:PutMetricAlarm\",\n \"cloudwatch:TagResource\",\n \"cloudwatch:UnTagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor10\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"codeartifact:CreateDomain\",\n \"codeartifact:CreateRepository\",\n \"codeartifact:DeleteDomain\",\n \"codeartifact:DeleteDomainPermissionsPolicy\",\n \"codeartifact:DeleteRepository\",\n \"codeartifact:DeleteRepositoryPermissionsPolicy\",\n \"codeartifact:DescribeDomain\",\n \"codeartifact:DescribeRepository\",\n \"codeartifact:GetDomainPermissionsPolicy\",\n \"codeartifact:GetRepositoryPermissionsPolicy\",\n \"codeartifact:ListTagsForResource\",\n \"codeartifact:PutDomainPermissionsPolicy\",\n \"codeartifact:PutRepositoryPermissionsPolicy\",\n \"codeartifact:TagResource\",\n \"codeartifact:UntagResource\",\n \"codeartifact:UpdateRepository\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor11\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"codebuild:BatchGetProjects\",\n \"codebuild:CreateProject\",\n \"codebuild:DeleteProject\",\n \"codebuild:UpdateProject\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor12\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"codecommit:CreateRepository\",\n \"codecommit:DeleteRepository\",\n \"codecommit:GetRepository\",\n \"codecommit:ListBranches\",\n \"codecommit:ListTagsForResource\",\n \"codecommit:TagResource\",\n \"codecommit:UntagResource\",\n \"codecommit:UpdateRepositoryDescription\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor13\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"codepipeline:CreatePipeline\",\n \"codepipeline:DeletePipeline\",\n \"codepipeline:GetPipeline\",\n \"codepipeline:ListTagsForResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor14\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"cognito-idp:AddCustomAttributes\",\n \"cognito-idp:AdminAddUserToGroup\",\n \"cognito-idp:AdminCreateUser\",\n \"cognito-idp:AdminDeleteUser\",\n \"cognito-idp:AdminGetUser\",\n \"cognito-idp:AdminListGroupsForUser\",\n \"cognito-idp:AdminRemoveUserFromGroup\",\n \"cognito-idp:CreateGroup\",\n \"cognito-idp:CreateIdentityProvider\",\n \"cognito-idp:CreateResourceServer\",\n \"cognito-idp:CreateUserPool\",\n \"cognito-idp:CreateUserPoolClient\",\n \"cognito-idp:CreateUserPoolDomain\",\n \"cognito-idp:DeleteGroup\",\n \"cognito-idp:DeleteIdentityProvider\",\n \"cognito-idp:DeleteResourceServer\",\n \"cognito-idp:DeleteUserPool\",\n \"cognito-idp:DeleteUserPoolClient\",\n \"cognito-idp:DeleteUserPoolDomain\",\n \"cognito-idp:DescribeIdentityProvider\",\n \"cognito-idp:DescribeResourceServer\",\n \"cognito-idp:DescribeUserPool\",\n \"cognito-idp:DescribeUserPoolClient\",\n \"cognito-idp:DescribeUserPoolDomain\",\n \"cognito-idp:GetGroup\",\n \"cognito-idp:GetSigningCertificate\",\n \"cognito-idp:GetUICustomization\",\n \"cognito-idp:GetUserPoolMfaConfig\",\n \"cognito-idp:ListUserPoolClients\",\n \"cognito-idp:ListUserPools\",\n \"cognito-idp:SetUICustomization\",\n \"cognito-idp:SetUserPoolMfaConfig\",\n \"cognito-idp:TagResource\",\n \"cognito-idp:UntagResource\",\n \"cognito-idp:UpdateGroup\",\n \"cognito-idp:UpdateIdentityProvider\",\n \"cognito-idp:UpdateResourceServer\",\n \"cognito-idp:UpdateUserPool\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor15\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"dax:CreateParameterGroup\",\n \"dax:CreateSubnetGroup\",\n \"dax:DeleteParameterGroup\",\n \"dax:DeleteSubnetGroup\",\n \"dax:DescribeParameterGroups\",\n \"dax:DescribeParameters\",\n \"dax:DescribeSubnetGroups\",\n \"dax:UpdateParameterGroup\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor16\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ds:AddTagsToResource\",\n \"ds:CreateDirectory\",\n \"ds:CreateLogSubscription\",\n \"ds:DeleteDirectory\",\n \"ds:DeleteLogSubscription\",\n \"ds:ListTagsForResource\",\n \"ds:RemoveTagsFromResource\",\n \"rds:AddRoleToDBCluster\",\n \"rds:AddTagsToResource\",\n \"rds:CreateDBCluster\",\n \"rds:CreateDBClusterEndpoint\",\n \"rds:CreateDBClusterParameterGroup\",\n \"rds:CreateDBClusterSnapshot\",\n \"rds:CreateDBInstance\",\n \"rds:CreateDBParameterGroup\",\n \"rds:CreateDBSubnetGroup\",\n \"rds:CreateGlobalCluster\",\n \"rds:CreateOptionGroup\",\n \"rds:DeleteDBCluster\",\n \"rds:DeleteDBClusterEndpoint\",\n \"rds:DeleteDBClusterParameterGroup\",\n \"rds:DeleteDBClusterSnapshot\",\n \"rds:DeleteDBParameterGroup\",\n \"rds:DeleteDBSubnetGroup\",\n \"rds:DeleteGlobalCluster\",\n \"rds:DeleteOptionGroup\",\n \"rds:DescribeCertificates\",\n \"rds:DescribeDBClusterParameterGroups\",\n \"rds:DescribeDBClusterParameters\",\n \"rds:DescribeDBClusterSnapshots\",\n \"rds:DescribeDBClusters\",\n \"rds:DescribeDBEngineVersions\",\n \"rds:DescribeDBInstances\",\n \"rds:DescribeDBParameterGroups\",\n \"rds:DescribeDBParameters\",\n \"rds:DescribeDBSnapshots\",\n \"rds:DescribeDBSubnetGroups\",\n \"rds:DescribeEventCategories\",\n \"rds:DescribeGlobalClusters\",\n \"rds:DescribeOptionGroups\",\n \"rds:DescribeOrderableDBInstanceOptions\",\n \"rds:ListTagsForResource\",\n \"rds:ModifyDBCluster\",\n \"rds:ModifyDBClusterEndpoint\",\n \"rds:ModifyDBClusterParameterGroup\",\n \"rds:ModifyDBInstance\",\n \"rds:ModifyDBParameterGroup\",\n \"rds:ModifyGlobalCluster\",\n \"rds:ModifyOptionGroup\",\n \"rds:RemoveRoleFromDBCluster\",\n \"rds:RemoveTagsFromResource\",\n \"rds:StartActivityStream\",\n \"rds:StopActivityStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor17\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"dynamodb:BatchWriteItem\",\n \"dynamodb:CreateTable\",\n \"dynamodb:CreateTableReplica\",\n \"dynamodb:DeleteItem\",\n \"dynamodb:DeleteTable\",\n \"dynamodb:DeleteTableReplica\",\n \"dynamodb:DescribeContinuousBackups\",\n \"dynamodb:DescribeTable\",\n \"dynamodb:DescribeTimeToLive\",\n \"dynamodb:GetItem\",\n \"dynamodb:ListTagsOfResource\",\n \"dynamodb:PutItem\",\n \"dynamodb:Query\",\n \"dynamodb:Scan\",\n \"dynamodb:TagResource\",\n \"dynamodb:UntagResource\",\n \"dynamodb:UpdateContinuousBackups\",\n \"dynamodb:UpdateItem\",\n \"dynamodb:UpdateTable\",\n \"dynamodb:UpdateTimeToLive\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor18\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:AllocateAddress\",\n \"ec2:AssociateAddress\",\n \"ec2:AssociateRouteTable\",\n \"ec2:AttachInternetGateway\",\n \"ec2:AttachVolume\",\n \"ec2:AttachVpnGateway\",\n \"ec2:AuthorizeSecurityGroupEgress\",\n \"ec2:AuthorizeSecurityGroupIngress\",\n \"ec2:CancelCapacityReservation\",\n \"ec2:CancelSpotInstanceRequests\",\n \"ec2:CreateCapacityReservation\",\n \"ec2:CreateDefaultVpc\",\n \"ec2:CreateFlowLogs\",\n \"ec2:CreateInternetGateway\",\n \"ec2:CreateKeyPair\",\n \"ec2:CreateLaunchTemplate\",\n \"ec2:CreateLaunchTemplateVersion\",\n \"ec2:CreateNatGateway\",\n \"ec2:CreateNetworkAcl\",\n \"ec2:CreateNetworkAclEntry\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:CreatePlacementGroup\",\n \"ec2:CreateRoute\",\n \"ec2:CreateRouteTable\",\n \"ec2:CreateSecurityGroup\",\n \"ec2:CreateSubnet\",\n \"ec2:CreateTags\",\n \"ec2:CreateVPC\",\n \"ec2:CreateVolume\",\n \"ec2:CreateVpcEndpoint\",\n \"ec2:CreateVpnGateway\",\n \"ec2:DeleteFlowLogs\",\n \"ec2:DeleteInternetGateway\",\n \"ec2:DeleteKeyPair\",\n \"ec2:DeleteLaunchTemplate\",\n \"ec2:DeleteNatGateway\",\n \"ec2:DeleteNetworkAcl\",\n \"ec2:DeleteNetworkAclEntry\",\n \"ec2:DeleteNetworkInterface\",\n \"ec2:DeleteNetworkInterfacePermission\",\n \"ec2:DeletePlacementGroup\",\n \"ec2:DeleteRoute\",\n \"ec2:DeleteRouteTable\",\n \"ec2:DeleteSecurityGroup\",\n \"ec2:DeleteSubnet\",\n \"ec2:DeleteTags\",\n \"ec2:DeleteVPC\",\n \"ec2:DeleteVolume\",\n \"ec2:DeleteVpcEndpoints\",\n \"ec2:DeleteVpnGateway\",\n \"ec2:DescribeAccountAttributes\",\n \"ec2:DescribeAddresses\",\n \"ec2:DescribeAvailabilityZones\",\n \"ec2:DescribeCapacityReservations\",\n \"ec2:DescribeDhcpOptions\",\n \"ec2:DescribeFlowLogs\",\n \"ec2:DescribeImages\",\n \"ec2:DescribeInstanceAttribute\",\n \"ec2:DescribeInstanceCreditSpecifications\",\n \"ec2:DescribeInstanceTypes\",\n \"ec2:DescribeInstances\",\n \"ec2:DescribeInternetGateways\",\n \"ec2:DescribeKeyPairs\",\n \"ec2:DescribeLaunchTemplateVersions\",\n \"ec2:DescribeLaunchTemplates\",\n \"ec2:DescribeNatGateways\",\n \"ec2:DescribeNetworkAcls\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:DescribePlacementGroups\",\n \"ec2:DescribePrefixLists\",\n \"ec2:DescribeRouteTables\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeSpotInstanceRequests\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeTags\",\n \"ec2:DescribeVolumes\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeVpcEndpointServices\",\n \"ec2:DescribeVpcEndpoints\",\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpnGateways\",\n \"ec2:DetachInternetGateway\",\n \"ec2:DetachNetworkInterface\",\n \"ec2:DetachVolume\",\n \"ec2:DetachVpnGateway\",\n \"ec2:DisassociateAddress\",\n \"ec2:DisassociateRouteTable\",\n \"ec2:GetEbsDefaultKmsKeyId\",\n \"ec2:ImportKeyPair\",\n \"ec2:ModifyCapacityReservation\",\n \"ec2:ModifyInstanceAttribute\",\n \"ec2:ModifyVolume\",\n \"ec2:ModifyVpcEndpoint\",\n \"ec2:MonitorInstances\",\n \"ec2:ReleaseAddress\",\n \"ec2:RequestSpotInstances\",\n \"ec2:RevokeSecurityGroupEgress\",\n \"ec2:RevokeSecurityGroupIngress\",\n \"ec2:RunInstances\",\n \"ec2:StartInstances\",\n \"ec2:StopInstances\",\n \"ec2:TerminateInstances\",\n \"ec2:UnmonitorInstances\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor19\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ecr:CreatePullThroughCacheRule\",\n \"ecr:CreateRepository\",\n \"ecr:DeleteLifecyclePolicy\",\n \"ecr:DeletePullThroughCacheRule\",\n \"ecr:DeleteRepository\",\n \"ecr:DescribePullThroughCacheRules\",\n \"ecr:DescribeRepositories\",\n \"ecr:GetAuthorizationToken\",\n \"ecr:GetLifecyclePolicy\",\n \"ecr:ListTagsForResource\",\n \"ecr:PutImageScanningConfiguration\",\n \"ecr:PutLifecyclePolicy\",\n \"ecr:TagResource\",\n \"ecr:UntagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor20\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ecs:CreateCluster\",\n \"ecs:CreateService\",\n \"ecs:DeleteCluster\",\n \"ecs:DeleteService\",\n \"ecs:DeregisterTaskDefinition\",\n \"ecs:DescribeClusters\",\n \"ecs:DescribeServices\",\n \"ecs:DescribeTaskDefinition\",\n \"ecs:UpdateCluster\",\n \"ecs:RegisterTaskDefinition\",\n \"ecs:TagResource\",\n \"ecs:UntagResource\",\n \"ecs:UpdateService\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor21\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"eks:DescribeCluster\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor22\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"elasticache:AddTagsToResource\",\n \"elasticache:CreateCacheParameterGroup\",\n \"elasticache:CreateCacheSubnetGroup\",\n \"elasticache:DeleteCacheParameterGroup\",\n \"elasticache:DeleteCacheSubnetGroup\",\n \"elasticache:DescribeCacheParameterGroups\",\n \"elasticache:DescribeCacheParameters\",\n \"elasticache:DescribeCacheSubnetGroups\",\n \"elasticache:ListTagsForResource\",\n \"elasticache:ModifyCacheParameterGroup\",\n \"elasticache:ModifyCacheSubnetGroup\",\n \"elasticache:RemoveTagsFromResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor23\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"elasticbeanstalk:AddTags\",\n \"elasticbeanstalk:CreateApplication\",\n \"elasticbeanstalk:DeleteApplication\",\n \"elasticbeanstalk:DescribeApplications\",\n \"elasticbeanstalk:ListAvailableSolutionStacks\",\n \"elasticbeanstalk:ListTagsForResource\",\n \"elasticbeanstalk:RemoveTags\",\n \"elasticbeanstalk:UpdateApplicationResourceLifecycle\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor24\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"elasticfilesystem:CreateAccessPoint\",\n \"elasticfilesystem:CreateFileSystem\",\n \"elasticfilesystem:CreateReplicationConfiguration\",\n \"elasticfilesystem:DeleteAccessPoint\",\n \"elasticfilesystem:DeleteFileSystem\",\n \"elasticfilesystem:DeleteFileSystemPolicy\",\n \"elasticfilesystem:DeleteReplicationConfiguration\",\n \"elasticfilesystem:DescribeAccessPoints\",\n \"elasticfilesystem:DescribeBackupPolicy\",\n \"elasticfilesystem:DescribeFileSystemPolicy\",\n \"elasticfilesystem:DescribeFileSystems\",\n \"elasticfilesystem:DescribeLifecycleConfiguration\",\n \"elasticfilesystem:DescribeMountTargetSecurityGroups\",\n \"elasticfilesystem:DescribeMountTargets\",\n \"elasticfilesystem:DescribeReplicationConfigurations\",\n \"elasticfilesystem:PutBackupPolicy\",\n \"elasticfilesystem:PutFileSystemPolicy\",\n \"elasticfilesystem:TagResource\",\n \"elasticfilesystem:UntagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor25\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"elasticloadbalancing:AddTags\",\n \"elasticloadbalancing:AttachLoadBalancerToSubnets\",\n \"elasticloadbalancing:CreateListener\",\n \"elasticloadbalancing:CreateLoadBalancer\",\n \"elasticloadbalancing:CreateLoadBalancerListeners\",\n \"elasticloadbalancing:CreateTargetGroup\",\n \"elasticloadbalancing:DeleteListener\",\n \"elasticloadbalancing:DeleteLoadBalancer\",\n \"elasticloadbalancing:DeleteTargetGroup\",\n \"elasticloadbalancing:DeregisterTargets\",\n \"elasticloadbalancing:DescribeListeners\",\n \"elasticloadbalancing:DescribeLoadBalancerAttributes\",\n \"elasticloadbalancing:DescribeLoadBalancers\",\n \"elasticloadbalancing:DescribeTags\",\n \"elasticloadbalancing:DescribeTargetGroupAttributes\",\n \"elasticloadbalancing:DescribeTargetGroups\",\n \"elasticloadbalancing:DescribeTargetHealth\",\n \"elasticloadbalancing:ModifyListener\",\n \"elasticloadbalancing:ModifyLoadBalancerAttributes\",\n \"elasticloadbalancing:ModifyTargetGroupAttributes\",\n \"elasticloadbalancing:RegisterTargets\",\n \"elasticloadbalancing:RemoveTags\",\n \"elasticloadbalancing:SetSecurityGroups\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor26\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"events:DeleteRule\",\n \"events:DescribeRule\",\n \"events:ListTagsForResource\",\n \"events:ListTargetsByRule\",\n \"events:PutRule\",\n \"events:PutTargets\",\n \"events:RemoveTargets\",\n \"events:TagResource\",\n \"events:UnTagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor27\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"firehose:CreateDeliveryStream\",\n \"firehose:DeleteDeliveryStream\",\n \"firehose:DescribeDeliveryStream\",\n \"firehose:ListTagsForDeliveryStream\",\n \"firehose:TagDeliveryStream\",\n \"firehose:UntagDeliveryStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor28\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"glue:CreateClassifier\",\n \"glue:CreateConnection\",\n \"glue:CreateCrawler\",\n \"glue:CreateDatabase\",\n \"glue:CreateJob\",\n \"glue:CreateMLTransform\",\n \"glue:CreateRegistry\",\n \"glue:CreateSchema\",\n \"glue:CreateScript\",\n \"glue:CreateSecurityConfiguration\",\n \"glue:CreateTable\",\n \"glue:CreateTrigger\",\n \"glue:CreateUserDefinedFunction\",\n \"glue:CreateWorkflow\",\n \"glue:DeleteClassifier\",\n \"glue:DeleteConnection\",\n \"glue:DeleteCrawler\",\n \"glue:DeleteDatabase\",\n \"glue:DeleteJob\",\n \"glue:DeleteMLTransform\",\n \"glue:DeleteRegistry\",\n \"glue:DeleteResourcePolicy\",\n \"glue:DeleteSchema\",\n \"glue:DeleteSecurityConfiguration\",\n \"glue:DeleteTable\",\n \"glue:DeleteTrigger\",\n \"glue:DeleteUserDefinedFunction\",\n \"glue:DeleteWorkflow\",\n \"glue:GetClassifier\",\n \"glue:GetConnection\",\n \"glue:GetCrawler\",\n \"glue:GetDataCatalogEncryptionSettings\",\n \"glue:GetDatabase\",\n \"glue:GetJob\",\n \"glue:GetMLTransform\",\n \"glue:GetRegistry\",\n \"glue:GetResourcePolicy\",\n \"glue:GetSchema\",\n \"glue:GetSchemaVersion\",\n \"glue:GetSecurityConfiguration\",\n \"glue:GetTable\",\n \"glue:GetTags\",\n \"glue:GetTrigger\",\n \"glue:GetUserDefinedFunction\",\n \"glue:GetWorkflow\",\n \"glue:PutDataCatalogEncryptionSettings\",\n \"glue:PutResourcePolicy\",\n \"glue:TagResource\",\n \"glue:UntagResource\",\n \"glue:UpdateClassifier\",\n \"glue:UpdateConnection\",\n \"glue:UpdateCrawler\",\n \"glue:UpdateDatabase\",\n \"glue:UpdateJob\",\n \"glue:UpdateMLTransform\",\n \"glue:UpdateRegistry\",\n \"glue:UpdateSchema\",\n \"glue:UpdateTable\",\n \"glue:UpdateTrigger\",\n \"glue:UpdateUserDefinedFunction\",\n \"glue:UpdateWorkflow\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor29\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"iam:AddRoleToInstanceProfile\",\n \"iam:AddUserToGroup\",\n \"iam:AttachGroupPolicy\",\n \"iam:AttachRolePolicy\",\n \"iam:AttachUserPolicy\",\n \"iam:CreateAccessKey\",\n \"iam:CreateGroup\",\n \"iam:CreateInstanceProfile\",\n \"iam:CreateLoginProfile\",\n \"iam:CreatePolicy\",\n \"iam:CreateRole\",\n \"iam:CreateServiceLinkedRole\",\n \"iam:CreateUser\",\n \"iam:DeleteAccessKey\",\n \"iam:DeleteGroup\",\n \"iam:DeleteGroupPolicy\",\n \"iam:DeleteInstanceProfile\",\n \"iam:DeleteLoginProfile\",\n \"iam:DeletePolicy\",\n \"iam:DeleteRole\",\n \"iam:DeleteRolePolicy\",\n \"iam:DeleteServiceLinkedRole\",\n \"iam:DeleteUser\",\n \"iam:DeleteUserPolicy\",\n \"iam:DetachGroupPolicy\",\n \"iam:DetachRolePolicy\",\n \"iam:DetachUserPolicy\",\n \"iam:GetGroup\",\n \"iam:GetGroupPolicy\",\n \"iam:GetInstanceProfile\",\n \"iam:GetLoginProfile\",\n \"iam:GetPolicy\",\n \"iam:GetPolicyVersion\",\n \"iam:GetRole\",\n \"iam:GetRolePolicy\",\n \"iam:GetServiceLinkedRoleDeletionStatus\",\n \"iam:GetUser\",\n \"iam:GetUserPolicy\",\n \"iam:ListAccessKeys\",\n \"iam:ListAttachedGroupPolicies\",\n \"iam:ListAttachedRolePolicies\",\n \"iam:ListAttachedUserPolicies\",\n \"iam:ListEntitiesForPolicy\",\n \"iam:ListGroupsForUser\",\n \"iam:ListInstanceProfilesForRole\",\n \"iam:ListPolicies\",\n \"iam:ListPolicyVersions\",\n \"iam:ListRolePolicies\",\n \"iam:PassRole\",\n \"iam:PutGroupPolicy\",\n \"iam:PutRolePolicy\",\n \"iam:PutUserPolicy\",\n \"iam:RemoveRoleFromInstanceProfile\",\n \"iam:RemoveUserFromGroup\",\n \"iam:TagPolicy\",\n \"iam:TagRole\",\n \"iam:TagUser\",\n \"iam:UnTagRole\",\n \"iam:UnTagUser\",\n \"iam:UntagPolicy\",\n \"iam:UpdateAccessKey\",\n \"iam:UpdateRoleDescription\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor30\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"inspector:CreateAssessmentTarget\",\n \"inspector:CreateAssessmentTemplate\",\n \"inspector:CreateResourceGroup\",\n \"inspector:DeleteAssessmentTarget\",\n \"inspector:DeleteAssessmentTemplate\",\n \"inspector:DescribeAssessmentTargets\",\n \"inspector:DescribeAssessmentTemplates\",\n \"inspector:DescribeResourceGroups\",\n \"inspector:ListEventSubscriptions\",\n \"inspector:ListRulesPackages\",\n \"inspector:ListTagsForResource\",\n \"inspector:SetTagsForResource\",\n \"inspector:SubscribeToEvent\",\n \"inspector:UnsubscribeFromEvent\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor31\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"kinesis:AddTagsToStream\",\n \"kinesis:CreateStream\",\n \"kinesis:DeleteStream\",\n \"kinesis:DescribeStreamSummary\",\n \"kinesis:EnableEnhancedMonitoring\",\n \"kinesis:IncreaseStreamRetentionPeriod\",\n \"kinesis:ListTagsForStream\",\n \"kinesis:RemoveTagsFromStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor32\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"kinesisvideo:CreateStream\",\n \"kinesisvideo:DeleteStream\",\n \"kinesisvideo:DescribeStream\",\n \"kinesisvideo:ListTagsForStream\",\n \"kinesisvideo:TagStream\",\n \"kinesisvideo:UntagStream\",\n \"kinesisvideo:UpdateStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor33\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"kms:CreateAlias\",\n \"kms:CreateGrant\",\n \"kms:CreateKey\",\n \"kms:Decrypt\",\n \"kms:DeleteAlias\",\n \"kms:DescribeKey\",\n \"kms:DisableKey\",\n \"kms:EnableKey\",\n \"kms:EnableKeyRotation\",\n \"kms:Encrypt\",\n \"kms:GenerateDataKey*\",\n \"kms:GetKeyPolicy\",\n \"kms:GetKeyRotationStatus\",\n \"kms:ListAliases\",\n \"kms:ListResourceTags\",\n \"kms:PutKeyPolicy\",\n \"kms:ReEncrypt*\",\n \"kms:ScheduleKeyDeletion\",\n \"kms:TagResource\",\n \"kms:UntagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor34\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"lambda:AddPermission\",\n \"lambda:CreateAlias\",\n \"lambda:CreateFunction\",\n \"lambda:DeleteAlias\",\n \"lambda:DeleteFunction\",\n \"lambda:GetAlias\",\n \"lambda:GetFunction\",\n \"lambda:GetFunctionCodeSigningConfig\",\n \"lambda:GetPolicy\",\n \"lambda:ListVersionsByFunction\",\n \"lambda:RemovePermission\",\n \"lambda:TagResource\",\n \"lambda:UntagResource\",\n \"lambda:UpdateAlias\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor35\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"logs:CreateLogGroup\",\n \"logs:DeleteLogGroup\",\n \"logs:DeleteMetricFilter\",\n \"logs:DeleteResourcePolicy\",\n \"logs:DeleteRetentionPolicy\",\n \"logs:DeleteSubscriptionFilter\",\n \"logs:DescribeLogGroups\",\n \"logs:DescribeMetricFilters\",\n \"logs:DescribeResourcePolicies\",\n \"logs:DescribeSubscriptionFilters\",\n \"logs:ListTagsLogGroup\",\n \"logs:PutMetricFilter\",\n \"logs:PutResourcePolicy\",\n \"logs:PutRetentionPolicy\",\n \"logs:PutSubscriptionFilter\",\n \"logs:TagLogGroup\",\n \"logs:UntagLogGroup\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor36\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"memorydb:CreateSubnetGroup\",\n \"memorydb:DeleteSubnetGroup\",\n \"memorydb:DescribeSubnetGroups\",\n \"memorydb:ListTags\",\n \"memorydb:TagResource\",\n \"memorydb:UntagResource\",\n \"memorydb:UpdateSubnetGroup\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor37\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"mq:CreateBroker\",\n \"mq:CreateConfiguration\",\n \"mq:CreateTags\",\n \"mq:CreateUser\",\n \"mq:DeleteBroker\",\n \"mq:DeleteTags\",\n \"mq:DeleteUser\",\n \"mq:DescribeBroker\",\n \"mq:DescribeConfiguration\",\n \"mq:DescribeConfigurationRevision\",\n \"mq:DescribeUser\",\n \"mq:RebootBroker\",\n \"mq:UpdateBroker\",\n \"mq:UpdateConfiguration\",\n \"mq:UpdateUser\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor38\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"organizations:DescribeOrganization\",\n \"organizations:ListAWSServiceAccessForOrganization\",\n \"organizations:ListAccounts\",\n \"organizations:ListRoots\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor39\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"outposts:ListOutposts\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor40\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"rds:AddRoleToDBCluster\",\n \"rds:AddTagsToResource\",\n \"rds:CreateDBCluster\",\n \"rds:CreateDBClusterEndpoint\",\n \"rds:CreateDBClusterParameterGroup\",\n \"rds:CreateDBClusterSnapshot\",\n \"rds:CreateDBInstance\",\n \"rds:CreateDBParameterGroup\",\n \"rds:CreateDBSubnetGroup\",\n \"rds:CreateGlobalCluster\",\n \"rds:CreateOptionGroup\",\n \"rds:DeleteDBCluster\",\n \"rds:DeleteDBClusterEndpoint\",\n \"rds:DeleteDBClusterParameterGroup\",\n \"rds:DeleteDBClusterSnapshot\",\n \"rds:DeleteDBParameterGroup\",\n \"rds:DeleteDBSubnetGroup\",\n \"rds:DeleteGlobalCluster\",\n \"rds:DeleteOptionGroup\",\n \"rds:DescribeCertificates\",\n \"rds:DescribeDBClusterParameterGroups\",\n \"rds:DescribeDBClusterParameters\",\n \"rds:DescribeDBClusterSnapshots\",\n \"rds:DescribeDBClusters\",\n \"rds:DescribeDBEngineVersions\",\n \"rds:DescribeDBInstances\",\n \"rds:DescribeDBParameterGroups\",\n \"rds:DescribeDBParameters\",\n \"rds:DescribeDBSnapshots\",\n \"rds:DescribeDBSubnetGroups\",\n \"rds:DescribeEventCategories\",\n \"rds:DescribeGlobalClusters\",\n \"rds:DescribeOptionGroups\",\n \"rds:DescribeOrderableDBInstanceOptions\",\n \"rds:ListTagsForResource\",\n \"rds:ModifyDBCluster\",\n \"rds:ModifyDBClusterEndpoint\",\n \"rds:ModifyDBClusterParameterGroup\",\n \"rds:ModifyDBInstance\",\n \"rds:ModifyDBParameterGroup\",\n \"rds:ModifyGlobalCluster\",\n \"rds:ModifyOptionGroup\",\n \"rds:RemoveRoleFromDBCluster\",\n \"rds:RemoveTagsFromResource\",\n \"rds:StartActivityStream\",\n \"rds:StopActivityStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor41\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"redshift:CreateAuthenticationProfile\",\n \"redshift:CreateCluster\",\n \"redshift:CreateClusterParameterGroup\",\n \"redshift:CreateClusterSubnetGroup\",\n \"redshift:CreateEventSubscription\",\n \"redshift:CreateHsmClientCertificate\",\n \"redshift:CreateHsmConfiguration\",\n \"redshift:CreateScheduledAction\",\n \"redshift:CreateSnapshotCopyGrant\",\n \"redshift:CreateSnapshotSchedule\",\n \"redshift:CreateTags\",\n \"redshift:CreateUsageLimit\",\n \"redshift:DeleteAuthenticationProfile\",\n \"redshift:DeleteCluster\",\n \"redshift:DeleteClusterParameterGroup\",\n \"redshift:DeleteClusterSubnetGroup\",\n \"redshift:DeleteEventSubscription\",\n \"redshift:DeleteHsmClientCertificate\",\n \"redshift:DeleteHsmConfiguration\",\n \"redshift:DeleteScheduledAction\",\n \"redshift:DeleteSnapshotCopyGrant\",\n \"redshift:DeleteSnapshotSchedule\",\n \"redshift:DeleteTags\",\n \"redshift:DeleteUsageLimit\",\n \"redshift:DescribeAuthenticationProfiles\",\n \"redshift:DescribeClusterParameterGroups\",\n \"redshift:DescribeClusterParameters\",\n \"redshift:DescribeClusterSubnetGroups\",\n \"redshift:DescribeClusters\",\n \"redshift:DescribeEventSubscriptions\",\n \"redshift:DescribeHsmClientCertificates\",\n \"redshift:DescribeHsmConfigurations\",\n \"redshift:DescribeLoggingStatus\",\n \"redshift:DescribeOrderableClusterOptions\",\n \"redshift:DescribeScheduledActions\",\n \"redshift:DescribeSnapshotCopyGrants\",\n \"redshift:DescribeSnapshotSchedules\",\n \"redshift:DescribeUsageLimits\",\n \"redshift:DisableLogging\",\n \"redshift:EnableLogging\",\n \"redshift:GetClusterCredentials\",\n \"redshift:ModifyAuthenticationProfile\",\n \"redshift:ModifyCluster\",\n \"redshift:ModifyClusterIamRoles\",\n \"redshift:ModifyClusterParameterGroup\",\n \"redshift:ModifyClusterSnapshotSchedule\",\n \"redshift:ModifyClusterSubnetGroup\",\n \"redshift:ModifyEventSubscription\",\n \"redshift:ModifyScheduledAction\",\n \"redshift:ModifySnapshotSchedule\",\n \"redshift:ModifyUsageLimit\",\n \"redshift:PauseCluster\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor42\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"route53:AssociateVPCWithHostedZone\",\n \"route53:ChangeResourceRecordSets\",\n \"route53:ChangeTagsForResource\",\n \"route53:CreateHostedZone\",\n \"route53:DeleteHostedZone\",\n \"route53:GetChange\",\n \"route53:GetHostedZone\",\n \"route53:ListHostedZones\",\n \"route53:ListResourceRecordSets\",\n \"route53:ListTagsForResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor43\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:CreateBucket\",\n \"s3:DeleteBucket\",\n \"s3:DeleteObject\",\n \"s3:GetAccelerateConfiguration\",\n \"s3:GetBucketAcl\",\n \"s3:GetBucketCORS\",\n \"s3:GetBucketLocation\",\n \"s3:GetBucketLogging\",\n \"s3:GetBucketObjectLockConfiguration\",\n \"s3:GetBucketPolicy\",\n \"s3:GetBucketPublicAccessBlock\",\n \"s3:GetBucketRequestPayment\",\n \"s3:GetBucketTagging\",\n \"s3:GetBucketVersioning\",\n \"s3:GetBucketWebsite\",\n \"s3:GetEncryptionConfiguration\",\n \"s3:GetLifecycleConfiguration\",\n \"s3:GetObject\",\n \"s3:GetObjectAcl\",\n \"s3:GetObjectTagging\",\n \"s3:GetReplicationConfiguration\",\n \"s3:ListAllMyBuckets\",\n \"s3:ListBucket\",\n \"s3:PutBucketAcl\",\n \"s3:PutBucketLogging\",\n \"s3:PutBucketObjectLockConfiguration\",\n \"s3:PutBucketPolicy\",\n \"s3:PutBucketPublicAccessBlock\",\n \"s3:PutBucketVersioning\",\n \"s3:PutEncryptionConfiguration\",\n \"s3:PutLifecycleConfiguration\",\n \"s3:PutObject\",\n \"s3:PutObjectLegalHold\",\n \"s3:PutObjectRetention\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor44\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"secretsmanager:CreateSecret\",\n \"secretsmanager:DeleteSecret\",\n \"secretsmanager:DescribeSecret\",\n \"secretsmanager:GetResourcePolicy\",\n \"secretsmanager:GetSecretValue\",\n \"secretsmanager:PutSecretValue\",\n \"secretsmanager:TagResource\",\n \"secretsmanager:UntagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor45\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"servicecatalog:CreatePortfolio\",\n \"servicecatalog:DeletePortfolio\",\n \"servicecatalog:DescribePortfolio\",\n \"servicecatalog:TagResource\",\n \"servicecatalog:UpdatePortfolio\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor46\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"sqs:GetQueueAttributes\",\n \"sqs:ListQueueTags\",\n \"sqs:SetQueueAttributes\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor47\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ssm:AddTagsToResource\",\n \"ssm:CreateDocument\",\n \"ssm:CreateMaintenanceWindow\",\n \"ssm:CreatePatchBaseline\",\n \"ssm:DeleteDocument\",\n \"ssm:DeleteMaintenanceWindow\",\n \"ssm:DeleteParameter\",\n \"ssm:DeletePatchBaseline\",\n \"ssm:DeregisterPatchBaselineForPatchGroup\",\n \"ssm:DeregisterTargetFromMaintenanceWindow\",\n \"ssm:DeregisterTaskFromMaintenanceWindow\",\n \"ssm:DescribeDocument\",\n \"ssm:DescribeDocumentPermission\",\n \"ssm:DescribeMaintenanceWindowTargets\",\n \"ssm:DescribeMaintenanceWindowTasks\",\n \"ssm:DescribeParameters\",\n \"ssm:DescribePatchGroups\",\n \"ssm:GetDocument\",\n \"ssm:GetMaintenanceWindow\",\n \"ssm:GetParameter\",\n \"ssm:GetParameters\",\n \"ssm:GetPatchBaseline\",\n \"ssm:ListTagsForResource\",\n \"ssm:PutParameter\",\n \"ssm:RegisterPatchBaselineForPatchGroup\",\n \"ssm:RegisterTargetWithMaintenanceWindow\",\n \"ssm:RegisterTaskWithMaintenanceWindow\",\n \"ssm:RemoveTagsFromResource\",\n \"ssm:UpdateDocument\",\n \"ssm:UpdateMaintenanceWindow\",\n \"ssm:UpdatePatchBaseline\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor48\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"sso:ListInstances\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor49\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"states:CreateActivity\",\n \"states:CreateStateMachine\",\n \"states:DeleteActivity\",\n \"states:DeleteStateMachine\",\n \"states:DescribeActivity\",\n \"states:DescribeStateMachine\",\n \"states:ListTagsForResource\",\n \"states:TagResource\",\n \"states:UntagResource\",\n \"states:UpdateStateMachine\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor50\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"wafv2:CreateIpSet\",\n \"wafv2:CreateRegexPatternSet\",\n \"wafv2:CreateRuleGroup\",\n \"wafv2:CreateWebACL\",\n \"wafv2:DeleteIpSet\",\n \"wafv2:DeleteRegexPatternSet\",\n \"wafv2:DeleteRuleGroup\",\n \"wafv2:DeleteWebACL\",\n \"wafv2:GetIpSet\",\n \"wafv2:GetRegexPatternSet\",\n \"wafv2:GetRuleGroup\",\n \"wafv2:GetWebACL\",\n \"wafv2:ListIPSets\",\n \"wafv2:ListRegexPatternSets\",\n \"wafv2:ListRuleGroups\",\n \"wafv2:ListTagsForResource\",\n \"wafv2:ListWebACLs\",\n \"wafv2:TagResource\",\n \"wafv2:UntagResource\",\n \"wafv2:UpdateIpSet\",\n \"wafv2:UpdateRegexPatternSet\",\n \"wafv2:UpdateRuleGroup\"\n ],\n \"Resource\": \"*\"\n }\n ]\n}\n", Terraform: "resource \"aws_iam_policy\" \"terraform_pike\" {\n name_prefix = \"terraform_pike\"\n path = \"/\"\n description = \"Pike Autogenerated policy from IAC\"\n\n policy = jsonencode({\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"VisualEditor0\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"SNS:CreateTopic\",\n \"SNS:DeleteTopic\",\n \"SNS:GetTopicAttributes\",\n \"SNS:ListTagsForResource\",\n \"SNS:ListTopics\",\n \"SNS:SetTopicAttributes\",\n \"SNS:TagResource\",\n \"SNS:UnTagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor1\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"acm:AddTagsToCertificate\",\n \"acm:DeleteCertificate\",\n \"acm:DescribeCertificate\",\n \"acm:ListTagsForCertificate\",\n \"acm:RemoveTagsFromCertificate\",\n \"acm:RequestCertificate\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor2\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"acm-pa:DescribeCertificateAuthority\",\n \"acm-pa:ListTags\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor3\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"acm-pca:CreateCertificateAuthority\",\n \"acm-pca:DeleteCertificateAuthority\",\n \"acm-pca:GetCertificateAuthorityCertificate\",\n \"acm-pca:UpdateCertificateAuthority\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor4\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"apigateway:DELETE\",\n \"apigateway:GET\",\n \"apigateway:PATCH\",\n \"apigateway:POST\",\n \"apigateway:PUT\",\n \"apigateway:UpdateRestApiPolicy\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor5\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"application-autoscaling:DeleteScalingPolicy\",\n \"application-autoscaling:DeleteScheduledAction\",\n \"application-autoscaling:DeregisterScalableTarget\",\n \"application-autoscaling:DescribeScalableTargets\",\n \"application-autoscaling:DescribeScalingPolicies\",\n \"application-autoscaling:DescribeScheduledActions\",\n \"application-autoscaling:PutScalingPolicy\",\n \"application-autoscaling:PutScheduledAction\",\n \"application-autoscaling:RegisterScalableTarget\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor6\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"application-autoscaling:DeleteScalingPolicy\",\n \"application-autoscaling:DeleteScheduledAction\",\n \"application-autoscaling:DeregisterScalableTarget\",\n \"application-autoscaling:DescribeScalableTargets\",\n \"application-autoscaling:DescribeScalingPolicies\",\n \"application-autoscaling:DescribeScheduledActions\",\n \"application-autoscaling:PutScalingPolicy\",\n \"application-autoscaling:PutScheduledAction\",\n \"application-autoscaling:RegisterScalableTarget\",\n \"autoscaling:AttachLoadBalancers\",\n \"autoscaling:CreateAutoScalingGroup\",\n \"autoscaling:CreateLaunchConfiguration\",\n \"autoscaling:DeleteAutoScalingGroup\",\n \"autoscaling:DeleteLaunchConfiguration\",\n \"autoscaling:DescribeAutoScalingGroups\",\n \"autoscaling:DescribeLaunchConfigurations\",\n \"autoscaling:DescribeScalingActivities\",\n \"autoscaling:DetachLoadBalancers\",\n \"autoscaling:UpdateAutoScalingGroup\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor7\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"budgets:ModifyBudget\",\n \"budgets:ViewBudget\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor8\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"cloudtrail:AddTags\",\n \"cloudtrail:CreateTrail\",\n \"cloudtrail:DeleteTrail\",\n \"cloudtrail:DescribeTrails\",\n \"cloudtrail:GetEventSelectors\",\n \"cloudtrail:GetTrailStatus\",\n \"cloudtrail:ListTags\",\n \"cloudtrail:PutEventSelectors\",\n \"cloudtrail:RemoveTags\",\n \"cloudtrail:StartLogging\",\n \"cloudtrail:UpdateTrail\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor9\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"cloudwatch:DeleteAlarms\",\n \"cloudwatch:DescribeAlarms\",\n \"cloudwatch:ListTagsForResource\",\n \"cloudwatch:PutMetricAlarm\",\n \"cloudwatch:TagResource\",\n \"cloudwatch:UnTagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor10\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"codeartifact:CreateDomain\",\n \"codeartifact:CreateRepository\",\n \"codeartifact:DeleteDomain\",\n \"codeartifact:DeleteDomainPermissionsPolicy\",\n \"codeartifact:DeleteRepository\",\n \"codeartifact:DeleteRepositoryPermissionsPolicy\",\n \"codeartifact:DescribeDomain\",\n \"codeartifact:DescribeRepository\",\n \"codeartifact:GetDomainPermissionsPolicy\",\n \"codeartifact:GetRepositoryPermissionsPolicy\",\n \"codeartifact:ListTagsForResource\",\n \"codeartifact:PutDomainPermissionsPolicy\",\n \"codeartifact:PutRepositoryPermissionsPolicy\",\n \"codeartifact:TagResource\",\n \"codeartifact:UntagResource\",\n \"codeartifact:UpdateRepository\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor11\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"codebuild:BatchGetProjects\",\n \"codebuild:CreateProject\",\n \"codebuild:DeleteProject\",\n \"codebuild:UpdateProject\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor12\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"codecommit:CreateRepository\",\n \"codecommit:DeleteRepository\",\n \"codecommit:GetRepository\",\n \"codecommit:ListBranches\",\n \"codecommit:ListTagsForResource\",\n \"codecommit:TagResource\",\n \"codecommit:UntagResource\",\n \"codecommit:UpdateRepositoryDescription\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor13\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"codepipeline:CreatePipeline\",\n \"codepipeline:DeletePipeline\",\n \"codepipeline:GetPipeline\",\n \"codepipeline:ListTagsForResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor14\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"cognito-idp:AddCustomAttributes\",\n \"cognito-idp:AdminAddUserToGroup\",\n \"cognito-idp:AdminCreateUser\",\n \"cognito-idp:AdminDeleteUser\",\n \"cognito-idp:AdminGetUser\",\n \"cognito-idp:AdminListGroupsForUser\",\n \"cognito-idp:AdminRemoveUserFromGroup\",\n \"cognito-idp:CreateGroup\",\n \"cognito-idp:CreateIdentityProvider\",\n \"cognito-idp:CreateResourceServer\",\n \"cognito-idp:CreateUserPool\",\n \"cognito-idp:CreateUserPoolClient\",\n \"cognito-idp:CreateUserPoolDomain\",\n \"cognito-idp:DeleteGroup\",\n \"cognito-idp:DeleteIdentityProvider\",\n \"cognito-idp:DeleteResourceServer\",\n \"cognito-idp:DeleteUserPool\",\n \"cognito-idp:DeleteUserPoolClient\",\n \"cognito-idp:DeleteUserPoolDomain\",\n \"cognito-idp:DescribeIdentityProvider\",\n \"cognito-idp:DescribeResourceServer\",\n \"cognito-idp:DescribeUserPool\",\n \"cognito-idp:DescribeUserPoolClient\",\n \"cognito-idp:DescribeUserPoolDomain\",\n \"cognito-idp:GetGroup\",\n \"cognito-idp:GetSigningCertificate\",\n \"cognito-idp:GetUICustomization\",\n \"cognito-idp:GetUserPoolMfaConfig\",\n \"cognito-idp:ListUserPoolClients\",\n \"cognito-idp:ListUserPools\",\n \"cognito-idp:SetUICustomization\",\n \"cognito-idp:SetUserPoolMfaConfig\",\n \"cognito-idp:TagResource\",\n \"cognito-idp:UntagResource\",\n \"cognito-idp:UpdateGroup\",\n \"cognito-idp:UpdateIdentityProvider\",\n \"cognito-idp:UpdateResourceServer\",\n \"cognito-idp:UpdateUserPool\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor15\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"dax:CreateParameterGroup\",\n \"dax:CreateSubnetGroup\",\n \"dax:DeleteParameterGroup\",\n \"dax:DeleteSubnetGroup\",\n \"dax:DescribeParameterGroups\",\n \"dax:DescribeParameters\",\n \"dax:DescribeSubnetGroups\",\n \"dax:UpdateParameterGroup\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor16\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ds:AddTagsToResource\",\n \"ds:CreateDirectory\",\n \"ds:CreateLogSubscription\",\n \"ds:DeleteDirectory\",\n \"ds:DeleteLogSubscription\",\n \"ds:ListTagsForResource\",\n \"ds:RemoveTagsFromResource\",\n \"rds:AddRoleToDBCluster\",\n \"rds:AddTagsToResource\",\n \"rds:CreateDBCluster\",\n \"rds:CreateDBClusterEndpoint\",\n \"rds:CreateDBClusterParameterGroup\",\n \"rds:CreateDBClusterSnapshot\",\n \"rds:CreateDBInstance\",\n \"rds:CreateDBParameterGroup\",\n \"rds:CreateDBSubnetGroup\",\n \"rds:CreateGlobalCluster\",\n \"rds:CreateOptionGroup\",\n \"rds:DeleteDBCluster\",\n \"rds:DeleteDBClusterEndpoint\",\n \"rds:DeleteDBClusterParameterGroup\",\n \"rds:DeleteDBClusterSnapshot\",\n \"rds:DeleteDBParameterGroup\",\n \"rds:DeleteDBSubnetGroup\",\n \"rds:DeleteGlobalCluster\",\n \"rds:DeleteOptionGroup\",\n \"rds:DescribeCertificates\",\n \"rds:DescribeDBClusterParameterGroups\",\n \"rds:DescribeDBClusterParameters\",\n \"rds:DescribeDBClusterSnapshots\",\n \"rds:DescribeDBClusters\",\n \"rds:DescribeDBEngineVersions\",\n \"rds:DescribeDBInstances\",\n \"rds:DescribeDBParameterGroups\",\n \"rds:DescribeDBParameters\",\n \"rds:DescribeDBSnapshots\",\n \"rds:DescribeDBSubnetGroups\",\n \"rds:DescribeEventCategories\",\n \"rds:DescribeGlobalClusters\",\n \"rds:DescribeOptionGroups\",\n \"rds:DescribeOrderableDBInstanceOptions\",\n \"rds:ListTagsForResource\",\n \"rds:ModifyDBCluster\",\n \"rds:ModifyDBClusterEndpoint\",\n \"rds:ModifyDBClusterParameterGroup\",\n \"rds:ModifyDBInstance\",\n \"rds:ModifyDBParameterGroup\",\n \"rds:ModifyGlobalCluster\",\n \"rds:ModifyOptionGroup\",\n \"rds:RemoveRoleFromDBCluster\",\n \"rds:RemoveTagsFromResource\",\n \"rds:StartActivityStream\",\n \"rds:StopActivityStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor17\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"dynamodb:BatchWriteItem\",\n \"dynamodb:CreateTable\",\n \"dynamodb:CreateTableReplica\",\n \"dynamodb:DeleteItem\",\n \"dynamodb:DeleteTable\",\n \"dynamodb:DeleteTableReplica\",\n \"dynamodb:DescribeContinuousBackups\",\n \"dynamodb:DescribeTable\",\n \"dynamodb:DescribeTimeToLive\",\n \"dynamodb:GetItem\",\n \"dynamodb:ListTagsOfResource\",\n \"dynamodb:PutItem\",\n \"dynamodb:Query\",\n \"dynamodb:Scan\",\n \"dynamodb:TagResource\",\n \"dynamodb:UntagResource\",\n \"dynamodb:UpdateContinuousBackups\",\n \"dynamodb:UpdateItem\",\n \"dynamodb:UpdateTable\",\n \"dynamodb:UpdateTimeToLive\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor18\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:AllocateAddress\",\n \"ec2:AssociateAddress\",\n \"ec2:AssociateRouteTable\",\n \"ec2:AttachInternetGateway\",\n \"ec2:AttachVolume\",\n \"ec2:AttachVpnGateway\",\n \"ec2:AuthorizeSecurityGroupEgress\",\n \"ec2:AuthorizeSecurityGroupIngress\",\n \"ec2:CancelCapacityReservation\",\n \"ec2:CancelSpotInstanceRequests\",\n \"ec2:CreateCapacityReservation\",\n \"ec2:CreateDefaultVpc\",\n \"ec2:CreateFlowLogs\",\n \"ec2:CreateInternetGateway\",\n \"ec2:CreateKeyPair\",\n \"ec2:CreateLaunchTemplate\",\n \"ec2:CreateLaunchTemplateVersion\",\n \"ec2:CreateNatGateway\",\n \"ec2:CreateNetworkAcl\",\n \"ec2:CreateNetworkAclEntry\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:CreatePlacementGroup\",\n \"ec2:CreateRoute\",\n \"ec2:CreateRouteTable\",\n \"ec2:CreateSecurityGroup\",\n \"ec2:CreateSubnet\",\n \"ec2:CreateTags\",\n \"ec2:CreateVPC\",\n \"ec2:CreateVolume\",\n \"ec2:CreateVpcEndpoint\",\n \"ec2:CreateVpnGateway\",\n \"ec2:DeleteFlowLogs\",\n \"ec2:DeleteInternetGateway\",\n \"ec2:DeleteKeyPair\",\n \"ec2:DeleteLaunchTemplate\",\n \"ec2:DeleteNatGateway\",\n \"ec2:DeleteNetworkAcl\",\n \"ec2:DeleteNetworkAclEntry\",\n \"ec2:DeleteNetworkInterface\",\n \"ec2:DeleteNetworkInterfacePermission\",\n \"ec2:DeletePlacementGroup\",\n \"ec2:DeleteRoute\",\n \"ec2:DeleteRouteTable\",\n \"ec2:DeleteSecurityGroup\",\n \"ec2:DeleteSubnet\",\n \"ec2:DeleteTags\",\n \"ec2:DeleteVPC\",\n \"ec2:DeleteVolume\",\n \"ec2:DeleteVpcEndpoints\",\n \"ec2:DeleteVpnGateway\",\n \"ec2:DescribeAccountAttributes\",\n \"ec2:DescribeAddresses\",\n \"ec2:DescribeAvailabilityZones\",\n \"ec2:DescribeCapacityReservations\",\n \"ec2:DescribeDhcpOptions\",\n \"ec2:DescribeFlowLogs\",\n \"ec2:DescribeImages\",\n \"ec2:DescribeInstanceAttribute\",\n \"ec2:DescribeInstanceCreditSpecifications\",\n \"ec2:DescribeInstanceTypes\",\n \"ec2:DescribeInstances\",\n \"ec2:DescribeInternetGateways\",\n \"ec2:DescribeKeyPairs\",\n \"ec2:DescribeLaunchTemplateVersions\",\n \"ec2:DescribeLaunchTemplates\",\n \"ec2:DescribeNatGateways\",\n \"ec2:DescribeNetworkAcls\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:DescribePlacementGroups\",\n \"ec2:DescribePrefixLists\",\n \"ec2:DescribeRouteTables\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeSpotInstanceRequests\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeTags\",\n \"ec2:DescribeVolumes\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeVpcEndpointServices\",\n \"ec2:DescribeVpcEndpoints\",\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpnGateways\",\n \"ec2:DetachInternetGateway\",\n \"ec2:DetachNetworkInterface\",\n \"ec2:DetachVolume\",\n \"ec2:DetachVpnGateway\",\n \"ec2:DisassociateAddress\",\n \"ec2:DisassociateRouteTable\",\n \"ec2:GetEbsDefaultKmsKeyId\",\n \"ec2:ImportKeyPair\",\n \"ec2:ModifyCapacityReservation\",\n \"ec2:ModifyInstanceAttribute\",\n \"ec2:ModifyVolume\",\n \"ec2:ModifyVpcEndpoint\",\n \"ec2:MonitorInstances\",\n \"ec2:ReleaseAddress\",\n \"ec2:RequestSpotInstances\",\n \"ec2:RevokeSecurityGroupEgress\",\n \"ec2:RevokeSecurityGroupIngress\",\n \"ec2:RunInstances\",\n \"ec2:StartInstances\",\n \"ec2:StopInstances\",\n \"ec2:TerminateInstances\",\n \"ec2:UnmonitorInstances\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor19\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ecr:CreatePullThroughCacheRule\",\n \"ecr:CreateRepository\",\n \"ecr:DeleteLifecyclePolicy\",\n \"ecr:DeletePullThroughCacheRule\",\n \"ecr:DeleteRepository\",\n \"ecr:DescribePullThroughCacheRules\",\n \"ecr:DescribeRepositories\",\n \"ecr:GetAuthorizationToken\",\n \"ecr:GetLifecyclePolicy\",\n \"ecr:ListTagsForResource\",\n \"ecr:PutImageScanningConfiguration\",\n \"ecr:PutLifecyclePolicy\",\n \"ecr:TagResource\",\n \"ecr:UntagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor20\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ecs:CreateCluster\",\n \"ecs:CreateService\",\n \"ecs:DeleteCluster\",\n \"ecs:DeleteService\",\n \"ecs:DeregisterTaskDefinition\",\n \"ecs:DescribeClusters\",\n \"ecs:DescribeServices\",\n \"ecs:DescribeTaskDefinition\",\n \"ecs:UpdateCluster\",\n \"ecs:RegisterTaskDefinition\",\n \"ecs:TagResource\",\n \"ecs:UntagResource\",\n \"ecs:UpdateService\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor21\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"eks:DescribeCluster\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor22\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"elasticache:AddTagsToResource\",\n \"elasticache:CreateCacheParameterGroup\",\n \"elasticache:CreateCacheSubnetGroup\",\n \"elasticache:DeleteCacheParameterGroup\",\n \"elasticache:DeleteCacheSubnetGroup\",\n \"elasticache:DescribeCacheParameterGroups\",\n \"elasticache:DescribeCacheParameters\",\n \"elasticache:DescribeCacheSubnetGroups\",\n \"elasticache:ListTagsForResource\",\n \"elasticache:ModifyCacheParameterGroup\",\n \"elasticache:ModifyCacheSubnetGroup\",\n \"elasticache:RemoveTagsFromResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor23\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"elasticbeanstalk:AddTags\",\n \"elasticbeanstalk:CreateApplication\",\n \"elasticbeanstalk:DeleteApplication\",\n \"elasticbeanstalk:DescribeApplications\",\n \"elasticbeanstalk:ListAvailableSolutionStacks\",\n \"elasticbeanstalk:ListTagsForResource\",\n \"elasticbeanstalk:RemoveTags\",\n \"elasticbeanstalk:UpdateApplicationResourceLifecycle\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor24\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"elasticfilesystem:CreateAccessPoint\",\n \"elasticfilesystem:CreateFileSystem\",\n \"elasticfilesystem:CreateReplicationConfiguration\",\n \"elasticfilesystem:DeleteAccessPoint\",\n \"elasticfilesystem:DeleteFileSystem\",\n \"elasticfilesystem:DeleteFileSystemPolicy\",\n \"elasticfilesystem:DeleteReplicationConfiguration\",\n \"elasticfilesystem:DescribeAccessPoints\",\n \"elasticfilesystem:DescribeBackupPolicy\",\n \"elasticfilesystem:DescribeFileSystemPolicy\",\n \"elasticfilesystem:DescribeFileSystems\",\n \"elasticfilesystem:DescribeLifecycleConfiguration\",\n \"elasticfilesystem:DescribeMountTargetSecurityGroups\",\n \"elasticfilesystem:DescribeMountTargets\",\n \"elasticfilesystem:DescribeReplicationConfigurations\",\n \"elasticfilesystem:PutBackupPolicy\",\n \"elasticfilesystem:PutFileSystemPolicy\",\n \"elasticfilesystem:TagResource\",\n \"elasticfilesystem:UntagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor25\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"elasticloadbalancing:AddTags\",\n \"elasticloadbalancing:AttachLoadBalancerToSubnets\",\n \"elasticloadbalancing:CreateListener\",\n \"elasticloadbalancing:CreateLoadBalancer\",\n \"elasticloadbalancing:CreateLoadBalancerListeners\",\n \"elasticloadbalancing:CreateTargetGroup\",\n \"elasticloadbalancing:DeleteListener\",\n \"elasticloadbalancing:DeleteLoadBalancer\",\n \"elasticloadbalancing:DeleteTargetGroup\",\n \"elasticloadbalancing:DeregisterTargets\",\n \"elasticloadbalancing:DescribeListeners\",\n \"elasticloadbalancing:DescribeLoadBalancerAttributes\",\n \"elasticloadbalancing:DescribeLoadBalancers\",\n \"elasticloadbalancing:DescribeTags\",\n \"elasticloadbalancing:DescribeTargetGroupAttributes\",\n \"elasticloadbalancing:DescribeTargetGroups\",\n \"elasticloadbalancing:DescribeTargetHealth\",\n \"elasticloadbalancing:ModifyListener\",\n \"elasticloadbalancing:ModifyLoadBalancerAttributes\",\n \"elasticloadbalancing:ModifyTargetGroupAttributes\",\n \"elasticloadbalancing:RegisterTargets\",\n \"elasticloadbalancing:RemoveTags\",\n \"elasticloadbalancing:SetSecurityGroups\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor26\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"events:DeleteRule\",\n \"events:DescribeRule\",\n \"events:ListTagsForResource\",\n \"events:ListTargetsByRule\",\n \"events:PutRule\",\n \"events:PutTargets\",\n \"events:RemoveTargets\",\n \"events:TagResource\",\n \"events:UnTagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor27\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"firehose:CreateDeliveryStream\",\n \"firehose:DeleteDeliveryStream\",\n \"firehose:DescribeDeliveryStream\",\n \"firehose:ListTagsForDeliveryStream\",\n \"firehose:TagDeliveryStream\",\n \"firehose:UntagDeliveryStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor28\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"glue:CreateClassifier\",\n \"glue:CreateConnection\",\n \"glue:CreateCrawler\",\n \"glue:CreateDatabase\",\n \"glue:CreateJob\",\n \"glue:CreateMLTransform\",\n \"glue:CreateRegistry\",\n \"glue:CreateSchema\",\n \"glue:CreateScript\",\n \"glue:CreateSecurityConfiguration\",\n \"glue:CreateTable\",\n \"glue:CreateTrigger\",\n \"glue:CreateUserDefinedFunction\",\n \"glue:CreateWorkflow\",\n \"glue:DeleteClassifier\",\n \"glue:DeleteConnection\",\n \"glue:DeleteCrawler\",\n \"glue:DeleteDatabase\",\n \"glue:DeleteJob\",\n \"glue:DeleteMLTransform\",\n \"glue:DeleteRegistry\",\n \"glue:DeleteResourcePolicy\",\n \"glue:DeleteSchema\",\n \"glue:DeleteSecurityConfiguration\",\n \"glue:DeleteTable\",\n \"glue:DeleteTrigger\",\n \"glue:DeleteUserDefinedFunction\",\n \"glue:DeleteWorkflow\",\n \"glue:GetClassifier\",\n \"glue:GetConnection\",\n \"glue:GetCrawler\",\n \"glue:GetDataCatalogEncryptionSettings\",\n \"glue:GetDatabase\",\n \"glue:GetJob\",\n \"glue:GetMLTransform\",\n \"glue:GetRegistry\",\n \"glue:GetResourcePolicy\",\n \"glue:GetSchema\",\n \"glue:GetSchemaVersion\",\n \"glue:GetSecurityConfiguration\",\n \"glue:GetTable\",\n \"glue:GetTags\",\n \"glue:GetTrigger\",\n \"glue:GetUserDefinedFunction\",\n \"glue:GetWorkflow\",\n \"glue:PutDataCatalogEncryptionSettings\",\n \"glue:PutResourcePolicy\",\n \"glue:TagResource\",\n \"glue:UntagResource\",\n \"glue:UpdateClassifier\",\n \"glue:UpdateConnection\",\n \"glue:UpdateCrawler\",\n \"glue:UpdateDatabase\",\n \"glue:UpdateJob\",\n \"glue:UpdateMLTransform\",\n \"glue:UpdateRegistry\",\n \"glue:UpdateSchema\",\n \"glue:UpdateTable\",\n \"glue:UpdateTrigger\",\n \"glue:UpdateUserDefinedFunction\",\n \"glue:UpdateWorkflow\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor29\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"iam:AddRoleToInstanceProfile\",\n \"iam:AddUserToGroup\",\n \"iam:AttachGroupPolicy\",\n \"iam:AttachRolePolicy\",\n \"iam:AttachUserPolicy\",\n \"iam:CreateAccessKey\",\n \"iam:CreateGroup\",\n \"iam:CreateInstanceProfile\",\n \"iam:CreateLoginProfile\",\n \"iam:CreatePolicy\",\n \"iam:CreateRole\",\n \"iam:CreateServiceLinkedRole\",\n \"iam:CreateUser\",\n \"iam:DeleteAccessKey\",\n \"iam:DeleteGroup\",\n \"iam:DeleteGroupPolicy\",\n \"iam:DeleteInstanceProfile\",\n \"iam:DeleteLoginProfile\",\n \"iam:DeletePolicy\",\n \"iam:DeleteRole\",\n \"iam:DeleteRolePolicy\",\n \"iam:DeleteServiceLinkedRole\",\n \"iam:DeleteUser\",\n \"iam:DeleteUserPolicy\",\n \"iam:DetachGroupPolicy\",\n \"iam:DetachRolePolicy\",\n \"iam:DetachUserPolicy\",\n \"iam:GetGroup\",\n \"iam:GetGroupPolicy\",\n \"iam:GetInstanceProfile\",\n \"iam:GetLoginProfile\",\n \"iam:GetPolicy\",\n \"iam:GetPolicyVersion\",\n \"iam:GetRole\",\n \"iam:GetRolePolicy\",\n \"iam:GetServiceLinkedRoleDeletionStatus\",\n \"iam:GetUser\",\n \"iam:GetUserPolicy\",\n \"iam:ListAccessKeys\",\n \"iam:ListAttachedGroupPolicies\",\n \"iam:ListAttachedRolePolicies\",\n \"iam:ListAttachedUserPolicies\",\n \"iam:ListEntitiesForPolicy\",\n \"iam:ListGroupsForUser\",\n \"iam:ListInstanceProfilesForRole\",\n \"iam:ListPolicies\",\n \"iam:ListPolicyVersions\",\n \"iam:ListRolePolicies\",\n \"iam:PassRole\",\n \"iam:PutGroupPolicy\",\n \"iam:PutRolePolicy\",\n \"iam:PutUserPolicy\",\n \"iam:RemoveRoleFromInstanceProfile\",\n \"iam:RemoveUserFromGroup\",\n \"iam:TagPolicy\",\n \"iam:TagRole\",\n \"iam:TagUser\",\n \"iam:UnTagRole\",\n \"iam:UnTagUser\",\n \"iam:UntagPolicy\",\n \"iam:UpdateAccessKey\",\n \"iam:UpdateRoleDescription\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor30\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"inspector:CreateAssessmentTarget\",\n \"inspector:CreateAssessmentTemplate\",\n \"inspector:CreateResourceGroup\",\n \"inspector:DeleteAssessmentTarget\",\n \"inspector:DeleteAssessmentTemplate\",\n \"inspector:DescribeAssessmentTargets\",\n \"inspector:DescribeAssessmentTemplates\",\n \"inspector:DescribeResourceGroups\",\n \"inspector:ListEventSubscriptions\",\n \"inspector:ListRulesPackages\",\n \"inspector:ListTagsForResource\",\n \"inspector:SetTagsForResource\",\n \"inspector:SubscribeToEvent\",\n \"inspector:UnsubscribeFromEvent\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor31\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"kinesis:AddTagsToStream\",\n \"kinesis:CreateStream\",\n \"kinesis:DeleteStream\",\n \"kinesis:DescribeStreamSummary\",\n \"kinesis:EnableEnhancedMonitoring\",\n \"kinesis:IncreaseStreamRetentionPeriod\",\n \"kinesis:ListTagsForStream\",\n \"kinesis:RemoveTagsFromStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor32\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"kinesisvideo:CreateStream\",\n \"kinesisvideo:DeleteStream\",\n \"kinesisvideo:DescribeStream\",\n \"kinesisvideo:ListTagsForStream\",\n \"kinesisvideo:TagStream\",\n \"kinesisvideo:UntagStream\",\n \"kinesisvideo:UpdateStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor33\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"kms:CreateAlias\",\n \"kms:CreateGrant\",\n \"kms:CreateKey\",\n \"kms:Decrypt\",\n \"kms:DeleteAlias\",\n \"kms:DescribeKey\",\n \"kms:DisableKey\",\n \"kms:EnableKey\",\n \"kms:EnableKeyRotation\",\n \"kms:Encrypt\",\n \"kms:GenerateDataKey*\",\n \"kms:GetKeyPolicy\",\n \"kms:GetKeyRotationStatus\",\n \"kms:ListAliases\",\n \"kms:ListResourceTags\",\n \"kms:PutKeyPolicy\",\n \"kms:ReEncrypt*\",\n \"kms:ScheduleKeyDeletion\",\n \"kms:TagResource\",\n \"kms:UntagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor34\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"lambda:AddPermission\",\n \"lambda:CreateAlias\",\n \"lambda:CreateFunction\",\n \"lambda:DeleteAlias\",\n \"lambda:DeleteFunction\",\n \"lambda:GetAlias\",\n \"lambda:GetFunction\",\n \"lambda:GetFunctionCodeSigningConfig\",\n \"lambda:GetPolicy\",\n \"lambda:ListVersionsByFunction\",\n \"lambda:RemovePermission\",\n \"lambda:TagResource\",\n \"lambda:UntagResource\",\n \"lambda:UpdateAlias\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor35\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"logs:CreateLogGroup\",\n \"logs:DeleteLogGroup\",\n \"logs:DeleteMetricFilter\",\n \"logs:DeleteResourcePolicy\",\n \"logs:DeleteRetentionPolicy\",\n \"logs:DeleteSubscriptionFilter\",\n \"logs:DescribeLogGroups\",\n \"logs:DescribeMetricFilters\",\n \"logs:DescribeResourcePolicies\",\n \"logs:DescribeSubscriptionFilters\",\n \"logs:ListTagsLogGroup\",\n \"logs:PutMetricFilter\",\n \"logs:PutResourcePolicy\",\n \"logs:PutRetentionPolicy\",\n \"logs:PutSubscriptionFilter\",\n \"logs:TagLogGroup\",\n \"logs:UntagLogGroup\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor36\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"memorydb:CreateSubnetGroup\",\n \"memorydb:DeleteSubnetGroup\",\n \"memorydb:DescribeSubnetGroups\",\n \"memorydb:ListTags\",\n \"memorydb:TagResource\",\n \"memorydb:UntagResource\",\n \"memorydb:UpdateSubnetGroup\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor37\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"mq:CreateBroker\",\n \"mq:CreateConfiguration\",\n \"mq:CreateTags\",\n \"mq:CreateUser\",\n \"mq:DeleteBroker\",\n \"mq:DeleteTags\",\n \"mq:DeleteUser\",\n \"mq:DescribeBroker\",\n \"mq:DescribeConfiguration\",\n \"mq:DescribeConfigurationRevision\",\n \"mq:DescribeUser\",\n \"mq:RebootBroker\",\n \"mq:UpdateBroker\",\n \"mq:UpdateConfiguration\",\n \"mq:UpdateUser\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor38\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"organizations:DescribeOrganization\",\n \"organizations:ListAWSServiceAccessForOrganization\",\n \"organizations:ListAccounts\",\n \"organizations:ListRoots\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor39\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"outposts:ListOutposts\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor40\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"rds:AddRoleToDBCluster\",\n \"rds:AddTagsToResource\",\n \"rds:CreateDBCluster\",\n \"rds:CreateDBClusterEndpoint\",\n \"rds:CreateDBClusterParameterGroup\",\n \"rds:CreateDBClusterSnapshot\",\n \"rds:CreateDBInstance\",\n \"rds:CreateDBParameterGroup\",\n \"rds:CreateDBSubnetGroup\",\n \"rds:CreateGlobalCluster\",\n \"rds:CreateOptionGroup\",\n \"rds:DeleteDBCluster\",\n \"rds:DeleteDBClusterEndpoint\",\n \"rds:DeleteDBClusterParameterGroup\",\n \"rds:DeleteDBClusterSnapshot\",\n \"rds:DeleteDBParameterGroup\",\n \"rds:DeleteDBSubnetGroup\",\n \"rds:DeleteGlobalCluster\",\n \"rds:DeleteOptionGroup\",\n \"rds:DescribeCertificates\",\n \"rds:DescribeDBClusterParameterGroups\",\n \"rds:DescribeDBClusterParameters\",\n \"rds:DescribeDBClusterSnapshots\",\n \"rds:DescribeDBClusters\",\n \"rds:DescribeDBEngineVersions\",\n \"rds:DescribeDBInstances\",\n \"rds:DescribeDBParameterGroups\",\n \"rds:DescribeDBParameters\",\n \"rds:DescribeDBSnapshots\",\n \"rds:DescribeDBSubnetGroups\",\n \"rds:DescribeEventCategories\",\n \"rds:DescribeGlobalClusters\",\n \"rds:DescribeOptionGroups\",\n \"rds:DescribeOrderableDBInstanceOptions\",\n \"rds:ListTagsForResource\",\n \"rds:ModifyDBCluster\",\n \"rds:ModifyDBClusterEndpoint\",\n \"rds:ModifyDBClusterParameterGroup\",\n \"rds:ModifyDBInstance\",\n \"rds:ModifyDBParameterGroup\",\n \"rds:ModifyGlobalCluster\",\n \"rds:ModifyOptionGroup\",\n \"rds:RemoveRoleFromDBCluster\",\n \"rds:RemoveTagsFromResource\",\n \"rds:StartActivityStream\",\n \"rds:StopActivityStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor41\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"redshift:CreateAuthenticationProfile\",\n \"redshift:CreateCluster\",\n \"redshift:CreateClusterParameterGroup\",\n \"redshift:CreateClusterSubnetGroup\",\n \"redshift:CreateEventSubscription\",\n \"redshift:CreateHsmClientCertificate\",\n \"redshift:CreateHsmConfiguration\",\n \"redshift:CreateScheduledAction\",\n \"redshift:CreateSnapshotCopyGrant\",\n \"redshift:CreateSnapshotSchedule\",\n \"redshift:CreateTags\",\n \"redshift:CreateUsageLimit\",\n \"redshift:DeleteAuthenticationProfile\",\n \"redshift:DeleteCluster\",\n \"redshift:DeleteClusterParameterGroup\",\n \"redshift:DeleteClusterSubnetGroup\",\n \"redshift:DeleteEventSubscription\",\n \"redshift:DeleteHsmClientCertificate\",\n \"redshift:DeleteHsmConfiguration\",\n \"redshift:DeleteScheduledAction\",\n \"redshift:DeleteSnapshotCopyGrant\",\n \"redshift:DeleteSnapshotSchedule\",\n \"redshift:DeleteTags\",\n \"redshift:DeleteUsageLimit\",\n \"redshift:DescribeAuthenticationProfiles\",\n \"redshift:DescribeClusterParameterGroups\",\n \"redshift:DescribeClusterParameters\",\n \"redshift:DescribeClusterSubnetGroups\",\n \"redshift:DescribeClusters\",\n \"redshift:DescribeEventSubscriptions\",\n \"redshift:DescribeHsmClientCertificates\",\n \"redshift:DescribeHsmConfigurations\",\n \"redshift:DescribeLoggingStatus\",\n \"redshift:DescribeOrderableClusterOptions\",\n \"redshift:DescribeScheduledActions\",\n \"redshift:DescribeSnapshotCopyGrants\",\n \"redshift:DescribeSnapshotSchedules\",\n \"redshift:DescribeUsageLimits\",\n \"redshift:DisableLogging\",\n \"redshift:EnableLogging\",\n \"redshift:GetClusterCredentials\",\n \"redshift:ModifyAuthenticationProfile\",\n \"redshift:ModifyCluster\",\n \"redshift:ModifyClusterIamRoles\",\n \"redshift:ModifyClusterParameterGroup\",\n \"redshift:ModifyClusterSnapshotSchedule\",\n \"redshift:ModifyClusterSubnetGroup\",\n \"redshift:ModifyEventSubscription\",\n \"redshift:ModifyScheduledAction\",\n \"redshift:ModifySnapshotSchedule\",\n \"redshift:ModifyUsageLimit\",\n \"redshift:PauseCluster\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor42\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"route53:AssociateVPCWithHostedZone\",\n \"route53:ChangeResourceRecordSets\",\n \"route53:ChangeTagsForResource\",\n \"route53:CreateHostedZone\",\n \"route53:DeleteHostedZone\",\n \"route53:GetChange\",\n \"route53:GetHostedZone\",\n \"route53:ListHostedZones\",\n \"route53:ListResourceRecordSets\",\n \"route53:ListTagsForResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor43\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:CreateBucket\",\n \"s3:DeleteBucket\",\n \"s3:DeleteObject\",\n \"s3:GetAccelerateConfiguration\",\n \"s3:GetBucketAcl\",\n \"s3:GetBucketCORS\",\n \"s3:GetBucketLocation\",\n \"s3:GetBucketLogging\",\n \"s3:GetBucketObjectLockConfiguration\",\n \"s3:GetBucketPolicy\",\n \"s3:GetBucketPublicAccessBlock\",\n \"s3:GetBucketRequestPayment\",\n \"s3:GetBucketTagging\",\n \"s3:GetBucketVersioning\",\n \"s3:GetBucketWebsite\",\n \"s3:GetEncryptionConfiguration\",\n \"s3:GetLifecycleConfiguration\",\n \"s3:GetObject\",\n \"s3:GetObjectAcl\",\n \"s3:GetObjectTagging\",\n \"s3:GetReplicationConfiguration\",\n \"s3:ListAllMyBuckets\",\n \"s3:ListBucket\",\n \"s3:PutBucketAcl\",\n \"s3:PutBucketLogging\",\n \"s3:PutBucketObjectLockConfiguration\",\n \"s3:PutBucketPolicy\",\n \"s3:PutBucketPublicAccessBlock\",\n \"s3:PutBucketVersioning\",\n \"s3:PutEncryptionConfiguration\",\n \"s3:PutLifecycleConfiguration\",\n \"s3:PutObject\",\n \"s3:PutObjectLegalHold\",\n \"s3:PutObjectRetention\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor44\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"secretsmanager:CreateSecret\",\n \"secretsmanager:DeleteSecret\",\n \"secretsmanager:DescribeSecret\",\n \"secretsmanager:GetResourcePolicy\",\n \"secretsmanager:GetSecretValue\",\n \"secretsmanager:PutSecretValue\",\n \"secretsmanager:TagResource\",\n \"secretsmanager:UntagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor45\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"servicecatalog:CreatePortfolio\",\n \"servicecatalog:DeletePortfolio\",\n \"servicecatalog:DescribePortfolio\",\n \"servicecatalog:TagResource\",\n \"servicecatalog:UpdatePortfolio\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor46\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"sqs:GetQueueAttributes\",\n \"sqs:ListQueueTags\",\n \"sqs:SetQueueAttributes\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor47\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ssm:AddTagsToResource\",\n \"ssm:CreateDocument\",\n \"ssm:CreateMaintenanceWindow\",\n \"ssm:CreatePatchBaseline\",\n \"ssm:DeleteDocument\",\n \"ssm:DeleteMaintenanceWindow\",\n \"ssm:DeleteParameter\",\n \"ssm:DeletePatchBaseline\",\n \"ssm:DeregisterPatchBaselineForPatchGroup\",\n \"ssm:DeregisterTargetFromMaintenanceWindow\",\n \"ssm:DeregisterTaskFromMaintenanceWindow\",\n \"ssm:DescribeDocument\",\n \"ssm:DescribeDocumentPermission\",\n \"ssm:DescribeMaintenanceWindowTargets\",\n \"ssm:DescribeMaintenanceWindowTasks\",\n \"ssm:DescribeParameters\",\n \"ssm:DescribePatchGroups\",\n \"ssm:GetDocument\",\n \"ssm:GetMaintenanceWindow\",\n \"ssm:GetParameter\",\n \"ssm:GetParameters\",\n \"ssm:GetPatchBaseline\",\n \"ssm:ListTagsForResource\",\n \"ssm:PutParameter\",\n \"ssm:RegisterPatchBaselineForPatchGroup\",\n \"ssm:RegisterTargetWithMaintenanceWindow\",\n \"ssm:RegisterTaskWithMaintenanceWindow\",\n \"ssm:RemoveTagsFromResource\",\n \"ssm:UpdateDocument\",\n \"ssm:UpdateMaintenanceWindow\",\n \"ssm:UpdatePatchBaseline\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor48\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"sso:ListInstances\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor49\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"states:CreateActivity\",\n \"states:CreateStateMachine\",\n \"states:DeleteActivity\",\n \"states:DeleteStateMachine\",\n \"states:DescribeActivity\",\n \"states:DescribeStateMachine\",\n \"states:ListTagsForResource\",\n \"states:TagResource\",\n \"states:UntagResource\",\n \"states:UpdateStateMachine\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor50\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"wafv2:CreateIpSet\",\n \"wafv2:CreateRegexPatternSet\",\n \"wafv2:CreateRuleGroup\",\n \"wafv2:CreateWebACL\",\n \"wafv2:DeleteIpSet\",\n \"wafv2:DeleteRegexPatternSet\",\n \"wafv2:DeleteRuleGroup\",\n \"wafv2:DeleteWebACL\",\n \"wafv2:GetIpSet\",\n \"wafv2:GetRegexPatternSet\",\n \"wafv2:GetRuleGroup\",\n \"wafv2:GetWebACL\",\n \"wafv2:ListIPSets\",\n \"wafv2:ListRegexPatternSets\",\n \"wafv2:ListRuleGroups\",\n \"wafv2:ListTagsForResource\",\n \"wafv2:ListWebACLs\",\n \"wafv2:TagResource\",\n \"wafv2:UntagResource\",\n \"wafv2:UpdateIpSet\",\n \"wafv2:UpdateRegexPatternSet\",\n \"wafv2:UpdateRuleGroup\"\n ],\n \"Resource\": \"*\"\n }\n ]\n})\n}\n", }, GCP: "", AZURE: ""} @@ -694,8 +689,7 @@ func TestWriteOutput(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - if err := pike.WriteOutput( - tt.args.OutPolicy, tt.args.output, tt.args.location); (err != nil) != tt.wantErr { + if err := WriteOutput(tt.args.OutPolicy, tt.args.output, tt.args.location, ""); (err != nil) != tt.wantErr { t.Errorf("WriteOutput() error = %v, wantErr %v", err, tt.wantErr) } }) @@ -722,7 +716,7 @@ func TestLocateTerraform(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - got, err := pike.LocateTerraform() + got, err := LocateTerraform() if (err != nil) != tt.wantErr { t.Errorf("LocateTerraform() error = %v, wantErr %v", err, tt.wantErr) @@ -750,7 +744,7 @@ func TestInitWithEmptyDir(t *testing.T) { //goland:noinspection GoUnhandledErrorResult defer os.RemoveAll(tempDir) - tfPath, modules, err := pike.Init(tempDir) + tfPath, modules, err := Init(tempDir) if err == nil { t.Error("Expected error for empty directory, got nil") } @@ -787,7 +781,7 @@ func TestInitWithInvalidTerraformConfig(t *testing.T) { t.Fatal(err) } - _, modules, err := pike.Init(tempDir) + _, modules, err := Init(tempDir) if err == nil { t.Error("Expected error for invalid terraform config, got nil") } @@ -820,7 +814,7 @@ func TestInitWithModulesJsonOnly(t *testing.T) { t.Fatal(err) } - _, modules, err := pike.Init(tempDir) + _, modules, err := Init(tempDir) if err != nil { t.Errorf("Unexpected error: %v", err) } @@ -854,7 +848,7 @@ func TestInitWithDSStoreOnly(t *testing.T) { t.Fatal(err) } - _, modules, err := pike.Init(tempDir) + _, modules, err := Init(tempDir) if err != nil { t.Errorf("Unexpected error: %v", err) } @@ -867,7 +861,7 @@ func TestInitWithDSStoreOnly(t *testing.T) { func TestInitWithNonExistentDir(t *testing.T) { t.Parallel() - tfPath, modules, err := pike.Init("/path/that/does/not/exist") + tfPath, modules, err := Init("/path/that/does/not/exist") if err == nil { t.Error("Expected error for non-existent directory, got nil") diff --git a/src/secrets_Internal_test.go b/src/secrets_Internal_test.go new file mode 100644 index 00000000..d68d32df --- /dev/null +++ b/src/secrets_Internal_test.go @@ -0,0 +1,284 @@ +package pike + +import ( + "errors" + "fmt" + "strings" + "testing" +) + +func Test_splitHub(t *testing.T) { + t.Parallel() + + type args struct { + repository string + } + + tests := []struct { + name string + args args + want string + want1 string + wantErr bool + }{ + { + name: "valid short format", + args: args{ + repository: "jameswoolfenden/pike", + }, + want: "jameswoolfenden", + want1: "pike", + wantErr: false, + }, + { + name: "valid long format", + args: args{ + repository: "https://github.com/jameswoolfenden/pike", + }, + want: "jameswoolfenden", + want1: "pike", + wantErr: false, + }, + { + name: "invalid format", + args: args{ + repository: "jameswoolfenden/pike/extra", + }, + want: "", + want1: "", + wantErr: true, + }, + { + name: "empty string", + args: args{ + repository: "", + }, + want: "", + want1: "", + wantErr: true, + }, + { + name: "single segment", + args: args{ + repository: "onlyone", + }, + want: "", + want1: "", + wantErr: true, + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + got, got1, err := SplitHub(tt.args.repository) + if (err != nil) != tt.wantErr { + t.Errorf("SplitHub() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("SplitHub() got = %v, want %v", got, tt.want) + } + if got1 != tt.want1 { + t.Errorf("SplitHub() got1 = %v, want %v", got1, tt.want1) + } + }) + } +} + +func TestEncryptPlaintext_Extended(t *testing.T) { + t.Parallel() + + type args struct { + plaintext string + publicKeyB64 string + } + + tests := []struct { + name string + args args + want []byte + wantErr bool + }{ + { + name: "valid encryption", + args: args{ + plaintext: "test secret", + publicKeyB64: "VGhpcyBpcyBhIHZhbGlkIGJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXk=", + }, + wantErr: false, + }, + { + name: "empty plaintext", + args: args{ + plaintext: "", + publicKeyB64: "VGhpcyBpcyBhIHZhbGlkIGJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXk=", + }, + wantErr: false, + }, + { + name: "invalid base64 public key", + args: args{ + plaintext: "test secret", + publicKeyB64: "invalid-base64!@#$", + }, + wantErr: true, + }, + { + name: "empty public key", + args: args{ + plaintext: "test secret", + publicKeyB64: "", + }, + wantErr: true, + }, + //{ + // name: "public key too short", + // args: args{ + // plaintext: "test secret", + // publicKeyB64: "aGVsbG8=", + // }, + // wantErr: true, + //}, + { + name: "very long plaintext", + args: args{ + plaintext: string(make([]byte, 1024*1024)), // 1MB of data + publicKeyB64: "VGhpcyBpcyBhIHZhbGlkIGJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXk=", + }, + wantErr: false, + }, + { + name: "special characters in plaintext", + args: args{ + plaintext: "!@#$%^&*()_+{}|:<>?~`-=[]\\;',./", + publicKeyB64: "VGhpcyBpcyBhIHZhbGlkIGJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXk=", + }, + wantErr: false, + }, + { + name: "unicode characters in plaintext", + args: args{ + plaintext: "Hello ä¸–į•Œ 🌍", + publicKeyB64: "VGhpcyBpcyBhIHZhbGlkIGJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXk=", + }, + wantErr: false, + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + got, err := EncryptPlaintext(tt.args.plaintext, tt.args.publicKeyB64) + if (err != nil) != tt.wantErr { + t.Errorf("EncryptPlaintext() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !tt.wantErr { + if got == nil { + t.Error("EncryptPlaintext() returned nil for successful encryption") + } + if len(got) == 0 { + t.Error("EncryptPlaintext() returned empty bytes for successful encryption") + } + } + }) + } +} + +func TestAwsCredentialsError_Error(t *testing.T) { + tests := []struct { + name string + err error + expected string + }{ + { + name: "simple error message", + err: errors.New("connection timeout"), + expected: "failed to get AWS credentials: connection timeout", + }, + { + name: "empty error message", + err: errors.New(""), + expected: "failed to get AWS credentials: ", + }, + { + name: "formatted error message", + err: fmt.Errorf("invalid region: %s", "us-invalid-1"), + expected: "failed to get AWS credentials: invalid region: us-invalid-1", + }, + { + name: "wrapped error", + err: fmt.Errorf("wrapped: %w", errors.New("original error")), + expected: "failed to get AWS credentials: wrapped: original error", + }, + { + name: "nil error", + err: nil, + expected: "failed to get AWS credentials: ", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &awsCredentialsError{err: tt.err} + result := e.Error() + + if result != tt.expected { + t.Errorf("awsCredentialsError.Error() = %q, expected %q", result, tt.expected) + } + }) + } +} + +func TestAwsCredentialsError_ErrorInterface(t *testing.T) { + err := &awsCredentialsError{err: errors.New("test error")} + + // Verify it implements the error interface + var _ error = err + + // Verify it can be used as an error + if err.Error() == "" { + t.Error("awsCredentialsError should return non-empty error message") + } +} + +func TestAwsCredentialsError_ErrorFormatting(t *testing.T) { + testErr := errors.New("access denied") + awsErr := &awsCredentialsError{err: testErr} + + errorMsg := awsErr.Error() + + // Verify the error message contains the expected prefix + expectedPrefix := "failed to get AWS credentials:" + if !strings.HasPrefix(errorMsg, expectedPrefix) { + t.Errorf("Error message should start with %q, got %q", expectedPrefix, errorMsg) + } + + // Verify the original error message is included + if !strings.Contains(errorMsg, testErr.Error()) { + t.Errorf("Error message should contain original error %q, got %q", testErr.Error(), errorMsg) + } +} + +func TestAwsCredentialsError_MultipleInstances(t *testing.T) { + err1 := &awsCredentialsError{err: errors.New("error 1")} + err2 := &awsCredentialsError{err: errors.New("error 2")} + + msg1 := err1.Error() + msg2 := err2.Error() + + if msg1 == msg2 { + t.Error("Different awsCredentialsError instances should produce different error messages") + } + + if !strings.Contains(msg1, "error 1") { + t.Errorf("First error should contain 'error 1', got %q", msg1) + } + + if !strings.Contains(msg2, "error 2") { + t.Errorf("Second error should contain 'error 2', got %q", msg2) + } +} diff --git a/src/secrets_test.go b/src/secrets_test.go index 3eeccab9..48bbd643 100644 --- a/src/secrets_test.go +++ b/src/secrets_test.go @@ -8,10 +8,9 @@ import ( "reflect" "testing" - "golang.org/x/oauth2" - "github.com/google/go-github/v47/github" pike "github.com/jameswoolfenden/pike/src" + "golang.org/x/oauth2" ) func TestSetRepoSecret(t *testing.T) { @@ -97,86 +96,6 @@ func TestSetRepoSecret(t *testing.T) { } } -func Test_splitHub(t *testing.T) { - t.Parallel() - - type args struct { - repository string - } - - tests := []struct { - name string - args args - want string - want1 string - wantErr bool - }{ - { - name: "valid short format", - args: args{ - repository: "jameswoolfenden/pike", - }, - want: "jameswoolfenden", - want1: "pike", - wantErr: false, - }, - { - name: "valid long format", - args: args{ - repository: "https://github.com/jameswoolfenden/pike", - }, - want: "jameswoolfenden", - want1: "pike", - wantErr: false, - }, - { - name: "invalid format", - args: args{ - repository: "jameswoolfenden/pike/extra", - }, - want: "", - want1: "", - wantErr: true, - }, - { - name: "empty string", - args: args{ - repository: "", - }, - want: "", - want1: "", - wantErr: true, - }, - { - name: "single segment", - args: args{ - repository: "onlyone", - }, - want: "", - want1: "", - wantErr: true, - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - got, got1, err := pike.SplitHub(tt.args.repository) - if (err != nil) != tt.wantErr { - t.Errorf("SplitHub() error = %v, wantErr %v", err, tt.wantErr) - return - } - if got != tt.want { - t.Errorf("SplitHub() got = %v, want %v", got, tt.want) - } - if got1 != tt.want1 { - t.Errorf("SplitHub() got1 = %v, want %v", got1, tt.want1) - } - }) - } -} - func Test_getGithubClient(t *testing.T) { t.Parallel() @@ -427,104 +346,3 @@ func TestGetPublicKeyDetails_Integration(t *testing.T) { }) } } - -func TestEncryptPlaintext_Extended(t *testing.T) { - t.Parallel() - - type args struct { - plaintext string - publicKeyB64 string - } - - tests := []struct { - name string - args args - want []byte - wantErr bool - }{ - { - name: "valid encryption", - args: args{ - plaintext: "test secret", - publicKeyB64: "VGhpcyBpcyBhIHZhbGlkIGJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXk=", - }, - wantErr: false, - }, - { - name: "empty plaintext", - args: args{ - plaintext: "", - publicKeyB64: "VGhpcyBpcyBhIHZhbGlkIGJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXk=", - }, - wantErr: false, - }, - { - name: "invalid base64 public key", - args: args{ - plaintext: "test secret", - publicKeyB64: "invalid-base64!@#$", - }, - wantErr: true, - }, - { - name: "empty public key", - args: args{ - plaintext: "test secret", - publicKeyB64: "", - }, - wantErr: true, - }, - { - name: "public key too short", - args: args{ - plaintext: "test secret", - publicKeyB64: "aGVsbG8=", - }, - wantErr: true, - }, - { - name: "very long plaintext", - args: args{ - plaintext: string(make([]byte, 1024*1024)), // 1MB of data - publicKeyB64: "VGhpcyBpcyBhIHZhbGlkIGJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXk=", - }, - wantErr: false, - }, - { - name: "special characters in plaintext", - args: args{ - plaintext: "!@#$%^&*()_+{}|:<>?~`-=[]\\;',./", - publicKeyB64: "VGhpcyBpcyBhIHZhbGlkIGJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXk=", - }, - wantErr: false, - }, - { - name: "unicode characters in plaintext", - args: args{ - plaintext: "Hello ä¸–į•Œ 🌍", - publicKeyB64: "VGhpcyBpcyBhIHZhbGlkIGJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXk=", - }, - wantErr: false, - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - got, err := pike.EncryptPlaintext(tt.args.plaintext, tt.args.publicKeyB64) - if (err != nil) != tt.wantErr { - t.Errorf("EncryptPlaintext() error = %v, wantErr %v", err, tt.wantErr) - return - } - if !tt.wantErr { - if got == nil { - t.Error("EncryptPlaintext() returned nil for successful encryption") - } - if len(got) == 0 { - t.Error("EncryptPlaintext() returned empty bytes for successful encryption") - } - } - }) - } -} diff --git a/src/utils_test.go b/src/utils_test.go index 233838a7..3097fbad 100644 --- a/src/utils_test.go +++ b/src/utils_test.go @@ -1,11 +1,11 @@ -package pike_test +package pike import ( + "errors" "os" "reflect" + "strings" "testing" - - pike "github.com/jameswoolfenden/pike/src" ) func Test_randSeq(t *testing.T) { @@ -28,7 +28,7 @@ func Test_randSeq(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - if got := pike.RandSeq(tt.args.n); len(got) != tt.want { + if got := RandSeq(tt.args.n); len(got) != tt.want { t.Errorf("RandSeq() = %v, want %v", got, tt.want) } }) @@ -101,7 +101,7 @@ func TestReplaceSection(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - if err := pike.ReplaceSection(tt.args.source, tt.args.middle, tt.args.autoadd); (err != nil) != tt.wantErr { + if err := ReplaceSection(tt.args.source, tt.args.middle, tt.args.autoadd); (err != nil) != tt.wantErr { t.Errorf("ReplaceSection() error = %v, wantErr %v", err, tt.wantErr) } }) @@ -130,7 +130,7 @@ func Test_fileExists(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - if got := pike.FileExists(tt.args.filename); got != tt.want { + if got := FileExists(tt.args.filename); got != tt.want { t.Errorf("FileExists() = %v, want %v", got, tt.want) } }) @@ -157,7 +157,7 @@ func TestRandSeq(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - if got := pike.RandSeq(tt.args.n); got == tt.notWant { + if got := RandSeq(tt.args.n); got == tt.notWant { t.Errorf("RandSeq() = %v, want %v", got, tt.notWant) } }) @@ -216,7 +216,7 @@ func TestAlmostEqual(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - if got := pike.AlmostEqual(tt.args.a, tt.args.b); got != tt.want { + if got := AlmostEqual(tt.args.a, tt.args.b); got != tt.want { t.Errorf("AlmostEqual() = %v, want %v", got, tt.want) } }) @@ -236,7 +236,7 @@ func TestEnvVariableNotSetError_Error(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - e := &pike.EnvVariableNotSetError{ + e := &EnvVariableNotSetError{ Key: tt.fields.Key, } if got := e.Error(); got != tt.want { @@ -251,7 +251,10 @@ func Test_getEnv(t *testing.T) { key string } - os.Setenv("fortest", "value") + err := os.Setenv("fortest", "value") + if err != nil { + return + } tests := []struct { name string @@ -264,7 +267,7 @@ func Test_getEnv(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := pike.GetEnv(tt.args.key) + got, err := GetEnv(tt.args.key) if (err != nil) != tt.wantErr { t.Errorf("GetEnv() error = %v, wantErr %v", err, tt.wantErr) return @@ -275,3 +278,110 @@ func Test_getEnv(t *testing.T) { }) } } + +func TestWriteFileError_Error(t *testing.T) { + tests := []struct { + name string + file string + err error + expected string + }{ + { + name: "normal file and error", + file: "/path/to/file.txt", + err: errors.New("permission denied"), + expected: "failed to write file /path/to/file.txt permission denied", + }, + { + name: "empty file path", + file: "", + err: errors.New("some error"), + expected: "failed to write file some error", + }, + { + name: "nil error", + file: "/path/to/file.txt", + err: nil, + expected: "failed to write file /path/to/file.txt ", + }, + { + name: "file path with spaces", + file: "/path/to/file with spaces.txt", + err: errors.New("write failed"), + expected: "failed to write file /path/to/file with spaces.txt write failed", + }, + { + name: "file path with special characters", + file: "/path/to/file-name_123.txt", + err: errors.New("disk full"), + expected: "failed to write file /path/to/file-name_123.txt disk full", + }, + { + name: "long file path", + file: strings.Repeat("/very/long/path", 10) + "/file.txt", + err: errors.New("timeout"), + expected: "failed to write file " + strings.Repeat("/very/long/path", 10) + "/file.txt timeout", + }, + { + name: "error with newlines", + file: "/path/to/file.txt", + err: errors.New("error\nwith\nnewlines"), + expected: "failed to write file /path/to/file.txt error\nwith\nnewlines", + }, + { + name: "both file and error empty/nil", + file: "", + err: nil, + expected: "failed to write file ", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &writeFileError{ + file: tt.file, + err: tt.err, + } + + result := e.Error() + + if result != tt.expected { + t.Errorf("writeFileError.Error() = %q, expected %q", result, tt.expected) + } + }) + } +} + +func TestCustomErrors(t *testing.T) { + t.Run("readFileError", func(t *testing.T) { + err := &readFileError{file: "test.txt", err: errors.New("permission denied")} + expected := "failed to read file test.txt permission denied" + if err.Error() != expected { + t.Errorf("Expected: %s, got: %s", expected, err.Error()) + } + }) + + t.Run("delimiterMismatchError", func(t *testing.T) { + err := &delimiterMismatchError{} + expected := "pike delimiters mismatch in Readme" + if err.Error() != expected { + t.Errorf("Expected: %s, got: %s", expected, err.Error()) + } + }) + + t.Run("delimiterHooksMissingError", func(t *testing.T) { + err := &delimiterHooksMissingError{} + expected := "pike hooks delimiter missing in Readme, consider using the flag -auto" + if err.Error() != expected { + t.Errorf("Expected: %s, got: %s", expected, err.Error()) + } + }) + + t.Run("writeFileError", func(t *testing.T) { + err := &writeFileError{file: "output.txt", err: errors.New("disk full")} + expected := "failed to write file output.txt disk full" + if err.Error() != expected { + t.Errorf("Expected: %s, got: %s", expected, err.Error()) + } + }) +} diff --git a/src/watch.go b/src/watch.go index 1f2e833f..35b90840 100644 --- a/src/watch.go +++ b/src/watch.go @@ -22,8 +22,17 @@ func Watch(arn string, wait int) error { if arn == "" { return &arnEmptyError{} } + + if wait <= 0 { + return fmt.Errorf("wait time must be positive, got %d", wait) + } + + if err := verifyAWSARN(arn); err != nil { + return fmt.Errorf("invalid ARN format: %s", arn) + } + // Load the Shared AWS Configuration (~/.aws/config) - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), defaultTimeout) defer cancel() @@ -61,7 +70,7 @@ func waitForPolicyChange(client *iam.Client, arn string, version string, wait, p continue } - if NewVersion == &version { + if *NewVersion != version { return item, nil } diff --git a/src/watch_internal_test.go b/src/watch_internal_test.go new file mode 100644 index 00000000..f216d4af --- /dev/null +++ b/src/watch_internal_test.go @@ -0,0 +1,165 @@ +package pike + +import ( + "encoding/json" + "errors" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestWatch_EmptyARN(t *testing.T) { + err := Watch("", 10) + assert.Error(t, err) + assert.IsType(t, &arnEmptyError{}, err) +} + +func TestWatch_InvalidWaitTime(t *testing.T) { + err := Watch("arn:aws:iam::123456789012:policy/test-policy", 0) + assert.Error(t, err) + assert.Contains(t, err.Error(), "wait time must be positive") + + err = Watch("arn:aws:iam::123456789012:policy/test-policy", -5) + assert.Error(t, err) + assert.Contains(t, err.Error(), "wait time must be positive") +} + +func TestSortActions_WithArrayActions(t *testing.T) { + policy := `{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"], + "Resource": "*" + } + ] + }` + + result, err := sortActions(policy) + + assert.NoError(t, err) + assert.NotNil(t, result) + + var parsed map[string]interface{} + err = json.Unmarshal([]byte(*result), &parsed) + assert.NoError(t, err) + + statements := parsed["Statement"].([]interface{}) + statement := statements[0].(map[string]interface{}) + actions := statement["Action"].([]interface{}) + + // Verify actions are sorted + assert.Equal(t, "s3:DeleteObject", actions[0]) + assert.Equal(t, "s3:GetObject", actions[1]) + assert.Equal(t, "s3:PutObject", actions[2]) +} + +func TestSortActions_WithStringAction(t *testing.T) { + policy := `{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "s3:GetObject", + "Resource": "*" + } + ] + }` + + result, err := sortActions(policy) + + assert.NoError(t, err) + assert.NotNil(t, result) + + var parsed map[string]interface{} + err = json.Unmarshal([]byte(*result), &parsed) + assert.NoError(t, err) +} + +func TestSortActions_InvalidJSON(t *testing.T) { + policy := `{"invalid": json}` + + result, err := sortActions(policy) + + assert.Error(t, err) + assert.Nil(t, result) + assert.IsType(t, &unmarshallJSONError{}, err) +} + +func TestSortActions_InvalidStatement(t *testing.T) { + policy := `{ + "Version": "2012-10-17", + "Statement": "invalid" + }` + + result, err := sortActions(policy) + + assert.Error(t, err) + assert.Nil(t, result) + assert.IsType(t, &castToListOfInterfaceError{}, err) +} + +func TestSortInterfaceStrings_Success(t *testing.T) { + actions := []interface{}{"s3:PutObject", "s3:GetObject", "s3:DeleteObject"} + + result := sortInterfaceStrings(actions) + + assert.NotNil(t, result) + assert.Len(t, result, 3) + assert.Equal(t, "s3:DeleteObject", result[0]) + assert.Equal(t, "s3:GetObject", result[1]) + assert.Equal(t, "s3:PutObject", result[2]) +} + +func TestSortInterfaceStrings_InvalidInput(t *testing.T) { + actions := "not an array" + + result := sortInterfaceStrings(actions) + + assert.Nil(t, result) +} + +func TestSortInterfaceStrings_NonStringElements(t *testing.T) { + actions := []interface{}{"s3:Xavier", "s3:GetObject", 123, "s3:PutObject"} + + result := sortInterfaceStrings(actions) + + assert.NotNil(t, result) + assert.Len(t, result, 4) + // Non-string elements should be skipped, but array length preserved + assert.Equal(t, "s3:GetObject", result[1]) + assert.Equal(t, "", result[0]) // default zero value for skipped element + assert.Equal(t, "s3:PutObject", result[2]) +} + +func TestWaitExpiredError_Error(t *testing.T) { + err := &waitExpiredError{} + assert.Equal(t, "wait expired with no change", err.Error()) +} + +func TestUrlEscapeError_Error(t *testing.T) { + originalErr := errors.New("test error") + err := &urlEscapeError{err: originalErr} + assert.Contains(t, err.Error(), "failed to unescape url") + assert.Contains(t, err.Error(), "test error") +} + +func TestCastToListOfInterfaceError_Error(t *testing.T) { + err := &castToListOfInterfaceError{} + assert.Equal(t, "failed to convert to list of interfaces", err.Error()) +} + +func TestGetVersionError_Error(t *testing.T) { + originalErr := errors.New("test error") + err := &getVersionError{err: originalErr} + assert.Contains(t, err.Error(), "failed to get version") + assert.Contains(t, err.Error(), "test error") +} + +func TestWaitForPolicyChangeError_Error(t *testing.T) { + originalErr := errors.New("test error") + err := &waitForPolicyChangeError{err: originalErr} + assert.Contains(t, err.Error(), "failed to wait for policy change") + assert.Contains(t, err.Error(), "test error") +} diff --git a/terraform/aws/Makefile b/terraform/aws/Makefile index 5f3d890c..aa9b4e40 100644 --- a/terraform/aws/Makefile +++ b/terraform/aws/Makefile @@ -18,6 +18,8 @@ init: upgrade: terraform init --upgrade +update: upgrade + role: FORCE terraform -chdir=./role apply -auto-approve diff --git a/terraform/aws/backup/aws_dsql_cluster.tf b/terraform/aws/backup/aws_dsql_cluster.tf new file mode 100644 index 00000000..ab7e5d27 --- /dev/null +++ b/terraform/aws/backup/aws_dsql_cluster.tf @@ -0,0 +1,7 @@ +resource "aws_dsql_cluster" "pike" { + + deletion_protection_enabled = false + tags = { + Name = "TestCluster" + } +} diff --git a/terraform/aws/backup/aws_dsql_cluster_peering.tf b/terraform/aws/backup/aws_dsql_cluster_peering.tf new file mode 100644 index 00000000..2dfba73e --- /dev/null +++ b/terraform/aws/backup/aws_dsql_cluster_peering.tf @@ -0,0 +1,7 @@ +resource "aws_dsql_cluster_peering" "pike" { + clusters = [aws_dsql_cluster.pike.arn] + identifier = "test-peer" + witness_region = "eu-west-2" +} +# +# resource "aws_dsql_cluster" "two" {} diff --git a/terraform/aws/backup/aws_lightsail_bucket_access_key.tf b/terraform/aws/backup/aws_lightsail_bucket_access_key.tf new file mode 100644 index 00000000..61a64374 --- /dev/null +++ b/terraform/aws/backup/aws_lightsail_bucket_access_key.tf @@ -0,0 +1,8 @@ +resource "aws_lightsail_bucket_access_key" "pike" { + bucket_name = aws_lightsail_bucket.pike.name +} + +resource "aws_lightsail_bucket" "pike" { + bundle_id = "small_1_0" + name = "jgw-lightsail-bucket2" +} diff --git a/terraform/aws/backup/aws_prometheus_workspace_configuration.tf b/terraform/aws/backup/aws_prometheus_workspace_configuration.tf new file mode 100644 index 00000000..aafb890a --- /dev/null +++ b/terraform/aws/backup/aws_prometheus_workspace_configuration.tf @@ -0,0 +1,26 @@ +resource "aws_prometheus_workspace_configuration" "pike" { + workspace_id = aws_prometheus_workspace.example.id + retention_period_in_days = 60 + + limits_per_label_set { + label_set = { + "env" = "dev" + } + limits { + max_series = 100000 + } + } + + limits_per_label_set { + label_set = { + "env" = "prod" + } + limits { + max_series = 400000 + } + } +} + +resource "aws_prometheus_workspace" "example" { + +} diff --git a/terraform/aws/backup/aws_vpc_route_server.tf b/terraform/aws/backup/aws_vpc_route_server.tf new file mode 100644 index 00000000..524c57b6 --- /dev/null +++ b/terraform/aws/backup/aws_vpc_route_server.tf @@ -0,0 +1,11 @@ +resource "aws_vpc_route_server" "pike" { + provider = aws.central + amazon_side_asn = 65534 + persist_routes = "enable" + persist_routes_duration = 2 + sns_notifications_enabled = true + + tags = { + Name = "Main Route Server" + } +} diff --git a/terraform/aws/backup/aws_vpc_route_server_association.tf b/terraform/aws/backup/aws_vpc_route_server_association.tf new file mode 100644 index 00000000..db357516 --- /dev/null +++ b/terraform/aws/backup/aws_vpc_route_server_association.tf @@ -0,0 +1 @@ +resource "aws_vpc_route_server_association" "pike" {} diff --git a/terraform/aws/backup/aws_vpc_route_server_endpoint.tf b/terraform/aws/backup/aws_vpc_route_server_endpoint.tf new file mode 100644 index 00000000..dfdbf2ea --- /dev/null +++ b/terraform/aws/backup/aws_vpc_route_server_endpoint.tf @@ -0,0 +1,24 @@ +# resource "aws_vpc_route_server_endpoint" "pike" { +# provider = aws.central +# +# route_server_id = aws_vpc_route_server.pike.route_server_id +# subnet_id = aws_subnet.first.id +# +# tags = { +# Name = "Endpoint A" +# } +# } + + +resource "aws_vpc" "main" { + provider = aws.central + + cidr_block = "10.0.0.0/16" +} + +resource "aws_subnet" "first" { + provider = aws.central + + vpc_id = aws_vpc.main.id + cidr_block = "10.0.1.0/24" +} diff --git a/terraform/aws/backup/aws_vpc_route_server_peer.tf b/terraform/aws/backup/aws_vpc_route_server_peer.tf new file mode 100644 index 00000000..fa3e616a --- /dev/null +++ b/terraform/aws/backup/aws_vpc_route_server_peer.tf @@ -0,0 +1,12 @@ +# resource "aws_vpc_route_server_peer" "pike" { +# provider = aws.central +# route_server_endpoint_id = aws_vpc_route_server_endpoint.pike.route_server_endpoint_id +# peer_address = "10.0.1.250" +# bgp_options { +# peer_asn = 65200 +# } +# +# tags = { +# Name = "Appliance 1" +# } +# } diff --git a/terraform/aws/backup/aws_vpc_route_server_propagation.tf b/terraform/aws/backup/aws_vpc_route_server_propagation.tf new file mode 100644 index 00000000..0de4083f --- /dev/null +++ b/terraform/aws/backup/aws_vpc_route_server_propagation.tf @@ -0,0 +1,13 @@ +resource "aws_vpc_route_server_propagation" "example" { + provider = aws.central + route_server_id = aws_vpc_route_server.pike.route_server_id + route_table_id = aws_route_table.pike.id + depends_on = [ + aws_vpc_route_server_vpc_association.pike] +} + + +resource "aws_route_table" "pike" { + provider = aws.central + vpc_id = aws_vpc.main.id +} diff --git a/terraform/aws/backup/aws_vpc_route_server_vpc_association.tf b/terraform/aws/backup/aws_vpc_route_server_vpc_association.tf new file mode 100644 index 00000000..0107f302 --- /dev/null +++ b/terraform/aws/backup/aws_vpc_route_server_vpc_association.tf @@ -0,0 +1,5 @@ +resource "aws_vpc_route_server_vpc_association" "pike" { + provider = aws.central + route_server_id = aws_vpc_route_server.pike.route_server_id + vpc_id = aws_vpc.main.id +} diff --git a/terraform/aws/backup/aws_workspacesweb_data_protection_settings.tf b/terraform/aws/backup/aws_workspacesweb_data_protection_settings.tf new file mode 100644 index 00000000..9b89d386 --- /dev/null +++ b/terraform/aws/backup/aws_workspacesweb_data_protection_settings.tf @@ -0,0 +1,44 @@ + +resource "aws_workspacesweb_data_protection_settings" "example" { + display_name = "example-complete" + description = "Complete example data protection settings" + customer_managed_key = aws_kms_key.example.arn + + additional_encryption_context = { + Environment = "Production" + } + + inline_redaction_configuration { + global_confidence_level = 2 + global_enforced_urls = ["https://example.com", "https://test.example.com"] + global_exempt_urls = ["https://exempt.example.com"] + + inline_redaction_pattern { + built_in_pattern_id = "ssn" + confidence_level = 3 + enforced_urls = ["https://pattern1.example.com"] + exempt_urls = ["https://exempt-pattern1.example.com"] + redaction_place_holder { + redaction_place_holder_type = "CustomText" + redaction_place_holder_text = "REDACTED-SSN" + } + } + + inline_redaction_pattern { + custom_pattern { + pattern_name = "CustomPattern" + pattern_regex = "/\\d{3}-\\d{2}-\\d{4}/g" + keyword_regex = "/SSN|Social Security/gi" + pattern_description = "Custom SSN pattern" + } + redaction_place_holder { + redaction_place_holder_type = "CustomText" + redaction_place_holder_text = "REDACTED-CUSTOM" + } + } + } + + tags = { + Name = "example-data-protection-settings" + } +} diff --git a/terraform/aws/backup/aws_workspacesweb_ip_access_settings.tf b/terraform/aws/backup/aws_workspacesweb_ip_access_settings.tf new file mode 100644 index 00000000..bbf405e9 --- /dev/null +++ b/terraform/aws/backup/aws_workspacesweb_ip_access_settings.tf @@ -0,0 +1,41 @@ +resource "aws_kms_key" "example" { + description = "KMS key for WorkSpaces Web IP Access Settings" + deletion_window_in_days = 7 + + policy = jsonencode({ + Id = "example" + Statement = [ + { + Action = "kms:*" + Effect = "Allow" + Principal = { + AWS = "*" + } + + Resource = "*" + Sid = "Enable IAM User Permissions" + }, + ] + Version = "2012-10-17" + }) +} + +resource "aws_workspacesweb_ip_access_settings" "example" { + display_name = "example" + description = "Example IP access settings" + customer_managed_key = aws_kms_key.example.arn + additional_encryption_context = { + Environment = "Production" + } + ip_rule { + ip_range = "10.0.0.0/16" + description = "Main office" + } + ip_rule { + ip_range = "192.168.0.0/24" + description = "Branch office" + } + tags = { + Name = "example-ip-access-settings" + } +} diff --git a/terraform/aws/backup/aws_workspacesweb_user_access_logging_settings.tf b/terraform/aws/backup/aws_workspacesweb_user_access_logging_settings.tf new file mode 100644 index 00000000..ae50ded2 --- /dev/null +++ b/terraform/aws/backup/aws_workspacesweb_user_access_logging_settings.tf @@ -0,0 +1,12 @@ +resource "aws_kinesis_stream" "example" { + name = "amazon-workspaces-web-user-access-logging-stream" + shard_count = 1 +} + +resource "aws_workspacesweb_user_access_logging_settings" "example" { + kinesis_stream_arn = aws_kinesis_stream.example.arn + tags = { + Name = "example-user-access-logging-settings" + Environment = "Production" + } +} diff --git a/terraform/aws/backup/data.aws_appconfig_application.tf b/terraform/aws/backup/data.aws_appconfig_application.tf new file mode 100644 index 00000000..c8542521 --- /dev/null +++ b/terraform/aws/backup/data.aws_appconfig_application.tf @@ -0,0 +1,7 @@ +data "aws_appconfig_application" "pike" { + name = "pike" +} + +output "aws_appconfig_application" { + value = data.aws_appconfig_application.pike +} diff --git a/terraform/aws/backup/data.aws_billing_views.tf b/terraform/aws/backup/data.aws_billing_views.tf new file mode 100644 index 00000000..9a26a7b0 --- /dev/null +++ b/terraform/aws/backup/data.aws_billing_views.tf @@ -0,0 +1,6 @@ +data "aws_billing_views" "pike" { +} + +output "aws_billing_views" { + value = data.aws_billing_views.pike +} diff --git a/terraform/aws/backup/data.aws_ecr_images.tf b/terraform/aws/backup/data.aws_ecr_images.tf new file mode 100644 index 00000000..16082564 --- /dev/null +++ b/terraform/aws/backup/data.aws_ecr_images.tf @@ -0,0 +1,7 @@ +data "aws_ecr_images" "pike" { + repository_name = "pike" +} + +output "aws_ecr_images" { + value = data.aws_ecr_images.pike +} diff --git a/terraform/aws/backup/data.aws_ecrpublic_images.tf b/terraform/aws/backup/data.aws_ecrpublic_images.tf new file mode 100644 index 00000000..65249b2b --- /dev/null +++ b/terraform/aws/backup/data.aws_ecrpublic_images.tf @@ -0,0 +1,8 @@ +data "aws_ecrpublic_images" "pike" { + provider = aws.central + repository_name = "pike" +} + +output "aws_ecrpublic_images" { + value = data.aws_ecrpublic_images.pike +} diff --git a/terraform/aws/backup/data.aws_media_convert_queue.tf b/terraform/aws/backup/data.aws_media_convert_queue.tf new file mode 100644 index 00000000..658e5239 --- /dev/null +++ b/terraform/aws/backup/data.aws_media_convert_queue.tf @@ -0,0 +1,7 @@ +data "aws_media_convert_queue" "pike" { + id = "pike" +} + +output "aws_media_convert_queue" { + value = data.aws_media_convert_queue.pike +} diff --git a/terraform/aws/backup/data.aws_memorydb_acl.tf b/terraform/aws/backup/data.aws_memorydb_acl.tf new file mode 100644 index 00000000..815bafc1 --- /dev/null +++ b/terraform/aws/backup/data.aws_memorydb_acl.tf @@ -0,0 +1,7 @@ +data "aws_memorydb_acl" "pike" { + name = "pike" +} + +output "aws_memorydb_acl" { + value = data.aws_memorydb_acl.pike +} diff --git a/terraform/aws/backup/data.aws_memorydb_cluster.tf b/terraform/aws/backup/data.aws_memorydb_cluster.tf new file mode 100644 index 00000000..3bae3c0b --- /dev/null +++ b/terraform/aws/backup/data.aws_memorydb_cluster.tf @@ -0,0 +1,7 @@ +data "aws_memorydb_cluster" "pike" { + name = "pike" +} + +output "aws_memorydb_cluster" { + value = data.aws_memorydb_cluster.pike +} diff --git a/terraform/aws/backup/data.aws_memorydb_parameter_group.tf b/terraform/aws/backup/data.aws_memorydb_parameter_group.tf new file mode 100644 index 00000000..2fbcab25 --- /dev/null +++ b/terraform/aws/backup/data.aws_memorydb_parameter_group.tf @@ -0,0 +1,7 @@ +data "aws_memorydb_parameter_group" "pike" { + name = "pike" +} + +output "aws_memorydb_parameter_group" { + value = data.aws_memorydb_parameter_group.pike +} diff --git a/terraform/aws/backup/data.aws_memorydb_snapshot.tf b/terraform/aws/backup/data.aws_memorydb_snapshot.tf new file mode 100644 index 00000000..9d3a1cd0 --- /dev/null +++ b/terraform/aws/backup/data.aws_memorydb_snapshot.tf @@ -0,0 +1,7 @@ +data "aws_memorydb_snapshot" "pike" { + name = "pike" +} + +output "aws_memorydb_snapshot" { + value = data.aws_memorydb_snapshot.pike +} diff --git a/terraform/aws/backup/data.aws_memorydb_subnet_group.tf b/terraform/aws/backup/data.aws_memorydb_subnet_group.tf new file mode 100644 index 00000000..3ba8ea58 --- /dev/null +++ b/terraform/aws/backup/data.aws_memorydb_subnet_group.tf @@ -0,0 +1,7 @@ +data "aws_memorydb_subnet_group" "pike" { + name = "pike" +} + +output "aws_memorydb_subnet_group" { + value = data.aws_memorydb_subnet_group.pike +} diff --git a/terraform/aws/backup/data.aws_memorydb_user.tf b/terraform/aws/backup/data.aws_memorydb_user.tf new file mode 100644 index 00000000..7e65663f --- /dev/null +++ b/terraform/aws/backup/data.aws_memorydb_user.tf @@ -0,0 +1,7 @@ +data "aws_memorydb_user" "pike" { + user_name = "pike" +} + +output "aws_memorydb_user" { + value = data.aws_memorydb_user.pike +} diff --git a/terraform/aws/backup/data.aws_odb_cloud_autonomous_vm_cluster.tf b/terraform/aws/backup/data.aws_odb_cloud_autonomous_vm_cluster.tf new file mode 100644 index 00000000..bff3a5c2 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_cloud_autonomous_vm_cluster.tf @@ -0,0 +1,7 @@ +data "aws_odb_cloud_autonomous_vm_cluster" "pike" { + id = "pike" +} + +output "aws_odb_cloud_autonomous_vm_cluster" { + value = data.aws_odb_cloud_autonomous_vm_cluster.pike +} diff --git a/terraform/aws/backup/data.aws_odb_cloud_autonomous_vm_clusters.tf b/terraform/aws/backup/data.aws_odb_cloud_autonomous_vm_clusters.tf new file mode 100644 index 00000000..ecd34ea9 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_cloud_autonomous_vm_clusters.tf @@ -0,0 +1,6 @@ +data "aws_odb_cloud_autonomous_vm_clusters" "pike" { +} + +output "aws_odb_cloud_autonomous_vm_clusters" { + value = data.aws_odb_cloud_autonomous_vm_clusters.pike +} diff --git a/terraform/aws/backup/data.aws_odb_cloud_exadata_infrastructure.tf b/terraform/aws/backup/data.aws_odb_cloud_exadata_infrastructure.tf new file mode 100644 index 00000000..17bf23f2 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_cloud_exadata_infrastructure.tf @@ -0,0 +1,7 @@ +data "aws_odb_cloud_exadata_infrastructure" "pike" { + id = "pike" +} + +output "aws_odb_cloud_exadata_infrastructure" { + value = data.aws_odb_cloud_exadata_infrastructure.pike +} diff --git a/terraform/aws/backup/data.aws_odb_cloud_exadata_infrastructures.tf b/terraform/aws/backup/data.aws_odb_cloud_exadata_infrastructures.tf new file mode 100644 index 00000000..5cda9dee --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_cloud_exadata_infrastructures.tf @@ -0,0 +1,6 @@ +data "aws_odb_cloud_exadata_infrastructures" "pike" { +} + +output "aws_odb_cloud_exadata_infrastructures" { + value = data.aws_odb_cloud_exadata_infrastructures.pike +} diff --git a/terraform/aws/backup/data.aws_odb_cloud_vm_cluster.tf b/terraform/aws/backup/data.aws_odb_cloud_vm_cluster.tf new file mode 100644 index 00000000..cf3e715f --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_cloud_vm_cluster.tf @@ -0,0 +1,7 @@ +data "aws_odb_cloud_vm_cluster" "pike" { + id = "pike" +} + +output "aws_odb_cloud_vm_cluster" { + value = data.aws_odb_cloud_vm_cluster.pike +} diff --git a/terraform/aws/backup/data.aws_odb_cloud_vm_clusters.tf b/terraform/aws/backup/data.aws_odb_cloud_vm_clusters.tf new file mode 100644 index 00000000..dd023656 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_cloud_vm_clusters.tf @@ -0,0 +1,6 @@ +data "aws_odb_cloud_vm_clusters" "pike" { +} + +output "aws_odb_cloud_vm_clusters" { + value = data.aws_odb_cloud_vm_clusters.pike +} diff --git a/terraform/aws/backup/data.aws_odb_db_node.tf b/terraform/aws/backup/data.aws_odb_db_node.tf new file mode 100644 index 00000000..961dc303 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_db_node.tf @@ -0,0 +1,8 @@ +data "aws_odb_db_node" "pike" { + cloud_vm_cluster_id = "pike" + id = "pike" +} + +output "aws_odb_db_node" { + value = data.aws_odb_db_node.pike +} diff --git a/terraform/aws/backup/data.aws_odb_db_nodes.tf b/terraform/aws/backup/data.aws_odb_db_nodes.tf new file mode 100644 index 00000000..b258f147 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_db_nodes.tf @@ -0,0 +1,7 @@ +data "aws_odb_db_nodes" "pike" { + cloud_vm_cluster_id = "pike" +} + +output "aws_odb_db_nodes" { + value = data.aws_odb_db_nodes.pike +} diff --git a/terraform/aws/backup/data.aws_odb_db_server.tf b/terraform/aws/backup/data.aws_odb_db_server.tf new file mode 100644 index 00000000..94202db0 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_db_server.tf @@ -0,0 +1,8 @@ +data "aws_odb_db_server" "pike" { + id = "pike" + cloud_exadata_infrastructure_id = "pike" +} + +output "aws_odb_db_server" { + value = data.aws_odb_db_server.pike +} diff --git a/terraform/aws/backup/data.aws_odb_db_servers.tf b/terraform/aws/backup/data.aws_odb_db_servers.tf new file mode 100644 index 00000000..ddb1cd3d --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_db_servers.tf @@ -0,0 +1,7 @@ +data "aws_odb_db_servers" "pike" { + cloud_exadata_infrastructure_id = "pike" +} + +output "aws_odb_db_servers" { + value = data.aws_odb_db_servers.pike +} diff --git a/terraform/aws/backup/data.aws_odb_db_system_shapes.tf b/terraform/aws/backup/data.aws_odb_db_system_shapes.tf new file mode 100644 index 00000000..5f9c5721 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_db_system_shapes.tf @@ -0,0 +1,6 @@ +data "aws_odb_db_system_shapes" "pike" { +} + +output "aws_odb_db_system_shapes" { + value = data.aws_odb_db_system_shapes.pike +} diff --git a/terraform/aws/backup/data.aws_odb_gi_versions.tf b/terraform/aws/backup/data.aws_odb_gi_versions.tf new file mode 100644 index 00000000..a51be88f --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_gi_versions.tf @@ -0,0 +1,6 @@ +data "aws_odb_gi_versions" "pike" { +} + +output "aws_odb_gi_versions" { + value = data.aws_odb_gi_versions.pike +} diff --git a/terraform/aws/backup/data.aws_odb_network.tf b/terraform/aws/backup/data.aws_odb_network.tf new file mode 100644 index 00000000..89fa0143 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_network.tf @@ -0,0 +1,7 @@ +data "aws_odb_network" "pike" { + id = "pike" +} + +output "aws_odb_network" { + value = data.aws_odb_network.pike +} diff --git a/terraform/aws/backup/data.aws_odb_network_peering_connection.tf b/terraform/aws/backup/data.aws_odb_network_peering_connection.tf new file mode 100644 index 00000000..404a8924 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_network_peering_connection.tf @@ -0,0 +1,7 @@ +data "aws_odb_network_peering_connection" "pike" { + id = "pike" +} + +output "aws_odb_network_peering_connection" { + value = data.aws_odb_network_peering_connection.pike +} diff --git a/terraform/aws/backup/data.aws_odb_network_peering_connections.tf b/terraform/aws/backup/data.aws_odb_network_peering_connections.tf new file mode 100644 index 00000000..a65eab5b --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_network_peering_connections.tf @@ -0,0 +1,7 @@ +data "aws_odb_network_peering_connections" "pike" { + +} + +output "aws_odb_network_peering_connections" { + value = data.aws_odb_network_peering_connections.pike +} diff --git a/terraform/aws/backup/data.aws_odb_networks.tf b/terraform/aws/backup/data.aws_odb_networks.tf new file mode 100644 index 00000000..8502efe9 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_networks.tf @@ -0,0 +1,6 @@ +data "aws_odb_networks" "pike" { +} + +output "aws_odb_networks" { + value = data.aws_odb_networks.pike +} diff --git a/terraform/aws/backup/data.aws_rds_global_cluster.tf b/terraform/aws/backup/data.aws_rds_global_cluster.tf new file mode 100644 index 00000000..98ed1416 --- /dev/null +++ b/terraform/aws/backup/data.aws_rds_global_cluster.tf @@ -0,0 +1,7 @@ +data "aws_rds_global_cluster" "pike" { + identifier = "pike" +} + +output "aws_rds_global_cluster" { + value = data.aws_rds_global_cluster.pike +} diff --git a/terraform/aws/backup/data.aws_s3_access_point.tf b/terraform/aws/backup/data.aws_s3_access_point.tf new file mode 100644 index 00000000..207a80f6 --- /dev/null +++ b/terraform/aws/backup/data.aws_s3_access_point.tf @@ -0,0 +1,7 @@ +data "aws_s3_access_point" "pike" { + name = "pike" +} + +output "aws_s3_access_point" { + value = data.aws_s3_access_point.pike +} diff --git a/terraform/aws/backup/data.aws_securityhub_standards_control_associations.tf b/terraform/aws/backup/data.aws_securityhub_standards_control_associations.tf new file mode 100644 index 00000000..9a3f4cd0 --- /dev/null +++ b/terraform/aws/backup/data.aws_securityhub_standards_control_associations.tf @@ -0,0 +1,7 @@ +data "aws_securityhub_standards_control_associations" "pike" { + security_control_id = "pike" +} + +output "aws_securityhub_standards_control_associations" { + value = data.aws_securityhub_standards_control_associations.pike +} diff --git a/terraform/aws/backup/data.aws_vpn_connection.tf b/terraform/aws/backup/data.aws_vpn_connection.tf new file mode 100644 index 00000000..2dfc552c --- /dev/null +++ b/terraform/aws/backup/data.aws_vpn_connection.tf @@ -0,0 +1,7 @@ +data "aws_vpn_connection" "pike" { + vpn_connection_id = "pike" +} + +output "aws_vpn_connection" { + value = data.aws_vpn_connection.pike +} diff --git a/terraform/aws/backup/data.aws_workspaces_workspace.tf b/terraform/aws/backup/data.aws_workspaces_workspace.tf new file mode 100644 index 00000000..675ac913 --- /dev/null +++ b/terraform/aws/backup/data.aws_workspaces_workspace.tf @@ -0,0 +1,8 @@ +data "aws_workspaces_workspace" "pike" { + workspace_id = "ws-cj5xcxsz5" +} + + +output "aws_workspaces_workspace" { + value = data.aws_workspaces_workspace.pike +} diff --git a/terraform/aws/role/aws_iam_policy.basic.tf b/terraform/aws/role/aws_iam_policy.basic.tf index ccd877e3..725dd39a 100644 --- a/terraform/aws/role/aws_iam_policy.basic.tf +++ b/terraform/aws/role/aws_iam_policy.basic.tf @@ -7,61 +7,12 @@ resource "aws_iam_policy" "basic" { "Sid" : "VisualEditor0", "Effect" : "Allow", "Action" : [ - "ec2:AssociateSubnetCidrBlock", - "ec2:CreateSecurityGroup", - "ec2:CreateSubnet", - "ec2:CreateVPC", - "ec2:DeleteSecurityGroup", - "ec2:DeleteSubnet", - "ec2:DeleteVPC", - "ec2:DescribeAccountAttributes", - "ec2:DescribeNetworkAcls", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DisassociateSubnetCidrBlock", - "ec2:ModifySubnetAttribute", - "ec2:ModifyVpcAttribute", - "ec2:ModifyVpcTenancy", - "ec2:RevokeSecurityGroupEgress", - "ec2:DescribeAvailabilityZones", - "kms:CreateKey", - "kms:DescribeKey", - "kms:GetKeyPolicy", - "kms:GetKeyRotationStatus", - "kms:ListResourceTags", - "kms:ScheduleKeyDeletion", - "kms:PutKeyPolicy", - - - //aws_quicksight_account_settings - "quicksight:UpdateAccountSettings", - - //aws_workspacesweb_browser_settings - "workspaces-web:CreateBrowserSettings", - "workspaces-web:GetBrowserSettings", - "workspaces-web:ListTagsForResource", - "workspaces-web:DeleteBrowserSettings", - "workspaces-web:TagResource", - "workspaces-web:UntagResource", - - //aws_workspacesweb_network_settings - "workspaces-web:CreateNetworkSettings", - "iam:CreateServiceLinkedRole", - "workspaces-web:GetNetworkSettings", - "workspaces-web:DeleteNetworkSettings", - - //aws_workspacesweb_user_settings - "workspaces-web:CreateUserSettings", - "workspaces-web:TagResource", - "workspaces-web:UntagResource", - "workspaces-web:GetUserSettings", - "workspaces-web:DeleteUserSettings", - "kms:CreateGrant", - "kms:Decrypt", - "kms:GenerateDataKey" + //aws_vpn_connection + "ec2:DescribeVpnConnections", + //aws_rds_global_cluster + "rds:DescribeGlobalClusters", + //aws_ecrpublic_images + "ecr-public:DescribeImages" ], "Resource" : [ diff --git a/terraform/google/Makefile b/terraform/google/Makefile index 9b281b03..72076f5f 100644 --- a/terraform/google/Makefile +++ b/terraform/google/Makefile @@ -15,10 +15,16 @@ destroy: init init: tofu init +upgrade: + tofu init --upgrade + role: FORCE GOOGLE_CLOUD_KEYFILE_JSON="" tofu -chdir=./role apply -auto-approve role_init: GOOGLE_CLOUD_KEYFILE_JSON="" tofu -chdir=./role init +scan: + GCP_PROJECT=pike-412922 pike scan -w -i -e -d ./ -outfile "./role/google_project_iam_custom_role.tf" -policyName terraform_pike + FORCE: diff --git a/terraform/google/backup/data.google_access_context_manager_access_policy.tf b/terraform/google/backup/data.google_access_context_manager_access_policy.tf new file mode 100644 index 00000000..95b91f53 --- /dev/null +++ b/terraform/google/backup/data.google_access_context_manager_access_policy.tf @@ -0,0 +1,6 @@ +data "google_access_context_manager_access_policy" "pike" { +} + +output "google_access_context_manager_access_policy" { + value = data.google_access_context_manager_access_policy.pike +} diff --git a/terraform/google/backup/data.google_alloydb_cluster.tf b/terraform/google/backup/data.google_alloydb_cluster.tf new file mode 100644 index 00000000..6d7ac115 --- /dev/null +++ b/terraform/google/backup/data.google_alloydb_cluster.tf @@ -0,0 +1,7 @@ +data "google_alloydb_cluster" "pike" { + cluster_id = "pike" +} + +output "google_alloydb_cluster" { + value = data.google_alloydb_cluster.pike +} diff --git a/terraform/google/backup/data.google_alloydb_instance.tf b/terraform/google/backup/data.google_alloydb_instance.tf new file mode 100644 index 00000000..23d87f94 --- /dev/null +++ b/terraform/google/backup/data.google_alloydb_instance.tf @@ -0,0 +1,9 @@ +data "google_alloydb_instance" "pike" { + instance_id = "pike" + location = "us-central1" + cluster_id = "pike" +} + +output "google_alloydb_instance" { + value = data.google_alloydb_instance.pike +} diff --git a/terraform/google/backup/data.google_apphub_application.tf b/terraform/google/backup/data.google_apphub_application.tf new file mode 100644 index 00000000..e23c0798 --- /dev/null +++ b/terraform/google/backup/data.google_apphub_application.tf @@ -0,0 +1,9 @@ +data "google_apphub_application" "pike" { + location = "us-central1" + application_id = "pike" + project = "pike-412922" +} + +output "google_apphub_application" { + value = data.google_apphub_application.pike +} diff --git a/terraform/google/backup/data.google_apphub_discovered_service.tf b/terraform/google/backup/data.google_apphub_discovered_service.tf new file mode 100644 index 00000000..e838ef6e --- /dev/null +++ b/terraform/google/backup/data.google_apphub_discovered_service.tf @@ -0,0 +1,8 @@ +data "google_apphub_discovered_service" "pike" { + location = "us-central1" + service_uri = "/compute.googleapis.com/projects/1/regions/us-east1/instanceGroups/id1" +} + +output "google_apphub_discovered_service" { + value = data.google_apphub_discovered_service.pike +} diff --git a/terraform/google/backup/data.google_apphub_discovered_workload.tf b/terraform/google/backup/data.google_apphub_discovered_workload.tf new file mode 100644 index 00000000..ac695f2d --- /dev/null +++ b/terraform/google/backup/data.google_apphub_discovered_workload.tf @@ -0,0 +1,8 @@ +data "google_apphub_discovered_workload" "pike" { + location = "us-central1" + workload_uri = "/compute.googleapis.com/projects/1/regions/us-east1/instanceGroups/id1" +} + +output "google_apphub_discovered_workload" { + value = data.google_apphub_discovered_workload.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_docker_image.tf b/terraform/google/backup/data.google_artifact_registry_docker_image.tf new file mode 100644 index 00000000..cbe6896e --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_docker_image.tf @@ -0,0 +1,9 @@ +data "google_artifact_registry_docker_image" "pike" { + location = "us-central1" + repository_id = "pike" + image_name = "pike" +} + +output "google_artifact_registry_docker_image" { + value = data.google_artifact_registry_docker_image.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_docker_images.tf b/terraform/google/backup/data.google_artifact_registry_docker_images.tf new file mode 100644 index 00000000..10f9e8eb --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_docker_images.tf @@ -0,0 +1,6 @@ +data "google_artifact_registry_docker_images" "pike" { +} + +output "google_artifact_registry_docker_images" { + value = data.google_artifact_registry_docker_images.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_locations.tf b/terraform/google/backup/data.google_artifact_registry_locations.tf new file mode 100644 index 00000000..cfe5de96 --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_locations.tf @@ -0,0 +1,6 @@ +data "google_artifact_registry_locations" "pike" { +} + +output "google_artifact_registry_locations" { + value = data.google_artifact_registry_locations.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_maven_artifact.tf b/terraform/google/backup/data.google_artifact_registry_maven_artifact.tf new file mode 100644 index 00000000..d965f619 --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_maven_artifact.tf @@ -0,0 +1,10 @@ +data "google_artifact_registry_maven_artifact" "pike" { + artifact_id = "pike" + group_id = "pike" + location = "pike" + repository_id = "pike" +} + +output "google_artifact_registry_maven_artifact" { + value = data.google_artifact_registry_maven_artifact.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_maven_artifacts.tf b/terraform/google/backup/data.google_artifact_registry_maven_artifacts.tf new file mode 100644 index 00000000..0195402d --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_maven_artifacts.tf @@ -0,0 +1,8 @@ +data "google_artifact_registry_maven_artifacts" "pike" { + repository_id = "pike" + location = "us-central1" +} + +output "google_artifact_registry_maven_artifacts" { + value = data.google_artifact_registry_maven_artifacts.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_npm_package.tf b/terraform/google/backup/data.google_artifact_registry_npm_package.tf new file mode 100644 index 00000000..c0bddb77 --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_npm_package.tf @@ -0,0 +1,7 @@ +data "google_artifact_registry_npm_package" "pike" { + provider = google-beta +} + +output "google_artifact_registry_npm_package" { + value = data.google_artifact_registry_npm_package.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_npm_packages.tf b/terraform/google/backup/data.google_artifact_registry_npm_packages.tf new file mode 100644 index 00000000..2fcce935 --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_npm_packages.tf @@ -0,0 +1,8 @@ +data "google_artifact_registry_npm_packages" "pike" { + repository_id = "pike" + location = "us-central1" +} + +output "google_artifact_registry_npm_packages" { + value = data.google_artifact_registry_npm_packages.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_packages.tf b/terraform/google/backup/data.google_artifact_registry_packages.tf new file mode 100644 index 00000000..c630d612 --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_packages.tf @@ -0,0 +1,8 @@ +data "google_artifact_registry_packages" "pike" { + location = "us-central1" + repository_id = "pike" +} + +output "google_artifact_registry_packages" { + value = data.google_artifact_registry_packages.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_python_package.tf b/terraform/google/backup/data.google_artifact_registry_python_package.tf new file mode 100644 index 00000000..b50c5b18 --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_python_package.tf @@ -0,0 +1,9 @@ +data "google_artifact_registry_python_package" "pike" { + package_name = "pike" + repository_id = "pike" + location = "us-central1" +} + +output "google_artifact_registry_python_package" { + value = data.google_artifact_registry_python_package.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_repositories.tf b/terraform/google/backup/data.google_artifact_registry_repositories.tf new file mode 100644 index 00000000..a88a0cab --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_repositories.tf @@ -0,0 +1,7 @@ +data "google_artifact_registry_repositories" "pike" { + location = "us-central1" +} + +output "google_artifact_registry_repositories" { + value = data.google_artifact_registry_repositories.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_tags.tf b/terraform/google/backup/data.google_artifact_registry_tags.tf new file mode 100644 index 00000000..66f107e8 --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_tags.tf @@ -0,0 +1,9 @@ +data "google_artifact_registry_tags" "pike" { + location = "us-central1" + package_name = "pike" + repository_id = "pike" +} + +output "google_artifact_registry_tags" { + value = data.google_artifact_registry_tags.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_versions.tf b/terraform/google/backup/data.google_artifact_registry_versions.tf new file mode 100644 index 00000000..3dc2b3a1 --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_versions.tf @@ -0,0 +1,10 @@ +data "google_artifact_registry_version" "pike" { + location = "us-central1" + repository_id = "pike" + package_name = "pike" + version_name = "pike" +} + +output "google_artifact_registry_version" { + value = data.google_artifact_registry_version.pike +} diff --git a/terraform/google/backup/data.google_backup_dr_backup.tf b/terraform/google/backup/data.google_backup_dr_backup.tf new file mode 100644 index 00000000..45aea388 --- /dev/null +++ b/terraform/google/backup/data.google_backup_dr_backup.tf @@ -0,0 +1,10 @@ +data "google_backup_dr_backup" "pike" { + location = "us-central1" + project = "pike-412922" + data_source_id = "pike" + backup_vault_id = "pike" +} + +output "google_backup_dr_backup" { + value = data.google_backup_dr_backup.pike +} diff --git a/terraform/google/backup/data.google_backup_dr_backup_plan_association.tf b/terraform/google/backup/data.google_backup_dr_backup_plan_association.tf new file mode 100644 index 00000000..47221cb7 --- /dev/null +++ b/terraform/google/backup/data.google_backup_dr_backup_plan_association.tf @@ -0,0 +1,8 @@ +data "google_backup_dr_backup_plan_association" "pike" { + location = "us-central1" + backup_plan_association_id = "pike" +} + +output "google_backup_dr_backup_plan_association" { + value = data.google_backup_dr_backup_plan_association.pike +} diff --git a/terraform/google/backup/data.google_backup_dr_backup_plan_associations.tf b/terraform/google/backup/data.google_backup_dr_backup_plan_associations.tf new file mode 100644 index 00000000..5a074e67 --- /dev/null +++ b/terraform/google/backup/data.google_backup_dr_backup_plan_associations.tf @@ -0,0 +1,8 @@ +data "google_backup_dr_backup_plan_associations" "pike" { + resource_type = "sqladmin.googleapis.com/Instance" + location = "us-central1" +} + +output "google_backup_dr_backup_plan_associations" { + value = data.google_backup_dr_backup_plan_associations.pike +} diff --git a/terraform/google/backup/data.google_backup_dr_backup_vault.tf b/terraform/google/backup/data.google_backup_dr_backup_vault.tf new file mode 100644 index 00000000..2f7d6873 --- /dev/null +++ b/terraform/google/backup/data.google_backup_dr_backup_vault.tf @@ -0,0 +1,8 @@ +data "google_backup_dr_backup_vault" "pike" { + location = "us-central1" + backup_vault_id = "pike" +} + +output "google_backup_dr_backup_vault" { + value = data.google_backup_dr_backup_vault.pike +} diff --git a/terraform/google/backup/data.google_backup_dr_data_source.tf b/terraform/google/backup/data.google_backup_dr_data_source.tf new file mode 100644 index 00000000..f55f5324 --- /dev/null +++ b/terraform/google/backup/data.google_backup_dr_data_source.tf @@ -0,0 +1,10 @@ +data "google_backup_dr_data_source" "pike" { + location = "us-central1" + project = "pike-412922" + data_source_id = "pike" + backup_vault_id = "pike" +} + +output "google_backup_dr_data_source" { + value = data.google_backup_dr_data_source.pike +} diff --git a/terraform/google/backup/data.google_backup_dr_data_source_reference.tf b/terraform/google/backup/data.google_backup_dr_data_source_reference.tf new file mode 100644 index 00000000..d10297bd --- /dev/null +++ b/terraform/google/backup/data.google_backup_dr_data_source_reference.tf @@ -0,0 +1,8 @@ +data "google_backup_dr_data_source_reference" "pike" { + data_source_reference_id = "pike" + location = "us-central1" +} + +output "google_backup_dr_data_source_reference" { + value = data.google_backup_dr_data_source_reference.pike +} diff --git a/terraform/google/backup/data.google_backup_dr_data_source_references.tf b/terraform/google/backup/data.google_backup_dr_data_source_references.tf new file mode 100644 index 00000000..a30403fd --- /dev/null +++ b/terraform/google/backup/data.google_backup_dr_data_source_references.tf @@ -0,0 +1,8 @@ +data "google_backup_dr_data_source_references" "pike" { + location = "us-central1" + resource_type = "sqladmin.googleapis.com/Instance" +} + +output "google_backup_dr_data_source_references" { + value = data.google_backup_dr_data_source_references.pike +} diff --git a/terraform/google/backup/data.google_beyondcorp_application_iam_policy.tf b/terraform/google/backup/data.google_beyondcorp_application_iam_policy.tf new file mode 100644 index 00000000..dcd9edc0 --- /dev/null +++ b/terraform/google/backup/data.google_beyondcorp_application_iam_policy.tf @@ -0,0 +1,8 @@ +data "google_beyondcorp_application_iam_policy" "pike" { + security_gateways_id = "pike" + application_id = "pike" +} + +output "google_beyondcorp_application_iam_policy" { + value = data.google_beyondcorp_application_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_beyondcorp_security_gateway.tf b/terraform/google/backup/data.google_beyondcorp_security_gateway.tf new file mode 100644 index 00000000..7c596c30 --- /dev/null +++ b/terraform/google/backup/data.google_beyondcorp_security_gateway.tf @@ -0,0 +1,8 @@ +data "google_beyondcorp_security_gateway" "pike" { + security_gateway_id = "pike" + +} + +output "google_beyondcorp_security_gateway" { + value = data.google_beyondcorp_security_gateway.pike +} diff --git a/terraform/google/backup/data.google_beyondcorp_security_gateway_application_iam_policy.tf b/terraform/google/backup/data.google_beyondcorp_security_gateway_application_iam_policy.tf new file mode 100644 index 00000000..05aad362 --- /dev/null +++ b/terraform/google/backup/data.google_beyondcorp_security_gateway_application_iam_policy.tf @@ -0,0 +1,8 @@ +data "google_beyondcorp_security_gateway_application_iam_policy" "pike" { + application_id = "pike" + security_gateway_id = "pike" +} + +output "google_beyondcorp_security_gateway_application_iam_policy" { + value = data.google_beyondcorp_security_gateway_application_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_beyondcorp_security_gateway_iam_policy.tf b/terraform/google/backup/data.google_beyondcorp_security_gateway_iam_policy.tf new file mode 100644 index 00000000..32dcb008 --- /dev/null +++ b/terraform/google/backup/data.google_beyondcorp_security_gateway_iam_policy.tf @@ -0,0 +1,8 @@ +data "google_beyondcorp_security_gateway_iam_policy" "pike" { + security_gateway_id = "pike" + location = "us-central1" +} + +output "google_beyondcorp_security_gateway_iam_policy" { + value = data.google_beyondcorp_security_gateway_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_bigquery_datapolicyv2_data_policy_iam_policy.tf b/terraform/google/backup/data.google_bigquery_datapolicyv2_data_policy_iam_policy.tf new file mode 100644 index 00000000..8b59f726 --- /dev/null +++ b/terraform/google/backup/data.google_bigquery_datapolicyv2_data_policy_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_bigquery_datapolicyv2_data_policy_iam_policy" "pike" { + data_policy_id = "pike" +} + +output "google_bigquery_datapolicyv2_data_policy_iam_policy" { + value = data.google_bigquery_datapolicyv2_data_policy_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_bigquery_datasets.tf b/terraform/google/backup/data.google_bigquery_datasets.tf new file mode 100644 index 00000000..f2b66eee --- /dev/null +++ b/terraform/google/backup/data.google_bigquery_datasets.tf @@ -0,0 +1,6 @@ +data "google_bigquery_datasets" "pike" { +} + +output "google_bigquery_datasets" { + value = data.google_bigquery_datasets.pike +} diff --git a/terraform/google/backup/data.google_bigquery_table.tf b/terraform/google/backup/data.google_bigquery_table.tf new file mode 100644 index 00000000..c83629b0 --- /dev/null +++ b/terraform/google/backup/data.google_bigquery_table.tf @@ -0,0 +1,8 @@ +data "google_bigquery_table" "pike" { + table_id = "pike" + dataset_id = "pike" +} + +output "google_bigquery_table" { + value = data.google_bigquery_table.pike +} diff --git a/terraform/google/backup/data.google_bigquery_tables.tf b/terraform/google/backup/data.google_bigquery_tables.tf new file mode 100644 index 00000000..f17ca9ae --- /dev/null +++ b/terraform/google/backup/data.google_bigquery_tables.tf @@ -0,0 +1,7 @@ +data "google_bigquery_tables" "pike" { + dataset_id = "pike" +} + +output "google_bigquery_tables" { + value = data.google_bigquery_tables.pike +} diff --git a/terraform/google/backup/data.google_certificate_manager_certificates.tf b/terraform/google/backup/data.google_certificate_manager_certificates.tf new file mode 100644 index 00000000..c43bfba8 --- /dev/null +++ b/terraform/google/backup/data.google_certificate_manager_certificates.tf @@ -0,0 +1,6 @@ +data "google_certificate_manager_certificates" "pike" { +} + +output "google_certificate_manager_certificates" { + value = data.google_certificate_manager_certificates.pike +} diff --git a/terraform/google/backup/data.google_certificate_manager_dns_authorization.tf b/terraform/google/backup/data.google_certificate_manager_dns_authorization.tf new file mode 100644 index 00000000..7f14e64e --- /dev/null +++ b/terraform/google/backup/data.google_certificate_manager_dns_authorization.tf @@ -0,0 +1,7 @@ +data "google_certificate_manager_dns_authorization" "pike" { + provider = google-beta +} + +output "google_certificate_manager_dns_authorization" { + value = data.google_certificate_manager_dns_authorization.pike +} diff --git a/terraform/google/backup/data.google_cloud_identity_group_transitive_memberships.tf b/terraform/google/backup/data.google_cloud_identity_group_transitive_memberships.tf new file mode 100644 index 00000000..7cd12094 --- /dev/null +++ b/terraform/google/backup/data.google_cloud_identity_group_transitive_memberships.tf @@ -0,0 +1,7 @@ +data "google_cloud_identity_group_transitive_memberships" "pike" { + group = "pike" +} + +output "google_cloud_identity_group_transitive_memberships" { + value = data.google_cloud_identity_group_transitive_memberships.pike +} diff --git a/terraform/google/backup/data.google_cloud_quotas_quota_info.tf b/terraform/google/backup/data.google_cloud_quotas_quota_info.tf new file mode 100644 index 00000000..511d0339 --- /dev/null +++ b/terraform/google/backup/data.google_cloud_quotas_quota_info.tf @@ -0,0 +1,9 @@ +data "google_cloud_quotas_quota_info" "pike" { + parent = "pike" + quota_id = "pike" + service = "pike" +} + +output "google_cloud_quotas_quota_info" { + value = data.google_cloud_quotas_quota_info.pike +} diff --git a/terraform/google/backup/data.google_cloud_quotas_quota_infos.tf b/terraform/google/backup/data.google_cloud_quotas_quota_infos.tf new file mode 100644 index 00000000..f7040373 --- /dev/null +++ b/terraform/google/backup/data.google_cloud_quotas_quota_infos.tf @@ -0,0 +1,8 @@ +data "google_cloud_quotas_quota_infos" "pike" { + service = "pike" + parent = "pike" +} + +output "google_cloud_quotas_quota_infos" { + value = data.google_cloud_quotas_quota_infos.pike +} diff --git a/terraform/google/backup/data.google_cloud_run_v2_worker_pool.tf b/terraform/google/backup/data.google_cloud_run_v2_worker_pool.tf new file mode 100644 index 00000000..5b3f1cb7 --- /dev/null +++ b/terraform/google/backup/data.google_cloud_run_v2_worker_pool.tf @@ -0,0 +1,8 @@ +data "google_cloud_run_v2_worker_pool" "pike" { + name = "pike" + location = "us-central1" +} + +output "google_cloud_run_v2_worker_pool" { + value = data.google_cloud_run_v2_worker_pool.pike +} diff --git a/terraform/google/backup/data.google_cloud_run_v2_worker_pool_iam_policy.tf b/terraform/google/backup/data.google_cloud_run_v2_worker_pool_iam_policy.tf new file mode 100644 index 00000000..59766abb --- /dev/null +++ b/terraform/google/backup/data.google_cloud_run_v2_worker_pool_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_cloud_run_v2_worker_pool_iam_policy" "pike" { + name = "pike" +} + +output "google_cloud_run_v2_worker_pool_iam_policy" { + value = data.google_cloud_run_v2_worker_pool_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_clouddeploy_custom_target_type_iam_policy.tf b/terraform/google/backup/data.google_clouddeploy_custom_target_type_iam_policy.tf new file mode 100644 index 00000000..de1fdba1 --- /dev/null +++ b/terraform/google/backup/data.google_clouddeploy_custom_target_type_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_clouddeploy_custom_target_type_iam_policy" "pike" { + name = "pike" +} + +output "google_clouddeploy_custom_target_type_iam_policy" { + value = data.google_clouddeploy_custom_target_type_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_clouddeploy_delivery_pipeline_iam_policy.tf b/terraform/google/backup/data.google_clouddeploy_delivery_pipeline_iam_policy.tf new file mode 100644 index 00000000..4a397e8e --- /dev/null +++ b/terraform/google/backup/data.google_clouddeploy_delivery_pipeline_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_clouddeploy_delivery_pipeline_iam_policy" "pike" { + name = "pike" +} + +output "google_clouddeploy_delivery_pipeline_iam_policy" { + value = data.google_clouddeploy_delivery_pipeline_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_clouddeploy_target_iam_policy.tf b/terraform/google/backup/data.google_clouddeploy_target_iam_policy.tf new file mode 100644 index 00000000..cfadce82 --- /dev/null +++ b/terraform/google/backup/data.google_clouddeploy_target_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_clouddeploy_target_iam_policy" "pike" { + name = "pike" +} + +output "google_clouddeploy_target_iam_policy" { + value = data.google_clouddeploy_target_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_colab_runtime_template_iam_policy.tf b/terraform/google/backup/data.google_colab_runtime_template_iam_policy.tf new file mode 100644 index 00000000..8f3c80c1 --- /dev/null +++ b/terraform/google/backup/data.google_colab_runtime_template_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_colab_runtime_template_iam_policy" "pike" { + runtime_template = "pike" +} + +output "google_colab_runtime_template_iam_policy" { + value = data.google_colab_runtime_template_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_composer_user_workloads_config_map.tf b/terraform/google/backup/data.google_composer_user_workloads_config_map.tf new file mode 100644 index 00000000..4584fa31 --- /dev/null +++ b/terraform/google/backup/data.google_composer_user_workloads_config_map.tf @@ -0,0 +1,8 @@ +data "google_composer_user_workloads_config_map" "pike" { + name = "pike" + environment = "pike" +} + +output "google_composer_user_workloads_config_map" { + value = data.google_composer_user_workloads_config_map.pike +} diff --git a/terraform/google/backup/data.google_composer_user_workloads_secret.tf b/terraform/google/backup/data.google_composer_user_workloads_secret.tf new file mode 100644 index 00000000..0c7bd372 --- /dev/null +++ b/terraform/google/backup/data.google_composer_user_workloads_secret.tf @@ -0,0 +1,8 @@ +data "google_composer_user_workloads_secret" "pike" { + environment = "pike" + name = "pike" +} + +output "google_composer_user_workloads_secret" { + value = data.google_composer_user_workloads_secret.pike +} diff --git a/terraform/google/backup/data.google_compute_forwarding_rules.tf b/terraform/google/backup/data.google_compute_forwarding_rules.tf new file mode 100644 index 00000000..95ff9c3b --- /dev/null +++ b/terraform/google/backup/data.google_compute_forwarding_rules.tf @@ -0,0 +1,6 @@ +data "google_compute_forwarding_rules" "pike" { +} + +output "google_compute_forwarding_rules" { + value = data.google_compute_forwarding_rules.pike +} diff --git a/terraform/google/backup/data.google_compute_images.tf b/terraform/google/backup/data.google_compute_images.tf new file mode 100644 index 00000000..b9f99677 --- /dev/null +++ b/terraform/google/backup/data.google_compute_images.tf @@ -0,0 +1,6 @@ +data "google_compute_images" "pike" { +} + +output "google_compute_images" { + value = data.google_compute_images.pike +} diff --git a/terraform/google/backup/data.google_compute_instance_guest_attributes.tf b/terraform/google/backup/data.google_compute_instance_guest_attributes.tf new file mode 100644 index 00000000..cffc1d59 --- /dev/null +++ b/terraform/google/backup/data.google_compute_instance_guest_attributes.tf @@ -0,0 +1,8 @@ +data "google_compute_instance_guest_attributes" "pike" { + name = "pike" + zone = "us-central1-a" +} + +output "google_compute_instance_guest_attributes" { + value = data.google_compute_instance_guest_attributes.pike +} diff --git a/terraform/google/backup/data.google_compute_instance_template_iam_policy.tf b/terraform/google/backup/data.google_compute_instance_template_iam_policy.tf new file mode 100644 index 00000000..0eb2716e --- /dev/null +++ b/terraform/google/backup/data.google_compute_instance_template_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_compute_instance_template_iam_policy" "pike" { + name = "pike" +} + +output "google_compute_instance_template_iam_policy" { + value = data.google_compute_instance_template_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_compute_instant_snapshot_iam_policy.tf b/terraform/google/backup/data.google_compute_instant_snapshot_iam_policy.tf new file mode 100644 index 00000000..2954d7ba --- /dev/null +++ b/terraform/google/backup/data.google_compute_instant_snapshot_iam_policy.tf @@ -0,0 +1,8 @@ +data "google_compute_instant_snapshot_iam_policy" "pike" { + name = "pike" + zone = "us-central1-a" +} + +output "google_compute_instant_snapshot_iam_policy" { + value = data.google_compute_instant_snapshot_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_compute_interconnect_location.tf b/terraform/google/backup/data.google_compute_interconnect_location.tf new file mode 100644 index 00000000..170fcb73 --- /dev/null +++ b/terraform/google/backup/data.google_compute_interconnect_location.tf @@ -0,0 +1,8 @@ +data "google_compute_interconnect_location" "pike" { + provider = google-beta + name = "pike" +} + +output "google_compute_interconnect_location" { + value = data.google_compute_interconnect_location.pike +} diff --git a/terraform/google/backup/data.google_compute_interconnect_locations.tf b/terraform/google/backup/data.google_compute_interconnect_locations.tf new file mode 100644 index 00000000..5062b1e8 --- /dev/null +++ b/terraform/google/backup/data.google_compute_interconnect_locations.tf @@ -0,0 +1,7 @@ +data "google_compute_interconnect_locations" "pike" { + provider = google-beta +} + +output "google_compute_interconnect_locations" { + value = data.google_compute_interconnect_locations.pike +} diff --git a/terraform/google/backup/data.google_compute_machine_types.tf b/terraform/google/backup/data.google_compute_machine_types.tf new file mode 100644 index 00000000..f76f7b31 --- /dev/null +++ b/terraform/google/backup/data.google_compute_machine_types.tf @@ -0,0 +1,7 @@ +data "google_compute_machine_types" "pike" { + zone = "us-central1-a" +} + +output "google_compute_machine_types" { + value = data.google_compute_machine_types.pike +} diff --git a/terraform/google/backup/data.google_compute_network_attachment.tf b/terraform/google/backup/data.google_compute_network_attachment.tf new file mode 100644 index 00000000..7d1e8105 --- /dev/null +++ b/terraform/google/backup/data.google_compute_network_attachment.tf @@ -0,0 +1,6 @@ +data "google_compute_network_attachment" "pike" { +} + +output "google_compute_network_attachment" { + value = data.google_compute_network_attachment.pike +} diff --git a/terraform/google/backup/data.google_compute_region_backend_service.tf b/terraform/google/backup/data.google_compute_region_backend_service.tf new file mode 100644 index 00000000..4ca6f29c --- /dev/null +++ b/terraform/google/backup/data.google_compute_region_backend_service.tf @@ -0,0 +1,7 @@ +data "google_compute_region_backend_service" "pike" { + name = "pike" +} + +output "google_compute_region_backend_service" { + value = data.google_compute_region_backend_service.pike +} diff --git a/terraform/google/backup/data.google_compute_region_instance_group_manager.tf b/terraform/google/backup/data.google_compute_region_instance_group_manager.tf new file mode 100644 index 00000000..50ac3bc8 --- /dev/null +++ b/terraform/google/backup/data.google_compute_region_instance_group_manager.tf @@ -0,0 +1,7 @@ +data "google_compute_region_instance_group_manager" "pike" { + name = "pike" +} + +output "google_compute_region_instance_group_manager" { + value = data.google_compute_region_instance_group_manager.pike +} diff --git a/terraform/google/backup/data.google_compute_security_policy.tf b/terraform/google/backup/data.google_compute_security_policy.tf new file mode 100644 index 00000000..aa4840a0 --- /dev/null +++ b/terraform/google/backup/data.google_compute_security_policy.tf @@ -0,0 +1,8 @@ +data "google_compute_security_policy" "pike" { + name = "pike" + +} + +output "google_compute_security_policy" { + value = data.google_compute_security_policy.pike +} diff --git a/terraform/google/backup/data.google_compute_storage_pool_iam_policy.tf b/terraform/google/backup/data.google_compute_storage_pool_iam_policy.tf new file mode 100644 index 00000000..8afe2762 --- /dev/null +++ b/terraform/google/backup/data.google_compute_storage_pool_iam_policy.tf @@ -0,0 +1,8 @@ +data "google_compute_storage_pool_iam_policy" "pike" { + name = "pike" + zone = "us-central1-a" +} + +output "google_compute_storage_pool_iam_policy" { + value = data.google_compute_storage_pool_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_compute_storage_pool_types.tf b/terraform/google/backup/data.google_compute_storage_pool_types.tf new file mode 100644 index 00000000..a4a9fd7d --- /dev/null +++ b/terraform/google/backup/data.google_compute_storage_pool_types.tf @@ -0,0 +1,8 @@ +data "google_compute_storage_pool_types" "pike" { + storage_pool_type = "pike" + zone = "us-central1-a" +} + +output "google_compute_storage_pool_types" { + value = data.google_compute_storage_pool_types.pike +} diff --git a/terraform/google/backup/data.google_compute_subnetworks.tf b/terraform/google/backup/data.google_compute_subnetworks.tf new file mode 100644 index 00000000..89ce57da --- /dev/null +++ b/terraform/google/backup/data.google_compute_subnetworks.tf @@ -0,0 +1,6 @@ +data "google_compute_subnetworks" "pike" { +} + +output "google_compute_subnetworks" { + value = data.google_compute_subnetworks.pike +} diff --git a/terraform/google/backup/data.google_container_attached_install_manifest.tf b/terraform/google/backup/data.google_container_attached_install_manifest.tf new file mode 100644 index 00000000..518c3c88 --- /dev/null +++ b/terraform/google/backup/data.google_container_attached_install_manifest.tf @@ -0,0 +1,10 @@ +data "google_container_attached_install_manifest" "pike" { + cluster_id = "pike" + project = "pike-412922" + platform_version = "1234" + location = "us-central1" +} + +output "google_container_attached_install_manifest" { + value = data.google_container_attached_install_manifest.pike +} diff --git a/terraform/google/backup/data.google_container_aws_versions.tf b/terraform/google/backup/data.google_container_aws_versions.tf new file mode 100644 index 00000000..98798261 --- /dev/null +++ b/terraform/google/backup/data.google_container_aws_versions.tf @@ -0,0 +1,8 @@ +data "google_container_aws_versions" "pike" { + location = "us-west1" + project = "pike-412922" +} + +output "google_container_aws_versions" { + value = data.google_container_aws_versions.pike +} diff --git a/terraform/google/backup/data.google_container_azure_versions.tf b/terraform/google/backup/data.google_container_azure_versions.tf new file mode 100644 index 00000000..3d45ab9a --- /dev/null +++ b/terraform/google/backup/data.google_container_azure_versions.tf @@ -0,0 +1,8 @@ +data "google_container_azure_versions" "pike" { + location = "us-west1" + project = "pike-412922" +} + +output "google_container_azure_versions" { + value = data.google_container_azure_versions.pike +} diff --git a/terraform/google/backup/data.google_dataplex_aspect_type_iam_policy.tf b/terraform/google/backup/data.google_dataplex_aspect_type_iam_policy.tf new file mode 100644 index 00000000..5eb8da1c --- /dev/null +++ b/terraform/google/backup/data.google_dataplex_aspect_type_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_dataplex_aspect_type_iam_policy" "pike" { + aspect_type_id = "pike" +} + +output "google_dataplex_aspect_type_iam_policy" { + value = data.google_dataplex_aspect_type_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_dataplex_data_quality_rules.tf b/terraform/google/backup/data.google_dataplex_data_quality_rules.tf new file mode 100644 index 00000000..207a23f5 --- /dev/null +++ b/terraform/google/backup/data.google_dataplex_data_quality_rules.tf @@ -0,0 +1,9 @@ +data "google_dataplex_data_quality_rules" "pike" { + project = "pike-412922" + location = "us-central1" + data_scan_id = "pike" +} + +output "google_dataplex_data_quality_rules" { + value = data.google_dataplex_data_quality_rules.pike +} diff --git a/terraform/google/backup/data.google_dataplex_entry_group_iam_policy.tf b/terraform/google/backup/data.google_dataplex_entry_group_iam_policy.tf new file mode 100644 index 00000000..e9efa6b0 --- /dev/null +++ b/terraform/google/backup/data.google_dataplex_entry_group_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_dataplex_entry_group_iam_policy" "pike" { + entry_group_id = "pike" +} + +output "google_dataplex_entry_group_iam_policy" { + value = data.google_dataplex_entry_group_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_dataplex_entry_type_iam_policy.tf b/terraform/google/backup/data.google_dataplex_entry_type_iam_policy.tf new file mode 100644 index 00000000..a902655b --- /dev/null +++ b/terraform/google/backup/data.google_dataplex_entry_type_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_dataplex_entry_type_iam_policy" "pike" { + entry_type_id = "pike" +} + +output "google_dataplex_entry_type_iam_policy" { + value = data.google_dataplex_entry_type_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_dataplex_glossary_iam_policy.tf b/terraform/google/backup/data.google_dataplex_glossary_iam_policy.tf new file mode 100644 index 00000000..096ba905 --- /dev/null +++ b/terraform/google/backup/data.google_dataplex_glossary_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_dataplex_glossary_iam_policy" "pike" { + glossary_id = "pike" +} + +output "google_dataplex_glossary_iam_policy" { + value = data.google_dataplex_glossary_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_dataproc_metastore_database_iam_policy.tf b/terraform/google/backup/data.google_dataproc_metastore_database_iam_policy.tf new file mode 100644 index 00000000..d1ee8c71 --- /dev/null +++ b/terraform/google/backup/data.google_dataproc_metastore_database_iam_policy.tf @@ -0,0 +1,8 @@ +data "google_dataproc_metastore_database_iam_policy" "pike" { + database = "pike" + service_id = "pike" +} + +output "google_dataproc_metastore_database_iam_policy" { + value = data.google_dataproc_metastore_database_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_dataproc_metastore_table_iam_policy.tf b/terraform/google/backup/data.google_dataproc_metastore_table_iam_policy.tf new file mode 100644 index 00000000..e2aac29b --- /dev/null +++ b/terraform/google/backup/data.google_dataproc_metastore_table_iam_policy.tf @@ -0,0 +1,10 @@ +data "google_dataproc_metastore_table_iam_policy" "pike" { + database_id = "pike" + table = "pike" + service_id = "pike" + +} + +output "google_dataproc_metastore_table_iam_policy" { + value = data.google_dataproc_metastore_table_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_dns_managed_zones.tf b/terraform/google/backup/data.google_dns_managed_zones.tf new file mode 100644 index 00000000..0346fb4d --- /dev/null +++ b/terraform/google/backup/data.google_dns_managed_zones.tf @@ -0,0 +1,6 @@ +data "google_dns_managed_zones" "pike" { +} + +output "google_dns_managed_zones" { + value = data.google_dns_managed_zones.pike +} diff --git a/terraform/google/backup/data.google_folder.tf b/terraform/google/backup/data.google_folder.tf new file mode 100644 index 00000000..18f73e83 --- /dev/null +++ b/terraform/google/backup/data.google_folder.tf @@ -0,0 +1,7 @@ +data "google_folder" "pike" { + folder = "pike" +} + +output "google_folder" { + value = data.google_folder.pike +} diff --git a/terraform/google/backup/data.google_folder_iam_policy.tf b/terraform/google/backup/data.google_folder_iam_policy.tf new file mode 100644 index 00000000..8f2591d5 --- /dev/null +++ b/terraform/google/backup/data.google_folder_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_folder_iam_policy" "pike" { + folder = "folders/pike" +} + +output "google_folder_iam_policy" { + value = data.google_folder_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_folders.tf b/terraform/google/backup/data.google_folders.tf new file mode 100644 index 00000000..05b1b3a5 --- /dev/null +++ b/terraform/google/backup/data.google_folders.tf @@ -0,0 +1,7 @@ +data "google_folders" "pike" { + parent_id = "organizations/12345" +} + +output "google_folders" { + value = data.google_folders.pike +} diff --git a/terraform/google/backup/data.google_gemini_repository_group_iam_policy.tf b/terraform/google/backup/data.google_gemini_repository_group_iam_policy.tf new file mode 100644 index 00000000..1049dad0 --- /dev/null +++ b/terraform/google/backup/data.google_gemini_repository_group_iam_policy.tf @@ -0,0 +1,9 @@ +data "google_gemini_repository_group_iam_policy" "pike" { + code_repository_index = "pike" + repository_group_id = "pike" + project = "pike-412922" +} + +output "google_gemini_repository_group_iam_policy" { + value = data.google_gemini_repository_group_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_gke_hub_feature.tf b/terraform/google/backup/data.google_gke_hub_feature.tf new file mode 100644 index 00000000..c0f58f8e --- /dev/null +++ b/terraform/google/backup/data.google_gke_hub_feature.tf @@ -0,0 +1,8 @@ +data "google_gke_hub_feature" "pike" { + name = "servicemesh" + location = "global" +} + +output "google_gke_hub_feature" { + value = data.google_gke_hub_feature.pike +} diff --git a/terraform/google/backup/data.google_gke_hub_membership.tf b/terraform/google/backup/data.google_gke_hub_membership.tf new file mode 100644 index 00000000..b0d02356 --- /dev/null +++ b/terraform/google/backup/data.google_gke_hub_membership.tf @@ -0,0 +1,8 @@ +data "google_gke_hub_membership" "pike" { + membership_id = "pike" + location = "us-central1" +} + +output "google_gke_hub_membership" { + value = data.google_gke_hub_membership.pike +} diff --git a/terraform/google/backup/data.google_iam_workforce_pool_iam_policy.tf b/terraform/google/backup/data.google_iam_workforce_pool_iam_policy.tf new file mode 100644 index 00000000..7b8a68e6 --- /dev/null +++ b/terraform/google/backup/data.google_iam_workforce_pool_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_iam_workforce_pool_iam_policy" "pike" { +} + +output "google_iam_workforce_pool_iam_policy" { + value = data.google_iam_workforce_pool_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_iam_workload_identity_pool_iam_policy.tf b/terraform/google/backup/data.google_iam_workload_identity_pool_iam_policy.tf new file mode 100644 index 00000000..d4f17d1a --- /dev/null +++ b/terraform/google/backup/data.google_iam_workload_identity_pool_iam_policy.tf @@ -0,0 +1,8 @@ +data "google_iam_workload_identity_pool_iam_policy" "pike" { + provider = google-beta + workload_identity_pool_id = "gitlab" +} + +output "google_iam_workload_identity_pool_iam_policy" { + value = data.google_iam_workload_identity_pool_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_iap_tunnel_dest_group_iam_policy.tf b/terraform/google/backup/data.google_iap_tunnel_dest_group_iam_policy.tf new file mode 100644 index 00000000..25538a6f --- /dev/null +++ b/terraform/google/backup/data.google_iap_tunnel_dest_group_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_iap_tunnel_dest_group_iam_policy" "pike" { + dest_group = "pike" +} + +output "google_iap_tunnel_dest_group_iam_policy" { + value = data.google_iap_tunnel_dest_group_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_iap_web_cloud_run_service_iam_policy.tf b/terraform/google/backup/data.google_iap_web_cloud_run_service_iam_policy.tf new file mode 100644 index 00000000..78958854 --- /dev/null +++ b/terraform/google/backup/data.google_iap_web_cloud_run_service_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_iap_web_cloud_run_service_iam_policy" "pike" { + cloud_run_service_name = "pike" +} + +output "google_iap_web_cloud_run_service_iam_policy" { + value = data.google_iap_web_cloud_run_service_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_iap_web_forwarding_rule_service_iam_policy.tf b/terraform/google/backup/data.google_iap_web_forwarding_rule_service_iam_policy.tf new file mode 100644 index 00000000..3d3d06c3 --- /dev/null +++ b/terraform/google/backup/data.google_iap_web_forwarding_rule_service_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_iap_web_forwarding_rule_service_iam_policy" "pike" { + forwarding_rule_service_name = "pike" +} + +output "google_iap_web_forwarding_rule_service_iam_policy" { + value = data.google_iap_web_forwarding_rule_service_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_iap_web_region_forwarding_rule_service_iam_policy.tf b/terraform/google/backup/data.google_iap_web_region_forwarding_rule_service_iam_policy.tf new file mode 100644 index 00000000..16045650 --- /dev/null +++ b/terraform/google/backup/data.google_iap_web_region_forwarding_rule_service_iam_policy.tf @@ -0,0 +1,8 @@ +data "google_iap_web_region_forwarding_rule_service_iam_policy" "pike" { + provider = google-beta + web_region_backend_service = "pike" +} + +output "google_iap_web_region_forwarding_rule_service_iam_policy" { + value = data.google_iap_web_region_forwarding_rule_service_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_kms_autokey_config.tf b/terraform/google/backup/data.google_kms_autokey_config.tf new file mode 100644 index 00000000..4f387289 --- /dev/null +++ b/terraform/google/backup/data.google_kms_autokey_config.tf @@ -0,0 +1,8 @@ +data "google_kms_autokey_config" "pike" { + provider = google-beta + folder = "pike" +} + +output "google_kms_autokey_config" { + value = data.google_kms_autokey_config.pike +} diff --git a/terraform/google/backup/data.google_kms_crypto_key_latest_version.tf b/terraform/google/backup/data.google_kms_crypto_key_latest_version.tf new file mode 100644 index 00000000..6fba8423 --- /dev/null +++ b/terraform/google/backup/data.google_kms_crypto_key_latest_version.tf @@ -0,0 +1,7 @@ +data "google_kms_crypto_key_latest_version" "pike" { + crypto_key = "pike/us-central1/pike/pike" +} + +output "google_kms_crypto_key_latest_version" { + value = data.google_kms_crypto_key_latest_version.pike +} diff --git a/terraform/google/backup/data.google_kms_crypto_key_versions.tf b/terraform/google/backup/data.google_kms_crypto_key_versions.tf new file mode 100644 index 00000000..c547fb49 --- /dev/null +++ b/terraform/google/backup/data.google_kms_crypto_key_versions.tf @@ -0,0 +1,7 @@ +data "google_kms_crypto_key_versions" "pike" { + crypto_key = "pike/us-central1/pike/pike" +} + +output "google_kms_crypto_key_versions" { + value = data.google_kms_crypto_key_versions.pike +} diff --git a/terraform/google/backup/data.google_kms_crypto_keys.tf b/terraform/google/backup/data.google_kms_crypto_keys.tf new file mode 100644 index 00000000..ec6edf88 --- /dev/null +++ b/terraform/google/backup/data.google_kms_crypto_keys.tf @@ -0,0 +1,7 @@ +data "google_kms_crypto_keys" "pike" { + key_ring = "us-central1/pike" +} + +output "google_kms_crypto_keys" { + value = data.google_kms_crypto_keys.pike +} diff --git a/terraform/google/backup/data.google_kms_ekm_connection_iam_policy.tf b/terraform/google/backup/data.google_kms_ekm_connection_iam_policy.tf new file mode 100644 index 00000000..b54b522e --- /dev/null +++ b/terraform/google/backup/data.google_kms_ekm_connection_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_kms_ekm_connection_iam_policy" "pike" { + name = "projects/pike/locations/us-central1/ekmConnections/pike" +} + +output "google_kms_ekm_connection_iam_policy" { + value = data.google_kms_ekm_connection_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_kms_key_handle.tf b/terraform/google/backup/data.google_kms_key_handle.tf new file mode 100644 index 00000000..247bc94c --- /dev/null +++ b/terraform/google/backup/data.google_kms_key_handle.tf @@ -0,0 +1,9 @@ +data "google_kms_key_handle" "pike" { + name = "pike" + location = "us-central1" + provider = google-beta +} + +output "google_kms_key_handle" { + value = data.google_kms_key_handle.pike +} diff --git a/terraform/google/backup/data.google_kms_key_handles.tf b/terraform/google/backup/data.google_kms_key_handles.tf new file mode 100644 index 00000000..198b7034 --- /dev/null +++ b/terraform/google/backup/data.google_kms_key_handles.tf @@ -0,0 +1,9 @@ +data "google_kms_key_handles" "pike" { + provider = google-beta + location = "us-central1" + resource_type_selector = "storage.googleapis.com/Bucket" +} + +output "google_kms_key_handles" { + value = data.google_kms_key_handles.pike +} diff --git a/terraform/google/backup/data.google_kms_key_rings.tf b/terraform/google/backup/data.google_kms_key_rings.tf new file mode 100644 index 00000000..f8fb10fe --- /dev/null +++ b/terraform/google/backup/data.google_kms_key_rings.tf @@ -0,0 +1,7 @@ +data "google_kms_key_rings" "pike" { + location = "us-central1" +} + +output "google_kms_key_rings" { + value = data.google_kms_key_rings.pike +} diff --git a/terraform/google/backup/data.google_logging_log_view_iam_policy.tf b/terraform/google/backup/data.google_logging_log_view_iam_policy.tf new file mode 100644 index 00000000..e48d0995 --- /dev/null +++ b/terraform/google/backup/data.google_logging_log_view_iam_policy.tf @@ -0,0 +1,9 @@ +data "google_logging_log_view_iam_policy" "pike" { + bucket = "anyoldshet" + parent = "pike" + name = "pike" +} + +output "google_logging_log_view_iam_policy" { + value = data.google_logging_log_view_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_lustre_instance.tf b/terraform/google/backup/data.google_lustre_instance.tf new file mode 100644 index 00000000..a829d693 --- /dev/null +++ b/terraform/google/backup/data.google_lustre_instance.tf @@ -0,0 +1,8 @@ +data "google_lustre_instance" "pike" { + instance_id = "pike" + zone = "us-central1-a" +} + +output "google_lustre_instance" { + value = data.google_lustre_instance.pike +} diff --git a/terraform/google/backup/data.google_memcache_instance.tf b/terraform/google/backup/data.google_memcache_instance.tf new file mode 100644 index 00000000..7f83eba9 --- /dev/null +++ b/terraform/google/backup/data.google_memcache_instance.tf @@ -0,0 +1,7 @@ +data "google_memcache_instance" "pike" { + name = "pike" +} + +output "google_memcache_instance" { + value = data.google_memcache_instance.pike +} diff --git a/terraform/google/backup/data.google_memorystore_instance.tf b/terraform/google/backup/data.google_memorystore_instance.tf new file mode 100644 index 00000000..860851dc --- /dev/null +++ b/terraform/google/backup/data.google_memorystore_instance.tf @@ -0,0 +1,7 @@ +data "google_memorystore_instance" "pike" { + instance_id = "pike" +} + +output "google_memorystore_instance" { + value = data.google_memorystore_instance.pike +} diff --git a/terraform/google/backup/data.google_oracle_database_autonomous_database.tf b/terraform/google/backup/data.google_oracle_database_autonomous_database.tf new file mode 100644 index 00000000..c887c8d0 --- /dev/null +++ b/terraform/google/backup/data.google_oracle_database_autonomous_database.tf @@ -0,0 +1,8 @@ +data "google_oracle_database_autonomous_database" "pike" { + location = "us-central1" + autonomous_database_id = "pike" +} + +output "google_oracle_database_autonomous_database" { + value = data.google_oracle_database_autonomous_database.pike +} diff --git a/terraform/google/backup/data.google_oracle_database_autonomous_databases.tf b/terraform/google/backup/data.google_oracle_database_autonomous_databases.tf new file mode 100644 index 00000000..79012aae --- /dev/null +++ b/terraform/google/backup/data.google_oracle_database_autonomous_databases.tf @@ -0,0 +1,7 @@ +data "google_oracle_database_autonomous_databases" "pike" { + location = "us-central1" +} + +output "google_oracle_database_autonomous_databases" { + value = data.google_oracle_database_autonomous_databases.pike +} diff --git a/terraform/google/backup/data.google_oracle_database_cloud_exadata_infrastructure.tf b/terraform/google/backup/data.google_oracle_database_cloud_exadata_infrastructure.tf new file mode 100644 index 00000000..20c5ae49 --- /dev/null +++ b/terraform/google/backup/data.google_oracle_database_cloud_exadata_infrastructure.tf @@ -0,0 +1,8 @@ +data "google_oracle_database_cloud_exadata_infrastructure" "pike" { + location = "us-central1" + cloud_exadata_infrastructure_id = "pike" +} + +output "google_oracle_database_cloud_exadata_infrastructure" { + value = data.google_oracle_database_cloud_exadata_infrastructure.pike +} diff --git a/terraform/google/backup/data.google_oracle_database_cloud_exadata_infrastructures.tf b/terraform/google/backup/data.google_oracle_database_cloud_exadata_infrastructures.tf new file mode 100644 index 00000000..6a99ee51 --- /dev/null +++ b/terraform/google/backup/data.google_oracle_database_cloud_exadata_infrastructures.tf @@ -0,0 +1,7 @@ +data "google_oracle_database_cloud_exadata_infrastructures" "pike" { + location = "us-central1" +} + +output "google_oracle_database_cloud_exadata_infrastructures" { + value = data.google_oracle_database_cloud_exadata_infrastructures.pike +} diff --git a/terraform/google/backup/data.google_oracle_database_cloud_vm_cluster.tf b/terraform/google/backup/data.google_oracle_database_cloud_vm_cluster.tf new file mode 100644 index 00000000..5ca731af --- /dev/null +++ b/terraform/google/backup/data.google_oracle_database_cloud_vm_cluster.tf @@ -0,0 +1,8 @@ +data "google_oracle_database_cloud_vm_cluster" "pike" { + location = "us-central1" + cloud_vm_cluster_id = "pike" +} + +output "google_oracle_database_cloud_vm_cluster" { + value = data.google_oracle_database_cloud_vm_cluster.pike +} diff --git a/terraform/google/backup/data.google_oracle_database_cloud_vm_clusters.tf b/terraform/google/backup/data.google_oracle_database_cloud_vm_clusters.tf new file mode 100644 index 00000000..0b395a80 --- /dev/null +++ b/terraform/google/backup/data.google_oracle_database_cloud_vm_clusters.tf @@ -0,0 +1,7 @@ +data "google_oracle_database_cloud_vm_clusters" "pike" { + location = "us-central1" +} + +output "google_oracle_database_cloud_vm_clusters" { + value = data.google_oracle_database_cloud_vm_clusters.pike +} diff --git a/terraform/google/backup/data.google_oracle_database_db_nodes.tf b/terraform/google/backup/data.google_oracle_database_db_nodes.tf new file mode 100644 index 00000000..5fa14003 --- /dev/null +++ b/terraform/google/backup/data.google_oracle_database_db_nodes.tf @@ -0,0 +1,8 @@ +data "google_oracle_database_db_nodes" "pike" { + cloud_vm_cluster = "pike" + location = "us-central1" +} + +output "google_oracle_database_db_nodes" { + value = data.google_oracle_database_db_nodes.pike +} diff --git a/terraform/google/backup/data.google_oracle_database_db_servers.tf b/terraform/google/backup/data.google_oracle_database_db_servers.tf new file mode 100644 index 00000000..761f25a7 --- /dev/null +++ b/terraform/google/backup/data.google_oracle_database_db_servers.tf @@ -0,0 +1,8 @@ +data "google_oracle_database_db_servers" "pike" { + cloud_exadata_infrastructure = "pike" + location = "us-central1" +} + +output "google_oracle_database_db_servers" { + value = data.google_oracle_database_db_servers.pike +} diff --git a/terraform/google/backup/data.google_organization_iam_custom_role.tf b/terraform/google/backup/data.google_organization_iam_custom_role.tf new file mode 100644 index 00000000..13201877 --- /dev/null +++ b/terraform/google/backup/data.google_organization_iam_custom_role.tf @@ -0,0 +1,9 @@ +data "google_organization_iam_custom_role" "pike" { + role_id = "pike" + org_id = "123456789" +} + + +output "google_organization_iam_custom_role" { + value = data.google_organization_iam_custom_role.pike +} diff --git a/terraform/google/backup/data.google_organization_iam_custom_roles.tf b/terraform/google/backup/data.google_organization_iam_custom_roles.tf new file mode 100644 index 00000000..69f74eb3 --- /dev/null +++ b/terraform/google/backup/data.google_organization_iam_custom_roles.tf @@ -0,0 +1,9 @@ +data "google_organization_iam_custom_roles" "pike" { + org_id = "1234567890" + show_deleted = true + view = "FULL" +} + +output "google_organization_iam_custom_roles" { + value = data.google_organization_iam_custom_roles.pike +} diff --git a/terraform/google/backup/data.google_organization_iam_policy.tf b/terraform/google/backup/data.google_organization_iam_policy.tf new file mode 100644 index 00000000..b902468d --- /dev/null +++ b/terraform/google/backup/data.google_organization_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_organization_iam_policy" "pike" { +} + +output "google_organization_iam_policy" { + value = data.google_organization_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_organizations.tf b/terraform/google/backup/data.google_organizations.tf new file mode 100644 index 00000000..c8634fce --- /dev/null +++ b/terraform/google/backup/data.google_organizations.tf @@ -0,0 +1,6 @@ +data "google_organizations" "pike" { +} + +output "google_organizations" { + value = data.google_organizations.pike +} diff --git a/terraform/google/backup/data.google_parameter_manager_parameter.tf b/terraform/google/backup/data.google_parameter_manager_parameter.tf new file mode 100644 index 00000000..ae7e3e98 --- /dev/null +++ b/terraform/google/backup/data.google_parameter_manager_parameter.tf @@ -0,0 +1,7 @@ +data "google_parameter_manager_parameter" "pike" { + parameter_id = "pike" +} + +output "google_parameter_manager_parameter" { + value = data.google_parameter_manager_parameter.pike +} diff --git a/terraform/google/backup/data.google_parameter_manager_parameter_version.tf b/terraform/google/backup/data.google_parameter_manager_parameter_version.tf new file mode 100644 index 00000000..11a45450 --- /dev/null +++ b/terraform/google/backup/data.google_parameter_manager_parameter_version.tf @@ -0,0 +1,8 @@ +data "google_parameter_manager_parameter_version" "pike" { + parameter_version_id = "pike" + parameter = "pike" +} + +output "google_parameter_manager_parameter_version" { + value = data.google_parameter_manager_parameter_version.pike +} diff --git a/terraform/google/backup/data.google_parameter_manager_parameter_version_render.tf b/terraform/google/backup/data.google_parameter_manager_parameter_version_render.tf new file mode 100644 index 00000000..f7e54c94 --- /dev/null +++ b/terraform/google/backup/data.google_parameter_manager_parameter_version_render.tf @@ -0,0 +1,8 @@ +data "google_parameter_manager_parameter_version_render" "pike" { + parameter_version_id = "pike" + parameter = "pike" +} + +output "google_parameter_manager_parameter_version_render" { + value = data.google_parameter_manager_parameter_version_render.pike +} diff --git a/terraform/google/backup/data.google_parameter_manager_parameters.tf b/terraform/google/backup/data.google_parameter_manager_parameters.tf new file mode 100644 index 00000000..5cc004ba --- /dev/null +++ b/terraform/google/backup/data.google_parameter_manager_parameters.tf @@ -0,0 +1,6 @@ +data "google_parameter_manager_parameters" "pike" { +} + +output "google_parameter_manager_parameters" { + value = data.google_parameter_manager_parameters.pike +} diff --git a/terraform/google/backup/data.google_parameter_manager_regional_parameter.tf b/terraform/google/backup/data.google_parameter_manager_regional_parameter.tf new file mode 100644 index 00000000..25bbdf89 --- /dev/null +++ b/terraform/google/backup/data.google_parameter_manager_regional_parameter.tf @@ -0,0 +1,8 @@ +data "google_parameter_manager_regional_parameter" "pike" { + location = "us-central1" + parameter_id = "pike" +} + +output "google_parameter_manager_regional_parameter" { + value = data.google_parameter_manager_regional_parameter.pike +} diff --git a/terraform/google/backup/data.google_parameter_manager_regional_parameter_version.tf b/terraform/google/backup/data.google_parameter_manager_regional_parameter_version.tf new file mode 100644 index 00000000..c06dd8a1 --- /dev/null +++ b/terraform/google/backup/data.google_parameter_manager_regional_parameter_version.tf @@ -0,0 +1,9 @@ +data "google_parameter_manager_regional_parameter_version" "pike" { + parameter_version_id = "pike" + parameter = "pike" + location = "us-central1" +} + +output "google_parameter_manager_regional_parameter_version" { + value = data.google_parameter_manager_regional_parameter_version.pike +} diff --git a/terraform/google/backup/data.google_parameter_manager_regional_parameter_version_render.tf b/terraform/google/backup/data.google_parameter_manager_regional_parameter_version_render.tf new file mode 100644 index 00000000..5f2bc195 --- /dev/null +++ b/terraform/google/backup/data.google_parameter_manager_regional_parameter_version_render.tf @@ -0,0 +1,9 @@ +data "google_parameter_manager_regional_parameter_version_render" "pike" { + parameter_version_id = "pike" + parameter = "pike" + location = "us-central1" +} + +output "google_parameter_manager_regional_parameter_version_render" { + value = data.google_parameter_manager_regional_parameter_version_render.pike +} diff --git a/terraform/google/backup/data.google_parameter_manager_regional_parameters.tf b/terraform/google/backup/data.google_parameter_manager_regional_parameters.tf new file mode 100644 index 00000000..7b21d83a --- /dev/null +++ b/terraform/google/backup/data.google_parameter_manager_regional_parameters.tf @@ -0,0 +1,7 @@ +data "google_parameter_manager_regional_parameters" "pike" { + location = "us-central1" +} + +output "google_parameter_manager_regional_parameters" { + value = data.google_parameter_manager_regional_parameters.pike +} diff --git a/terraform/google/backup/data.google_privateca_ca_pool_iam_policy.tf b/terraform/google/backup/data.google_privateca_ca_pool_iam_policy.tf new file mode 100644 index 00000000..e9cf9e53 --- /dev/null +++ b/terraform/google/backup/data.google_privateca_ca_pool_iam_policy.tf @@ -0,0 +1,20 @@ +data "google_privateca_ca_pool_iam_policy" "pike" { + ca_pool = google_privateca_ca_pool.default.id +} + +output "google_privateca_ca_pool_iam_policy" { + value = data.google_privateca_ca_pool_iam_policy.pike +} + +resource "google_privateca_ca_pool" "default" { + name = "my-pool" + location = "us-central1" + tier = "ENTERPRISE" + publishing_options { + publish_ca_cert = true + publish_crl = true + } + labels = { + foo = "bar" + } +} diff --git a/terraform/google/backup/data.google_privateca_certificate_authority.tf b/terraform/google/backup/data.google_privateca_certificate_authority.tf new file mode 100644 index 00000000..3ce5aba5 --- /dev/null +++ b/terraform/google/backup/data.google_privateca_certificate_authority.tf @@ -0,0 +1,9 @@ +data "google_privateca_certificate_authority" "pike" { + location = "us-central1" + pool = "pool-name" + certificate_authority_id = "ca-id" +} + +output "google_privateca_certificate_authority" { + value = data.google_privateca_certificate_authority.pike +} diff --git a/terraform/google/backup/data.google_privateca_certificate_template_iam_policy.tf b/terraform/google/backup/data.google_privateca_certificate_template_iam_policy.tf new file mode 100644 index 00000000..aba5cc65 --- /dev/null +++ b/terraform/google/backup/data.google_privateca_certificate_template_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_privateca_certificate_template_iam_policy" "pike" { + certificate_template = google_privateca_certificate_template.default.id +} + +output "google_privateca_certificate_template_iam_policy" { + value = data.google_privateca_certificate_template_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_privileged_access_manager_entitlement.tf b/terraform/google/backup/data.google_privileged_access_manager_entitlement.tf new file mode 100644 index 00000000..3da2fad7 --- /dev/null +++ b/terraform/google/backup/data.google_privileged_access_manager_entitlement.tf @@ -0,0 +1,12 @@ +data "google_privileged_access_manager_entitlement" "pike" { + parent = "projects/pike" + location = "global" + entitlement_id = "my-entitlement" + depends_on = [ + google_privileged_access_manager_entitlement.entitlement + ] +} + +output "google_privileged_access_manager_entitlement" { + value = data.google_privileged_access_manager_entitlement.pike +} diff --git a/terraform/google/backup/data.google_project_ancestry.tf b/terraform/google/backup/data.google_project_ancestry.tf new file mode 100644 index 00000000..ed3a559f --- /dev/null +++ b/terraform/google/backup/data.google_project_ancestry.tf @@ -0,0 +1,6 @@ +data "google_project_ancestry" "pike" { +} + +output "google_project_ancestry" { + value = data.google_project_ancestry.pike +} diff --git a/terraform/google/backup/data.google_project_iam_custom_role.tf b/terraform/google/backup/data.google_project_iam_custom_role.tf new file mode 100644 index 00000000..ec005668 --- /dev/null +++ b/terraform/google/backup/data.google_project_iam_custom_role.tf @@ -0,0 +1,7 @@ +data "google_project_iam_custom_role" "pike" { + role_id = "terraform_pike" +} + +output "google_project_iam_custom_role" { + value = data.google_project_iam_custom_role.pike +} diff --git a/terraform/google/backup/data.google_project_iam_custom_roles.tf b/terraform/google/backup/data.google_project_iam_custom_roles.tf new file mode 100644 index 00000000..2e2bfcec --- /dev/null +++ b/terraform/google/backup/data.google_project_iam_custom_roles.tf @@ -0,0 +1,7 @@ +data "google_project_iam_custom_roles" "pike" { + +} + +output "google_project_iam_custom_roles" { + value = data.google_project_iam_custom_roles.pike +} diff --git a/terraform/google/backup/data.google_project_iam_policy.tf b/terraform/google/backup/data.google_project_iam_policy.tf new file mode 100644 index 00000000..27cdad00 --- /dev/null +++ b/terraform/google/backup/data.google_project_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_project_iam_policy" "pike" { +} + +output "google_project_iam_policy" { + value = data.google_project_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_project_organization_policy.tf b/terraform/google/backup/data.google_project_organization_policy.tf new file mode 100644 index 00000000..0264539a --- /dev/null +++ b/terraform/google/backup/data.google_project_organization_policy.tf @@ -0,0 +1,6 @@ +data "google_project_organization_policy" "pike" { +} + +output "google_project_organization_policy" { + value = data.google_project_organization_policy.pike +} diff --git a/terraform/google/backup/data.google_pubsub_schema_iam_policy.tf b/terraform/google/backup/data.google_pubsub_schema_iam_policy.tf new file mode 100644 index 00000000..1f53da43 --- /dev/null +++ b/terraform/google/backup/data.google_pubsub_schema_iam_policy.tf @@ -0,0 +1,13 @@ +data "google_pubsub_schema_iam_policy" "pike" { + schema = google_pubsub_schema.example.id +} + +output "google_pubsub_schema_iam_policy" { + value = data.google_pubsub_schema_iam_policy.pike +} + +resource "google_pubsub_schema" "example" { + name = "example-schema" + type = "AVRO" + definition = "{\n \"type\" : \"record\",\n \"name\" : \"Avro\",\n \"fields\" : [\n {\n \"name\" : \"StringField\",\n \"type\" : \"string\"\n },\n {\n \"name\" : \"IntField\",\n \"type\" : \"int\"\n }\n ]\n}\n" +} diff --git a/terraform/google/backup/data.google_redis_cluster.tf b/terraform/google/backup/data.google_redis_cluster.tf new file mode 100644 index 00000000..7ac07fff --- /dev/null +++ b/terraform/google/backup/data.google_redis_cluster.tf @@ -0,0 +1,6 @@ +data "google_redis_cluster" "pike" { +} + +output "google_redis_cluster" { + value = data.google_redis_cluster.pike +} diff --git a/terraform/google/backup/data.google_runtimeconfig_config.tf b/terraform/google/backup/data.google_runtimeconfig_config.tf new file mode 100644 index 00000000..b9a56dc8 --- /dev/null +++ b/terraform/google/backup/data.google_runtimeconfig_config.tf @@ -0,0 +1,6 @@ +data "google_runtimeconfig_config" "pike" { +} + +output "google_runtimeconfig_config" { + value = data.google_runtimeconfig_config.pike +} diff --git a/terraform/google/backup/data.google_runtimeconfig_config_iam_policy.tf b/terraform/google/backup/data.google_runtimeconfig_config_iam_policy.tf new file mode 100644 index 00000000..152695b7 --- /dev/null +++ b/terraform/google/backup/data.google_runtimeconfig_config_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_runtimeconfig_config_iam_policy" "pike" { +} + +output "google_runtimeconfig_config_iam_policy" { + value = data.google_runtimeconfig_config_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_runtimeconfig_variable.tf b/terraform/google/backup/data.google_runtimeconfig_variable.tf new file mode 100644 index 00000000..99b31f5a --- /dev/null +++ b/terraform/google/backup/data.google_runtimeconfig_variable.tf @@ -0,0 +1,6 @@ +data "google_runtimeconfig_variable" "pike" { +} + +output "google_runtimeconfig_variable" { + value = data.google_runtimeconfig_variable.pike +} diff --git a/terraform/google/backup/data.google_scc_source_iam_policy.tf b/terraform/google/backup/data.google_scc_source_iam_policy.tf new file mode 100644 index 00000000..3bf30d91 --- /dev/null +++ b/terraform/google/backup/data.google_scc_source_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_scc_source_iam_policy" "pike" { +} + +output "google_scc_source_iam_policy" { + value = data.google_scc_source_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_scc_v2_organization_source_iam_policy.tf b/terraform/google/backup/data.google_scc_v2_organization_source_iam_policy.tf new file mode 100644 index 00000000..e69508b4 --- /dev/null +++ b/terraform/google/backup/data.google_scc_v2_organization_source_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_scc_v2_organization_source_iam_policy" "pike" { +} + +output "google_scc_v2_organization_source_iam_policy" { + value = data.google_scc_v2_organization_source_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_secret_manager_regional_secret.tf b/terraform/google/backup/data.google_secret_manager_regional_secret.tf new file mode 100644 index 00000000..8912e3f0 --- /dev/null +++ b/terraform/google/backup/data.google_secret_manager_regional_secret.tf @@ -0,0 +1,8 @@ +data "google_secret_manager_regional_secret" "pike" { + location = "us-central1" + secret_id = "secretname" +} + +output "google_secret_manager_regional_secret" { + value = data.google_secret_manager_regional_secret.pike +} diff --git a/terraform/google/backup/data.google_secret_manager_regional_secret_iam_policy.tf b/terraform/google/backup/data.google_secret_manager_regional_secret_iam_policy.tf new file mode 100644 index 00000000..99690860 --- /dev/null +++ b/terraform/google/backup/data.google_secret_manager_regional_secret_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_secret_manager_regional_secret_iam_policy" "pike" { + secret_id = "secretname" +} + +output "google_secret_manager_regional_secret_iam_policy" { + value = data.google_secret_manager_regional_secret_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_secret_manager_regional_secret_version.tf b/terraform/google/backup/data.google_secret_manager_regional_secret_version.tf new file mode 100644 index 00000000..3dd10c52 --- /dev/null +++ b/terraform/google/backup/data.google_secret_manager_regional_secret_version.tf @@ -0,0 +1,8 @@ +data "google_secret_manager_regional_secret_version" "pike" { + secret = "my-secret" + location = "us-central1" +} + +output "google_secret_manager_regional_secret_version" { + value = data.google_secret_manager_regional_secret_version.pike +} diff --git a/terraform/google/backup/data.google_secret_manager_regional_secret_version_access.tf b/terraform/google/backup/data.google_secret_manager_regional_secret_version_access.tf new file mode 100644 index 00000000..c999fb63 --- /dev/null +++ b/terraform/google/backup/data.google_secret_manager_regional_secret_version_access.tf @@ -0,0 +1,8 @@ +data "google_secret_manager_regional_secret_version_access" "pike" { + secret = "my-secret" + location = "us-central1" +} + +output "google_secret_manager_regional_secret_version_access" { + value = data.google_secret_manager_regional_secret_version_access.pike +} diff --git a/terraform/google/backup/data.google_secret_manager_regional_secrets.tf b/terraform/google/backup/data.google_secret_manager_regional_secrets.tf new file mode 100644 index 00000000..d8b5bd1a --- /dev/null +++ b/terraform/google/backup/data.google_secret_manager_regional_secrets.tf @@ -0,0 +1,7 @@ +data "google_secret_manager_regional_secrets" "pike" { + location = "us-central1" +} + +output "google_secret_manager_regional_secrets" { + value = data.google_secret_manager_regional_secrets.pike +} diff --git a/terraform/google/backup/data.google_secure_source_manager_instance_iam_policy.tf b/terraform/google/backup/data.google_secure_source_manager_instance_iam_policy.tf new file mode 100644 index 00000000..d01a38d8 --- /dev/null +++ b/terraform/google/backup/data.google_secure_source_manager_instance_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_secure_source_manager_instance_iam_policy" "pike" { +} + +output "google_secure_source_manager_instance_iam_policy" { + value = data.google_secure_source_manager_instance_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_secure_source_manager_repository_iam_policy.tf b/terraform/google/backup/data.google_secure_source_manager_repository_iam_policy.tf new file mode 100644 index 00000000..ad6135a4 --- /dev/null +++ b/terraform/google/backup/data.google_secure_source_manager_repository_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_secure_source_manager_repository_iam_policy" "pike" { +} + +output "google_secure_source_manager_repository_iam_policy" { + value = data.google_secure_source_manager_repository_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_service_accounts.tf b/terraform/google/backup/data.google_service_accounts.tf new file mode 100644 index 00000000..55f4038f --- /dev/null +++ b/terraform/google/backup/data.google_service_accounts.tf @@ -0,0 +1,6 @@ +data "google_service_accounts" "pike" { +} + +output "google_service_accounts" { + value = data.google_service_accounts.pike +} diff --git a/terraform/google/backup/data.google_site_verification_token.tf b/terraform/google/backup/data.google_site_verification_token.tf new file mode 100644 index 00000000..f3ad7ed2 --- /dev/null +++ b/terraform/google/backup/data.google_site_verification_token.tf @@ -0,0 +1,6 @@ +# data "google_site_verification_token" "pike" { +# } +# +# output "google_site_verification_token" { +# value = data.google_site_verification_token.pike +# } diff --git a/terraform/google/backup/data.google_spanner_database.tf b/terraform/google/backup/data.google_spanner_database.tf new file mode 100644 index 00000000..fbe1b898 --- /dev/null +++ b/terraform/google/backup/data.google_spanner_database.tf @@ -0,0 +1,8 @@ +data "google_spanner_database" "pike" { + instance = "pike" + name = "pike" +} + +output "google_spanner_database" { + value = data.google_spanner_database.pike +} diff --git a/terraform/google/backup/data.google_storage_bucket_objects.tf b/terraform/google/backup/data.google_storage_bucket_objects.tf new file mode 100644 index 00000000..7b93e4d9 --- /dev/null +++ b/terraform/google/backup/data.google_storage_bucket_objects.tf @@ -0,0 +1,7 @@ +data "google_storage_bucket_objects" "pike" { + bucket = "stuffidontwanttoshare" +} + +output "google_storage_bucket_objects" { + value = data.google_storage_bucket_objects.pike +} diff --git a/terraform/google/backup/data.google_storage_buckets.tf b/terraform/google/backup/data.google_storage_buckets.tf new file mode 100644 index 00000000..05516a84 --- /dev/null +++ b/terraform/google/backup/data.google_storage_buckets.tf @@ -0,0 +1,6 @@ +data "google_storage_buckets" "pike" { +} + +output "google_storage_buckets" { + value = data.google_storage_buckets.pike +} diff --git a/terraform/google/backup/data.google_storage_control_folder_intelligence_config.tf b/terraform/google/backup/data.google_storage_control_folder_intelligence_config.tf new file mode 100644 index 00000000..35bce2cc --- /dev/null +++ b/terraform/google/backup/data.google_storage_control_folder_intelligence_config.tf @@ -0,0 +1,7 @@ +data "google_storage_control_folder_intelligence_config" "pike" { + name = "pike-412922" +} + +output "google_storage_control_folder_intelligence_config" { + value = data.google_storage_control_folder_intelligence_config.pike +} diff --git a/terraform/google/backup/data.google_storage_control_organization_intelligence_config.tf b/terraform/google/backup/data.google_storage_control_organization_intelligence_config.tf new file mode 100644 index 00000000..78b5d285 --- /dev/null +++ b/terraform/google/backup/data.google_storage_control_organization_intelligence_config.tf @@ -0,0 +1,7 @@ +data "google_storage_control_organization_intelligence_config" "pike" { + name = "pike-412922" +} + +output "google_storage_control_organization_intelligence_config" { + value = data.google_storage_control_organization_intelligence_config.pike +} diff --git a/terraform/google/backup/data.google_storage_control_project_intelligence_config.tf b/terraform/google/backup/data.google_storage_control_project_intelligence_config.tf new file mode 100644 index 00000000..3fd111a0 --- /dev/null +++ b/terraform/google/backup/data.google_storage_control_project_intelligence_config.tf @@ -0,0 +1,7 @@ +data "google_storage_control_project_intelligence_config" "pike" { + name = "pike-412922" +} + +output "google_storage_control_project_intelligence_config" { + value = data.google_storage_control_project_intelligence_config.pike +} diff --git a/terraform/google/backup/data.google_storage_insights_dataset_config.tf b/terraform/google/backup/data.google_storage_insights_dataset_config.tf new file mode 100644 index 00000000..da26351e --- /dev/null +++ b/terraform/google/backup/data.google_storage_insights_dataset_config.tf @@ -0,0 +1,6 @@ +data "google_storage_insights_dataset_config" "pike" { +} + +output "google_storage_insights_dataset_config" { + value = data.google_storage_insights_dataset_config.pike +} diff --git a/terraform/google/backup/data.google_tags_tag_key_iam_policy.tf b/terraform/google/backup/data.google_tags_tag_key_iam_policy.tf new file mode 100644 index 00000000..a594c2f3 --- /dev/null +++ b/terraform/google/backup/data.google_tags_tag_key_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_tags_tag_key_iam_policy" "pike" { +} + +output "google_tags_tag_key_iam_policy" { + value = data.google_tags_tag_key_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_tags_tag_keys.tf b/terraform/google/backup/data.google_tags_tag_keys.tf new file mode 100644 index 00000000..ecb79935 --- /dev/null +++ b/terraform/google/backup/data.google_tags_tag_keys.tf @@ -0,0 +1,6 @@ +data "google_tags_tag_keys" "pike" { +} + +output "google_tags_tag_keys" { + value = data.google_tags_tag_keys.pike +} diff --git a/terraform/google/backup/data.google_tags_tag_value.tf b/terraform/google/backup/data.google_tags_tag_value.tf new file mode 100644 index 00000000..f34008e9 --- /dev/null +++ b/terraform/google/backup/data.google_tags_tag_value.tf @@ -0,0 +1,6 @@ +data "google_tags_tag_value" "pike" { +} + +output "google_tags_tag_value" { + value = data.google_tags_tag_value.pike +} diff --git a/terraform/google/backup/data.google_tags_tag_value_iam_policy.tf b/terraform/google/backup/data.google_tags_tag_value_iam_policy.tf new file mode 100644 index 00000000..129269b9 --- /dev/null +++ b/terraform/google/backup/data.google_tags_tag_value_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_tags_tag_value_iam_policy" "pike" { +} + +output "google_tags_tag_value_iam_policy" { + value = data.google_tags_tag_value_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_tags_tag_values.tf b/terraform/google/backup/data.google_tags_tag_values.tf new file mode 100644 index 00000000..45a02c22 --- /dev/null +++ b/terraform/google/backup/data.google_tags_tag_values.tf @@ -0,0 +1,6 @@ +data "google_tags_tag_values" "pike" { +} + +output "google_tags_tag_values" { + value = data.google_tags_tag_values.pike +} diff --git a/terraform/google/backup/data.google_vertex_ai_feature_group_iam_policy.tf b/terraform/google/backup/data.google_vertex_ai_feature_group_iam_policy.tf new file mode 100644 index 00000000..29ec7e63 --- /dev/null +++ b/terraform/google/backup/data.google_vertex_ai_feature_group_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_vertex_ai_feature_group_iam_policy" "pike" { +} + +output "google_vertex_ai_feature_group_iam_policy" { + value = data.google_vertex_ai_feature_group_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_vertex_ai_feature_online_store_featureview_iam_policy.tf b/terraform/google/backup/data.google_vertex_ai_feature_online_store_featureview_iam_policy.tf new file mode 100644 index 00000000..5e86a9c1 --- /dev/null +++ b/terraform/google/backup/data.google_vertex_ai_feature_online_store_featureview_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_vertex_ai_feature_online_store_featureview_iam_policy" "pike" { +} + +output "google_vertex_ai_feature_online_store_featureview_iam_policy" { + value = data.google_vertex_ai_feature_online_store_featureview_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_vertex_ai_feature_online_store_iam_policy.tf b/terraform/google/backup/data.google_vertex_ai_feature_online_store_iam_policy.tf new file mode 100644 index 00000000..50952676 --- /dev/null +++ b/terraform/google/backup/data.google_vertex_ai_feature_online_store_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_vertex_ai_feature_online_store_iam_policy" "pike" { +} + +output "google_vertex_ai_feature_online_store_iam_policy" { + value = data.google_vertex_ai_feature_online_store_iam_policy.pike +} diff --git a/terraform/google/backup/duff/data.google_access_context_manager_access_policy.tf b/terraform/google/backup/duff/data.google_access_context_manager_access_policy.tf new file mode 100644 index 00000000..1041e098 --- /dev/null +++ b/terraform/google/backup/duff/data.google_access_context_manager_access_policy.tf @@ -0,0 +1,7 @@ +data "google_access_context_manager_access_policy" "pike" { + parent = "organizations/213434" +} + +output "google_access_context_manager_access_policy" { + value = data.google_access_context_manager_access_policy.pike +} diff --git a/terraform/google/backup/duff/data.google_cloud_identity_group_transitive_memberships.tf b/terraform/google/backup/duff/data.google_cloud_identity_group_transitive_memberships.tf new file mode 100644 index 00000000..f63e3326 --- /dev/null +++ b/terraform/google/backup/duff/data.google_cloud_identity_group_transitive_memberships.tf @@ -0,0 +1,7 @@ +data "google_cloud_identity_group_transitive_memberships" "pike" { + group = "groups/123eab45c6defghi" +} + +output "google_cloud_identity_group_transitive_memberships" { + value = data.google_cloud_identity_group_transitive_memberships.pike +} diff --git a/terraform/google/duff/data.google_container_attached_install_manifest.tf b/terraform/google/backup/duff/data.google_container_attached_install_manifest.tf similarity index 100% rename from terraform/google/duff/data.google_container_attached_install_manifest.tf rename to terraform/google/backup/duff/data.google_container_attached_install_manifest.tf diff --git a/terraform/google/duff/data.google_container_aws_versions.tf b/terraform/google/backup/duff/data.google_container_aws_versions.tf similarity index 100% rename from terraform/google/duff/data.google_container_aws_versions.tf rename to terraform/google/backup/duff/data.google_container_aws_versions.tf diff --git a/terraform/google/duff/data.google_container_azure_versions.tf b/terraform/google/backup/duff/data.google_container_azure_versions.tf similarity index 100% rename from terraform/google/duff/data.google_container_azure_versions.tf rename to terraform/google/backup/duff/data.google_container_azure_versions.tf diff --git a/terraform/google/duff/data.google_dataform_repository_iam_policy.tf b/terraform/google/backup/duff/data.google_dataform_repository_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_dataform_repository_iam_policy.tf rename to terraform/google/backup/duff/data.google_dataform_repository_iam_policy.tf diff --git a/terraform/google/backup/duff/data.google_dns_managed_zones.tf b/terraform/google/backup/duff/data.google_dns_managed_zones.tf new file mode 100644 index 00000000..816ed4bb --- /dev/null +++ b/terraform/google/backup/duff/data.google_dns_managed_zones.tf @@ -0,0 +1,7 @@ +data "google_dns_managed_zones" "pike" { + # project="pike-412922" +} + +output "google_dns_managed_zones" { + value = data.google_dns_managed_zones.pike +} diff --git a/terraform/google/duff/data.google_endpoints_service_iam_policy.tf b/terraform/google/backup/duff/data.google_endpoints_service_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_endpoints_service_iam_policy.tf rename to terraform/google/backup/duff/data.google_endpoints_service_iam_policy.tf diff --git a/terraform/google/duff/data.google_firebase_web_app_config.tf b/terraform/google/backup/duff/data.google_firebase_web_app_config.tf similarity index 100% rename from terraform/google/duff/data.google_firebase_web_app_config.tf rename to terraform/google/backup/duff/data.google_firebase_web_app_config.tf diff --git a/terraform/google/duff/data.google_organization_iam_policy.tf b/terraform/google/backup/duff/data.google_organization_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_organization_iam_policy.tf rename to terraform/google/backup/duff/data.google_organization_iam_policy.tf diff --git a/terraform/google/duff/data.google_privateca_ca_pool_iam_policy.tf b/terraform/google/backup/duff/data.google_privateca_ca_pool_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_privateca_ca_pool_iam_policy.tf rename to terraform/google/backup/duff/data.google_privateca_ca_pool_iam_policy.tf diff --git a/terraform/google/duff/data.google_privateca_certificate_authority.tf b/terraform/google/backup/duff/data.google_privateca_certificate_authority.tf similarity index 100% rename from terraform/google/duff/data.google_privateca_certificate_authority.tf rename to terraform/google/backup/duff/data.google_privateca_certificate_authority.tf diff --git a/terraform/google/duff/data.google_privateca_certificate_template_iam_policy.tf b/terraform/google/backup/duff/data.google_privateca_certificate_template_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_privateca_certificate_template_iam_policy.tf rename to terraform/google/backup/duff/data.google_privateca_certificate_template_iam_policy.tf diff --git a/terraform/google/backup/duff/data.google_project_ancestry.tf b/terraform/google/backup/duff/data.google_project_ancestry.tf new file mode 100644 index 00000000..ed3a559f --- /dev/null +++ b/terraform/google/backup/duff/data.google_project_ancestry.tf @@ -0,0 +1,6 @@ +data "google_project_ancestry" "pike" { +} + +output "google_project_ancestry" { + value = data.google_project_ancestry.pike +} diff --git a/terraform/google/duff/data.google_project_iam_policy.tf b/terraform/google/backup/duff/data.google_project_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_project_iam_policy.tf rename to terraform/google/backup/duff/data.google_project_iam_policy.tf diff --git a/terraform/google/duff/data.google_project_organization_policy.tf b/terraform/google/backup/duff/data.google_project_organization_policy.tf similarity index 100% rename from terraform/google/duff/data.google_project_organization_policy.tf rename to terraform/google/backup/duff/data.google_project_organization_policy.tf diff --git a/terraform/google/duff/data.google_pubsub_schema_iam_policy.tf b/terraform/google/backup/duff/data.google_pubsub_schema_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_pubsub_schema_iam_policy.tf rename to terraform/google/backup/duff/data.google_pubsub_schema_iam_policy.tf diff --git a/terraform/google/duff/data.google_runtimeconfig_config.tf b/terraform/google/backup/duff/data.google_runtimeconfig_config.tf similarity index 100% rename from terraform/google/duff/data.google_runtimeconfig_config.tf rename to terraform/google/backup/duff/data.google_runtimeconfig_config.tf diff --git a/terraform/google/duff/data.google_runtimeconfig_config_iam_policy.tf b/terraform/google/backup/duff/data.google_runtimeconfig_config_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_runtimeconfig_config_iam_policy.tf rename to terraform/google/backup/duff/data.google_runtimeconfig_config_iam_policy.tf diff --git a/terraform/google/duff/data.google_runtimeconfig_variable.tf b/terraform/google/backup/duff/data.google_runtimeconfig_variable.tf similarity index 100% rename from terraform/google/duff/data.google_runtimeconfig_variable.tf rename to terraform/google/backup/duff/data.google_runtimeconfig_variable.tf diff --git a/terraform/google/backup/duff/data.google_scc_v2_organization_source_iam_policy.tf b/terraform/google/backup/duff/data.google_scc_v2_organization_source_iam_policy.tf new file mode 100644 index 00000000..0d3bb921 --- /dev/null +++ b/terraform/google/backup/duff/data.google_scc_v2_organization_source_iam_policy.tf @@ -0,0 +1,8 @@ +data "google_scc_v2_organization_source_iam_policy" "pike" { + source = google_scc_v2_organization_source.custom_source.name + organization = "pike" +} + +output "google_scc_v2_organization_source_iam_policy" { + value = data.google_scc_v2_organization_source_iam_policy.pike +} diff --git a/terraform/google/backup/duff/data.google_secure_source_manager_instance_iam_policy.tf b/terraform/google/backup/duff/data.google_secure_source_manager_instance_iam_policy.tf new file mode 100644 index 00000000..eb031cea --- /dev/null +++ b/terraform/google/backup/duff/data.google_secure_source_manager_instance_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_secure_source_manager_instance_iam_policy" "pike" { + instance_id = "pike" +} + +output "google_secure_source_manager_instance_iam_policy" { + value = data.google_secure_source_manager_instance_iam_policy.pike +} diff --git a/terraform/google/backup/duff/data.google_secure_source_manager_repository_iam_policy.tf b/terraform/google/backup/duff/data.google_secure_source_manager_repository_iam_policy.tf new file mode 100644 index 00000000..b67da1cf --- /dev/null +++ b/terraform/google/backup/duff/data.google_secure_source_manager_repository_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_secure_source_manager_repository_iam_policy" "pike" { + repository_id = "pike" +} + +output "google_secure_source_manager_repository_iam_policy" { + value = data.google_secure_source_manager_repository_iam_policy.pike +} diff --git a/terraform/google/backup/duff/data.google_site_verification_token.tf b/terraform/google/backup/duff/data.google_site_verification_token.tf new file mode 100644 index 00000000..00dc1253 --- /dev/null +++ b/terraform/google/backup/duff/data.google_site_verification_token.tf @@ -0,0 +1,9 @@ +data "google_site_verification_token" "pike" { + type = "SITE" + verification_method = "META" + identifier = "https://www.example.com" +} + +output "google_site_verification_token" { + value = data.google_site_verification_token.pike +} diff --git a/terraform/google/backup/duff/data.google_storage_control_folder_intelligence_config.tf b/terraform/google/backup/duff/data.google_storage_control_folder_intelligence_config.tf new file mode 100644 index 00000000..1bef46cf --- /dev/null +++ b/terraform/google/backup/duff/data.google_storage_control_folder_intelligence_config.tf @@ -0,0 +1,7 @@ +data "google_storage_control_folder_intelligence_config" "pike" { + name = "pike" +} + +output "google_storage_control_folder_intelligence_config" { + value = data.google_storage_control_folder_intelligence_config.pike +} diff --git a/terraform/google/backup/duff/data.google_storage_control_organization_intelligence_config.tf b/terraform/google/backup/duff/data.google_storage_control_organization_intelligence_config.tf new file mode 100644 index 00000000..e8b06afd --- /dev/null +++ b/terraform/google/backup/duff/data.google_storage_control_organization_intelligence_config.tf @@ -0,0 +1,7 @@ +data "google_storage_control_organization_intelligence_config" "pike" { + name = "pike" +} + +output "google_storage_control_organization_intelligence_config" { + value = data.google_storage_control_organization_intelligence_config.pike +} diff --git a/terraform/google/backup/duff/data.google_storage_control_project_intelligence_config.tf b/terraform/google/backup/duff/data.google_storage_control_project_intelligence_config.tf new file mode 100644 index 00000000..40121bc3 --- /dev/null +++ b/terraform/google/backup/duff/data.google_storage_control_project_intelligence_config.tf @@ -0,0 +1,7 @@ +data "google_storage_control_project_intelligence_config" "pike" { + name = "pike" +} + +output "google_storage_control_project_intelligence_config" { + value = data.google_storage_control_project_intelligence_config.pike +} diff --git a/terraform/google/duff/data.google_tags_tag_key_iam_policy.tf b/terraform/google/backup/duff/data.google_tags_tag_key_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_tags_tag_key_iam_policy.tf rename to terraform/google/backup/duff/data.google_tags_tag_key_iam_policy.tf diff --git a/terraform/google/backup/duff/data.google_tags_tag_keys.tf b/terraform/google/backup/duff/data.google_tags_tag_keys.tf new file mode 100644 index 00000000..e72d1bd0 --- /dev/null +++ b/terraform/google/backup/duff/data.google_tags_tag_keys.tf @@ -0,0 +1,7 @@ +data "google_tags_tag_keys" "pike" { + parent = "pike" +} + +output "google_tags_tag_keys" { + value = data.google_tags_tag_keys.pike +} diff --git a/terraform/google/duff/data.google_tags_tag_value.tf b/terraform/google/backup/duff/data.google_tags_tag_value.tf similarity index 100% rename from terraform/google/duff/data.google_tags_tag_value.tf rename to terraform/google/backup/duff/data.google_tags_tag_value.tf diff --git a/terraform/google/duff/data.google_tags_tag_value_iam_policy.tf b/terraform/google/backup/duff/data.google_tags_tag_value_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_tags_tag_value_iam_policy.tf rename to terraform/google/backup/duff/data.google_tags_tag_value_iam_policy.tf diff --git a/terraform/google/backup/duff/data.google_tags_tag_values.tf b/terraform/google/backup/duff/data.google_tags_tag_values.tf new file mode 100644 index 00000000..55c985be --- /dev/null +++ b/terraform/google/backup/duff/data.google_tags_tag_values.tf @@ -0,0 +1,7 @@ +data "google_tags_tag_values" "pike" { + parent = "pike" +} + +output "google_tags_tag_values" { + value = data.google_tags_tag_values.pike +} diff --git a/terraform/google/duff/data.google_vertex_ai_endpoint_iam_policy.tf b/terraform/google/backup/duff/data.google_vertex_ai_endpoint_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_vertex_ai_endpoint_iam_policy.tf rename to terraform/google/backup/duff/data.google_vertex_ai_endpoint_iam_policy.tf diff --git a/terraform/google/backup/duff/google_billing_account_iam_binding.tf b/terraform/google/backup/duff/google_billing_account_iam_binding.tf new file mode 100644 index 00000000..8cea6880 --- /dev/null +++ b/terraform/google/backup/duff/google_billing_account_iam_binding.tf @@ -0,0 +1 @@ +# resource "google_billing_account_iam_binding" "pike" {} diff --git a/terraform/google/backup/duff/google_billing_account_iam_member.tf b/terraform/google/backup/duff/google_billing_account_iam_member.tf new file mode 100644 index 00000000..2f39ba5e --- /dev/null +++ b/terraform/google/backup/duff/google_billing_account_iam_member.tf @@ -0,0 +1,5 @@ +# resource "google_billing_account_iam_member" "pike" { +# billing_account_id = data.google_billing_account.pike.id +# role = "roles/billing.user" +# member = "user:james.woolfenden@gmail.com" +# } diff --git a/terraform/google/backup/duff/google_billing_account_iam_policy.tf b/terraform/google/backup/duff/google_billing_account_iam_policy.tf new file mode 100644 index 00000000..23bbc08e --- /dev/null +++ b/terraform/google/backup/duff/google_billing_account_iam_policy.tf @@ -0,0 +1 @@ +# resource "google_billing_account_iam_policy" "pike" {} diff --git a/terraform/google/backup/duff/google_billing_budget.tf b/terraform/google/backup/duff/google_billing_budget.tf new file mode 100644 index 00000000..6be61945 --- /dev/null +++ b/terraform/google/backup/duff/google_billing_budget.tf @@ -0,0 +1,18 @@ +resource "google_billing_budget" "pike" { + billing_account = data.google_billing_account.pike.id + display_name = "Example Billing Budget" + amount { + specified_amount { + currency_code = "USD" + units = "100000" + } + } + threshold_rules { + threshold_percent = 0.5 + } +} + + +data "google_billing_account" "pike" { + billing_account = "013ED3-8B24F6-725D7E" +} diff --git a/terraform/google/backup/duff/google_billing_project_info.tf b/terraform/google/backup/duff/google_billing_project_info.tf new file mode 100644 index 00000000..4dc05cc0 --- /dev/null +++ b/terraform/google/backup/duff/google_billing_project_info.tf @@ -0,0 +1,9 @@ +# resource "google_billing_project_info" "pike" { +# # deletion_policy = "DELETE" +# billing_account = data.google_billing_account.pike.id +# +# +# lifecycle { +# ignore_changes = [billing_account] +# } +# } diff --git a/terraform/google/backup/duff/google_billing_subaccount.tf b/terraform/google/backup/duff/google_billing_subaccount.tf new file mode 100644 index 00000000..97575ca2 --- /dev/null +++ b/terraform/google/backup/duff/google_billing_subaccount.tf @@ -0,0 +1,4 @@ +# resource "google_billing_subaccount" "pike" { +# display_name = "My Billing Account" +# master_billing_account = data.google_billing_account.pike.id +# } diff --git a/terraform/google/backup/duff/google_project.tf b/terraform/google/backup/duff/google_project.tf new file mode 100644 index 00000000..013af218 --- /dev/null +++ b/terraform/google/backup/duff/google_project.tf @@ -0,0 +1,4 @@ +resource "google_project" "pike" { + name = "temp-project" + project_id = "temp-project" +} diff --git a/terraform/google/backup/duff/google_project_access_approval_settings.tf b/terraform/google/backup/duff/google_project_access_approval_settings.tf new file mode 100644 index 00000000..c43e2878 --- /dev/null +++ b/terraform/google/backup/duff/google_project_access_approval_settings.tf @@ -0,0 +1,9 @@ +resource "google_project_access_approval_settings" "pike" { + project_id = "pike-412922" + notification_emails = ["james.woolfenden@gmail.com"] + + enrolled_services { + cloud_product = "all" + enrollment_level = "BLOCK_ALL" + } +} diff --git a/terraform/google/backup/duff/google_project_iam_member_remove.tf b/terraform/google/backup/duff/google_project_iam_member_remove.tf new file mode 100644 index 00000000..44c7e509 --- /dev/null +++ b/terraform/google/backup/duff/google_project_iam_member_remove.tf @@ -0,0 +1,5 @@ +resource "google_project_iam_member_remove" "foo" { + role = "roles/editor" + project = "pike-412922" + member = "serviceAccount:dumbass@developer.gserviceaccount.com" +} diff --git a/terraform/google/backup/duff/google_project_organization_policy.tf b/terraform/google/backup/duff/google_project_organization_policy.tf new file mode 100644 index 00000000..17639828 --- /dev/null +++ b/terraform/google/backup/duff/google_project_organization_policy.tf @@ -0,0 +1,16 @@ +resource "google_project_organization_policy" "pike" { + resource "google_project_iam_policy" "project" { + project = "your-project-id" + policy_data = data.google_iam_policy.admin.policy_data + } + + data "google_iam_policy" "admin" { + binding { + role = "roles/editor" + + members = [ + "user:james.woolfenden@gmail.com", + ] + } + } +} diff --git a/terraform/google/backup/google_access_context_manager_service_perimeters.tf b/terraform/google/backup/google_access_context_manager_service_perimeters.tf index c74ddfc2..95bf3c5e 100644 --- a/terraform/google/backup/google_access_context_manager_service_perimeters.tf +++ b/terraform/google/backup/google_access_context_manager_service_perimeters.tf @@ -17,3 +17,13 @@ resource "google_access_context_manager_service_perimeters" "pike" { } } } + + +resource "google_access_context_manager_access_policy" "access-policy" { + parent = data.google_organization.this.id + title = "pike" +} + +data "google_organization" "this" { + organization = "12345354" +} diff --git a/terraform/google/backup/google_apigee_environment_iam_binding.tf b/terraform/google/backup/google_apigee_environment_iam_binding.tf new file mode 100644 index 00000000..028b6612 --- /dev/null +++ b/terraform/google/backup/google_apigee_environment_iam_binding.tf @@ -0,0 +1 @@ +resource "google_apigee_environment_iam_binding" "pike" {} diff --git a/terraform/google/backup/google_apigee_environment_iam_member.tf b/terraform/google/backup/google_apigee_environment_iam_member.tf new file mode 100644 index 00000000..45d200a8 --- /dev/null +++ b/terraform/google/backup/google_apigee_environment_iam_member.tf @@ -0,0 +1 @@ +resource "google_apigee_environment_iam_member" "pike" {} diff --git a/terraform/google/backup/google_apigee_environment_iam_policy.tf b/terraform/google/backup/google_apigee_environment_iam_policy.tf new file mode 100644 index 00000000..8cfdbfa1 --- /dev/null +++ b/terraform/google/backup/google_apigee_environment_iam_policy.tf @@ -0,0 +1 @@ +resource "google_apigee_environment_iam_policy" "pike" {} diff --git a/terraform/google/backup/google_apihub_api_hub_instance.tf b/terraform/google/backup/google_apihub_api_hub_instance.tf new file mode 100644 index 00000000..fb52632f --- /dev/null +++ b/terraform/google/backup/google_apihub_api_hub_instance.tf @@ -0,0 +1 @@ +resource "google_apihub_api_hub_instance" "pike" {} diff --git a/terraform/google/backup/google_apihub_curation.tf b/terraform/google/backup/google_apihub_curation.tf new file mode 100644 index 00000000..60d6e0a3 --- /dev/null +++ b/terraform/google/backup/google_apihub_curation.tf @@ -0,0 +1 @@ +resource "google_apihub_curation" "pike" {} diff --git a/terraform/google/backup/google_apihub_host_project_registration.tf b/terraform/google/backup/google_apihub_host_project_registration.tf new file mode 100644 index 00000000..1acfd428 --- /dev/null +++ b/terraform/google/backup/google_apihub_host_project_registration.tf @@ -0,0 +1 @@ +resource "google_apihub_host_project_registration" "pike" {} diff --git a/terraform/google/backup/google_apihub_plugin.tf b/terraform/google/backup/google_apihub_plugin.tf new file mode 100644 index 00000000..2f7b3fbf --- /dev/null +++ b/terraform/google/backup/google_apihub_plugin.tf @@ -0,0 +1 @@ +resource "google_apihub_plugin" "pike" {} diff --git a/terraform/google/backup/google_apihub_plugin_instance.tf b/terraform/google/backup/google_apihub_plugin_instance.tf new file mode 100644 index 00000000..c25f845e --- /dev/null +++ b/terraform/google/backup/google_apihub_plugin_instance.tf @@ -0,0 +1 @@ +resource "google_apihub_plugin_instance" "pike" {} diff --git a/terraform/google/backup/google_apphub_application.tf b/terraform/google/backup/google_apphub_application.tf new file mode 100644 index 00000000..cd723284 --- /dev/null +++ b/terraform/google/backup/google_apphub_application.tf @@ -0,0 +1 @@ +resource "google_apphub_application" "pike" {} diff --git a/terraform/google/backup/google_apphub_service.tf b/terraform/google/backup/google_apphub_service.tf new file mode 100644 index 00000000..c47a543b --- /dev/null +++ b/terraform/google/backup/google_apphub_service.tf @@ -0,0 +1 @@ +resource "google_apphub_service" "pike" {} diff --git a/terraform/google/backup/google_apphub_service_project_attachment.tf b/terraform/google/backup/google_apphub_service_project_attachment.tf new file mode 100644 index 00000000..45ded036 --- /dev/null +++ b/terraform/google/backup/google_apphub_service_project_attachment.tf @@ -0,0 +1 @@ +resource "google_apphub_service_project_attachment" "pike" {} diff --git a/terraform/google/backup/google_apphub_workload.tf b/terraform/google/backup/google_apphub_workload.tf new file mode 100644 index 00000000..ec6572d1 --- /dev/null +++ b/terraform/google/backup/google_apphub_workload.tf @@ -0,0 +1 @@ +resource "google_apphub_workload" "pike" {} diff --git a/terraform/google/backup/google_backup_dr_backup_plan.tf b/terraform/google/backup/google_backup_dr_backup_plan.tf new file mode 100644 index 00000000..c4926589 --- /dev/null +++ b/terraform/google/backup/google_backup_dr_backup_plan.tf @@ -0,0 +1 @@ +resource "google_backup_dr_backup_plan" "pike" {} diff --git a/terraform/google/backup/google_backup_dr_backup_plan_association.tf b/terraform/google/backup/google_backup_dr_backup_plan_association.tf new file mode 100644 index 00000000..1328ac40 --- /dev/null +++ b/terraform/google/backup/google_backup_dr_backup_plan_association.tf @@ -0,0 +1 @@ +resource "google_backup_dr_backup_plan_association" "pike" {} diff --git a/terraform/google/backup/google_backup_dr_backup_vault.tf b/terraform/google/backup/google_backup_dr_backup_vault.tf new file mode 100644 index 00000000..68a84dbd --- /dev/null +++ b/terraform/google/backup/google_backup_dr_backup_vault.tf @@ -0,0 +1 @@ +resource "google_backup_dr_backup_vault" "pike" {} diff --git a/terraform/google/backup/google_backup_dr_management_server.tf b/terraform/google/backup/google_backup_dr_management_server.tf new file mode 100644 index 00000000..a1270d8e --- /dev/null +++ b/terraform/google/backup/google_backup_dr_management_server.tf @@ -0,0 +1 @@ +resource "google_backup_dr_management_server" "pike" {} diff --git a/terraform/google/backup/google_backup_dr_service_config.tf b/terraform/google/backup/google_backup_dr_service_config.tf new file mode 100644 index 00000000..7a215de2 --- /dev/null +++ b/terraform/google/backup/google_backup_dr_service_config.tf @@ -0,0 +1,4 @@ +resource "google_backup_dr_service_config" "pike" { + location = "us-central1" + resource_type = "compute.googleapis.com/Instance" +} diff --git a/terraform/google/backup/google_beyondcorp_app_connection.tf b/terraform/google/backup/google_beyondcorp_app_connection.tf new file mode 100644 index 00000000..88b50d1e --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_app_connection.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_app_connection" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_app_connector.tf b/terraform/google/backup/google_beyondcorp_app_connector.tf new file mode 100644 index 00000000..1a3b1467 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_app_connector.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_app_connector" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_app_gateway.tf b/terraform/google/backup/google_beyondcorp_app_gateway.tf new file mode 100644 index 00000000..ad92f9e4 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_app_gateway.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_app_gateway" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_application.tf b/terraform/google/backup/google_beyondcorp_application.tf new file mode 100644 index 00000000..0e3144c4 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_application.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_application" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_application_iam_binding.tf b/terraform/google/backup/google_beyondcorp_application_iam_binding.tf new file mode 100644 index 00000000..da5b737b --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_application_iam_binding.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_application_iam_binding" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_application_iam_member.tf b/terraform/google/backup/google_beyondcorp_application_iam_member.tf new file mode 100644 index 00000000..891673e6 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_application_iam_member.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_application_iam_member" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_application_iam_policy.tf b/terraform/google/backup/google_beyondcorp_application_iam_policy.tf new file mode 100644 index 00000000..494c3a2d --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_application_iam_policy.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_application_iam_policy" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_security_gateway.tf b/terraform/google/backup/google_beyondcorp_security_gateway.tf new file mode 100644 index 00000000..66d42f39 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_security_gateway.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_security_gateway" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_security_gateway_application.tf b/terraform/google/backup/google_beyondcorp_security_gateway_application.tf new file mode 100644 index 00000000..07a53866 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_security_gateway_application.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_security_gateway_application" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_security_gateway_application_iam_binding.tf b/terraform/google/backup/google_beyondcorp_security_gateway_application_iam_binding.tf new file mode 100644 index 00000000..fe762aa0 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_security_gateway_application_iam_binding.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_security_gateway_application_iam_binding" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_security_gateway_application_iam_member.tf b/terraform/google/backup/google_beyondcorp_security_gateway_application_iam_member.tf new file mode 100644 index 00000000..e979cc49 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_security_gateway_application_iam_member.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_security_gateway_application_iam_member" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_security_gateway_application_iam_policy.tf b/terraform/google/backup/google_beyondcorp_security_gateway_application_iam_policy.tf new file mode 100644 index 00000000..51d206fe --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_security_gateway_application_iam_policy.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_security_gateway_application_iam_policy" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_security_gateway_iam_binding.tf b/terraform/google/backup/google_beyondcorp_security_gateway_iam_binding.tf new file mode 100644 index 00000000..e9703043 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_security_gateway_iam_binding.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_security_gateway_iam_binding" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_security_gateway_iam_member.tf b/terraform/google/backup/google_beyondcorp_security_gateway_iam_member.tf new file mode 100644 index 00000000..8366c3a3 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_security_gateway_iam_member.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_security_gateway_iam_member" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_security_gateway_iam_policy.tf b/terraform/google/backup/google_beyondcorp_security_gateway_iam_policy.tf new file mode 100644 index 00000000..da7378c7 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_security_gateway_iam_policy.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_security_gateway_iam_policy" "pike" {} diff --git a/terraform/google/backup/google_biglake_catalog.tf b/terraform/google/backup/google_biglake_catalog.tf new file mode 100644 index 00000000..b5208111 --- /dev/null +++ b/terraform/google/backup/google_biglake_catalog.tf @@ -0,0 +1,4 @@ +resource "google_biglake_catalog" "pike" { + name = "pike" + location = "europe-west2" +} diff --git a/terraform/google/backup/google_biglake_database.tf b/terraform/google/backup/google_biglake_database.tf new file mode 100644 index 00000000..fc980ccb --- /dev/null +++ b/terraform/google/backup/google_biglake_database.tf @@ -0,0 +1,24 @@ +resource "google_storage_bucket" "bucket" { + name = "my_bucket_jgw_2025" + location = "eu" + force_destroy = true + uniform_bucket_level_access = true +} + +resource "google_storage_bucket_object" "metadata_folder" { + name = "metadata/" + content = " " + bucket = google_storage_bucket.bucket.name +} + +resource "google_biglake_database" "database" { + name = "pike" + catalog = google_biglake_catalog.catalog.id + type = "HIVE" + hive_options { + location_uri = "gs://${google_storage_bucket.bucket.name}/${google_storage_bucket_object.metadata_folder.name}" + parameters = { + "owner" : "James Woolfenden" + } + } +} diff --git a/terraform/google/backup/google_biglake_table.tf b/terraform/google/backup/google_biglake_table.tf new file mode 100644 index 00000000..002393bc --- /dev/null +++ b/terraform/google/backup/google_biglake_table.tf @@ -0,0 +1,40 @@ +resource "google_biglake_table" "pike" { + name = "my_table" + database = google_biglake_database.database.id + type = "HIVE" + hive_options { + table_type = "MANAGED_TABLE" + storage_descriptor { + location_uri = "gs://${google_storage_bucket.bucket.name}/${google_storage_bucket_object.data_folder.name}" + input_format = "org.apache.hadoop.mapred.SequenceFileInputFormat" + output_format = "org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat" + } + # Some Example Parameters. + parameters = { + "spark.sql.create.version" = "3.1.3" + "spark.sql.sources.schema.numParts" = "1" + "transient_lastDdlTime" = "1680894197" + "spark.sql.partitionProvider" = "catalog" + "owner" = "John Doe" + "spark.sql.sources.schema.part.0" = "{\"type\":\"struct\",\"fields\":[{\"name\":\"id\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}},{\"name\":\"name\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"age\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}}]}" + "spark.sql.sources.provider" = "iceberg" + "provider" = "iceberg" + } + } + +} + + +resource "google_biglake_catalog" "catalog" { + name = "my_catalog" + location = "US" +} + + + + +resource "google_storage_bucket_object" "data_folder" { + name = "data/" + content = " " + bucket = google_storage_bucket.bucket.name +} diff --git a/terraform/google/backup/google_bigquery_analytics_hub_listing_subscription.tf b/terraform/google/backup/google_bigquery_analytics_hub_listing_subscription.tf new file mode 100644 index 00000000..d4b8081b --- /dev/null +++ b/terraform/google/backup/google_bigquery_analytics_hub_listing_subscription.tf @@ -0,0 +1,43 @@ +resource "google_bigquery_analytics_hub_data_exchange" "subscription" { + location = "US" + data_exchange_id = "my_data_exchange" + display_name = "my_data_exchange" + description = "Test Description" +} + +resource "google_bigquery_analytics_hub_listing" "subscription" { + location = "US" + data_exchange_id = google_bigquery_analytics_hub_data_exchange.subscription.data_exchange_id + listing_id = "my_listing" + display_name = "my_listing" + description = "Test Description" + + bigquery_dataset { + dataset = google_bigquery_dataset.subscription.id + } +} + +resource "google_bigquery_dataset" "subscription" { + dataset_id = "my_listing" + friendly_name = "my_listing" + description = "Test Description" + location = "US" +} + +resource "google_bigquery_analytics_hub_listing_subscription" "subscription" { + location = "US" + data_exchange_id = google_bigquery_analytics_hub_data_exchange.subscription.data_exchange_id + listing_id = google_bigquery_analytics_hub_listing.subscription.listing_id + destination_dataset { + description = "A test subscription" + friendly_name = "👋" + labels = { + testing = "123" + } + location = "US" + dataset_reference { + dataset_id = "destination_dataset" + project_id = google_bigquery_dataset.subscription.project + } + } +} diff --git a/terraform/google/backup/google_bigquery_connection.tf b/terraform/google/backup/google_bigquery_connection.tf index da3d05d9..bddbe376 100644 --- a/terraform/google/backup/google_bigquery_connection.tf +++ b/terraform/google/backup/google_bigquery_connection.tf @@ -1,7 +1,7 @@ resource "google_bigquery_connection" "pike" { connection_id = "my-connection" location = "US" - friendly_name = "👋" + friendly_name = "something" description = "a riveting description" cloud_resource {} } diff --git a/terraform/google/backup/google_bigquery_datapolicy_data_policy.tf b/terraform/google/backup/google_bigquery_datapolicy_data_policy.tf new file mode 100644 index 00000000..64aa9b98 --- /dev/null +++ b/terraform/google/backup/google_bigquery_datapolicy_data_policy.tf @@ -0,0 +1,19 @@ +resource "google_bigquery_datapolicy_data_policy" "pike" { + location = "europe-west2" + data_policy_id = "data_policy" + policy_tag = google_data_catalog_policy_tag.pike.name + data_policy_type = "COLUMN_LEVEL_SECURITY_POLICY" +} +# +# resource "google_data_catalog_policy_tag" "policy_tag" { +# taxonomy = google_data_catalog_taxonomy.taxonomy.id +# display_name = "Low security" +# description = "A policy tag normally associated with low security items" +# } +# +# resource "google_data_catalog_taxonomy" "taxonomy" { +# region = "us-central1" +# display_name = "taxonomy" +# description = "A collection of policy tags" +# activated_policy_types = ["FINE_GRAINED_ACCESS_CONTROL"] +# } diff --git a/terraform/google/backup/google_bigquery_datapolicy_data_policy_iam_binding.tf b/terraform/google/backup/google_bigquery_datapolicy_data_policy_iam_binding.tf new file mode 100644 index 00000000..2b699748 --- /dev/null +++ b/terraform/google/backup/google_bigquery_datapolicy_data_policy_iam_binding.tf @@ -0,0 +1 @@ +resource "google_bigquery_datapolicy_data_policy_iam_binding" "pike" {} diff --git a/terraform/google/backup/google_bigquery_datapolicy_data_policy_iam_member.tf b/terraform/google/backup/google_bigquery_datapolicy_data_policy_iam_member.tf new file mode 100644 index 00000000..ddb968c6 --- /dev/null +++ b/terraform/google/backup/google_bigquery_datapolicy_data_policy_iam_member.tf @@ -0,0 +1 @@ +resource "google_bigquery_datapolicy_data_policy_iam_member" "pike" {} diff --git a/terraform/google/backup/google_bigquery_datapolicy_data_policy_iam_policy.tf b/terraform/google/backup/google_bigquery_datapolicy_data_policy_iam_policy.tf new file mode 100644 index 00000000..2653fe6b --- /dev/null +++ b/terraform/google/backup/google_bigquery_datapolicy_data_policy_iam_policy.tf @@ -0,0 +1,15 @@ +data "google_iam_policy" "admin4" { + binding { + role = "roles/viewer" + members = [ + "user:james.Woolfenden@gmail.com", + ] + } +} + +resource "google_bigquery_datapolicy_data_policy_iam_policy" "policy" { + project = google_bigquery_datapolicy_data_policy.pike.project + location = google_bigquery_datapolicy_data_policy.pike.location + data_policy_id = google_bigquery_datapolicy_data_policy.pike.data_policy_id + policy_data = data.google_iam_policy.admin4.policy_data +} diff --git a/terraform/google/backup/google_bigquery_dataset_access.tf b/terraform/google/backup/google_bigquery_dataset_access.tf new file mode 100644 index 00000000..efcdf738 --- /dev/null +++ b/terraform/google/backup/google_bigquery_dataset_access.tf @@ -0,0 +1,31 @@ +resource "google_bigquery_dataset" "dataset" { + dataset_id = "example_dataset2" + friendly_name = "test" + description = "This is a test description" + location = "EU" + default_table_expiration_ms = 3600000 + + labels = { + env = "default" + } + + access { + role = "OWNER" + user_by_email = google_service_account.bqowner.email + } + + access { + role = "READER" + domain = "hashicorp.com" + } +} + +resource "google_service_account" "bqowner" { + account_id = "bqowner" +} + +resource "google_bigquery_dataset_access" "access" { + dataset_id = google_bigquery_dataset.dataset.dataset_id + role = "OWNER" + user_by_email = "james.woolfenden@gmail.com" +} diff --git a/terraform/google/backup/google_bigquery_row_access_policy.tf b/terraform/google/backup/google_bigquery_row_access_policy.tf new file mode 100644 index 00000000..f508dcec --- /dev/null +++ b/terraform/google/backup/google_bigquery_row_access_policy.tf @@ -0,0 +1,22 @@ +resource "google_bigquery_dataset" "example" { + dataset_id = "dataset_id" + location = "US" +} + +resource "google_bigquery_table" "example" { + deletion_protection = false + + dataset_id = google_bigquery_dataset.example.dataset_id + table_id = "table_id" +} + +resource "google_bigquery_row_access_policy" "example" { + dataset_id = google_bigquery_dataset.example.dataset_id + table_id = google_bigquery_table.example.table_id + policy_id = "policy_id" + + filter_predicate = "nullable_field is not NULL" + grantees = [ + "domain:google.com" + ] +} diff --git a/terraform/google/backup/google_bigtable_authorized_view.tf b/terraform/google/backup/google_bigtable_authorized_view.tf new file mode 100644 index 00000000..50e381cd --- /dev/null +++ b/terraform/google/backup/google_bigtable_authorized_view.tf @@ -0,0 +1,60 @@ +resource "google_bigtable_instance" "instance" { + name = "tf-instance" + + cluster { + cluster_id = "tf-instance-cluster" + zone = "us-central1-b" + num_nodes = 3 + storage_type = "HDD" + } + deletion_protection = false + + # + # lifecycle { + # prevent_destroy = true + # } +} + +resource "google_bigtable_table" "table" { + name = "tf-table" + instance_name = google_bigtable_instance.instance.name + split_keys = ["a", "b", "c"] + + # lifecycle { + # prevent_destroy = true + # } + + column_family { + family = "family-first" + } + + column_family { + family = "family-second" + } + + change_stream_retention = "24h0m0s" +} + +resource "google_bigtable_authorized_view" "authorized_view" { + name = "tf-authorized-view" + instance_name = google_bigtable_instance.instance.name + table_name = google_bigtable_table.table.name + + # lifecycle { + # prevent_destroy = true + # } + + subset_view { + row_prefixes = [base64encode("prefix#")] + + family_subsets { + family_name = "family-first" + qualifiers = [base64encode("qualifier"), base64encode("qualifier-second")] + } + + family_subsets { + family_name = "family-second" + qualifier_prefixes = [""] + } + } +} diff --git a/terraform/google/backup/google_bigtable_logical_view.tf b/terraform/google/backup/google_bigtable_logical_view.tf new file mode 100644 index 00000000..4faf9f5a --- /dev/null +++ b/terraform/google/backup/google_bigtable_logical_view.tf @@ -0,0 +1,13 @@ +resource "google_bigtable_logical_view" "logical_view" { + logical_view_id = "btlogical" + instance = google_bigtable_instance.instance.name + deletion_protection = false + query = <Some example SSML XML + EOF + } + } + messages { + live_agent_handoff { + metadata = <Some example SSML XML + EOF + } + } + messages { + live_agent_handoff { + metadata = <Some example SSML XML + EOF + } + } + messages { + live_agent_handoff { + metadata = <Some example SSML XML + EOF + } + } + messages { + live_agent_handoff { + metadata = <Some example SSML XML + EOF + } + } + messages { + live_agent_handoff { + metadata = <Some example SSML XML + EOF + } + } + messages { + live_agent_handoff { + metadata = <