From 63778e75bbd69c6d108db4918467d9d5eca35e5c Mon Sep 17 00:00:00 2001 From: Sydonian <794346190@qq.com> Date: Wed, 2 Jul 2025 09:54:37 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=9C=AA=E5=90=AF=E7=94=A8?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E7=B3=BB=E7=BB=9F=E7=89=B9=E6=80=A7=E5=8D=B4?= =?UTF-8?q?=E5=9C=A8=E7=94=9F=E6=88=90=E8=AE=A1=E5=88=92=E7=9A=84=E6=97=B6?= =?UTF-8?q?=E5=80=99=E7=94=A8=E5=88=B0=E4=BA=86=E7=9B=B8=E5=85=B3=E6=8C=87?= =?UTF-8?q?=E4=BB=A4=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/pkgs/storage/all.go | 1 - common/pkgs/storage/efile/efile.go | 8 +- common/pkgs/storage/local/local.go | 32 ++++---- common/pkgs/storage/mashup/mashup.go | 114 --------------------------- common/pkgs/storage/obs/obs.go | 32 ++++---- common/pkgs/storage/s3/s3.go | 25 +++--- 6 files changed, 49 insertions(+), 163 deletions(-) delete mode 100644 common/pkgs/storage/mashup/mashup.go 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