glusterfs

package
v1.1.0-dev Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 1, 2016 License: Apache-2.0 Imports: 22 Imported by: 0

Documentation

Overview

Please see https://github.com/heketi/heketi/wiki/API for documentation

Index

Constants

View Source
const (
	ASYNC_ROUTE           = "/queue"
	BOLTDB_BUCKET_CLUSTER = "CLUSTER"
	BOLTDB_BUCKET_NODE    = "NODE"
	BOLTDB_BUCKET_VOLUME  = "VOLUME"
	BOLTDB_BUCKET_DEVICE  = "DEVICE"
	BOLTDB_BUCKET_BRICK   = "BRICK"
)
View Source
const (
	DURABILITY_STRING_REPLICATE       = "replicate"
	DURABILITY_STRING_DISTRIBUTE_ONLY = "none"
	DURABILITY_STRING_EC              = "disperse"
)
View Source
const (

	// Byte values in KB
	KB = 1
	MB = KB * 1024
	GB = MB * 1024
	TB = GB * 1024

	// Default values
	DEFAULT_REPLICA               = 2
	DEFAULT_EC_DATA               = 4
	DEFAULT_EC_REDUNDANCY         = 2
	DEFAULT_THINP_SNAPSHOT_FACTOR = 1.5
)
View Source
const (
	VOLUME_CREATE_MAX_SNAPSHOT_FACTOR = 100
)

Variables

View Source
var (
	ErrNoSpace          = errors.New("No space")
	ErrNotFound         = errors.New("Id not found")
	ErrConflict         = errors.New(http.StatusText(http.StatusConflict))
	ErrMaxBricks        = errors.New("Maximum number of bricks reached.")
	ErrMininumBrickSize = errors.New("Minimum brick size limit reached.  Out of space.")
	ErrDbAccess         = errors.New("Unable to access db")
	ErrAccessList       = errors.New("Unable to access list")
	ErrKeyExists        = errors.New("Key already exists in the database")
)
View Source
var (
	// Default limits
	BrickMinSize = uint64(4 * GB)
	BrickMaxSize = uint64(4 * TB)
	BrickMaxNum  = 100
)

Functions

func BrickList

func BrickList(tx *bolt.Tx) ([]string, error)

func ClusterList

func ClusterList(tx *bolt.Tx) ([]string, error)

func CreateBricks

func CreateBricks(db *bolt.DB, executor executors.Executor, brick_entries []*BrickEntry) error

func DestroyBricks

func DestroyBricks(db *bolt.DB, executor executors.Executor, brick_entries []*BrickEntry) error

func DeviceList

func DeviceList(tx *bolt.Tx) ([]string, error)

func EntryDelete

func EntryDelete(tx *bolt.Tx, entry DbEntry, key string) error

func EntryKeys

func EntryKeys(tx *bolt.Tx, bucket string) []string

func EntryLoad

func EntryLoad(tx *bolt.Tx, entry DbEntry, key string) error

func EntryRegister

func EntryRegister(tx *bolt.Tx, entry DbEntry, key string, value []byte) ([]byte, error)

Checks if the key already exists in the database. If it does not exist, then it will save the key value pair in the datababucket se

func EntrySave

func EntrySave(tx *bolt.Tx, entry DbEntry, key string) error

func VolumeList

func VolumeList(tx *bolt.Tx) ([]string, error)

Types

type Allocator

type Allocator interface {

	// Inform the brick allocator to include device
	AddDevice(c *ClusterEntry, n *NodeEntry, d *DeviceEntry) error

	// Inform the brick allocator to not use the specified device
	RemoveDevice(c *ClusterEntry, n *NodeEntry, d *DeviceEntry) error

	// Remove cluster information from allocator
	RemoveCluster(clusterId string) error

	// Returns a generator, done, and error channel.
	// The generator returns the location for the brick, then the possible locations
	// of its replicas. The caller must close() the done channel when it no longer
	// needs to read from the generator.
	GetNodes(clusterId, brickId string) (<-chan string,
		chan<- struct{}, <-chan error)
}

type App

type App struct {
	// contains filtered or unexported fields
}

func NewApp

func NewApp(configIo io.Reader) *App

func NewTestApp

func NewTestApp(dbfile string) *App

func (*App) Auth

func (a *App) Auth(w http.ResponseWriter, r *http.Request, next http.HandlerFunc)

Middleware function

func (*App) Close

func (a *App) Close()

func (*App) ClusterCreate

