github.com/IBM-Cloud/terraform@v0.6.4-0.20170726051544-8872b87621df/builtin/providers/aws/resource_aws_devicefarm_project.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "log" 6 7 "github.com/aws/aws-sdk-go/aws" 8 "github.com/aws/aws-sdk-go/service/devicefarm" 9 "github.com/hashicorp/terraform/helper/schema" 10 ) 11 12 func resourceAwsDevicefarmProject() *schema.Resource { 13 return &schema.Resource{ 14 Create: resourceAwsDevicefarmProjectCreate, 15 Read: resourceAwsDevicefarmProjectRead, 16 Update: resourceAwsDevicefarmProjectUpdate, 17 Delete: resourceAwsDevicefarmProjectDelete, 18 19 Schema: map[string]*schema.Schema{ 20 "arn": &schema.Schema{ 21 Type: schema.TypeString, 22 Computed: true, 23 }, 24 25 "name": &schema.Schema{ 26 Type: schema.TypeString, 27 Required: true, 28 }, 29 }, 30 } 31 } 32 33 func resourceAwsDevicefarmProjectCreate(d *schema.ResourceData, meta interface{}) error { 34 conn := meta.(*AWSClient).devicefarmconn 35 region := meta.(*AWSClient).region 36 37 // We need to ensure that DeviceFarm is only being run against us-west-2 38 // As this is the only place that AWS currently supports it 39 if region != "us-west-2" { 40 return fmt.Errorf("DeviceFarm can only be used with us-west-2. You are trying to use it on %s", region) 41 } 42 43 input := &devicefarm.CreateProjectInput{ 44 Name: aws.String(d.Get("name").(string)), 45 } 46 47 log.Printf("[DEBUG] Creating DeviceFarm Project: %s", d.Get("name").(string)) 48 out, err := conn.CreateProject(input) 49 if err != nil { 50 return fmt.Errorf("Error creating DeviceFarm Project: %s", err) 51 } 52 53 log.Printf("[DEBUG] Successsfully Created DeviceFarm Project: %s", *out.Project.Arn) 54 d.SetId(*out.Project.Arn) 55 56 return resourceAwsDevicefarmProjectRead(d, meta) 57 } 58 59 func resourceAwsDevicefarmProjectRead(d *schema.ResourceData, meta interface{}) error { 60 conn := meta.(*AWSClient).devicefarmconn 61 62 input := &devicefarm.GetProjectInput{ 63 Arn: aws.String(d.Id()), 64 } 65 66 log.Printf("[DEBUG] Reading DeviceFarm Project: %s", d.Id()) 67 out, err := conn.GetProject(input) 68 if err != nil { 69 return fmt.Errorf("Error reading DeviceFarm Project: %s", err) 70 } 71 72 d.Set("name", out.Project.Name) 73 d.Set("arn", out.Project.Arn) 74 75 return nil 76 } 77 78 func resourceAwsDevicefarmProjectUpdate(d *schema.ResourceData, meta interface{}) error { 79 conn := meta.(*AWSClient).devicefarmconn 80 81 if d.HasChange("name") { 82 input := &devicefarm.UpdateProjectInput{ 83 Arn: aws.String(d.Id()), 84 Name: aws.String(d.Get("name").(string)), 85 } 86 87 log.Printf("[DEBUG] Updating DeviceFarm Project: %s", d.Id()) 88 _, err := conn.UpdateProject(input) 89 if err != nil { 90 return fmt.Errorf("Error Updating DeviceFarm Project: %s", err) 91 } 92 93 } 94 95 return resourceAwsDevicefarmProjectRead(d, meta) 96 } 97 98 func resourceAwsDevicefarmProjectDelete(d *schema.ResourceData, meta interface{}) error { 99 conn := meta.(*AWSClient).devicefarmconn 100 101 input := &devicefarm.DeleteProjectInput{ 102 Arn: aws.String(d.Id()), 103 } 104 105 log.Printf("[DEBUG] Deleting DeviceFarm Project: %s", d.Id()) 106 _, err := conn.DeleteProject(input) 107 if err != nil { 108 return fmt.Errorf("Error deleting DeviceFarm Project: %s", err) 109 } 110 111 return nil 112 }