helpers

package
v0.40.3 Latest Latest
Warning

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

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

Documentation

Overview

Package helpers provides useful wrappers for clients using the lakeFS OpenAPI.

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrUnsupportedProtocol is the error returned when lakeFS server requests the client
	// use a protocol it does not know about.  Until recompiled to use a newer client,
	// upload the object using through the lakeFS server.
	ErrUnsupportedProtocol = errors.New("unsupported protocol")

	// ErrAuthenticationFailed is the error returned when the client lacks authentication
	// to access the backing store directly.  Indirect access through the lakeFS server
	// should still be possible.
	ErrAuthenticationFailed = errors.New("authentication failed")

	// ErrRequestFailed is an error returned for failing lakeFS server replies.
	ErrRequestFailed = errors.New("request failed")
)

Functions

func ClientDownload

func ClientDownload(ctx context.Context, client api.ClientWithResponsesInterface, repoID, ref, filePath string) (*api.ObjectStats, io.ReadCloser, error)

ClientDownload downloads a file using client-side ("direct") access to underlying storage. It requires credentials both to lakeFS and to underlying storage, but considerably reduces the load on the lakeFS server.

func ClientUpload

func ClientUpload(ctx context.Context, client api.ClientWithResponsesInterface, repoID, branchID, filePath string, metadata map[string]string, contents io.ReadSeeker) (*api.ObjectStats, error)

ClientUpload uploads contents as a file using client-side ("direct") access to underlying storage. It requires credentials both to lakeFS and to underlying storage, but considerably reduces the load on the lakeFS server.

func ResponseAsError

func ResponseAsError(response interface{}) error

ResponseAsError returns a ErrRequestFailed wrapping a response from the server. It searches for a non-nil unsuccessful HTTPResponse field and uses its message, along with a Body that it assumes is an api.Error.

Types

type AdapterFactory

type AdapterFactory map[string]func() (ClientAdapter, error)

type ClientAdapter

type ClientAdapter interface {
	// Upload upload data from contents to physicalAddress and returns stored stats.
	// Returned MTime may be zero.
	Upload(ctx context.Context, physicalAddress *url.URL, contents io.ReadSeeker) (ObjectStats, error)

	// Download returns a Reader to download data from physicalAddress.  The Close method
	// of that Reader can return errors!
	Download(ctx context.Context, physicalAddress *url.URL) (io.ReadCloser, error)
}

ClientAdapter abstracts operations on a backing store.

func NewAdapter

func NewAdapter(protocol string) (ClientAdapter, error)

NewAdapter returns a ClientAdapter for protocol.

type ObjectStats

type ObjectStats struct {
	// Size is the number of bytes.
	Size int64
	// ETag is a unique identifier of the contents.
	ETag string
	// MTime is the time stored for last object modification.  It can be returned as 0
	// from calls to ClientAdapter.Upload().
	MTime time.Time
}

ObjectStats metadata of an object stored on a backing store.

Notes

Bugs

  • Unavailable on S3, remove this field entirely

    OR add it to the server staging manager API.
    

Jump to

Keyboard shortcuts

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