func enableASGMetricsCollection(d *schema.ResourceData, conn *autoscaling.AutoScaling) error { props := &autoscaling.EnableMetricsCollectionInput{ AutoScalingGroupName: aws.String(d.Id()), Granularity: aws.String(d.Get("metrics_granularity").(string)), Metrics: expandStringList(d.Get("enabled_metrics").(*schema.Set).List()), } log.Printf("[INFO] Enabling metrics collection for the ASG: %s", d.Id()) _, metricsErr := conn.EnableMetricsCollection(props) if metricsErr != nil { return metricsErr } return nil }
func updateASGMetricsCollection(d *schema.ResourceData, conn *autoscaling.AutoScaling) error { o, n := d.GetChange("enabled_metrics") if o == nil { o = new(schema.Set) } if n == nil { n = new(schema.Set) } os := o.(*schema.Set) ns := n.(*schema.Set) disableMetrics := os.Difference(ns) if disableMetrics.Len() != 0 { props := &autoscaling.DisableMetricsCollectionInput{ AutoScalingGroupName: aws.String(d.Id()), Metrics: expandStringList(disableMetrics.List()), } _, err := conn.DisableMetricsCollection(props) if err != nil { return fmt.Errorf("Failure to Disable metrics collection types for ASG %s: %s", d.Id(), err) } } enabledMetrics := ns.Difference(os) if enabledMetrics.Len() != 0 { props := &autoscaling.EnableMetricsCollectionInput{ AutoScalingGroupName: aws.String(d.Id()), Metrics: expandStringList(enabledMetrics.List()), Granularity: aws.String(d.Get("metrics_granularity").(string)), } _, err := conn.EnableMetricsCollection(props) if err != nil { return fmt.Errorf("Failure to Enable metrics collection types for ASG %s: %s", d.Id(), err) } } return nil }