sfapi

package
v1.2.1 Latest Latest
Warning

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

Go to latest
Published: Jun 29, 2016 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewReqID

func NewReqID() int

NewReqID generates a random id for a request

Types

type APIError

type APIError struct {
	ID    int `json:"id"`
	Error struct {
		Code    int    `json:"code"`
		Message string `json:"message"`
		Name    string `json:"name"`
	} `json:"error"`
}

APIError wrapper

type Account

type Account struct {
	AccountID       int64       `json:"accountID,omitempty"`
	Username        string      `json:"username,omitempty"`
	Status          string      `json:"status,omitempty"`
	Volumes         []int64     `json:"volumes,omitempty"`
	InitiatorSecret string      `json:"initiatorSecret,omitempty"`
	TargetSecret    string      `json:"targetSecret,omitempty"`
	Attributes      interface{} `json:"attributes,omitempty"`
}

Account tbd

type AddAccountRequest

type AddAccountRequest struct {
	Username        string      `json:"username"`
	InitiatorSecret string      `json:"initiatorSecret,omitempty"`
	TargetSecret    string      `json:"targetSecret,omitempty"`
	Attributes      interface{} `json:"attributes,omitempty"`
}

AddAccountRequest tbd

type AddAccountResult

type AddAccountResult struct {
	ID     int `json:"id"`
	Result struct {
		AccountID int64 `json:"accountID"`
	} `json:"result"`
}

AddAccountResult tbd

type AddInitiatorsToVolumeAccessGroupRequest

type AddInitiatorsToVolumeAccessGroupRequest struct {
	Initiators []string `json:"initiators"`
	VAGID      int64    `json:"volumeAccessGroupID"`
}

AddInitiatorsToVolumeAccessGroupRequest tbd

type AddVolumesToVolumeAccessGroupRequest

type AddVolumesToVolumeAccessGroupRequest struct {
	VolumeAccessGroupID int64   `json:"volumeAccessGroupID"`
	Volumes             []int64 `json:"volumes"`
}

AddVolumesToVolumeAccessGroupRequest tbd

type Client

type Client struct {
	SVIP              string
	Endpoint          string
	DefaultAPIPort    int
	DefaultVolSize    int64 //bytes
	DefaultAccountID  int64
	DefaultTenantName string
	VolumeTypes       *[]VolType
	Config            *Config
}

Client is used to send api requests to a SolidFire system system

func NewFromParameters

func NewFromParameters(pendpoint string, pdefaultSizeGiB int64, psvip string, pcfg Config, pdefaultTenantName string) (c *Client, err error)

NewFromParameters is a factory method to createsa new sfapi.Client object using the supplied paramters

func (*Client) AddAccount

func (c *Client) AddAccount(req *AddAccountRequest) (accountID int64, err error)

AddAccount tbd

func (*Client) AddInitiatorsToVolumeAccessGroup

func (c *Client) AddInitiatorsToVolumeAccessGroup(r *AddInitiatorsToVolumeAccessGroupRequest) error

AddInitiatorsToVolumeAccessGroup tbd

func (*Client) AddVolumeToAccessGroup

func (c *Client) AddVolumeToAccessGroup(groupID int64, volIDs []int64) (err error)

AddVolumeToAccessGroup tbd

func (*Client) AttachVolume

func (c *Client) AttachVolume(v *Volume, iface string) (path, device string, err error)

AttachVolume tbd

func (*Client) CreateVolume

func (c *Client) CreateVolume(createReq *CreateVolumeRequest) (vol Volume, err error)

CreateVolume tbd

func (*Client) CreateVolumeAccessGroup

func (c *Client) CreateVolumeAccessGroup(r *CreateVolumeAccessGroupRequest) (vagID int64, err error)

CreateVolumeAccessGroup tbd

func (*Client) DeleteRange

func (c *Client) DeleteRange(startID, endID int64)

DeleteRange tbd

func (*Client) DeleteVolume

