Merge pull request #3445 from svanharmelen/f-cloudstack-style

provider/cloudstack: small refactor for better readability and style
This commit is contained in:
Sander van Harmelen 2015-10-08 10:35:11 +02:00
commit 1ed316c2d3
2 changed files with 19 additions and 10 deletions

View File

@ -52,16 +52,16 @@ func resourceCloudStackVPC() *schema.Resource {
ForceNew: true, ForceNew: true,
}, },
"source_nat_ip": &schema.Schema{
Type: schema.TypeString,
Computed: true,
},
"zone": &schema.Schema{ "zone": &schema.Schema{
Type: schema.TypeString, Type: schema.TypeString,
Required: true, Required: true,
ForceNew: true, ForceNew: true,
}, },
"source_nat_ip": &schema.Schema{
Type: schema.TypeString,
Computed: true,
},
}, },
} }
} }
@ -157,19 +157,27 @@ func resourceCloudStackVPCRead(d *schema.ResourceData, meta interface{}) error {
setValueOrID(d, "project", v.Project, v.Projectid) setValueOrID(d, "project", v.Project, v.Projectid)
setValueOrID(d, "zone", v.Zonename, v.Zoneid) setValueOrID(d, "zone", v.Zonename, v.Zoneid)
// Grab the source NAT IP that CloudStack assigned. // Create a new parameter struct
p := cs.Address.NewListPublicIpAddressesParams() p := cs.Address.NewListPublicIpAddressesParams()
p.SetVpcid(d.Id()) p.SetVpcid(d.Id())
p.SetIssourcenat(true) p.SetIssourcenat(true)
if _, ok := d.GetOk("project"); ok { if _, ok := d.GetOk("project"); ok {
p.SetProjectid(v.Projectid) p.SetProjectid(v.Projectid)
} }
l, e := cs.Address.ListPublicIpAddresses(p) // Get the source NAT IP assigned to the VPC
if (e == nil) && (l.Count == 1) { l, err := cs.Address.ListPublicIpAddresses(p)
d.Set("source_nat_ip", l.PublicIpAddresses[0].Ipaddress) if err != nil {
return err
} }
if l.Count != 1 {
return fmt.Errorf("Unexpected number (%d) of source NAT IPs returned", l.Count)
}
d.Set("source_nat_ip", l.PublicIpAddresses[0].Ipaddress)
return nil return nil
} }

View File

@ -39,7 +39,7 @@ The following arguments are supported:
* `project` - (Optional) The name or ID of the project to deploy this * `project` - (Optional) The name or ID of the project to deploy this
instance to. Changing this forces a new resource to be created. instance to. Changing this forces a new resource to be created.
* `zone` - (Required) The name or ID of the zone where this disk volume will be * `zone` - (Required) The name or ID of the zone where this disk volume will be
available. Changing this forces a new resource to be created. available. Changing this forces a new resource to be created.
@ -49,3 +49,4 @@ The following attributes are exported:
* `id` - The ID of the VPC. * `id` - The ID of the VPC.
* `display_text` - The display text of the VPC. * `display_text` - The display text of the VPC.
* `source_nat_ip` - The source NAT IP assigned to the VPC.