github.com/jrperritt/terraform@v0.1.1-0.20170525065507-96f391dafc38/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  }