func resource_aws_autoscaling_group_create( s *terraform.ResourceState, d *terraform.ResourceDiff, meta interface{}) (*terraform.ResourceState, error) { p := meta.(*ResourceProvider) autoscalingconn := p.autoscalingconn // Merge the diff into the state so that we have all the attributes // properly. rs := s.MergeDiff(d) var err error autoScalingGroupOpts := autoscaling.CreateAutoScalingGroup{} if rs.Attributes["min_size"] != "" { autoScalingGroupOpts.MinSize, err = strconv.Atoi(rs.Attributes["min_size"]) autoScalingGroupOpts.SetMinSize = true } if rs.Attributes["max_size"] != "" { autoScalingGroupOpts.MaxSize, err = strconv.Atoi(rs.Attributes["max_size"]) autoScalingGroupOpts.SetMaxSize = true } if rs.Attributes["default_cooldown"] != "" { autoScalingGroupOpts.DefaultCooldown, err = strconv.Atoi(rs.Attributes["default_cooldown"]) autoScalingGroupOpts.SetDefaultCooldown = true } if rs.Attributes["desired_capacity"] != "" { autoScalingGroupOpts.DesiredCapacity, err = strconv.Atoi(rs.Attributes["desired_capacity"]) autoScalingGroupOpts.SetDesiredCapacity = true } if rs.Attributes["health_check_grace_period"] != "" { autoScalingGroupOpts.HealthCheckGracePeriod, err = strconv.Atoi(rs.Attributes["health_check_grace_period"]) autoScalingGroupOpts.SetHealthCheckGracePeriod = true } if err != nil { return nil, fmt.Errorf("Error parsing configuration: %s", err) } if _, ok := rs.Attributes["availability_zones.#"]; ok { autoScalingGroupOpts.AvailZone = expandStringList(flatmap.Expand( rs.Attributes, "availability_zones").([]interface{})) } if _, ok := rs.Attributes["load_balancers.#"]; ok { autoScalingGroupOpts.LoadBalancerNames = expandStringList(flatmap.Expand( rs.Attributes, "load_balancers").([]interface{})) } if _, ok := rs.Attributes["vpc_identifier.#"]; ok { autoScalingGroupOpts.VPCZoneIdentifier = expandStringList(flatmap.Expand( rs.Attributes, "vpc_identifier").([]interface{})) } autoScalingGroupOpts.Name = rs.Attributes["name"] autoScalingGroupOpts.HealthCheckType = rs.Attributes["health_check_type"] autoScalingGroupOpts.LaunchConfigurationName = rs.Attributes["launch_configuration"] log.Printf("[DEBUG] AutoScaling Group create configuration: %#v", autoScalingGroupOpts) _, err = autoscalingconn.CreateAutoScalingGroup(&autoScalingGroupOpts) if err != nil { return nil, fmt.Errorf("Error creating AutoScaling Group: %s", err) } rs.ID = rs.Attributes["name"] rs.Dependencies = []terraform.ResourceDependency{ terraform.ResourceDependency{ID: rs.Attributes["launch_configuration"]}, } log.Printf("[INFO] AutoScaling Group ID: %s", rs.ID) g, err := resource_aws_autoscaling_group_retrieve(rs.ID, autoscalingconn) if err != nil { return rs, err } return resource_aws_autoscaling_group_update_state(rs, g) }
func resourceAwsAutoscalingGroupCreate(d *schema.ResourceData, meta interface{}) error { autoscalingconn := meta.(*AWSClient).autoscalingconn var autoScalingGroupOpts autoscaling.CreateAutoScalingGroup autoScalingGroupOpts.Name = d.Get("name").(string) autoScalingGroupOpts.HealthCheckType = d.Get("health_check_type").(string) autoScalingGroupOpts.LaunchConfigurationName = d.Get("launch_configuration").(string) autoScalingGroupOpts.MinSize = d.Get("min_size").(int) autoScalingGroupOpts.MaxSize = d.Get("max_size").(int) autoScalingGroupOpts.SetMinSize = true autoScalingGroupOpts.SetMaxSize = true autoScalingGroupOpts.AvailZone = expandStringList( d.Get("availability_zones").(*schema.Set).List()) if v, ok := d.GetOk("default_cooldown"); ok { autoScalingGroupOpts.DefaultCooldown = v.(int) autoScalingGroupOpts.SetDefaultCooldown = true } if v, ok := d.GetOk("desired_capacity"); ok { autoScalingGroupOpts.DesiredCapacity = v.(int) autoScalingGroupOpts.SetDesiredCapacity = true } if v, ok := d.GetOk("health_check_grace_period"); ok { autoScalingGroupOpts.HealthCheckGracePeriod = v.(int) autoScalingGroupOpts.SetHealthCheckGracePeriod = true } if v, ok := d.GetOk("load_balancers"); ok { autoScalingGroupOpts.LoadBalancerNames = expandStringList( v.(*schema.Set).List()) } if v, ok := d.GetOk("vpc_zone_identifier"); ok { autoScalingGroupOpts.VPCZoneIdentifier = expandStringList( v.(*schema.Set).List()) } if v, ok := d.GetOk("termination_policies"); ok { autoScalingGroupOpts.TerminationPolicies = expandStringList( v.(*schema.Set).List()) } log.Printf("[DEBUG] AutoScaling Group create configuration: %#v", autoScalingGroupOpts) _, err := autoscalingconn.CreateAutoScalingGroup(&autoScalingGroupOpts) if err != nil { return fmt.Errorf("Error creating Autoscaling Group: %s", err) } d.SetId(d.Get("name").(string)) log.Printf("[INFO] AutoScaling Group ID: %s", d.Id()) return resourceAwsAutoscalingGroupRead(d, meta) }