Merge branch 'master' of https://gitlink.org.cn/JointCloud/JCS-pub
This commit is contained in:
commit
bbb70e88bf
|
@ -4,6 +4,5 @@ import (
|
|||
// !!! 需要导入所有存储服务的包 !!!
|
||||
_ "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/storage/efile"
|
||||
_ "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/storage/local"
|
||||
_ "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/storage/mashup"
|
||||
_ "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/storage/obs"
|
||||
)
|
||||
|
|
|
@ -91,10 +91,6 @@ func (b *builder) getToken() (string, error) {
|
|||
}
|
||||
|
||||
func (b *builder) CreateECMultiplier(typeOnly bool) (types.ECMultiplier, error) {
|
||||
if typeOnly {
|
||||
return (*ECMultiplier)(nil), nil
|
||||
}
|
||||
|
||||
feat := types.FindFeature[*cortypes.ECMultiplierFeature](b.detail)
|
||||
if feat == nil {
|
||||
return nil, fmt.Errorf("feature ECMultiplier not found")
|
||||
|
@ -105,6 +101,10 @@ func (b *builder) CreateECMultiplier(typeOnly bool) (types.ECMultiplier, error)
|
|||
return nil, fmt.Errorf("invalid storage credential type %T for efile storage", b.detail.UserSpace.Credential)
|
||||
}
|
||||
|
||||
if typeOnly {
|
||||
return (*ECMultiplier)(nil), nil
|
||||
}
|
||||
|
||||
return &ECMultiplier{
|
||||
blder: b,
|
||||
url: cred.APIURL,
|
||||
|
|
|
@ -27,56 +27,56 @@ func (b *builder) FeatureDesc() types.FeatureDesc {
|
|||
}
|
||||
|
||||
func (b *builder) CreateShardStore(typeOnly bool) (types.ShardStore, error) {
|
||||
if typeOnly {
|
||||
return (*ShardStore)(nil), nil
|
||||
}
|
||||
|
||||
cred, ok := b.detail.UserSpace.Credential.(*cortypes.LocalCred)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("invalid storage credential type %T for local storage", b.detail.UserSpace.Credential)
|
||||
}
|
||||
|
||||
if typeOnly {
|
||||
return (*ShardStore)(nil), nil
|
||||
}
|
||||
|
||||
return NewShardStore(cred.RootDir, b.detail)
|
||||
}
|
||||
|
||||
func (b *builder) CreateBaseStore(typeOnly bool) (types.BaseStore, error) {
|
||||
if typeOnly {
|
||||
return (*BaseStore)(nil), nil
|
||||
}
|
||||
|
||||
cred, ok := b.detail.UserSpace.Credential.(*cortypes.LocalCred)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("invalid storage credential type %T for local storage", b.detail.UserSpace.Credential)
|
||||
}
|
||||
|
||||
if typeOnly {
|
||||
return (*BaseStore)(nil), nil
|
||||
}
|
||||
|
||||
return NewBaseStore(cred.RootDir, b.detail)
|
||||
}
|
||||
|
||||
func (b *builder) CreateMultiparter(typeOnly bool) (types.Multiparter, error) {
|
||||
if typeOnly {
|
||||
return (*Multiparter)(nil), nil
|
||||
}
|
||||
|
||||
feat := types.FindFeature[*cortypes.MultipartUploadFeature](b.detail)
|
||||
if feat == nil {
|
||||
return nil, fmt.Errorf("feature %T not found", cortypes.MultipartUploadFeature{})
|
||||
}
|
||||
|
||||
if typeOnly {
|
||||
return (*Multiparter)(nil), nil
|
||||
}
|
||||
|
||||
return &Multiparter{
|
||||
feat: feat,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (b *builder) CreateS2STransfer(typeOnly bool) (types.S2STransfer, error) {
|
||||
if typeOnly {
|
||||
return (*S2STransfer)(nil), nil
|
||||
}
|
||||
|
||||
feat := types.FindFeature[*cortypes.S2STransferFeature](b.detail)
|
||||
if feat == nil {
|
||||
return nil, fmt.Errorf("feature %T not found", cortypes.S2STransferFeature{})
|
||||
}
|
||||
|
||||
if typeOnly {
|
||||
return (*S2STransfer)(nil), nil
|
||||
}
|
||||
|
||||
return &S2STransfer{
|
||||
detail: b.detail,
|
||||
}, nil
|
||||
|
|
|
@ -1,114 +0,0 @@
|
|||
package mashup
|
||||
|
||||
/*
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
clitypes "gitlink.org.cn/cloudream/jcs-pub/client/types"
|
||||
"gitlink.org.cn/cloudream/jcs-pub/common/pkgs/storage/factory/reg"
|
||||
"gitlink.org.cn/cloudream/jcs-pub/common/pkgs/storage/types"
|
||||
cortypes "gitlink.org.cn/cloudream/jcs-pub/coordinator/types"
|
||||
)
|
||||
|
||||
func init() {
|
||||
reg.RegisterBuilder[*cortypes.MashupStorageType](func(detail *clitypes.UserSpaceDetail) types.StorageBuilder {
|
||||
return &builder{
|
||||
detail: detail,
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
type builder struct {
|
||||
detail *clitypes.UserSpaceDetail
|
||||
}
|
||||
|
||||
func (b *builder) FeatureDesc() types.FeatureDesc {
|
||||
stgType := b.detail.UserSpace.Storage.(*cortypes.MashupStorageType)
|
||||
cred, ok := b.detail.UserSpace.Credential.(*cortypes.MashupCred)
|
||||
if !ok {
|
||||
return types.FeatureDesc{}
|
||||
}
|
||||
|
||||
newDetail := *b.detail
|
||||
newDetail.UserSpace.Storage = stgType.Store
|
||||
newDetail.UserSpace.Credential = cred.Store
|
||||
|
||||
blder := reg.GetBuilderInternal(&newDetail)
|
||||
return blder.FeatureDesc()
|
||||
}
|
||||
|
||||
func (b *builder) CreateShardStore() (types.ShardStore, error) {
|
||||
stgType := b.detail.UserSpace.Storage.(*cortypes.MashupStorageType)
|
||||
cred, ok := b.detail.UserSpace.Credential.(*cortypes.MashupCred)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("invalid storage credential type %T for mashup storage", b.detail.UserSpace.Credential)
|
||||
}
|
||||
|
||||
newDetail := *b.detail
|
||||
newDetail.UserSpace.Storage = stgType.Store
|
||||
newDetail.UserSpace.Credential = cred.Store
|
||||
|
||||
blder := reg.GetBuilderInternal(&newDetail)
|
||||
return blder.CreateShardStore()
|
||||
}
|
||||
|
||||
func (b *builder) CreateBaseStore() (types.BaseStore, error) {
|
||||
stgType := b.detail.UserSpace.Storage.(*cortypes.MashupStorageType)
|
||||
cred, ok := b.detail.UserSpace.Credential.(*cortypes.MashupCred)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("invalid storage credential type %T for mashup storage", b.detail.UserSpace.Credential)
|
||||
}
|
||||
|
||||
newDetail := *b.detail
|
||||
newDetail.UserSpace.Storage = stgType.Store
|
||||
newDetail.UserSpace.Credential = cred.Store
|
||||
|
||||
blder := reg.GetBuilderInternal(&newDetail)
|
||||
return blder.CreateBaseStore()
|
||||
}
|
||||
|
||||
func (b *builder) CreateMultiparter() (types.Multiparter, error) {
|
||||
stgType := b.detail.UserSpace.Storage.(*cortypes.MashupStorageType)
|
||||
cred, ok := b.detail.UserSpace.Credential.(*cortypes.MashupCred)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("invalid storage credential type %T for mashup storage", b.detail.UserSpace.Credential)
|
||||
}
|
||||
|
||||
newDetail := *b.detail
|
||||
newDetail.UserSpace.Storage = stgType.Feature
|
||||
newDetail.UserSpace.Credential = cred.Feature
|
||||
|
||||
blder := reg.GetBuilderInternal(&newDetail)
|
||||
return blder.CreateMultiparter()
|
||||
}
|
||||
|
||||
func (b *builder) CreateS2STransfer() (types.S2STransfer, error) {
|
||||
stgType := b.detail.UserSpace.Storage.(*cortypes.MashupStorageType)
|
||||
cred, ok := b.detail.UserSpace.Credential.(*cortypes.MashupCred)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("invalid storage credential type %T for mashup storage", b.detail.UserSpace.Credential)
|
||||
}
|
||||
|
||||
newDetail := *b.detail
|
||||
newDetail.UserSpace.Storage = stgType.Feature
|
||||
newDetail.UserSpace.Credential = cred.Feature
|
||||
|
||||
blder := reg.GetBuilderInternal(&newDetail)
|
||||
return blder.CreateS2STransfer()
|
||||
}
|
||||
|
||||
func (b *builder) CreateECMultiplier() (types.ECMultiplier, error) {
|
||||
stgType := b.detail.UserSpace.Storage.(*cortypes.MashupStorageType)
|
||||
cred, ok := b.detail.UserSpace.Credential.(*cortypes.MashupCred)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("invalid storage credential type %T for mashup storage", b.detail.UserSpace.Credential)
|
||||
}
|
||||
|
||||
newDetail := *b.detail
|
||||
newDetail.UserSpace.Storage = stgType.Feature
|
||||
newDetail.UserSpace.Credential = cred.Feature
|
||||
|
||||
blder := reg.GetBuilderInternal(&newDetail)
|
||||
return blder.CreateECMultiplier()
|
||||
}
|
||||
*/
|
|
@ -33,16 +33,16 @@ func (b *builder) FeatureDesc() types.FeatureDesc {
|
|||
}
|
||||
|
||||
func (b *builder) CreateShardStore(typeOnly bool) (types.ShardStore, error) {
|
||||
if typeOnly {
|
||||
return (*ShardStore)(nil), nil
|
||||
}
|
||||
|
||||
stgType := b.detail.UserSpace.Storage.(*cortypes.OBSType)
|
||||
cred, ok := b.detail.UserSpace.Credential.(*cortypes.OBSCred)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("invalid storage credential type %T for obs storage", b.detail.UserSpace.Credential)
|
||||
}
|
||||
|
||||
if typeOnly {
|
||||
return (*ShardStore)(nil), nil
|
||||
}
|
||||
|
||||
cli, bucket, err := createClient(stgType, cred)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -52,16 +52,16 @@ func (b *builder) CreateShardStore(typeOnly bool) (types.ShardStore, error) {
|
|||
}
|
||||
|
||||
func (b *builder) CreateBaseStore(typeOnly bool) (types.BaseStore, error) {
|
||||
if typeOnly {
|
||||
return (*s3stg.BaseStore)(nil), nil
|
||||
}
|
||||
|
||||
stgType := b.detail.UserSpace.Storage.(*cortypes.OBSType)
|
||||
cred, ok := b.detail.UserSpace.Credential.(*cortypes.OBSCred)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("invalid storage credential type %T for obs storage", b.detail.UserSpace.Credential)
|
||||
}
|
||||
|
||||
if typeOnly {
|
||||
return (*s3stg.BaseStore)(nil), nil
|
||||
}
|
||||
|
||||
cli, bucket, err := createClient(stgType, cred)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -91,16 +91,16 @@ func createClient(stgType *cortypes.OBSType, cred *cortypes.OBSCred) (*s3.Client
|
|||
}
|
||||
|
||||
func (b *builder) CreateMultiparter(typeOnly bool) (types.Multiparter, error) {
|
||||
if typeOnly {
|
||||
return (*s3stg.Multiparter)(nil), nil
|
||||
}
|
||||
|
||||
stgType := b.detail.UserSpace.Storage.(*cortypes.OBSType)
|
||||
feat := types.FindFeature[*cortypes.MultipartUploadFeature](b.detail)
|
||||
if feat == nil {
|
||||
return nil, fmt.Errorf("feature %T not found", cortypes.MultipartUploadFeature{})
|
||||
}
|
||||
|
||||
if typeOnly {
|
||||
return (*s3stg.Multiparter)(nil), nil
|
||||
}
|
||||
|
||||
cred, ok := b.detail.UserSpace.Credential.(*cortypes.OBSCred)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("invalid storage credential type %T for obs storage", b.detail.UserSpace.Credential)
|
||||
|
@ -120,16 +120,16 @@ func (b *builder) CreateMultiparter(typeOnly bool) (types.Multiparter, error) {
|
|||
}
|
||||
|
||||
func (b *builder) CreateS2STransfer(typeOnly bool) (types.S2STransfer, error) {
|
||||
if typeOnly {
|
||||
return (*S2STransfer)(nil), nil
|
||||
}
|
||||
|
||||
stgType := b.detail.UserSpace.Storage.(*cortypes.OBSType)
|
||||
feat := types.FindFeature[*cortypes.S2STransferFeature](b.detail)
|
||||
if feat == nil {
|
||||
return nil, fmt.Errorf("feature %T not found", cortypes.S2STransferFeature{})
|
||||
}
|
||||
|
||||
if typeOnly {
|
||||
return (*S2STransfer)(nil), nil
|
||||
}
|
||||
|
||||
cred, ok := b.detail.UserSpace.Credential.(*cortypes.OBSCred)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("invalid storage credential type %T for obs storage", b.detail.UserSpace.Credential)
|
||||
|
|
|
@ -32,16 +32,16 @@ func (b *builder) FeatureDesc() types.FeatureDesc {
|
|||
}
|
||||
|
||||
func (b *builder) CreateShardStore(typeOnly bool) (types.ShardStore, error) {
|
||||
if typeOnly {
|
||||
return (*ShardStore)(nil), nil
|
||||
}
|
||||
|
||||
stgType := b.detail.UserSpace.Storage.(*cortypes.S3Type)
|
||||
s3Cred, ok := b.detail.UserSpace.Credential.(*cortypes.S3Cred)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("invalid storage credential type %T for s3 storage", b.detail.UserSpace.Credential)
|
||||
}
|
||||
|
||||
if typeOnly {
|
||||
return (*ShardStore)(nil), nil
|
||||
}
|
||||
|
||||
cli, bkt, err := createClient(stgType, s3Cred)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -51,15 +51,16 @@ func (b *builder) CreateShardStore(typeOnly bool) (types.ShardStore, error) {
|
|||
}
|
||||
|
||||
func (b *builder) CreateBaseStore(typeOnly bool) (types.BaseStore, error) {
|
||||
if typeOnly {
|
||||
return (*BaseStore)(nil), nil
|
||||
}
|
||||
|
||||
stgType := b.detail.UserSpace.Storage.(*cortypes.S3Type)
|
||||
s3Cred, ok := b.detail.UserSpace.Credential.(*cortypes.S3Cred)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("invalid storage credential type %T for s3 storage", b.detail.UserSpace.Credential)
|
||||
}
|
||||
|
||||
if typeOnly {
|
||||
return (*BaseStore)(nil), nil
|
||||
}
|
||||
|
||||
cli, bkt, err := createClient(stgType, s3Cred)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -91,10 +92,6 @@ func createClient(stgType *cortypes.S3Type, cred *cortypes.S3Cred) (*s3.Client,
|
|||
}
|
||||
|
||||
func (b *builder) CreateMultiparter(typeOnly bool) (types.Multiparter, error) {
|
||||
if typeOnly {
|
||||
return (*Multiparter)(nil), nil
|
||||
}
|
||||
|
||||
stgType := b.detail.UserSpace.Storage.(*cortypes.S3Type)
|
||||
feat := types.FindFeature[*cortypes.MultipartUploadFeature](b.detail)
|
||||
if feat == nil {
|
||||
|
@ -106,6 +103,10 @@ func (b *builder) CreateMultiparter(typeOnly bool) (types.Multiparter, error) {
|
|||
return nil, fmt.Errorf("invalid storage credential type %T for s3 base store", b.detail.UserSpace.Credential)
|
||||
}
|
||||
|
||||
if typeOnly {
|
||||
return (*Multiparter)(nil), nil
|
||||
}
|
||||
|
||||
cli, bucket, err := createClient(stgType, s3Cred)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
Loading…
Reference in New Issue