refactor: Enhance existing NewS3ApiServer instead of creating separate IAM function

- Add IamConfig field to S3ApiServerOption for optional advanced IAM
- Integrate IAM loading logic directly into NewS3ApiServerWithStore
- Remove duplicate enhanced_s3_server.go file
- Simplify command line logic to use single server constructor
- Maintain backward compatibility - standard IAM works without config
- Advanced IAM activated automatically when -iam.config is provided

This follows better architectural principles by enhancing existing
functions rather than creating parallel implementations.
This commit is contained in:
chrislu committed 2025-08-24 12:16:19 -07:00
1 parent 299c86f002
commit 4c324fca15
3 files changed
+101 -199

No files matched your search

+18 -30
View File
@@ -242,40 +242,28 @@ func (s3opt *S3Options) startS3Server() bool {
var s3ApiServer *s3api.S3ApiServer
var s3ApiServer_err error
// Use enhanced S3 server with IAM if config is provided
// Create S3 server with optional advanced IAM integration
if *s3opt.iamConfig != "" {
glog.V(0).Infof("Starting S3 API Server with advanced IAM integration")
s3ApiServer, s3ApiServer_err = s3api.NewS3ApiServerWithIAM(router, &s3api.S3ApiServerOption{
Filer: filerAddress,
Port: *s3opt.port,
Config: *s3opt.config,
DomainName: *s3opt.domainName,
AllowedOrigins: strings.Split(*s3opt.allowedOrigins, ","),
BucketsPath: filerBucketsPath,
GrpcDialOption: grpcDialOption,
AllowEmptyFolder: *s3opt.allowEmptyFolder,
AllowDeleteBucketNotEmpty: *s3opt.allowDeleteBucketNotEmpty,
LocalFilerSocket: localFilerSocket,
DataCenter: *s3opt.dataCenter,
FilerGroup: filerGroup,
}, *s3opt.iamConfig)
} else {
// Use standard S3 server
s3ApiServer, s3ApiServer_err = s3api.NewS3ApiServer(router, &s3api.S3ApiServerOption{
Filer: filerAddress,
Port: *s3opt.port,
Config: *s3opt.config,
DomainName: *s3opt.domainName,
AllowedOrigins: strings.Split(*s3opt.allowedOrigins, ","),
BucketsPath: filerBucketsPath,
GrpcDialOption: grpcDialOption,
AllowEmptyFolder: *s3opt.allowEmptyFolder,
AllowDeleteBucketNotEmpty: *s3opt.allowDeleteBucketNotEmpty,
LocalFilerSocket: localFilerSocket,
DataCenter: *s3opt.dataCenter,
FilerGroup: filerGroup,
})
glog.V(0).Infof("Starting S3 API Server with standard IAM")
}
s3ApiServer, s3ApiServer_err = s3api.NewS3ApiServer(router, &s3api.S3ApiServerOption{
Filer: filerAddress,
Port: *s3opt.port,
Config: *s3opt.config,
DomainName: *s3opt.domainName,
AllowedOrigins: strings.Split(*s3opt.allowedOrigins, ","),
BucketsPath: filerBucketsPath,
GrpcDialOption: grpcDialOption,
AllowEmptyFolder: *s3opt.allowEmptyFolder,
AllowDeleteBucketNotEmpty: *s3opt.allowDeleteBucketNotEmpty,
LocalFilerSocket: localFilerSocket,
DataCenter: *s3opt.dataCenter,
FilerGroup: filerGroup,
IamConfig: *s3opt.iamConfig, // Advanced IAM config (optional)
})
if s3ApiServer_err != nil {
glog.Fatalf("S3 API Server startup error: %v", s3ApiServer_err)
}