Documentation ¶
Index ¶
- Constants
- func AcceptanceTest(t *testing.T, bkt Bucket)
- func BucketWithMetrics(name string, b Bucket, reg prometheus.Registerer) *metricBucket
- func CreateTemporaryTestBucketName(t testing.TB) string
- func DownloadDir(ctx context.Context, logger log.Logger, bkt BucketReader, src, dst string) error
- func DownloadFile(ctx context.Context, logger log.Logger, bkt BucketReader, src, dst string) (err error)
- func EmptyBucket(t testing.TB, ctx context.Context, bkt Bucket)
- func TryToGetSize(r io.Reader) (int64, error)
- func UploadDir(ctx context.Context, logger log.Logger, bkt Bucket, srcdir, dstdir string) error
- func UploadFile(ctx context.Context, logger log.Logger, bkt Bucket, src, dst string) error
- type Bucket
- type BucketReader
- type InMemBucket
- func (b *InMemBucket) Attributes(_ context.Context, name string) (ObjectAttributes, error)
- func (b *InMemBucket) Close() error
- func (b *InMemBucket) Delete(_ context.Context, name string) error
- func (b *InMemBucket) Exists(_ context.Context, name string) (bool, error)
- func (b *InMemBucket) Get(_ context.Context, name string) (io.ReadCloser, error)
- func (b *InMemBucket) GetRange(_ context.Context, name string, off, length int64) (io.ReadCloser, error)
- func (b *InMemBucket) IsObjNotFoundErr(err error) bool
- func (b *InMemBucket) Iter(_ context.Context, dir string, f func(string) error) error
- func (b *InMemBucket) Name() string
- func (b *InMemBucket) Objects() map[string][]byte
- func (b *InMemBucket) Upload(_ context.Context, name string, r io.Reader) error
- type InstrumentedBucket
- type InstrumentedBucketReader
- type IsOpFailureExpectedFunc
- type ObjectAttributes
- type TracingBucket
- func (t TracingBucket) Attributes(ctx context.Context, name string) (attrs ObjectAttributes, err error)
- func (t TracingBucket) Close() error
- func (t TracingBucket) Delete(ctx context.Context, name string) (err error)
- func (t TracingBucket) Exists(ctx context.Context, name string) (exists bool, err error)
- func (t TracingBucket) Get(ctx context.Context, name string) (io.ReadCloser, error)
- func (t TracingBucket) GetRange(ctx context.Context, name string, off, length int64) (io.ReadCloser, error)
- func (t TracingBucket) IsObjNotFoundErr(err error) bool
- func (t TracingBucket) Iter(ctx context.Context, dir string, f func(string) error) (err error)
- func (t TracingBucket) Name() string
- func (t TracingBucket) ReaderWithExpectedErrs(expectedFunc IsOpFailureExpectedFunc) BucketReader
- func (t TracingBucket) Upload(ctx context.Context, name string, r io.Reader) (err error)
- func (t TracingBucket) WithExpectedErrs(expectedFunc IsOpFailureExpectedFunc) Bucket
Constants ¶
const ( OpIter = "iter" OpGet = "get" OpGetRange = "get_range" OpExists = "exists" OpUpload = "upload" OpDelete = "delete" OpAttributes = "attributes" )
const DirDelim = "/"
DirDelim is the delimiter used to model a directory structure in an object store bucket.
Variables ¶
This section is empty.
Functions ¶
func AcceptanceTest ¶ added in v0.12.0
func BucketWithMetrics ¶
func BucketWithMetrics(name string, b Bucket, reg prometheus.Registerer) *metricBucket
BucketWithMetrics takes a bucket and registers metrics with the given registry for operations run against the bucket.
func CreateTemporaryTestBucketName ¶ added in v0.9.0
func DownloadDir ¶
DownloadDir downloads all object found in the directory into the local directory.
func DownloadFile ¶
func DownloadFile(ctx context.Context, logger log.Logger, bkt BucketReader, src, dst string) (err error)
DownloadFile downloads the src file from the bucket to dst. If dst is an existing directory, a file with the same name as the source is created in dst. If destination file is already existing, download file will overwrite it.
func EmptyBucket ¶
EmptyBucket deletes all objects from bucket. This operation is required to properly delete bucket as a whole. It is used for testing only. TODO(bplotka): Add retries.
func TryToGetSize ¶ added in v0.12.0
TryToGetSize tries to get upfront size from reader. TODO(https://github.com/thanos-io/thanos/issues/678): Remove guessing length when minio provider will support multipart upload without this.
Types ¶
type Bucket ¶
type Bucket interface { io.Closer BucketReader // Upload the contents of the reader as an object into the bucket. // Upload should be idempotent. Upload(ctx context.Context, name string, r io.Reader) error // Delete removes the object with the given name. // If object does not exists in the moment of deletion, Delete should throw error. Delete(ctx context.Context, name string) error // Name returns the bucket name for the provider. Name() string }
Bucket provides read and write access to an object storage bucket. NOTE: We assume strong consistency for write-read flow.
type BucketReader ¶
type BucketReader interface { // Iter calls f for each entry in the given directory (not recursive.). The argument to f is the full // object name including the prefix of the inspected directory. // Entries are passed to function in sorted order. Iter(ctx context.Context, dir string, f func(string) error) error // Get returns a reader for the given object name. Get(ctx context.Context, name string) (io.ReadCloser, error) // GetRange returns a new range reader for the given object name and range. GetRange(ctx context.Context, name string, off, length int64) (io.ReadCloser, error) // Exists checks if the given object exists in the bucket. Exists(ctx context.Context, name string) (bool, error) // IsObjNotFoundErr returns true if error means that object is not found. Relevant to Get operations. IsObjNotFoundErr(err error) bool // Attributes returns information about the specified object. Attributes(ctx context.Context, name string) (ObjectAttributes, error) }
BucketReader provides read access to an object storage bucket.
type InMemBucket ¶ added in v0.12.0
type InMemBucket struct {
// contains filtered or unexported fields
}
InMemBucket implements the objstore.Bucket interfaces against local memory. Methods from Bucket interface are thread-safe. Objects are assumed to be immutable.
func NewInMemBucket ¶ added in v0.12.0
func NewInMemBucket() *InMemBucket
NewInMemBucket returns a new in memory Bucket. NOTE: Returned bucket is just a naive in memory bucket implementation. For test use cases only.
func (*InMemBucket) Attributes ¶ added in v0.14.0
func (b *InMemBucket) Attributes(_ context.Context, name string) (ObjectAttributes, error)
Attributes returns information about the specified object.
func (*InMemBucket) Close ¶ added in v0.12.0
func (b *InMemBucket) Close() error
func (*InMemBucket) Delete ¶ added in v0.12.0
func (b *InMemBucket) Delete(_ context.Context, name string) error
Delete removes all data prefixed with the dir.
func (*InMemBucket) Exists ¶ added in v0.12.0
Exists checks if the given directory exists in memory.
func (*InMemBucket) Get ¶ added in v0.12.0
func (b *InMemBucket) Get(_ context.Context, name string) (io.ReadCloser, error)
Get returns a reader for the given object name.
func (*InMemBucket) GetRange ¶ added in v0.12.0
func (b *InMemBucket) GetRange(_ context.Context, name string, off, length int64) (io.ReadCloser, error)
GetRange returns a new range reader for the given object name and range.
func (*InMemBucket) IsObjNotFoundErr ¶ added in v0.12.0
func (b *InMemBucket) IsObjNotFoundErr(err error) bool
IsObjNotFoundErr returns true if error means that object is not found. Relevant to Get operations.
func (*InMemBucket) Iter ¶ added in v0.12.0
Iter calls f for each entry in the given directory. The argument to f is the full object name including the prefix of the inspected directory.
func (*InMemBucket) Name ¶ added in v0.12.0
func (b *InMemBucket) Name() string
Name returns the bucket name.
func (*InMemBucket) Objects ¶ added in v0.12.0
func (b *InMemBucket) Objects() map[string][]byte
Objects returns internally stored objects. NOTE: For assert purposes.
type InstrumentedBucket ¶ added in v0.12.0
type InstrumentedBucket interface { Bucket // WithExpectedErrs allows to specify a filter that marks certain errors as expected, so it will not increment // thanos_objstore_bucket_operation_failures_total metric. WithExpectedErrs(IsOpFailureExpectedFunc) Bucket // ReaderWithExpectedErrs allows to specify a filter that marks certain errors as expected, so it will not increment // thanos_objstore_bucket_operation_failures_total metric. // TODO(bwplotka): Remove this when moved to Go 1.14 and replace with InstrumentedBucketReader. ReaderWithExpectedErrs(IsOpFailureExpectedFunc) BucketReader }
InstrumentedBucket is a Bucket with optional instrumentation control on reader.
func NewTracingBucket ¶ added in v0.14.0
func NewTracingBucket(bkt Bucket) InstrumentedBucket
func WithNoopInstr ¶ added in v0.12.0
func WithNoopInstr(bkt Bucket) InstrumentedBucket
type InstrumentedBucketReader ¶ added in v0.12.0
type InstrumentedBucketReader interface { BucketReader // ReaderWithExpectedErrs allows to specify a filter that marks certain errors as expected, so it will not increment // thanos_objstore_bucket_operation_failures_total metric. ReaderWithExpectedErrs(IsOpFailureExpectedFunc) BucketReader }
InstrumentedBucket is a BucketReader with optional instrumentation control.
type IsOpFailureExpectedFunc ¶ added in v0.12.0
IsOpFailureExpectedFunc allows to mark certain errors as expected, so they will not increment thanos_objstore_bucket_operation_failures_total metric.
type ObjectAttributes ¶ added in v0.14.0
type TracingBucket ¶ added in v0.14.0
type TracingBucket struct {
// contains filtered or unexported fields
}
TracingBucket includes bucket operations in the traces.
func (TracingBucket) Attributes ¶ added in v0.14.0
func (t TracingBucket) Attributes(ctx context.Context, name string) (attrs ObjectAttributes, err error)
func (TracingBucket) Close ¶ added in v0.14.0
func (t TracingBucket) Close() error
func (TracingBucket) Delete ¶ added in v0.14.0
func (t TracingBucket) Delete(ctx context.Context, name string) (err error)
func (TracingBucket) Get ¶ added in v0.14.0
func (t TracingBucket) Get(ctx context.Context, name string) (io.ReadCloser, error)
func (TracingBucket) GetRange ¶ added in v0.14.0
func (t TracingBucket) GetRange(ctx context.Context, name string, off, length int64) (io.ReadCloser, error)
func (TracingBucket) IsObjNotFoundErr ¶ added in v0.14.0
func (t TracingBucket) IsObjNotFoundErr(err error) bool
func (TracingBucket) Name ¶ added in v0.14.0
func (t TracingBucket) Name() string
func (TracingBucket) ReaderWithExpectedErrs ¶ added in v0.14.0
func (t TracingBucket) ReaderWithExpectedErrs(expectedFunc IsOpFailureExpectedFunc) BucketReader
func (TracingBucket) WithExpectedErrs ¶ added in v0.14.0
func (t TracingBucket) WithExpectedErrs(expectedFunc IsOpFailureExpectedFunc) Bucket
Directories ¶
Path | Synopsis |
---|---|
Package gcs implements common object storage abstractions against Google Cloud Storage.
|
Package gcs implements common object storage abstractions against Google Cloud Storage. |
Package s3 implements common object storage abstractions against s3-compatible APIs.
|
Package s3 implements common object storage abstractions against s3-compatible APIs. |
Package swift implements common object storage abstractions against OpenStack swift APIs.
|
Package swift implements common object storage abstractions against OpenStack swift APIs. |