Skip to content

Commit e4c8705

Browse files
authored
Merge pull request #38 from jupyter-naas/dev
fix: Merge dev on main
2 parents 9a27428 + 75c27c9 commit e4c8705

File tree

6 files changed

+64
-5
lines changed

6 files changed

+64
-5
lines changed

naas_python/domains/secret/SecretDomain.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,13 @@ def create(self, name: str, value: str) -> None:
2323
response = self.adaptor.create_secret(
2424
name=name, value=value,
2525
)
26-
2726
return response
2827

28+
def bulk_create(self, secrets_list: List[Secret]) -> None:
29+
response = self.adaptor.bulk_create(
30+
secrets_list=secrets_list
31+
)
32+
2933
def get(self, name: str) -> Secret:
3034
response = self.adaptor.get_secret(name=name)
3135
return response

naas_python/domains/secret/SecretSchema.py

+9
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from typing import List
55

66
from naas_models.pydantic.secret_p2p import *
7+
from .models.Secret import Secret
78

89
from naas_python.utils.exceptions import NaasException
910

@@ -40,6 +41,10 @@ class ISecretDomain(metaclass=ABCMeta):
4041
@abstractmethod
4142
def create(self, name: str, value: str) -> None:
4243
raise NotImplementedError
44+
45+
@abstractmethod
46+
def bulk_create(self, secrets_list: List[Secret]) -> None:
47+
raise NotImplementedError
4348

4449
@abstractmethod
4550
def get(self, name: str) -> Secret:
@@ -61,6 +66,10 @@ class ISecretInvoker(metaclass=ABCMeta):
6166
@abstractmethod
6267
def create(self, **kwargs):
6368
raise NotImplementedError
69+
70+
@abstractmethod
71+
def bulk_create(self, secrets_list: List[Secret]) -> None:
72+
raise NotImplementedError
6473

6574
@abstractmethod
6675
def get(self, **kwargs):

naas_python/domains/secret/adaptors/primary/SDKSecretAdaptor.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,12 @@ def create(self, name: str = "", value: str ="") -> None:
2424
"""Create a secret with the given name"""
2525
secret = self.domain.create(name=name, value=value)
2626
return secret
27-
27+
28+
def bulk_create(self, secrets_list: List[Secret] = "[]") -> None:
29+
"""Create a list of secrets"""
30+
secret = self.domain.bulk_create(secrets_list=secrets_list)
31+
return secret
32+
2833
def list(self, page_size: int = 0, page_number: int = 0) -> List[Secret]:
2934
"""List all secrets for the current user"""
3035
secret_list = self.domain.list(page_size=page_size, page_number=page_number)

naas_python/domains/secret/adaptors/primary/TyperSecretAdaptor.py

+16
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
ISecretDomain,
2121
ISecretInvoker,
2222
SecretConflictError,
23+
Secret
2324
)
2425
# from naas_python.domains.secret.SecretSchema import SecrettryConflictError
2526
from naas_python.utils.cicd import Pipeline
@@ -53,6 +54,7 @@ def __init__(self, domain: ISecretDomain):
5354
# Include all commands
5455
self.app.command()(self.list)
5556
self.app.command()(self.create)
57+
self.app.command()(self.bulk_create)
5658
self.app.command()(self.get)
5759
self.app.command()(self.delete)
5860

@@ -96,6 +98,20 @@ def create(
9698

9799
if secret is None:
98100
print('Secret Successfully created')
101+
102+
def bulk_create(
103+
self,
104+
secrets: str = typer.Option(..., "--secrets", help="List of secrets"),
105+
106+
):
107+
print("\ntyper_list:",json.dumps(secrets))
108+
"""Create Secrets with the given specifications"""
109+
secrets = self.domain.bulk_create(
110+
secrets_list=secrets,
111+
)
112+
113+
if secrets is None:
114+
print('Secret Successfully created')
99115

100116
def get(
101117
self,

naas_python/domains/secret/adaptors/secondary/NaasSecretAPIAdaptor.py

+19
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,25 @@ def create_secret(self, name: str, value: str) -> None:
7979
self._handle_response(api_response)
8080
return None
8181

82+
@BaseAPIAdaptor.service_status_decorator
83+
def bulk_create(self, secrets_list: List[Secret]) -> None:
84+
_url = f"{self.host}/secret/bulk"
85+
86+
logging.debug(f"create request url: {_url}")
87+
88+
api_response = self.make_api_request(
89+
requests.post,
90+
_url,
91+
payload=json.dumps(
92+
secrets_list
93+
),
94+
)
95+
logging.debug(
96+
f"Request URL: {api_response.url} :: status_code: {api_response.status_code}"
97+
)
98+
self._handle_response(api_response)
99+
return None
100+
82101
@BaseAPIAdaptor.service_status_decorator
83102
def get_secret(self, name:str) -> Secret:
84103
_url = f"{self.host}/secret/{name}"

naas_python/utils/domains_base/secondary/BaseAPIAdaptor.py

+9-3
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class ServiceStatusError(NaasException):
2222

2323
class BaseAPIAdaptor(NaasSpaceAuthenticatorAdapter):
2424
host = os.environ.get("NAAS_PYTHON_API_BASE_URL", "https://api.naas.ai")
25-
# host = os.environ.get("NAAS_PYTHON_API_BASE_URL", "http://localhost:8000")
25+
#host = os.environ.get("NAAS_PYTHON_API_BASE_URL", "http://localhost:8000")
2626
# Cache name is the name of the calling module
2727
cache_name = __name__
2828
cache_expire_after = 60 # Cache expires after 60 seconds
@@ -89,8 +89,8 @@ def make_api_request(
8989
return api_response
9090

9191
except requests.exceptions.HTTPError as e:
92+
_response = api_response.json()
9293
if api_response.status_code == 401:
93-
_response = api_response.json()
9494
_message = ""
9595
if "error_message" in _response:
9696
_message = _response["error_message"]
@@ -103,7 +103,13 @@ def make_api_request(
103103
e,
104104
)
105105
elif api_response.status_code == 500:
106-
_message = "Internal Server Error"
106+
_message = ""
107+
if "error_message" in _response:
108+
_message = _response["error_message"]
109+
elif "detail" in _response:
110+
_message = _response["detail"]
111+
else:
112+
_message = "Internal Server Error"
107113
raise ServiceStatusError(_message, e)
108114
else:
109115
# Other status codes will be handled by the calling method

0 commit comments

Comments
 (0)