This repository has been archived by the owner. It is now read-only.
Permalink
Cannot retrieve contributors at this time
/* | |
Package gophercloud provides a multi-vendor interface to OpenStack-compatible | |
clouds. The library has a three-level hierarchy: providers, services, and | |
resources. | |
Provider structs represent the service providers that offer and manage a | |
collection of services. Examples of providers include: OpenStack, Rackspace, | |
HP. These are defined like so: | |
opts := gophercloud.AuthOptions{ | |
IdentityEndpoint: "https://my-openstack.com:5000/v2.0", | |
Username: "{username}", | |
Password: "{password}", | |
TenantID: "{tenant_id}", | |
} | |
provider, err := openstack.AuthenticatedClient(opts) | |
Service structs are specific to a provider and handle all of the logic and | |
operations for a particular OpenStack service. Examples of services include: | |
Compute, Object Storage, Block Storage. In order to define one, you need to | |
pass in the parent provider, like so: | |
opts := gophercloud.EndpointOpts{Region: "RegionOne"} | |
client := openstack.NewComputeV2(provider, opts) | |
Resource structs are the domain models that services make use of in order | |
to work with and represent the state of API resources: | |
server, err := servers.Get(client, "{serverId}").Extract() | |
Intermediate Result structs are returned for API operations, which allow | |
generic access to the HTTP headers, response body, and any errors associated | |
with the network transaction. To turn a result into a usable resource struct, | |
you must call the Extract method which is chained to the response, or an | |
Extract function from an applicable extension: | |
result := servers.Get(client, "{serverId}") | |
// Attempt to extract the disk configuration from the OS-DCF disk config | |
// extension: | |
config, err := diskconfig.ExtractGet(result) | |
All requests that enumerate a collection return a Pager struct that is used to | |
iterate through the results one page at a time. Use the EachPage method on that | |
Pager to handle each successive Page in a closure, then use the appropriate | |
extraction method from that request's package to interpret that Page as a slice | |
of results: | |
err := servers.List(client, nil).EachPage(func (page pagination.Page) (bool, error) { | |
s, err := servers.ExtractServers(page) | |
if err != nil { | |
return false, err | |
} | |
// Handle the []servers.Server slice. | |
// Return "false" or an error to prematurely stop fetching new pages. | |
return true, nil | |
}) | |
This top-level package contains utility functions and data types that are used | |
throughout the provider and service packages. Of particular note for end users | |
are the AuthOptions and EndpointOpts structs. | |
*/ | |
package gophercloud |