1
1
from .models .Storage import Storage
2
2
3
- from typing import List
3
+ from typing import Mapping
4
4
5
5
from naas_python .domains .storage .StorageSchema import (
6
6
IStorageDomain ,
11
11
StorageProviderNotFound
12
12
)
13
13
class StorageDomain (IStorageDomain ):
14
- def __init__ (self , adaptor : IStorageAdaptor , storage_provider_adaptors : List [ IStorageProviderAdaptor ]):
14
+ def __init__ (self , adaptor : IStorageAdaptor , storage_provider_adaptors : Mapping [ str , IStorageProviderAdaptor ]):
15
15
# List[IStorageProviderAdaptor])
16
16
#Map[str : IStorageProviderAdaptor])
17
- self .adaptor = adaptor
18
- self .storage_provider_adaptors = storage_provider_adaptors
17
+ self .adaptor : IStorageAdaptor = adaptor
18
+ self .storage_provider_adaptors : Mapping [ str , IStorageProviderAdaptor ] = storage_provider_adaptors
19
19
20
20
############### API ###############
21
21
def create_workspace_storage (self ,
@@ -75,8 +75,8 @@ def create_workspace_storage_credentials(self,
75
75
storage_name : Storage .__fields__ ['name' ],
76
76
) -> dict :
77
77
credentials = self .adaptor .generate_credentials (workspace_id , storage_name )
78
- self .storage_provider .save_naas_credentials (workspace_id , storage_name , credentials )
79
- return dict
78
+ self .__get_storage_provider_adaptor ( workspace_id = workspace_id , storage_name = storage_name ) .save_naas_credentials (workspace_id , storage_name , credentials )
79
+ return credentials
80
80
81
81
############### BOTO ###############
82
82
def __get_storage_provider (self ,
@@ -86,6 +86,15 @@ def __get_storage_provider(self,
86
86
#TODO This function should check in ~.naas/credentials to grab the provider id (s3;azure;gcp;...)
87
87
return 's3'
88
88
89
+ def __get_storage_provider_adaptor (self ,
90
+ workspace_id : str ,
91
+ storage_name : Storage .__fields__ ['name' ]
92
+ ) -> IStorageProviderAdaptor :
93
+ storage_provider_id = self .__get_storage_provider (workspace_id , storage_name )
94
+ if storage_provider_id not in self .storage_provider_adaptors :
95
+ raise StorageProviderNotFound (f'Provider "{ storage_provider_id } " is not implemented or not loaded.' )
96
+ return self .storage_provider_adaptors [storage_provider_id ]
97
+
89
98
90
99
def post_workspace_storage_object (self ,
91
100
workspace_id : str ,
0 commit comments