Documentation
¶
Index ¶
- Constants
- Variables
- func CheckAPIAccessCaps(ticket *cryptoutil.Ticket, rscType string, mp MsgType, action string) (err error)
- func CheckVOLAccessCaps(ticket *cryptoutil.Ticket, volName string, action string, accessNode string) (err error)
- func ExtractAPIAccessTicket(req *APIAccessReq, key []byte) (ticket cryptoutil.Ticket, ts int64, err error)
- func ExtractTicket(str string, key []byte) (ticket cryptoutil.Ticket, err error)
- func GenerateRequestID() int64
- func GetDataFromResp(body []byte, key []byte) (plaintext []byte, err error)
- func IsDir(mode uint32) bool
- func IsRegular(mode uint32) bool
- func IsSymlink(mode uint32) bool
- func IsValidClientID(id string) (err error)
- func IsValidMsgReqType(serviceID string, msgType MsgType) (err error)
- func IsValidServiceID(serviceID string) (err error)
- func Mode(osMode os.FileMode) uint32
- func OsMode(mode uint32) os.FileMode
- func ParseVerifier(verifier string, key []byte) (ts int64, err error)
- func ReadFull(c net.Conn, buf *[]byte, readSize int) (err error)
- func SendBytes(client *http.Client, target string, data []byte) (res []byte, err error)
- func SendData(client *http.Client, target string, data interface{}) (res []byte, err error)
- func VerifyAPIAccessReqIDs(req *APIAccessReq) (err error)
- func VerifyAPIRespComm(apiResp *APIAccessResp, msg MsgType, clientID string, serviceID string, ...) (err error)
- func VerifyTicketRespComm(ticketResp *AuthGetTicketResp, msg MsgType, clientID string, serviceID string, ...) (err error)
- type APIAccessReq
- type APIAccessResp
- type AddDataPartitionRaftMemberRequest
- type AddMetaPartitionRaftMemberRequest
- type AddMultipartPartRequest
- type AdminTask
- func (t *AdminTask) CheckTaskNeedSend() (needRetry bool)
- func (t *AdminTask) CheckTaskTimeOut() (notResponse bool)
- func (t *AdminTask) IsHeartbeatTask() bool
- func (t *AdminTask) IsTaskFailed() (isFail bool)
- func (t *AdminTask) IsTaskSuccessful() (isSuccess bool)
- func (t *AdminTask) IsUrgentTask() bool
- func (t *AdminTask) SetStatus(status int8)
- func (t *AdminTask) ToString() (msg string)
- type AppendExtentKeyRequest
- type AppendExtentKeysRequest
- type AuthAPIAccessReq
- type AuthAPIAccessResp
- type AuthGetTicketReq
- type AuthGetTicketResp
- type AuthOSAccessKeyReq
- type AuthOSAccessKeyResp
- type AuthRaftNodeInfo
- type AuthRaftNodeReq
- type AuthRaftNodeResp
- type BadPartitionView
- type BatchGetXAttrRequest
- type BatchGetXAttrResponse
- type BatchInodeGetRequest
- type BatchInodeGetResponse
- type ClusterInfo
- type ClusterView
- type CreateDataPartitionRequest
- type CreateDataPartitionResponse
- type CreateDentryRequest
- type CreateInodeRequest
- type CreateInodeResponse
- type CreateMetaPartitionRequest
- type CreateMetaPartitionResponse
- type CreateMultipartRequest
- type CreateMultipartResponse
- type CreateNameSpaceRequest
- type CreateNameSpaceResponse
- type DataNodeHeartbeatResponse
- type DataNodeInfo
- type DataPartitionDecommissionRequest
- type DataPartitionInfo
- type DataPartitionResponse
- type DataPartitionsView
- type DataReplica
- type DeleteDataPartitionRequest
- type DeleteDataPartitionResponse
- type DeleteDentryRequest
- type DeleteDentryResponse
- type DeleteFileRequest
- type DeleteFileResponse
- type DeleteInodeRequest
- type DeleteMetaPartitionRequest
- type DeleteMetaPartitionResponse
- type Dentry
- type EvictInodeRequest
- type ExtentKey
- func (k *ExtentKey) Copy() btree.Item
- func (k *ExtentKey) GetExtentKey() (m string)
- func (k *ExtentKey) Less(than btree.Item) bool
- func (k *ExtentKey) Marshal() (m string)
- func (k *ExtentKey) MarshalBinary() ([]byte, error)
- func (k ExtentKey) String() string
- func (k *ExtentKey) UnMarshal(m string) (err error)
- func (k *ExtentKey) UnmarshalBinary(buf *bytes.Buffer) (err error)
- type File
- type FileInCore
- type FileMetadata
- type GetExtentsRequest
- type GetExtentsResponse
- type GetMultipartRequest
- type GetMultipartResponse
- type GetXAttrRequest
- type GetXAttrResponse
- type HTTPAuthReply
- type HTTPReply
- type HeartBeatRequest
- type InodeGetRequest
- type InodeGetResponse
- type InodeInfo
- type LinkInodeRequest
- type LinkInodeResponse
- type ListMultipartRequest
- type ListMultipartResponse
- type ListXAttrRequest
- type ListXAttrResponse
- type LoadDataPartitionRequest
- type LoadDataPartitionResponse
- type LoadMetaPartitionMetricRequest
- type LoadMetaPartitionMetricResponse
- type LookupRequest
- type LookupResponse
- type MasterAPIAccessResp
- type MetaNodeHeartbeatResponse
- type MetaNodeInfo
- type MetaPartitionDecommissionRequest
- type MetaPartitionDecommissionResponse
- type MetaPartitionInfo
- type MetaPartitionLoadRequest
- type MetaPartitionLoadResponse
- type MetaPartitionReport
- type MetaPartitionView
- type MetaReplicaInfo
- type MsgType
- type MultipartInfo
- type MultipartPartInfo
- type NodeStatInfo
- type NodeView
- type Nonce
- type OSSSecure
- type Packet
- func (p *Packet) AddMesgLog(m string)
- func (p *Packet) GetOpMsg() (m string)
- func (p *Packet) GetReqID() int64
- func (p *Packet) GetResultMsg() (m string)
- func (p *Packet) GetStoreType() (m string)
- func (p *Packet) GetUniqueLogId() (m string)
- func (p *Packet) IsForwardPkt() bool
- func (p *Packet) LogMessage(action, remote string, start int64, err error) (m string)
- func (p *Packet) MarshalData(v interface{}) error
- func (p *Packet) MarshalHeader(out []byte)
- func (p *Packet) PacketErrorWithBody(code uint8, reply []byte)
- func (p *Packet) PacketOkReply()
- func (p *Packet) PacketOkWithBody(reply []byte)
- func (p *Packet) ReadFromConn(c net.Conn, timeoutSec int) (err error)
- func (p *Packet) SetPacketHasPrepare()
- func (p *Packet) SetPacketRePrepare()
- func (p *Packet) ShouldRetry() bool
- func (p *Packet) String() string
- func (p *Packet) UnmarshalData(v interface{}) error
- func (p *Packet) UnmarshalHeader(in []byte) error
- func (p *Packet) WriteToConn(c net.Conn) (err error)
- func (p *Packet) WriteToNoDeadLineConn(c net.Conn) (err error)
- type PartitionReport
- type Peer
- type ReadDirRequest
- type ReadDirResponse
- type RegisterMetaNodeResp
- type RemoveDataPartitionRaftMemberRequest
- type RemoveMetaPartitionRaftMemberRequest
- type RemoveMultipartRequest
- type RemoveXAttrRequest
- type ServiceID
- type SetAttrRequest
- type SetXAttrRequest
- type SimpleVolView
- type TinyExtentDeleteRecord
- type TruncateRequest
- type UnlinkInodeRequest
- type UnlinkInodeResponse
- type UpdateDentryRequest
- type UpdateDentryResponse
- type UpdateMetaPartitionRequest
- type UpdateMetaPartitionResponse
- type VolStatInfo
- type VolView
- type XAttrInfo
Constants ¶
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" AdminGetIP = "/admin/getIp" AdminCreateMetaPartition = "/metaPartition/create" AdminSetMetaNodeThreshold = "/threshold/set" // Client APIs ClientDataPartitions = "/client/partitions" ClientVol = "/client/vol" ClientMetaPartition = "/client/metaPartition" 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" // Header keys SkipOwnerValidation = "Skip-Owner-Validation" )
api
const ( TaskFailed = 2 TaskStart = 0 TaskSucceeds = 1 TaskRunning = 3 ResponseInterval = 5 ResponseTimeOut = 100 MaxSendCount = 5 )
const ( APIRsc = "API" APIAccess = "access" ClientMessage = "Token" OwnerVOLRsc = "OwnerVOL" NoneOwnerVOLRsc = "NoneOwnerVOL" VOLAccess = "*" )
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
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" )
const ( MasterNode = "master" MetaNode = "metanode" DataNode = "datanode" )
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 ErrCodeNoCellToCreateDataPartition ErrCodeNoNodeSetToCreateDataPartition ErrCodeNoNodeSetToCreateMetaPartition ErrCodeNoMetaNodeToCreateMetaPartition ErrCodeIllegalMetaReplica ErrCodeNoEnoughReplica ErrCodeNoLeader ErrCodeVolAuthKeyNotMatch ErrCodeAuthKeyStoreError ErrCodeAuthAPIAccessGenRespError ErrCodeAuthRaftNodeGenRespError ErrCodeAuthOSCapsOpGenRespError ErrCodeAuthReqRedirectError ErrCodeAccessKeyNotExists ErrCodeInvalidTicket ErrCodeExpiredTicket ErrCodeMasterAPIGenRespError )
http response error code and error message definitions
const ( AttrMode uint32 = 1 << iota AttrUid AttrGid )
const ( // Mandatory MountPoint = "mountPoint" VolName = "volName" Owner = "owner" MasterAddr = "masterAddr" LogDir = "logDir" WarnLogDir = "warnLogDir" Authenticate = "authenticate" // Optional LogLevel = "logLevel" ProfPort = "profPort" IcacheTimeout = "icacheTimeout" LookupValid = "lookupValid" AttrValid = "attrValid" ReadRate = "readRate" WriteRate = "writeRate" EnSyncWrite = "enSyncWrite" AutoInvalData = "autoInvalData" Rdonly = "rdonly" WriteCache = "writecache" KeepCache = "keepcache" CertFile = "certFile" ClientKey = "clientKey" TicketHost = "ticketHost" EnableHTTPS = "enableHTTPS" )
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
const ( WriteDeadlineTime = 5 ReadDeadlineTime = 5 SyncSendTaskDeadlineTime = 20 NoReadDeadlineTime = -1 GetAllWatermarksDeadLineTime = 60 )
const ( TinyExtentType = 0 NormalExtentType = 1 )
const ( NormalCreateDataPartition = 0 DecommissionedCreateDataPartition = 1 )
const ( ReadOnly = 1 ReadWrite = 2 )
The following defines the status of a disk or a partition.
const (
AddrSplit = "/"
)
const (
RootIno = uint64(1)
)
Variables ¶
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 data 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") ErrNoCellToCreateDataPartition = errors.New("no cell available for creating a data 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") )
err
var ( ExtentLength = 40 InvalidKey = errors.New("invalid key error") )
var ( GRequestID = int64(1) Buffers = buf.NewBufferPool() )
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, ErrNoCellToCreateDataPartition: ErrCodeNoCellToCreateDataPartition, 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, }
Err2CodeMap error map to code
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 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 GetDataFromResp ¶ added in v1.5.0
GetDataFromResp extract data from response
func IsValidClientID ¶ added in v1.5.0
IsValidClientID determine the validity of a clientID
func IsValidMsgReqType ¶ added in v1.5.0
IsValidMsgReqType determine the validity of a message type
func IsValidServiceID ¶ added in v1.5.0
IsValidServiceID determine the validity of a serviceID
func ParseVerifier ¶ added in v1.5.0
ParseVerifier checks the verifier structure for replay attack mitigation
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 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 AddDataPartitionRaftMemberRequest ¶ added in v1.4.0
AddDataPartitionRaftMemberRequest defines the request of add raftMember a data partition.
type AddMetaPartitionRaftMemberRequest ¶ added in v1.4.0
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 ¶
NewAdminTask returns a new adminTask.
func (*AdminTask) CheckTaskNeedSend ¶
CheckTaskNeedSend checks if the task needs to be sent out.
func (*AdminTask) CheckTaskTimeOut ¶
CheckTaskTimeOut checks if the task is timed out.
func (*AdminTask) IsHeartbeatTask ¶
IsHeartbeatTask returns if the task is a heartbeat task.
func (*AdminTask) IsTaskFailed ¶
IsTaskFailed returns if the task failed.
func (*AdminTask) IsTaskSuccessful ¶
IsTaskSuccessful returns if the task has been executed successful.
func (*AdminTask) IsUrgentTask ¶
IsUrgentTask returns if the task is urgent.
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
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 BatchGetXAttrRequest ¶ added in v1.5.0
type BatchGetXAttrResponse ¶ added in v1.5.0
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 ¶
ClusterInfo defines the cluster infomation.
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
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 ¶
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 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 ¶
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
CellName 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
CellName string `json:"Cell"`
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 ¶
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
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 ¶
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 ¶
DeleteFileRequest defines the request to delete a file.
type DeleteFileResponse ¶
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 ¶
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.
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) MarshalBinary ¶
MarshalBinary marshals the binary format of the extent key.
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
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 GetMultipartResponse ¶ added in v1.5.0
type GetMultipartResponse struct {
Info *MultipartInfo `json:"info"`
}
type GetXAttrRequest ¶ added in v1.5.0
type GetXAttrResponse ¶ added in v1.5.0
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 ¶
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.
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 ListMultipartResponse ¶ added in v1.5.0
type ListMultipartResponse struct {
Multiparts []*MultipartInfo `json:"mps"`
}
type ListXAttrRequest ¶ added in v1.5.0
type ListXAttrResponse ¶ added in v1.5.0
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 ¶
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 ¶
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 {
CellName 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
CellName string `json:"Cell"`
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
Replicas []*MetaReplicaInfo
ReplicaNum uint8
Status int8
Hosts []string
Peers []Peer
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
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 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 NodeStatInfo ¶ added in v1.5.0
type Nonce ¶ added in v1.5.0
type Nonce uint64
Nonce defines the nonce to mitigate the replay attack
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 NewPacketReqID ¶
func NewPacketReqID() *Packet
NewPacketReqID returns a new packet with ReqID assigned.
func (*Packet) AddMesgLog ¶ added in v1.4.0
func (*Packet) GetResultMsg ¶
GetResultMsg returns the result message.
func (*Packet) GetStoreType ¶
GetStoreType returns the store type.
func (*Packet) GetUniqueLogId ¶
GetUniqueLogId returns the unique log ID.
func (*Packet) IsForwardPkt ¶
IsForwardPkt returns if the packet is the forward packet (a packet that will be forwarded to the followers).
func (*Packet) LogMessage ¶
LogMessage logs the given message.
func (*Packet) MarshalData ¶
MarshalData marshals the packet data.
func (*Packet) MarshalHeader ¶
MarshalHeader marshals the packet header.
func (*Packet) PacketErrorWithBody ¶
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 ¶
PacketOkWithBody sets the result code as OpOk, and sets the body with the give data.
func (*Packet) ReadFromConn ¶
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 ¶
ShallRetry returns if we should retry the packet.
func (*Packet) UnmarshalData ¶
UnmarshalData unmarshals the packet data.
func (*Packet) UnmarshalHeader ¶
UnmarshalHeader unmarshals the packet header.
func (*Packet) WriteToConn ¶
WriteToConn writes through the given connection.
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 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
RemoveDataPartitionRaftMemberRequest defines the request of add raftMember a data partition.
type RemoveMetaPartitionRaftMemberRequest ¶ added in v1.4.0
RemoveMetaPartitionRaftMemberRequest defines the request of add raftMember a meta partition.
type RemoveMultipartRequest ¶ added in v1.5.0
type RemoveXAttrRequest ¶ added in v1.5.0
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 SimpleVolView ¶
type SimpleVolView struct {
ID uint64
Name string
Owner string
DpReplicaNum uint8
MpReplicaNum uint8
Status uint8
Capacity uint64 // GB
RwDpCnt int
MpCnt int
DpCnt int
FollowerRead bool
NeedToLowerReplica bool
Authenticate bool
}
SimpleVolView defines the simple view of a volume
type TinyExtentDeleteRecord ¶
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 VolStatInfo ¶
type VolView ¶
type VolView struct {
Name string
Owner string
Status uint8
FollowerRead bool
MetaPartitions []*MetaPartitionView
DataPartitions []*DataPartitionResponse
OSSSecure *OSSSecure
}
VolView defines the view of a volume