|
1 | 1 | # Terraform Plugin SDK |
2 | 2 |
|
3 | | -This SDK enables building Terraform plugin which allows Terraform's users to manage existing and popular service providers as well as custom in-house solutions. |
| 3 | +This is a fork of Hashicorp's [terraform-plugin-sdk](https://github.com/hashicorp/terraform-plugin-sdk). |
4 | 4 |
|
5 | | -Terraform itself is a tool for building, changing, and versioning infrastructure safely and efficiently. You can find more about Terraform on its [website](https://www.terraform.io) and [its GitHub repository](https://github.com/hashicorp/terraform). |
| 5 | +## Updating the fork |
6 | 6 |
|
7 | | -## Documentation |
| 7 | +When a new version of the terraform-plugin-sdk comes out, we need to update our fork. This is necessary to avoid build errors in newer providers. |
8 | 8 |
|
9 | | -See [Extending Terraform](https://www.terraform.io/docs/extend/index.html) section on the website. |
| 9 | +To update our fork: |
| 10 | +1. Checkout the latest upstream branch: `git checkout upstream-${LATEST_VERSION}`. |
| 11 | +2. Create a new branch: `git checkout -b upstream-${NEW_VERSION}`. |
| 12 | +3. Ensure that original repository is a remote and up to date: |
10 | 13 |
|
11 | | -## Scope (Providers VS Core) |
| 14 | + ``` shell |
| 15 | + 𝛌 git remote -v |
| 16 | + origin https://github.com/pulumi/terraform-plugin-sdk.git (fetch) |
| 17 | + origin https://github.com/pulumi/terraform-plugin-sdk.git (push) |
| 18 | + tf https://github.com/hashicorp/terraform-plugin-sdk.git (fetch) |
| 19 | + tf https://github.com/hashicorp/terraform-plugin-sdk.git (push) |
| 20 | + 𝛌 git fetch tf |
| 21 | + ``` |
| 22 | +4. Merge the new version into your branch: `git merge ${NEW_VERSION}`. |
| 23 | +5. Resolve any conflicts and push the new version. |
12 | 24 |
|
13 | | -### Terraform Core |
14 | | - |
15 | | - - acts as gRPC _client_ |
16 | | - - interacts with the user |
17 | | - - parses (HCL/JSON) configuration |
18 | | - - manages state as whole, asks **Provider(s)** to mutate provider-specific parts of state |
19 | | - - handles backends & provisioners |
20 | | - - handles inputs, outputs, modules, and functions |
21 | | - - discovers **Provider(s)** and their versions per configuration |
22 | | - - manages **Provider(s)** lifecycle (i.e. spins up & tears down provider process) |
23 | | - - passes relevant parts of parsed (valid JSON/HCL) and interpolated configuration to **Provider(s)** |
24 | | - - decides ordering of (Create, Read, Update, Delete) operations on resources and data sources |
25 | | - - ... |
26 | | - |
27 | | -### Terraform Provider (via this SDK) |
28 | | - |
29 | | - - acts as gRPC _server_ |
30 | | - - executes any domain-specific logic based on received parsed configuration |
31 | | - - (Create, Read, Update, Delete, Import, Validate) a Resource |
32 | | - - Read a Data Source |
33 | | - - tests domain-specific logic via provided acceptance test framework |
34 | | - - provides **Core** updated state of a resource or data source and/or appropriate feedback in the form of validation or other errors |
35 | | - |
36 | | -## Migrating to SDK v1 from built-in SDK |
37 | | - |
38 | | -Migrating to the standalone SDK v1 is covered on the [Plugin SDK section](https://www.terraform.io/docs/extend/plugin-sdk.html) of the website. |
39 | | - |
40 | | -## Versioning |
41 | | - |
42 | | -The Terraform Plugin SDK is a [Go module](https://github.com/golang/go/wiki/Modules) versioned using [semantic versioning](https://semver.org/). |
43 | | - |
44 | | -## Contributing |
45 | | - |
46 | | -See [`.github/CONTRIBUTING.md`](https://github.com/hashicorp/terraform-plugin-sdk/blob/master/.github/CONTRIBUTING.md) |
47 | | - |
48 | | -## License |
49 | | - |
50 | | -[Mozilla Public License v2.0](https://github.com/hashicorp/terraform-plugin-sdk/blob/master/LICENSE) |
| 25 | +We do not use the `master` branch for this. |
0 commit comments