github.com/sarguru/terraform@v0.6.17-0.20160525232901-8fcdfd7e3dc9/builtin/providers/nsone/resource_team.go (about)

     1  package nsone
     2  
     3  import (
     4  	"github.com/bobtfish/go-nsone-api"
     5  	"github.com/hashicorp/terraform/helper/schema"
     6  )
     7  
     8  func teamResource() *schema.Resource {
     9  	s := map[string]*schema.Schema{
    10  		"id": &schema.Schema{
    11  			Type:     schema.TypeString,
    12  			Computed: true,
    13  		},
    14  		"name": &schema.Schema{
    15  			Type:     schema.TypeString,
    16  			Required: true,
    17  		},
    18  	}
    19  	s = addPermsSchema(s)
    20  	return &schema.Resource{
    21  		Schema: s,
    22  		Create: TeamCreate,
    23  		Read:   TeamRead,
    24  		Update: TeamUpdate,
    25  		Delete: TeamDelete,
    26  	}
    27  }
    28  
    29  func teamToResourceData(d *schema.ResourceData, t *nsone.Team) error {
    30  	d.SetId(t.Id)
    31  	d.Set("name", t.Name)
    32  	permissionsToResourceData(d, t.Permissions)
    33  	return nil
    34  }
    35  
    36  func resourceDataToTeam(u *nsone.Team, d *schema.ResourceData) error {
    37  	u.Id = d.Id()
    38  	u.Name = d.Get("name").(string)
    39  	u.Permissions = resourceDataToPermissions(d)
    40  	return nil
    41  }
    42  
    43  // TeamCreate creates the given team in ns1
    44  func TeamCreate(d *schema.ResourceData, meta interface{}) error {
    45  	client := meta.(*nsone.APIClient)
    46  	mj := nsone.Team{}
    47  	if err := resourceDataToTeam(&mj, d); err != nil {
    48  		return err
    49  	}
    50  	if err := client.CreateTeam(&mj); err != nil {
    51  		return err
    52  	}
    53  	return teamToResourceData(d, &mj)
    54  }
    55  
    56  // TeamRead reads the team data from ns1
    57  func TeamRead(d *schema.ResourceData, meta interface{}) error {
    58  	client := meta.(*nsone.APIClient)
    59  	mj, err := client.GetTeam(d.Id())
    60  	if err != nil {
    61  		return err
    62  	}
    63  	teamToResourceData(d, &mj)
    64  	return nil
    65  }
    66  
    67  // TeamDelete deletes the given team from ns1
    68  func TeamDelete(d *schema.ResourceData, meta interface{}) error {
    69  	client := meta.(*nsone.APIClient)
    70  	err := client.DeleteTeam(d.Id())
    71  	d.SetId("")
    72  	return err
    73  }
    74  
    75  // TeamUpdate updates the given team in ns1
    76  func TeamUpdate(d *schema.ResourceData, meta interface{}) error {
    77  	client := meta.(*nsone.APIClient)
    78  	mj := nsone.Team{
    79  		Id: d.Id(),
    80  	}
    81  	if err := resourceDataToTeam(&mj, d); err != nil {
    82  		return err
    83  	}
    84  	if err := client.UpdateTeam(&mj); err != nil {
    85  		return err
    86  	}
    87  	teamToResourceData(d, &mj)
    88  	return nil
    89  }