Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions .github/workflows/samples-terraform.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Samples Terraform

on:
push:
paths:
- 'samples/client/petstore/terraform/**'
- 'samples/client/petstore/terraform-addpet/**'
- 'samples/client/petstore/terraform-server/**'
- 'samples/client/others/terraform/**'
pull_request:
paths:
- 'samples/client/petstore/terraform/**'
- 'samples/client/petstore/terraform-addpet/**'
- 'samples/client/petstore/terraform-server/**'
- 'samples/client/others/terraform/**'

jobs:
build:
name: Build Terraform Provider
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
sample:
- samples/client/petstore/terraform/
- samples/client/petstore/terraform-addpet/
- samples/client/petstore/terraform-server/
- samples/client/others/terraform/allof-discriminator/
- samples/client/others/terraform/oneof-anyof-required/
- samples/client/others/terraform/oneof-discriminator-lookup/
steps:
- uses: actions/checkout@v5
- uses: actions/setup-go@v6
with:
go-version: "stable"
- run: go version
- name: Build provider
working-directory: ${{ matrix.sample }}
run: go build -v ./...
- name: Run acceptance tests
working-directory: ${{ matrix.sample }}
run: TF_ACC=1 go test ./... -v -timeout 120m
11 changes: 11 additions & 0 deletions bin/configs/terraform-provider-allof-discriminator.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
generatorName: terraform-provider
outputDir: samples/client/others/terraform/allof-discriminator
inputSpec: modules/openapi-generator/src/test/resources/3_0/go/allof_multiple_ref_and_discriminator.yaml
templateDir: modules/openapi-generator/src/main/resources/terraform-provider
gitHost: github.com
gitUserId: example
gitRepoId: terraform-provider-allof
additionalProperties:
providerName: "allof"
providerAddress: "registry.terraform.io/example/allof"
hideGenerationTimestamp: "true"
11 changes: 11 additions & 0 deletions bin/configs/terraform-provider-oneof-anyof-required.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
generatorName: terraform-provider
outputDir: samples/client/others/terraform/oneof-anyof-required
inputSpec: modules/openapi-generator/src/test/resources/3_0/go/spec-with-oneof-anyof-required.yaml
templateDir: modules/openapi-generator/src/main/resources/terraform-provider
gitHost: github.com
gitUserId: example
gitRepoId: terraform-provider-oneof-anyof
additionalProperties:
providerName: "oneof"
providerAddress: "registry.terraform.io/example/oneof-anyof"
hideGenerationTimestamp: "true"
11 changes: 11 additions & 0 deletions bin/configs/terraform-provider-oneof-discriminator-lookup.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
generatorName: terraform-provider
outputDir: samples/client/others/terraform/oneof-discriminator-lookup
inputSpec: modules/openapi-generator/src/test/resources/3_0/go/spec-with-oneof-discriminator.yaml
templateDir: modules/openapi-generator/src/main/resources/terraform-provider
gitHost: github.com
gitUserId: example
gitRepoId: terraform-provider-oneof-disc
additionalProperties:
providerName: "oneof"
providerAddress: "registry.terraform.io/example/oneof-disc"
hideGenerationTimestamp: "true"
11 changes: 11 additions & 0 deletions bin/configs/terraform-provider-petstore-addpet.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
generatorName: terraform-provider
outputDir: samples/client/petstore/terraform-addpet
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-addpet-only.yaml
templateDir: modules/openapi-generator/src/main/resources/terraform-provider
gitHost: github.com
gitUserId: example
gitRepoId: terraform-provider-petstore-addpet
additionalProperties:
providerName: "petstore"
providerAddress: "registry.terraform.io/example/petstore-addpet"
hideGenerationTimestamp: "true"
11 changes: 11 additions & 0 deletions bin/configs/terraform-provider-petstore-new.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
generatorName: terraform-provider
outputDir: samples/client/petstore/terraform
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/terraform-provider
gitHost: github.com
gitUserId: example
gitRepoId: terraform-provider-petstore
additionalProperties:
providerName: "petstore"
providerAddress: "registry.terraform.io/example/petstore"
hideGenerationTimestamp: "true"
11 changes: 11 additions & 0 deletions bin/configs/terraform-provider-petstore-server.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
generatorName: terraform-provider
outputDir: samples/client/petstore/terraform-server
inputSpec: modules/openapi-generator/src/test/resources/3_0/go-server/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/terraform-provider
gitHost: github.com
gitUserId: example
gitRepoId: terraform-provider-petstore-server
additionalProperties:
providerName: "petstore"
providerAddress: "registry.terraform.io/example/petstore-server"
hideGenerationTimestamp: "true"
229 changes: 229 additions & 0 deletions docs/generators/terraform-provider.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,229 @@
---
title: Documentation for the terraform-provider Generator
---

## METADATA

| Property | Value | Notes |
| -------- | ----- | ----- |
| generator name | terraform-provider | pass this to the generate command after -g |
| generator stability | EXPERIMENTAL | |
| generator type | CLIENT | |
| generator language | Go | |
| generator default templating engine | mustache | |
| helpTxt | Generates a Terraform provider (Go, using HashiCorp Plugin Framework). | |

## CONFIG OPTIONS
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.

| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true|
|packageName|Go package name (convention: lowercase).| |openapi|
|packageVersion|Go package version.| |1.0.0|
|providerAddress|Terraform provider registry address| |registry.terraform.io/example/example|
|providerName|Terraform provider name (e.g. 'petstore')| |example|
|providerVersion|Terraform provider version| |0.1.0|

## IMPORT MAPPING

| Type/Alias | Imports |
| ---------- | ------- |


## INSTANTIATION TYPES

