mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-20 11:48:24 -06:00
* Replace DNSimple API client with the official Go client * Upgrade DNSimple provider to use the new API v2 Acceptance tests pass: ``` === RUN TestProvider --- PASS: TestProvider (0.00s) === RUN TestProvider_impl --- PASS: TestProvider_impl (0.00s) === RUN TestAccDNSimpleRecord_Basic --- PASS: TestAccDNSimpleRecord_Basic (2.67s) === RUN TestAccDNSimpleRecord_Updated --- PASS: TestAccDNSimpleRecord_Updated (1.88s) PASS ok github.com/hashicorp/terraform/builtin/providers/dnsimple ``` Note that the code still has to be updated to pass the account ID dynamically in place of "TODO-ACCOUNT". * Refactor DNSimple provider to expose both client and config The config is required as the new API wants to know the identifier of the account you are operating to. The account is not stored in the client (as the client can talk with different accounts), hence I need to pass it as part of the config. * Identify Terraform requests to DNSimple via UserAgent * Upgrade to the latest dnsimple-go version * Update docs Provide upgrade instructions and update the docs for API v2. * Remove rendundant type declaration
37 lines
807 B
Go
37 lines
807 B
Go
package dnsimple
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/dnsimple/dnsimple-go/dnsimple"
|
|
"github.com/hashicorp/terraform/terraform"
|
|
)
|
|
|
|
type Config struct {
|
|
Email string
|
|
Account string
|
|
Token string
|
|
}
|
|
|
|
// Client represents the DNSimple provider client.
|
|
// This is a convenient container for the configuration and the underlying API client.
|
|
type Client struct {
|
|
client *dnsimple.Client
|
|
config *Config
|
|
}
|
|
|
|
// Client() returns a new client for accessing dnsimple.
|
|
func (c *Config) Client() (*Client, error) {
|
|
client := dnsimple.NewClient(dnsimple.NewOauthTokenCredentials(c.Token))
|
|
client.UserAgent = "HashiCorp-Terraform/" + terraform.VersionString()
|
|
|
|
provider := &Client{
|
|
client: client,
|
|
config: c,
|
|
}
|
|
|
|
log.Printf("[INFO] DNSimple Client configured for account: %s", c.Account)
|
|
|
|
return provider, nil
|
|
}
|