~xenrox/terraform-provider-mailman

7cc4d00ab0ac6c885daa660f35938106788d7280 — Thorben Günther 2 years ago ac4f469
Change required domain field, switch to function to set data
3 files changed, 20 insertions(+), 13 deletions(-)

M mailman/domain.go
M provider/data_source_mailman_domain.go
A provider/resource_mailman_domain.go
M mailman/domain.go => mailman/domain.go +2 -2
@@ 6,10 6,10 @@ type Domain struct {
	MailHost    string `json:"mail_host"`
}

func (client *Client) GetDomain(name string) (*Domain, error) {
func (client *Client) GetDomain(mailHost string) (*Domain, error) {
	var domain *Domain

	path := "/domains/" + name
	path := "/domains/" + mailHost
	err := client.get(path, &domain)
	if err != nil {
		return nil, err

M provider/data_source_mailman_domain.go => provider/data_source_mailman_domain.go +4 -11
@@ 9,7 9,7 @@ func dataSourceMailmanDomain() *schema.Resource {
	return &schema.Resource{
		Read: dataSourceMailmanDomainRead,
		Schema: map[string]*schema.Schema{
			"name": {
			"mail_host": {
				Type:     schema.TypeString,
				Required: true,
			},


@@ 21,10 21,6 @@ func dataSourceMailmanDomain() *schema.Resource {
				Type:     schema.TypeString,
				Computed: true,
			},
			"mail_host": {
				Type:     schema.TypeString,
				Computed: true,
			},
		},
	}
}


@@ 32,17 28,14 @@ func dataSourceMailmanDomain() *schema.Resource {
func dataSourceMailmanDomainRead(data *schema.ResourceData, meta interface{}) error {
	client := meta.(*mailman.Client)

	name := data.Get("name").(string)
	mailHost := data.Get("mail_host").(string)

	domain, err := client.GetDomain(name)
	domain, err := client.GetDomain(mailHost)
	if err != nil {
		return err
	}

	data.SetId(name)
	data.Set("alias_domain", domain.AliasDomain)
	data.Set("description", domain.Description)
	data.Set("mail_host", domain.AliasDomain)
	setDomainData(data, domain)

	return nil
}

A provider/resource_mailman_domain.go => provider/resource_mailman_domain.go +14 -0
@@ 0,0 1,14 @@
package provider

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

func setDomainData(data *schema.ResourceData, domain *mailman.Domain) {
	data.SetId(domain.MailHost)

	data.Set("alias_domain", domain.AliasDomain)
	data.Set("description", domain.Description)
	data.Set("mail_host", domain.MailHost)
}