diff --git a/common/pkgs/storage/all.go b/common/pkgs/storage/all.go index d86b9bb..ce1107a 100644 --- a/common/pkgs/storage/all.go +++ b/common/pkgs/storage/all.go @@ -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" ) diff --git a/common/pkgs/storage/efile/efile.go b/common/pkgs/storage/efile/efile.go index cfd9f4d..7f65ed0 100644 --- a/common/pkgs/storage/efile/efile.go +++ b/common/pkgs/storage/efile/efile.go @@ -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, diff --git a/common/pkgs/storage/local/local.go b/common/pkgs/storage/local/local.go index fa7121e..05a07d6 100644 --- a/common/pkgs/storage/local/local.go +++ b/common/pkgs/storage/local/local.go @@ -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 diff --git a/common/pkgs/storage/mashup/mashup.go b/common/pkgs/storage/mashup/mashup.go deleted file mode 100644 index 178f08f..0000000 --- a/common/pkgs/storage/mashup/mashup.go +++ /dev/null @@ -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() -} -*/ diff --git a/common/pkgs/storage/obs/obs.go b/common/pkgs/storage/obs/obs.go index f0641fc..c3a4d26 100644 --- a/common/pkgs/storage/obs/obs.go +++ b/common/pkgs/storage/obs/obs.go @@ -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) diff --git a/common/pkgs/storage/s3/s3.go b/common/pkgs/storage/s3/s3.go index e17e686..9ab99aa 100644 --- a/common/pkgs/storage/s3/s3.go +++ b/common/pkgs/storage/s3/s3.go @@ -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