Skip to content

Commit ba535d1

Browse files
Add the updated external API (#1)
1 parent 0d11c47 commit ba535d1

27 files changed

+512
-234
lines changed

platform_api_client/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
from platform_api_client.exceptions import ApiException
3232

3333
# import models into sdk package
34-
from platform_api_client.models.auth_secret import AuthSecret
3534
from platform_api_client.models.client_secret_response import ClientSecretResponse
3635
from platform_api_client.models.create_compute_deployment_request import CreateComputeDeploymentRequest
3736
from platform_api_client.models.create_compute_deployment_response import CreateComputeDeploymentResponse
@@ -47,6 +46,7 @@
4746
from platform_api_client.models.deployment_type import DeploymentType
4847
from platform_api_client.models.endpoint_ready_state import EndpointReadyState
4948
from platform_api_client.models.get_compute_deployment_response import GetComputeDeploymentResponse
49+
from platform_api_client.models.get_deployment_log_response import GetDeploymentLogResponse
5050
from platform_api_client.models.get_deployment_response import GetDeploymentResponse
5151
from platform_api_client.models.get_inference_deployment_response import GetInferenceDeploymentResponse
5252
from platform_api_client.models.get_training_deployment_response import GetTrainingDeploymentResponse

platform_api_client/api/external_api.py

Lines changed: 327 additions & 17 deletions
Large diffs are not rendered by default.

platform_api_client/api_client.py

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
import tempfile
2323

2424
from urllib.parse import quote
25-
from typing import Tuple, Optional, List, Dict
25+
from typing import Tuple, Optional, List, Dict, Union
26+
from pydantic import SecretStr
2627

2728
from platform_api_client.configuration import Configuration
2829
from platform_api_client.api_response import ApiResponse, T as ApiResponseT
@@ -207,7 +208,8 @@ def param_serialize(
207208
post_params,
208209
collection_formats
209210
)
210-
post_params.extend(self.files_parameters(files))
211+
if files:
212+
post_params.extend(self.files_parameters(files))
211213

212214
# auth setting
213215
self.update_params_for_auth(
@@ -312,7 +314,10 @@ def response_deserialize(
312314
match = re.search(r"charset=([a-zA-Z\-\d]+)[\s;]?", content_type)
313315
encoding = match.group(1) if match else "utf-8"
314316
response_text = response_data.data.decode(encoding)
315-
return_data = self.deserialize(response_text, response_type)
317+
if response_type in ["bytearray", "str"]:
318+
return_data = self.__deserialize_primitive(response_text, response_type)
319+
else:
320+
return_data = self.deserialize(response_text, response_type)
316321
finally:
317322
if not 200 <= response_data.status <= 299:
318323
raise ApiException.from_response(
@@ -332,6 +337,7 @@ def sanitize_for_serialization(self, obj):
332337
"""Builds a JSON POST object.
333338
334339
If obj is None, return None.
340+
If obj is SecretStr, return obj.get_secret_value()
335341
If obj is str, int, long, float, bool, return directly.
336342
If obj is datetime.datetime, datetime.date
337343
convert to string in iso8601 format.
@@ -344,6 +350,10 @@ def sanitize_for_serialization(self, obj):
344350
"""
345351
if obj is None:
346352
return None
353+
elif isinstance(obj, Enum):
354+
return obj.value
355+
elif isinstance(obj, SecretStr):
356+
return obj.get_secret_value()
347357
elif isinstance(obj, self.PRIMITIVE_TYPES):
348358
return obj
349359
elif isinstance(obj, list):
@@ -365,7 +375,10 @@ def sanitize_for_serialization(self, obj):
365375
# and attributes which value is not None.
366376
# Convert attribute name to json key in
367377
# model definition for request.
368-
obj_dict = obj.to_dict()
378+
if hasattr(obj, 'to_dict') and callable(getattr(obj, 'to_dict')):
379+
obj_dict = obj.to_dict()
380+
else:
381+
obj_dict = obj.__dict__
369382

370383
return {
371384
key: self.sanitize_for_serialization(val)
@@ -504,31 +517,30 @@ def parameters_to_url_query(self, params, collection_formats):
504517

505518
return "&".join(["=".join(map(str, item)) for item in new_params])
506519

507-
def files_parameters(self, files=None):
520+
def files_parameters(self, files: Dict[str, Union[str, bytes]]):
508521
"""Builds form parameters.
509522
510523
:param files: File parameters.
511524
:return: Form parameters with files.
512525
"""
513526
params = []
514-
515-
if files:
516-
for k, v in files.items():
517-
if not v:
518-
continue
519-
file_names = v if type(v) is list else [v]
520-
for n in file_names:
521-
with open(n, 'rb') as f:
522-
filename = os.path.basename(f.name)
523-
filedata = f.read()
524-
mimetype = (
525-
mimetypes.guess_type(filename)[0]
526-
or 'application/octet-stream'
527-
)
528-
params.append(
529-
tuple([k, tuple([filename, filedata, mimetype])])
530-
)
531-
527+
for k, v in files.items():
528+
if isinstance(v, str):
529+
with open(v, 'rb') as f:
530+
filename = os.path.basename(f.name)
531+
filedata = f.read()
532+
elif isinstance(v, bytes):
533+
filename = k
534+
filedata = v
535+
else:
536+
raise ValueError("Unsupported file value")
537+
mimetype = (
538+
mimetypes.guess_type(filename)[0]
539+
or 'application/octet-stream'
540+
)
541+
params.append(
542+
tuple([k, tuple([filename, filedata, mimetype])])
543+
)
532544
return params
533545

534546
def select_header_accept(self, accepts: List[str]) -> Optional[str]:

platform_api_client/models/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515

1616
# import models into model package
17-
from platform_api_client.models.auth_secret import AuthSecret
1817
from platform_api_client.models.client_secret_response import ClientSecretResponse
1918
from platform_api_client.models.create_compute_deployment_request import CreateComputeDeploymentRequest
2019
from platform_api_client.models.create_compute_deployment_response import CreateComputeDeploymentResponse
@@ -30,6 +29,7 @@
3029
from platform_api_client.models.deployment_type import DeploymentType
3130
from platform_api_client.models.endpoint_ready_state import EndpointReadyState
3231
from platform_api_client.models.get_compute_deployment_response import GetComputeDeploymentResponse
32+
from platform_api_client.models.get_deployment_log_response import GetDeploymentLogResponse
3333
from platform_api_client.models.get_deployment_response import GetDeploymentResponse
3434
from platform_api_client.models.get_inference_deployment_response import GetInferenceDeploymentResponse
3535
from platform_api_client.models.get_training_deployment_response import GetTrainingDeploymentResponse

platform_api_client/models/create_compute_deployment_request.py

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
from pydantic import BaseModel, ConfigDict, StrictInt, StrictStr
2121
from typing import Any, ClassVar, Dict, List, Optional
22-
from platform_api_client.models.auth_secret import AuthSecret
2322
from typing import Optional, Set
2423
from typing_extensions import Self
2524

@@ -30,12 +29,10 @@ class CreateComputeDeploymentRequest(BaseModel):
3029
name: StrictStr
3130
image_url: StrictStr
3231
hardware_instance_id: StrictInt
33-
env_vars: Optional[Dict[str, StrictStr]] = None
34-
secrets: Optional[AuthSecret] = None
3532
ssh_key: Optional[StrictStr] = None
36-
username: Optional[StrictStr] = None
37-
password: Optional[StrictStr] = None
38-
__properties: ClassVar[List[str]] = ["name", "image_url", "hardware_instance_id", "env_vars", "secrets", "ssh_key", "username", "password"]
33+
username: StrictStr
34+
password: StrictStr
35+
__properties: ClassVar[List[str]] = ["name", "image_url", "hardware_instance_id", "ssh_key", "username", "password"]
3936

4037
model_config = ConfigDict(
4138
populate_by_name=True,
@@ -76,34 +73,11 @@ def to_dict(self) -> Dict[str, Any]:
7673
exclude=excluded_fields,
7774
exclude_none=True,
7875
)
79-
# override the default output from pydantic by calling `to_dict()` of secrets
80-
if self.secrets:
81-
_dict['secrets'] = self.secrets.to_dict()
82-
# set to None if env_vars (nullable) is None
83-
# and model_fields_set contains the field
84-
if self.env_vars is None and "env_vars" in self.model_fields_set:
85-
_dict['env_vars'] = None
86-
87-
# set to None if secrets (nullable) is None
88-
# and model_fields_set contains the field
89-
if self.secrets is None and "secrets" in self.model_fields_set:
90-
_dict['secrets'] = None
91-
9276
# set to None if ssh_key (nullable) is None
9377
# and model_fields_set contains the field
9478
if self.ssh_key is None and "ssh_key" in self.model_fields_set:
9579
_dict['ssh_key'] = None
9680

97-
# set to None if username (nullable) is None
98-
# and model_fields_set contains the field
99-
if self.username is None and "username" in self.model_fields_set:
100-
_dict['username'] = None
101-
102-
# set to None if password (nullable) is None
103-
# and model_fields_set contains the field
104-
if self.password is None and "password" in self.model_fields_set:
105-
_dict['password'] = None
106-
10781
return _dict
10882

10983
@classmethod
@@ -119,8 +93,6 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
11993
"name": obj.get("name"),
12094
"image_url": obj.get("image_url"),
12195
"hardware_instance_id": obj.get("hardware_instance_id"),
122-
"env_vars": obj.get("env_vars"),
123-
"secrets": AuthSecret.from_dict(obj["secrets"]) if obj.get("secrets") is not None else None,
12496
"ssh_key": obj.get("ssh_key"),
12597
"username": obj.get("username"),
12698
"password": obj.get("password")

platform_api_client/models/create_compute_deployment_response.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ class CreateComputeDeploymentResponse(BaseModel):
3030
id: StrictInt
3131
created_at: datetime
3232
endpoint_url: StrictStr
33-
__properties: ClassVar[List[str]] = ["id", "created_at", "endpoint_url"]
33+
port: StrictInt
34+
__properties: ClassVar[List[str]] = ["id", "created_at", "endpoint_url", "port"]
3435

3536
model_config = ConfigDict(
3637
populate_by_name=True,
@@ -85,7 +86,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
8586
_obj = cls.model_validate({
8687
"id": obj.get("id"),
8788
"created_at": obj.get("created_at"),
88-
"endpoint_url": obj.get("endpoint_url")
89+
"endpoint_url": obj.get("endpoint_url"),
90+
"port": obj.get("port")
8991
})
9092
return _obj
9193

platform_api_client/models/create_inference_deployment_request.py

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
from pydantic import BaseModel, ConfigDict, StrictInt, StrictStr
2121
from typing import Any, ClassVar, Dict, List, Optional
22-
from platform_api_client.models.auth_secret import AuthSecret
2322
from typing import Optional, Set
2423
from typing_extensions import Self
2524

@@ -30,14 +29,16 @@ class CreateInferenceDeploymentRequest(BaseModel):
3029
name: StrictStr
3130
image_url: StrictStr
3231
hardware_instance_id: StrictInt
33-
env_vars: Optional[Dict[str, StrictStr]] = None
34-
secrets: Optional[AuthSecret] = None
3532
port: StrictInt
3633
min_replicas: StrictInt
3734
max_replicas: StrictInt
3835
timeout: Optional[StrictInt] = None
3936
healthcheck: Optional[StrictStr] = None
40-
__properties: ClassVar[List[str]] = ["name", "image_url", "hardware_instance_id", "env_vars", "secrets", "port", "min_replicas", "max_replicas", "timeout", "healthcheck"]
37+
env_vars: Optional[Dict[str, StrictStr]] = None
38+
command: Optional[List[StrictStr]] = None
39+
command_args: Optional[List[StrictStr]] = None
40+
endpoint_certificate_authority: Optional[StrictStr] = None
41+
__properties: ClassVar[List[str]] = ["name", "image_url", "hardware_instance_id", "port", "min_replicas", "max_replicas", "timeout", "healthcheck", "env_vars", "command", "command_args", "endpoint_certificate_authority"]
4142

4243
model_config = ConfigDict(
4344
populate_by_name=True,
@@ -78,28 +79,35 @@ def to_dict(self) -> Dict[str, Any]:
7879
exclude=excluded_fields,
7980
exclude_none=True,
8081
)
81-
# override the default output from pydantic by calling `to_dict()` of secrets
82-
if self.secrets:
83-
_dict['secrets'] = self.secrets.to_dict()
82+
# set to None if timeout (nullable) is None
83+
# and model_fields_set contains the field
84+
if self.timeout is None and "timeout" in self.model_fields_set:
85+
_dict['timeout'] = None
86+
87+
# set to None if healthcheck (nullable) is None
88+
# and model_fields_set contains the field
89+
if self.healthcheck is None and "healthcheck" in self.model_fields_set:
90+
_dict['healthcheck'] = None
91+
8492
# set to None if env_vars (nullable) is None
8593
# and model_fields_set contains the field
8694
if self.env_vars is None and "env_vars" in self.model_fields_set:
8795
_dict['env_vars'] = None
8896

89-
# set to None if secrets (nullable) is None
97+
# set to None if command (nullable) is None
9098
# and model_fields_set contains the field
91-
if self.secrets is None and "secrets" in self.model_fields_set:
92-
_dict['secrets'] = None
99+
if self.command is None and "command" in self.model_fields_set:
100+
_dict['command'] = None
93101

94-
# set to None if timeout (nullable) is None
102+
# set to None if command_args (nullable) is None
95103
# and model_fields_set contains the field
96-
if self.timeout is None and "timeout" in self.model_fields_set:
97-
_dict['timeout'] = None
104+
if self.command_args is None and "command_args" in self.model_fields_set:
105+
_dict['command_args'] = None
98106

99-
# set to None if healthcheck (nullable) is None
107+
# set to None if endpoint_certificate_authority (nullable) is None
100108
# and model_fields_set contains the field
101-
if self.healthcheck is None and "healthcheck" in self.model_fields_set:
102-
_dict['healthcheck'] = None
109+
if self.endpoint_certificate_authority is None and "endpoint_certificate_authority" in self.model_fields_set:
110+
_dict['endpoint_certificate_authority'] = None
103111

104112
return _dict
105113

@@ -116,13 +124,15 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
116124
"name": obj.get("name"),
117125
"image_url": obj.get("image_url"),
118126
"hardware_instance_id": obj.get("hardware_instance_id"),
119-
"env_vars": obj.get("env_vars"),
120-
"secrets": AuthSecret.from_dict(obj["secrets"]) if obj.get("secrets") is not None else None,
121127
"port": obj.get("port"),
122128
"min_replicas": obj.get("min_replicas"),
123129
"max_replicas": obj.get("max_replicas"),
124130
"timeout": obj.get("timeout"),
125-
"healthcheck": obj.get("healthcheck")
131+
"healthcheck": obj.get("healthcheck"),
132+
"env_vars": obj.get("env_vars"),
133+
"command": obj.get("command"),
134+
"command_args": obj.get("command_args"),
135+
"endpoint_certificate_authority": obj.get("endpoint_certificate_authority")
126136
})
127137
return _obj
128138

platform_api_client/models/create_training_deployment_request.py

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@
1818
import json
1919

2020
from pydantic import BaseModel, ConfigDict, StrictInt, StrictStr
21-
from typing import Any, ClassVar, Dict, List, Optional
22-
from platform_api_client.models.auth_secret import AuthSecret
21+
from typing import Any, ClassVar, Dict, List
2322
from typing import Optional, Set
2423
from typing_extensions import Self
2524

@@ -30,9 +29,7 @@ class CreateTrainingDeploymentRequest(BaseModel):
3029
name: StrictStr
3130
image_url: StrictStr
3231
hardware_instance_id: StrictInt
33-
env_vars: Optional[Dict[str, StrictStr]] = None
34-
secrets: Optional[AuthSecret] = None
35-
__properties: ClassVar[List[str]] = ["name", "image_url", "hardware_instance_id", "env_vars", "secrets"]
32+
__properties: ClassVar[List[str]] = ["name", "image_url", "hardware_instance_id"]
3633

3734
model_config = ConfigDict(
3835
populate_by_name=True,
@@ -73,19 +70,6 @@ def to_dict(self) -> Dict[str, Any]:
7370
exclude=excluded_fields,
7471
exclude_none=True,
7572
)
76-
# override the default output from pydantic by calling `to_dict()` of secrets
77-
if self.secrets:
78-
_dict['secrets'] = self.secrets.to_dict()
79-
# set to None if env_vars (nullable) is None
80-
# and model_fields_set contains the field
81-
if self.env_vars is None and "env_vars" in self.model_fields_set:
82-
_dict['env_vars'] = None
83-
84-
# set to None if secrets (nullable) is None
85-
# and model_fields_set contains the field
86-
if self.secrets is None and "secrets" in self.model_fields_set:
87-
_dict['secrets'] = None
88-
8973
return _dict
9074

9175
@classmethod
@@ -100,9 +84,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
10084
_obj = cls.model_validate({
10185
"name": obj.get("name"),
10286
"image_url": obj.get("image_url"),
103-
"hardware_instance_id": obj.get("hardware_instance_id"),
104-
"env_vars": obj.get("env_vars"),
105-
"secrets": AuthSecret.from_dict(obj["secrets"]) if obj.get("secrets") is not None else None
87+
"hardware_instance_id": obj.get("hardware_instance_id")
10688
})
10789
return _obj
10890

platform_api_client/models/deployment_status.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ class DeploymentStatus(str, Enum):
2929
ACTIVE = 'active'
3030
PAUSED = 'paused'
3131
DELETED = 'deleted'
32-
FAILED = 'failed'
3332

3433
@classmethod
3534
def from_json(cls, json_str: str) -> Self:

0 commit comments

Comments
 (0)