func (a *App) ClusterCreate(w http.ResponseWriter, r *http.Request)

func (*App) ClusterDelete

func (a *App) ClusterDelete(w http.ResponseWriter, r *http.Request)

func (*App) ClusterInfo

func (a *App) ClusterInfo(w http.ResponseWriter, r *http.Request)

func (*App) ClusterList

func (a *App) ClusterList(w http.ResponseWriter, r *http.Request)

func (*App) DeviceAdd

func (a *App) DeviceAdd(w http.ResponseWriter, r *http.Request)

func (*App) DeviceDelete

func (a *App) DeviceDelete(w http.ResponseWriter, r *http.Request)

func (*App) DeviceInfo

func (a *App) DeviceInfo(w http.ResponseWriter, r *http.Request)

func (*App) Hello

func (a *App) Hello(w http.ResponseWriter, r *http.Request)

func (*App) NodeAdd

func (a *App) NodeAdd(w http.ResponseWriter, r *http.Request)

func (*App) NodeDelete

func (a *App) NodeDelete(w http.ResponseWriter, r *http.Request)

func (*App) NodeInfo

func (a *App) NodeInfo(w http.ResponseWriter, r *http.Request)

func (*App) SetRoutes

func (a *App) SetRoutes(router *mux.Router) error

Register Routes

func (*App) VolumeCreate

func (a *App) VolumeCreate(w http.ResponseWriter, r *http.Request)

func (*App) VolumeDelete

func (a *App) VolumeDelete(w http.ResponseWriter, r *http.Request)

func (*App) VolumeExpand

func (a *App) VolumeExpand(w http.ResponseWriter, r *http.Request)

func (*App) VolumeInfo

func (a *App) VolumeInfo(w http.ResponseWriter, r *http.Request)

func (*App) VolumeList

func (a *App) VolumeList(w http.ResponseWriter, r *http.Request)

type BrickEntry

type BrickEntry struct {
	Info             BrickInfo
	TpSize           uint64
	PoolMetadataSize uint64
	State            BrickState
}

func NewBrickEntry

func NewBrickEntry(size, tpsize, poolMetadataSize uint64, deviceid, nodeid string) *BrickEntry

func NewBrickEntryFromId

func NewBrickEntryFromId(tx *bolt.Tx, id string) (*BrickEntry, error)

func (*BrickEntry) BucketName

func (b *BrickEntry) BucketName() string

func (*BrickEntry) Create

func (b *BrickEntry) Create(db *bolt.DB, executor executors.Executor) error

func (*BrickEntry) Delete

func (b *BrickEntry) Delete(tx *bolt.Tx) error

func (*BrickEntry) Destroy

func (b *BrickEntry) Destroy(db *bolt.DB, executor executors.Executor) error

func (*BrickEntry) DestroyCheck

func (b *BrickEntry) DestroyCheck(db *bolt.DB, executor executors.Executor) error

func (*BrickEntry) Id

func (b *BrickEntry) Id() string

func (*BrickEntry) Marshal

func (b *BrickEntry) Marshal() ([]byte, error)

func (*BrickEntry) NewInfoResponse

func (b *BrickEntry) NewInfoResponse(tx *bolt.Tx) (*BrickInfo, error)

func (*BrickEntry) Save

func (b *BrickEntry) Save(tx *bolt.Tx) error

func (*BrickEntry) SetId

func (b *BrickEntry) SetId(id string)

func (*BrickEntry) TotalSize

func (b *BrickEntry) TotalSize() uint64

Size consumed on device

func (*BrickEntry) Unmarshal

func (b *BrickEntry) Unmarshal(buffer []byte) error

type BrickInfo

type BrickInfo struct {
	Id       string `json:"id"`
	Path     string `json:"path"`
	DeviceId string `json:"device"`
	NodeId   string `json:"node"`

	// Size in KB
	Size uint64 `json:"size"`
}

Brick

type BrickState

type BrickState int
const (
	BRICK_STATE_NEW BrickState = iota
	BRICK_STATE_FAILED
	BRICK_STATE_ONLINE
	BRICK_STATE_DELETED
)

type ClusterEntry

type ClusterEntry struct {
	Info ClusterInfoResponse
}

func NewClusterEntry

func NewClusterEntry() *ClusterEntry

func NewClusterEntryFromId

func NewClusterEntryFromId(tx *bolt.Tx, id string) (*ClusterEntry, error)

func NewClusterEntryFromRequest

