diff --git a/weed/admin/dash/admin_server.go b/weed/admin/dash/admin_server.go index 5fe94a884..e001576b9 100644 --- a/weed/admin/dash/admin_server.go +++ b/weed/admin/dash/admin_server.go @@ -1,7 +1,6 @@ package dash import ( - "bytes" "context" "fmt" "net/http" @@ -14,11 +13,9 @@ import ( "github.com/seaweedfs/seaweedfs/weed/admin/maintenance" "github.com/seaweedfs/seaweedfs/weed/cluster" "github.com/seaweedfs/seaweedfs/weed/credential" - "github.com/seaweedfs/seaweedfs/weed/filer" "github.com/seaweedfs/seaweedfs/weed/glog" "github.com/seaweedfs/seaweedfs/weed/pb" "github.com/seaweedfs/seaweedfs/weed/pb/filer_pb" - "github.com/seaweedfs/seaweedfs/weed/pb/iam_pb" "github.com/seaweedfs/seaweedfs/weed/pb/master_pb" "github.com/seaweedfs/seaweedfs/weed/pb/mq_pb" "github.com/seaweedfs/seaweedfs/weed/pb/schema_pb" @@ -518,24 +515,11 @@ func (s *AdminServer) DeleteS3Bucket(bucketName string) error { // GetObjectStoreUsers retrieves object store users from identity.json func (s *AdminServer) GetObjectStoreUsers(ctx context.Context) ([]ObjectStoreUser, error) { - s3cfg := &iam_pb.S3ApiConfiguration{} - - // Load IAM configuration from filer - err := s.WithFilerClient(func(client filer_pb.SeaweedFilerClient) error { - var buf bytes.Buffer - if err := filer.ReadEntry(nil, client, filer.IamConfigDirectory, filer.IamIdentityFile, &buf); err != nil { - if err == filer_pb.ErrNotFound { - // If file doesn't exist, return empty configuration - return nil - } - return err - } - if buf.Len() > 0 { - return filer.ParseS3ConfigurationFromBytes(buf.Bytes(), s3cfg) - } - return nil - }) + if s.credentialManager == nil { + return []ObjectStoreUser{}, nil + } + s3cfg, err := s.credentialManager.LoadConfiguration(ctx) if err != nil { glog.Errorf("Failed to load IAM configuration: %v", err) return []ObjectStoreUser{}, nil // Return empty list instead of error for UI @@ -1827,6 +1811,11 @@ func (s *AdminServer) Shutdown() { glog.Errorf("Failed to stop worker gRPC server: %v", err) } + // Shutdown credential manager + if s.credentialManager != nil { + s.credentialManager.Shutdown() + } + glog.V(1).Infof("Admin server shutdown complete") } diff --git a/weed/command/admin.go b/weed/command/admin.go index c47e759a8..7ab543dfa 100644 --- a/weed/command/admin.go +++ b/weed/command/admin.go @@ -368,6 +368,8 @@ func startAdminServer(ctx context.Context, options AdminOptions, enableUI bool) return fmt.Errorf("admin server forced to shutdown: %w", err) } + adminServer.Shutdown() + return nil }