Documentation ¶
Overview ¶
Package volumes provides information and interaction with volumes in the OpenStack Block Storage service. A volume is a detachable block storage device, akin to a USB hard drive. It can only be attached to one instance at a time.
Example to create a Volume from a Backup
backupID := "20c792f0-bb03-434f-b653-06ef238e337e" options := volumes.CreateOpts{ Name: "vol-001", BackupID: &backupID, } client.Microversion = "3.47" volume, err := volumes.Create(client, options).Extract() if err != nil { panic(err) } fmt.Println(volume)
Index ¶
- func ExtractVolumesInto(r pagination.Page, v interface{}) error
- func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager
- func WaitForStatus(c *gophercloud.ServiceClient, id, status string, secs int) error
- type Attachment
- type CreateOpts
- type CreateOptsBuilder
- type CreateResult
- type DeleteOpts
- type DeleteOptsBuilder
- type DeleteResult
- type GetResult
- type ListOpts
- type ListOptsBuilder
- type UpdateMetadataOpts
- type UpdateOpts
- type UpdateOptsBuilder
- type UpdateResult
- type Volume
- type VolumePage
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ExtractVolumesInto ¶
func ExtractVolumesInto(r pagination.Page, v interface{}) error
ExtractVolumesInto similar to ExtractInto but operates on a `list` of volumes
func List ¶
func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager
List returns Volumes optionally limited by the conditions provided in ListOpts.
func WaitForStatus ¶
func WaitForStatus(c *gophercloud.ServiceClient, id, status string, secs int) error
WaitForStatus will continually poll the resource, checking for a particular status. It will do this for the amount of seconds defined.
Types ¶
type Attachment ¶
type Attachment struct { AttachedAt time.Time `json:"attached_at"` AttachmentID string `json:"attachment_id"` Device string `json:"device"` HostName string `json:"host_name"` ID string `json:"id"` ServerID string `json:"server_id"` VolumeID string `json:"volume_id"` }
Attachment represents a Volume Attachment record
func (*Attachment) UnmarshalJSON ¶
func (r *Attachment) UnmarshalJSON(b []byte) error
UnmarshalJSON is our unmarshalling helper
type CreateOpts ¶
type CreateOpts struct { // The size of the volume, in GB Size int `json:"size,omitempty"` // The availability zone AvailabilityZone string `json:"availability_zone,omitempty"` // ConsistencyGroupID is the ID of a consistency group ConsistencyGroupID string `json:"consistencygroup_id,omitempty"` // The volume description Description string `json:"description,omitempty"` // One or more metadata key and value pairs to associate with the volume Metadata map[string]string `json:"metadata,omitempty"` // The volume name Name string `json:"name,omitempty"` // the ID of the existing volume snapshot SnapshotID string `json:"snapshot_id,omitempty"` // SourceReplica is a UUID of an existing volume to replicate with SourceReplica string `json:"source_replica,omitempty"` // the ID of the existing volume SourceVolID string `json:"source_volid,omitempty"` // The ID of the image from which you want to create the volume. // Required to create a bootable volume. ImageID string `json:"imageRef,omitempty"` // Specifies the backup ID, from which you want to create the volume. // Create a volume from a backup is supported since 3.47 microversion BackupID string `json:"backup_id,omitempty"` // The associated volume type VolumeType string `json:"volume_type,omitempty"` // Multiattach denotes if the volume is multi-attach capable. Multiattach bool `json:"multiattach,omitempty"` }
CreateOpts contains options for creating a Volume. This object is passed to the volumes.Create function. For more information about these parameters, see the Volume object.
func (CreateOpts) ToVolumeCreateMap ¶
func (opts CreateOpts) ToVolumeCreateMap() (map[string]interface{}, error)
ToVolumeCreateMap assembles a request body based on the contents of a CreateOpts.
type CreateOptsBuilder ¶
CreateOptsBuilder allows extensions to add additional parameters to the Create request.
type CreateResult ¶
type CreateResult struct {
// contains filtered or unexported fields
}
CreateResult contains the response body and error from a Create request.
func Create ¶
func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult)
Create will create a new Volume based on the values in CreateOpts. To extract the Volume object from the response, call the Extract method on the CreateResult.
func (CreateResult) ExtractInto ¶
func (r CreateResult) ExtractInto(v interface{}) error
ExtractInto converts our response data into a volume struct
type DeleteOpts ¶
type DeleteOpts struct { // Delete all snapshots of this volume as well. Cascade bool `q:"cascade"` }
DeleteOpts contains options for deleting a Volume. This object is passed to the volumes.Delete function.
func (DeleteOpts) ToVolumeDeleteQuery ¶
func (opts DeleteOpts) ToVolumeDeleteQuery() (string, error)
ToLoadBalancerDeleteQuery formats a DeleteOpts into a query string.
type DeleteOptsBuilder ¶
DeleteOptsBuilder allows extensions to add additional parameters to the Delete request.
type DeleteResult ¶
type DeleteResult struct {
gophercloud.ErrResult
}
DeleteResult contains the response body and error from a Delete request.
func Delete ¶
func Delete(client *gophercloud.ServiceClient, id string, opts DeleteOptsBuilder) (r DeleteResult)
Delete will delete the existing Volume with the provided ID.
type GetResult ¶
type GetResult struct {
// contains filtered or unexported fields
}
GetResult contains the response body and error from a Get request.
func Get ¶
func Get(client *gophercloud.ServiceClient, id string) (r GetResult)
Get retrieves the Volume with the provided ID. To extract the Volume object from the response, call the Extract method on the GetResult.
func (GetResult) ExtractInto ¶
func (r GetResult) ExtractInto(v interface{}) error
ExtractInto converts our response data into a volume struct
type ListOpts ¶
type ListOpts struct { // AllTenants will retrieve volumes of all tenants/projects. AllTenants bool `q:"all_tenants"` // Metadata will filter results based on specified metadata. Metadata map[string]string `q:"metadata"` // Name will filter by the specified volume name. Name string `q:"name"` // Status will filter by the specified status. Status string `q:"status"` // TenantID will filter by a specific tenant/project ID. // Setting AllTenants is required for this. TenantID string `q:"project_id"` // Comma-separated list of sort keys and optional sort directions in the // form of <key>[:<direction>]. Sort string `q:"sort"` // Requests a page size of items. Limit int `q:"limit"` // Marker for pagination. Marker string `q:"marker"` // Used in conjunction with limit to return a slice of items. Offset int `q:"offset"` // Size will filter by the specified size. Size int `q:"size"` // AvailabilityZone will filter by the specified availability zone. AvailabilityZone string `q:"availability_zone"` // Bootable will filter by the specified bootable status. Bootable string `q:"bootable"` }
ListOpts holds options for listing Volumes. It is passed to the volumes.List function.
func (ListOpts) ToVolumeListQuery ¶
ToVolumeListQuery formats a ListOpts into a query string.
type ListOptsBuilder ¶
ListOptsBuilder allows extensions to add additional parameters to the List request.
type UpdateMetadataOpts ¶ added in v1.1.35
func (UpdateMetadataOpts) ToVolumeUpdateMetadataMap ¶ added in v1.1.35
func (opts UpdateMetadataOpts) ToVolumeUpdateMetadataMap() (map[string]interface{}, error)
type UpdateOpts ¶
type UpdateOpts struct { Name *string `json:"name,omitempty"` Description *string `json:"description,omitempty"` Metadata map[string]string `json:"metadata,omitempty"` }
UpdateOpts contain options for updating an existing Volume. This object is passed to the volumes.Update function. For more information about the parameters, see the Volume object.
func (UpdateOpts) ToVolumeUpdateMap ¶
func (opts UpdateOpts) ToVolumeUpdateMap() (map[string]interface{}, error)
ToVolumeUpdateMap assembles a request body based on the contents of an UpdateOpts.
type UpdateOptsBuilder ¶
UpdateOptsBuilder allows extensions to add additional parameters to the Update request.
type UpdateResult ¶
type UpdateResult struct {
// contains filtered or unexported fields
}
UpdateResult contains the response body and error from an Update request.
func Update ¶
func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult)
Update will update the Volume with provided information. To extract the updated Volume from the response, call the Extract method on the UpdateResult.
func UpdateMetadata ¶ added in v1.1.35
func UpdateMetadata(client *gophercloud.ServiceClient, id string, opts UpdateMetadataOpts) (r UpdateResult)
func (UpdateResult) ExtractInto ¶
func (r UpdateResult) ExtractInto(v interface{}) error
ExtractInto converts our response data into a volume struct
type Volume ¶
type Volume struct { // Unique identifier for the volume. ID string `json:"id"` // Current status of the volume. Status string `json:"status"` // Size of the volume in GB. Size int `json:"size"` // AvailabilityZone is which availability zone the volume is in. AvailabilityZone string `json:"availability_zone"` // The date when this volume was created. CreatedAt time.Time `json:"created_at"` // The date when this volume was last updated UpdatedAt time.Time `json:"updated_at"` // Instances onto which the volume is attached. Attachments []Attachment `json:"attachments"` // Human-readable display name for the volume. Name string `json:"name"` // Human-readable description for the volume. Description string `json:"description"` // The type of volume to create, either SATA or SSD. VolumeType string `json:"volume_type"` // The ID of the snapshot from which the volume was created SnapshotID string `json:"snapshot_id"` // The ID of another block storage volume from which the current volume was created SourceVolID string `json:"source_volid"` // The backup ID, from which the volume was restored // This field is supported since 3.47 microversion BackupID *string `json:"backup_id"` // Arbitrary key-value pairs defined by the user. Metadata map[string]string `json:"metadata"` // UserID is the id of the user who created the volume. UserID string `json:"user_id"` // Indicates whether this is a bootable volume. Bootable string `json:"bootable"` // Encrypted denotes if the volume is encrypted. Encrypted bool `json:"encrypted"` // ReplicationStatus is the status of replication. ReplicationStatus string `json:"replication_status"` // ConsistencyGroupID is the consistency group ID. ConsistencyGroupID string `json:"consistencygroup_id"` // Multiattach denotes if the volume is multi-attach capable. Multiattach bool `json:"multiattach"` // Image metadata entries, only included for volumes that were created from an image, or from a snapshot of a volume originally created from an image. VolumeImageMetadata map[string]string `json:"volume_image_metadata"` TenantID string `json:"os-vol-tenant-attr:tenant_id"` }
Volume contains all the information associated with an OpenStack Volume.
func ExtractVolumes ¶
func ExtractVolumes(r pagination.Page) ([]Volume, error)
ExtractVolumes extracts and returns Volumes. It is used while iterating over a volumes.List call.
func (*Volume) UnmarshalJSON ¶
UnmarshalJSON another unmarshalling function
type VolumePage ¶
type VolumePage struct {
pagination.LinkedPageBase
}
VolumePage is a pagination.pager that is returned from a call to the List function.
func (VolumePage) IsEmpty ¶
func (r VolumePage) IsEmpty() (bool, error)
IsEmpty returns true if a ListResult contains no Volumes.
func (VolumePage) NextPageURL ¶
func (page VolumePage) NextPageURL() (string, error)