pkg/storj: move non-common types
Change-Id: I2dd15c95cd334660f29a528dfb3dec9c30b29cab
This commit is contained in:
parent
71d6eef0d7
commit
1eaf9e9ed7
@ -160,7 +160,7 @@ func (b *Bucket) NewWriter(ctx context.Context, path storj.Path, opts *UploadOpt
|
|||||||
if opts.Volatile.EncryptionParameters.BlockSize == 0 {
|
if opts.Volatile.EncryptionParameters.BlockSize == 0 {
|
||||||
opts.Volatile.EncryptionParameters.BlockSize = b.EncryptionParameters.BlockSize
|
opts.Volatile.EncryptionParameters.BlockSize = b.EncryptionParameters.BlockSize
|
||||||
}
|
}
|
||||||
createInfo := storj.CreateObject{
|
createInfo := kvmetainfo.CreateObject{
|
||||||
ContentType: opts.ContentType,
|
ContentType: opts.ContentType,
|
||||||
Metadata: opts.Metadata,
|
Metadata: opts.Metadata,
|
||||||
Expires: opts.Expires,
|
Expires: opts.Expires,
|
||||||
|
@ -244,7 +244,7 @@ func TestGetObjectInfo(t *testing.T) {
|
|||||||
assert.Equal(t, minio.ObjectNotFound{Bucket: TestBucket, Object: TestFile}, err)
|
assert.Equal(t, minio.ObjectNotFound{Bucket: TestBucket, Object: TestFile}, err)
|
||||||
|
|
||||||
// Create the object using the Metainfo API
|
// Create the object using the Metainfo API
|
||||||
createInfo := storj.CreateObject{
|
createInfo := kvmetainfo.CreateObject{
|
||||||
ContentType: "text/plain",
|
ContentType: "text/plain",
|
||||||
Metadata: map[string]string{"key1": "value1", "key2": "value2"},
|
Metadata: map[string]string{"key1": "value1", "key2": "value2"},
|
||||||
}
|
}
|
||||||
@ -289,7 +289,7 @@ func TestGetObject(t *testing.T) {
|
|||||||
assert.Equal(t, minio.ObjectNotFound{Bucket: TestBucket, Object: TestFile}, err)
|
assert.Equal(t, minio.ObjectNotFound{Bucket: TestBucket, Object: TestFile}, err)
|
||||||
|
|
||||||
// Create the object using the Metainfo API
|
// Create the object using the Metainfo API
|
||||||
createInfo := storj.CreateObject{
|
createInfo := kvmetainfo.CreateObject{
|
||||||
ContentType: "text/plain",
|
ContentType: "text/plain",
|
||||||
Metadata: map[string]string{"key1": "value1", "key2": "value2"},
|
Metadata: map[string]string{"key1": "value1", "key2": "value2"},
|
||||||
}
|
}
|
||||||
@ -348,7 +348,7 @@ func TestCopyObject(t *testing.T) {
|
|||||||
assert.Equal(t, minio.ObjectNameInvalid{Bucket: TestBucket}, err)
|
assert.Equal(t, minio.ObjectNameInvalid{Bucket: TestBucket}, err)
|
||||||
|
|
||||||
// Create the source object using the Metainfo API
|
// Create the source object using the Metainfo API
|
||||||
createInfo := storj.CreateObject{
|
createInfo := kvmetainfo.CreateObject{
|
||||||
ContentType: "text/plain",
|
ContentType: "text/plain",
|
||||||
Metadata: map[string]string{"key1": "value1", "key2": "value2"},
|
Metadata: map[string]string{"key1": "value1", "key2": "value2"},
|
||||||
}
|
}
|
||||||
@ -480,7 +480,7 @@ func testListObjects(t *testing.T, listObjects func(context.Context, minio.Objec
|
|||||||
}
|
}
|
||||||
|
|
||||||
files := make(map[string]storj.Object, len(filePaths))
|
files := make(map[string]storj.Object, len(filePaths))
|
||||||
createInfo := storj.CreateObject{
|
createInfo := kvmetainfo.CreateObject{
|
||||||
ContentType: "text/plain",
|
ContentType: "text/plain",
|
||||||
Metadata: map[string]string{"key1": "value1", "key2": "value2"},
|
Metadata: map[string]string{"key1": "value1", "key2": "value2"},
|
||||||
}
|
}
|
||||||
@ -766,7 +766,7 @@ func initEnv(ctx context.Context, t *testing.T, planet *testplanet.Planet) (mini
|
|||||||
return layer, kvm, strms, err
|
return layer, kvm, strms, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func createFile(ctx context.Context, m *kvmetainfo.DB, strms streams.Store, bucket storj.Bucket, path storj.Path, createInfo *storj.CreateObject, data []byte) (storj.Object, error) {
|
func createFile(ctx context.Context, m *kvmetainfo.DB, strms streams.Store, bucket storj.Bucket, path storj.Path, createInfo *kvmetainfo.CreateObject, data []byte) (storj.Object, error) {
|
||||||
mutableObject, err := m.CreateObject(ctx, bucket, path, createInfo)
|
mutableObject, err := m.CreateObject(ctx, bucket, path, createInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return storj.Object{}, err
|
return storj.Object{}, err
|
||||||
|
@ -3,40 +3,6 @@
|
|||||||
|
|
||||||
package storj
|
package storj
|
||||||
|
|
||||||
import (
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
// CreateObject has optional parameters that can be set
|
|
||||||
type CreateObject struct {
|
|
||||||
Metadata map[string]string
|
|
||||||
ContentType string
|
|
||||||
Expires time.Time
|
|
||||||
|
|
||||||
RedundancyScheme
|
|
||||||
EncryptionParameters
|
|
||||||
}
|
|
||||||
|
|
||||||
// Object converts the CreateObject to an object with unitialized values
|
|
||||||
func (create CreateObject) Object(bucket Bucket, path Path) Object {
|
|
||||||
return Object{
|
|
||||||
Bucket: bucket,
|
|
||||||
Path: path,
|
|
||||||
Metadata: create.Metadata,
|
|
||||||
ContentType: create.ContentType,
|
|
||||||
Expires: create.Expires,
|
|
||||||
Stream: Stream{
|
|
||||||
Size: -1, // unknown
|
|
||||||
Checksum: nil, // unknown
|
|
||||||
SegmentCount: -1, // unknown
|
|
||||||
FixedSegmentSize: -1, // unknown
|
|
||||||
|
|
||||||
RedundancyScheme: create.RedundancyScheme,
|
|
||||||
EncryptionParameters: create.EncryptionParameters,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListDirection specifies listing direction
|
// ListDirection specifies listing direction
|
||||||
type ListDirection int8
|
type ListDirection int8
|
||||||
|
|
||||||
@ -111,14 +77,3 @@ func (opts BucketListOptions) NextPage(list BucketList) BucketListOptions {
|
|||||||
Limit: opts.Limit,
|
Limit: opts.Limit,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MetainfoLimits lists limits specified for the Metainfo database
|
|
||||||
type MetainfoLimits struct {
|
|
||||||
// ListLimit specifies the maximum amount of items that can be listed at a time.
|
|
||||||
ListLimit int64
|
|
||||||
|
|
||||||
// MinimumRemoteSegmentSize specifies the minimum remote segment that is allowed to be stored.
|
|
||||||
MinimumRemoteSegmentSize int64
|
|
||||||
// MaximumInlineSegmentSize specifies the maximum inline segment that is allowed to be stored.
|
|
||||||
MaximumInlineSegmentSize int64
|
|
||||||
}
|
|
||||||
|
@ -5,10 +5,41 @@ package kvmetainfo
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
"storj.io/storj/pkg/storj"
|
"storj.io/storj/pkg/storj"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// CreateObject has optional parameters that can be set
|
||||||
|
type CreateObject struct {
|
||||||
|
Metadata map[string]string
|
||||||
|
ContentType string
|
||||||
|
Expires time.Time
|
||||||
|
|
||||||
|
storj.RedundancyScheme
|
||||||
|
storj.EncryptionParameters
|
||||||
|
}
|
||||||
|
|
||||||
|
// Object converts the CreateObject to an object with unitialized values
|
||||||
|
func (create CreateObject) Object(bucket storj.Bucket, path storj.Path) storj.Object {
|
||||||
|
return storj.Object{
|
||||||
|
Bucket: bucket,
|
||||||
|
Path: path,
|
||||||
|
Metadata: create.Metadata,
|
||||||
|
ContentType: create.ContentType,
|
||||||
|
Expires: create.Expires,
|
||||||
|
Stream: storj.Stream{
|
||||||
|
Size: -1, // unknown
|
||||||
|
Checksum: nil, // unknown
|
||||||
|
SegmentCount: -1, // unknown
|
||||||
|
FixedSegmentSize: -1, // unknown
|
||||||
|
|
||||||
|
RedundancyScheme: create.RedundancyScheme,
|
||||||
|
EncryptionParameters: create.EncryptionParameters,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ReadOnlyStream is an interface for reading segment information
|
// ReadOnlyStream is an interface for reading segment information
|
||||||
type ReadOnlyStream interface {
|
type ReadOnlyStream interface {
|
||||||
Info() storj.Object
|
Info() storj.Object
|
||||||
|
@ -49,15 +49,26 @@ func New(project *Project, metainfo *metainfo.Client, streams streams.Store, seg
|
|||||||
const defaultLookupLimit = 1000
|
const defaultLookupLimit = 1000
|
||||||
|
|
||||||
// Limits returns limits for this metainfo database
|
// Limits returns limits for this metainfo database
|
||||||
func (db *DB) Limits() (storj.MetainfoLimits, error) {
|
func (db *DB) Limits() (MetainfoLimits, error) {
|
||||||
// TODO: fetch this information from satellite
|
// TODO: fetch this information from satellite
|
||||||
return storj.MetainfoLimits{
|
return MetainfoLimits{
|
||||||
ListLimit: defaultLookupLimit,
|
ListLimit: defaultLookupLimit,
|
||||||
MinimumRemoteSegmentSize: memory.KiB.Int64(), // TODO: is this needed here?
|
MinimumRemoteSegmentSize: memory.KiB.Int64(), // TODO: is this needed here?
|
||||||
MaximumInlineSegmentSize: memory.MiB.Int64(),
|
MaximumInlineSegmentSize: memory.MiB.Int64(),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MetainfoLimits lists limits specified for the Metainfo database
|
||||||
|
type MetainfoLimits struct {
|
||||||
|
// ListLimit specifies the maximum amount of items that can be listed at a time.
|
||||||
|
ListLimit int64
|
||||||
|
|
||||||
|
// MinimumRemoteSegmentSize specifies the minimum remote segment that is allowed to be stored.
|
||||||
|
MinimumRemoteSegmentSize int64
|
||||||
|
// MaximumInlineSegmentSize specifies the maximum inline segment that is allowed to be stored.
|
||||||
|
MaximumInlineSegmentSize int64
|
||||||
|
}
|
||||||
|
|
||||||
// CreateBucket creates a new bucket with the specified information
|
// CreateBucket creates a new bucket with the specified information
|
||||||
func (db *DB) CreateBucket(ctx context.Context, bucketName string, info *storj.Bucket) (bucketInfo storj.Bucket, err error) {
|
func (db *DB) CreateBucket(ctx context.Context, bucketName string, info *storj.Bucket) (bucketInfo storj.Bucket, err error) {
|
||||||
return db.project.CreateBucket(ctx, bucketName, info)
|
return db.project.CreateBucket(ctx, bucketName, info)
|
||||||
|
@ -66,7 +66,7 @@ func (db *DB) GetObjectStream(ctx context.Context, bucket storj.Bucket, object s
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CreateObject creates an uploading object and returns an interface for uploading Object information
|
// CreateObject creates an uploading object and returns an interface for uploading Object information
|
||||||
func (db *DB) CreateObject(ctx context.Context, bucket storj.Bucket, path storj.Path, createInfo *storj.CreateObject) (object MutableObject, err error) {
|
func (db *DB) CreateObject(ctx context.Context, bucket storj.Bucket, path storj.Path, createInfo *CreateObject) (object MutableObject, err error) {
|
||||||
defer mon.Task()(&ctx)(&err)
|
defer mon.Task()(&ctx)(&err)
|
||||||
|
|
||||||
if bucket.Name == "" {
|
if bucket.Name == "" {
|
||||||
|
@ -44,7 +44,7 @@ func TestCreateObject(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
for i, tt := range []struct {
|
for i, tt := range []struct {
|
||||||
create *storj.CreateObject
|
create *kvmetainfo.CreateObject
|
||||||
expectedRS storj.RedundancyScheme
|
expectedRS storj.RedundancyScheme
|
||||||
expectedEP storj.EncryptionParameters
|
expectedEP storj.EncryptionParameters
|
||||||
}{
|
}{
|
||||||
@ -54,17 +54,17 @@ func TestCreateObject(t *testing.T) {
|
|||||||
expectedEP: kvmetainfo.DefaultES,
|
expectedEP: kvmetainfo.DefaultES,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
create: &storj.CreateObject{RedundancyScheme: customRS, EncryptionParameters: customEP},
|
create: &kvmetainfo.CreateObject{RedundancyScheme: customRS, EncryptionParameters: customEP},
|
||||||
expectedRS: customRS,
|
expectedRS: customRS,
|
||||||
expectedEP: customEP,
|
expectedEP: customEP,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
create: &storj.CreateObject{RedundancyScheme: customRS},
|
create: &kvmetainfo.CreateObject{RedundancyScheme: customRS},
|
||||||
expectedRS: customRS,
|
expectedRS: customRS,
|
||||||
expectedEP: storj.EncryptionParameters{CipherSuite: kvmetainfo.DefaultES.CipherSuite, BlockSize: kvmetainfo.DefaultES.BlockSize},
|
expectedEP: storj.EncryptionParameters{CipherSuite: kvmetainfo.DefaultES.CipherSuite, BlockSize: kvmetainfo.DefaultES.BlockSize},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
create: &storj.CreateObject{EncryptionParameters: customEP},
|
create: &kvmetainfo.CreateObject{EncryptionParameters: customEP},
|
||||||
expectedRS: kvmetainfo.DefaultRS,
|
expectedRS: kvmetainfo.DefaultRS,
|
||||||
expectedEP: storj.EncryptionParameters{CipherSuite: customEP.CipherSuite, BlockSize: kvmetainfo.DefaultES.BlockSize},
|
expectedEP: storj.EncryptionParameters{CipherSuite: customEP.CipherSuite, BlockSize: kvmetainfo.DefaultES.BlockSize},
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user