func NewClusterEntryFromRequest() *ClusterEntry

func (*ClusterEntry) BucketName

func (c *ClusterEntry) BucketName() string

func (*ClusterEntry) Delete

func (c *ClusterEntry) Delete(tx *bolt.Tx) error

func (*ClusterEntry) Marshal

func (c *ClusterEntry) Marshal() ([]byte, error)

func (*ClusterEntry) NewClusterInfoResponse

func (c *ClusterEntry) NewClusterInfoResponse(tx *bolt.Tx) (*ClusterInfoResponse, error)

func (*ClusterEntry) NodeAdd

func (c *ClusterEntry) NodeAdd(id string)

func (*ClusterEntry) NodeDelete

func (c *ClusterEntry) NodeDelete(id string)

func (*ClusterEntry) NodeEntryFromClusterIndex

func (c *ClusterEntry) NodeEntryFromClusterIndex(tx *bolt.Tx, index int) (*NodeEntry, error)

func (*ClusterEntry) Save

func (c *ClusterEntry) Save(tx *bolt.Tx) error

func (*ClusterEntry) Unmarshal

func (c *ClusterEntry) Unmarshal(buffer []byte) error

func (*ClusterEntry) VolumeAdd

func (c *ClusterEntry) VolumeAdd(id string)

func (*ClusterEntry) VolumeDelete

func (c *ClusterEntry) VolumeDelete(id string)

type ClusterInfoResponse

type ClusterInfoResponse struct {
	Id      string           `json:"id"`
	Nodes   sort.StringSlice `json:"nodes"`
	Volumes sort.StringSlice `json:"volumes"`
}

Cluster

type ClusterListResponse

type ClusterListResponse struct {
	Clusters []string `json:"clusters"`
}

type ConfigFile

type ConfigFile struct {
	GlusterFS GlusterFSConfig `json:"glusterfs"`
}

type CreateType

type CreateType int
const (
	CREATOR_CREATE CreateType = iota
	CREATOR_DESTROY
)

type DbEntry

type DbEntry interface {
	BucketName() string
	Marshal() ([]byte, error)
	Unmarshal(buffer []byte) error
}

type Device

type Device struct {
	Name string `json:"name"`
}

Device

type DeviceAddRequest

type DeviceAddRequest struct {
	Device
	NodeId string `json:"node"`
}

type DeviceEntry

type DeviceEntry struct {
	Info       DeviceInfo
	Bricks     sort.StringSlice
	NodeId     string
	ExtentSize uint64
}

func NewDeviceEntry

func NewDeviceEntry() *DeviceEntry

func NewDeviceEntryFromId

func NewDeviceEntryFromId(tx *bolt.Tx, id string) (*DeviceEntry, error)

func NewDeviceEntryFromRequest

func NewDeviceEntryFromRequest(req *DeviceAddRequest) *DeviceEntry

func (*DeviceEntry) BrickAdd

func (d *DeviceEntry) BrickAdd(id string)

func (*DeviceEntry) BrickDelete

func (d *DeviceEntry) BrickDelete(id string)

func (*DeviceEntry) BucketName

func (d *DeviceEntry) BucketName() string

func (*DeviceEntry) Delete

func (d *DeviceEntry) Delete(tx *bolt.Tx) error

func (*DeviceEntry) Deregister

func (d *DeviceEntry) Deregister(tx *bolt.Tx) error

func (*DeviceEntry) Id

func (d *DeviceEntry) Id() string

func (*DeviceEntry) IsDeleteOk

func (d *DeviceEntry) IsDeleteOk() bool

func (*DeviceEntry) Marshal

func (d *DeviceEntry) Marshal() ([]byte, error)

func (*DeviceEntry) NewBrickEntry

func (d *DeviceEntry) NewBrickEntry(amount uint64, snapFactor float64) *BrickEntry

Allocates a new brick if the space is available. It will automatically reserve the storage amount required from the device's used storage, but it will not add the brick id to the brick list. The caller is responsabile for adding the brick id to the list.

func (*DeviceEntry) NewInfoResponse

func (d *DeviceEntry) NewInfoResponse(tx *bolt.Tx) (*DeviceInfoResponse, error)

func (*DeviceEntry) Register

func (d *DeviceEntry) Register(tx *bolt.Tx) error

func (*DeviceEntry) Save

func (d *DeviceEntry) Save(tx *bolt.Tx) error

func (*DeviceEntry) SetExtentSize

