providers/aws: fixed tons of aws stuff

This commit is contained in:
Jack Pearkes 2014-07-24 18:50:18 -04:00
parent c8c526d254
commit 298483131b
5 changed files with 47 additions and 13 deletions

View File

@ -29,7 +29,10 @@ func resource_aws_elb_create(
// Expand the "listener" array to goamz compat []elb.Listener // Expand the "listener" array to goamz compat []elb.Listener
v := flatmap.Expand(rs.Attributes, "listener").([]interface{}) v := flatmap.Expand(rs.Attributes, "listener").([]interface{})
listeners := expandListeners(v) listeners, err := expandListeners(v)
if err != nil {
return nil, err
}
v = flatmap.Expand(rs.Attributes, "availability_zones").([]interface{}) v = flatmap.Expand(rs.Attributes, "availability_zones").([]interface{})
zones := expandStringList(v) zones := expandStringList(v)
@ -43,7 +46,7 @@ func resource_aws_elb_create(
log.Printf("[DEBUG] ELB create configuration: %#v", elbOpts) log.Printf("[DEBUG] ELB create configuration: %#v", elbOpts)
_, err := elbconn.CreateLoadBalancer(elbOpts) _, err = elbconn.CreateLoadBalancer(elbOpts)
if err != nil { if err != nil {
return nil, fmt.Errorf("Error creating ELB: %s", err) return nil, fmt.Errorf("Error creating ELB: %s", err)
} }

View File

@ -67,7 +67,10 @@ func resource_aws_security_group_create(
ingressRules := []ec2.IPPerm{} ingressRules := []ec2.IPPerm{}
v, ok := flatmap.Expand(rs.Attributes, "ingress").([]interface{}) v, ok := flatmap.Expand(rs.Attributes, "ingress").([]interface{})
if ok { if ok {
ingressRules = expandIPPerms(v) ingressRules, err = expandIPPerms(v)
if err != nil {
return rs, err
}
} }
if len(ingressRules) > 0 { if len(ingressRules) > 0 {

View File

@ -1,6 +1,7 @@
package aws package aws
import ( import (
"strconv"
"strings" "strings"
"github.com/mitchellh/goamz/autoscaling" "github.com/mitchellh/goamz/autoscaling"
@ -10,7 +11,7 @@ import (
// Takes the result of flatmap.Expand for an array of listeners and // Takes the result of flatmap.Expand for an array of listeners and
// returns ELB API compatible objects // returns ELB API compatible objects
func expandListeners(configured []interface{}) []elb.Listener { func expandListeners(configured []interface{}) ([]elb.Listener, error) {
listeners := make([]elb.Listener, 0, len(configured)) listeners := make([]elb.Listener, 0, len(configured))
// Loop over our configured listeners and create // Loop over our configured listeners and create
@ -18,22 +19,29 @@ func expandListeners(configured []interface{}) []elb.Listener {
for _, listener := range configured { for _, listener := range configured {
newL := listener.(map[string]interface{}) newL := listener.(map[string]interface{})
instancePort, err := strconv.ParseInt(newL["instance_port"].(string), 0, 0)
lbPort, err := strconv.ParseInt(newL["lb_port"].(string), 0, 0)
if err != nil {
return nil, err
}
l := elb.Listener{ l := elb.Listener{
InstancePort: int64(newL["instance_port"].(int)), InstancePort: instancePort,
InstanceProtocol: newL["instance_protocol"].(string), InstanceProtocol: newL["instance_protocol"].(string),
LoadBalancerPort: int64(newL["lb_port"].(int)), LoadBalancerPort: lbPort,
Protocol: newL["lb_protocol"].(string), Protocol: newL["lb_protocol"].(string),
} }
listeners = append(listeners, l) listeners = append(listeners, l)
} }
return listeners return listeners, nil
} }
// Takes the result of flatmap.Expand for an array of ingress/egress // Takes the result of flatmap.Expand for an array of ingress/egress
// security group rules and returns EC2 API compatible objects // security group rules and returns EC2 API compatible objects
func expandIPPerms(configured []interface{}) []ec2.IPPerm { func expandIPPerms(configured []interface{}) ([]ec2.IPPerm, error) {
perms := make([]ec2.IPPerm, 0, len(configured)) perms := make([]ec2.IPPerm, 0, len(configured))
// Loop over our configured permissions and create // Loop over our configured permissions and create
@ -54,11 +62,17 @@ func expandIPPerms(configured []interface{}) []ec2.IPPerm {
} }
} }
fromPort, err := strconv.Atoi(newP["from_port"].(string))
toPort, err := strconv.Atoi(newP["to_port"].(string))
if err != nil {
return nil, err
}
// Create the permission objet // Create the permission objet
p := ec2.IPPerm{ p := ec2.IPPerm{
Protocol: newP["protocol"].(string), Protocol: newP["protocol"].(string),
FromPort: newP["from_port"].(int), FromPort: fromPort,
ToPort: newP["to_port"].(int), ToPort: toPort,
SourceIPs: expandStringList(newP["cidr_blocks"].([]interface{})), SourceIPs: expandStringList(newP["cidr_blocks"].([]interface{})),
SourceGroups: expandedGroups, SourceGroups: expandedGroups,
} }
@ -66,7 +80,7 @@ func expandIPPerms(configured []interface{}) []ec2.IPPerm {
perms = append(perms, p) perms = append(perms, p)
} }
return perms return perms, nil
} }
// Flattens an array of ipPerms into a list of primitives that // Flattens an array of ipPerms into a list of primitives that

View File

@ -33,7 +33,11 @@ func testConf() map[string]string {
func Test_expandIPPerms(t *testing.T) { func Test_expandIPPerms(t *testing.T) {
expanded := flatmap.Expand(testConf(), "ingress").([]interface{}) expanded := flatmap.Expand(testConf(), "ingress").([]interface{})
perms := expandIPPerms(expanded) perms, err := expandIPPerms(expanded)
if err != nil {
t.Fatalf("bad: %#v", err)
}
expected := ec2.IPPerm{ expected := ec2.IPPerm{
Protocol: "icmp", Protocol: "icmp",
FromPort: 1, FromPort: 1,
@ -118,7 +122,11 @@ func Test_flattenIPPerms(t *testing.T) {
func Test_expandListeners(t *testing.T) { func Test_expandListeners(t *testing.T) {
expanded := flatmap.Expand(testConf(), "listener").([]interface{}) expanded := flatmap.Expand(testConf(), "listener").([]interface{})
listeners := expandListeners(expanded) listeners, err := expandListeners(expanded)
if err != nil {
t.Fatalf("bad: %#v", err)
}
expected := elb.Listener{ expected := elb.Listener{
InstancePort: 8000, InstancePort: 8000,
LoadBalancerPort: 80, LoadBalancerPort: 80,

View File

@ -159,6 +159,12 @@ func resource_dnsimple_record_update_state(
s.Attributes["priority"] = rec.StringPrio() s.Attributes["priority"] = rec.StringPrio()
s.Attributes["domain_id"] = rec.StringDomainId() s.Attributes["domain_id"] = rec.StringDomainId()
if rec.Name == "" {
s.Attributes["hostname"] = s.Attributes["domain"]
} else {
s.Attributes["hostname"] = fmt.Sprintf("%s.%s", rec.Name, s.Attributes["domain"])
}
return s, nil return s, nil
} }