diff --git a/README.md b/README.md index 734bd80e7..ad53d0763 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,13 @@ -# Terraform Provider Scaffolding +# Harness Terraform Provider -This repository is a *template* for a [Terraform](https://www.terraform.io) provider. It is intended as a starting point for creating Terraform providers, containing: +- Website: [harness.io](https://harness.io) - - A resource, and a data source (`internal/provider/`), - - Examples (`examples/`) and generated documentation (`docs/`), - - Miscellaneous meta files. - -These files contain boilerplate code that you will need to edit to create your own Terraform provider. A full guide to creating Terraform providers can be found at [Writing Custom Providers](https://www.terraform.io/docs/extend/writing-custom-providers.html). +The Terraform Harness provider is the official plugin that allows you to manage Harness CD resources. -Please see the [GitHub template repository documentation](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-repository-from-a-template) for how to create a new repository from this template on GitHub. +## Quick Starts -Once you've written your provider, you'll want to [publish it on the Terraform Registry](https://www.terraform.io/docs/registry/providers/publishing.html) so that others can use it. +- [Example project](https://github.com/harness-io/terraform-demo) +- [Provider usage](https://registry.terraform.io/providers/harness-io/harness/latest/docs) ## Requirements @@ -18,45 +15,8 @@ Once you've written your provider, you'll want to [publish it on the Terraform R - [Terraform](https://www.terraform.io/downloads.html) >= 0.13.x - [Go](https://golang.org/doc/install) >= 1.15 -## Building The Provider +## Documentation -1. Clone the repository -1. Enter the repository directory -1. Build the provider using the Go `install` command: -```sh -$ go install -``` +Full, comprehensive documentation is available on the Terraform website: -## Adding Dependencies - -This provider uses [Go modules](https://github.com/golang/go/wiki/Modules). -Please see the Go documentation for the most up to date information about using Go modules. - -To add a new dependency `github.com/author/dependency` to your Terraform provider: - -``` -go get github.com/author/dependency -go mod tidy -``` - -Then commit the changes to `go.mod` and `go.sum`. - -## Using the provider - -Fill this in for each provider - -## Developing the Provider - -If you wish to work on the provider, you'll first need [Go](http://www.golang.org) installed on your machine (see [Requirements](#requirements) above). - -To compile the provider, run `go install`. This will build the provider and put the provider binary in the `$GOPATH/bin` directory. - -To generate or update documentation, run `go generate`. - -In order to run the full suite of Acceptance tests, run `make testacc`. - -*Note:* Acceptance tests create real resources, and often cost money to run. - -```sh -$ make testacc -``` +https://registry.terraform.io/providers/harness-io/harness/latest/docs diff --git a/docs/index.md b/docs/index.md index 3bbd805dd..a82abb6c0 100644 --- a/docs/index.md +++ b/docs/index.md @@ -32,7 +32,6 @@ provider "harness" { ### Optional -- **account_id** (String) -- **api_key** (String) -- **bearer_token** (String) -- **endpoint** (String) +- **account_id** (String) The Harness account id. This can also be set using the `HARNESS_ACCOUNT_ID` environment variable. +- **api_key** (String) The Harness api key. This can also be set using the `HARNESS_API_KEY` environment variable. +- **endpoint** (String) The URL of the Harness API endpoint. The default is `https://app.harness.io`. This can also be set using the `HARNESS_ENDPOINT` environment variable. diff --git a/internal/provider/provider.go b/internal/provider/provider.go index 88a518ddf..f56141799 100644 --- a/internal/provider/provider.go +++ b/internal/provider/provider.go @@ -2,6 +2,7 @@ package provider import ( "context" + "fmt" "net/http" "time" @@ -33,25 +34,23 @@ func New(version string) func() *schema.Provider { p := &schema.Provider{ Schema: map[string]*schema.Schema{ "endpoint": { + Description: fmt.Sprintf("The URL of the Harness API endpoint. The default is `https://app.harness.io`. This can also be set using the `%s` environment variable.", helpers.EnvVars.HarnessEndpoint.String()), Type: schema.TypeString, - Optional: true, + Required: true, DefaultFunc: schema.EnvDefaultFunc(helpers.EnvVars.HarnessEndpoint.String(), api.DefaultApiUrl), }, "account_id": { + Description: fmt.Sprintf("The Harness account id. This can also be set using the `%s` environment variable.", helpers.EnvVars.HarnessAccountId.String()), Type: schema.TypeString, - Optional: true, + Required: true, DefaultFunc: schema.EnvDefaultFunc(helpers.EnvVars.HarnessAccountId.String(), nil), }, "api_key": { + Description: fmt.Sprintf("The Harness api key. This can also be set using the `%s` environment variable.", helpers.EnvVars.HarnessApiKey.String()), Type: schema.TypeString, - Optional: true, + Required: true, DefaultFunc: schema.EnvDefaultFunc(helpers.EnvVars.HarnessApiKey.String(), nil), }, - "bearer_token": { - Type: schema.TypeString, - Optional: true, - DefaultFunc: schema.EnvDefaultFunc(helpers.EnvVars.HarnessBearerToken.String(), nil), - }, }, DataSourcesMap: map[string]*schema.Resource{ "harness_application": dataSourceApplication(), @@ -118,12 +117,11 @@ func configure(version string, p *schema.Provider) func(context.Context, *schema } return &api.Client{ - UserAgent: p.UserAgent("terraform-provider-harness", version), - Endpoint: d.Get("endpoint").(string), - AccountId: d.Get("account_id").(string), - APIKey: d.Get("api_key").(string), - BearerToken: d.Get("bearer_token").(string), - HTTPClient: httpClient, + UserAgent: p.UserAgent("terraform-provider-harness", version), + Endpoint: d.Get("endpoint").(string), + AccountId: d.Get("account_id").(string), + APIKey: d.Get("api_key").(string), + HTTPClient: httpClient, }, nil } } diff --git a/internal/provider/provider_test.go b/internal/provider/provider_test.go index 62b21abea..c9d7b5eb9 100644 --- a/internal/provider/provider_test.go +++ b/internal/provider/provider_test.go @@ -81,10 +81,9 @@ func testAccConfigureProvider() { testAccProvider = New("dev")() config := map[string]interface{}{ - "endpoint": os.Getenv(helpers.EnvVars.HarnessEndpoint.String()), - "account_id": os.Getenv(helpers.EnvVars.HarnessAccountId.String()), - "api_key": os.Getenv(helpers.EnvVars.HarnessApiKey.String()), - "bearer_token": os.Getenv(helpers.EnvVars.HarnessBearerToken.String()), + "endpoint": os.Getenv(helpers.EnvVars.HarnessEndpoint.String()), + "account_id": os.Getenv(helpers.EnvVars.HarnessAccountId.String()), + "api_key": os.Getenv(helpers.EnvVars.HarnessApiKey.String()), } testAccProvider.Configure(context.Background(), terraform.NewResourceConfigRaw(config))