proto

package
v2.0.0+incompatible Latest Latest
Warning

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

Go to latest
Published: Apr 10, 2020 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

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

	// 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"
	AdminLoadMetaPartition         = "/metaPartition/load"
	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"

	//token
	TokenGetURI    = "/token/get"
	TokenAddURI    = "/token/add"
	TokenDelURI    = "/token/delete"
	TokenUpdateURI = "/token/update"

	// 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"
)

api

View Source
const (
	ReadOnlyToken  = 1
	ReadWriteToken = 2
)
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"
)

api

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
	ErrCodeInternalError
	ErrCodeParamError
	ErrCodeInvalidCfg
	ErrCodePersistenceByRaft
	ErrCodeMarshalData
	ErrCodeUnmarshalData
	ErrCodeVolNotExists
	ErrCodeMetaPartitionNotExists
	ErrCodeDataPartitionNotExists
	ErrCodeDataNodeNotExists
	ErrCodeMetaNodeNotExists
	ErrCodeDuplicateVol
	ErrCodeActiveDataNodesTooLess
	ErrCodeActiveMetaNodesTooLess
	ErrCodeInvalidMpStart
	ErrCodeNoAvailDataPartition
	ErrCodeReshuffleArray
	ErrCodeIllegalDataReplica
	ErrCodeMissingReplica
	ErrCodeHasOneMissingReplica
	ErrCodeNoDataNodeToWrite
	ErrCodeNoMetaNodeToWrite
	ErrCodeCannotBeOffLine
	ErrCodeNoDataNodeToCreateDataPartition
	ErrCodeNoZoneToCreateDataPartition
	ErrCodeNoNodeSetToCreateDataPartition
	ErrCodeNoNodeSetToCreateMetaPartition
	ErrCodeNoMetaNodeToCreateMetaPartition
	ErrCodeIllegalMetaReplica
	ErrCodeNoEnoughReplica
	ErrCodeNoLeader
	ErrCodeVolAuthKeyNotMatch
	ErrCodeAuthKeyStoreError
	ErrCodeAuthAPIAccessGenRespError
	ErrCodeAuthRaftNodeGenRespError
	ErrCodeAuthOSCapsOpGenRespError
	ErrCodeAuthReqRedirectError
	ErrCodeAccessKeyNotExists
	ErrCodeInvalidTicket
	ErrCodeExpiredTicket
	ErrCodeMasterAPIGenRespError
	ErrCodeDuplicateUserID
	ErrCodeUserNotExists
	ErrCodeReadBodyError
	ErrCodeVolPolicyNotExists
	ErrCodeDuplicateAccessKey
	ErrCodeHaveNoPolicy
	ErrCodeNoZoneToCreateMetaPartition
	ErrCodeZoneNotExists
	ErrCodeOwnVolExists
	ErrCodeSuperAdminExists
	ErrCodeInvalidUserID
	ErrCodeInvalidUserType
	ErrCodeNoPermission
	ErrCodeTokenNotExist
	ErrCodeInvalidAccessKey
	ErrCodeInvalidSecretKey
)

http response error code and error message definitions

View Source
const (
	AttrMode uint32 = 1 << iota
	AttrUid
	AttrGid
)
View Source
const (
	// Mandatory
	MountPoint int = iota
	VolName
	Owner
	Master
	// Optional
	LogDir
	WarnLogDir
	LogLevel
	ProfPort
	IcacheTimeout
	LookupValid
	AttrValid
	ReadRate
	WriteRate
	EnSyncWrite
	AutoInvalData
	Rdonly
	WriteCache
	KeepCache
	FollowerRead
	Authenticate
	ClientKey
	TicketHost
	EnableHTTPS
	CertFile
	TokenKey
	AccessKey
	SecretKey
	DisableDcache
	SubDir

	MaxMountOption
)

For client

View Source
const (
	MasterAddr = "masterAddr"
	ListenPort = "listen"
)

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

	// 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

	// Commons
	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
)

Operations