func (d *DeviceEntry) SetExtentSize(amount uint64)

func (*DeviceEntry) SetId

func (d *DeviceEntry) SetId(id string)

func (*DeviceEntry) StorageAllocate

func (d *DeviceEntry) StorageAllocate(amount uint64)

func (*DeviceEntry) StorageCheck

func (d *DeviceEntry) StorageCheck(amount uint64) bool

func (*DeviceEntry) StorageFree

func (d *DeviceEntry) StorageFree(amount uint64)

func (*DeviceEntry) StorageSet

func (d *DeviceEntry) StorageSet(amount uint64)

func (*DeviceEntry) Unmarshal

func (d *DeviceEntry) Unmarshal(buffer []byte) error

type DeviceInfo

type DeviceInfo struct {
	Device
	Storage StorageSize `json:"storage"`
	Id      string      `json:"id"`
}

type DeviceInfoResponse

type DeviceInfoResponse struct {
	DeviceInfo
	Bricks []BrickInfo `json:"bricks"`
}

type DisperseDurability

type DisperseDurability struct {
	Data       int `json:"data,omitempty"`
	Redundancy int `json:"redundancy,omitempty"`
}

func (*DisperseDurability) BrickSizeGenerator

func (d *DisperseDurability) BrickSizeGenerator(size uint64) func() (int, uint64, error)

func (*DisperseDurability) BricksInSet

func (d *DisperseDurability) BricksInSet() int

func (*DisperseDurability) SetDurability

func (d *DisperseDurability) SetDurability()

func (*DisperseDurability) SetExecutorVolumeRequest

func (d *DisperseDurability) SetExecutorVolumeRequest(v *executors.VolumeRequest)

type GlusterFSConfig

type GlusterFSConfig struct {
	DBfile    string            `json:"db"`
	Executor  string            `json:"executor"`
	Allocator string            `json:"allocator"`
	SshConfig sshexec.SshConfig `json:"sshexec"`
	Loglevel  string            `json:"loglevel"`

	// advanced settings
	BrickMaxSize int `json:"brick_max_size_gb"`
	BrickMinSize int `json:"brick_min_size_gb"`
	BrickMaxNum  int `json:"max_bricks_per_volume"`
}

type HostAddresses

type HostAddresses struct {
	Manage  sort.StringSlice `json:"manage"`
	Storage sort.StringSlice `json:"storage"`
}

type MockAllocator

type MockAllocator struct {
	// contains filtered or unexported fields
}

func NewMockAllocator

func NewMockAllocator(db *bolt.DB) *MockAllocator

func (*MockAllocator) AddDevice

func (d *MockAllocator) AddDevice(cluster *ClusterEntry,
	node *NodeEntry,
	device *DeviceEntry) error

func (*MockAllocator) GetNodes

func (d *MockAllocator) GetNodes(clusterId, brickId string) (<-chan string,
	chan<- struct{}, <-chan error)

func (*MockAllocator) RemoveCluster

func (d *MockAllocator) RemoveCluster(clusterId string) error

func (*MockAllocator) RemoveDevice

func (d *MockAllocator) RemoveDevice(cluster *ClusterEntry,
	node *NodeEntry,
	device *DeviceEntry) error

type NodeAddRequest

type NodeAddRequest struct {
	Zone      int           `json:"zone"`
	Hostnames HostAddresses `json:"hostnames"`
	ClusterId string        `json:"cluster"`
}

Node

type NodeEntry

type NodeEntry struct {
	Info    NodeInfo
	Devices sort.StringSlice
}

func NewNodeEntry

func NewNodeEntry() *NodeEntry

func NewNodeEntryFromId

func NewNodeEntryFromId(tx *bolt.Tx, id string) (*NodeEntry, error)

func NewNodeEntryFromRequest

func NewNodeEntryFromRequest(req *NodeAddRequest) *NodeEntry

func (*NodeEntry) BucketName

func (n *NodeEntry) BucketName() string

func (*NodeEntry) Delete

func (n *NodeEntry) Delete(tx *bolt.Tx) error

func (*NodeEntry) Deregister

func (n *NodeEntry) Deregister(tx *bolt.Tx) error

func (*NodeEntry) DeviceAdd

func (n *NodeEntry) DeviceAdd(id string)

func (*NodeEntry) DeviceDelete

func (n *NodeEntry) DeviceDelete(id string)

func (*NodeEntry) IsDeleteOk

func (n *NodeEntry) IsDeleteOk() bool

