Documentation
¶
Overview ¶
Copyright 2019 Iguazio Systems Ltd.
Licensed under the Apache License, Version 2.0 (the "License") with an addition restriction as set forth herein. You may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
In addition, you may not use the software for any purposes that are illegal under applicable law, and the grant of the foregoing license under the Apache 2.0 license is conditioned upon your compliance with such restriction.
Index ¶
- type CheckPathExistsInput
- type ChunkMetadata
- type CommonPrefix
- type Container
- type ContainerInfo
- type Containers
- type Content
- type Context
- type CreateStreamInput
- type CurrentChunkMetadata
- type DataPlaneInput
- type DataPlaneOutput
- type DeleteObjectInput
- type DeleteStreamInput
- type DescribeStreamInput
- type DescribeStreamOutput
- type DirAttributes
- type FileMode
- type GetClusterMDInput
- type GetClusterMDOutput
- type GetContainerContentsInput
- type GetContainerContentsOutput
- type GetContainersInput
- type GetContainersOutput
- type GetItemInput
- type GetItemOutput
- type GetItemsInput
- type GetItemsOutput
- type GetObjectInput
- type GetRecordsInput
- type GetRecordsOutput
- type GetRecordsResult
- type Item
- type ItemChunk
- type ItemChunkData
- type ItemChunkMetadata
- type ItemCurrentChunkMetadata
- type ItemsCursor
- func (ic *ItemsCursor) AllSync() ([]Item, error)
- func (ic *ItemsCursor) Err() error
- func (ic *ItemsCursor) GetField(name string) interface{}
- func (ic *ItemsCursor) GetFieldInt(name string) (int, error)
- func (ic *ItemsCursor) GetFieldString(name string) (string, error)
- func (ic *ItemsCursor) GetFields() map[string]interface{}
- func (ic *ItemsCursor) GetItem() Item
- func (ic *ItemsCursor) NextItemSync() (Item, error)
- func (ic *ItemsCursor) NextSync() bool
- func (ic *ItemsCursor) Release()
- func (ic *ItemsCursor) Scattered() bool
- type NewContainerInput
- type NewSessionInput
- type PutChunkInput
- type PutItemInput
- type PutItemOutput
- type PutItemsInput
- type PutItemsOutput
- type PutOOSObjectInput
- type PutObjectInput
- type PutRecordResult
- type PutRecordsInput
- type PutRecordsOutput
- type Request
- type RequestResponse
- type Response
- type SeekShardInput
- type SeekShardInputType
- type SeekShardOutput
- type Session
- type StreamRecord
- type UpdateItemInput
- type UpdateItemOutput
- type UpdateObjectInput
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CheckPathExistsInput ¶
type CheckPathExistsInput struct {
DataPlaneInput
Path string
}
type ChunkMetadata ¶
type CommonPrefix ¶
type CommonPrefix struct {
Prefix string `xml:"Prefix"` // directory name
LastModified string `xml:"LastModified"` // Date in format time.RFC3339: "2019-06-02T14:30:39.18Z"
AccessTime string `xml:"AccessTime"` // Date in format time.RFC3339: "2019-06-02T14:30:39.18Z"
CreatingTime string `xml:"CreatingTime"` // Date in format time.RFC3339: "2019-06-02T14:30:39.18Z"
Mode FileMode `xml:"Mode"` // octal number, e.g. 040775
GID string `xml:"GID"` // Hexadecimal representation of GID (e.g. "3e8" -> i.e. "0x3e8" == 1000)
UID string `xml:"UID"` // Hexadecimal representation of UID (e.g. "3e8" -> i.e. "0x3e8" == 1000)
InodeNumber *uint64 `xml:"InodeNumber"` // iNode number
ShardCount int `xml:"ShardCount"` // For stream-dirs only - the number of shards in the stream
RetentionPeriodHours int `xml:"RetentionPeriodHours"` // For stream-dirs only - the shard retention (in hours)
RetentionPeriodSeconds int `xml:"RetentionPeriodSec"` // For stream-dirs only - the shard retention (in seconds)
}
type Container ¶
type Container interface {
// GetContainers
GetClusterMD(*GetClusterMDInput, interface{}, chan *Response) (*Request, error)
// GetContainersSync
GetClusterMDSync(*GetClusterMDInput) (*Response, error)
// GetContainers
GetContainers(*GetContainersInput, interface{}, chan *Response) (*Request, error)
// GetContainersSync
GetContainersSync(*GetContainersInput) (*Response, error)
// GetContainers
GetContainerContents(*GetContainerContentsInput, interface{}, chan *Response) (*Request, error)
// GetContainerContentsSync
GetContainerContentsSync(*GetContainerContentsInput) (*Response, error)
//
// Object
//
// CheckPathExists
CheckPathExists(*CheckPathExistsInput, interface{}, chan *Response) (*Request, error)
// CheckPathExistsSync
CheckPathExistsSync(*CheckPathExistsInput) error
// GetObject
GetObject(*GetObjectInput, interface{}, chan *Response) (*Request, error)
// GetObjectSync
GetObjectSync(*GetObjectInput) (*Response, error)
// PutObject
PutObject(*PutObjectInput, interface{}, chan *Response) (*Request, error)
// PutObjectSync
PutObjectSync(*PutObjectInput) error
// UpdateObjectSync
UpdateObjectSync(*UpdateObjectInput) error
// DeleteObject
DeleteObject(*DeleteObjectInput, interface{}, chan *Response) (*Request, error)
// DeleteObjectSync
DeleteObjectSync(*DeleteObjectInput) error
// GetItem
GetItem(*GetItemInput, interface{}, chan *Response) (*Request, error)
// GetItemSync
GetItemSync(*GetItemInput) (*Response, error)
// GetItems
GetItems(*GetItemsInput, interface{}, chan *Response) (*Request, error)
// GetItemSync
GetItemsSync(*GetItemsInput) (*Response, error)
// PutItem
PutItem(*PutItemInput, interface{}, chan *Response) (*Request, error)
// PutItemSync
PutItemSync(*PutItemInput) (*Response, error)
// PutItems
PutItems(*PutItemsInput, interface{}, chan *Response) (*Request, error)
// PutItemsSync
PutItemsSync(*PutItemsInput) (*Response, error)
// UpdateItem
UpdateItem(*UpdateItemInput, interface{}, chan *Response) (*Request, error)
// UpdateItemSync
UpdateItemSync(*UpdateItemInput) (*Response, error)
// CreateStream
CreateStream(*CreateStreamInput, interface{}, chan *Response) (*Request, error)
// CreateStreamSync
CreateStreamSync(*CreateStreamInput) error
// DescribeStream
DescribeStream(*DescribeStreamInput, interface{}, chan *Response) (*Request, error)
// DescribeStreamSync
DescribeStreamSync(*DescribeStreamInput) (*Response, error)
// DeleteStream
DeleteStream(*DeleteStreamInput, interface{}, chan *Response) (*Request, error)
// DeleteStreamSync
DeleteStreamSync(*DeleteStreamInput) error
// SeekShard
SeekShard(*SeekShardInput, interface{}, chan *Response) (*Request, error)
// SeekShardSync
SeekShardSync(*SeekShardInput) (*Response, error)
// PutRecords
PutRecords(*PutRecordsInput, interface{}, chan *Response) (*Request, error)
// PutRecordsSync
PutRecordsSync(*PutRecordsInput) (*Response, error)
// PutChunk
PutChunk(*PutChunkInput, interface{}, chan *Response) (*Request, error)
// PutChunkSync
PutChunkSync(input *PutChunkInput) error
// GetRecords
GetRecords(*GetRecordsInput, interface{}, chan *Response) (*Request, error)
// GetRecordsSync
GetRecordsSync(*GetRecordsInput) (*Response, error)
// PutOOSObject
PutOOSObject(*PutOOSObjectInput, interface{}, chan *Response) (*Request, error)
// PutOOSObjectSync
PutOOSObjectSync(*PutOOSObjectInput) error
}
A container interface allows perform actions against a container
type ContainerInfo ¶
type Containers ¶
type Containers struct {
Name xml.Name `xml:"Buckets"`
Containers []ContainerInfo `xml:"Bucket"`
}
type Content ¶
type Content struct {
Key string `xml:"Key"`
Size *int `xml:"Size"` // file size in bytes
LastSequenceID *int `xml:"LastSequenceId"` // greater than zero for shard files
LastModified string `xml:"LastModified"` // Date in format time.RFC3339: "2019-06-02T14:30:39.18Z"
Mode FileMode `xml:"Mode"` // octal (ListDir) or decimal (GetItems) base, depends on API, e.g. 33204 or 0100664
AccessTime string `xml:"AccessTime"` // Date in format time.RFC3339: "2019-06-02T14:30:39.18Z"
CreatingTime string `xml:"CreatingTime"` // Date in format time.RFC3339: "2019-06-02T14:30:39.18Z"
GID string `xml:"GID"` // Hexadecimal representation of GID (e.g. "3e8" -> i.e. "0x3e8" == 1000)
UID string `xml:"UID"` // Hexadecimal representation of UID (e.g. "3e8" -> i.e. "0x3e8" == 1000)
InodeNumber *uint32 `xml:"InodeNumber"` // iNode number
}
type Context ¶
type Context interface {
Container
// create a new session
NewSession(*NewSessionInput) (Session, error)
}
type CreateStreamInput ¶
type CreateStreamInput struct {
DataPlaneInput
Path string
ShardCount int
RetentionPeriodHours int
}
type CurrentChunkMetadata ¶
type CurrentChunkMetadata struct {
ChunkSeqNumber uint32 `json:"ChunkSequenceNumber"`
OffsetAfterJob uint64 `json:"OffsetAfterJob"`
SeqNumberAfterJob uint64 `json:"SequenceNumberAfterJob"`
FirstRecordTimeSec uint32 `json:"FirstRecordTimeSec"`
LatestRecordTimeSec uint64 `json:"LatestRecordTimeSec"`
LatestRecordTimeNSec uint64 `json:"LatestRecordTimeNSec"`
}
type DataPlaneInput ¶
type DataPlaneOutput ¶
type DataPlaneOutput struct {
// contains filtered or unexported fields
}
type DeleteObjectInput ¶
type DeleteObjectInput struct {
DataPlaneInput
Path string
}
type DeleteStreamInput ¶
type DeleteStreamInput struct {
DataPlaneInput
Path string
}
type DescribeStreamInput ¶
type DescribeStreamInput struct {
DataPlaneInput
Path string
}
type DescribeStreamOutput ¶
type DescribeStreamOutput struct {
DataPlaneOutput
ShardCount int
RetentionPeriodHours int
}
type DirAttributes ¶
type DirAttributes struct {
Mode int `json:"mode,omitempty"`
UID int `json:"uid"`
GID int `json:"gid"`
AtimeSec int `json:"atime.sec,omitempty"`
AtimeNSec int `json:"atime.nsec"`
CtimeSec int `json:"ctime.sec,omitempty"`
CtimeNSec int `json:"ctime.nsec"`
MtimeSec int `json:"mtime.sec,omitempty"`
MtimeNSec int `json:"mtime.nsec"`
}
type GetClusterMDInput ¶
type GetClusterMDInput struct {
DataPlaneInput
}
type GetClusterMDOutput ¶
type GetClusterMDOutput struct {
DataPlaneOutput
NumberOfVNs int
}
type GetContainerContentsInput ¶
type GetContainerContentsInput struct {
DataPlaneInput
Path string
GetAllAttributes bool // if "true" return ALL available attributes
DirectoriesOnly bool // if "true" return directory entries only, otherwise return children of any kind
Limit int // max number of entries per request
Marker string // start from specific entry (e.g. to get next chunk)
}
type GetContainerContentsOutput ¶
type GetContainerContentsOutput struct {
Name string `xml:"Name"` // Bucket name
NextMarker string `xml:"NextMarker"` // if not empty and isTruncated="true" - has more children (need another fetch to get them)
MaxKeys string `xml:"MaxKeys"` // max number of entries in single batch
Contents []Content `xml:"Contents"` // files
CommonPrefixes []CommonPrefix `xml:"CommonPrefixes"` // directories
IsTruncated bool `xml:"IsTruncated"` // "true" if has more content. Note, "NextMarker" should not be empty if "true"
}
type GetContainersInput ¶
type GetContainersInput struct {
DataPlaneInput
}
type GetContainersOutput ¶
type GetContainersOutput struct {
DataPlaneOutput
XMLName xml.Name `xml:"ListBucketResult"`
Owner interface{} `xml:"Owner"`
Results Containers `xml:"Buckets"`
}
type GetItemInput ¶
type GetItemInput struct {
DataPlaneInput
Path string
AttributeNames []string
}
type GetItemOutput ¶
type GetItemOutput struct {
DataPlaneOutput
Item Item
}
type GetItemsInput ¶
type GetItemsInput struct {
DataPlaneInput
Path string
TableName string
AttributeNames []string
Filter string
Marker string
ShardingKey string
Limit int
Segment int
TotalSegments int
SortKeyRangeStart string
SortKeyRangeEnd string
AllowObjectScatter string
ReturnData string
ReturnAllInodes bool
DataMaxSize int
RequestJSONResponse bool `json:"RequestJsonResponse"`
ChokeGetItemsMS int
}
type GetItemsOutput ¶
type GetItemsOutput struct {
DataPlaneOutput
Last bool
NextMarker string
Scattered bool
Items []Item
}
type GetObjectInput ¶
type GetRecordsInput ¶
type GetRecordsInput struct {
DataPlaneInput
Path string
Location string
Limit int
}
type GetRecordsOutput ¶
type GetRecordsOutput struct {
DataPlaneOutput
NextLocation string
MSecBehindLatest int
RecordsBehindLatest int
Records []GetRecordsResult
}
type GetRecordsResult ¶
type ItemChunk ¶
type ItemChunk struct {
Metadata *ItemChunkMetadata
Data []*ItemChunkData
}
type ItemChunkData ¶
type ItemChunkMetadata ¶
type ItemsCursor ¶
type ItemsCursor struct {
// contains filtered or unexported fields
}
func NewItemsCursor ¶
func NewItemsCursor(container Container, getItemsInput *GetItemsInput) (*ItemsCursor, error)
func (*ItemsCursor) GetField ¶
func (ic *ItemsCursor) GetField(name string) interface{}
func (*ItemsCursor) GetFieldInt ¶
func (ic *ItemsCursor) GetFieldInt(name string) (int, error)
func (*ItemsCursor) GetFieldString ¶
func (ic *ItemsCursor) GetFieldString(name string) (string, error)
func (*ItemsCursor) GetFields ¶
func (ic *ItemsCursor) GetFields() map[string]interface{}
func (*ItemsCursor) GetItem ¶
func (ic *ItemsCursor) GetItem() Item
func (*ItemsCursor) NextItemSync ¶
func (ic *ItemsCursor) NextItemSync() (Item, error)
NextItem gets the next matching item. this may potentially block as this lazy loads items from the collection
func (*ItemsCursor) NextSync ¶
func (ic *ItemsCursor) NextSync() bool
Next gets the next matching item. this may potentially block as this lazy loads items from the collection
func (*ItemsCursor) Release ¶
func (ic *ItemsCursor) Release()
Release releases a cursor and its underlying resources
func (*ItemsCursor) Scattered ¶
func (ic *ItemsCursor) Scattered() bool
type NewContainerInput ¶
type NewContainerInput struct {
ContainerName string
}
type NewSessionInput ¶
type PutChunkInput ¶
type PutChunkInput struct {
DataPlaneInput `json:"-"`
Path string `json:"-"`
ChunkSeqNumber int `json:"ChunkSequenceNumber,omitempty"`
Offset uint64 `json:"Offset,omitempty"`
Data []byte `json:"Data,omitempty"`
ChunksMetadata []*ChunkMetadata `json:"Metadata,omitempty"`
CurrentChunkMetadata *CurrentChunkMetadata `json:"CurrentMetadata,omitempty"`
}
type PutItemInput ¶
type PutItemInput struct {
DataPlaneInput
Path string
Condition string
Attributes map[string]interface{}
UpdateMode string
}
type PutItemOutput ¶
type PutItemOutput struct {
DataPlaneInput
MtimeSecs int
MtimeNSecs int
}
type PutItemsInput ¶
type PutItemsInput struct {
DataPlaneInput
Path string
Condition string
Items map[string]map[string]interface{}
}
type PutItemsOutput ¶
type PutItemsOutput struct {
DataPlaneOutput
Success bool
Errors map[string]error
}
type PutOOSObjectInput ¶
type PutOOSObjectInput struct {
DataPlaneInput
Path string
Header []byte
Data [][]byte
}
type PutObjectInput ¶
type PutObjectInput struct {
DataPlaneInput
Path string
Offset int
Body []byte
Append bool
}
type PutRecordResult ¶
type PutRecordsInput ¶
type PutRecordsInput struct {
DataPlaneInput
Path string
Records []*StreamRecord
}
type PutRecordsOutput ¶
type PutRecordsOutput struct {
DataPlaneOutput
FailedRecordCount int
Records []PutRecordResult
}
type Request ¶
type Request struct {
ID uint64
// holds the input (e.g. ListBucketInput, GetItemInput)
Input interface{}
// a user supplied context
Context interface{}
// the channel to which the response must be posted
ResponseChan chan *Response
// pointer to container
RequestResponse *RequestResponse
// Request time
SendTimeNanoseconds int64
}
type RequestResponse ¶
holds both a request and response
type Response ¶
type Response struct {
// hold a decoded output, if any
Output interface{}
// Equal to the ID of request
ID uint64
// holds the error for async responses
Error error
// a user supplied context
Context interface{}
// pointer to container
RequestResponse *RequestResponse
// HTTP
HTTPResponse *fasthttp.Response
}
func (*Response) HeaderPeek ¶
type SeekShardInput ¶
type SeekShardInput struct {
DataPlaneInput
Path string
Type SeekShardInputType
StartingSequenceNumber uint64
Timestamp int
}
type SeekShardInputType ¶
type SeekShardInputType int
const ( SeekShardInputTypeTime SeekShardInputType = iota SeekShardInputTypeSequence SeekShardInputTypeLatest SeekShardInputTypeEarliest )
type SeekShardOutput ¶
type SeekShardOutput struct {
DataPlaneOutput
Location string
}
type Session ¶
type Session interface {
// NewContainer creates a container
NewContainer(*NewContainerInput) (Container, error)
}
type StreamRecord ¶
type UpdateItemInput ¶
type UpdateItemOutput ¶
type UpdateItemOutput struct {
DataPlaneInput
MtimeSecs int
MtimeNSecs int
}
type UpdateObjectInput ¶
type UpdateObjectInput struct {
DataPlaneInput
Path string
DirAttributes *DirAttributes
}