Skip to content

Commit d0568fe

Browse files
committed
Merge branch 'main' into fix-delete-workspace-object
2 parents 9a51d19 + dac5ee7 commit d0568fe

File tree

10 files changed

+186
-33
lines changed

10 files changed

+186
-33
lines changed

.github/hooks/pre-commit

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/bin/sh
2+
3+
# Execute the make target
4+
make test
5+
6+
# Capture the exit status of the make command
7+
STATUS=$?
8+
9+
# If the make command fails, exit with the same status
10+
if [ $STATUS -ne 0 ]; then
11+
echo "Pre-commit hook failed: make test failed with status $STATUS"
12+
exit $STATUS
13+
fi
14+
15+
# If the make command succeeds, allow the commit to proceed
16+
exit 0

Makefile

+8
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
install-git-hooks:
2+
cp .github/hooks/pre-commit .git/hooks/pre-commit
3+
chmod +x .git/hooks/pre-commit
4+
5+
.PHONY: install-git-hooks
6+
7+
all: install-git-hooks run
8+
19
openapi-gen:
210
docker run --rm -v "${PWD}:/local" openapitools/openapi-generator-cli generate \
311
-i /local/openapis/naas-openapi.json \

naas_python/domains/storage/StorageDomain.py

+15-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from .models.Storage import Storage
22

3-
from typing import List
3+
from typing import Mapping
44

55
from naas_python.domains.storage.StorageSchema import (
66
IStorageDomain,
@@ -11,11 +11,11 @@
1111
StorageProviderNotFound
1212
)
1313
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]):
1515
# List[IStorageProviderAdaptor])
1616
#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
1919

2020
############### API ###############
2121
def create_workspace_storage(self,
@@ -75,8 +75,8 @@ def create_workspace_storage_credentials(self,
7575
storage_name: Storage.__fields__['name'],
7676
) -> dict:
7777
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
8080

8181
############### BOTO ###############
8282
def __get_storage_provider(self,
@@ -86,6 +86,15 @@ def __get_storage_provider(self,
8686
#TODO This function should check in ~.naas/credentials to grab the provider id (s3;azure;gcp;...)
8787
return 's3'
8888

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+
8998

9099
def post_workspace_storage_object(self,
91100
workspace_id: str,

naas_python/domains/storage/StorageSchema.py

+10-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from abc import ABCMeta, abstractmethod
22
from logging import getLogger
3-
from typing import List
3+
from typing import Mapping
44

55
from naas_models.pydantic.storage_p2p import *
66
from .models.Storage import Storage, Object
@@ -48,6 +48,10 @@ def delete_workspace_storage_object(self,
4848
) -> dict:
4949
raise NotImplementedError
5050

51+
@abstractmethod
52+
def generate_credentials(self, workspace_id :str, storage_name: str) -> dict:
53+
raise NotImplementedError
54+
5155
class IStorageProviderAdaptor(metaclass=ABCMeta):
5256

5357
provider_id : str
@@ -70,10 +74,14 @@ def get_workspace_storage_object(self,
7074
) -> bytes:
7175
raise NotImplementedError
7276

77+
@abstractmethod
78+
def save_naas_credentials(self, workspace_id:str, storage_name:str, credentials:dict)-> str:
79+
raise NotImplementedError
80+
7381
# Domain
7482
class IStorageDomain(metaclass=ABCMeta):
7583
adaptor: IStorageAdaptor
76-
storage_provider_adaptors : List[IStorageProviderAdaptor]
84+
storage_provider_adaptors : Mapping[str, IStorageProviderAdaptor]
7785
# storage_provider_adaptors : Map[str, IStorageProviderAdaptor]
7886
#TODO to be validated
7987

naas_python/domains/storage/adaptors/primary/TyperStorageAdaptor.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,8 @@ def create_workspace_storage_credentials(self,
179179
workspace_id=workspace_id,
180180
storage_name=storage_name
181181
)
182-
print("Credentials created.")
182+
print("Credentials created.")
183+
print(response)
183184

184185
############### BOTO3 ###############
185186
def post_workspace_storage_object(self,

naas_python/domains/storage/adaptors/secondary/NaasStorageAPIAdaptor.py

+8-6
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,10 @@ def create_workspace_storage(self,
4343
api_response = self.make_api_request(
4444
requests.post,
4545
_url,
46-
payload=json.dumps(
47-
{"storage": {"name": storage_name} }
48-
),
46+
payload={
47+
"storage":
48+
{"name": storage_name}
49+
},
4950
)
5051
return self.__handle_response(api_response)
5152

@@ -112,8 +113,9 @@ def generate_credentials(self, workspace_id :str, storage_name: str) -> dict:
112113
api_response = self.make_api_request(
113114
requests.post,
114115
_url,
115-
payload=json.dumps(
116-
{"name": storage_name}
117-
),
116+
payload={
117+
"name": storage_name
118+
}
119+
,
118120
)
119121
return self.__handle_response(api_response)

naas_python/utils/domains_base/secondary/BaseAPIAdaptor.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def make_api_request(
8484
headers.update({"Authorization": f"Bearer {self.jwt_token()}"})
8585

8686
try:
87-
api_response = method(url, data=payload, headers=headers)
87+
api_response = method(url, data=payload if type(payload) is str else json.dumps(payload), headers=headers)
8888
api_response.raise_for_status()
8989
return api_response
9090

poetry.lock

+123-13
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)