Skip to content

Commit

Permalink
Updated provider configuration and docs
Browse files Browse the repository at this point in the history
  • Loading branch information
micahlmartin committed Sep 28, 2021
1 parent 795214b commit dceb819
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 71 deletions.
58 changes: 9 additions & 49 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,62 +1,22 @@
# 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

- [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
7 changes: 3 additions & 4 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
26 changes: 12 additions & 14 deletions internal/provider/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package provider

import (
"context"
"fmt"
"net/http"
"time"

Expand Down Expand Up @@ -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(),
Expand Down Expand Up @@ -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
}
}
7 changes: 3 additions & 4 deletions internal/provider/provider_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down

0 comments on commit dceb819

Please sign in to comment.