github.com/hobbeswalsh/terraform@v0.3.7-0.20150619183303-ad17cf55a0fa/builtin/providers/aws/resource_aws_ecs_cluster.go (about)

     1  package aws
     2  
     3  import (
     4  	"log"
     5  
     6  	"github.com/aws/aws-sdk-go/aws"
     7  	"github.com/aws/aws-sdk-go/service/ecs"
     8  	"github.com/hashicorp/terraform/helper/schema"
     9  )
    10  
    11  func resourceAwsEcsCluster() *schema.Resource {
    12  	return &schema.Resource{
    13  		Create: resourceAwsEcsClusterCreate,
    14  		Read:   resourceAwsEcsClusterRead,
    15  		Delete: resourceAwsEcsClusterDelete,
    16  
    17  		Schema: map[string]*schema.Schema{
    18  			"name": &schema.Schema{
    19  				Type:     schema.TypeString,
    20  				Required: true,
    21  				ForceNew: true,
    22  			},
    23  		},
    24  	}
    25  }
    26  
    27  func resourceAwsEcsClusterCreate(d *schema.ResourceData, meta interface{}) error {
    28  	conn := meta.(*AWSClient).ecsconn
    29  
    30  	clusterName := d.Get("name").(string)
    31  	log.Printf("[DEBUG] Creating ECS cluster %s", clusterName)
    32  
    33  	out, err := conn.CreateCluster(&ecs.CreateClusterInput{
    34  		ClusterName: aws.String(clusterName),
    35  	})
    36  	if err != nil {
    37  		return err
    38  	}
    39  	log.Printf("[DEBUG] ECS cluster %s created", *out.Cluster.ClusterARN)
    40  
    41  	d.SetId(*out.Cluster.ClusterARN)
    42  	d.Set("name", *out.Cluster.ClusterName)
    43  	return nil
    44  }
    45  
    46  func resourceAwsEcsClusterRead(d *schema.ResourceData, meta interface{}) error {
    47  	conn := meta.(*AWSClient).ecsconn
    48  
    49  	clusterName := d.Get("name").(string)
    50  	log.Printf("[DEBUG] Reading ECS cluster %s", clusterName)
    51  	out, err := conn.DescribeClusters(&ecs.DescribeClustersInput{
    52  		Clusters: []*string{aws.String(clusterName)},
    53  	})
    54  	if err != nil {
    55  		return err
    56  	}
    57  	log.Printf("[DEBUG] Received ECS clusters: %#v", out.Clusters)
    58  
    59  	d.SetId(*out.Clusters[0].ClusterARN)
    60  	d.Set("name", *out.Clusters[0].ClusterName)
    61  
    62  	return nil
    63  }
    64  
    65  func resourceAwsEcsClusterDelete(d *schema.ResourceData, meta interface{}) error {
    66  	conn := meta.(*AWSClient).ecsconn
    67  
    68  	log.Printf("[DEBUG] Deleting ECS cluster %s", d.Id())
    69  
    70  	// TODO: Handle ClientException: The Cluster cannot be deleted while Container Instances are active.
    71  	// TODO: Handle ClientException: The Cluster cannot be deleted while Services are active.
    72  
    73  	out, err := conn.DeleteCluster(&ecs.DeleteClusterInput{
    74  		Cluster: aws.String(d.Id()),
    75  	})
    76  
    77  	log.Printf("[DEBUG] ECS cluster %s deleted: %#v", d.Id(), out)
    78  
    79  	return err
    80  }