func (c *Client) DeleteVolume(volumeID int64) (err error)

DeleteVolume tbd

func (*Client) DetachVolume

func (c *Client) DetachVolume(v Volume) (err error)

DetachVolume tbd

func (*Client) GetAccountByID

func (c *Client) GetAccountByID(req *GetAccountByIDRequest) (account Account, err error)

GetAccountByID tbd

func (*Client) GetAccountByName

func (c *Client) GetAccountByName(req *GetAccountByNameRequest) (account Account, err error)

GetAccountByName tbd

func (*Client) GetVolumeByID

func (c *Client) GetVolumeByID(volID int64) (v Volume, err error)

GetVolumeByID tbd

func (*Client) GetVolumeByName

func (c *Client) GetVolumeByName(n string, acctID int64) (v Volume, err error)

GetVolumeByName tbd

func (*Client) GetVolumesByName

func (c *Client) GetVolumesByName(sfName string, acctID int64) (v []Volume, err error)

GetVolumesByName tbd

func (*Client) ListActiveVolumes

func (c *Client) ListActiveVolumes(listVolReq *ListActiveVolumesRequest) (volumes []Volume, err error)

ListActiveVolumes tbd

func (*Client) ListVolumeAccessGroups

func (c *Client) ListVolumeAccessGroups(r *ListVolumeAccessGroupsRequest) (vags []VolumeAccessGroup, err error)

ListVolumeAccessGroups tbd

func (*Client) ListVolumesForAccount

func (c *Client) ListVolumesForAccount(listReq *ListVolumesForAccountRequest) (volumes []Volume, err error)

ListVolumesForAccount tbd

func (*Client) Request

func (c *Client) Request(method string, params interface{}, id int) (response []byte, err error)

Request performs a json-rpc POST to the configured endpoint

type Config

type Config struct {
	TenantName     string
	EndPoint       string
	DefaultVolSz   int64 //Default volume size in GiB
	MountPoint     string
	SVIP           string
	InitiatorIFace string //iface to use of iSCSI initiator
	Types          *[]VolType
}

Config holds the configuration data for the Client to communicate with a SolidFire storage system

type CreateVolumeAccessGroupRequest

type CreateVolumeAccessGroupRequest struct {
	Name       string   `json:"name"`
	Volumes    []int64  `json:"volumes,omitempty"`
	Initiators []string `json:"initiators,omitempty"`
}

CreateVolumeAccessGroupRequest tbd

type CreateVolumeAccessGroupResult

type CreateVolumeAccessGroupResult struct {
	ID     int `json:"id"`
	Result struct {
		VagID int64 `json:"volumeAccessGroupID"`
	} `json:"result"`
}

CreateVolumeAccessGroupResult tbd

type CreateVolumeRequest

type CreateVolumeRequest struct {
	Name       string      `json:"name"`
	AccountID  int64       `json:"accountID"`
	TotalSize  int64       `json:"totalSize"`
	Enable512e bool        `json:"enable512e"`
	Qos        QoS         `json:"qos,omitempty"`
	Attributes interface{} `json:"attributes"`
}

CreateVolumeRequest tbd

type CreateVolumeResult

type CreateVolumeResult struct {
	ID     int `json:"id"`
	Result struct {
		VolumeID int64 `json:"volumeID"`
	} `json:"result"`
}

CreateVolumeResult tbd

type DeleteVolumeRequest

type DeleteVolumeRequest struct {
	VolumeID int64 `json:"volumeID"`
}

DeleteVolumeRequest tbd

type EmptyResponse

type EmptyResponse struct {
	ID     int `json:"id"`
	Result struct {
	} `json:"result"`
}

EmptyResponse tbd

type GetAccountByIDRequest

type GetAccountByIDRequest struct {
	AccountID int64 `json:"accountID"`
}

GetAccountByIDRequest tbd

type GetAccountByNameRequest

type GetAccountByNameRequest struct {
	Name string `json:"username"`
}

