How googlecloudplatform/magic-modules works
Magic Modules turns product and resource definitions into Terraform provider code and documentation, with an experimental OpenAPI-to-definition path. Contributors also use repository tools for schema-diff analysis, template conversion and checks, changelog validation, test reading, issue labeling, and TeamCity service configuration. The sampled generator source establishes its loading, validation, and provider-generation flow; several tool implementations were not sampled, so their internal wiring is intentionally not inferred.
Main entry points: main.go MMv1 runner · loader.go Definition loader · terraform.go Provider generator · parser.go OpenAPI converter
Components 23
Provider generation
- MMv1 runner
mmv1/main.go - Definition loader
mmv1/loader/loader.go - Provider generator
mmv1/provider/terraform.go - Provider variants
mmv1/provider/provider.go
Schema inputs
- Product/resource model
mmv1/api/product.go - OpenAPI converter
mmv1/openapi_generate/parser.go
Schema analysis
- Schema diff CLI
tools/diff-processor/cmd/root.go - Breaking-change analysis
tools/diff-processor/breaking_changes/breaking_changes.go - Missing-item detectors
tools/diff-processor/detector/detector.go
Contributor tools
- Resource template converter
tools/resource-template-converter/cmd/root.go - Template checks
tools/template-check/cmd/root.go - Test reader
tools/test-reader/reader/reader.go - Issue labeler
tools/issue-labeler/labeler/labels.go - Changelog validator
tools/go-changelog/cmd/changelog-pr-body-check/main.go
TeamCity configuration
- Service map generator
tools/teamcity-generator/main.go - Service map checker
tools/teamcity-diff-check/main.go
Other components
- Contributor
- Provider code and docs
- OpenAPI definitions
- Product definitions
- GitHub
- Provider service packages
- TeamCity service map
Connections 26
- Contributor → MMv1 runner: runs generation
- MMv1 runner → Definition loader: loads definitions
- Definition loader → Product definitions: reads
- Definition loader → Product/resource model: builds and validates
- MMv1 runner → Provider generator: requests generation
- Provider generator → Provider variants: selects provider
- Provider generator → Provider code and docs: writes code and docs
- Contributor → OpenAPI converter: runs conversion
- OpenAPI converter → OpenAPI definitions: reads
- OpenAPI converter → Product definitions: writes YAML
- Contributor → Schema diff CLI: runs analysis
- Contributor → Resource template converter: runs conversion
- Contributor → Template checks: runs checks
- Contributor → Test reader: reads tests
- Contributor → Issue labeler: runs labeling
- Issue labeler → GitHub: interacts with
- Contributor → Changelog validator: checks PR
- Changelog validator → GitHub: retrieves PR
- Contributor → Service map generator: runs generation
- Service map generator → Provider service packages: reads packages
- Service map generator → TeamCity service map: writes map
- Contributor → Service map checker: runs comparison
- Service map checker → Provider service packages: reads list
- Service map checker → TeamCity service map: reads map
- Schema diff CLI → Breaking-change analysis: runs analysis
- Schema diff CLI → Missing-item detectors: runs detection