Documentation ¶
Overview ¶
Package extensions provides information and interaction with the different extensions available for an OpenStack service.
The purpose of OpenStack API extensions is to:
- Introduce new features in the API without requiring a version change. - Introduce vendor-specific niche functionality. - Act as a proving ground for experimental functionalities that might be included in a future version of the API.
Extensions usually have tags that prevent conflicts with other extensions that define attributes or resources with the same names, and with core resources and attributes. Because an extension might not be supported by all plug-ins, its availability varies with deployments and the specific plug-in.
The results of this package vary depending on the type of Service Client used. In the following examples, note how the only difference is the creation of the Service Client.
Example of Retrieving Compute Extensions
ao, err := openstack.AuthOptionsFromEnv() provider, err := openstack.AuthenticatedClient(ao) computeClient, err := openstack.NewComputeV2(provider, golangsdk.EndpointOpts{ Region: utils.GetRegion(ao), }) allPages, err := extensions.List(computeClient).Allpages() allExtensions, err := extensions.ExtractExtensions(allPages) for _, extension := range allExtensions{ fmt.Println("%+v\n", extension) }
Example of Retrieving Network Extensions
ao, err := openstack.AuthOptionsFromEnv() provider, err := openstack.AuthenticatedClient(ao) networkClient, err := openstack.NewNetworkV2(provider, golangsdk.EndpointOpts{ Region: utils.GetRegion(ao), }) allPages, err := extensions.List(networkClient).Allpages() allExtensions, err := extensions.ExtractExtensions(allPages) for _, extension := range allExtensions{ fmt.Println("%+v\n", extension) }
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ExtensionURL ¶
ExtensionURL generates the URL for an extension resource by name.
func List ¶
func List(c *golangsdk.ServiceClient) pagination.Pager
List returns a Pager which allows you to iterate over the full collection of extensions. It does not accept query parameters.
func ListExtensionURL ¶
func ListExtensionURL(c *golangsdk.ServiceClient) string
ListExtensionURL generates the URL for the extensions resource collection.
Types ¶
type Extension ¶
type Extension struct { Updated string `json:"updated"` Name string `json:"name"` Links []interface{} `json:"links"` Namespace string `json:"namespace"` Alias string `json:"alias"` Description string `json:"description"` }
Extension is a struct that represents an OpenStack extension.
func ExtractExtensions ¶
func ExtractExtensions(r pagination.Page) ([]Extension, error)
ExtractExtensions accepts a Page struct, specifically an ExtensionPage struct, and extracts the elements into a slice of Extension structs. In other words, a generic collection is mapped into a relevant slice.
type ExtensionPage ¶
type ExtensionPage struct {
pagination.SinglePageBase
}
ExtensionPage is the page returned by a pager when traversing over a collection of extensions.
func (ExtensionPage) IsEmpty ¶
func (r ExtensionPage) IsEmpty() (bool, error)
IsEmpty checks whether an ExtensionPage struct is empty.