mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-10-23 14:30:46 +02:00
s3: route uploads by storage class disk mapping
This commit is contained in:
1 parent
7737196078
commit
5e4b3f0078
10 files changed
+235
-7
No files matched your search
@@ -56,6 +56,7 @@ type S3ApiServerOption struct {
|
||||
Cipher bool // encrypt data on volume servers
|
||||
BindIp string
|
||||
GrpcPort int
|
||||
StorageClassDiskTypeMap string // e.g. "STANDARD_IA=ssd,GLACIER=hdd"
|
||||
}
|
||||
|
||||
type S3ApiServer struct {
|
||||
@@ -78,6 +79,7 @@ type S3ApiServer struct {
|
||||
embeddedIam *EmbeddedIamApi // Embedded IAM API server (when enabled)
|
||||
stsHandlers *STSHandlers // STS HTTP handlers for AssumeRoleWithWebIdentity
|
||||
cipher bool // encrypt data on volume servers
|
||||
storageClassDiskTypes map[string]string
|
||||
}
|
||||
|
||||
func NewS3ApiServer(router *mux.Router, option *S3ApiServerOption) (s3ApiServer *S3ApiServer, err error) {
|
||||
@@ -168,6 +170,13 @@ func NewS3ApiServerWithStore(router *mux.Router, option *S3ApiServerOption, expl
|
||||
inFlightDataLimitCond: sync.NewCond(new(sync.Mutex)),
|
||||
cipher: option.Cipher,
|
||||
}
|
||||
if option.StorageClassDiskTypeMap != "" {
|
||||
parsedMappings, parseErr := parseStorageClassDiskTypeMap(option.StorageClassDiskTypeMap)
|
||||
if parseErr != nil {
|
||||
return nil, fmt.Errorf("invalid -s3.storageClassDiskTypeMap: %w", parseErr)
|
||||
}
|
||||
s3ApiServer.storageClassDiskTypes = parsedMappings
|
||||
}
|
||||
|
||||
// Set s3a reference in circuit breaker for upload limiting
|
||||
s3ApiServer.cb.s3a = s3ApiServer
|
||||
|
||||
Reference in new issue
Block a user