From 228da7cf270263bae4969f7b071d26c099659826 Mon Sep 17 00:00:00 2001 From: Hany Fahim Date: Wed, 19 Aug 2015 17:56:57 -0400 Subject: [PATCH] Add project parameter to VPC and network Cloudstack resources --- .../cloudstack/resource_cloudstack_network.go | 18 ++++++++++++++++++ .../cloudstack/resource_cloudstack_vpc.go | 17 +++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/builtin/providers/cloudstack/resource_cloudstack_network.go b/builtin/providers/cloudstack/resource_cloudstack_network.go index a23547896..eebac4d73 100644 --- a/builtin/providers/cloudstack/resource_cloudstack_network.go +++ b/builtin/providers/cloudstack/resource_cloudstack_network.go @@ -57,6 +57,12 @@ func resourceCloudStackNetwork() *schema.Resource { Required: true, ForceNew: true, }, + + "project": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, }, } } @@ -87,6 +93,17 @@ func resourceCloudStackNetworkCreate(d *schema.ResourceData, meta interface{}) e // Create a new parameter struct p := cs.Network.NewCreateNetworkParams(displaytext.(string), name, networkofferingid, zoneid) + // If there is a project supplied, we retreive and set the project id + if project, ok := d.GetOk("project"); ok { + // Retrieve the project UUID + projectid, e := retrieveUUID(cs, "project", project.(string)) + if e != nil { + return e.Error() + } + // Set the default project ID + p.SetProjectid(projectid) + } + // Get the network details from the CIDR m, err := parseCIDR(d.Get("cidr").(string)) if err != nil { @@ -152,6 +169,7 @@ func resourceCloudStackNetworkRead(d *schema.ResourceData, meta interface{}) err setValueOrUUID(d, "network_offering", n.Networkofferingname, n.Networkofferingid) setValueOrUUID(d, "zone", n.Zonename, n.Zoneid) + setValueOrUUID(d, "project", n.Project, n.Projectid) return nil } diff --git a/builtin/providers/cloudstack/resource_cloudstack_vpc.go b/builtin/providers/cloudstack/resource_cloudstack_vpc.go index cb829495b..8926b6e7f 100644 --- a/builtin/providers/cloudstack/resource_cloudstack_vpc.go +++ b/builtin/providers/cloudstack/resource_cloudstack_vpc.go @@ -45,6 +45,11 @@ func resourceCloudStackVPC() *schema.Resource { Required: true, ForceNew: true, }, + "project": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, }, } } @@ -75,6 +80,17 @@ func resourceCloudStackVPCCreate(d *schema.ResourceData, meta interface{}) error // Create a new parameter struct p := cs.VPC.NewCreateVPCParams(d.Get("cidr").(string), displaytext.(string), name, vpcofferingid, zoneid) + // If there is a project supplied, we retreive and set the project id + if project, ok := d.GetOk("project"); ok { + // Retrieve the project UUID + projectid, e := retrieveUUID(cs, "project", project.(string)) + if e != nil { + return e.Error() + } + // Set the default project ID + p.SetProjectid(projectid) + } + // Create the new VPC r, err := cs.VPC.CreateVPC(p) if err != nil { @@ -115,6 +131,7 @@ func resourceCloudStackVPCRead(d *schema.ResourceData, meta interface{}) error { } setValueOrUUID(d, "vpc_offering", o.Name, v.Vpcofferingid) + setValueOrUUID(d, "project", v.Project, v.Projectid) return nil }