provider/openstack allow specifying tenant_id on a floatingip resource
Allow a cloud admin to target a specific tenant in which to allocate a floating IP. This is useful when the cloud admin does not want to delegate network privileges to the tenants or various Q&A scenarios.
This commit is contained in:
parent
a764238d7d
commit
d2b33d51b8
|
@ -43,6 +43,12 @@ func resourceNetworkingFloatingIPV2() *schema.Resource {
|
||||||
Optional: true,
|
Optional: true,
|
||||||
Computed: true,
|
Computed: true,
|
||||||
},
|
},
|
||||||
|
"tenant_id": &schema.Schema{
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Optional: true,
|
||||||
|
Computed: true,
|
||||||
|
ForceNew: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,6 +70,7 @@ func resourceNetworkFloatingIPV2Create(d *schema.ResourceData, meta interface{})
|
||||||
createOpts := floatingips.CreateOpts{
|
createOpts := floatingips.CreateOpts{
|
||||||
FloatingNetworkID: poolID,
|
FloatingNetworkID: poolID,
|
||||||
PortID: d.Get("port_id").(string),
|
PortID: d.Get("port_id").(string),
|
||||||
|
TenantID: d.Get("tenant_id").(string),
|
||||||
}
|
}
|
||||||
log.Printf("[DEBUG] Create Options: %#v", createOpts)
|
log.Printf("[DEBUG] Create Options: %#v", createOpts)
|
||||||
floatingIP, err := floatingips.Create(networkingClient, createOpts).Extract()
|
floatingIP, err := floatingips.Create(networkingClient, createOpts).Extract()
|
||||||
|
@ -107,6 +114,7 @@ func resourceNetworkFloatingIPV2Read(d *schema.ResourceData, meta interface{}) e
|
||||||
return fmt.Errorf("Error retrieving floating IP pool name: %s", err)
|
return fmt.Errorf("Error retrieving floating IP pool name: %s", err)
|
||||||
}
|
}
|
||||||
d.Set("pool", poolName)
|
d.Set("pool", poolName)
|
||||||
|
d.Set("tenant_id", floatingIP.TenantID)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,8 +35,13 @@ The following arguments are supported:
|
||||||
* `pool` - (Required) The name of the pool from which to obtain the floating
|
* `pool` - (Required) The name of the pool from which to obtain the floating
|
||||||
IP. Changing this creates a new floating IP.
|
IP. Changing this creates a new floating IP.
|
||||||
|
|
||||||
* `port_id` - ID of an existing port with at least one IP address to associate with
|
* `port_id` - (Optional) ID of an existing port with at least one IP address to
|
||||||
this floating IP.
|
associate with this floating IP.
|
||||||
|
|
||||||
|
* `tenant_id` - (Optional) The target tenant ID in which to allocate the floating
|
||||||
|
IP, if you specify this together with a port_id, make sure the target port
|
||||||
|
belongs to the same tenant. Changing this creates a new floating IP (which
|
||||||
|
may or may not have a different address)
|
||||||
|
|
||||||
## Attributes Reference
|
## Attributes Reference
|
||||||
|
|
||||||
|
@ -46,3 +51,4 @@ The following attributes are exported:
|
||||||
* `pool` - See Argument Reference above.
|
* `pool` - See Argument Reference above.
|
||||||
* `address` - The actual floating IP address itself.
|
* `address` - The actual floating IP address itself.
|
||||||
* `port_id` - ID of associated port.
|
* `port_id` - ID of associated port.
|
||||||
|
* `tenant_id` - the ID of the tenant in which to create the floating IP.
|
||||||
|
|
Loading…
Reference in New Issue