| Type/Alias | Instantiated By |
| ---------- | --------------- |


## LANGUAGE PRIMITIVES

<ul class="column-ul">
<li>bool</li>
<li>byte</li>
<li>complex128</li>
<li>complex64</li>
<li>float32</li>
<li>float64</li>
<li>int</li>
<li>int32</li>
<li>int64</li>
<li>interface{}</li>
<li>map[string]interface{}</li>
<li>rune</li>
<li>string</li>
<li>uint</li>
<li>uint32</li>
<li>uint64</li>
</ul>

## RESERVED WORDS

<ul class="column-ul">
<li>bool</li>
<li>break</li>
<li>byte</li>
<li>case</li>
<li>chan</li>
<li>complex128</li>
<li>complex64</li>
<li>const</li>
<li>continue</li>
<li>default</li>
<li>defer</li>
<li>else</li>
<li>error</li>
<li>fallthrough</li>
<li>float32</li>
<li>float64</li>
<li>for</li>
<li>func</li>
<li>go</li>
<li>goto</li>
<li>if</li>
<li>import</li>
<li>int</li>
<li>int16</li>
<li>int32</li>
<li>int64</li>
<li>int8</li>
<li>interface</li>
<li>map</li>
<li>nil</li>
<li>package</li>
<li>range</li>
<li>return</li>
<li>rune</li>
<li>select</li>
<li>string</li>
<li>struct</li>
<li>switch</li>
<li>type</li>
<li>uint</li>
<li>uint16</li>
<li>uint32</li>
<li>uint64</li>
<li>uint8</li>
<li>uintptr</li>
<li>var</li>
</ul>

## FEATURE SET


### Client Modification Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|BasePath|✗|ToolingExtension
|Authorizations|✗|ToolingExtension
|UserAgent|✗|ToolingExtension
|MockServer|✗|ToolingExtension

### Data Type Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Custom|✗|OAS2,OAS3
|Int32|✓|OAS2,OAS3
|Int64|✓|OAS2,OAS3
|Float|✓|OAS2,OAS3
|Double|✓|OAS2,OAS3
|Decimal|✓|ToolingExtension
|String|✓|OAS2,OAS3
|Byte|✓|OAS2,OAS3
|Binary|✓|OAS2,OAS3
|Boolean|✓|OAS2,OAS3
|Date|✓|OAS2,OAS3
|DateTime|✓|OAS2,OAS3
|Password|✓|OAS2,OAS3
|File|✓|OAS2
|Uuid|✗|
|Array|✓|OAS2,OAS3
|Null|✗|OAS3
|AnyType|✗|OAS2,OAS3
|Object|✓|OAS2,OAS3
|Maps|✓|ToolingExtension
|CollectionFormat|✓|OAS2
|CollectionFormatMulti|✓|OAS2
|Enum|✓|OAS2,OAS3
|ArrayOfEnum|✓|ToolingExtension
|ArrayOfModel|✓|ToolingExtension
|ArrayOfCollectionOfPrimitives|✓|ToolingExtension
|ArrayOfCollectionOfModel|✓|ToolingExtension
|ArrayOfCollectionOfEnum|✓|ToolingExtension
|MapOfEnum|✓|ToolingExtension
|MapOfModel|✓|ToolingExtension
|MapOfCollectionOfPrimitives|✓|ToolingExtension
|MapOfCollectionOfModel|✓|ToolingExtension
|MapOfCollectionOfEnum|✓|ToolingExtension

### Documentation Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Readme|✓|ToolingExtension
|Model|✓|ToolingExtension
|Api|✓|ToolingExtension

### Global Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Host|✓|OAS2,OAS3
|BasePath|✓|OAS2,OAS3
|Info|✓|OAS2,OAS3
|Schemes|✗|OAS2,OAS3
|PartialSchemes|✓|OAS2,OAS3
|Consumes|✓|OAS2
|Produces|✓|OAS2
|ExternalDocumentation|✓|OAS2,OAS3
|Examples|✓|OAS2,OAS3
|XMLStructureDefinitions|✗|OAS2,OAS3
|MultiServer|✗|OAS3
|ParameterizedServer|✗|OAS3
|ParameterStyling|✗|OAS3
|Callbacks|✗|OAS3
|LinkObjects|✗|OAS3

### Parameter Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Path|✓|OAS2,OAS3
|Query|✓|OAS2,OAS3
|Header|✓|OAS2,OAS3
|Body|✓|OAS2
|FormUnencoded|✓|OAS2
|FormMultipart|✓|OAS2
|Cookie|✓|OAS3

### Schema Support Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Simple|✓|OAS2,OAS3
|Composite|✓|OAS2,OAS3
|Polymorphism|✗|OAS2,OAS3
|Union|✗|OAS3
|allOf|✗|OAS2,OAS3
|anyOf|✗|OAS3
|oneOf|✗|OAS3
|not|✗|OAS3

### Security Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|BasicAuth|✓|OAS2,OAS3
|ApiKey|✓|OAS2,OAS3
|OpenIDConnect|✗|OAS3
|BearerToken|✓|OAS3
|OAuth2_Implicit|✗|OAS2,OAS3
|OAuth2_Password|✗|OAS2,OAS3
|OAuth2_ClientCredentials|✗|OAS2,OAS3
|OAuth2_AuthorizationCode|✗|OAS2,OAS3
|SignatureAuth|✗|OAS3
|AWSV4Signature|✗|ToolingExtension

### Wire Format Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|JSON|✓|OAS2,OAS3
|XML|✗|OAS2,OAS3
|PROTOBUF|✗|ToolingExtension
|Custom|✗|OAS2,OAS3
Loading
Loading