gophercloud: github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/floatingips Index | Files

package floatingips

import "github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/floatingips"

Index

Package Files

requests.go results.go urls.go

func ExtractFloatingIPs Uses

func ExtractFloatingIPs(page pagination.Page) ([]FloatingIP, error)

ExtractFloatingIPs accepts a Page struct, specifically a FloatingIPPage struct, and extracts the elements into a slice of FloatingIP structs. In other words, a generic collection is mapped into a relevant slice.

func List Uses

func List(c *gophercloud.ServiceClient, opts ListOpts) pagination.Pager

List returns a Pager which allows you to iterate over a collection of floating IP resources. It accepts a ListOpts struct, which allows you to filter and sort the returned collection for greater efficiency.

type CreateOpts Uses

type CreateOpts struct {
    FloatingNetworkID string
    FloatingIP        string
    PortID            string
    FixedIP           string
    TenantID          string
}

CreateOpts contains all the values needed to create a new floating IP resource. The only required fields are FloatingNetworkID and PortID which refer to the external network and internal port respectively.

type CreateResult Uses

type CreateResult struct {
    // contains filtered or unexported fields
}

CreateResult represents the result of a create operation.

func Create Uses

func Create(c *gophercloud.ServiceClient, opts CreateOpts) CreateResult

Create accepts a CreateOpts struct and uses the values provided to create a new floating IP resource. You can create floating IPs on external networks only. If you provide a FloatingNetworkID which refers to a network that is not external (i.e. its `router:external' attribute is False), the operation will fail and return a 400 error.

If you do not specify a FloatingIP address value, the operation will automatically allocate an available address for the new resource. If you do choose to specify one, it must fall within the subnet range for the external network - otherwise the operation returns a 400 error. If the FloatingIP address is already in use, the operation returns a 409 error code.

You can associate the new resource with an internal port by using the PortID field. If you specify a PortID that is not valid, the operation will fail and return 404 error code.

You must also configure an IP address for the port associated with the PortID you have provided - this is what the FixedIP refers to: an IP fixed to a port. Because a port might be associated with multiple IP addresses, you can use the FixedIP field to associate a particular IP address rather than have the API assume for you. If you specify an IP address that is not valid, the operation will fail and return a 400 error code. If the PortID and FixedIP are already associated with another resource, the operation will fail and returns a 409 error code.

func (CreateResult) Extract Uses

func (r CreateResult) Extract() (*FloatingIP, error)

Extract a result and extracts a FloatingIP resource.

type DeleteResult Uses

type DeleteResult struct {
    gophercloud.ErrResult
}

DeleteResult represents the result of an update operation.

func Delete Uses

func Delete(c *gophercloud.ServiceClient, id string) DeleteResult

Delete will permanently delete a particular floating IP resource. Please ensure this is what you want - you can also disassociate the IP from existing internal ports.

type FloatingIP Uses

type FloatingIP struct {
    // Unique identifier for the floating IP instance.
    ID  string `json:"id" mapstructure:"id"`

    // UUID of the external network where the floating IP is to be created.
    FloatingNetworkID string `json:"floating_network_id" mapstructure:"floating_network_id"`

    // Address of the floating IP on the external network.
    FloatingIP string `json:"floating_ip_address" mapstructure:"floating_ip_address"`

    // UUID of the port on an internal network that is associated with the floating IP.
    PortID string `json:"port_id" mapstructure:"port_id"`

    // The specific IP address of the internal port which should be associated
    // with the floating IP.
    FixedIP string `json:"fixed_ip_address" mapstructure:"fixed_ip_address"`

    // Owner of the floating IP. Only admin users can specify a tenant identifier
    // other than its own.
    TenantID string `json:"tenant_id" mapstructure:"tenant_id"`

    // The condition of the API resource.
    Status string `json:"status" mapstructure:"status"`
}

FloatingIP represents a floating IP resource. A floating IP is an external IP address that is mapped to an internal port and, optionally, a specific IP address on a private network. In other words, it enables access to an instance on a private network from an external network. For this reason, floating IPs can only be defined on networks where the `router:external' attribute (provided by the external network extension) is set to True.

type FloatingIPPage Uses

type FloatingIPPage struct {
    pagination.LinkedPageBase
}

FloatingIPPage is the page returned by a pager when traversing over a collection of floating IPs.

func (FloatingIPPage) IsEmpty Uses

func (p FloatingIPPage) IsEmpty() (bool, error)

IsEmpty checks whether a NetworkPage struct is empty.

func (FloatingIPPage) NextPageURL Uses

func (p FloatingIPPage) NextPageURL() (string, error)

NextPageURL is invoked when a paginated collection of floating IPs has reached the end of a page and the pager seeks to traverse over a new one. In order to do this, it needs to construct the next page's URL.

type GetResult Uses

type GetResult struct {
    // contains filtered or unexported fields
}

GetResult represents the result of a get operation.

func Get Uses

func Get(c *gophercloud.ServiceClient, id string) GetResult

Get retrieves a particular floating IP resource based on its unique ID.

func (GetResult) Extract Uses

func (r GetResult) Extract() (*FloatingIP, error)

Extract a result and extracts a FloatingIP resource.

type ListOpts Uses

type ListOpts struct {
    ID                string `q:"id"`
    FloatingNetworkID string `q:"floating_network_id"`
    PortID            string `q:"port_id"`
    FixedIP           string `q:"fixed_ip_address"`
    FloatingIP        string `q:"floating_ip_address"`
    TenantID          string `q:"tenant_id"`
    Limit             int    `q:"limit"`
    Marker            string `q:"marker"`
    SortKey           string `q:"sort_key"`
    SortDir           string `q:"sort_dir"`
}

ListOpts allows the filtering and sorting of paginated collections through the API. Filtering is achieved by passing in struct field values that map to the floating IP attributes you want to see returned. SortKey allows you to sort by a particular network attribute. SortDir sets the direction, and is either `asc' or `desc'. Marker and Limit are used for pagination.

type UpdateOpts Uses

type UpdateOpts struct {
    PortID string
}

UpdateOpts contains the values used when updating a floating IP resource. The only value that can be updated is which internal port the floating IP is linked to. To associate the floating IP with a new internal port, provide its ID. To disassociate the floating IP from all ports, provide an empty string.

type UpdateResult Uses

type UpdateResult struct {
    // contains filtered or unexported fields
}

UpdateResult represents the result of an update operation.

func Update Uses

func Update(c *gophercloud.ServiceClient, id string, opts UpdateOpts) UpdateResult

Update allows floating IP resources to be updated. Currently, the only way to "update" a floating IP is to associate it with a new internal port, or disassociated it from all ports. See UpdateOpts for instructions of how to do this.

func (UpdateResult) Extract Uses

func (r UpdateResult) Extract() (*FloatingIP, error)

Extract a result and extracts a FloatingIP resource.

Package floatingips imports 4 packages (graph) and is imported by 156 packages. Updated 2016-07-15. Refresh now. Tools for package owners.