GetAccountByNameRequest tbd

type GetAccountResult

type GetAccountResult struct {
	ID     int `json:"id"`
	Result struct {
		Account Account `json:"account"`
	} `json:"result"`
}

GetAccountResult tbd

type ListActiveVolumesRequest

type ListActiveVolumesRequest struct {
	StartVolumeID int64 `json:"startVolumeID"`
	Limit         int64 `json:"limit"`
}

ListActiveVolumesRequest tbd

type ListVolumeAccessGroupsRequest

type ListVolumeAccessGroupsRequest struct {
	StartVAGID int64 `json:"startVolumeAccessGroupID,omitempty"`
	Limit      int64 `json:"limit,omitempty"`
}

ListVolumeAccessGroupsRequest tbd

type ListVolumesAccessGroupsResult

type ListVolumesAccessGroupsResult struct {
	ID     int `json:"id"`
	Result struct {
		Vags []VolumeAccessGroup `json:"volumeAccessGroups"`
	} `json:"result"`
}

ListVolumesAccessGroupsResult tbd

type ListVolumesForAccountRequest

type ListVolumesForAccountRequest struct {
	AccountID int64 `json:"accountID"`
}

ListVolumesForAccountRequest tbd

type ListVolumesResult

type ListVolumesResult struct {
	ID     int `json:"id"`
	Result struct {
		Volumes []Volume `json:"volumes"`
	} `json:"result"`
}

ListVolumesResult tbd

type QoS

type QoS struct {
	MinIOPS   int64 `json:"minIOPS,omitempty"`
	MaxIOPS   int64 `json:"maxIOPS,omitempty"`
	BurstIOPS int64 `json:"burstIOPS,omitempty"`
	BurstTime int64 `json:"-"`
}

QoS settings

type VolType

type VolType struct {
	Type string
	QOS  QoS
}

VolType holds quality of service configuration data

type Volume

type Volume struct {
	VolumeID           int64        `json:"volumeID"`
	Name               string       `json:"name"`
	AccountID          int64        `json:"accountID"`
	CreateTime         string       `json:"createTime"`
	Status             string       `json:"status"`
	Access             string       `json:"access"`
	Enable512e         bool         `json:"enable512e"`
	Iqn                string       `json:"iqn"`
	ScsiEUIDeviceID    string       `json:"scsiEUIDeviceID"`
	ScsiNAADeviceID    string       `json:"scsiNAADeviceID"`
	Qos                QoS          `json:"qos"`
	VolumeAccessGroups []int64      `json:"volumeAccessGroups"`
	VolumePairs        []VolumePair `json:"volumePairs"`
	DeleteTime         string       `json:"deleteTime"`
	PurgeTime          string       `json:"purgeTime"`
	SliceCount         int64        `json:"sliceCount"`
	TotalSize          int64        `json:"totalSize"`
	BlockSize          int64        `json:"blockSize"`
	VirtualVolumeID    string       `json:"virtualVolumeID"`
	Attributes         interface{}  `json:"attributes"`
}

Volume settings

type VolumeAccessGroup

type VolumeAccessGroup struct {
	Initiators     []string    `json:"initiators"`
	Attributes     interface{} `json:"attributes"`
	DeletedVolumes []int64     `json:"deletedVolumes"`
	Name           string      `json:"name"`
	VAGID          int64       `json:"volumeAccessGroupID"`
	Volumes        []int64     `json:"volumes"`
}

VolumeAccessGroup tbd

type VolumePair

type VolumePair struct {
	ClusterPairID    int64  `json:"clusterPairID"`
	RemoteVolumeID   int64  `json:"remoteVolumeID"`
	RemoteSliceID    int64  `json:"remoteSliceID"`
	RemoteVolumeName string `json:"remoteVolumeName"`
	VolumePairUUID   string `json:"volumePairUUID"`
}

VolumePair settings

Jump to

Keyboard shortcuts

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