This repository is the official HashiCorp Terraform provider for Microsoft Azure (azurerm). It enables declarative management of Azure infrastructure—resources, data sources, and services—through Terraform configurations. The provider is written in Go and uses the Terraform Plugin SDK and Plugin Framework to implement CRUD operations, state migrations, custom polling for asynchronous operations, and extensive input validation. Its architecture follows a modular service registration pattern: each Azure service (e.g., compute, network, storage, appservice) is self-contained within `internal/services/<service>/`, with its own client construction, resource definitions, validation functions, and acceptance tests. Key entry points include `main.go` for provider initialization, `internal/provider/provider.go` for resource registration, and `internal/services/*/registration.go` for service wiring. Data flows from Terraform configuration through the provider's SDK layer to Azure REST APIs via the `go-azure-sdk` library. The codebase is large (43k+ files) but well-organized, with extensive test coverage and tooling for documentation linting, schema API compatibility checks, and PR guide suggestions. It is actively maintained with frequent releases and a large community (5k+ stars, 5k+ forks).
This repository is a code generation and CI orchestration system for Terraform providers targeting Google Cloud Platform. The core functionality reads YAML definitions of GCP products and resources (hundreds of YAML files under mmv1/products/) and uses Go templates (mmv1/templates/terraform/) to generate the full source code for the google and google-beta Terraform providers, including resources, data sources, IAM policies, tests, and documentation. It also generates code for the terraform-google-conversion (TGC) library used for Cloud Asset Inventory conversion. The CI component (magician) manages pull request workflows: downstream generation, VCR-based acceptance testing, automatic reviewer assignment, scheduled PR reminders, and test failure triage. Additional tools handle breaking change detection, missing test/doc/identity analysis, issue labeling, and template validation. The architecture is a multi-module Go CLI (mmv1 generator + magician + several tools) with extensive use of Go templates, YAML configurations, and Bazel build system. While primarily an application, it includes data processing elements in the diff-processor and test reader that perform schema comparison and coverage analysis, giving it a hybrid flavor dominated by code generation and CI.
This repository implements a Terraform provider for managing Incus, a container and virtual machine orchestration platform. It provides full CRUD operations for Incus resources such as instances, networks, storage pools, profiles, projects, certificates, cluster groups, and server configuration, along with corresponding data sources for reading existing state. The provider is built using the Terraform Plugin Framework (v1.19.0) with some fallback to Plugin SDK v2, and communicates with Incus via its client library (github.com/lxc/incus/v7). Key entry points include the main.go provider server, internal/provider/provider.go for resource registration, and individual resource files under internal/{certificate,cluster,image,instance,network,profile,project,server,storage}. The provider supports multiple remotes, OIDC authentication, clustering, and PKI, and includes a code generation tool (cmd/generate-datasources) that produces consistent data source implementations and documentation from a YAML configuration and Go templates. Acceptance tests require a live Incus environment and cover complex scenarios like instance lifecycle, exec triggers, file uploads, and import. The codebase is well-structured with shared utilities in internal/common for config/device/file/import handling, and demonstrates a consistent pattern for state synchronization and error handling. However, it carries some technical debt from its fork of the LXD provider, including dual SDK usage and heavy boilerplate that could benefit from further abstraction.