View Source
const (
	WriteDeadlineTime        = 5
	ReadDeadlineTime         = 5
	SyncSendTaskDeadlineTime = 20
	NoReadDeadlineTime       = -1

	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 (
	RootIno = uint64(1)
)
View Source
const TimeFormat = "2006-01-02 15:04:05"

Variables

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

err

View Source
var (
	ExtentLength = 40
	InvalidKey   = errors.New("invalid key 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 (
	AllActions = []Action{

		OSSGetObjectAction,
		OSSPutObjectAction,
		OSSCopyObjectAction,
		OSSListObjectsAction,
		OSSDeleteObjectAction,
		OSSDeleteObjectsAction,
		OSSHeadObjectAction,
		OSSCreateBucketAction,
		OSSDeleteBucketAction,
		OSSHeadBucketAction,
		OSSListBucketsAction,
		OSSGetBucketPolicyAction,
		OSSPutBucketPolicyAction,
		OSSDeleteBucketPolicyAction,
		OSSGetBucketPolicyStatusAction,
		OSSGetBucketAclAction,
		OSSPutBucketAclAction,
		OSSGetObjectTorrentAction,
		OSSGetObjectAclAction,
		OSSPutObjectAclAction,
		OSSCreateMultipartUploadAction,
		OSSListMultipartUploadsAction,
		OSSUploadPartAction,
		OSSUploadPartCopyAction,
		OSSListPartsAction,
		OSSCompleteMultipartUploadAction,
		OSSAbortMultipartUploadAction,
		OSSGetBucketLocationAction,
		OSSGetObjectXAttrAction,
		OSSPutObjectXAttrAction,
		OSSListObjectXAttrsAction,
		OSSDeleteObjectXAttrAction,
		OSSGetObjectTaggingAction,
		OSSPutObjectTaggingAction,
		OSSDeleteObjectTaggingAction,
		OSSGetBucketTaggingAction,
		OSSPutBucketTaggingAction,
		OSSDeleteBucketTaggingAction,
		OSSGetBucketLifecycleAction,
		OSSPutBucketLifecycleAction,
		OSSDeleteBucketLifecycleAction,
		OSSGetBucketVersioningAction,
		OSSPutBucketVersioningAction,
		OSSListObjectVersionsAction,
		OSSGetObjectLegalHoldAction,
		OSSPutObjectLegalHoldAction,
		OSSGetObjectRetentionAction,
		OSSPutObjectRetentionAction,
		OSSGetBucketEncryptionAction,
		OSSPutBucketEncryptionAction,
		OSSDeleteBucketEncryptionAction,
		OSSGetBucketCorsAction,
		OSSPutBucketCorsAction,
		OSSDeleteBucketCorsAction,
		OSSGetBucketWebsiteAction,
		OSSPutBucketWebsiteAction,
		OSSDeleteBucketWebsiteAction,
		OSSRestoreObjectAction,
		OSSGetPublicAccessBlockAction,
		OSSPutPublicAccessBlockAction,
		OSSDeletePublicAccessBlockAction,
		OSSGetBucketRequestPaymentAction,
		OSSPutBucketRequestPaymentAction,
		OSSGetBucketReplicationAction,
		OSSPutBucketReplicationAction,
		OSSDeleteBucketReplicationAction,

		POSIXReadAction,
		POSIXWriteAction,
	}
)
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,
}

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

Functions

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

Types

type AKUser

type AKUser struct {
	AccessKey string `json:"access_key"`
	UserID    string `json:"user_id"`
	Password  string `json:"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"

	// 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 CORS actions
	OSSGetBucketCorsAction    Action = OSSActionPrefix + "GetBucketCors"    // unsupported
	OSSPutBucketCorsAction    Action = OSSActionPrefix + "PutBucketCors"    // unsupported
	OSSDeleteBucketCorsAction Action = OSSActionPrefix + "DeleteBucketCors" // 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"`
	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"`
}

BatchAppendExtentKeyRequest defines the request to append an extent key.

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 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 ClusterInfo

type ClusterInfo struct {
	Cluster string
	Ip      string
}

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"`
}

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

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

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 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"`
	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"`
}

InodeInfo defines the inode struct.

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 MetaPartitionInfo added in v1.5.0

type MetaPartitionInfo struct {
	PartitionID  uint64
	Start        uint64
	End          uint64
	MaxInodeID   uint64
	VolName      string
	Replicas     []*MetaReplicaInfo
	ReplicaNum   uint8
	Status       int8
	IsRecover    bool
	Hosts        []string
	Peers        []Peer
	Zones        []string
	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
	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
}

MetaPartitionReport defines the meta partition report.

type MetaPartitionView

type MetaPartitionView struct {
	PartitionID uint64
	Start       uint64
	End         uint64
	MaxInodeID  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
}

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"`
}

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 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) 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) 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) 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"`
	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"`
	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
	Status             uint8
	Capacity           uint64 // GB
	RwDpCnt            int
	MpCnt              int
	DpCnt              int
	FollowerRead       bool
	NeedToLowerReplica bool
	Authenticate       bool
	CrossZone          bool
	CreateTime         string
	EnableToken        bool
	Tokens             map[string]*Token
}

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
	TinyDeleteFileOffset int64
}

type Token

type Token struct {
	TokenType int8
	Value     string
	VolName   string
}

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
}

type UserInfo

type UserInfo struct {
	UserID     string      `json:"user_id"`
	AccessKey  string      `json:"access_key"`
	SecretKey  string      `json:"secret_key"`
	Policy     *UserPolicy `json:"policy"`
	UserType   UserType    `json:"user_type"`
	CreateTime string      `json:"create_time"`
}

func NewUserInfo

func NewUserInfo() *UserInfo

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"`
	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"`
	AuthorizedVols map[string][]string `json:"authorized_vols"` // 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 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"`
}

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"`
	sync.RWMutex
}

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"`
	TotalNodes    int
	WritableNodes int
}

type ZoneStat

type ZoneStat struct {
	DataNodeStat *ZoneNodesStat
	MetaNodeStat *ZoneNodesStat
}

Jump to

Keyboard shortcuts

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