mirror of
https://github.com/opentofu/opentofu.git
synced 2025-01-08 15:13:56 -06:00
a0b70b0ec7
A number of PRs have come through which modified the vendor folder without recording the proper information. This resets everything back to the recorded version.
68 lines
2.5 KiB
Go
68 lines
2.5 KiB
Go
/*
|
|
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
|