~xenrox/terraform-provider-mailman

902e2483abb1f551f4b294b778e8d47824ba663e — Thorben Günther 2 years ago b1902bd
provider: Add options
1 files changed, 48 insertions(+), 3 deletions(-)

M provider/provider.go
M provider/provider.go => provider/provider.go +48 -3
@@ 1,10 1,55 @@
package provider

import "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
import (
	"context"

	"git.xenrox.net/~xenrox/terraform-provider-mailman/mailman"
	"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
	"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)

func MailmanProvider() *schema.Provider {
	return &schema.Provider{
		ResourcesMap:   map[string]*schema.Resource{},
		DataSourcesMap: map[string]*schema.Resource{},
		Schema: map[string]*schema.Schema{
			"username": {
				Type:        schema.TypeString,
				Required:    true,
				Sensitive:   true,
				DefaultFunc: schema.EnvDefaultFunc("MAILMAN_USER", nil),
			},
			"password": {
				Type:        schema.TypeString,
				Required:    true,
				Sensitive:   true,
				DefaultFunc: schema.EnvDefaultFunc("MAILMAN_PASSWORD", nil),
			},
			"url": {
				Type:        schema.TypeString,
				Required:    true,
				DefaultFunc: schema.EnvDefaultFunc("MAILMAN_URL", nil),
			},
		},
		ResourcesMap:         map[string]*schema.Resource{},
		DataSourcesMap:       map[string]*schema.Resource{},
		ConfigureContextFunc: providerConfigure,
	}
}

func providerConfigure(ctx context.Context, data *schema.ResourceData) (interface{}, diag.Diagnostics) {
	username := data.Get("username").(string)
	password := data.Get("password").(string)
	url := data.Get("url").(string)

	var diags diag.Diagnostics

	mailmanClient, err := mailman.NewMailmanCLient(url, username, password)
	if err != nil {
		diags = append(diags, diag.Diagnostic{
			Severity: diag.Error,
			Summary:  "error initializing mailman provider",
			Detail:   err.Error(),
		})
	}

	return mailmanClient, diags
}