Gracefully handle manually deleted resources
parent
ea28860388
commit
fb35966e46
|
|
@ -3,7 +3,7 @@ HOSTNAME=github.com
|
||||||
NAMESPACE=nleiva
|
NAMESPACE=nleiva
|
||||||
NAME=nautobot
|
NAME=nautobot
|
||||||
BINARY=terraform-provider-${NAME}
|
BINARY=terraform-provider-${NAME}
|
||||||
VERSION=0.2.3
|
VERSION=0.2.4
|
||||||
OS_ARCH=$(shell go env GOOS)_$(shell go env GOARCH)
|
OS_ARCH=$(shell go env GOOS)_$(shell go env GOARCH)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,4 +25,4 @@ provider "nautobot" {
|
||||||
### Required
|
### Required
|
||||||
|
|
||||||
- `token` (String, Sensitive) Customer/user-specific authorization API token for Nautobot.
|
- `token` (String, Sensitive) Customer/user-specific authorization API token for Nautobot.
|
||||||
- `url` (String) URL for the Nautobot server. It should be of the form https:///server.example.org/api/.
|
- `url` (String) URL for the Nautobot API platform. It should be of the form https:///server.example.org/api/.
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ func New(version string) func() *schema.Provider {
|
||||||
Required: true,
|
Required: true,
|
||||||
DefaultFunc: schema.EnvDefaultFunc("NAUTOBOT_URL", nil),
|
DefaultFunc: schema.EnvDefaultFunc("NAUTOBOT_URL", nil),
|
||||||
ValidateFunc: validation.IsURLWithHTTPorHTTPS,
|
ValidateFunc: validation.IsURLWithHTTPorHTTPS,
|
||||||
Description: "URL for the Nautobot server. It should be of the form https:///server.example.org/api/.",
|
Description: "URL for the Nautobot API platform. It should be of the form https:///server.example.org/api/.",
|
||||||
},
|
},
|
||||||
"token": {
|
"token": {
|
||||||
Type: schema.TypeString,
|
Type: schema.TypeString,
|
||||||
|
|
|
||||||
|
|
@ -176,7 +176,18 @@ func resourceManufacturerRead(ctx context.Context, d *schema.ResourceData, meta
|
||||||
return diag.Errorf("failed to get manufacturer %s from %s: %s", name, s, err.Error())
|
return diag.Errorf("failed to get manufacturer %s from %s: %s", name, s, err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the Manufacturer is in the state file, but it is not in the Nautobot platform
|
||||||
|
// the response we get from DcimManufacturersListWithResponse is: {"count":0,"next":null,"previous":null,"results":[]}
|
||||||
|
// When you create something in Terraform but delete it manually, Terraform should gracefully handle it.
|
||||||
|
// We should set the ID to an empty string so Terraform "destroys" the resource in state.
|
||||||
|
count := gjson.Get(string(rsp.Body), "count")
|
||||||
|
if count.String() == "0" {
|
||||||
|
d.SetId("")
|
||||||
|
return diags
|
||||||
|
}
|
||||||
|
|
||||||
results := gjson.Get(string(rsp.Body), "results.0")
|
results := gjson.Get(string(rsp.Body), "results.0")
|
||||||
|
|
||||||
resultsReader := strings.NewReader(results.String())
|
resultsReader := strings.NewReader(results.String())
|
||||||
|
|
||||||
item := make(map[string]interface{})
|
item := make(map[string]interface{})
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue