Pandora is a suite of single-purpose tools which enable transforming the Azure API Definitions into both a Go SDK and Terraform Resources.
These tools are:
At the current time only Resource Manager Services are supported - although we're looking to support Microsoft Graph and (potentially) the Data Plane APIs in the future.
The following dependencies are required:
At first checkout you'll need to both initialize and then update the Git submodule:
$ git submodule init
$ git submodule update
The Swagger Git Submodule is updated every weekday (via Dependabot) - once updated you'll need to update your submodule, via:
$ git submodule update
Pandora's primarily intended to be run in automation (using both Github Actions and Dependabot) - which gets run once a Pull Request is merged.
./config/resource-manager.hcl
)../submodules/rest-api-specs
)../tools
.hashicorp/go-azure-sdk
repository is updated in the same fashion via the Go SDK Generator (outputting any new/changes to the Go SDK).hashicorp/terraform-provider-azurerm
repository is also updated via the Terraform Generator (outputting any new/changes to the Terraform Generator).To show the workflow with examples:
For information and guides and on how to contribute, add services, service versions or resources, see the overview of guides located in the ./docs
.
./api-definitions
- contains V2 of the transformed Azure API Definitions, used by the (V2) Data API../config/resource-manager.hcl
- contains the list of Resource Manager Services and API Versions which should be imported../docs
- contains documentation../submodules/msgraph-metadata
- contains the Git Submodule to the microsoftgraph/msgraph-metadata
repository - containing the OpenAPI/Swagger definitions for Microsoft Graph../submodules/rest-api-specs
- contains the Git Submodule to the Azure/azure-rest-api-specs
repository - containing the OpenAPI/Swagger definitions for Azure Resource Manager../tools/data-api
- contains V2 of the Data API - which serves the transformed Azure API Definitions from ./api-definitions
../tools/data-api-differ
- contains the Data API Differ which detects changes to the API Definitions../tools/generator-go-sdk
- contains the Go SDK Generator, pulling information from the Data API../tools/generator-terraform
- contains the Terraform Generator, pulling information from the Data API../tools/importer-rest-api-specs
- contains the Importer for the Azure Resource Manager OpenAPI/Swagger definitions../tools/version-bumper
- contains a small tool to add new Services and new API Versions for existing Services to the config.There's also few helper tools (for example, for use in automation):
./tools/sdk
- contains a lightweight HTTP API for the Data API../tools/wrapper-automation
- launches the Data API and then the Rest API Specs Importer/Go SDK/Terraform Generator for use in automation.The following paths are still a work-in-progress:
./config/microsoft-graph.hcl
- contains the list of Microsoft Graph Services which should be imported../tools/importer-msgraph-metadata
- contains the Importer for the Microsoft Graph API Definitions.