diff --git a/pkg/storage/manager.go b/pkg/storage/manager.go index 377aa87e7..aaec00dbe 100644 --- a/pkg/storage/manager.go +++ b/pkg/storage/manager.go @@ -1,19 +1,43 @@ package storage +import ( + "github.com/beam-cloud/beta9/pkg/common" + "github.com/beam-cloud/beta9/pkg/types" +) + type StorageManager struct { - storage map[string]Storage + storage *common.SafeMap[Storage] + appConfig types.AppConfig } -func NewStorageManager() *StorageManager { +func NewStorageManager(appConfig types.AppConfig) *StorageManager { return &StorageManager{ - storage: make(map[string]Storage), + storage: common.NewSafeMap[Storage](), + appConfig: appConfig, } } -func (s *StorageManager) CreateWorkspaceStorage(name string, storage Storage) { - s.storage[name] = storage +func (s *StorageManager) Create(name string, storage Storage) { + s.storage.Set(name, storage) +} + +func (s *StorageManager) Mount(name string) Storage { + storage, ok := s.storage.Get(name) + if !ok { + return nil + } + + storage.Mount("/mock") + + return storage } -func (s *StorageManager) MountWorkspaceStorage(name string) Storage { - return s.storage[name] +func (s *StorageManager) Unmount(name string) { + storage, ok := s.storage.Get(name) + if !ok { + return + } + + storage.Unmount("/mock") + s.storage.Delete(name) }