Documentation ¶
Index ¶
- func DriverNames() <-chan string
- func RegisterDriver(driverName string, ctor NewDriver)
- type BlockDevice
- type Driver
- type Instance
- type MountInfoArray
- type NewDriver
- type OSDriver
- type OSDriverManager
- type RexRay
- type Snapshot
- type StorageDriver
- type StorageDriverManager
- type Volume
- type VolumeAttachment
- type VolumeDriver
- type VolumeDriverManager
- type VolumeMap
- type VolumeOpts
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DriverNames ¶
func DriverNames() <-chan string
DriverNames returns a channel which receives the names of all of the registerd drivers.
func RegisterDriver ¶
RegisterDriver is used by drivers to notify the driver manager of their availability to be used.
Types ¶
type BlockDevice ¶
type BlockDevice struct { // The name of the provider that owns the block device. ProviderName string // The ID of the instance to which the device is connected. InstanceID string // The ID of the volume for which the device is mounted. VolumeID string // The name of the device. DeviceName string // The region from which the device originates. Region string // The device status. Status string // The name of the network on which the device resides. NetworkName string }
BlockDevice provides information about a block-storage device.
type Driver ¶
type Driver interface { // The name of the driver. Name() string // Init initalizes the driver so that it is in a state to communicate to // its underlying platform / storage provider. Init(rexray *RexRay) error }
Driver represents a REX-Ray driver.
type Instance ¶
type Instance struct { // The name of the provider that owns the object. ProviderName string // The ID of the instance to which the object is connected. InstanceID string // The region from which the object originates. Region string // The name of the instance. Name string }
Instance provides information about a storage object.
type OSDriver ¶
type OSDriver interface { Driver // Shows the existing mount points GetMounts(string, string) (MountInfoArray, error) // Check whether path is mounted or not Mounted(string) (bool, error) // Unmount based on a path Unmount(string) error // Mount based on a device, target, options, label Mount(string, string, string, string) error // Format a device with a FS type Format(string, string, bool) error }
OSDriver is the interface implemented by types that provide OS introspection and management.
type OSDriverManager ¶
type OSDriverManager interface { OSDriver // Drivers gets a channel which receives a list of all of the configured // OS drivers. Drivers() <-chan OSDriver }
OSDriverManager acts as both a OSDriverManager and as an aggregate of OS drivers, providing batch methods.
type RexRay ¶
type RexRay struct { Config gofig.Config OS OSDriverManager Volume VolumeDriverManager Storage StorageDriverManager Context string // contains filtered or unexported fields }
RexRay is the library's entrance type and storage management platform.
func New ¶
New creates a new REX-Ray instance and configures it with the provided configuration instance.
func (*RexRay) DriverNames ¶
DriverNames returns a list of the registered driver names.
func (*RexRay) InitDrivers ¶
InitDrivers initializes the drivers for the REX-Ray platform.
type Snapshot ¶
type Snapshot struct { // The name of the snapshot. Name string // The ID of the volume to which the snapshot belongs. VolumeID string // The snapshot's ID. SnapshotID string // The size of the volume to which the snapshot belongs/ VolumeSize string // The time at which the request to create the snapshot was submitted. StartTime string // A description of the snapshot. Description string // The status of the snapshot. Status string }
Snapshot provides information about a storage-layer snapshot.
type StorageDriver ¶
type StorageDriver interface { Driver // GetVolumeMapping lists the block devices that are attached to the GetVolumeMapping() ([]*BlockDevice, error) // GetInstance retrieves the local instance. GetInstance() (*Instance, error) // GetVolume returns all volumes for the instance based on either volumeID // or volumeName that are available to the instance. GetVolume(volumeID, volumeName string) ([]*Volume, error) // GetVolumeAttach returns the attachment details based on volumeID or // volumeName where the volume is currently attached. GetVolumeAttach(volumeID, instanceID string) ([]*VolumeAttachment, error) // CreateSnapshot is a synch/async operation that returns snapshots that // have been performed based on supplying a snapshotName, source volumeID, // and optional description. CreateSnapshot( runAsync bool, snapshotName, volumeID, description string) ([]*Snapshot, error) // GetSnapshot returns a list of snapshots for a volume based on volumeID, // snapshotID, or snapshotName. GetSnapshot(volumeID, snapshotID, snapshotName string) ([]*Snapshot, error) // RemoveSnapshot will remove a snapshot based on the snapshotID. RemoveSnapshot(snapshotID string) error // CreateVolume is sync/async and will create an return a new/existing // Volume based on volumeID/snapshotID with a name of volumeName and a size // in GB. Optionally based on the storage driver, a volumeType, IOPS, and // availabilityZone could be defined. CreateVolume( runAsync bool, volumeName, volumeID, snapshotID, volumeType string, IOPS, size int64, availabilityZone string) (*Volume, error) // RemoveVolume will remove a volume based on volumeID. RemoveVolume(volumeID string) error // GetDeviceNextAvailable return a device path that will retrieve the next // available disk device that can be used. GetDeviceNextAvailable() (string, error) // AttachVolume returns a list of VolumeAttachments is sync/async that will // attach a volume to an instance based on volumeID and instanceID. AttachVolume( runAsync bool, volumeID, instanceID string, force bool) ([]*VolumeAttachment, error) // DetachVolume is sync/async that will detach the volumeID from the local // instance or the instanceID. DetachVolume(runAsync bool, volumeID string, instanceID string, force bool) error // CopySnapshot is a sync/async and returns a snapshot that will copy a // snapshot based on volumeID/snapshotID/snapshotName and create a new // snapshot of desinationSnapshotName in the destinationRegion location. CopySnapshot( runAsync bool, volumeID, snapshotID, snapshotName, destinationSnapshotName, destinationRegion string) (*Snapshot, error) }
StorageDriver is the interface implemented by types that provide storage introspection and management.
type StorageDriverManager ¶
type StorageDriverManager interface { StorageDriver // Drivers gets a channel which receives a list of all of the configured // storage drivers. Drivers() <-chan StorageDriver // GetInstances gets the instance for each of the configured drivers. GetInstances() ([]*Instance, error) }
StorageDriverManager acts as both a StorageDriverManager and as an aggregate of storage drivers, providing batch methods.
type Volume ¶
type Volume struct { // The name of the volume. Name string // The volume ID. VolumeID string // The availability zone for which the volume is available. AvailabilityZone string // The volume status. Status string // The volume type. VolumeType string // The volume IOPs. IOPS int64 // The size of the volume. Size string // The name of the network on which the volume resides. NetworkName string // The volume's attachments. Attachments []*VolumeAttachment }
Volume provides information about a storage volume.
type VolumeAttachment ¶
type VolumeAttachment struct { // The ID of the volume to which the attachment belongs. VolumeID string // The ID of the instance on which the volume to which the attachment // belongs is mounted. InstanceID string // The name of the device on which the volume to which the object is // attached is mounted. DeviceName string // The status of the attachment. Status string }
VolumeAttachment provides information about an object attached to a storage volume.
type VolumeDriver ¶
type VolumeDriver interface { Driver // Mount will return a mount point path when specifying either a volumeName // or volumeID. If a overwriteFs boolean is specified it will overwrite // the FS based on newFsType if it is detected that there is no FS present. Mount( volumeName, volumeID string, overwriteFs bool, newFsType string, preempt bool) (string, error) // Unmount will unmount the specified volume by volumeName or volumeID. Unmount(volumeName, volumeID string) error // Path will return the mounted path of the volumeName or volumeID. Path(volumeName, volumeID string) (string, error) // Create will create a new volume with the volumeName and opts. Create(volumeName string, opts VolumeOpts) error // Remove will remove a volume of volumeName. Remove(volumeName string) error // Get will return a specific volume Get(volumeName string) (VolumeMap, error) // List will return all volumes List() ([]VolumeMap, error) // Attach will attach a volume based on volumeName to the instance of // instanceID. Attach(volumeName, instanceID string, force bool) (string, error) // Detach will detach a volume based on volumeName to the instance of // instanceID. Detach(volumeName, instanceID string, force bool) error // NetworkName will return an identifier of a volume that is relevant when // corelating a local device to a device that is the volumeName to the // local instanceID. NetworkName(volumeName, instanceID string) (string, error) }
VolumeDriver is the interface implemented by types that provide volume introspection and management.
type VolumeDriverManager ¶
type VolumeDriverManager interface { VolumeDriver // Drivers gets a channel which receives a list of all of the configured // volume drivers. Drivers() <-chan VolumeDriver // UnmountAll unmounts all volumes. UnmountAll() error // RemoveAll removes all volumes. RemoveAll() error // DetachAll detaches all volumes attached to the instance of instanceID. DetachAll(instanceID string) error }
VolumeDriverManager acts as both a VolumeDriver and as an aggregate of volume drivers, providing batch methods.
type VolumeOpts ¶
VolumeOpts is a map of options used when creating a new volume