func (*NodeEntry) ManageHostName

func (n *NodeEntry) ManageHostName() string

func (*NodeEntry) Marshal

func (n *NodeEntry) Marshal() ([]byte, error)

func (*NodeEntry) NewInfoReponse

func (n *NodeEntry) NewInfoReponse(tx *bolt.Tx) (*NodeInfoResponse, error)

func (*NodeEntry) Register

func (n *NodeEntry) Register(tx *bolt.Tx) error

func (*NodeEntry) Save

func (n *NodeEntry) Save(tx *bolt.Tx) error

func (*NodeEntry) StorageHostName

func (n *NodeEntry) StorageHostName() string

func (*NodeEntry) Unmarshal

func (n *NodeEntry) Unmarshal(buffer []byte) error

type NodeInfo

type NodeInfo struct {
	NodeAddRequest
	Id string `json:"id"`
}

type NodeInfoResponse

type NodeInfoResponse struct {
	NodeInfo
	DevicesInfo []DeviceInfoResponse `json:"devices"`
}

type NoneDurability

type NoneDurability struct {
	ReplicaDurability
}

func NewNoneDurability

func NewNoneDurability() *NoneDurability

func (*NoneDurability) BricksInSet

func (n *NoneDurability) BricksInSet() int

func (*NoneDurability) SetDurability

func (n *NoneDurability) SetDurability()

func (*NoneDurability) SetExecutorVolumeRequest

func (n *NoneDurability) SetExecutorVolumeRequest(v *executors.VolumeRequest)

type ReplicaDurability

type ReplicaDurability struct {
	Replica int `json:"replica,omitempty"`
}

func (*ReplicaDurability) BrickSizeGenerator

func (r *ReplicaDurability) BrickSizeGenerator(size uint64) func() (int, uint64, error)

func (*ReplicaDurability) BricksInSet

func (r *ReplicaDurability) BricksInSet() int

func (*ReplicaDurability) SetDurability

func (r *ReplicaDurability) SetDurability()

func (*ReplicaDurability) SetExecutorVolumeRequest

func (r *ReplicaDurability) SetExecutorVolumeRequest(v *executors.VolumeRequest)

type SimpleAllocator

type SimpleAllocator struct {
	// contains filtered or unexported fields
}

Simple allocator contains a map to rings of clusters

func NewSimpleAllocator

func NewSimpleAllocator() *SimpleAllocator

Create a new simple allocator

func NewSimpleAllocatorFromDb

func NewSimpleAllocatorFromDb(db *bolt.DB) *SimpleAllocator

Create a new simple allocator and initialize it with data from the db

func (*SimpleAllocator) AddDevice

func (s *SimpleAllocator) AddDevice(cluster *ClusterEntry,
	node *NodeEntry,
	device *DeviceEntry) error

func (*SimpleAllocator) GetNodes

func (s *SimpleAllocator) GetNodes(clusterId, brickId string) (<-chan string,
	chan<- struct{}, <-chan error)

func (*SimpleAllocator) RemoveCluster

func (s *SimpleAllocator) RemoveCluster(clusterId string) error

func (*SimpleAllocator) RemoveDevice

func (s *SimpleAllocator) RemoveDevice(cluster *ClusterEntry,
	node *NodeEntry,
	device *DeviceEntry) error

type SimpleAllocatorRing

type SimpleAllocatorRing struct {
	// contains filtered or unexported fields
}

The allocation ring will contain a map composed of all the devices available in the cluster. Call Rebalance() for it to create a balanced list.

func NewSimpleAllocatorRing

func NewSimpleAllocatorRing() *SimpleAllocatorRing

Create a new simple ring

func (*SimpleAllocatorRing) Add

func (s *SimpleAllocatorRing) Add(d *SimpleDevice)

Add a device to the ring map

func (*SimpleAllocatorRing) GetDeviceList

func (s *SimpleAllocatorRing) GetDeviceList(uuid string) []*SimpleDevice

Use a uuid to point at a position in the ring. Return a list of devices from that point in the ring.

func (*SimpleAllocatorRing) Rebalance

func (s *SimpleAllocatorRing) Rebalance()

Rebalance the ring and place the rebalanced list into balancedList. The idea is to setup an array/slice where each continguous SimpleDevice is from either a different zone, or node.

func (*SimpleAllocatorRing) Remove

func (s *SimpleAllocatorRing) Remove(d *SimpleDevice)

Remove device from the ring map

type SimpleDevice

