Add debug entry point for delve
This commit is contained in:
@@ -28,10 +28,10 @@ func TestAccDataUserGroup_multiple_providers(t *testing.T) {
|
|||||||
PreCheck: func() { preCheck(t) },
|
PreCheck: func() { preCheck(t) },
|
||||||
ProviderFactories: map[string]func() (*schema.Provider, error){
|
ProviderFactories: map[string]func() (*schema.Provider, error){
|
||||||
"unifi2": func() (*schema.Provider, error) {
|
"unifi2": func() (*schema.Provider, error) {
|
||||||
return New(), nil
|
return New("acctest")(), nil
|
||||||
},
|
},
|
||||||
"unifi3": func() (*schema.Provider, error) {
|
"unifi3": func() (*schema.Provider, error) {
|
||||||
return New(), nil
|
return New("acctest")(), nil
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// TODO: CheckDestroy: ,
|
// TODO: CheckDestroy: ,
|
||||||
|
|||||||
@@ -21,68 +21,70 @@ func init() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func New() *schema.Provider {
|
func New(version string) func() *schema.Provider {
|
||||||
p := &schema.Provider{
|
return func() *schema.Provider {
|
||||||
Schema: map[string]*schema.Schema{
|
p := &schema.Provider{
|
||||||
"username": {
|
Schema: map[string]*schema.Schema{
|
||||||
Description: "Local user name for the Unifi controller API. Can be specified with the `UNIFI_USERNAME` " +
|
"username": {
|
||||||
"environment variable.",
|
Description: "Local user name for the Unifi controller API. Can be specified with the `UNIFI_USERNAME` " +
|
||||||
Type: schema.TypeString,
|
"environment variable.",
|
||||||
Required: true,
|
Type: schema.TypeString,
|
||||||
DefaultFunc: schema.EnvDefaultFunc("UNIFI_USERNAME", ""),
|
Required: true,
|
||||||
},
|
DefaultFunc: schema.EnvDefaultFunc("UNIFI_USERNAME", ""),
|
||||||
"password": {
|
},
|
||||||
Description: "Password for the user accessing the API. Can be specified with the `UNIFI_PASSWORD` " +
|
"password": {
|
||||||
"environment variable.",
|
Description: "Password for the user accessing the API. Can be specified with the `UNIFI_PASSWORD` " +
|
||||||
Type: schema.TypeString,
|
"environment variable.",
|
||||||
Required: true,
|
Type: schema.TypeString,
|
||||||
DefaultFunc: schema.EnvDefaultFunc("UNIFI_PASSWORD", ""),
|
Required: true,
|
||||||
},
|
DefaultFunc: schema.EnvDefaultFunc("UNIFI_PASSWORD", ""),
|
||||||
"api_url": {
|
},
|
||||||
Description: "URL of the controller API. Can be specified with the `UNIFI_API` environment variable. " +
|
"api_url": {
|
||||||
"You should **NOT** supply the path (`/api`), the SDK will discover the appropriate paths. This is" +
|
Description: "URL of the controller API. Can be specified with the `UNIFI_API` environment variable. " +
|
||||||
"to support UDM Pro style API paths as well as more standard controller paths.",
|
"You should **NOT** supply the path (`/api`), the SDK will discover the appropriate paths. This is" +
|
||||||
|
"to support UDM Pro style API paths as well as more standard controller paths.",
|
||||||
|
|
||||||
Type: schema.TypeString,
|
Type: schema.TypeString,
|
||||||
Required: true,
|
Required: true,
|
||||||
DefaultFunc: schema.EnvDefaultFunc("UNIFI_API", ""),
|
DefaultFunc: schema.EnvDefaultFunc("UNIFI_API", ""),
|
||||||
|
},
|
||||||
|
"site": {
|
||||||
|
Description: "The site in the Unifi controller this provider will manage. Can be specified with " +
|
||||||
|
"the `UNIFI_SITE` environment variable. Default: `default`",
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Required: true,
|
||||||
|
DefaultFunc: schema.EnvDefaultFunc("UNIFI_SITE", "default"),
|
||||||
|
},
|
||||||
|
"allow_insecure": {
|
||||||
|
Description: "Skip verification of TLS certificates of API requests. You may need to set this to `true` " +
|
||||||
|
"if you are using your local API without setting up a signed certificate. Can be specified with the " +
|
||||||
|
"`UNIFI_INSECURE` environment variable.",
|
||||||
|
Type: schema.TypeBool,
|
||||||
|
Optional: true,
|
||||||
|
DefaultFunc: schema.EnvDefaultFunc("UNIFI_INSECURE", false),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
"site": {
|
DataSourcesMap: map[string]*schema.Resource{
|
||||||
Description: "The site in the Unifi controller this provider will manage. Can be specified with " +
|
"unifi_radius_profile": dataRADIUSProfile(),
|
||||||
"the `UNIFI_SITE` environment variable. Default: `default`",
|
"unifi_user_group": dataUserGroup(),
|
||||||
Type: schema.TypeString,
|
"unifi_wlan_group": dataWLANGroup(),
|
||||||
Required: true,
|
|
||||||
DefaultFunc: schema.EnvDefaultFunc("UNIFI_SITE", "default"),
|
|
||||||
},
|
},
|
||||||
"allow_insecure": {
|
ResourcesMap: map[string]*schema.Resource{
|
||||||
Description: "Skip verification of TLS certificates of API requests. You may need to set this to `true` " +
|
"unifi_firewall_group": resourceFirewallGroup(),
|
||||||
"if you are using your local API without setting up a signed certificate. Can be specified with the " +
|
"unifi_firewall_rule": resourceFirewallRule(),
|
||||||
"`UNIFI_INSECURE` environment variable.",
|
"unifi_network": resourceNetwork(),
|
||||||
Type: schema.TypeBool,
|
"unifi_port_forward": resourcePortForward(),
|
||||||
Optional: true,
|
"unifi_user_group": resourceUserGroup(),
|
||||||
DefaultFunc: schema.EnvDefaultFunc("UNIFI_INSECURE", false),
|
"unifi_user": resourceUser(),
|
||||||
|
"unifi_wlan": resourceWLAN(),
|
||||||
},
|
},
|
||||||
},
|
}
|
||||||
DataSourcesMap: map[string]*schema.Resource{
|
p.ConfigureFunc = configure(version, p)
|
||||||
"unifi_radius_profile": dataRADIUSProfile(),
|
return p
|
||||||
"unifi_user_group": dataUserGroup(),
|
|
||||||
"unifi_wlan_group": dataWLANGroup(),
|
|
||||||
},
|
|
||||||
ResourcesMap: map[string]*schema.Resource{
|
|
||||||
"unifi_firewall_group": resourceFirewallGroup(),
|
|
||||||
"unifi_firewall_rule": resourceFirewallRule(),
|
|
||||||
"unifi_network": resourceNetwork(),
|
|
||||||
"unifi_port_forward": resourcePortForward(),
|
|
||||||
"unifi_user_group": resourceUserGroup(),
|
|
||||||
"unifi_user": resourceUser(),
|
|
||||||
"unifi_wlan": resourceWLAN(),
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
p.ConfigureFunc = configure(p)
|
|
||||||
return p
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func configure(p *schema.Provider) schema.ConfigureFunc {
|
func configure(version string, p *schema.Provider) schema.ConfigureFunc {
|
||||||
return func(d *schema.ResourceData) (interface{}, error) {
|
return func(d *schema.ResourceData) (interface{}, error) {
|
||||||
user := d.Get("username").(string)
|
user := d.Get("username").(string)
|
||||||
pass := d.Get("password").(string)
|
pass := d.Get("password").(string)
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import (
|
|||||||
|
|
||||||
var providerFactories = map[string]func() (*schema.Provider, error){
|
var providerFactories = map[string]func() (*schema.Provider, error){
|
||||||
"unifi": func() (*schema.Provider, error) {
|
"unifi": func() (*schema.Provider, error) {
|
||||||
return New(), nil
|
return New("acctest")(), nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
33
main.go
33
main.go
@@ -1,13 +1,40 @@
|
|||||||
package main // import "github.com/paultyng/terraform-provider-unifi"
|
package main // import "github.com/paultyng/terraform-provider-unifi"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
|
"flag"
|
||||||
|
"log"
|
||||||
|
|
||||||
"github.com/hashicorp/terraform-plugin-sdk/v2/plugin"
|
"github.com/hashicorp/terraform-plugin-sdk/v2/plugin"
|
||||||
|
|
||||||
"github.com/paultyng/terraform-provider-unifi/internal/provider"
|
"github.com/paultyng/terraform-provider-unifi/internal/provider"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
// these will be set by the goreleaser configuration
|
||||||
|
// to appropriate values for the compiled binary
|
||||||
|
version string = "dev"
|
||||||
|
|
||||||
|
// goreleaser can also pass the specific commit if you want
|
||||||
|
// commit string = ""
|
||||||
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
plugin.Serve(&plugin.ServeOpts{
|
var debugMode bool
|
||||||
ProviderFunc: provider.New,
|
|
||||||
})
|
flag.BoolVar(&debugMode, "debug", false, "set to true to run the provider with support for debuggers like delve")
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
opts := &plugin.ServeOpts{ProviderFunc: provider.New(version)}
|
||||||
|
|
||||||
|
if debugMode {
|
||||||
|
// TODO: update this string with the full name of your provider as used in your configs
|
||||||
|
err := plugin.Debug(context.Background(), "registry.terraform.io/hashicorp/scaffolding", opts)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err.Error())
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
plugin.Serve(opts)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user