Version: v2.4.0+incompatible Latest Latest

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

Go to latest
Published: May 14, 2021 License: Apache-2.0 Imports: 33 Imported by: 0




View Source
const (
	// Admin APIs
	AdminGetCluster                = "/admin/getCluster"
	AdminGetDataPartition          = "/dataPartition/get"
	AdminLoadDataPartition         = "/dataPartition/load"
	AdminCreateDataPartition       = "/dataPartition/create"
	AdminDecommissionDataPartition = "/dataPartition/decommission"
	AdminDiagnoseDataPartition     = "/dataPartition/diagnose"
	AdminDeleteDataReplica         = "/dataReplica/delete"
	AdminAddDataReplica            = "/dataReplica/add"
	AdminDeleteVol                 = "/vol/delete"
	AdminUpdateVol                 = "/vol/update"
	AdminVolShrink                 = "/vol/shrink"
	AdminVolExpand                 = "/vol/expand"
	AdminCreateVol                 = "/admin/createVol"
	AdminGetVol                    = "/admin/getVol"
	AdminClusterFreeze             = "/cluster/freeze"
	AdminClusterStat               = "/cluster/stat"
	AdminGetIP                     = "/admin/getIp"
	AdminCreateMetaPartition       = "/metaPartition/create"
	AdminSetMetaNodeThreshold      = "/threshold/set"
	AdminListVols                  = "/vol/list"
	AdminSetNodeInfo               = "/admin/setNodeInfo"
	AdminGetNodeInfo               = "/admin/getNodeInfo"

	//graphql master api
	AdminClusterAPI = "/api/cluster"
	AdminUserAPI    = "/api/user"
	AdminVolumeAPI  = "/api/volume"

	//graphql coonsole api
	ConsoleIQL        = "/iql"
	ConsoleLoginAPI   = "/login"
	ConsoleMonitorAPI = "/cfs_monitor"
	ConsoleFile       = "/file"
	ConsoleFileDown   = "/file/down"
	ConsoleFileUpload = "/file/upload"

	// Client APIs
	ClientDataPartitions = "/client/partitions"
	ClientVol            = "/client/vol"
	ClientMetaPartition  = "/metaPartition/get"
	ClientVolStat        = "/client/volStat"
	ClientMetaPartitions = "/client/metaPartitions"

	//raft node APIs
	AddRaftNode    = "/raftNode/add"
	RemoveRaftNode = "/raftNode/remove"

	// Node APIs
	AddDataNode                    = "/dataNode/add"
	DecommissionDataNode           = "/dataNode/decommission"
	DecommissionDisk               = "/disk/decommission"
	GetDataNode                    = "/dataNode/get"
	AddMetaNode                    = "/metaNode/add"
	DecommissionMetaNode           = "/metaNode/decommission"
	GetMetaNode                    = "/metaNode/get"
	AdminUpdateMetaNode            = "/metaNode/update"
	AdminUpdateDataNode            = "/dataNode/update"
	AdminGetInvalidNodes           = "/invalid/nodes"
	AdminLoadMetaPartition         = "/metaPartition/load"
	AdminDiagnoseMetaPartition     = "/metaPartition/diagnose"
	AdminDecommissionMetaPartition = "/metaPartition/decommission"
	AdminAddMetaReplica            = "/metaReplica/add"
	AdminDeleteMetaReplica         = "/metaReplica/delete"

	// Operation response
	GetMetaNodeTaskResponse = "/metaNode/response" // Method: 'POST', ContentType: 'application/json'
	GetDataNodeTaskResponse = "/dataNode/response" // Method: 'POST', ContentType: 'application/json'

	GetTopologyView = "/topo/get"
	UpdateZone      = "/zone/update"
	GetAllZones     = "/zone/list"

	// Header keys
	SkipOwnerValidation = "Skip-Owner-Validation"
	ForceDelete         = "Force-Delete"

	// APIs for user management
	UserCreate          = "/user/create"
	UserDelete          = "/user/delete"
	UserUpdate          = "/user/update"
	UserUpdatePolicy    = "/user/updatePolicy"
	UserRemovePolicy    = "/user/removePolicy"
	UserDeleteVolPolicy = "/user/deleteVolPolicy"
	UserGetInfo         = "/user/info"
	UserGetAKInfo       = "/user/akInfo"
	UserTransferVol     = "/user/transferVol"
	UserList            = "/user/list"
	UsersOfVol          = "/vol/users"
	//graphql api for header
	HeadAuthorized  = "Authorization"
	ParamAuthorized = "_authorization"
	UserKey         = "_user_key"
	UserInfoKey     = "_user_info_key"


View Source
const (
	TaskFailed       = 2
	TaskStart        = 0
	TaskSucceeds     = 1
	TaskRunning      = 3
	ResponseInterval = 5
	ResponseTimeOut  = 100
	MaxSendCount     = 5
View Source
const (
	APIRsc    = "API"
	APIAccess = "access"

	ClientMessage   = "Token"
	OwnerVOLRsc     = "OwnerVOL"
	NoneOwnerVOLRsc = "NoneOwnerVOL"
	VOLAccess       = "*"
View Source
const (
	// Client APIs
	ClientGetTicket = "/client/getticket"

	// Admin APIs
	AdminCreateKey  = "/admin/createkey"
	AdminDeleteKey  = "/admin/deletekey"
	AdminGetKey     = "/admin/getkey"
	AdminAddCaps    = "/admin/addcaps"
	AdminDeleteCaps = "/admin/deletecaps"
	AdminGetCaps    = "/admin/getcaps"

	//raft node APIs
	AdminAddRaftNode    = "/admin/addraftnode"
	AdminRemoveRaftNode = "/admin/removeraftnode"

	// Object node APIs
	OSAddCaps    = "/os/addcaps"
	OSDeleteCaps = "/os/deletecaps"
	OSGetCaps    = "/os/getcaps"


View Source
const (
	// AuthServiceID defines ticket for authnode access (not supported)
	AuthServiceID = "AuthService"

	// MasterServiceID defines ticket for master access
	MasterServiceID = "MasterService"

	// MetaServiceID defines ticket for metanode access (not supported)
	MetaServiceID = "MetanodeService"

	// DataServiceID defines ticket for datanode access (not supported)
	DataServiceID = "DatanodeService"

	//ObjectServiceID defines ticket for objectnode access
	ObjectServiceID = "ObjectService"
View Source
const (
	MasterNode = "master"
	MetaNode   = "metanode"
	DataNode   = "datanode"
View Source
const (
	ErrCodeSuccess = iota

http response error code and error message definitions

View Source
const (
	FlagsSyncWrite int = 1 << iota
View Source
const (
	AttrMode uint32 = 1 << iota
View Source
const (
	// Mandatory
	MountPoint int = iota
	// Optional


For client

View Source
const (
	MasterAddr       = "masterAddr"
	ListenPort       = "listen"
	ObjectNodeDomain = "objectNodeDomain"

For server

View Source
const (
	ProtoMagic           uint8 = 0xFF
	OpInitResultCode     uint8 = 0x00
	OpCreateExtent       uint8 = 0x01
	OpMarkDelete         uint8 = 0x02
	OpWrite              uint8 = 0x03
	OpRead               uint8 = 0x04
	OpStreamRead         uint8 = 0x05
	OpStreamFollowerRead uint8 = 0x06
	OpGetAllWatermarks   uint8 = 0x07

	OpNotifyReplicasToRepair         uint8 = 0x08
	OpExtentRepairRead               uint8 = 0x09
	OpBroadcastMinAppliedID          uint8 = 0x0A
	OpRandomWrite                    uint8 = 0x0F
	OpGetAppliedId                   uint8 = 0x10
	OpGetPartitionSize               uint8 = 0x11
	OpSyncRandomWrite                uint8 = 0x12
	OpSyncWrite                      uint8 = 0x13
	OpReadTinyDeleteRecord           uint8 = 0x14
	OpTinyExtentRepairRead           uint8 = 0x15
	OpGetMaxExtentIDAndPartitionSize uint8 = 0x16

	// Operations: Client -> MetaNode.
	OpMetaCreateInode   uint8 = 0x20
	OpMetaUnlinkInode   uint8 = 0x21
	OpMetaCreateDentry  uint8 = 0x22
	OpMetaDeleteDentry  uint8 = 0x23
	OpMetaOpen          uint8 = 0x24
	OpMetaLookup        uint8 = 0x25
	OpMetaReadDir       uint8 = 0x26
	OpMetaInodeGet      uint8 = 0x27
	OpMetaBatchInodeGet uint8 = 0x28
	OpMetaExtentsAdd    uint8 = 0x29
	OpMetaExtentsDel    uint8 = 0x2A
	OpMetaExtentsList   uint8 = 0x2B
	OpMetaUpdateDentry  uint8 = 0x2C
	OpMetaTruncate      uint8 = 0x2D
	OpMetaLinkInode     uint8 = 0x2E
	OpMetaEvictInode    uint8 = 0x2F
	OpMetaSetattr       uint8 = 0x30
	OpMetaReleaseOpen   uint8 = 0x31

	//Operations: MetaNode Leader -> MetaNode Follower
	OpMetaFreeInodesOnRaftFollower uint8 = 0x32

	OpMetaDeleteInode        uint8 = 0x33 // delete specified inode immediately and do not remove data.
	OpMetaBatchExtentsAdd    uint8 = 0x34 // for extents batch attachment
	OpMetaSetXAttr           uint8 = 0x35
	OpMetaGetXAttr           uint8 = 0x36
	OpMetaRemoveXAttr        uint8 = 0x37
	OpMetaListXAttr          uint8 = 0x38
	OpMetaBatchGetXAttr      uint8 = 0x39
	OpMetaExtentAddWithCheck uint8 = 0x3A // Append extent key with discard extents check

	// Operations: Master -> MetaNode
	OpCreateMetaPartition           uint8 = 0x40
	OpMetaNodeHeartbeat             uint8 = 0x41
	OpDeleteMetaPartition           uint8 = 0x42
	OpUpdateMetaPartition           uint8 = 0x43
	OpLoadMetaPartition             uint8 = 0x44
	OpDecommissionMetaPartition     uint8 = 0x45
	OpAddMetaPartitionRaftMember    uint8 = 0x46
	OpRemoveMetaPartitionRaftMember uint8 = 0x47
	OpMetaPartitionTryToLeader      uint8 = 0x48

	// Operations: Master -> DataNode
	OpCreateDataPartition           uint8 = 0x60
	OpDeleteDataPartition           uint8 = 0x61
	OpLoadDataPartition             uint8 = 0x62
	OpDataNodeHeartbeat             uint8 = 0x63
	OpReplicateFile                 uint8 = 0x64
	OpDeleteFile                    uint8 = 0x65
	OpDecommissionDataPartition     uint8 = 0x66
	OpAddDataPartitionRaftMember    uint8 = 0x67
	OpRemoveDataPartitionRaftMember uint8 = 0x68
	OpDataPartitionTryToLeader      uint8 = 0x69

	// Operations: MultipartInfo
	OpCreateMultipart  uint8 = 0x70
	OpGetMultipart     uint8 = 0x71
	OpAddMultipartPart uint8 = 0x72
	OpRemoveMultipart  uint8 = 0x73
	OpListMultiparts   uint8 = 0x74

	OpBatchDeleteExtent uint8 = 0x75 // SDK to MetaNode

	//Operations: MetaNode Leader -> MetaNode Follower
	OpMetaBatchDeleteInode  uint8 = 0x90
	OpMetaBatchDeleteDentry uint8 = 0x91
	OpMetaBatchUnlinkInode  uint8 = 0x92
	OpMetaBatchEvictInode   uint8 = 0x93

	// Commons
	OpConflictExtentsErr uint8 = 0xF2
	OpIntraGroupNetErr   uint8 = 0xF3
	OpArgMismatchErr     uint8 = 0xF4
	OpNotExistErr        uint8 = 0xF5
	OpDiskNoSpaceErr     uint8 = 0xF6
	OpDiskErr            uint8 = 0xF7
	OpErr                uint8 = 0xF8
	OpAgain              uint8 = 0xF9
	OpExistErr           uint8 = 0xFA
	OpInodeFullErr       uint8 = 0xFB
	OpTryOtherAddr       uint8 = 0xFC
	OpNotPerm            uint8 = 0xFD
	OpNotEmtpy           uint8 = 0xFE
	OpOk                 uint8 = 0xF0

	OpPing uint8 = 0xFF


View Source
const (
	WriteDeadlineTime                 = 5
	ReadDeadlineTime                  = 5
	SyncSendTaskDeadlineTime          = 20
	NoReadDeadlineTime                = -1
	BatchDeleteExtentReadDeadLineTime = 120
	GetAllWatermarksDeadLineTime      = 60
View Source
const (
	TinyExtentType   = 0
	NormalExtentType = 1
View Source
const (
	NormalCreateDataPartition         = 0
	DecommissionedCreateDataPartition = 1
View Source
const (
	ReadOnly    = 1
	ReadWrite   = 2
	Unavailable = -1

The following defines the status of a disk or a partition.

View Source
const (
	AddrSplit = "/"
View Source
const (
	DefaultZoneName = "default"
View Source
const (
	RootIno = uint64(1)
View Source
const TimeFormat = "2006-01-02 15:04:05"


View Source
var (
	ErrSuc                    = errors.New("success")
	ErrInternalError          = errors.New("internal error")
	ErrParamError             = errors.New("parameter error")
	ErrInvalidCfg             = errors.New("bad configuration file")
	ErrPersistenceByRaft      = errors.New("persistence by raft occurred error")
	ErrMarshalData            = errors.New("marshal data error")
	ErrUnmarshalData          = errors.New("unmarshal data error")
	ErrVolNotExists           = errors.New("vol not exists")
	ErrMetaPartitionNotExists = errors.New("meta partition not exists")
	ErrDataPartitionNotExists = errors.New("data partition not exists")
	ErrDataNodeNotExists      = errors.New("data node not exists")
	ErrMetaNodeNotExists      = errors.New("meta node not exists")
	ErrDuplicateVol           = errors.New("duplicate vol")
	ErrActiveDataNodesTooLess = errors.New("no enough active data node")
	ErrActiveMetaNodesTooLess = errors.New("no enough active meta node")
	ErrInvalidMpStart         = errors.New("invalid meta partition start value")
	ErrNoAvailDataPartition   = errors.New("no available data partition")
	ErrReshuffleArray         = errors.New("the array to be reshuffled is nil")

	ErrIllegalDataReplica = errors.New("data replica is illegal")

	ErrMissingReplica       = errors.New("a missing data replica is found")
	ErrHasOneMissingReplica = errors.New("there is a missing replica")

	ErrNoDataNodeToWrite = errors.New("No data node available for creating a data partition")
	ErrNoMetaNodeToWrite = errors.New("No meta node available for creating a meta partition")

	ErrCannotBeOffLine                 = errors.New("cannot take the data replica offline")
	ErrNoDataNodeToCreateDataPartition = errors.New("no enough data nodes for creating a data partition")
	ErrNoZoneToCreateDataPartition     = errors.New("no zone available for creating a data partition")
	ErrNoZoneToCreateMetaPartition     = errors.New("no zone available for creating a meta partition")
	ErrNoNodeSetToCreateDataPartition  = errors.New("no node set available for creating a data partition")
	ErrNoNodeSetToCreateMetaPartition  = errors.New("no node set available for creating a meta partition")
	ErrNoMetaNodeToCreateMetaPartition = errors.New("no enough meta nodes for creating a meta partition")
	ErrIllegalMetaReplica              = errors.New("illegal meta replica")
	ErrNoEnoughReplica                 = errors.New("no enough replicas")
	ErrNoLeader                        = errors.New("no leader")
	ErrVolAuthKeyNotMatch              = errors.New("client and server auth key do not match")
	ErrAuthKeyStoreError               = errors.New("auth keystore error")
	ErrAuthAPIAccessGenRespError       = errors.New("auth API access response error")
	ErrAuthOSCapsOpGenRespError        = errors.New("auth Object Storage Node API response error")
	ErrKeyNotExists                    = errors.New("key not exists")
	ErrDuplicateKey                    = errors.New("duplicate key")
	ErrAccessKeyNotExists              = errors.New("access key not exists")
	ErrInvalidTicket                   = errors.New("invalid ticket")
	ErrExpiredTicket                   = errors.New("expired ticket")
	ErrMasterAPIGenRespError           = errors.New("master API generate response error")
	ErrDuplicateUserID                 = errors.New("duplicate user id")
	ErrUserNotExists                   = errors.New("user not exists")
	ErrReadBodyError                   = errors.New("read request body failed")
	ErrVolPolicyNotExists              = errors.New("vol policy not exists")
	ErrDuplicateAccessKey              = errors.New("duplicate access key")
	ErrHaveNoPolicy                    = errors.New("no vol policy")
	ErrZoneNotExists                   = errors.New("zone not exists")
	ErrOwnVolExists                    = errors.New("own vols not empty")
	ErrSuperAdminExists                = errors.New("super administrator exists ")
	ErrInvalidUserID                   = errors.New("invalid user ID")
	ErrInvalidUserType                 = errors.New("invalid user type")
	ErrNoPermission                    = errors.New("no permission")
	ErrTokenNotFound                   = errors.New("token not found")
	ErrInvalidAccessKey                = errors.New("invalid access key")
	ErrInvalidSecretKey                = errors.New("invalid secret key")
	ErrIsOwner                         = errors.New("user owns the volume")


View Source
var (
	ExtentKeyHeader       = []byte("EKV2")
	ExtentKeyHeaderSize   = len(ExtentKeyHeader)
	ExtentLength          = 40
	ExtentKeyChecksumSize = 4
	ExtentV2Length        = ExtentKeyHeaderSize + ExtentLength + ExtentKeyChecksumSize
	InvalidKey            = errors.New("invalid key error")
	InvalidKeyHeader      = errors.New("invalid extent v2 key header error")
	InvalidKeyCheckSum    = errors.New("invalid extent v2 key checksum error")
View Source
var (
	GRequestID = int64(1)
	Buffers    = buf.NewBufferPool()
View Source
var (
	AKRegexp = regexp.MustCompile("^[a-zA-Z0-9]{16}$")
	SKRegexp = regexp.MustCompile("^[a-zA-Z0-9]{32}$")
View Source
var (
	Version    string
	CommitID   string
	BranchName string
	BuildTime  string
View Source
var (
	AllActions = []Action{


View Source
var Err2CodeMap = map[error]int32{
	ErrSuc:                             ErrCodeSuccess,
	ErrInternalError:                   ErrCodeInternalError,
	ErrParamError:                      ErrCodeParamError,
	ErrInvalidCfg:                      ErrCodeInvalidCfg,
	ErrPersistenceByRaft:               ErrCodePersistenceByRaft,
	ErrMarshalData:                     ErrCodeMarshalData,
	ErrUnmarshalData:                   ErrCodeUnmarshalData,
	ErrVolNotExists:                    ErrCodeVolNotExists,
	ErrMetaPartitionNotExists:          ErrCodeMetaPartitionNotExists,
	ErrDataPartitionNotExists:          ErrCodeDataPartitionNotExists,
	ErrDataNodeNotExists:               ErrCodeDataNodeNotExists,
	ErrMetaNodeNotExists:               ErrCodeMetaNodeNotExists,
	ErrDuplicateVol:                    ErrCodeDuplicateVol,
	ErrActiveDataNodesTooLess:          ErrCodeActiveDataNodesTooLess,
	ErrActiveMetaNodesTooLess:          ErrCodeActiveMetaNodesTooLess,
	ErrInvalidMpStart:                  ErrCodeInvalidMpStart,
	ErrNoAvailDataPartition:            ErrCodeNoAvailDataPartition,
	ErrReshuffleArray:                  ErrCodeReshuffleArray,
	ErrIllegalDataReplica:              ErrCodeIllegalDataReplica,
	ErrMissingReplica:                  ErrCodeMissingReplica,
	ErrHasOneMissingReplica:            ErrCodeHasOneMissingReplica,
	ErrNoDataNodeToWrite:               ErrCodeNoDataNodeToWrite,
	ErrNoMetaNodeToWrite:               ErrCodeNoMetaNodeToWrite,
	ErrCannotBeOffLine:                 ErrCodeCannotBeOffLine,
	ErrNoDataNodeToCreateDataPartition: ErrCodeNoDataNodeToCreateDataPartition,
	ErrNoZoneToCreateDataPartition:     ErrCodeNoZoneToCreateDataPartition,
	ErrNoZoneToCreateMetaPartition:     ErrCodeNoZoneToCreateMetaPartition,
	ErrNoNodeSetToCreateDataPartition:  ErrCodeNoNodeSetToCreateDataPartition,
	ErrNoNodeSetToCreateMetaPartition:  ErrCodeNoNodeSetToCreateMetaPartition,
	ErrNoMetaNodeToCreateMetaPartition: ErrCodeNoMetaNodeToCreateMetaPartition,
	ErrIllegalMetaReplica:              ErrCodeIllegalMetaReplica,
	ErrNoEnoughReplica:                 ErrCodeNoEnoughReplica,
	ErrNoLeader:                        ErrCodeNoLeader,
	ErrVolAuthKeyNotMatch:              ErrCodeVolAuthKeyNotMatch,
	ErrAuthKeyStoreError:               ErrCodeAuthKeyStoreError,
	ErrAuthAPIAccessGenRespError:       ErrCodeAuthAPIAccessGenRespError,
	ErrAuthOSCapsOpGenRespError:        ErrCodeAuthOSCapsOpGenRespError,
	ErrAccessKeyNotExists:              ErrCodeAccessKeyNotExists,
	ErrInvalidTicket:                   ErrCodeInvalidTicket,
	ErrExpiredTicket:                   ErrCodeExpiredTicket,
	ErrMasterAPIGenRespError:           ErrCodeMasterAPIGenRespError,
	ErrDuplicateUserID:                 ErrCodeDuplicateUserID,
	ErrUserNotExists:                   ErrCodeUserNotExists,
	ErrReadBodyError:                   ErrCodeReadBodyError,
	ErrVolPolicyNotExists:              ErrCodeVolPolicyNotExists,
	ErrDuplicateAccessKey:              ErrCodeDuplicateAccessKey,
	ErrHaveNoPolicy:                    ErrCodeHaveNoPolicy,
	ErrZoneNotExists:                   ErrCodeZoneNotExists,
	ErrOwnVolExists:                    ErrCodeOwnVolExists,
	ErrSuperAdminExists:                ErrCodeSuperAdminExists,
	ErrInvalidUserID:                   ErrCodeInvalidUserID,
	ErrInvalidUserType:                 ErrCodeInvalidUserType,
	ErrNoPermission:                    ErrCodeNoPermission,
	ErrTokenNotFound:                   ErrCodeTokenNotExist,
	ErrInvalidAccessKey:                ErrCodeInvalidAccessKey,
	ErrInvalidSecretKey:                ErrCodeInvalidSecretKey,
	ErrIsOwner:                         ErrCodeIsOwner,

Err2CodeMap error map to code

View Source
var MsgType2ResourceMap = map[MsgType]string{
	MsgAuthCreateKeyReq:      "auth:createkey",
	MsgAuthDeleteKeyReq:      "auth:deletekey",
	MsgAuthGetKeyReq:         "auth:getkey",
	MsgAuthAddCapsReq:        "auth:addcaps",
	MsgAuthDeleteCapsReq:     "auth:deletecaps",
	MsgAuthGetCapsReq:        "auth:getcaps",
	MsgAuthAddRaftNodeReq:    "auth:addnode",
	MsgAuthRemoveRaftNodeReq: "auth:removenode",
	MsgAuthOSAddCapsReq:      "auth:osaddcaps",
	MsgAuthOSDeleteCapsReq:   "auth:osdeletecaps",
	MsgAuthOSGetCapsReq:      "auth:osgetcaps",

	MsgMasterFetchVolViewReq: "master:getvol",

MsgType2ResourceMap define the mapping from message type to resource


func CheckAPIAccessCaps added in v1.5.0

func CheckAPIAccessCaps(ticket *cryptoutil.Ticket, rscType string, mp MsgType, action string) (err error)

CheckAPIAccessCaps checks capability

func CheckVOLAccessCaps added in v1.5.0

func CheckVOLAccessCaps(ticket *cryptoutil.Ticket, volName string, action string, accessNode string) (err error)

func DumpVersion

func DumpVersion(role string) string

func ExtractAPIAccessTicket added in v1.5.0

func ExtractAPIAccessTicket(req *APIAccessReq, key []byte) (ticket cryptoutil.Ticket, ts int64, err error)

ExtractAPIAccessTicket verify ticket validity

func ExtractTicket added in v1.5.0

func ExtractTicket(str string, key []byte) (ticket cryptoutil.Ticket, err error)

func GenerateRequestID

func GenerateRequestID() int64

GenerateRequestID generates the request ID.

func GetDataFromResp added in v1.5.0

func GetDataFromResp(body []byte, key []byte) (plaintext []byte, err error)

GetDataFromResp extract data from response

func InitMountOptions

func InitMountOptions(opts []MountOption)

func IsDir

func IsDir(mode uint32) bool

IsDir checks if the mode is dir.

func IsRegular

func IsRegular(mode uint32) bool

IsRegular checks if the mode is regular.

func IsSymlink(mode uint32) bool

IsSymlink checks if the mode is symlink.

func IsValidAK

func IsValidAK(ak string) bool

func IsValidClientID added in v1.5.0

func IsValidClientID(id string) (err error)

IsValidClientID determine the validity of a clientID

func IsValidMsgReqType added in v1.5.0

func IsValidMsgReqType(serviceID string, msgType MsgType) (err error)

IsValidMsgReqType determine the validity of a message type

func IsValidSK

func IsValidSK(sk string) bool

func IsValidServiceID added in v1.5.0

func IsValidServiceID(serviceID string) (err error)

IsValidServiceID determine the validity of a serviceID

func Mode

func Mode(osMode os.FileMode) uint32

Mode returns the fileMode.

func OsMode

func OsMode(mode uint32) os.FileMode

OsMode returns os.FileMode.

func OsModeType

func OsModeType(mode uint32) os.FileMode

Returns os.FileMode masked by os.ModeType

func ParseErrorCode

func ParseErrorCode(code int32) error

func ParseMountOptions

func ParseMountOptions(opts []MountOption, cfg *config.Config)

func ParseVerifier added in v1.5.0

func ParseVerifier(verifier string, key []byte) (ts int64, err error)

ParseVerifier checks the verifier structure for replay attack mitigation

func ReadFull

func ReadFull(c net.Conn, buf *[]byte, readSize int) (err error)

ReadFull is a wrapper function of io.ReadFull.

func SendBytes added in v1.5.0

func SendBytes(client *http.Client, target string, data []byte) (res []byte, err error)

SendBytes send raw bytes target in http/https protocol

func SendData added in v1.5.0

func SendData(client *http.Client, target string, data interface{}) (res []byte, err error)

SendData sends data to target

func VerifyAPIAccessReqIDs added in v1.5.0

func VerifyAPIAccessReqIDs(req *APIAccessReq) (err error)

VerifyAPIAccessReqIDs verify the req IDs

func VerifyAPIRespComm added in v1.5.0

func VerifyAPIRespComm(apiResp *APIAccessResp, msg MsgType, clientID string, serviceID string, ts int64) (err error)

VerifyAPIRespComm client verifies commond attributes returned from server

func VerifyTicketRespComm added in v1.5.0

func VerifyTicketRespComm(ticketResp *AuthGetTicketResp, msg MsgType, clientID string, serviceID string, ts int64) (err error)

VerifyTicketRespComm verifies the ticket respose from server


type AKUser

type AKUser struct {
	AccessKey string `json:"access_key" graphql:"access_key"`
	UserID    string `json:"user_id" graphql:"user_id"`
	Password  string `json:"password" graphql:"password"`

type APIAccessReq added in v1.5.0

type APIAccessReq struct {
	Type      MsgType `json:"type"`
	ClientID  string  `json:"client_id"`
	ServiceID string  `json:"service_id"`
	Verifier  string  `json:"verifier"`
	Ticket    string  `json:"ticket"`

APIAccessReq defines the request for access restful api use Timestamp as verifier for MITM mitigation verifier is also used to verify the server identity

type APIAccessResp added in v1.5.0

type APIAccessResp struct {
	Type      MsgType `json:"type"`
	ClientID  string  `json:"client_id"`
	ServiceID string  `json:"service_id"`
	Verifier  int64   `json:"verifier"`

APIAccessResp defines the response for access restful api use Timestamp as verifier for MITM mitigation verifier is also used to verify the server identity

type Action

type Action string
const (
	ActionPrefix      = "action:"
	OSSActionPrefix   = ActionPrefix + "oss:"
	POSIXActionPrefix = ActionPrefix + "posix:"

	// Object actions
	OSSGetObjectAction     Action = OSSActionPrefix + "GetObject"
	OSSPutObjectAction     Action = OSSActionPrefix + "PutObject"
	OSSCopyObjectAction    Action = OSSActionPrefix + "CopyObject"
	OSSListObjectsAction   Action = OSSActionPrefix + "ListObjects"
	OSSDeleteObjectAction  Action = OSSActionPrefix + "DeleteObject"
	OSSDeleteObjectsAction Action = OSSActionPrefix + "DeleteObjects"
	OSSHeadObjectAction    Action = OSSActionPrefix + "HeadObject"

	// Bucket actions
	OSSCreateBucketAction Action = OSSActionPrefix + "CreateBucket"
	OSSDeleteBucketAction Action = OSSActionPrefix + "DeleteBucket"
	OSSHeadBucketAction   Action = OSSActionPrefix + "HeadBucket"
	OSSListBucketsAction  Action = OSSActionPrefix + "ListBuckets"

	// Bucket policy actions
	OSSGetBucketPolicyAction       Action = OSSActionPrefix + "GetBucketPolicy"
	OSSPutBucketPolicyAction       Action = OSSActionPrefix + "PutBucketPolicy"
	OSSDeleteBucketPolicyAction    Action = OSSActionPrefix + "DeleteBucketPolicy"
	OSSGetBucketPolicyStatusAction Action = OSSActionPrefix + "GetBucketPolicyStatus" // unsupported

	// Bucket ACL actions
	OSSGetBucketAclAction Action = OSSActionPrefix + "GetBucketAcl"
	OSSPutBucketAclAction Action = OSSActionPrefix + "PutBucketAcl"

	// Bucket CORS actions
	OSSGetBucketCorsAction    Action = OSSActionPrefix + "GetBucketCors"
	OSSPutBucketCorsAction    Action = OSSActionPrefix + "PutBucketCors"
	OSSDeleteBucketCorsAction Action = OSSActionPrefix + "DeleteBucketCors"
	OSSOptionsObjectAction    Action = OSSActionPrefix + "OptionsObject"

	// Object torrent actions
	OSSGetObjectTorrentAction Action = OSSActionPrefix + "GetObjectTorrent" // unsupported

	// Object ACL actions
	OSSGetObjectAclAction Action = OSSActionPrefix + "GetObjectAcl"
	OSSPutObjectAclAction Action = OSSActionPrefix + "PutObjectAcl"

	// Multipart actions
	OSSCreateMultipartUploadAction   Action = OSSActionPrefix + "CreateMultipartUpload"
	OSSListMultipartUploadsAction    Action = OSSActionPrefix + "ListMultipartUploads"
	OSSUploadPartAction              Action = OSSActionPrefix + "UploadPart"
	OSSUploadPartCopyAction          Action = OSSActionPrefix + "UploadPartCopy" // unsupported
	OSSListPartsAction               Action = OSSActionPrefix + "ListParts"
	OSSCompleteMultipartUploadAction Action = OSSActionPrefix + "CompleteMultipartUpload"
	OSSAbortMultipartUploadAction    Action = OSSActionPrefix + "AbortMultipartUpload"

	// Bucket location
	OSSGetBucketLocationAction Action = OSSActionPrefix + "GetBucketLocation"

	// Object extend attributes (xattr)
	OSSGetObjectXAttrAction    Action = OSSActionPrefix + "GetObjectXAttr"
	OSSPutObjectXAttrAction    Action = OSSActionPrefix + "PutObjectXAttr"
	OSSListObjectXAttrsAction  Action = OSSActionPrefix + "ListObjectXAttrs"
	OSSDeleteObjectXAttrAction Action = OSSActionPrefix + "DeleteObjectXAttr"

	// Object tagging actions
	OSSGetObjectTaggingAction    Action = OSSActionPrefix + "GetObjectTagging"
	OSSPutObjectTaggingAction    Action = OSSActionPrefix + "PutObjectTagging"
	OSSDeleteObjectTaggingAction Action = OSSActionPrefix + "DeleteObjectTagging"

	// Bucket tagging actions
	OSSGetBucketTaggingAction    Action = OSSActionPrefix + "GetBucketTagging"
	OSSPutBucketTaggingAction    Action = OSSActionPrefix + "PutBucketTagging"
	OSSDeleteBucketTaggingAction Action = OSSActionPrefix + "DeleteBucketTagging"

	// Bucket lifecycle actions
	OSSGetBucketLifecycleAction    Action = OSSActionPrefix + "GetBucketLifecycle"    // unsupported
	OSSPutBucketLifecycleAction    Action = OSSActionPrefix + "PutBucketLifecycle"    // unsupported
	OSSDeleteBucketLifecycleAction Action = OSSActionPrefix + "DeleteBucketLifecycle" // unsupported

	// Object storage version actions
	OSSGetBucketVersioningAction Action = OSSActionPrefix + "GetBucketVersioning" // unsupported
	OSSPutBucketVersioningAction Action = OSSActionPrefix + "PutBucketVersioning" // unsupported
	OSSListObjectVersionsAction  Action = OSSActionPrefix + "ListObjectVersions"  // unsupported

	// Object legal hold actions
	OSSGetObjectLegalHoldAction Action = OSSActionPrefix + "GetObjectLegalHold" // unsupported
	OSSPutObjectLegalHoldAction Action = OSSActionPrefix + "PutObjectLegalHold" // unsupported

	// Object retention actions
	OSSGetObjectRetentionAction Action = OSSActionPrefix + "GetObjectRetention" // unsupported
	OSSPutObjectRetentionAction Action = OSSActionPrefix + "PutObjectRetention" // unsupported

	// Bucket encryption actions
	OSSGetBucketEncryptionAction    Action = OSSActionPrefix + "GetBucketEncryption"    // unsupported
	OSSPutBucketEncryptionAction    Action = OSSActionPrefix + "PutBucketEncryption"    // unsupported
	OSSDeleteBucketEncryptionAction Action = OSSActionPrefix + "DeleteBucketEncryption" // unsupported

	// Bucket website actions
	OSSGetBucketWebsiteAction    Action = OSSActionPrefix + "GetBucketWebsite"    // unsupported
	OSSPutBucketWebsiteAction    Action = OSSActionPrefix + "PutBucketWebsite"    // unsupported
	OSSDeleteBucketWebsiteAction Action = OSSActionPrefix + "DeleteBucketWebsite" // unsupported

	// Object restore actions
	OSSRestoreObjectAction Action = OSSActionPrefix + "RestoreObject" // unsupported

	// Public access block actions
	OSSGetPublicAccessBlockAction    Action = OSSActionPrefix + "GetPublicAccessBlock"   // unsupported
	OSSPutPublicAccessBlockAction    Action = OSSActionPrefix + "PutPublicAccessBlock"   // unsupported
	OSSDeletePublicAccessBlockAction Action = OSSActionPrefix + "DeletePulicAccessBlock" // unuspported

	// Bucket request payment actions
	OSSGetBucketRequestPaymentAction Action = OSSActionPrefix + "GetBucketRequestPayment" // unsupported
	OSSPutBucketRequestPaymentAction Action = OSSActionPrefix + "PutBucketRequestPayment" // unsupported

	// Bucket replication actions
	OSSGetBucketReplicationAction    Action = OSSActionPrefix + "GetBucketReplicationAction"    // unsupported
	OSSPutBucketReplicationAction    Action = OSSActionPrefix + "PutBucketReplicationAction"    // unsupported
	OSSDeleteBucketReplicationAction Action = OSSActionPrefix + "DeleteBucketReplicationAction" // unsupported

	// constants for POSIX file system interface
	POSIXReadAction  Action = POSIXActionPrefix + "Read"
	POSIXWriteAction Action = POSIXActionPrefix + "Write"

	NoneAction Action = ""

func ParseAction

func ParseAction(str string) Action

func (Action) IsNone

func (a Action) IsNone() bool

func (Action) Name

func (a Action) Name() string

func (Action) String

func (a Action) String() string

type Actions

type Actions []Action

func BuiltinPermissionActions

func BuiltinPermissionActions(perm Permission) Actions

func (Actions) Contains

func (actions Actions) Contains(action Action) bool

func (Actions) Len

func (actions Actions) Len() int

type AddDataPartitionRaftMemberRequest added in v1.4.0

type AddDataPartitionRaftMemberRequest struct {
	PartitionId uint64
	AddPeer     Peer

AddDataPartitionRaftMemberRequest defines the request of add raftMember a data partition.

type AddMetaPartitionRaftMemberRequest added in v1.4.0

type AddMetaPartitionRaftMemberRequest struct {
	PartitionId uint64
	AddPeer     Peer

AddMetaPartitionRaftMemberRequest defines the request of add raftMember a meta partition.

type AddMultipartPartRequest added in v1.5.0

type AddMultipartPartRequest struct {
	VolName     string             `json:"vol"`
	PartitionId uint64             `json:"pid"`
	Path        string             `json:"path"`
	MultipartId string             `json:"mid"`
	Part        *MultipartPartInfo `json:"part"`

type AdminTask

type AdminTask struct {
	ID           string
	PartitionID  uint64
	OpCode       uint8
	OperatorAddr string
	Status       int8
	SendTime     int64
	CreateTime   int64
	SendCount    uint8
	Request      interface{}
	Response     interface{}

AdminTask defines the administration task.

func NewAdminTask

func NewAdminTask(opCode uint8, opAddr string, request interface{}) (t *AdminTask)

NewAdminTask returns a new adminTask.

func (*AdminTask) CheckTaskNeedSend

func (t *AdminTask) CheckTaskNeedSend() (needRetry bool)

CheckTaskNeedSend checks if the task needs to be sent out.

func (*AdminTask) CheckTaskTimeOut

func (t *AdminTask) CheckTaskTimeOut() (notResponse bool)

CheckTaskTimeOut checks if the task is timed out.

func (*AdminTask) IsHeartbeatTask

func (t *AdminTask) IsHeartbeatTask() bool

IsHeartbeatTask returns if the task is a heartbeat task.

func (*AdminTask) IsTaskFailed

func (t *AdminTask) IsTaskFailed() (isFail bool)

IsTaskFailed returns if the task failed.

func (*AdminTask) IsTaskSuccessful

func (t *AdminTask) IsTaskSuccessful() (isSuccess bool)

IsTaskSuccessful returns if the task has been executed successful.

func (*AdminTask) IsUrgentTask

func (t *AdminTask) IsUrgentTask() bool

IsUrgentTask returns if the task is urgent.

func (*AdminTask) SetStatus

func (t *AdminTask) SetStatus(status int8)

SetStatus sets the status of the task.

func (*AdminTask) ToString

func (t *AdminTask) ToString() (msg string)

ToString returns the string format of the task.

type AppendExtentKeyRequest

type AppendExtentKeyRequest struct {
	VolName     string    `json:"vol"`
	PartitionID uint64    `json:"pid"`
	Inode       uint64    `json:"ino"`
	Extent      ExtentKey `json:"ek"`

AppendExtentKeyRequest defines the request to append an extent key.

type AppendExtentKeyWithCheckRequest

type AppendExtentKeyWithCheckRequest struct {
	VolName        string      `json:"vol"`
	PartitionID    uint64      `json:"pid"`
	Inode          uint64      `json:"ino"`
	Extent         ExtentKey   `json:"ek"`
	DiscardExtents []ExtentKey `json:"dek"`

type AppendExtentKeysRequest added in v1.5.0

type AppendExtentKeysRequest struct {
	VolName     string      `json:"vol"`
	PartitionId uint64      `json:"pid"`
	Inode       uint64      `json:"ino"`
	Extents     []ExtentKey `json:"eks"`

AppendExtentKeysRequest defines the request to append an extent key.

type AuthAPIAccessReq added in v1.5.0

type AuthAPIAccessReq struct {
	APIReq  APIAccessReq     `json:"api_req"`
	KeyInfo keystore.KeyInfo `json:"key_info"`

AuthAPIAccessReq defines Auth API request

type AuthAPIAccessResp added in v1.5.0

type AuthAPIAccessResp struct {
	APIResp APIAccessResp    `json:"api_resp"`
	KeyInfo keystore.KeyInfo `json:"key_info"`

AuthAPIAccessResp defines the response for creating an key in authnode

func ParseAuthAPIAccessResp added in v1.5.0

func ParseAuthAPIAccessResp(body []byte, key []byte) (resp AuthAPIAccessResp, err error)

ParseAuthAPIAccessResp parse and validate the auth api access resp

type AuthGetTicketReq added in v1.5.0

type AuthGetTicketReq struct {
	Type      MsgType `json:"type"`
	ClientID  string  `json:"client_id"`
	ServiceID string  `json:"service_id"`
	Verifier  string  `json:"verifier"`

AuthGetTicketReq defines the message from client to authnode use Timestamp as verifier for MITM mitigation verifier is also used to verify the server identity

type AuthGetTicketResp added in v1.5.0

type AuthGetTicketResp struct {
	Type       MsgType              `json:"type"`
	ClientID   string               `json:"client_id"`
	ServiceID  string               `json:"service_id"`
	Verifier   int64                `json:"verifier"`
	Ticket     string               `json:"ticket"`
	SessionKey cryptoutil.CryptoKey `json:"session_key"`

AuthGetTicketResp defines the message from authnode to client

func ParseAuthGetTicketResp added in v1.5.0

func ParseAuthGetTicketResp(body []byte, key []byte) (resp AuthGetTicketResp, err error)

ParseAuthGetTicketResp parse and validate the auth get ticket resp

type AuthOSAccessKeyReq added in v1.5.0

type AuthOSAccessKeyReq struct {
	APIReq APIAccessReq           `json:"api_req"`
	AKCaps keystore.AccessKeyCaps `json:"access_key_caps"`

AuthAPIAccessKeystoreReq defines Auth API for put/delete Access Keystore vols

type AuthOSAccessKeyResp added in v1.5.0

type AuthOSAccessKeyResp struct {
	APIResp APIAccessResp          `json:"api_resp"`
	AKCaps  keystore.AccessKeyCaps `json:"access_key_caps"`

AuthAPIAccessKeystoreResp defines the response for put/delete Access Keystore vols

func ParseAuthOSAKResp added in v1.5.0

func ParseAuthOSAKResp(body []byte, key []byte) (resp AuthOSAccessKeyResp, err error)

type AuthRaftNodeInfo added in v1.5.0

type AuthRaftNodeInfo struct {
	ID   uint64 `json:"id"`
	Addr string `json:"addr"`

AuthRaftNodeInfo defines raft node information

type AuthRaftNodeReq added in v1.5.0

type AuthRaftNodeReq struct {
	APIReq       APIAccessReq     `json:"api_req"`
	RaftNodeInfo AuthRaftNodeInfo `json:"node_info"`

AuthRaftNodeReq defines Auth API request for add/remove a raft node

type AuthRaftNodeResp added in v1.5.0

type AuthRaftNodeResp struct {
	APIResp APIAccessResp `json:"api_resp"`
	Msg     string        `json:"msg"`

AuthRaftNodeResp defines Auth API response for add/remove a raft node

func ParseAuthRaftNodeResp added in v1.5.0

func ParseAuthRaftNodeResp(body []byte, key []byte) (resp AuthRaftNodeResp, err error)

ParseAuthRaftNodeResp parse and validate the auth raft node resp

type BadPartitionView added in v1.5.0

type BadPartitionView struct {
	Path         string
	PartitionIDs []uint64

type BatchDeleteDentryRequest

type BatchDeleteDentryRequest struct {
	VolName     string   `json:"vol"`
	PartitionID uint64   `json:"pid"`
	ParentID    uint64   `json:"pino"`
	Dens        []Dentry `json:"dens"`

type BatchDeleteDentryResponse

type BatchDeleteDentryResponse struct {
	Items []*struct {
		Inode  uint64 `json:"ino"`
		Status uint8  `json:"status"`
	} `json:"items"`

BatchDeleteDentryResponse defines the response to the request of deleting a dentry.

type BatchEvictInodeRequest

type BatchEvictInodeRequest struct {
	VolName     string   `json:"vol"`
	PartitionID uint64   `json:"pid"`
	Inodes      []uint64 `json:"inos"`

EvictInodeRequest defines the request to evict some inode.

type BatchGetXAttrRequest added in v1.5.0

type BatchGetXAttrRequest struct {
	VolName     string   `json:"vol"`
	PartitionId uint64   `json:"pid"`
	Inodes      []uint64 `json:"inos"`
	Keys        []string `json:"keys"`

type BatchGetXAttrResponse added in v1.5.0

type BatchGetXAttrResponse struct {
	VolName     string `json:"vol"`
	PartitionId uint64 `json:"pid"`
	XAttrs      []*XAttrInfo

type BatchInodeGetRequest

type BatchInodeGetRequest struct {
	VolName     string   `json:"vol"`
	PartitionID uint64   `json:"pid"`
	Inodes      []uint64 `json:"inos"`

BatchInodeGetRequest defines the request to get the inode in batch.

type BatchInodeGetResponse

type BatchInodeGetResponse struct {
	Infos []*InodeInfo `json:"infos"`

BatchInodeGetResponse defines the response to the request of getting the inode in batch.

type BatchUnlinkInodeRequest

type BatchUnlinkInodeRequest struct {
	VolName     string   `json:"vol"`
	PartitionID uint64   `json:"pid"`
	Inodes      []uint64 `json:"inos"`

UnlinkInodeRequest defines the request to unlink an inode.

type BatchUnlinkInodeResponse

type BatchUnlinkInodeResponse struct {
	Items []*struct {
		Info   *InodeInfo `json:"info"`
		Status uint8      `json:"status"`
	} `json:"items"`

batch UnlinkInodeResponse defines the response to the request of unlinking an inode.

type ClusterInfo

type ClusterInfo struct {
	Cluster                     string
	Ip                          string
	MetaNodeDeleteBatchCount    uint64
	MetaNodeDeleteWorkerSleepMs uint64
	DataNodeDeleteLimitRate     uint64
	DataNodeAutoRepairLimitRate uint64

ClusterInfo defines the cluster infomation.

type ClusterStatInfo

type ClusterStatInfo struct {
	DataNodeStatInfo *NodeStatInfo
	MetaNodeStatInfo *NodeStatInfo
	ZoneStatInfo     map[string]*ZoneStat

type ClusterView added in v1.5.0

type ClusterView struct {
	Name                string
	LeaderAddr          string
	DisableAutoAlloc    bool
	MetaNodeThreshold   float32
	Applied             uint64
	MaxDataPartitionID  uint64
	MaxMetaNodeID       uint64
	MaxMetaPartitionID  uint64
	DataNodeStatInfo    *NodeStatInfo
	MetaNodeStatInfo    *NodeStatInfo
	VolStatInfo         []*VolStatInfo
	BadPartitionIDs     []BadPartitionView
	BadMetaPartitionIDs []BadPartitionView
	MetaNodes           []NodeView
	DataNodes           []NodeView

ClusterView provides the view of a cluster.

type CreateDataPartitionRequest

type CreateDataPartitionRequest struct {
	PartitionType string
	PartitionId   uint64
	PartitionSize int
	VolumeId      string
	IsRandomWrite bool
	Members       []Peer
	Hosts         []string
	CreateType    int

CreateDataPartitionRequest defines the request to create a data partition.

type CreateDataPartitionResponse

type CreateDataPartitionResponse struct {
	PartitionId uint64
	Status      uint8
	Result      string

CreateDataPartitionResponse defines the response to the request of creating a data partition.

type CreateDentryRequest

type CreateDentryRequest struct {
	VolName     string `json:"vol"`
	PartitionID uint64 `json:"pid"`
	ParentID    uint64 `json:"pino"`
	Inode       uint64 `json:"ino"`
	Name        string `json:"name"`
	Mode        uint32 `json:"mode"`

CreateDentryRequest defines the request to create a dentry.

type CreateInodeRequest

type CreateInodeRequest struct {
	VolName     string `json:"vol"`
	PartitionID uint64 `json:"pid"`
	Mode        uint32 `json:"mode"`
	Uid         uint32 `json:"uid"`
	Gid         uint32 `json:"gid"`
	Target      []byte `json:"tgt"`

CreateInodeRequest defines the request to create an inode.

type CreateInodeResponse

type CreateInodeResponse struct {
	Info *InodeInfo `json:"info"`

CreateInodeResponse defines the response to the request of creating an inode.

type CreateMetaPartitionRequest

type CreateMetaPartitionRequest struct {
	MetaId      string
	VolName     string
	Start       uint64
	End         uint64
	PartitionID uint64
	Members     []Peer

CreateMetaPartitionRequest defines the request to create a meta partition.

type CreateMetaPartitionResponse

type CreateMetaPartitionResponse struct {
	VolName     string
	PartitionID uint64
	Status      uint8
	Result      string

CreateMetaPartitionResponse defines the response to the request of creating a meta partition.

type CreateMultipartRequest added in v1.5.0

type CreateMultipartRequest struct {
	VolName     string            `json:"vol"`
	PartitionId uint64            `json:"pid"`
	Path        string            `json:"path"`
	Extend      map[string]string `json:"extend"`

type CreateMultipartResponse added in v1.5.0

type CreateMultipartResponse struct {
	Info *MultipartInfo `json:"info"`

type CreateNameSpaceRequest

type CreateNameSpaceRequest struct {
	Name string

CreateNameSpaceRequest defines the request to create a name space.

type CreateNameSpaceResponse

type CreateNameSpaceResponse struct {
	Status int
	Result string

CreateNameSpaceResponse defines the response to the request of creating a name space.

type DataNodeHeartbeatResponse

type DataNodeHeartbeatResponse struct {
	Total               uint64
	Used                uint64
	Available           uint64
	TotalPartitionSize  uint64 // volCnt * volsize
	RemainingCapacity   uint64 // remaining capacity to create partition
	CreatedPartitionCnt uint32
	MaxCapacity         uint64 // maximum capacity to create partition
	ZoneName            string
	PartitionReports    []*PartitionReport
	Status              uint8
	Result              string
	BadDisks            []string

DataNodeHeartbeatResponse defines the response to the data node heartbeat.

type DataNodeInfo added in v1.5.0

type DataNodeInfo struct {
	Total                     uint64 `json:"TotalWeight"`
	Used                      uint64 `json:"UsedWeight"`
	AvailableSpace            uint64
	ID                        uint64
	ZoneName                  string `json:"Zone"`
	Addr                      string
	ReportTime                time.Time
	IsActive                  bool
	UsageRatio                float64 // used / total space
	SelectedTimes             uint64  // number times that this datanode has been selected as the location for a data partition.
	Carry                     float64 // carry is a factor used in cacluate the node's weight
	DataPartitionReports      []*PartitionReport
	DataPartitionCount        uint32
	NodeSetID                 uint64
	PersistenceDataPartitions []uint64
	BadDisks                  []string

DataNode stores all the information about a data node

type DataPartitionDecommissionRequest

type DataPartitionDecommissionRequest struct {
	PartitionId uint64
	RemovePeer  Peer
	AddPeer     Peer

DataPartitionDecommissionRequest defines the request of decommissioning a data partition.

type DataPartitionDiagnosis

type DataPartitionDiagnosis struct {
	InactiveDataNodes           []string
	CorruptDataPartitionIDs     []uint64
	LackReplicaDataPartitionIDs []uint64
	BadDataPartitionIDs         []BadPartitionView

data partition diagnosis represents the inactive data nodes, corrupt data partitions, and data partitions lack of replicas

type DataPartitionInfo added in v1.5.0

type DataPartitionInfo struct {
	PartitionID             uint64
	LastLoadedTime          int64
	ReplicaNum              uint8
	Status                  int8
	Replicas                []*DataReplica
	Hosts                   []string // host addresses
	Peers                   []Peer
	Zones                   []string
	MissingNodes            map[string]int64 // key: address of the missing node, value: when the node is missing
	VolName                 string
	VolID                   uint64
	OfflinePeerID           uint64
	FileInCoreMap           map[string]*FileInCore
	FilesWithMissingReplica map[string]int64 // key: file name, value: last time when a missing replica is found

DataPartition represents the structure of storing the file contents.

type DataPartitionResponse

type DataPartitionResponse struct {
	PartitionID uint64
	Status      int8
	ReplicaNum  uint8
	Hosts       []string
	LeaderAddr  string
	Epoch       uint64
	IsRecover   bool

DataPartitionResponse defines the response from a data node to the master that is related to a data partition.

type DataPartitionsView

type DataPartitionsView struct {
	DataPartitions []*DataPartitionResponse

DataPartitionsView defines the view of a data partition

func NewDataPartitionsView

func NewDataPartitionsView() (dataPartitionsView *DataPartitionsView)

type DataReplica added in v1.5.0

type DataReplica struct {
	Addr            string
	ReportTime      int64
	FileCount       uint32
	Status          int8
	HasLoadResponse bool   // if there is any response when loading
	Total           uint64 `json:"TotalSize"`
	Used            uint64 `json:"UsedSize"`
	IsLeader        bool
	NeedsToCompare  bool
	DiskPath        string

DataReplica represents the replica of a data partition

type DeleteDataPartitionRequest

type DeleteDataPartitionRequest struct {
	DataPartitionType string
	PartitionId       uint64
	PartitionSize     int

DeleteDataPartitionRequest defines the request to delete a data partition.

type DeleteDataPartitionResponse

type DeleteDataPartitionResponse struct {
	Status      uint8
	Result      string
	PartitionId uint64

DeleteDataPartitionResponse defines the response to the request of deleting a data partition.

type DeleteDentryRequest

type DeleteDentryRequest struct {
	VolName     string `json:"vol"`
	PartitionID uint64 `json:"pid"`
	ParentID    uint64 `json:"pino"`
	Name        string `json:"name"`

DeleteDentryRequest define the request tp delete a dentry.

type DeleteDentryResponse

type DeleteDentryResponse struct {
	Inode uint64 `json:"ino"`

DeleteDentryResponse defines the response to the request of deleting a dentry.

type DeleteFileRequest

type DeleteFileRequest struct {
	VolId uint64
	Name  string

DeleteFileRequest defines the request to delete a file.

type DeleteFileResponse

type DeleteFileResponse struct {
	Status uint8
	Result string
	VolId  uint64
	Name   string

DeleteFileResponse defines the response to the request of deleting a file.

type DeleteInodeBatchRequest

type DeleteInodeBatchRequest struct {
	VolName     string   `json:"vol"`
	PartitionId uint64   `json:"pid"`
	Inodes      []uint64 `json:"ino"`

DeleteInodeRequest defines the request to delete an inode.

type DeleteInodeRequest added in v1.5.0

type DeleteInodeRequest struct {
	VolName     string `json:"vol"`
	PartitionId uint64 `json:"pid"`
	Inode       uint64 `json:"ino"`

DeleteInodeRequest defines the request to delete an inode.

type DeleteMetaPartitionRequest

type DeleteMetaPartitionRequest struct {
	PartitionID uint64

DeleteMetaPartitionRequest defines the request of deleting a meta partition.

type DeleteMetaPartitionResponse

type DeleteMetaPartitionResponse struct {
	PartitionID uint64
	Status      uint8
	Result      string

DeleteMetaPartitionResponse defines the response to the request of deleting a meta partition.

type Dentry

type Dentry struct {
	Name  string `json:"name"`
	Inode uint64 `json:"ino"`
	Type  uint32 `json:"type"`

Dentry defines the dentry struct.

func (Dentry) String

func (d Dentry) String() string

String returns the string format of the dentry.

type EvictInodeRequest

type EvictInodeRequest struct {
	VolName     string `json:"vol"`
	PartitionID uint64 `json:"pid"`
	Inode       uint64 `json:"ino"`

EvictInodeRequest defines the request to evict an inode.

type ExtentKey

type ExtentKey struct {
	FileOffset   uint64
	PartitionId  uint64
	ExtentId     uint64
	ExtentOffset uint64
	Size         uint32
	CRC          uint32

ExtentKey defines the extent key struct.

func (*ExtentKey) CheckSum

func (k *ExtentKey) CheckSum() uint32

func (*ExtentKey) Copy

func (k *ExtentKey) Copy() btree.Item

Marshal marshals the extent key.

func (*ExtentKey) GetExtentKey

func (k *ExtentKey) GetExtentKey() (m string)

TODO remove

func (*ExtentKey) Less

func (k *ExtentKey) Less(than btree.Item) bool

Less defines the less comparator.

func (*ExtentKey) Marshal

func (k *ExtentKey) Marshal() (m string)

func (*ExtentKey) MarshalBinary

func (k *ExtentKey) MarshalBinary() ([]byte, error)

MarshalBinary marshals the binary format of the extent key.

func (*ExtentKey) MarshalBinaryWithCheckSum

func (k *ExtentKey) MarshalBinaryWithCheckSum() ([]byte, error)

marshal extentkey to []bytes with v2 of magic head

func (ExtentKey) String

func (k ExtentKey) String() string

String returns the string format of the extentKey.

func (*ExtentKey) UnMarshal

func (k *ExtentKey) UnMarshal(m string) (err error)

TODO remove

func (*ExtentKey) UnmarshalBinary

func (k *ExtentKey) UnmarshalBinary(buf *bytes.Buffer) (err error)

UnmarshalBinary unmarshals the binary format of the extent key.

func (*ExtentKey) UnmarshalBinaryWithCheckSum

func (k *ExtentKey) UnmarshalBinaryWithCheckSum(buf *bytes.Buffer) (err error)

unmarshal extentkey from bytes.Buffer with checksum

type File

type File struct {
	Name     string
	Crc      uint32
	Size     uint32
	Modified int64

File defines the file struct.

type FileInCore added in v1.5.0

type FileInCore struct {
	Name          string
	LastModify    int64
	MetadataArray []*FileMetadata

FileInCore define file in data partition

type FileMetadata added in v1.5.0

type FileMetadata struct {
	Crc     uint32
	LocAddr string
	Size    uint32

FileMetadata defines the file metadata on a dataNode

type GeneralResp

type GeneralResp struct {
	Message string
	Code    int32

func Success

func Success(msg string) *GeneralResp

type GetExtentsRequest

type GetExtentsRequest struct {
	VolName     string `json:"vol"`
	PartitionID uint64 `json:"pid"`
	Inode       uint64 `json:"ino"`

GetExtentsRequest defines the reques to get extents.

type GetExtentsResponse

type GetExtentsResponse struct {
	Generation uint64      `json:"gen"`
	Size       uint64      `json:"sz"`
	Extents    []ExtentKey `json:"eks"`

GetExtentsResponse defines the response to the request of getting extents.

type GetMultipartRequest added in v1.5.0

type GetMultipartRequest struct {
	VolName     string `json:"vol"`
	Path        string `json:"path"`
	PartitionId uint64 `json:"pid"`
	MultipartId string `json:"mid"`

type GetMultipartResponse added in v1.5.0

type GetMultipartResponse struct {
	Info *MultipartInfo `json:"info"`

type GetXAttrRequest added in v1.5.0

type GetXAttrRequest struct {
	VolName     string `json:"vol"`
	PartitionId uint64 `json:"pid"`
	Inode       uint64 `json:"ino"`
	Key         string `json:"key"`

type GetXAttrResponse added in v1.5.0

type GetXAttrResponse struct {
	VolName     string `json:"vol"`
	PartitionId uint64 `json:"pid"`
	Inode       uint64 `json:"ino"`
	Key         string `json:"key"`
	Value       string `json:"val"`

type HTTPAuthReply added in v1.5.0

type HTTPAuthReply struct {
	Code int32       `json:"code"`
	Msg  string      `json:"msg"`
	Data interface{} `json:"data"`

HTTPAuthReply uniform response structure

func ParseAuthReply added in v1.5.0

func ParseAuthReply(body []byte) (jobj HTTPAuthReply, err error)

ParseAuthReply parse the response from auth

type HTTPReply

type HTTPReply struct {
	Code int32       `json:"code"`
	Msg  string      `json:"msg"`
	Data interface{} `json:"data"`

HTTPReply uniform response structure

type HeartBeatRequest

type HeartBeatRequest struct {
	CurrTime   int64
	MasterAddr string

HeartBeatRequest define the heartbeat request.

type InodeGetRequest

type InodeGetRequest struct {
	VolName     string `json:"vol"`
	PartitionID uint64 `json:"pid"`
	Inode       uint64 `json:"ino"`

InodeGetRequest defines the request to get the inode.

type InodeGetResponse

type InodeGetResponse struct {
	Info *InodeInfo `json:"info"`

InodeGetResponse defines the response to the InodeGetRequest.

type InodeInfo

type InodeInfo struct {
	Inode      uint64    `json:"ino"`
	Mode       uint32    `json:"mode"`
	Nlink      uint32    `json:"nlink"`
	Size       uint64    `json:"sz"`
	Uid        uint32    `json:"uid"`
	Gid        uint32    `json:"gid"`
	Generation uint64    `json:"gen"`
	ModifyTime time.Time `json:"mt"`
	CreateTime time.Time `json:"ct"`
	AccessTime time.Time `json:"at"`
	Target     []byte    `json:"tgt"`
	// contains filtered or unexported fields

InodeInfo defines the inode struct.

func (*InodeInfo) Expiration

func (info *InodeInfo) Expiration() int64

func (*InodeInfo) SetExpiration

func (info *InodeInfo) SetExpiration(e int64)

func (*InodeInfo) String

func (info *InodeInfo) String() string

String returns the string format of the inode.

type LinkInodeRequest

type LinkInodeRequest struct {
	VolName     string `json:"vol"`
	PartitionID uint64 `json:"pid"`
	Inode       uint64 `json:"ino"`

LinkInodeRequest defines the request to link an inode.

type LinkInodeResponse

type LinkInodeResponse struct {
	Info *InodeInfo `json:"info"`

LinkInodeResponse defines the response to the request of linking an inode.

type ListMultipartRequest added in v1.5.0

type ListMultipartRequest struct {
	VolName           string `json:"vol"`
	PartitionId       uint64 `json:"pid"`
	Marker            string `json:"mk"`
	MultipartIdMarker string `json:"mmk"`
	Max               uint64 `json:"max"`
	Delimiter         string `json:"dm"`
	Prefix            string `json:"pf"`

type ListMultipartResponse added in v1.5.0

type ListMultipartResponse struct {
	Multiparts []*MultipartInfo `json:"mps"`

type ListXAttrRequest added in v1.5.0

type ListXAttrRequest struct {
	VolName     string `json:"vol"`
	PartitionId uint64 `json:"pid"`
	Inode       uint64 `json:"ino"`

type ListXAttrResponse added in v1.5.0

type ListXAttrResponse struct {
	VolName     string   `json:"vol"`
	PartitionId uint64   `json:"pid"`
	Inode       uint64   `json:"ino"`
	XAttrs      []string `json:"xattrs"`

type LoadDataPartitionRequest

type LoadDataPartitionRequest struct {
	PartitionId uint64

LoadDataPartitionRequest defines the request of loading a data partition.

type LoadDataPartitionResponse

type LoadDataPartitionResponse struct {
	PartitionId       uint64
	Used              uint64
	PartitionSnapshot []*File
	Status            uint8
	PartitionStatus   int
	Result            string
	VolName           string

LoadDataPartitionResponse defines the response to the request of loading a data partition.

type LoadMetaPartitionMetricRequest

type LoadMetaPartitionMetricRequest struct {
	PartitionID uint64
	Start       uint64
	End         uint64

LoadMetaPartitionMetricRequest defines the request of loading the meta partition metrics.

type LoadMetaPartitionMetricResponse

type LoadMetaPartitionMetricResponse struct {
	Start    uint64
	End      uint64
	MaxInode uint64
	Status   uint8
	Result   string

LoadMetaPartitionMetricResponse defines the response to the request of loading the meta partition metrics.

type LookupRequest

type LookupRequest struct {
	VolName     string `json:"vol"`
	PartitionID uint64 `json:"pid"`
	ParentID    uint64 `json:"pino"`
	Name        string `json:"name"`

LookupRequest defines the request for lookup.

type LookupResponse

type LookupResponse struct {
	Inode uint64 `json:"ino"`
	Mode  uint32 `json:"mode"`

LookupResponse defines the response for the loopup request.

type MasterAPIAccessResp added in v1.5.0

type MasterAPIAccessResp struct {
	APIResp APIAccessResp `json:"api_resp"`
	Data    []byte        `json:"data"`

MasterAPIAccessResp defines the response for getting meta partition

type MetaNodeHeartbeatResponse

type MetaNodeHeartbeatResponse struct {
	ZoneName             string
	Total                uint64
	Used                 uint64
	MetaPartitionReports []*MetaPartitionReport
	Status               uint8
	Result               string

MetaNodeHeartbeatResponse defines the response to the meta node heartbeat request.

type MetaNodeInfo added in v1.5.0

type MetaNodeInfo struct {
	ID                        uint64
	Addr                      string
	IsActive                  bool
	ZoneName                  string `json:"Zone"`
	MaxMemAvailWeight         uint64 `json:"MaxMemAvailWeight"`
	Total                     uint64 `json:"TotalWeight"`
	Used                      uint64 `json:"UsedWeight"`
	Ratio                     float64
	SelectCount               uint64
	Carry                     float64
	Threshold                 float32
	ReportTime                time.Time
	MetaPartitionCount        int
	NodeSetID                 uint64
	PersistenceMetaPartitions []uint64

MetaNode defines the structure of a meta node

type MetaPartitionDecommissionRequest

type MetaPartitionDecommissionRequest struct {
	PartitionID uint64
	VolName     string
	RemovePeer  Peer
	AddPeer     Peer

MetaPartitionDecommissionRequest defines the request of decommissioning a meta partition.

type MetaPartitionDecommissionResponse

type MetaPartitionDecommissionResponse struct {
	PartitionID uint64
	VolName     string
	Status      uint8
	Result      string

MetaPartitionDecommissionResponse defines the response to the request of decommissioning a meta partition.

type MetaPartitionDiagnosis

type MetaPartitionDiagnosis struct {
	InactiveMetaNodes           []string
	CorruptMetaPartitionIDs     []uint64
	LackReplicaMetaPartitionIDs []uint64
	BadMetaPartitionIDs         []BadPartitionView

meta partition diagnosis represents the inactive meta nodes, corrupt meta partitions, and meta partitions lack of replicas

type MetaPartitionInfo added in v1.5.0

type MetaPartitionInfo struct {
	PartitionID   uint64
	Start         uint64
	End           uint64
	MaxInodeID    uint64
	InodeCount    uint64
	DentryCount   uint64
	VolName       string
	Replicas      []*MetaReplicaInfo
	ReplicaNum    uint8
	Status        int8
	IsRecover     bool
	Hosts         []string
	Peers         []Peer
	Zones         []string
	OfflinePeerID uint64
	MissNodes     map[string]int64
	LoadResponse  []*MetaPartitionLoadResponse

MetaPartition defines the structure of a meta partition

type MetaPartitionLoadRequest

type MetaPartitionLoadRequest struct {
	PartitionID uint64

MetaPartitionLoadRequest defines the request to load meta partition.

type MetaPartitionLoadResponse

type MetaPartitionLoadResponse struct {
	PartitionID uint64
	DoCompare   bool
	ApplyID     uint64
	MaxInode    uint64
	DentryCount uint64
	InodeCount  uint64
	Addr        string

MetaPartitionLoadResponse defines the response to the request of loading meta partition.

type MetaPartitionReport

type MetaPartitionReport struct {
	PartitionID uint64
	Start       uint64
	End         uint64
	Status      int
	MaxInodeID  uint64
	IsLeader    bool
	VolName     string
	InodeCnt    uint64
	DentryCnt   uint64

MetaPartitionReport defines the meta partition report.

type MetaPartitionView

type MetaPartitionView struct {
	PartitionID uint64
	Start       uint64
	End         uint64
	MaxInodeID  uint64
	InodeCount  uint64
	DentryCount uint64
	IsRecover   bool
	Members     []string
	LeaderAddr  string
	Status      int8

MetaPartitionView defines the view of a meta partition

func NewMetaPartitionView

func NewMetaPartitionView(partitionID, start, end uint64, status int8) (mpView *MetaPartitionView)

type MetaReplicaInfo added in v1.5.0

type MetaReplicaInfo struct {
	Addr       string
	ReportTime int64
	Status     int8 // unavailable, readOnly, readWrite
	IsLeader   bool

MetaReplica defines the replica of a meta partition

type MountOption

type MountOption struct {
	// contains filtered or unexported fields

func NewMountOptions

func NewMountOptions() []MountOption

func (*MountOption) GetBool

func (opt *MountOption) GetBool() bool

func (*MountOption) GetInt64

func (opt *MountOption) GetInt64() int64

func (*MountOption) GetString

func (opt *MountOption) GetString() string

func (MountOption) String

func (opt MountOption) String() string

type MountOptions

type MountOptions struct {
	Config         *config.Config
	MountPoint     string
	Volname        string
	Owner          string
	Master         string
	Logpath        string
	Loglvl         string
	Profport       string
	IcacheTimeout  int64
	LookupValid    int64
	AttrValid      int64
	ReadRate       int64
	WriteRate      int64
	EnSyncWrite    int64
	AutoInvalData  int64
	UmpDatadir     string
	Rdonly         bool
	WriteCache     bool
	KeepCache      bool
	FollowerRead   bool
	Authenticate   bool
	TicketMess     auth.TicketMess
	TokenKey       string
	AccessKey      string
	SecretKey      string
	DisableDcache  bool
	SubDir         string
	FsyncOnClose   bool
	MaxCPUs        int64
	EnableXattr    bool
	NearRead       bool
	EnablePosixACL bool

type MsgType added in v1.5.0

type MsgType uint32

MsgType defines the type of req/resp for message

const (
	// MsgAuthBase define the starting value for auth message
	MsgAuthBase MsgType = 0x100000

	// MsgAuthTicketReq request type for an auth ticket
	MsgAuthTicketReq MsgType = MsgAuthBase + 0x10000

	// MsgAuthTicketResp respose type for an auth ticket
	MsgAuthTicketResp MsgType = MsgAuthBase + 0x10001

	// MsgMasterTicketReq request type for a master ticket
	MsgMasterTicketReq MsgType = MsgAuthBase + 0x20000

	// MsgMasterTicketResp response type for a master ticket
	MsgMasterTicketResp MsgType = MsgAuthBase + 0x20001

	// MsgMetaTicketReq request type for a metanode ticket
	MsgMetaTicketReq MsgType = MsgAuthBase + 0x30000

	// MsgMetaTicketResp response type for a metanode ticket
	MsgMetaTicketResp MsgType = MsgAuthBase + 0x30001

	// MsgDataTicketReq request type for a datanode ticket
	MsgDataTicketReq MsgType = MsgAuthBase + 0x40000

	// MsgDataTicketResp response type for a datanode ticket
	MsgDataTicketResp MsgType = MsgAuthBase + 0x40001

	// MsgAuthCreateKeyReq request type for authnode add key
	MsgAuthCreateKeyReq MsgType = MsgAuthBase + 0x51000

	// MsgAuthCreateKeyResp response type for authnode add key
	MsgAuthCreateKeyResp MsgType = MsgAuthBase + 0x51001

	// MsgAuthDeleteKeyReq request type for authnode delete key
	MsgAuthDeleteKeyReq MsgType = MsgAuthBase + 0x52000

	// MsgAuthDeleteKeyResp response type for authnode delete key
	MsgAuthDeleteKeyResp MsgType = MsgAuthBase + 0x52001

	// MsgAuthGetKeyReq request type for authnode get key info
	MsgAuthGetKeyReq MsgType = MsgAuthBase + 0x53000

	// MsgAuthGetKeyResp response type for authnode get key info
	MsgAuthGetKeyResp MsgType = MsgAuthBase + 0x53001

	// MsgAuthAddCapsReq request type for authnode add caps
	MsgAuthAddCapsReq MsgType = MsgAuthBase + 0x54000

	// MsgAuthAddCapsResp response type for authnode add caps
	MsgAuthAddCapsResp MsgType = MsgAuthBase + 0x54001

	// MsgAuthDeleteCapsReq request type for authnode add caps
	MsgAuthDeleteCapsReq MsgType = MsgAuthBase + 0x55000

	// MsgAuthDeleteCapsResp response type for authnode add caps
	MsgAuthDeleteCapsResp MsgType = MsgAuthBase + 0x55001

	// MsgAuthGetCapsReq request type for authnode add caps
	MsgAuthGetCapsReq MsgType = MsgAuthBase + 0x56000

	// MsgAuthGetCapsResp response type for authnode add caps
	MsgAuthGetCapsResp MsgType = MsgAuthBase + 0x56001

	// MsgAuthAddRaftNodeReq request type for authnode add node
	MsgAuthAddRaftNodeReq MsgType = MsgAuthBase + 0x57000

	// MsgAuthAddRaftNodeResp response type for authnode remove node
	MsgAuthAddRaftNodeResp MsgType = MsgAuthBase + 0x57001

	// MsgAuthRemoveRaftNodeReq request type for authnode remove node
	MsgAuthRemoveRaftNodeReq MsgType = MsgAuthBase + 0x58000

	// MsgAuthRemoveRaftNodeResp response type for authnode remove node
	MsgAuthRemoveRaftNodeResp MsgType = MsgAuthBase + 0x58001

	// MsgAuthOSAddCapsReq request type from ObjectNode to add caps
	MsgAuthOSAddCapsReq MsgType = MsgAuthBase + 0x61000

	// MsgAuthOSAddCapsResp request type from ObjectNode to add caps
	MsgAuthOSAddCapsResp MsgType = MsgAuthBase + 0x61001

	// MsgAuthOSDeleteCapsReq request type from ObjectNode to delete caps
	MsgAuthOSDeleteCapsReq MsgType = MsgAuthBase + 0x62000

	// MsgAuthOSDeleteCapsResp request type from ObjectNode to delete caps
	MsgAuthOSDeleteCapsResp MsgType = MsgAuthBase + 0x62001

	// MsgAuthOSGetCapsReq request type from ObjectNode to get caps
	MsgAuthOSGetCapsReq MsgType = MsgAuthBase + 0x63000

	// MsgAuthOSGetCapsResp response type from ObjectNode to get caps
	MsgAuthOSGetCapsResp MsgType = MsgAuthBase + 0x63001

	// MsgMasterAPIAccessReq request type for master api access
	MsgMasterAPIAccessReq MsgType = 0x60000

	// MsgMasterAPIAccessResp response type for master api access
	MsgMasterAPIAccessResp MsgType = 0x60001

	//Master API ClientVol
	MsgMasterFetchVolViewReq MsgType = MsgMasterAPIAccessReq + 0x10000

type MultipartInfo added in v1.5.0

type MultipartInfo struct {
	ID       string               `json:"id"`
	Path     string               `json:"path"`
	InitTime time.Time            `json:"itime"`
	Parts    []*MultipartPartInfo `json:"parts"`
	Extend   map[string]string    `json:"extend"`

type MultipartPartInfo added in v1.5.0

type MultipartPartInfo struct {
	ID         uint16    `json:"id"`
	Inode      uint64    `json:"ino"`
	MD5        string    `json:"md5"`
	Size       uint64    `json:"sz"`
	UploadTime time.Time `json:"ut"`

type NodeSetView

type NodeSetView struct {
	DataNodeLen int
	MetaNodeLen int
	MetaNodes   []NodeView
	DataNodes   []NodeView

type NodeStatInfo added in v1.5.0

type NodeStatInfo struct {
	TotalGB     uint64
	UsedGB      uint64
	IncreasedGB int64
	UsedRatio   string

type NodeView added in v1.5.0

type NodeView struct {
	Addr       string
	Status     bool
	ID         uint64
	IsWritable bool

NodeView provides the view of the data or meta node.

type Nonce added in v1.5.0

type Nonce uint64

Nonce defines the nonce to mitigate the replay attack

type OSSSecure added in v1.5.0

type OSSSecure struct {
	AccessKey string
	SecretKey string

type Packet

type Packet struct {
	Magic              uint8
	ExtentType         uint8
	Opcode             uint8
	ResultCode         uint8
	RemainingFollowers uint8
	CRC                uint32
	Size               uint32
	ArgLen             uint32
	KernelOffset       uint64
	PartitionID        uint64
	ExtentID           uint64
	ExtentOffset       int64
	ReqID              int64
	Arg                []byte // for create or append ops, the data contains the address
	Data               []byte
	StartT             int64

	HasPrepare bool
	// contains filtered or unexported fields

Packet defines the packet structure.

func NewPacket

func NewPacket() *Packet

NewPacket returns a new packet.

func NewPacketReqID

func NewPacketReqID() *Packet

NewPacketReqID returns a new packet with ReqID assigned.

func (*Packet) AddMesgLog added in v1.4.0

func (p *Packet) AddMesgLog(m string)

func (*Packet) GetOpMsg

func (p *Packet) GetOpMsg() (m string)

GetOpMsg returns the operation type.

func (*Packet) GetOpMsgWithReqAndResult

func (p *Packet) GetOpMsgWithReqAndResult() (m string)

func (*Packet) GetReqID

func (p *Packet) GetReqID() int64

func (*Packet) GetResultMsg

func (p *Packet) GetResultMsg() (m string)

GetResultMsg returns the result message.

func (*Packet) GetStoreType

func (p *Packet) GetStoreType() (m string)

GetStoreType returns the store type.

func (*Packet) GetUniqueLogId

func (p *Packet) GetUniqueLogId() (m string)

GetUniqueLogId returns the unique log ID.

func (*Packet) IsBatchDeleteExtents

func (p *Packet) IsBatchDeleteExtents() bool

func (*Packet) IsForwardPkt

func (p *Packet) IsForwardPkt() bool

IsForwardPkt returns if the packet is the forward packet (a packet that will be forwarded to the followers).

func (*Packet) LogMessage

func (p *Packet) LogMessage(action, remote string, start int64, err error) (m string)

LogMessage logs the given message.

func (*Packet) MarshalData

func (p *Packet) MarshalData(v interface{}) error

MarshalData marshals the packet data.

func (*Packet) MarshalHeader

func (p *Packet) MarshalHeader(out []byte)

MarshalHeader marshals the packet header.

func (*Packet) PacketErrorWithBody

func (p *Packet) PacketErrorWithBody(code uint8, reply []byte)

PacketErrorWithBody sets the packet with error code whose body is filled with the given data.

func (*Packet) PacketOkReply

func (p *Packet) PacketOkReply()

PacketOkReply sets the result code as OpOk, and sets the body as empty.

func (*Packet) PacketOkWithBody

func (p *Packet) PacketOkWithBody(reply []byte)

PacketOkWithBody sets the result code as OpOk, and sets the body with the give data.

func (*Packet) ReadFromConn

func (p *Packet) ReadFromConn(c net.Conn, timeoutSec int) (err error)

ReadFromConn reads the data from the given connection.

func (*Packet) SetPacketHasPrepare added in v1.4.0

func (p *Packet) SetPacketHasPrepare()

func (*Packet) SetPacketRePrepare added in v1.4.0

func (p *Packet) SetPacketRePrepare()

func (*Packet) ShouldRetry

func (p *Packet) ShouldRetry() bool

ShallRetry returns if we should retry the packet.

func (*Packet) String

func (p *Packet) String() string

func (*Packet) UnmarshalData

func (p *Packet) UnmarshalData(v interface{}) error

UnmarshalData unmarshals the packet data.

func (*Packet) UnmarshalHeader

func (p *Packet) UnmarshalHeader(in []byte) error

UnmarshalHeader unmarshals the packet header.

func (*Packet) WriteToConn

func (p *Packet) WriteToConn(c net.Conn) (err error)

WriteToConn writes through the given connection.

func (*Packet) WriteToNoDeadLineConn

func (p *Packet) WriteToNoDeadLineConn(c net.Conn) (err error)

WriteToNoDeadLineConn writes through the connection without deadline.

type PartitionReport

type PartitionReport struct {
	VolName         string
	PartitionID     uint64
	PartitionStatus int
	Total           uint64
	Used            uint64
	DiskPath        string
	IsLeader        bool
	ExtentCount     int
	NeedCompare     bool

PartitionReport defines the partition report.

type Peer

type Peer struct {
	ID   uint64 `json:"id"`
	Addr string `json:"addr"`

Peer defines the peer of the node id and address.

type Permission

type Permission string
const (
	// prefixes for value organization
	PermissionPrefix        Permission = "perm:"
	BuiltinPermissionPrefix Permission = PermissionPrefix + "builtin:"
	CustomPermissionPrefix  Permission = PermissionPrefix + "custom:"

	// constants for builtin permissions
	BuiltinPermissionReadOnly Permission = BuiltinPermissionPrefix + "ReadOnly"
	BuiltinPermissionWritable Permission = BuiltinPermissionPrefix + "Writable"

	// constants for unknown permission
	NonePermission Permission = ""

func NewCustomPermission

func NewCustomPermission(name string) Permission

func ParsePermission

func ParsePermission(value string) Permission

func (Permission) IsBuiltin

func (p Permission) IsBuiltin() bool

func (Permission) IsCustom

func (p Permission) IsCustom() bool

func (Permission) IsNone

func (p Permission) IsNone() bool

func (Permission) MatchSubdir

func (p Permission) MatchSubdir(subdir string) bool

func (Permission) ReadableString

func (p Permission) ReadableString() string

func (Permission) String

func (p Permission) String() string

func (Permission) Valid

func (p Permission) Valid() bool

type ReadDirRequest

type ReadDirRequest struct {
	VolName     string `json:"vol"`
	PartitionID uint64 `json:"pid"`
	ParentID    uint64 `json:"pino"`

ReadDirRequest defines the request to read dir.

type ReadDirResponse

type ReadDirResponse struct {
	Children []Dentry `json:"children"`

ReadDirResponse defines the response to the request of reading dir.

type RegisterMetaNodeResp

type RegisterMetaNodeResp struct {
	ID uint64

RegisterMetaNodeResp defines the response to register a meta node.

type RemoveDataPartitionRaftMemberRequest added in v1.4.0

type RemoveDataPartitionRaftMemberRequest struct {
	PartitionId uint64
	RemovePeer  Peer

RemoveDataPartitionRaftMemberRequest defines the request of add raftMember a data partition.

type RemoveMetaPartitionRaftMemberRequest added in v1.4.0

type RemoveMetaPartitionRaftMemberRequest struct {
	PartitionId uint64
	RemovePeer  Peer

RemoveMetaPartitionRaftMemberRequest defines the request of add raftMember a meta partition.

type RemoveMultipartRequest added in v1.5.0

type RemoveMultipartRequest struct {
	VolName     string `json:"vol"`
	PartitionId uint64 `json:"pid"`
	Path        string `json:"path"`
	MultipartId string `json:"mid"`

type RemoveXAttrRequest added in v1.5.0

type RemoveXAttrRequest struct {
	VolName     string `json:"vol"`
	PartitionId uint64 `json:"pid"`
	Inode       uint64 `json:"ino"`
	Key         string `json:"key"`

type ServiceID added in v1.5.0

type ServiceID uint32

ServiceID defines the type of tickets

type SetAttrRequest

type SetAttrRequest struct {
	VolName     string `json:"vol"`
	PartitionID uint64 `json:"pid"`
	Inode       uint64 `json:"ino"`
	Mode        uint32 `json:"mode"`
	Uid         uint32 `json:"uid"`
	Gid         uint32 `json:"gid"`
	ModifyTime  int64  `json:"mt"`
	AccessTime  int64  `json:"at"`
	Valid       uint32 `json:"valid"`

SetAttrRequest defines the request to set attribute.

type SetXAttrRequest added in v1.5.0

type SetXAttrRequest struct {
	VolName     string `json:"vol"`
	PartitionId uint64 `json:"pid"`
	Inode       uint64 `json:"ino"`
	Key         string `json:"key"`
	Value       string `json:"val"`

type SimpleVolView

type SimpleVolView struct {
	ID                 uint64
	Name               string
	Owner              string
	ZoneName           string
	DpReplicaNum       uint8
	MpReplicaNum       uint8
	InodeCount         uint64
	DentryCount        uint64
	MaxMetaPartitionID uint64
	Status             uint8
	Capacity           uint64 // GB
	RwDpCnt            int
	MpCnt              int
	DpCnt              int
	FollowerRead       bool
	NeedToLowerReplica bool
	Authenticate       bool
	CrossZone          bool
	CreateTime         string
	EnableToken        bool
	Description        string
	DpSelectorName     string
	DpSelectorParm     string

SimpleVolView defines the simple view of a volume

type TinyExtentDeleteRecord

type TinyExtentDeleteRecord struct {
	FileOffset   uint64
	PartitionId  uint64
	ExtentId     uint64
	ExtentOffset uint64
	Size         uint32
	CRC          uint32

type TopologyView

type TopologyView struct {
	Zones []*ZoneView

TopologyView provides the view of the topology view of the cluster

type TruncateRequest

type TruncateRequest struct {
	VolName     string `json:"vol"`
	PartitionID uint64 `json:"pid"`
	Inode       uint64 `json:"ino"`
	Size        uint64 `json:"sz"`

TruncateRequest defines the request to truncate.

type UnlinkInodeRequest

type UnlinkInodeRequest struct {
	VolName     string `json:"vol"`
	PartitionID uint64 `json:"pid"`
	Inode       uint64 `json:"ino"`

UnlinkInodeRequest defines the request to unlink an inode.

type UnlinkInodeResponse

type UnlinkInodeResponse struct {
	Info *InodeInfo `json:"info"`

UnlinkInodeResponse defines the response to the request of unlinking an inode.

type UpdateDentryRequest

type UpdateDentryRequest struct {
	VolName     string `json:"vol"`
	PartitionID uint64 `json:"pid"`
	ParentID    uint64 `json:"pino"`
	Name        string `json:"name"`
	Inode       uint64 `json:"ino"` // new inode number

UpdateDentryRequest defines the request to update a dentry.

type UpdateDentryResponse

type UpdateDentryResponse struct {
	Inode uint64 `json:"ino"` // old inode number

UpdateDentryResponse defines the response to the request of updating a dentry.

type UpdateMetaPartitionRequest

type UpdateMetaPartitionRequest struct {
	PartitionID uint64
	VolName     string
	Start       uint64
	End         uint64

UpdateMetaPartitionRequest defines the request to update a meta partition.

type UpdateMetaPartitionResponse

type UpdateMetaPartitionResponse struct {
	PartitionID uint64
	VolName     string
	End         uint64
	Status      uint8
	Result      string

UpdateMetaPartitionResponse defines the response to the request of updating the meta partition.

type UserCreateParam

type UserCreateParam struct {
	ID          string   `json:"id"`
	Password    string   `json:"pwd"`
	AccessKey   string   `json:"ak"`
	SecretKey   string   `json:"sk"`
	Type        UserType `json:"type"`
	Description string   `json:"description"`

type UserInfo

type UserInfo struct {
	UserID      string       `json:"user_id" graphql:"user_id"`
	AccessKey   string       `json:"access_key" graphql:"access_key"`
	SecretKey   string       `json:"secret_key" graphql:"secret_key"`
	Policy      *UserPolicy  `json:"policy" graphql:"policy"`
	UserType    UserType     `json:"user_type" graphql:"user_type"`
	CreateTime  string       `json:"create_time" graphql:"create_time"`
	Description string       `json:"description" graphql:"description"`
	Mu          sync.RWMutex `json:"-" graphql:"-"`
	EMPTY       bool         //graphql need ???

func NewUserInfo

func NewUserInfo() *UserInfo

func (*UserInfo) String

func (i *UserInfo) String() string

type UserPermRemoveParam

type UserPermRemoveParam struct {
	UserID string `json:"user_id"`
	Volume string `json:"volume"`

func NewUserPermRemoveParam

func NewUserPermRemoveParam(userID, volmue string) *UserPermRemoveParam

type UserPermUpdateParam

type UserPermUpdateParam struct {
	UserID string   `json:"user_id"`
	Volume string   `json:"volume"`
	Subdir string   `json:"subdir"`
	Policy []string `json:"policy"`

func NewUserPermUpdateParam

func NewUserPermUpdateParam(userID, volmue string) *UserPermUpdateParam

func (*UserPermUpdateParam) SetPolicy

func (param *UserPermUpdateParam) SetPolicy(policy string)

type UserPolicy

type UserPolicy struct {
	OwnVols        []string            `json:"own_vols" graphql:"own_vols"`
	AuthorizedVols map[string][]string `json:"authorized_vols" graphql:"-"` // mapping: volume -> actions
	// contains filtered or unexported fields

func CleanPolicy

func CleanPolicy(policy *UserPolicy) (newUserPolicy *UserPolicy)

func NewUserPolicy

func NewUserPolicy() *UserPolicy

func (*UserPolicy) Add

func (policy *UserPolicy) Add(addPolicy *UserPolicy)

func (*UserPolicy) AddAuthorizedVol

func (policy *UserPolicy) AddAuthorizedVol(volume string, policies []string)

func (*UserPolicy) AddOwnVol

func (policy *UserPolicy) AddOwnVol(volume string)

func (*UserPolicy) Delete

func (policy *UserPolicy) Delete(deletePolicy *UserPolicy)

func (*UserPolicy) IsAuthorized

func (policy *UserPolicy) IsAuthorized(volume, subdir string, action Action) bool

func (*UserPolicy) IsOwn

func (policy *UserPolicy) IsOwn(volume string) bool

func (*UserPolicy) RemoveAuthorizedVol

func (policy *UserPolicy) RemoveAuthorizedVol(volume string)

func (*UserPolicy) RemoveOwnVol

func (policy *UserPolicy) RemoveOwnVol(volume string)

func (*UserPolicy) SetActions

func (policy *UserPolicy) SetActions(volume string, actions Actions)

func (*UserPolicy) SetPerm

func (policy *UserPolicy) SetPerm(volume string, perm Permission)

type UserTransferVolParam

type UserTransferVolParam struct {
	Volume  string `json:"volume"`
	UserSrc string `json:"user_src"`
	UserDst string `json:"user_dst"`
	Force   bool   `json:"force"`

type UserType

type UserType uint8
const (
	UserTypeInvalid UserType = 0x0
	UserTypeRoot    UserType = 0x1
	UserTypeAdmin   UserType = 0x2
	UserTypeNormal  UserType = 0x3

func UserTypeFromString

func UserTypeFromString(name string) UserType

func (UserType) String

func (u UserType) String() string

func (UserType) Valid

func (u UserType) Valid() bool

type UserUpdateParam

type UserUpdateParam struct {
	UserID      string   `json:"user_id"`
	AccessKey   string   `json:"access_key"`
	SecretKey   string   `json:"secret_key"`
	Type        UserType `json:"type"`
	Password    string   `json:"password"`
	Description string   `json:"description"`

type VolInfo

type VolInfo struct {
	Name       string
	Owner      string
	CreateTime int64
	Status     uint8
	TotalSize  uint64
	UsedSize   uint64

func NewVolInfo

func NewVolInfo(name, owner string, createTime int64, status uint8, totalSize, usedSize uint64) *VolInfo

type VolStatInfo

type VolStatInfo struct {
	Name        string
	TotalSize   uint64
	UsedSize    uint64
	UsedRatio   string
	EnableToken bool

type VolUser

type VolUser struct {
	Vol     string       `json:"vol"`
	UserIDs []string     `json:"user_id"`
	Mu      sync.RWMutex `json:"-" graphql:"-"`

type VolView

type VolView struct {
	Name           string
	Owner          string
	Status         uint8
	FollowerRead   bool
	MetaPartitions []*MetaPartitionView
	DataPartitions []*DataPartitionResponse
	OSSSecure      *OSSSecure
	CreateTime     int64

VolView defines the view of a volume

func NewVolView

func NewVolView(name string, status uint8, followerRead bool, createTime int64) (view *VolView)

func (*VolView) SetOSSSecure added in v1.5.0

func (v *VolView) SetOSSSecure(accessKey, secretKey string)

func (*VolView) SetOwner added in v1.5.0

func (v *VolView) SetOwner(owner string)

type XAttrInfo added in v1.5.0

type XAttrInfo struct {
	Inode  uint64
	XAttrs map[string]string

func (XAttrInfo) Get

func (info XAttrInfo) Get(key string) []byte

func (XAttrInfo) String added in v1.5.0

func (info XAttrInfo) String() string

func (XAttrInfo) VisitAll

func (info XAttrInfo) VisitAll(visitor func(key string, value []byte) bool)

type ZoneNodesStat

type ZoneNodesStat struct {
	Total         float64 `json:"TotalGB"`
	Used          float64 `json:"UsedGB"`
	Avail         float64 `json:"AvailGB"`
	UsedRatio     float64
	TotalNodes    int
	WritableNodes int

type ZoneStat

type ZoneStat struct {
	DataNodeStat *ZoneNodesStat
	MetaNodeStat *ZoneNodesStat

type ZoneView

type ZoneView struct {
	Name    string
	Status  string
	NodeSet map[uint64]*NodeSetView

ZoneView define the view of zone

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto
y or Y : Canonical URL