type SimpleDevice struct {
	// contains filtered or unexported fields
}

Elements in the balanced list

func (*SimpleDevice) String

func (s *SimpleDevice) String() string

Pretty pring a SimpleDevice

type SimpleNode

type SimpleNode []*SimpleDevice

A node is a collection of devices

type SimpleZone

type SimpleZone []SimpleNode

A zone is a collection of nodes

type StorageSize

type StorageSize struct {
	Total uint64 `json:"total"`
	Free  uint64 `json:"free"`
	Used  uint64 `json:"used"`
}

Storage values in KB

type VolumeCreateRequest

type VolumeCreateRequest struct {
	// Size in GB
	Size       int                  `json:"size"`
	Clusters   []string             `json:"clusters,omitempty"`
	Name       string               `json:"name"`
	Durability VolumeDurabilityInfo `json:"durability,omitempty"`
	Snapshot   struct {
		Enable bool    `json:"enable"`
		Factor float32 `json:"factor"`
	} `json:"snapshot"`
}

type VolumeDurability

type VolumeDurability interface {
	BrickSizeGenerator(size uint64) func() (int, uint64, error)
	BricksInSet() int
	SetDurability()
	SetExecutorVolumeRequest(v *executors.VolumeRequest)
}

type VolumeDurabilityInfo

type VolumeDurabilityInfo struct {
	Type      string             `json:"type,omitempty"`
	Replicate ReplicaDurability  `json:"replicate,omitempty"`
	Disperse  DisperseDurability `json:"disperse,omitempty"`
}

type VolumeEntry

type VolumeEntry struct {
	Info       VolumeInfo
	Bricks     sort.StringSlice
	Durability VolumeDurability
}

func NewVolumeEntry

func NewVolumeEntry() *VolumeEntry

func NewVolumeEntryFromId

func NewVolumeEntryFromId(tx *bolt.Tx, id string) (*VolumeEntry, error)

func NewVolumeEntryFromRequest

func NewVolumeEntryFromRequest(req *VolumeCreateRequest) *VolumeEntry

func (*VolumeEntry) BrickAdd

func (v *VolumeEntry) BrickAdd(id string)

func (*VolumeEntry) BrickDelete

func (v *VolumeEntry) BrickDelete(id string)

func (*VolumeEntry) BricksIds

func (v *VolumeEntry) BricksIds() sort.StringSlice

func (*VolumeEntry) BucketName

func (v *VolumeEntry) BucketName() string

func (*VolumeEntry) Create

func (v *VolumeEntry) Create(db *bolt.DB,
	executor executors.Executor,
	allocator Allocator) (e error)

func (*VolumeEntry) Delete

func (v *VolumeEntry) Delete(tx *bolt.Tx) error

func (*VolumeEntry) Destroy

func (v *VolumeEntry) Destroy(db *bolt.DB, executor executors.Executor) error

func (*VolumeEntry) Expand

func (v *VolumeEntry) Expand(db *bolt.DB,
	executor executors.Executor,
	allocator Allocator,
	sizeGB int) (e error)

func (*VolumeEntry) Marshal

func (v *VolumeEntry) Marshal() ([]byte, error)

func (*VolumeEntry) NewInfoResponse

func (v *VolumeEntry) NewInfoResponse(tx *bolt.Tx) (*VolumeInfoResponse, error)

func (*VolumeEntry) Save

func (v *VolumeEntry) Save(tx *bolt.Tx) error

func (*VolumeEntry) Unmarshal

func (v *VolumeEntry) Unmarshal(buffer []byte) error

type VolumeExpandRequest

type VolumeExpandRequest struct {
	Size int `json:"expand_size"`
}

type VolumeInfo

type VolumeInfo struct {
	VolumeCreateRequest
	Id      string `json:"id"`
	Cluster string `json:"cluster"`
	Mount   struct {
		GlusterFS struct {
			MountPoint string            `json:"device"`
			Options    map[string]string `json:"options"`
		} `json:"glusterfs"`
	} `json:"mount"`
}

type VolumeInfoResponse

type VolumeInfoResponse struct {
	VolumeInfo
	Bricks []BrickInfo `json:"bricks"`
}

func NewVolumeInfoResponse

func NewVolumeInfoResponse() *VolumeInfoResponse

func (*VolumeInfoResponse) String

func (v *VolumeInfoResponse) String() string

String functions

type VolumeListResponse

type VolumeListResponse struct {
	Volumes []string `json:"volumes"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL