goseaweedfs: github.com/linxGnu/goseaweedfs Index | Files

package goseaweedfs

import "github.com/linxGnu/goseaweedfs"

Index

Package Files

chunk.go filepart.go filer.go http_client.go lookup.go response_results.go seaweed.go utils.go

Constants

const (
    // ParamCollection http param to specify collection which files belong. According to SeaweedFS API.
    ParamCollection = "collection"

    // ParamTTL http param to specify time to live. According to SeaweedFS API.
    ParamTTL = "ttl"

    // ParamCount http param to specify how many file ids to reserve. According to SeaweedFS API.
    ParamCount = "count"

    // ParamAssignReplication http param to assign files with a specific replication type.
    ParamAssignReplication = "replication"

    // ParamAssignCount http param to specify how many file ids to reserve.
    ParamAssignCount = "count"

    // ParamAssignDataCenter http param to assign a specific data center
    ParamAssignDataCenter = "dataCenter"

    // ParamLookupVolumeID http param to specify volume ID for looking up.
    ParamLookupVolumeID = "volumeId"

    // ParamLookupPretty http param to make json response prettified or not. Default should not be set.
    ParamLookupPretty = "pretty"

    // ParamLookupCollection http param to specify known collection, this would make file look up/search faster.
    ParamLookupCollection = "collection"

    // ParamVacuumGarbageThreshold if your system has many deletions, the deleted file's disk space will not be synchronously re-claimed.
    // There is a background job to check volume disk usage. If empty space is more than the threshold,
    // default to 0.3, the vacuum job will make the volume readonly, create a new volume with only existing files,
    // and switch on the new volume. If you are impatient or doing some testing, vacuum the unused spaces this way.
    ParamVacuumGarbageThreshold = "GarbageThreshold"

    // ParamGrowReplication http param to specify a specific replication.
    ParamGrowReplication = "replication"

    // ParamGrowCount http param to specify number of empty volume to grow.
    ParamGrowCount = "count"

    // ParamGrowDataCenter http param to specify datacenter of growing volume.
    ParamGrowDataCenter = "dataCenter"

    // ParamGrowCollection http param to specify collection of files for growing.
    ParamGrowCollection = "collection"

    // ParamGrowTTL specify time to live for growing api. Refers to: https://github.com/chrislusf/seaweedfs/wiki/Store-file-with-a-Time-To-Live
    // 3m: 3 minutes
    // 4h: 4 hours
    // 5d: 5 days
    // 6w: 6 weeks
    // 7M: 7 months
    // 8y: 8 years
    ParamGrowTTL = "ttl"
)

Variables

var (
    // ErrFileNotFound return file not found error
    ErrFileNotFound = fmt.Errorf("File not found")
)

type AssignResult Uses

type AssignResult struct {
    FileID    string `json:"fid,omitempty"`
    URL       string `json:"url,omitempty"`
    PublicURL string `json:"publicUrl,omitempty"`
    Count     uint64 `json:"count,omitempty"`
    Error     string `json:"error,omitempty"`
}

AssignResult contains assign result. Raw response: {"fid":"1,0a1653fd0f","url":"localhost:8899","publicUrl":"localhost:8899","count":1,"error":""}

type ChunkInfo Uses

type ChunkInfo struct {
    Fid    string `json:"fid"`
    Offset int64  `json:"offset"`
    Size   int64  `json:"size"`
}

ChunkInfo chunk information. According to https://github.com/chrislusf/seaweedfs/wiki/Large-File-Handling.

type ChunkManifest Uses

type ChunkManifest struct {
    Name   string       `json:"name,omitempty"`
    Mime   string       `json:"mime,omitempty"`
    Size   int64        `json:"size,omitempty"`
    Chunks []*ChunkInfo `json:"chunks,omitempty"`
}

ChunkManifest chunk manifest. According to https://github.com/chrislusf/seaweedfs/wiki/Large-File-Handling.

func (*ChunkManifest) Marshal Uses

func (c *ChunkManifest) Marshal() ([]byte, error)

Marshal marshal whole chunk manifest

type ClusterStatus Uses

type ClusterStatus struct {
    IsLeader bool
    Leader   string
    Peers    []string
}

ClusterStatus result of getting status of cluster

type DataCenter Uses

type DataCenter struct {
    Free  int
    Max   int
    Racks []*Rack
}

DataCenter stats of a datacenter

type DataNode Uses

type DataNode struct {
    Free      int
    Max       int
    PublicURL string `json:"PublicUrl"`
    URL       string `json:"Url"`
    Volumes   int
}

DataNode stats of data node

type FilePart Uses

type FilePart struct {
    Reader     io.ReadCloser
    FileName   string
    FileSize   int64
    MimeType   string
    ModTime    int64 //in seconds
    Collection string

    // TTL Time to live.
    // 3m: 3 minutes
    // 4h: 4 hours
    // 5d: 5 days
    // 6w: 6 weeks
    // 7M: 7 months
    // 8y: 8 years
    TTL string

    Server string
    FileID string
}

FilePart file wrapper with reader and some metadata

func NewFilePart Uses

func NewFilePart(fullPathFilename string) (*FilePart, error)

NewFilePart new file path from real file dir

func NewFilePartFromReader Uses

func NewFilePartFromReader(reader io.ReadCloser, fileName string, fileSize int64) *FilePart

NewFilePartFromReader new file part from file reader. fileName and fileSize must be known

func NewFileParts Uses

func NewFileParts(fullPathFilenames []string) (ret []*FilePart, err error)

NewFileParts create many file part at once.

func (*FilePart) Close Uses

func (f *FilePart) Close() (err error)

Close underlying openned file.

type Filer Uses

type Filer struct {
    // contains filtered or unexported fields
}

Filer client

func NewFiler Uses

func NewFiler(u string, client *http.Client) (f *Filer, err error)

NewFiler new filer with filer server's url

func (*Filer) Close Uses

func (f *Filer) Close() (err error)

Close underlying daemons.

func (*Filer) Delete Uses

func (f *Filer) Delete(path string, args url.Values) (err error)

Delete a file/dir.

func (*Filer) Download Uses

func (f *Filer) Download(path string, args url.Values, callback func(io.Reader) error) (err error)

Download a file.

func (*Filer) Get Uses

func (f *Filer) Get(path string, args url.Values, header map[string]string) (data []byte, statusCode int, err error)

Get response data from filer.

func (*Filer) Upload Uses

func (f *Filer) Upload(localFilePath, newPath, collection, ttl string) (result *FilerUploadResult, err error)

Upload a file.

func (*Filer) UploadFile Uses

func (f *Filer) UploadFile(content io.Reader, fileSize int64, newPath, collection, ttl string) (result *FilerUploadResult, err error)

UploadFile content.

type FilerUploadResult Uses

type FilerUploadResult struct {
    Name    string `json:"name,omitempty"`
    FileURL string `json:"url,omitempty"`
    FileID  string `json:"fid,omitempty"`
    Size    int64  `json:"size,omitempty"`
    Error   string `json:"error,omitempty"`
}

FilerUploadResult upload result which responsed from filer server. According to https://github.com/chrislusf/seaweedfs/wiki/Filer-Server-API.

type Layout Uses

type Layout struct {
    Replication string
    Writables   []uint64
}

Layout of replication/collection stats. According to https://github.com/chrislusf/seaweedfs/wiki/Master-Server-API

type LookupResult Uses

type LookupResult struct {
    VolumeLocations VolumeLocations `json:"locations,omitempty"`
    Error           string          `json:"error,omitempty"`
}

LookupResult the result of looking up volume. According to https://github.com/chrislusf/seaweedfs/wiki/Master-Server-API

type Rack Uses

type Rack struct {
    DataNodes []*DataNode
    Free      int
    Max       int
}

Rack stats of racks

type Seaweed Uses

type Seaweed struct {
    // contains filtered or unexported fields
}

Seaweed client containing almost features/operations to interact with SeaweedFS

func NewSeaweed Uses

func NewSeaweed(masterURL string, filers []string, chunkSize int64, client *http.Client) (c *Seaweed, err error)

NewSeaweed create new seaweed client. Master url must be a valid uri (which includes scheme).

func (*Seaweed) Assign Uses

func (c *Seaweed) Assign(args url.Values) (result *AssignResult, err error)

Assign do assign api.

func (*Seaweed) BatchUploadFileParts Uses

func (c *Seaweed) BatchUploadFileParts(files []*FilePart, collection string, ttl string) ([]*SubmitResult, error)

BatchUploadFileParts uploads multiple file parts at once.

func (*Seaweed) BatchUploadFiles Uses

func (c *Seaweed) BatchUploadFiles(files []string, collection, ttl string) (results []*SubmitResult, err error)

BatchUploadFiles batch uploads files.

func (*Seaweed) Close Uses

func (c *Seaweed) Close() (err error)

Close underlying daemons.

func (*Seaweed) ClusterStatus Uses

func (c *Seaweed) ClusterStatus() (result *ClusterStatus, err error)

ClusterStatus get cluster status.

func (*Seaweed) DeleteChunks Uses

func (c *Seaweed) DeleteChunks(cm *ChunkManifest, args url.Values) (err error)

DeleteChunks concurrently delete chunks.

func (*Seaweed) DeleteFile Uses

func (c *Seaweed) DeleteFile(fileID string, args url.Values) (err error)

DeleteFile by id.

func (*Seaweed) Download Uses

func (c *Seaweed) Download(fileID string, args url.Values, callback func(io.Reader) error) (fileName string, err error)

Download file by id.

func (*Seaweed) Filers Uses

func (c *Seaweed) Filers() []*Filer

Filers returns initialized filer(s).

func (*Seaweed) GC Uses

func (c *Seaweed) GC(threshold float64) (err error)

GC force Garbage Collection.

func (*Seaweed) Grow Uses

func (c *Seaweed) Grow(count int, collection, replication, dataCenter string) error

Grow pre-Allocate Volumes.

func (*Seaweed) GrowArgs Uses

func (c *Seaweed) GrowArgs(args url.Values) (err error)

GrowArgs pre-Allocate volumes with args.

func (*Seaweed) Lookup Uses

func (c *Seaweed) Lookup(volID string, args url.Values) (result *LookupResult, err error)

Lookup volume ID.

func (*Seaweed) LookupFileID Uses

func (c *Seaweed) LookupFileID(fileID string, args url.Values, readonly bool) (fullURL string, err error)

LookupFileID lookup file by id.

func (*Seaweed) LookupServerByFileID Uses

func (c *Seaweed) LookupServerByFileID(fileID string, args url.Values, readonly bool) (server string, err error)

LookupServerByFileID lookup server by file id.

func (*Seaweed) Replace Uses

func (c *Seaweed) Replace(fileID string, newContent io.Reader, fileName string, size int64, collection, ttl string, deleteFirst bool) (err error)

Replace file content with new one.

func (*Seaweed) ReplaceFile Uses

func (c *Seaweed) ReplaceFile(fileID, localFilePath string, deleteFirst bool) (err error)

ReplaceFile replaces file with local file.

func (*Seaweed) ReplaceFilePart Uses

func (c *Seaweed) ReplaceFilePart(f *FilePart, deleteFirst bool) (err error)

ReplaceFilePart replaces file part.

func (*Seaweed) Status Uses

func (c *Seaweed) Status() (result *SystemStatus, err error)

Status check System Status.

func (*Seaweed) Submit Uses

func (c *Seaweed) Submit(filePath string, collection, ttl string) (result *SubmitResult, err error)

Submit file directly to master.

func (*Seaweed) SubmitFilePart Uses

func (c *Seaweed) SubmitFilePart(f *FilePart, args url.Values) (result *SubmitResult, err error)

SubmitFilePart directly to master.

func (*Seaweed) Upload Uses

func (c *Seaweed) Upload(fileReader io.Reader, fileName string, size int64, collection, ttl string) (fp *FilePart, err error)

Upload file by reader.

func (*Seaweed) UploadFile Uses

func (c *Seaweed) UploadFile(filePath string, collection, ttl string) (cm *ChunkManifest, fp *FilePart, err error)

UploadFile with full file dir/path.

func (*Seaweed) UploadFilePart Uses

func (c *Seaweed) UploadFilePart(f *FilePart) (cm *ChunkManifest, err error)

UploadFilePart uploads a file part.

type SubmitResult Uses

type SubmitResult struct {
    FileName string `json:"fileName,omitempty"`
    FileURL  string `json:"fileUrl,omitempty"`
    FileID   string `json:"fid,omitempty"`
    Size     int64  `json:"size,omitempty"`
    Error    string `json:"error,omitempty"`
}

SubmitResult result of submit operation.

type SystemStatus Uses

type SystemStatus struct {
    Topology Topology
    Version  string
    Error    string
}

SystemStatus result of getting status of system

type Topology Uses

type Topology struct {
    DataCenters []*DataCenter
    Free        int
    Max         int
    Layouts     []*Layout
}

Topology result of topology stats request

type UploadResult Uses

type UploadResult struct {
    Name  string `json:"name,omitempty"`
    Size  int64  `json:"size,omitempty"`
    Error string `json:"error,omitempty"`
}

UploadResult contains upload result after put file to SeaweedFS Raw response: {"name":"go1.8.3.linux-amd64.tar.gz","size":82565628,"error":""}

type VolumeLocation Uses

type VolumeLocation struct {
    URL       string `json:"url,omitempty"`
    PublicURL string `json:"publicUrl,omitempty"`
}

VolumeLocation location of volume responsed from master API. According to https://github.com/chrislusf/seaweedfs/wiki/Master-Server-API

type VolumeLocations Uses

type VolumeLocations []*VolumeLocation

VolumeLocations returned VolumeLocations (volumes)

func (VolumeLocations) Head Uses

func (c VolumeLocations) Head() *VolumeLocation

Head get first location in list

func (VolumeLocations) RandomPickForRead Uses

func (c VolumeLocations) RandomPickForRead() *VolumeLocation

RandomPickForRead random pick a location for further read request

Package goseaweedfs imports 20 packages (graph). Updated 2019-11-27. Refresh now. Tools for package owners.