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 }