glusterfs

package
v0.0.0-...-66cb026 Latest Latest
Warning

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

Go to latest
Published: Aug 16, 2015 License: Apache-2.0 Imports: 17 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 (

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

	// Default values
	DEFAULT_REPLICA               = 2
	DEFAULT_THINP_SNAPSHOT_FACTOR = 1.5

	// Default limits
	BRICK_MIN_SIZE = uint64(1 * GB)
	BRICK_MAX_SIZE = uint64(4 * TB)
	BRICK_MAX_NUM  = 200
)
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")
)

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, brick_entries []*BrickEntry) error

func DestroyBricks

func DestroyBricks(db *bolt.DB, 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 EntrySave

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

func VolumeList

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

Types

type AllocationList

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

func NewAllocationList

func NewAllocationList() *AllocationList

func (*AllocationList) Append

func (a *AllocationList) Append(x string)

func (*AllocationList) IsEmpty

func (a *AllocationList) IsEmpty() bool

func (*AllocationList) Pop

func (a *AllocationList) Pop() (x string)

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) 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
}

func NewBrickEntry

func NewBrickEntry(size 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) error

func (*BrickEntry) Delete

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

func (*BrickEntry) Destroy

func (b *BrickEntry) Destroy(db *bolt.DB) 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) 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 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) PeerNode

func (c *ClusterEntry) PeerNode(tx *bolt.Tx) (*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"`
	Weight int    `json:"weight"`
}

Device

type DeviceAddRequest

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

type DeviceEntry

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

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) 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) NewInfoResponse

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

func (*DeviceEntry) Save

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

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 GlusterFSConfig

type GlusterFSConfig struct {
	DBfile    string            `json:"db"`
	Executor  string            `json:"executor"`
	SshConfig sshexec.SshConfig `json:"sshexec"`
}

type HostAddresses

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

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) 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) 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 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"`
	Replica  int      `json:"replica"`
	Snapshot struct {
		Enable bool    `json:"enable"`
		Factor float32 `json:"factor"`
	} `json:"snapshot"`
}

Volume

type VolumeEntry

type VolumeEntry struct {
	Info   VolumeInfo
	Bricks sort.StringSlice
}

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) (e error)

func (*VolumeEntry) Delete

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

func (*VolumeEntry) Destroy

func (v *VolumeEntry) Destroy(db *bolt.DB) error

func (*VolumeEntry) Expand

func (v *VolumeEntry) Expand(db *bolt.DB, 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

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