github.com/bendemaree/terraform@v0.5.4-0.20150613200311-f50d97d6eee6/builtin/providers/aws/resource_aws_iam_group.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 6 "github.com/aws/aws-sdk-go/aws" 7 "github.com/aws/aws-sdk-go/aws/awserr" 8 "github.com/aws/aws-sdk-go/service/iam" 9 10 "github.com/hashicorp/terraform/helper/schema" 11 ) 12 13 func resourceAwsIamGroup() *schema.Resource { 14 return &schema.Resource{ 15 Create: resourceAwsIamGroupCreate, 16 Read: resourceAwsIamGroupRead, 17 // TODO 18 //Update: resourceAwsIamGroupUpdate, 19 Delete: resourceAwsIamGroupDelete, 20 21 Schema: map[string]*schema.Schema{ 22 "arn": &schema.Schema{ 23 Type: schema.TypeString, 24 Computed: true, 25 }, 26 "unique_id": &schema.Schema{ 27 Type: schema.TypeString, 28 Computed: true, 29 }, 30 "name": &schema.Schema{ 31 Type: schema.TypeString, 32 Required: true, 33 ForceNew: true, 34 }, 35 "path": &schema.Schema{ 36 Type: schema.TypeString, 37 Optional: true, 38 Default: "/", 39 ForceNew: true, 40 }, 41 }, 42 } 43 } 44 45 func resourceAwsIamGroupCreate(d *schema.ResourceData, meta interface{}) error { 46 iamconn := meta.(*AWSClient).iamconn 47 name := d.Get("name").(string) 48 49 request := &iam.CreateGroupInput{ 50 Path: aws.String(d.Get("path").(string)), 51 GroupName: aws.String(name), 52 } 53 54 createResp, err := iamconn.CreateGroup(request) 55 if err != nil { 56 return fmt.Errorf("Error creating IAM Group %s: %s", name, err) 57 } 58 return resourceAwsIamGroupReadResult(d, createResp.Group) 59 } 60 61 func resourceAwsIamGroupRead(d *schema.ResourceData, meta interface{}) error { 62 iamconn := meta.(*AWSClient).iamconn 63 64 request := &iam.GetGroupInput{ 65 GroupName: aws.String(d.Id()), 66 } 67 68 getResp, err := iamconn.GetGroup(request) 69 if err != nil { 70 if iamerr, ok := err.(awserr.Error); ok && iamerr.Code() == "NoSuchEntity" { 71 d.SetId("") 72 return nil 73 } 74 return fmt.Errorf("Error reading IAM Group %s: %s", d.Id(), err) 75 } 76 return resourceAwsIamGroupReadResult(d, getResp.Group) 77 } 78 79 func resourceAwsIamGroupReadResult(d *schema.ResourceData, group *iam.Group) error { 80 d.SetId(*group.GroupName) 81 if err := d.Set("name", group.GroupName); err != nil { 82 return err 83 } 84 if err := d.Set("arn", group.ARN); err != nil { 85 return err 86 } 87 if err := d.Set("path", group.Path); err != nil { 88 return err 89 } 90 if err := d.Set("unique_id", group.GroupID); err != nil { 91 return err 92 } 93 return nil 94 } 95 96 func resourceAwsIamGroupDelete(d *schema.ResourceData, meta interface{}) error { 97 iamconn := meta.(*AWSClient).iamconn 98 99 request := &iam.DeleteGroupInput{ 100 GroupName: aws.String(d.Id()), 101 } 102 103 if _, err := iamconn.DeleteGroup(request); err != nil { 104 return fmt.Errorf("Error deleting IAM Group %s: %s", d.Id(), err) 105 } 106 return nil 107 }