Skip to content
Closed
Show file tree
Hide file tree
Changes from all 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
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
<!-- Code generated for API Clients. DO NOT EDIT. -->
## 0.6.0
* Add support for `vaults`
* Add support for `secrets`

## 0.5.0
* Renamed `upstream_proto` to `upstream_protocol` for `endpoint` resources
* Added support for `pooling_enabled` on Endpoints
Expand Down
1 change: 1 addition & 0 deletions docs/resources/reserved_domain.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ resource "ngrok_reserved_domain" "example" {
- **acme_challenge_cname_target** (String) DNS CNAME target for the host _acme-challenge.example.com, where example.com is your reserved domain name. This is required to issue certificates for wildcard, non-ngrok reserved domains. Must be null for non-wildcard domains and ngrok subdomains.
- **cname_target** (String) DNS CNAME target for a custom hostname, or null if the reserved domain is a subdomain of an ngrok owned domain (e.g. *.ngrok.app)
- **id** (String) unique reserved domain resource identifier
- **is_dev** (Boolean) Whether the reserved domain is a dev domain.

<a id="nestedblock--certificate_management_policy"></a>
### Nested Schema for `certificate_management_policy`
Expand Down
75 changes: 75 additions & 0 deletions docs/resources/secret.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "ngrok_secret Resource - terraform-provider-ngrok"
subcategory: ""
description: |-
Secrets is an api service for securely storing and managing sensitive data such as secrets, credentials, and tokens.
---

# ngrok_secret (Resource)

Secrets is an api service for securely storing and managing sensitive data such as secrets, credentials, and tokens.

## Example Usage

```terraform
# Code generated for API Clients. DO NOT EDIT.


resource "ngrok_secret" "example" {
description = "Database password for prod postgres instance"
metadata = "env=prod,service=postgres"
name = "db-password"
value = "supersecret123"
vault_id = "vault_2y0YkHvDtItsU4xNJpBPGx8EW2K"
}
```

<!-- schema generated by tfplugindocs -->
## Schema

### Required

- **vault_id** (String) unique identifier of the referenced vault

### Optional

- **description** (String) description of Secret
- **metadata** (String) Arbitrary user-defined metadata for this Secret
- **name** (String) Name of secret
- **value** (String) Value of secret

### Read-Only

- **created_by** (Set of Object) Reference to who created this Secret (see [below for nested schema](#nestedatt--created_by))
- **id** (String) identifier for Secret
- **last_updated_by** (Set of Object) Reference to who created this Secret (see [below for nested schema](#nestedatt--last_updated_by))
- **vault** (Set of Object) Reference to the vault the secret is stored in (see [below for nested schema](#nestedatt--vault))

<a id="nestedatt--created_by"></a>
### Nested Schema for `created_by`

Read-Only:

- **id** (String)
- **uri** (String)


<a id="nestedatt--last_updated_by"></a>
### Nested Schema for `last_updated_by`

Read-Only:

- **id** (String)
- **uri** (String)


<a id="nestedatt--vault"></a>
### Nested Schema for `vault`

Read-Only:

- **id** (String)
- **uri** (String)


41 changes: 41 additions & 0 deletions docs/resources/vault.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "ngrok_vault Resource - terraform-provider-ngrok"
subcategory: ""
description: |-
Vaults is an api service for securely storing and managing sensitive data such as secrets, credentials, and tokens.
---

# ngrok_vault (Resource)

Vaults is an api service for securely storing and managing sensitive data such as secrets, credentials, and tokens.

## Example Usage

```terraform
# Code generated for API Clients. DO NOT EDIT.


resource "ngrok_vault" "example" {
description = "Vault containing production environment secrets"
metadata = "env=prod,team=devops"
name = "prod-secrets"
}
```

<!-- schema generated by tfplugindocs -->
## Schema

### Optional

- **description** (String) description of Vault
- **metadata** (String) Arbitrary user-defined metadata for this Vault
- **name** (String) Name of vault

### Read-Only

- **created_by** (String) Reference to who created this Vault
- **id** (String) identifier for Vault
- **last_updated_by** (String) Reference to who created this Vault


11 changes: 11 additions & 0 deletions examples/resources/ngrok_secret/resource.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Code generated for API Clients. DO NOT EDIT.


resource "ngrok_secret" "example" {
description = "Database password for prod postgres instance"
metadata = "env=prod,service=postgres"
name = "db-password"
value = "supersecret123"
vault_id = "vault_2y0YkHvDtItsU4xNJpBPGx8EW2K"
}

9 changes: 9 additions & 0 deletions examples/resources/ngrok_vault/resource.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Code generated for API Clients. DO NOT EDIT.


resource "ngrok_vault" "example" {
description = "Vault containing production environment secrets"
metadata = "env=prod,team=devops"
name = "prod-secrets"
}

64 changes: 64 additions & 0 deletions ngrok/flatten_expand.go
Original file line number Diff line number Diff line change
Expand Up @@ -9594,6 +9594,66 @@ func expandEndpointCreateSlice(in interface{}) *[]restapi.EndpointCreate {
return &out
}

func flattenEndpointListArgs(obj *restapi.EndpointListArgs) interface{} {
if obj == nil {
return nil
}

m := make(map[string]interface{})
m["before_id"] = obj.BeforeID
m["limit"] = obj.Limit
m["ids"] = obj.IDs
m["urls"] = obj.URLs

return []interface{}{m}
}

func flattenEndpointListArgsSlice(objs *[]restapi.EndpointListArgs) (sl []interface{}) {
if objs == nil {
return nil
}

for _, v := range *objs {
sl = append(sl, flattenEndpointListArgs(&v))
}
return sl
}

func expandEndpointListArgs(in interface{}) *restapi.EndpointListArgs {
if in == nil {
return nil
}
v := in.(*schema.Set)

if v.Len() == 0 {
return nil
}

m := v.List()[0].(map[string]interface{})
var obj restapi.EndpointListArgs
if v, ok := m["before_id"]; ok {
obj.BeforeID = expandString(v)
}
if v, ok := m["limit"]; ok {
obj.Limit = expandString(v)
}
if v, ok := m["ids"]; ok {
obj.IDs = *expandStringSlice(v)
}
if v, ok := m["urls"]; ok {
obj.URLs = *expandStringSlice(v)
}
return &obj
}

func expandEndpointListArgsSlice(in interface{}) *[]restapi.EndpointListArgs {
var out []restapi.EndpointListArgs
for _, v := range in.([]interface{}) {
out = append(out, *expandEndpointListArgs(v))
}
return &out
}

func flattenEndpointUpdate(obj *restapi.EndpointUpdate) interface{} {
if obj == nil {
return nil
Expand Down Expand Up @@ -13887,6 +13947,7 @@ func flattenReservedDomain(obj *restapi.ReservedDomain) interface{} {
m["certificate_management_status"] = flattenReservedDomainCertStatus(obj.CertificateManagementStatus)
m["acme_challenge_cname_target"] = obj.ACMEChallengeCNAMETarget
m["error_redirect_url"] = obj.ErrorRedirectURL
m["is_dev"] = obj.IsDev

return []interface{}{m}
}
Expand Down Expand Up @@ -13959,6 +14020,9 @@ func expandReservedDomain(in interface{}) *restapi.ReservedDomain {
if v, ok := m["error_redirect_url"]; ok {
obj.ErrorRedirectURL = expandString(v)
}
if v, ok := m["is_dev"]; ok {
obj.IsDev = *expandBool(v)
}
return &obj
}

Expand Down
2 changes: 2 additions & 0 deletions ngrok/provider.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions ngrok/resource_reserved_domain.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,15 @@ func resourceReservedDomains() *schema.Resource {
ForceNew: false,
Description: "unique reserved domain resource identifier",
},
"is_dev": {
Type: schema.TypeBool,
Required: false,
Computed: true,
Optional: false,
Sensitive: false,
ForceNew: true,
Description: "Whether the reserved domain is a dev domain.",
},
"metadata": {
Type: schema.TypeString,
Required: false,
Expand Down Expand Up @@ -241,6 +250,7 @@ func resourceReservedDomainsGetDecode(d *schema.ResourceData, res *restapi.Reser
d.Set("https_endpoint_configuration_id", res.HTTPSEndpointConfiguration.ID)
}
d.Set("id", res.ID)
d.Set("is_dev", res.IsDev)
d.Set("metadata", res.Metadata)
d.Set("region", res.Region)
}
Expand Down
Loading