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 }