From 9938fbfe4096c55e048832fad6c7fa9c9070dd4f Mon Sep 17 00:00:00 2001 From: platform CI Date: Mon, 14 Sep 2026 21:06:27 +0000 Subject: [PATCH] Update clients to latest platform release (4.30.0) --- README.md | 3 +- docs/CreateCServeV3DeploymentRequest.md | 1 + docs/CreateComputeDeploymentRequest.md | 1 + docs/CreateDynamoDeploymentRequest.md | 8 +- docs/CreateInferenceV3DeploymentRequest.md | 1 + docs/CreateJobDeploymentRequest.md | 1 + docs/CreateObjectVolumeRequest.md | 2 - docs/CreateVolumeRequest.md | 2 - docs/DeploymentResponse.md | 7 + docs/DynamoWorkerPoolConfig.md | 7 +- docs/DynamoWorkerPools.md | 5 +- docs/EXTERNALApi.md | 92 +----- docs/GetCServeV2DeploymentResponse.md | 1 + docs/GetCServeV3DeploymentResponse.md | 1 + docs/GetComputeDeploymentResponse.md | 1 + docs/GetDeploymentLogResponse.md | 2 +- docs/GetDeploymentResponse.md | 1 + docs/GetDynamoDeploymentResponse.md | 7 +- docs/GetInferenceDeploymentResponse.md | 1 + docs/GetInferenceV3DeploymentResponse.md | 1 + docs/GetJobDeploymentResponse.md | 1 + docs/GetObjectVolumeResponse.md | 2 - docs/GetVolumeResponse.md | 2 - docs/ValidationError.md | 2 + platform_api_python_client/__init__.py | 2 +- .../api/external_api.py | 303 +----------------- platform_api_python_client/api_client.py | 2 +- platform_api_python_client/configuration.py | 2 +- .../create_c_serve_v3_deployment_request.py | 9 +- .../create_compute_deployment_request.py | 9 +- .../create_dynamo_deployment_request.py | 41 ++- .../create_filesystem_volume_request.py | 13 + .../create_inference_v3_deployment_request.py | 9 +- .../models/create_job_deployment_request.py | 9 +- .../models/create_object_volume_request.py | 51 +-- .../models/deployment_response.py | 27 +- .../models/dynamo_worker_pool_config.py | 43 ++- .../models/dynamo_worker_pools.py | 28 +- .../get_c_serve_v2_deployment_response.py | 9 +- .../get_c_serve_v3_deployment_response.py | 9 +- .../models/get_compute_deployment_response.py | 9 +- .../models/get_deployment_response.py | 11 +- .../models/get_dynamo_deployment_response.py | 24 +- .../get_inference_deployment_response.py | 9 +- .../get_inference_v3_deployment_response.py | 9 +- .../models/get_job_deployment_response.py | 9 +- .../models/get_object_volume_response.py | 18 +- .../models/validation_error.py | 15 +- pyproject.toml | 2 +- setup.py | 2 +- ...st_create_c_serve_v3_deployment_request.py | 1 + .../test_create_compute_deployment_request.py | 1 + test/test_create_dynamo_deployment_request.py | 2 + ..._create_inference_v3_deployment_request.py | 1 + test/test_create_job_deployment_request.py | 1 + test/test_create_object_volume_request.py | 16 +- test/test_create_volume_request.py | 16 +- test/test_deployment_response.py | 11 +- test/test_dynamo_worker_pool_config.py | 7 +- test/test_dynamo_worker_pools.py | 3 +- test/test_external_api.py | 7 - ...test_get_c_serve_v2_deployment_response.py | 1 + ...test_get_c_serve_v3_deployment_response.py | 1 + test/test_get_compute_deployment_response.py | 1 + test/test_get_deployment_log_response.py | 4 +- test/test_get_deployment_response.py | 3 +- test/test_get_dynamo_deployment_response.py | 2 + .../test_get_inference_deployment_response.py | 1 + ...st_get_inference_v3_deployment_response.py | 1 + test/test_get_job_deployment_response.py | 1 + test/test_get_object_volume_response.py | 8 +- test/test_get_volume_response.py | 8 +- test/test_http_validation_error.py | 4 +- test/test_list_get_deployment_response.py | 6 +- test/test_validation_error.py | 4 +- 75 files changed, 409 insertions(+), 528 deletions(-) diff --git a/README.md b/README.md index d56ae32..0409c3c 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ No description provided (generated by Openapi Generator https://github.com/opena This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: - API version: 0.1.0 -- Package version: 4.28.0 +- Package version: 4.30.0 - Generator version: 7.9.0 - Build package: org.openapitools.codegen.languages.PythonClientCodegen @@ -108,7 +108,6 @@ Class | Method | HTTP request | Description *EXTERNALApi* | [**create_volume_endpoint_volumes_post**](docs/EXTERNALApi.md#create_volume_endpoint_volumes_post) | **POST** /volumes | Create Volume Endpoint *EXTERNALApi* | [**delete_cluster_clusters_cluster_id_delete**](docs/EXTERNALApi.md#delete_cluster_clusters_cluster_id_delete) | **DELETE** /clusters/{cluster_id} | Delete Cluster *EXTERNALApi* | [**delete_hardware_instance_hardware_instances_hardware_instance_id_delete**](docs/EXTERNALApi.md#delete_hardware_instance_hardware_instances_hardware_instance_id_delete) | **DELETE** /hardware-instances/{hardware_instance_id} | Delete Hardware Instance -*EXTERNALApi* | [**delete_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_id_gpu_quota_delete**](docs/EXTERNALApi.md#delete_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_id_gpu_quota_delete) | **DELETE** /clusters/{cluster_id}/organizations/{organization_id}/gpu-quota | Delete Org Gpu Quota On Cluster *EXTERNALApi* | [**delete_service_account_service_accounts_workos_id_delete**](docs/EXTERNALApi.md#delete_service_account_service_accounts_workos_id_delete) | **DELETE** /service-accounts/{workos_id} | Delete Service Account *EXTERNALApi* | [**delete_user_vault_item_by_id_endpoint_user_vault_secret_id_delete**](docs/EXTERNALApi.md#delete_user_vault_item_by_id_endpoint_user_vault_secret_id_delete) | **DELETE** /user_vault/{secret_id} | Delete User Vault Item By Id Endpoint *EXTERNALApi* | [**delete_user_vault_item_endpoint_user_vault_delete**](docs/EXTERNALApi.md#delete_user_vault_item_endpoint_user_vault_delete) | **DELETE** /user_vault | Delete User Vault Item Endpoint diff --git a/docs/CreateCServeV3DeploymentRequest.md b/docs/CreateCServeV3DeploymentRequest.md index ccc39fa..e2e97cd 100644 --- a/docs/CreateCServeV3DeploymentRequest.md +++ b/docs/CreateCServeV3DeploymentRequest.md @@ -12,6 +12,7 @@ Name | Type | Description | Notes **hardware_instance_id** | **int** | | **user_annotations** | **Dict[str, str]** | | [optional] **chart_revision** | **str** | | [optional] +**priority** | **str** | | [optional] **recipe** | [**CServeV2Recipe**](CServeV2Recipe.md) | | **cserve_version** | **str** | | [optional] **hf_token** | **str** | | [optional] diff --git a/docs/CreateComputeDeploymentRequest.md b/docs/CreateComputeDeploymentRequest.md index 76f20a3..511d4bf 100644 --- a/docs/CreateComputeDeploymentRequest.md +++ b/docs/CreateComputeDeploymentRequest.md @@ -10,6 +10,7 @@ Name | Type | Description | Notes **hardware_instance_id** | **int** | | **user_annotations** | **Dict[str, str]** | | [optional] **chart_revision** | **str** | | [optional] +**priority** | **str** | | [optional] **image_url** | **str** | | **image_pull_secret_credentials** | [**ImagePullSecretCredentials**](ImagePullSecretCredentials.md) | | [optional] **ssh_public_key** | **str** | | diff --git a/docs/CreateDynamoDeploymentRequest.md b/docs/CreateDynamoDeploymentRequest.md index 04ea991..2214e48 100644 --- a/docs/CreateDynamoDeploymentRequest.md +++ b/docs/CreateDynamoDeploymentRequest.md @@ -1,6 +1,6 @@ # CreateDynamoDeploymentRequest -Create a Dynamo deployment. Aggregated mode requires ``hardware_instance_id``; disaggregated mode requires fixed-size ``worker_pools``. +Create a Dynamo deployment. Hardware and scaling live under ``worker_pools``: aggregated mode uses exactly ``worker_pools.worker``; disaggregated mode uses exactly ``worker_pools.prefill`` and ``worker_pools.decode`` (fixed-size until per-role autoscaling ships). The top-level ``hardware_instance_id`` / ``min_replicas`` / ``max_replicas`` / ``concurrency`` / ``cooldown_period`` fields are the deprecated aggregated-only spelling; they stay accepted and may accompany ``worker_pools`` when they agree with it. ``parse_dynamo_topology`` owns every topology rule for both spellings. ## Properties @@ -13,12 +13,14 @@ Name | Type | Description | Notes **hardware_instance_id** | **int** | | [optional] **user_annotations** | **Dict[str, str]** | | [optional] **chart_revision** | **str** | | [optional] +**priority** | **str** | | [optional] **serving_mode** | [**DynamoServingMode**](DynamoServingMode.md) | | [optional] **worker_pools** | [**DynamoWorkerPools**](DynamoWorkerPools.md) | | [optional] **model** | **str** | | **served_model_name** | **str** | | [optional] -**min_replicas** | **int** | | [optional] [default to 1] -**max_replicas** | **int** | | [optional] [default to 1] +**runtime_version** | **str** | Dynamo runtime image tag (for example 1.4.0). Defaults to the platform's current release; GET /prebuilt-images?type=dynamo lists the versions the platform has validated, but any tag may be requested. Changing it restarts every component of a running deployment. | [optional] +**min_replicas** | **int** | | [optional] +**max_replicas** | **int** | | [optional] **concurrency** | **int** | | [optional] **cooldown_period** | **int** | | [optional] **extra_args** | **str** | | [optional] diff --git a/docs/CreateInferenceV3DeploymentRequest.md b/docs/CreateInferenceV3DeploymentRequest.md index b4d74f3..253251d 100644 --- a/docs/CreateInferenceV3DeploymentRequest.md +++ b/docs/CreateInferenceV3DeploymentRequest.md @@ -12,6 +12,7 @@ Name | Type | Description | Notes **hardware_instance_id** | **int** | | **user_annotations** | **Dict[str, str]** | | [optional] **chart_revision** | **str** | | [optional] +**priority** | **str** | | [optional] **image_url** | **str** | | **image_pull_secret_credentials** | [**ImagePullSecretCredentials**](ImagePullSecretCredentials.md) | | [optional] **port** | **int** | | diff --git a/docs/CreateJobDeploymentRequest.md b/docs/CreateJobDeploymentRequest.md index 2ee08b3..c85a129 100644 --- a/docs/CreateJobDeploymentRequest.md +++ b/docs/CreateJobDeploymentRequest.md @@ -10,6 +10,7 @@ Name | Type | Description | Notes **hardware_instance_id** | **int** | | **user_annotations** | **Dict[str, str]** | | [optional] **chart_revision** | **str** | | [optional] +**priority** | **str** | | [optional] **image_url** | **str** | | **image_pull_secret_credentials** | [**ImagePullSecretCredentials**](ImagePullSecretCredentials.md) | | [optional] **env_vars** | **Dict[str, str]** | | [optional] diff --git a/docs/CreateObjectVolumeRequest.md b/docs/CreateObjectVolumeRequest.md index 62a8752..8efd2b5 100644 --- a/docs/CreateObjectVolumeRequest.md +++ b/docs/CreateObjectVolumeRequest.md @@ -13,8 +13,6 @@ Name | Type | Description | Notes **region** | **str** | | **prefix** | **str** | | [optional] **read_only** | **bool** | | [optional] [default to False] -**volume_attributes** | **Dict[str, str]** | | [optional] -**mount_options** | **List[str]** | | [optional] ## Example diff --git a/docs/CreateVolumeRequest.md b/docs/CreateVolumeRequest.md index f967faa..7acca8d 100644 --- a/docs/CreateVolumeRequest.md +++ b/docs/CreateVolumeRequest.md @@ -15,8 +15,6 @@ Name | Type | Description | Notes **region** | **str** | | **prefix** | **str** | | [optional] **read_only** | **bool** | | [optional] [default to False] -**volume_attributes** | **Dict[str, str]** | | [optional] -**mount_options** | **List[str]** | | [optional] ## Example diff --git a/docs/DeploymentResponse.md b/docs/DeploymentResponse.md index e1916eb..6c9450c 100644 --- a/docs/DeploymentResponse.md +++ b/docs/DeploymentResponse.md @@ -17,10 +17,12 @@ Name | Type | Description | Notes **hardware_instance_id** | **int** | | **revision_number** | **int** | | **user_annotations** | **Dict[str, str]** | | [optional] +**priority** | **str** | | [optional] **serving_mode** | [**DynamoServingMode**](DynamoServingMode.md) | | [optional] **worker_pools** | [**DynamoWorkerPools**](DynamoWorkerPools.md) | | [optional] **model** | **str** | | **served_model_name** | **str** | | [optional] +**runtime_version** | **str** | | [optional] **min_replicas** | **int** | | **max_replicas** | **int** | | **concurrency** | **int** | | [optional] @@ -47,6 +49,11 @@ Name | Type | Description | Notes **volume_mounts** | [**List[VolumeMount]**](VolumeMount.md) | | [optional] **ssh_public_key** | **str** | | [optional] **ssh_password** | **str** | | [optional] +**args** | **List[str]** | | [optional] +**completions** | **int** | | [optional] [default to 1] +**parallelism** | **int** | | [optional] [default to 1] +**backoff_limit** | **int** | | [optional] [default to 3] +**active_deadline_seconds** | **int** | | [optional] ## Example diff --git a/docs/DynamoWorkerPoolConfig.md b/docs/DynamoWorkerPoolConfig.md index b53786f..3f094a4 100644 --- a/docs/DynamoWorkerPoolConfig.md +++ b/docs/DynamoWorkerPoolConfig.md @@ -1,12 +1,17 @@ # DynamoWorkerPoolConfig +Hardware and scaling for one Dynamo worker role. ``min_replicas``/``max_replicas`` are the canonical size. ``replicas`` is the deprecated fixed-size alias (``min == max``) still accepted on disaggregated pools. ``parse_dynamo_topology`` owns the cross-field rules (bounds ordering, autoscaling target, which roles may autoscale). ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **hardware_instance_id** | **int** | | -**replicas** | **int** | | +**replicas** | **int** | | [optional] +**min_replicas** | **int** | | [optional] +**max_replicas** | **int** | | [optional] +**concurrency** | **int** | | [optional] +**cooldown_period** | **int** | | [optional] ## Example diff --git a/docs/DynamoWorkerPools.md b/docs/DynamoWorkerPools.md index 4bda08d..6023db4 100644 --- a/docs/DynamoWorkerPools.md +++ b/docs/DynamoWorkerPools.md @@ -5,8 +5,9 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**prefill** | [**DynamoWorkerPoolConfig**](DynamoWorkerPoolConfig.md) | | -**decode** | [**DynamoWorkerPoolConfig**](DynamoWorkerPoolConfig.md) | | +**worker** | [**DynamoWorkerPoolConfig**](DynamoWorkerPoolConfig.md) | | [optional] +**prefill** | [**DynamoWorkerPoolConfig**](DynamoWorkerPoolConfig.md) | | [optional] +**decode** | [**DynamoWorkerPoolConfig**](DynamoWorkerPoolConfig.md) | | [optional] ## Example diff --git a/docs/EXTERNALApi.md b/docs/EXTERNALApi.md index f167fd6..f9719d6 100644 --- a/docs/EXTERNALApi.md +++ b/docs/EXTERNALApi.md @@ -18,7 +18,6 @@ Method | HTTP request | Description [**create_volume_endpoint_volumes_post**](EXTERNALApi.md#create_volume_endpoint_volumes_post) | **POST** /volumes | Create Volume Endpoint [**delete_cluster_clusters_cluster_id_delete**](EXTERNALApi.md#delete_cluster_clusters_cluster_id_delete) | **DELETE** /clusters/{cluster_id} | Delete Cluster [**delete_hardware_instance_hardware_instances_hardware_instance_id_delete**](EXTERNALApi.md#delete_hardware_instance_hardware_instances_hardware_instance_id_delete) | **DELETE** /hardware-instances/{hardware_instance_id} | Delete Hardware Instance -[**delete_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_id_gpu_quota_delete**](EXTERNALApi.md#delete_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_id_gpu_quota_delete) | **DELETE** /clusters/{cluster_id}/organizations/{organization_id}/gpu-quota | Delete Org Gpu Quota On Cluster [**delete_service_account_service_accounts_workos_id_delete**](EXTERNALApi.md#delete_service_account_service_accounts_workos_id_delete) | **DELETE** /service-accounts/{workos_id} | Delete Service Account [**delete_user_vault_item_by_id_endpoint_user_vault_secret_id_delete**](EXTERNALApi.md#delete_user_vault_item_by_id_endpoint_user_vault_secret_id_delete) | **DELETE** /user_vault/{secret_id} | Delete User Vault Item By Id Endpoint [**delete_user_vault_item_endpoint_user_vault_delete**](EXTERNALApi.md#delete_user_vault_item_endpoint_user_vault_delete) | **DELETE** /user_vault | Delete User Vault Item Endpoint @@ -81,6 +80,8 @@ Method | HTTP request | Description Create Cluster +Register a cluster row for the caller's parent org. Infra provisioning is not wired yet; ``request.credential`` is validated but not consumed. + ### Example * Bearer Authentication (HTTPBearer): @@ -907,7 +908,7 @@ Name | Type | Description | Notes Create Volume Endpoint -Create a volume. Only the filesystem backend is provisioned; object lands in CCL-147. +Create a filesystem or object volume. ### Example @@ -1132,87 +1133,6 @@ void (empty response body) [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) -# **delete_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_id_gpu_quota_delete** -> OrganizationGpuQuotaResponse delete_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_id_gpu_quota_delete(cluster_id, organization_id) - -Delete Org Gpu Quota On Cluster - -Set persisted quota to unlimited (-1). Creates a row if none exists. Does not remove the row or the KAI Queue CR. - -### Example - -* Bearer Authentication (HTTPBearer): - -```python -import platform_api_python_client -from platform_api_python_client.models.organization_gpu_quota_response import OrganizationGpuQuotaResponse -from platform_api_python_client.rest import ApiException -from pprint import pprint - -# Defining the host is optional and defaults to http://localhost -# See configuration.py for a list of all supported configuration parameters. -configuration = platform_api_python_client.Configuration( - host = "http://localhost" -) - -# The client must configure the authentication and authorization parameters -# in accordance with the API server security policy. -# Examples for each auth method are provided below, use the example that -# satisfies your auth use case. - -# Configure Bearer authorization: HTTPBearer -configuration = platform_api_python_client.Configuration( - access_token = os.environ["BEARER_TOKEN"] -) - -# Enter a context with an instance of the API client -with platform_api_python_client.ApiClient(configuration) as api_client: - # Create an instance of the API class - api_instance = platform_api_python_client.EXTERNALApi(api_client) - cluster_id = 56 # int | - organization_id = 56 # int | - - try: - # Delete Org Gpu Quota On Cluster - api_response = api_instance.delete_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_id_gpu_quota_delete(cluster_id, organization_id) - print("The response of EXTERNALApi->delete_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_id_gpu_quota_delete:\n") - pprint(api_response) - except Exception as e: - print("Exception when calling EXTERNALApi->delete_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_id_gpu_quota_delete: %s\n" % e) -``` - - - -### Parameters - - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **cluster_id** | **int**| | - **organization_id** | **int**| | - -### Return type - -[**OrganizationGpuQuotaResponse**](OrganizationGpuQuotaResponse.md) - -### Authorization - -[HTTPBearer](../README.md#HTTPBearer) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - -### HTTP response details - -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | Successful Response | - | -**422** | Validation Error | - | - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - # **delete_service_account_service_accounts_workos_id_delete** > delete_service_account_service_accounts_workos_id_delete(workos_id) @@ -4331,7 +4251,7 @@ This endpoint does not need any parameter. Put Org Gpu Quota On Cluster -Persist desired organization GPU quota on this cluster. Does not apply KAI Queue CRs. ``gpu_quota`` of -1 is unlimited. Rows are never removed. +Persist organization GPU quota on this cluster and apply KAI Queue CRs. ``gpu_quota`` of -1 is unlimited; a positive value is a hard cap. Rows are never removed. Requires ``CATALOG_TARGET_REVISION`` to contain ``catalog/src/catalog/kai_gpu_queues``. A 200 means the quota row was saved and an Argo CD sync was requested (not that Queue CRs are already healthy). A 502 means the row was saved but the Application upsert/sync request failed; re-issue this idempotent PUT to retry. ### Example @@ -4570,6 +4490,8 @@ This endpoint does not need any parameter. Update Cluster +Validate a cluster component configuration for an org-owned cluster. Infra provisioning is not wired yet; ``config.components`` is validated only. + ### Example * Bearer Authentication (HTTPBearer): @@ -4649,7 +4571,7 @@ Name | Type | Description | Notes Update Cluster Metadata -Update DB metadata for an org-owned cluster. Does not drive infra stack updates. Global clusters (parent_id IS NULL) are not mutable here. +Update DB metadata for an org-owned cluster. Global clusters (parent_id IS NULL) are not mutable here. ### Example diff --git a/docs/GetCServeV2DeploymentResponse.md b/docs/GetCServeV2DeploymentResponse.md index 1f041b2..459be4f 100644 --- a/docs/GetCServeV2DeploymentResponse.md +++ b/docs/GetCServeV2DeploymentResponse.md @@ -17,6 +17,7 @@ Name | Type | Description | Notes **hardware_instance_id** | **int** | | **revision_number** | **int** | | **user_annotations** | **Dict[str, str]** | | [optional] +**priority** | **str** | | [optional] **recipe** | [**CServeV2Recipe**](CServeV2Recipe.md) | | **cserve_version** | **str** | | [optional] **min_scale** | **int** | | diff --git a/docs/GetCServeV3DeploymentResponse.md b/docs/GetCServeV3DeploymentResponse.md index 541f91e..a47aac6 100644 --- a/docs/GetCServeV3DeploymentResponse.md +++ b/docs/GetCServeV3DeploymentResponse.md @@ -17,6 +17,7 @@ Name | Type | Description | Notes **hardware_instance_id** | **int** | | **revision_number** | **int** | | **user_annotations** | **Dict[str, str]** | | [optional] +**priority** | **str** | | [optional] **recipe** | [**CServeV2Recipe**](CServeV2Recipe.md) | | **cserve_version** | **str** | | [optional] **min_replicas** | **int** | | diff --git a/docs/GetComputeDeploymentResponse.md b/docs/GetComputeDeploymentResponse.md index 55de2d3..27fd2ad 100644 --- a/docs/GetComputeDeploymentResponse.md +++ b/docs/GetComputeDeploymentResponse.md @@ -17,6 +17,7 @@ Name | Type | Description | Notes **hardware_instance_id** | **int** | | **revision_number** | **int** | | **user_annotations** | **Dict[str, str]** | | [optional] +**priority** | **str** | | [optional] **exposed_port** | **int** | | **volume_mounts** | [**List[VolumeMount]**](VolumeMount.md) | | [optional] **ssh_public_key** | **str** | | [optional] diff --git a/docs/GetDeploymentLogResponse.md b/docs/GetDeploymentLogResponse.md index ea0b847..430d646 100644 --- a/docs/GetDeploymentLogResponse.md +++ b/docs/GetDeploymentLogResponse.md @@ -5,7 +5,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**events** | **List[object]** | | +**events** | **List[Dict[str, object]]** | | **next_page_token** | **str** | | [optional] ## Example diff --git a/docs/GetDeploymentResponse.md b/docs/GetDeploymentResponse.md index fdcdaca..e859b74 100644 --- a/docs/GetDeploymentResponse.md +++ b/docs/GetDeploymentResponse.md @@ -17,6 +17,7 @@ Name | Type | Description | Notes **hardware_instance_id** | **int** | | **revision_number** | **int** | | **user_annotations** | **Dict[str, str]** | | [optional] +**priority** | **str** | | [optional] ## Example diff --git a/docs/GetDynamoDeploymentResponse.md b/docs/GetDynamoDeploymentResponse.md index 243c969..ee29414 100644 --- a/docs/GetDynamoDeploymentResponse.md +++ b/docs/GetDynamoDeploymentResponse.md @@ -1,5 +1,6 @@ # GetDynamoDeploymentResponse +Dynamo deployment read model. ``worker_pools`` is the authoritative hardware/scaling view for both serving modes. The inherited ``hardware_instance_id`` is the single-hardware projection (worker for aggregated, decode for disaggregated) and the top-level scaling fields mirror ``worker_pools.worker``; both remain for consumers that predate ``worker_pools``. ## Properties @@ -17,12 +18,14 @@ Name | Type | Description | Notes **hardware_instance_id** | **int** | | **revision_number** | **int** | | **user_annotations** | **Dict[str, str]** | | [optional] +**priority** | **str** | | [optional] **serving_mode** | [**DynamoServingMode**](DynamoServingMode.md) | | [optional] **worker_pools** | [**DynamoWorkerPools**](DynamoWorkerPools.md) | | [optional] **model** | **str** | | **served_model_name** | **str** | | [optional] -**min_replicas** | **int** | | -**max_replicas** | **int** | | +**runtime_version** | **str** | | [optional] +**min_replicas** | **int** | Deprecated aggregated-only spelling; set this under worker_pools.worker instead. Accepted alongside worker_pools when the values agree. | +**max_replicas** | **int** | Deprecated aggregated-only spelling; set this under worker_pools.worker instead. Accepted alongside worker_pools when the values agree. | **concurrency** | **int** | | [optional] **cooldown_period** | **int** | | [optional] **extra_args** | **str** | | [optional] diff --git a/docs/GetInferenceDeploymentResponse.md b/docs/GetInferenceDeploymentResponse.md index f19e9a3..6a63df7 100644 --- a/docs/GetInferenceDeploymentResponse.md +++ b/docs/GetInferenceDeploymentResponse.md @@ -17,6 +17,7 @@ Name | Type | Description | Notes **hardware_instance_id** | **int** | | **revision_number** | **int** | | **user_annotations** | **Dict[str, str]** | | [optional] +**priority** | **str** | | [optional] **container_port** | **int** | | **min_scale** | **int** | | **max_scale** | **int** | | diff --git a/docs/GetInferenceV3DeploymentResponse.md b/docs/GetInferenceV3DeploymentResponse.md index fa67454..e998c3c 100644 --- a/docs/GetInferenceV3DeploymentResponse.md +++ b/docs/GetInferenceV3DeploymentResponse.md @@ -17,6 +17,7 @@ Name | Type | Description | Notes **hardware_instance_id** | **int** | | **revision_number** | **int** | | **user_annotations** | **Dict[str, str]** | | [optional] +**priority** | **str** | | [optional] **container_port** | **int** | | **min_replicas** | **int** | | **max_replicas** | **int** | | diff --git a/docs/GetJobDeploymentResponse.md b/docs/GetJobDeploymentResponse.md index 02cab7f..75739ac 100644 --- a/docs/GetJobDeploymentResponse.md +++ b/docs/GetJobDeploymentResponse.md @@ -17,6 +17,7 @@ Name | Type | Description | Notes **hardware_instance_id** | **int** | | **revision_number** | **int** | | **user_annotations** | **Dict[str, str]** | | [optional] +**priority** | **str** | | [optional] **env_vars** | **Dict[str, str]** | | [optional] **command** | **List[str]** | | [optional] **args** | **List[str]** | | [optional] diff --git a/docs/GetObjectVolumeResponse.md b/docs/GetObjectVolumeResponse.md index 18618c7..5ff30f7 100644 --- a/docs/GetObjectVolumeResponse.md +++ b/docs/GetObjectVolumeResponse.md @@ -18,8 +18,6 @@ Name | Type | Description | Notes **region** | **str** | | **prefix** | **str** | | [optional] **read_only** | **bool** | | -**volume_attributes** | **Dict[str, str]** | | [optional] -**mount_options** | **List[str]** | | [optional] ## Example diff --git a/docs/GetVolumeResponse.md b/docs/GetVolumeResponse.md index d0ae281..a91af3f 100644 --- a/docs/GetVolumeResponse.md +++ b/docs/GetVolumeResponse.md @@ -20,8 +20,6 @@ Name | Type | Description | Notes **region** | **str** | | **prefix** | **str** | | [optional] **read_only** | **bool** | | -**volume_attributes** | **Dict[str, str]** | | [optional] -**mount_options** | **List[str]** | | [optional] ## Example diff --git a/docs/ValidationError.md b/docs/ValidationError.md index 0a9d146..86c31bb 100644 --- a/docs/ValidationError.md +++ b/docs/ValidationError.md @@ -8,6 +8,8 @@ Name | Type | Description | Notes **loc** | [**List[ValidationErrorLocInner]**](ValidationErrorLocInner.md) | | **msg** | **str** | | **type** | **str** | | +**input** | **object** | | [optional] +**ctx** | **object** | | [optional] ## Example diff --git a/platform_api_python_client/__init__.py b/platform_api_python_client/__init__.py index db0e637..821e637 100644 --- a/platform_api_python_client/__init__.py +++ b/platform_api_python_client/__init__.py @@ -14,7 +14,7 @@ """ # noqa: E501 -__version__ = "4.28.0" +__version__ = "4.30.0" # import apis into sdk package from platform_api_python_client.api.external_api import EXTERNALApi diff --git a/platform_api_python_client/api/external_api.py b/platform_api_python_client/api/external_api.py index 97b40a1..1d064ae 100644 --- a/platform_api_python_client/api/external_api.py +++ b/platform_api_python_client/api/external_api.py @@ -126,6 +126,7 @@ def create_cluster_clusters_post( ) -> ClusterRegistrationResponse: """Create Cluster + Register a cluster row for the caller's parent org. Infra provisioning is not wired yet; ``request.credential`` is validated but not consumed. :param cluster_registration_request: (required) :type cluster_registration_request: ClusterRegistrationRequest @@ -193,6 +194,7 @@ def create_cluster_clusters_post_with_http_info( ) -> ApiResponse[ClusterRegistrationResponse]: """Create Cluster + Register a cluster row for the caller's parent org. Infra provisioning is not wired yet; ``request.credential`` is validated but not consumed. :param cluster_registration_request: (required) :type cluster_registration_request: ClusterRegistrationRequest @@ -260,6 +262,7 @@ def create_cluster_clusters_post_without_preload_content( ) -> RESTResponseType: """Create Cluster + Register a cluster row for the caller's parent org. Infra provisioning is not wired yet; ``request.credential`` is validated but not consumed. :param cluster_registration_request: (required) :type cluster_registration_request: ClusterRegistrationRequest @@ -3082,7 +3085,7 @@ def create_volume_endpoint_volumes_post( ) -> GetVolumeResponse: """Create Volume Endpoint - Create a volume. Only the filesystem backend is provisioned; object lands in CCL-147. + Create a filesystem or object volume. :param create_volume_request: (required) :type create_volume_request: CreateVolumeRequest @@ -3150,7 +3153,7 @@ def create_volume_endpoint_volumes_post_with_http_info( ) -> ApiResponse[GetVolumeResponse]: """Create Volume Endpoint - Create a volume. Only the filesystem backend is provisioned; object lands in CCL-147. + Create a filesystem or object volume. :param create_volume_request: (required) :type create_volume_request: CreateVolumeRequest @@ -3218,7 +3221,7 @@ def create_volume_endpoint_volumes_post_without_preload_content( ) -> RESTResponseType: """Create Volume Endpoint - Create a volume. Only the filesystem backend is provisioned; object lands in CCL-147. + Create a filesystem or object volume. :param create_volume_request: (required) :type create_volume_request: CreateVolumeRequest @@ -3862,285 +3865,6 @@ def _delete_hardware_instance_hardware_instances_hardware_instance_id_delete_ser - @validate_call - def delete_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_id_gpu_quota_delete( - self, - cluster_id: StrictInt, - organization_id: StrictInt, - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> OrganizationGpuQuotaResponse: - """Delete Org Gpu Quota On Cluster - - Set persisted quota to unlimited (-1). Creates a row if none exists. Does not remove the row or the KAI Queue CR. - - :param cluster_id: (required) - :type cluster_id: int - :param organization_id: (required) - :type organization_id: int - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._delete_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_id_gpu_quota_delete_serialize( - cluster_id=cluster_id, - organization_id=organization_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "OrganizationGpuQuotaResponse", - '422': "HTTPValidationError", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ).data - - - @validate_call - def delete_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_id_gpu_quota_delete_with_http_info( - self, - cluster_id: StrictInt, - organization_id: StrictInt, - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> ApiResponse[OrganizationGpuQuotaResponse]: - """Delete Org Gpu Quota On Cluster - - Set persisted quota to unlimited (-1). Creates a row if none exists. Does not remove the row or the KAI Queue CR. - - :param cluster_id: (required) - :type cluster_id: int - :param organization_id: (required) - :type organization_id: int - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._delete_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_id_gpu_quota_delete_serialize( - cluster_id=cluster_id, - organization_id=organization_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "OrganizationGpuQuotaResponse", - '422': "HTTPValidationError", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ) - - - @validate_call - def delete_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_id_gpu_quota_delete_without_preload_content( - self, - cluster_id: StrictInt, - organization_id: StrictInt, - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> RESTResponseType: - """Delete Org Gpu Quota On Cluster - - Set persisted quota to unlimited (-1). Creates a row if none exists. Does not remove the row or the KAI Queue CR. - - :param cluster_id: (required) - :type cluster_id: int - :param organization_id: (required) - :type organization_id: int - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._delete_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_id_gpu_quota_delete_serialize( - cluster_id=cluster_id, - organization_id=organization_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "OrganizationGpuQuotaResponse", - '422': "HTTPValidationError", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - return response_data.response - - - def _delete_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_id_gpu_quota_delete_serialize( - self, - cluster_id, - organization_id, - _request_auth, - _content_type, - _headers, - _host_index, - ) -> RequestSerialized: - - _host = None - - _collection_formats: Dict[str, str] = { - } - - _path_params: Dict[str, str] = {} - _query_params: List[Tuple[str, str]] = [] - _header_params: Dict[str, Optional[str]] = _headers or {} - _form_params: List[Tuple[str, str]] = [] - _files: Dict[ - str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] - ] = {} - _body_params: Optional[bytes] = None - - # process the path parameters - if cluster_id is not None: - _path_params['cluster_id'] = cluster_id - if organization_id is not None: - _path_params['organization_id'] = organization_id - # process the query parameters - # process the header parameters - # process the form parameters - # process the body parameter - - - # set the HTTP header `Accept` - if 'Accept' not in _header_params: - _header_params['Accept'] = self.api_client.select_header_accept( - [ - 'application/json' - ] - ) - - - # authentication setting - _auth_settings: List[str] = [ - 'HTTPBearer' - ] - - return self.api_client.param_serialize( - method='DELETE', - resource_path='/clusters/{cluster_id}/organizations/{organization_id}/gpu-quota', - path_params=_path_params, - query_params=_query_params, - header_params=_header_params, - body=_body_params, - post_params=_form_params, - files=_files, - auth_settings=_auth_settings, - collection_formats=_collection_formats, - _host=_host, - _request_auth=_request_auth - ) - - - - @validate_call def delete_service_account_service_accounts_workos_id_delete( self, @@ -15049,7 +14773,7 @@ def put_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_ ) -> OrganizationGpuQuotaResponse: """Put Org Gpu Quota On Cluster - Persist desired organization GPU quota on this cluster. Does not apply KAI Queue CRs. ``gpu_quota`` of -1 is unlimited. Rows are never removed. + Persist organization GPU quota on this cluster and apply KAI Queue CRs. ``gpu_quota`` of -1 is unlimited; a positive value is a hard cap. Rows are never removed. Requires ``CATALOG_TARGET_REVISION`` to contain ``catalog/src/catalog/kai_gpu_queues``. A 200 means the quota row was saved and an Argo CD sync was requested (not that Queue CRs are already healthy). A 502 means the row was saved but the Application upsert/sync request failed; re-issue this idempotent PUT to retry. :param cluster_id: (required) :type cluster_id: int @@ -15125,7 +14849,7 @@ def put_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_ ) -> ApiResponse[OrganizationGpuQuotaResponse]: """Put Org Gpu Quota On Cluster - Persist desired organization GPU quota on this cluster. Does not apply KAI Queue CRs. ``gpu_quota`` of -1 is unlimited. Rows are never removed. + Persist organization GPU quota on this cluster and apply KAI Queue CRs. ``gpu_quota`` of -1 is unlimited; a positive value is a hard cap. Rows are never removed. Requires ``CATALOG_TARGET_REVISION`` to contain ``catalog/src/catalog/kai_gpu_queues``. A 200 means the quota row was saved and an Argo CD sync was requested (not that Queue CRs are already healthy). A 502 means the row was saved but the Application upsert/sync request failed; re-issue this idempotent PUT to retry. :param cluster_id: (required) :type cluster_id: int @@ -15201,7 +14925,7 @@ def put_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_ ) -> RESTResponseType: """Put Org Gpu Quota On Cluster - Persist desired organization GPU quota on this cluster. Does not apply KAI Queue CRs. ``gpu_quota`` of -1 is unlimited. Rows are never removed. + Persist organization GPU quota on this cluster and apply KAI Queue CRs. ``gpu_quota`` of -1 is unlimited; a positive value is a hard cap. Rows are never removed. Requires ``CATALOG_TARGET_REVISION`` to contain ``catalog/src/catalog/kai_gpu_queues``. A 200 means the quota row was saved and an Argo CD sync was requested (not that Queue CRs are already healthy). A 502 means the row was saved but the Application upsert/sync request failed; re-issue this idempotent PUT to retry. :param cluster_id: (required) :type cluster_id: int @@ -15905,6 +15629,7 @@ def update_cluster_clusters_cluster_id_put( ) -> object: """Update Cluster + Validate a cluster component configuration for an org-owned cluster. Infra provisioning is not wired yet; ``config.components`` is validated only. :param cluster_id: (required) :type cluster_id: int @@ -15976,6 +15701,7 @@ def update_cluster_clusters_cluster_id_put_with_http_info( ) -> ApiResponse[object]: """Update Cluster + Validate a cluster component configuration for an org-owned cluster. Infra provisioning is not wired yet; ``config.components`` is validated only. :param cluster_id: (required) :type cluster_id: int @@ -16047,6 +15773,7 @@ def update_cluster_clusters_cluster_id_put_without_preload_content( ) -> RESTResponseType: """Update Cluster + Validate a cluster component configuration for an org-owned cluster. Infra provisioning is not wired yet; ``config.components`` is validated only. :param cluster_id: (required) :type cluster_id: int @@ -16194,7 +15921,7 @@ def update_cluster_metadata_clusters_cluster_id_metadata_put( ) -> GetClusterResponse: """Update Cluster Metadata - Update DB metadata for an org-owned cluster. Does not drive infra stack updates. Global clusters (parent_id IS NULL) are not mutable here. + Update DB metadata for an org-owned cluster. Global clusters (parent_id IS NULL) are not mutable here. :param cluster_id: (required) :type cluster_id: int @@ -16266,7 +15993,7 @@ def update_cluster_metadata_clusters_cluster_id_metadata_put_with_http_info( ) -> ApiResponse[GetClusterResponse]: """Update Cluster Metadata - Update DB metadata for an org-owned cluster. Does not drive infra stack updates. Global clusters (parent_id IS NULL) are not mutable here. + Update DB metadata for an org-owned cluster. Global clusters (parent_id IS NULL) are not mutable here. :param cluster_id: (required) :type cluster_id: int @@ -16338,7 +16065,7 @@ def update_cluster_metadata_clusters_cluster_id_metadata_put_without_preload_con ) -> RESTResponseType: """Update Cluster Metadata - Update DB metadata for an org-owned cluster. Does not drive infra stack updates. Global clusters (parent_id IS NULL) are not mutable here. + Update DB metadata for an org-owned cluster. Global clusters (parent_id IS NULL) are not mutable here. :param cluster_id: (required) :type cluster_id: int diff --git a/platform_api_python_client/api_client.py b/platform_api_python_client/api_client.py index 9cca017..8c7a2c4 100644 --- a/platform_api_python_client/api_client.py +++ b/platform_api_python_client/api_client.py @@ -90,7 +90,7 @@ def __init__( self.default_headers[header_name] = header_value self.cookie = cookie # Set default User-Agent. - self.user_agent = 'OpenAPI-Generator/4.28.0/python' + self.user_agent = 'OpenAPI-Generator/4.30.0/python' self.client_side_validation = configuration.client_side_validation def __enter__(self): diff --git a/platform_api_python_client/configuration.py b/platform_api_python_client/configuration.py index 448802f..7278e53 100644 --- a/platform_api_python_client/configuration.py +++ b/platform_api_python_client/configuration.py @@ -392,7 +392,7 @@ def to_debug_report(self): "OS: {env}\n"\ "Python Version: {pyversion}\n"\ "Version of the API: 0.1.0\n"\ - "SDK Package Version: 4.28.0".\ + "SDK Package Version: 4.30.0".\ format(env=sys.platform, pyversion=sys.version) def get_host_settings(self): diff --git a/platform_api_python_client/models/create_c_serve_v3_deployment_request.py b/platform_api_python_client/models/create_c_serve_v3_deployment_request.py index 73f6167..f670239 100644 --- a/platform_api_python_client/models/create_c_serve_v3_deployment_request.py +++ b/platform_api_python_client/models/create_c_serve_v3_deployment_request.py @@ -35,6 +35,7 @@ class CreateCServeV3DeploymentRequest(BaseModel): hardware_instance_id: StrictInt user_annotations: Optional[Dict[str, StrictStr]] = None chart_revision: Optional[StrictStr] = None + priority: Optional[Annotated[str, Field(strict=True, max_length=253)]] = None recipe: CServeV2Recipe cserve_version: Optional[StrictStr] = None hf_token: Optional[StrictStr] = None @@ -48,7 +49,7 @@ class CreateCServeV3DeploymentRequest(BaseModel): enable_logging: Optional[StrictBool] = True enable_node_model_cache: Optional[StrictBool] = False session_affinity: Optional[StrictBool] = Field(default=False, description="Enable best-effort sticky routing via the `X-Session-Id` request header. Requests carrying the same header value land on the same pod, improving KV cache reuse for agentic workloads. Requests without the header are routed at random. Affinity is NOT durable: scaling, rollouts, restarts, or readiness-probe transitions will remap sessions to different pods. Do not use for irreplaceable in-pod state.") - __properties: ClassVar[List[str]] = ["max_surge", "max_unavailable", "name", "cluster_id", "hardware_instance_id", "user_annotations", "chart_revision", "recipe", "cserve_version", "hf_token", "endpoint_bearer_token", "endpoint_certificate_authority", "min_replicas", "max_replicas", "concurrency", "cooldown_period", "env_vars", "enable_logging", "enable_node_model_cache", "session_affinity"] + __properties: ClassVar[List[str]] = ["max_surge", "max_unavailable", "name", "cluster_id", "hardware_instance_id", "user_annotations", "chart_revision", "priority", "recipe", "cserve_version", "hf_token", "endpoint_bearer_token", "endpoint_certificate_authority", "min_replicas", "max_replicas", "concurrency", "cooldown_period", "env_vars", "enable_logging", "enable_node_model_cache", "session_affinity"] @field_validator('name') def name_validate_regular_expression(cls, value): @@ -114,6 +115,11 @@ def to_dict(self) -> Dict[str, Any]: if self.user_annotations is None and "user_annotations" in self.model_fields_set: _dict['user_annotations'] = None + # set to None if priority (nullable) is None + # and model_fields_set contains the field + if self.priority is None and "priority" in self.model_fields_set: + _dict['priority'] = None + # set to None if cserve_version (nullable) is None # and model_fields_set contains the field if self.cserve_version is None and "cserve_version" in self.model_fields_set: @@ -163,6 +169,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "hardware_instance_id": obj.get("hardware_instance_id"), "user_annotations": obj.get("user_annotations"), "chart_revision": obj.get("chart_revision"), + "priority": obj.get("priority"), "recipe": CServeV2Recipe.from_dict(obj["recipe"]) if obj.get("recipe") is not None else None, "cserve_version": obj.get("cserve_version"), "hf_token": obj.get("hf_token"), diff --git a/platform_api_python_client/models/create_compute_deployment_request.py b/platform_api_python_client/models/create_compute_deployment_request.py index e39e508..a9003ff 100644 --- a/platform_api_python_client/models/create_compute_deployment_request.py +++ b/platform_api_python_client/models/create_compute_deployment_request.py @@ -34,12 +34,13 @@ class CreateComputeDeploymentRequest(BaseModel): hardware_instance_id: StrictInt user_annotations: Optional[Dict[str, StrictStr]] = None chart_revision: Optional[StrictStr] = None + priority: Optional[Annotated[str, Field(strict=True, max_length=253)]] = None image_url: StrictStr image_pull_secret_credentials: Optional[ImagePullSecretCredentials] = None ssh_public_key: StrictStr enable_logging: Optional[StrictBool] = False volume_mounts: Optional[Annotated[List[VolumeMount], Field(max_length=10)]] = None - __properties: ClassVar[List[str]] = ["name", "cluster_id", "hardware_instance_id", "user_annotations", "chart_revision", "image_url", "image_pull_secret_credentials", "ssh_public_key", "enable_logging", "volume_mounts"] + __properties: ClassVar[List[str]] = ["name", "cluster_id", "hardware_instance_id", "user_annotations", "chart_revision", "priority", "image_url", "image_pull_secret_credentials", "ssh_public_key", "enable_logging", "volume_mounts"] @field_validator('name') def name_validate_regular_expression(cls, value): @@ -102,6 +103,11 @@ def to_dict(self) -> Dict[str, Any]: if self.user_annotations is None and "user_annotations" in self.model_fields_set: _dict['user_annotations'] = None + # set to None if priority (nullable) is None + # and model_fields_set contains the field + if self.priority is None and "priority" in self.model_fields_set: + _dict['priority'] = None + # set to None if image_pull_secret_credentials (nullable) is None # and model_fields_set contains the field if self.image_pull_secret_credentials is None and "image_pull_secret_credentials" in self.model_fields_set: @@ -124,6 +130,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "hardware_instance_id": obj.get("hardware_instance_id"), "user_annotations": obj.get("user_annotations"), "chart_revision": obj.get("chart_revision"), + "priority": obj.get("priority"), "image_url": obj.get("image_url"), "image_pull_secret_credentials": ImagePullSecretCredentials.from_dict(obj["image_pull_secret_credentials"]) if obj.get("image_pull_secret_credentials") is not None else None, "ssh_public_key": obj.get("ssh_public_key"), diff --git a/platform_api_python_client/models/create_dynamo_deployment_request.py b/platform_api_python_client/models/create_dynamo_deployment_request.py index eda0fca..c2e7b70 100644 --- a/platform_api_python_client/models/create_dynamo_deployment_request.py +++ b/platform_api_python_client/models/create_dynamo_deployment_request.py @@ -28,7 +28,7 @@ class CreateDynamoDeploymentRequest(BaseModel): """ - Create a Dynamo deployment. Aggregated mode requires ``hardware_instance_id``; disaggregated mode requires fixed-size ``worker_pools``. + Create a Dynamo deployment. Hardware and scaling live under ``worker_pools``: aggregated mode uses exactly ``worker_pools.worker``; disaggregated mode uses exactly ``worker_pools.prefill`` and ``worker_pools.decode`` (fixed-size until per-role autoscaling ships). The top-level ``hardware_instance_id`` / ``min_replicas`` / ``max_replicas`` / ``concurrency`` / ``cooldown_period`` fields are the deprecated aggregated-only spelling; they stay accepted and may accompany ``worker_pools`` when they agree with it. ``parse_dynamo_topology`` owns every topology rule for both spellings. """ # noqa: E501 max_surge: Optional[StrictInt] = None max_unavailable: Optional[StrictInt] = None @@ -37,12 +37,14 @@ class CreateDynamoDeploymentRequest(BaseModel): hardware_instance_id: Optional[StrictInt] = None user_annotations: Optional[Dict[str, StrictStr]] = None chart_revision: Optional[StrictStr] = None + priority: Optional[Annotated[str, Field(strict=True, max_length=253)]] = None serving_mode: Optional[DynamoServingMode] = None worker_pools: Optional[DynamoWorkerPools] = None model: StrictStr served_model_name: Optional[StrictStr] = None - min_replicas: Optional[StrictInt] = 1 - max_replicas: Optional[StrictInt] = 1 + runtime_version: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Dynamo runtime image tag (for example 1.4.0). Defaults to the platform's current release; GET /prebuilt-images?type=dynamo lists the versions the platform has validated, but any tag may be requested. Changing it restarts every component of a running deployment.") + min_replicas: Optional[StrictInt] = None + max_replicas: Optional[StrictInt] = None concurrency: Optional[StrictInt] = None cooldown_period: Optional[StrictInt] = None extra_args: Optional[StrictStr] = None @@ -53,7 +55,7 @@ class CreateDynamoDeploymentRequest(BaseModel): enable_logging: Optional[StrictBool] = True enable_node_model_cache: Optional[StrictBool] = False backend_protocol: Optional[BackendProtocol] = None - __properties: ClassVar[List[str]] = ["max_surge", "max_unavailable", "name", "cluster_id", "hardware_instance_id", "user_annotations", "chart_revision", "serving_mode", "worker_pools", "model", "served_model_name", "min_replicas", "max_replicas", "concurrency", "cooldown_period", "extra_args", "hf_token", "env_vars", "endpoint_bearer_token", "endpoint_certificate_authority", "enable_logging", "enable_node_model_cache", "backend_protocol"] + __properties: ClassVar[List[str]] = ["max_surge", "max_unavailable", "name", "cluster_id", "hardware_instance_id", "user_annotations", "chart_revision", "priority", "serving_mode", "worker_pools", "model", "served_model_name", "runtime_version", "min_replicas", "max_replicas", "concurrency", "cooldown_period", "extra_args", "hf_token", "env_vars", "endpoint_bearer_token", "endpoint_certificate_authority", "enable_logging", "enable_node_model_cache", "backend_protocol"] @field_validator('name') def name_validate_regular_expression(cls, value): @@ -62,6 +64,16 @@ def name_validate_regular_expression(cls, value): raise ValueError(r"must validate the regular expression /^[a-z][a-z0-9-]*$/") return value + @field_validator('runtime_version') + def runtime_version_validate_regular_expression(cls, value): + """Validates the regular expression""" + if value is None: + return value + + if not re.match(r"^[A-Za-z0-9_][A-Za-z0-9._-]{0,127}$", value): + raise ValueError(r"must validate the regular expression /^[A-Za-z0-9_][A-Za-z0-9._-]{0,127}$/") + return value + model_config = ConfigDict( populate_by_name=True, validate_assignment=True, @@ -124,6 +136,11 @@ def to_dict(self) -> Dict[str, Any]: if self.user_annotations is None and "user_annotations" in self.model_fields_set: _dict['user_annotations'] = None + # set to None if priority (nullable) is None + # and model_fields_set contains the field + if self.priority is None and "priority" in self.model_fields_set: + _dict['priority'] = None + # set to None if worker_pools (nullable) is None # and model_fields_set contains the field if self.worker_pools is None and "worker_pools" in self.model_fields_set: @@ -134,6 +151,16 @@ def to_dict(self) -> Dict[str, Any]: if self.served_model_name is None and "served_model_name" in self.model_fields_set: _dict['served_model_name'] = None + # set to None if min_replicas (nullable) is None + # and model_fields_set contains the field + if self.min_replicas is None and "min_replicas" in self.model_fields_set: + _dict['min_replicas'] = None + + # set to None if max_replicas (nullable) is None + # and model_fields_set contains the field + if self.max_replicas is None and "max_replicas" in self.model_fields_set: + _dict['max_replicas'] = None + # set to None if concurrency (nullable) is None # and model_fields_set contains the field if self.concurrency is None and "concurrency" in self.model_fields_set: @@ -183,12 +210,14 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "hardware_instance_id": obj.get("hardware_instance_id"), "user_annotations": obj.get("user_annotations"), "chart_revision": obj.get("chart_revision"), + "priority": obj.get("priority"), "serving_mode": obj.get("serving_mode"), "worker_pools": DynamoWorkerPools.from_dict(obj["worker_pools"]) if obj.get("worker_pools") is not None else None, "model": obj.get("model"), "served_model_name": obj.get("served_model_name"), - "min_replicas": obj.get("min_replicas") if obj.get("min_replicas") is not None else 1, - "max_replicas": obj.get("max_replicas") if obj.get("max_replicas") is not None else 1, + "runtime_version": obj.get("runtime_version"), + "min_replicas": obj.get("min_replicas"), + "max_replicas": obj.get("max_replicas"), "concurrency": obj.get("concurrency"), "cooldown_period": obj.get("cooldown_period"), "extra_args": obj.get("extra_args"), diff --git a/platform_api_python_client/models/create_filesystem_volume_request.py b/platform_api_python_client/models/create_filesystem_volume_request.py index 6bae519..0982b50 100644 --- a/platform_api_python_client/models/create_filesystem_volume_request.py +++ b/platform_api_python_client/models/create_filesystem_volume_request.py @@ -32,6 +32,7 @@ class CreateFilesystemVolumeRequest(BaseModel): backend: StrictStr size_gb: Optional[Annotated[int, Field(le=65536, strict=True, ge=1)]] = 100 storage_class: Optional[Annotated[str, Field(min_length=1, strict=True, max_length=253)]] = None + additional_properties: Dict[str, Any] = {} __properties: ClassVar[List[str]] = ["name", "cluster_id", "backend", "size_gb", "storage_class"] @field_validator('name') @@ -88,8 +89,10 @@ def to_dict(self) -> Dict[str, Any]: * `None` is only added to the output dict for nullable fields that were set at model initialization. Other fields with value `None` are ignored. + * Fields in `self.additional_properties` are added to the output dict. """ excluded_fields: Set[str] = set([ + "additional_properties", ]) _dict = self.model_dump( @@ -97,6 +100,11 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) + # puts key-value pairs in additional_properties in the top level + if self.additional_properties is not None: + for _key, _value in self.additional_properties.items(): + _dict[_key] = _value + # set to None if storage_class (nullable) is None # and model_fields_set contains the field if self.storage_class is None and "storage_class" in self.model_fields_set: @@ -120,6 +128,11 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "size_gb": obj.get("size_gb") if obj.get("size_gb") is not None else 100, "storage_class": obj.get("storage_class") }) + # store additional fields in additional_properties + for _key in obj.keys(): + if _key not in cls.__properties: + _obj.additional_properties[_key] = obj.get(_key) + return _obj diff --git a/platform_api_python_client/models/create_inference_v3_deployment_request.py b/platform_api_python_client/models/create_inference_v3_deployment_request.py index 28eacfa..19e0b0b 100644 --- a/platform_api_python_client/models/create_inference_v3_deployment_request.py +++ b/platform_api_python_client/models/create_inference_v3_deployment_request.py @@ -38,6 +38,7 @@ class CreateInferenceV3DeploymentRequest(BaseModel): hardware_instance_id: StrictInt user_annotations: Optional[Dict[str, StrictStr]] = None chart_revision: Optional[StrictStr] = None + priority: Optional[Annotated[str, Field(strict=True, max_length=253)]] = None image_url: StrictStr image_pull_secret_credentials: Optional[ImagePullSecretCredentials] = None port: Annotated[int, Field(le=65535, strict=True, ge=1)] @@ -57,7 +58,7 @@ class CreateInferenceV3DeploymentRequest(BaseModel): session_affinity: Optional[StrictBool] = Field(default=False, description="Enable best-effort sticky routing via the `X-Session-Id` request header. Requests carrying the same header value land on the same pod, improving KV cache reuse for agentic workloads. Requests without the header are routed at random. Affinity is NOT durable: scaling, rollouts, restarts, or readiness-probe transitions will remap sessions to different pods. Do not use for irreplaceable in-pod state.") config_file: Optional[ConfigFileMount] = None metrics: Optional[MetricsConfig] = None - __properties: ClassVar[List[str]] = ["max_surge", "max_unavailable", "name", "cluster_id", "hardware_instance_id", "user_annotations", "chart_revision", "image_url", "image_pull_secret_credentials", "port", "min_replicas", "max_replicas", "concurrency", "cooldown_period", "healthcheck", "env_vars", "command", "endpoint_bearer_token", "endpoint_certificate_authority", "hf_token", "backend_protocol", "enable_logging", "enable_node_model_cache", "session_affinity", "config_file", "metrics"] + __properties: ClassVar[List[str]] = ["max_surge", "max_unavailable", "name", "cluster_id", "hardware_instance_id", "user_annotations", "chart_revision", "priority", "image_url", "image_pull_secret_credentials", "port", "min_replicas", "max_replicas", "concurrency", "cooldown_period", "healthcheck", "env_vars", "command", "endpoint_bearer_token", "endpoint_certificate_authority", "hf_token", "backend_protocol", "enable_logging", "enable_node_model_cache", "session_affinity", "config_file", "metrics"] @field_validator('name') def name_validate_regular_expression(cls, value): @@ -129,6 +130,11 @@ def to_dict(self) -> Dict[str, Any]: if self.user_annotations is None and "user_annotations" in self.model_fields_set: _dict['user_annotations'] = None + # set to None if priority (nullable) is None + # and model_fields_set contains the field + if self.priority is None and "priority" in self.model_fields_set: + _dict['priority'] = None + # set to None if image_pull_secret_credentials (nullable) is None # and model_fields_set contains the field if self.image_pull_secret_credentials is None and "image_pull_secret_credentials" in self.model_fields_set: @@ -203,6 +209,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "hardware_instance_id": obj.get("hardware_instance_id"), "user_annotations": obj.get("user_annotations"), "chart_revision": obj.get("chart_revision"), + "priority": obj.get("priority"), "image_url": obj.get("image_url"), "image_pull_secret_credentials": ImagePullSecretCredentials.from_dict(obj["image_pull_secret_credentials"]) if obj.get("image_pull_secret_credentials") is not None else None, "port": obj.get("port"), diff --git a/platform_api_python_client/models/create_job_deployment_request.py b/platform_api_python_client/models/create_job_deployment_request.py index 07deeca..383a6e4 100644 --- a/platform_api_python_client/models/create_job_deployment_request.py +++ b/platform_api_python_client/models/create_job_deployment_request.py @@ -35,6 +35,7 @@ class CreateJobDeploymentRequest(BaseModel): hardware_instance_id: StrictInt user_annotations: Optional[Dict[str, StrictStr]] = None chart_revision: Optional[StrictStr] = None + priority: Optional[Annotated[str, Field(strict=True, max_length=253)]] = None image_url: StrictStr image_pull_secret_credentials: Optional[ImagePullSecretCredentials] = None env_vars: Optional[Dict[str, StrictStr]] = None @@ -46,7 +47,7 @@ class CreateJobDeploymentRequest(BaseModel): enable_logging: Optional[StrictBool] = True config_file: Optional[ConfigFileMount] = None volume_mounts: Optional[Annotated[List[VolumeMount], Field(max_length=10)]] = None - __properties: ClassVar[List[str]] = ["name", "cluster_id", "hardware_instance_id", "user_annotations", "chart_revision", "image_url", "image_pull_secret_credentials", "env_vars", "command", "completions", "parallelism", "backoff_limit", "active_deadline_seconds", "enable_logging", "config_file", "volume_mounts"] + __properties: ClassVar[List[str]] = ["name", "cluster_id", "hardware_instance_id", "user_annotations", "chart_revision", "priority", "image_url", "image_pull_secret_credentials", "env_vars", "command", "completions", "parallelism", "backoff_limit", "active_deadline_seconds", "enable_logging", "config_file", "volume_mounts"] @field_validator('name') def name_validate_regular_expression(cls, value): @@ -112,6 +113,11 @@ def to_dict(self) -> Dict[str, Any]: if self.user_annotations is None and "user_annotations" in self.model_fields_set: _dict['user_annotations'] = None + # set to None if priority (nullable) is None + # and model_fields_set contains the field + if self.priority is None and "priority" in self.model_fields_set: + _dict['priority'] = None + # set to None if image_pull_secret_credentials (nullable) is None # and model_fields_set contains the field if self.image_pull_secret_credentials is None and "image_pull_secret_credentials" in self.model_fields_set: @@ -154,6 +160,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "hardware_instance_id": obj.get("hardware_instance_id"), "user_annotations": obj.get("user_annotations"), "chart_revision": obj.get("chart_revision"), + "priority": obj.get("priority"), "image_url": obj.get("image_url"), "image_pull_secret_credentials": ImagePullSecretCredentials.from_dict(obj["image_pull_secret_credentials"]) if obj.get("image_pull_secret_credentials") is not None else None, "env_vars": obj.get("env_vars"), diff --git a/platform_api_python_client/models/create_object_volume_request.py b/platform_api_python_client/models/create_object_volume_request.py index 2b6b8a7..3647351 100644 --- a/platform_api_python_client/models/create_object_volume_request.py +++ b/platform_api_python_client/models/create_object_volume_request.py @@ -32,13 +32,12 @@ class CreateObjectVolumeRequest(BaseModel): cluster_id: StrictInt backend: StrictStr provider: Optional[ObjectStorageProvider] = None - bucket: Annotated[str, Field(min_length=3, strict=True, max_length=253)] - region: Annotated[str, Field(min_length=1, strict=True)] - prefix: Optional[StrictStr] = None + bucket: Annotated[str, Field(min_length=3, strict=True, max_length=255)] + region: Annotated[str, Field(min_length=1, strict=True, max_length=63)] + prefix: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = None read_only: Optional[StrictBool] = False - volume_attributes: Optional[Dict[str, StrictStr]] = None - mount_options: Optional[List[StrictStr]] = None - __properties: ClassVar[List[str]] = ["name", "cluster_id", "backend", "provider", "bucket", "region", "prefix", "read_only", "volume_attributes", "mount_options"] + additional_properties: Dict[str, Any] = {} + __properties: ClassVar[List[str]] = ["name", "cluster_id", "backend", "provider", "bucket", "region", "prefix", "read_only"] @field_validator('name') def name_validate_regular_expression(cls, value): @@ -54,6 +53,20 @@ def backend_validate_enum(cls, value): raise ValueError("must be one of enum values ('object')") return value + @field_validator('bucket') + def bucket_validate_regular_expression(cls, value): + """Validates the regular expression""" + if not re.match(r"^(?:[0-9A-Za-z._-]+|arn:[a-z0-9-]+:s3(?:-outposts|-object-lambda)?:[0-9A-Za-z._:\/+=,@-]+)$", value): + raise ValueError(r"must validate the regular expression /^(?:[0-9A-Za-z._-]+|arn:[a-z0-9-]+:s3(?:-outposts|-object-lambda)?:[0-9A-Za-z._:\/+=,@-]+)$/") + return value + + @field_validator('region') + def region_validate_regular_expression(cls, value): + """Validates the regular expression""" + if not re.match(r"^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$", value): + raise ValueError(r"must validate the regular expression /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/") + return value + model_config = ConfigDict( populate_by_name=True, validate_assignment=True, @@ -84,8 +97,10 @@ def to_dict(self) -> Dict[str, Any]: * `None` is only added to the output dict for nullable fields that were set at model initialization. Other fields with value `None` are ignored. + * Fields in `self.additional_properties` are added to the output dict. """ excluded_fields: Set[str] = set([ + "additional_properties", ]) _dict = self.model_dump( @@ -93,21 +108,16 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) + # puts key-value pairs in additional_properties in the top level + if self.additional_properties is not None: + for _key, _value in self.additional_properties.items(): + _dict[_key] = _value + # set to None if prefix (nullable) is None # and model_fields_set contains the field if self.prefix is None and "prefix" in self.model_fields_set: _dict['prefix'] = None - # set to None if volume_attributes (nullable) is None - # and model_fields_set contains the field - if self.volume_attributes is None and "volume_attributes" in self.model_fields_set: - _dict['volume_attributes'] = None - - # set to None if mount_options (nullable) is None - # and model_fields_set contains the field - if self.mount_options is None and "mount_options" in self.model_fields_set: - _dict['mount_options'] = None - return _dict @classmethod @@ -127,10 +137,13 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "bucket": obj.get("bucket"), "region": obj.get("region"), "prefix": obj.get("prefix"), - "read_only": obj.get("read_only") if obj.get("read_only") is not None else False, - "volume_attributes": obj.get("volume_attributes"), - "mount_options": obj.get("mount_options") + "read_only": obj.get("read_only") if obj.get("read_only") is not None else False }) + # store additional fields in additional_properties + for _key in obj.keys(): + if _key not in cls.__properties: + _obj.additional_properties[_key] = obj.get(_key) + return _obj diff --git a/platform_api_python_client/models/deployment_response.py b/platform_api_python_client/models/deployment_response.py index 5b91901..947f897 100644 --- a/platform_api_python_client/models/deployment_response.py +++ b/platform_api_python_client/models/deployment_response.py @@ -23,11 +23,12 @@ from platform_api_python_client.models.get_compute_deployment_response import GetComputeDeploymentResponse from platform_api_python_client.models.get_dynamo_deployment_response import GetDynamoDeploymentResponse from platform_api_python_client.models.get_inference_v3_deployment_response import GetInferenceV3DeploymentResponse +from platform_api_python_client.models.get_job_deployment_response import GetJobDeploymentResponse from typing import Union, Any, List, Set, TYPE_CHECKING, Optional, Dict from typing_extensions import Literal, Self from pydantic import Field -DEPLOYMENTRESPONSE_ANY_OF_SCHEMAS = ["GetCServeV3DeploymentResponse", "GetComputeDeploymentResponse", "GetDynamoDeploymentResponse", "GetInferenceV3DeploymentResponse"] +DEPLOYMENTRESPONSE_ANY_OF_SCHEMAS = ["GetCServeV3DeploymentResponse", "GetComputeDeploymentResponse", "GetDynamoDeploymentResponse", "GetInferenceV3DeploymentResponse", "GetJobDeploymentResponse"] class DeploymentResponse(BaseModel): """ @@ -42,11 +43,13 @@ class DeploymentResponse(BaseModel): anyof_schema_3_validator: Optional[GetInferenceV3DeploymentResponse] = None # data type: GetComputeDeploymentResponse anyof_schema_4_validator: Optional[GetComputeDeploymentResponse] = None + # data type: GetJobDeploymentResponse + anyof_schema_5_validator: Optional[GetJobDeploymentResponse] = None if TYPE_CHECKING: - actual_instance: Optional[Union[GetCServeV3DeploymentResponse, GetComputeDeploymentResponse, GetDynamoDeploymentResponse, GetInferenceV3DeploymentResponse]] = None + actual_instance: Optional[Union[GetCServeV3DeploymentResponse, GetComputeDeploymentResponse, GetDynamoDeploymentResponse, GetInferenceV3DeploymentResponse, GetJobDeploymentResponse]] = None else: actual_instance: Any = None - any_of_schemas: Set[str] = { "GetCServeV3DeploymentResponse", "GetComputeDeploymentResponse", "GetDynamoDeploymentResponse", "GetInferenceV3DeploymentResponse" } + any_of_schemas: Set[str] = { "GetCServeV3DeploymentResponse", "GetComputeDeploymentResponse", "GetDynamoDeploymentResponse", "GetInferenceV3DeploymentResponse", "GetJobDeploymentResponse" } model_config = { "validate_assignment": True, @@ -91,9 +94,15 @@ def actual_instance_must_validate_anyof(cls, v): else: return v + # validate data type: GetJobDeploymentResponse + if not isinstance(v, GetJobDeploymentResponse): + error_messages.append(f"Error! Input type `{type(v)}` is not `GetJobDeploymentResponse`") + else: + return v + if error_messages: # no match - raise ValueError("No match found when setting the actual_instance in DeploymentResponse with anyOf schemas: GetCServeV3DeploymentResponse, GetComputeDeploymentResponse, GetDynamoDeploymentResponse, GetInferenceV3DeploymentResponse. Details: " + ", ".join(error_messages)) + raise ValueError("No match found when setting the actual_instance in DeploymentResponse with anyOf schemas: GetCServeV3DeploymentResponse, GetComputeDeploymentResponse, GetDynamoDeploymentResponse, GetInferenceV3DeploymentResponse, GetJobDeploymentResponse. Details: " + ", ".join(error_messages)) else: return v @@ -130,10 +139,16 @@ def from_json(cls, json_str: str) -> Self: return instance except (ValidationError, ValueError) as e: error_messages.append(str(e)) + # anyof_schema_5_validator: Optional[GetJobDeploymentResponse] = None + try: + instance.actual_instance = GetJobDeploymentResponse.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) if error_messages: # no match - raise ValueError("No match found when deserializing the JSON string into DeploymentResponse with anyOf schemas: GetCServeV3DeploymentResponse, GetComputeDeploymentResponse, GetDynamoDeploymentResponse, GetInferenceV3DeploymentResponse. Details: " + ", ".join(error_messages)) + raise ValueError("No match found when deserializing the JSON string into DeploymentResponse with anyOf schemas: GetCServeV3DeploymentResponse, GetComputeDeploymentResponse, GetDynamoDeploymentResponse, GetInferenceV3DeploymentResponse, GetJobDeploymentResponse. Details: " + ", ".join(error_messages)) else: return instance @@ -147,7 +162,7 @@ def to_json(self) -> str: else: return json.dumps(self.actual_instance) - def to_dict(self) -> Optional[Union[Dict[str, Any], GetCServeV3DeploymentResponse, GetComputeDeploymentResponse, GetDynamoDeploymentResponse, GetInferenceV3DeploymentResponse]]: + def to_dict(self) -> Optional[Union[Dict[str, Any], GetCServeV3DeploymentResponse, GetComputeDeploymentResponse, GetDynamoDeploymentResponse, GetInferenceV3DeploymentResponse, GetJobDeploymentResponse]]: """Returns the dict representation of the actual instance""" if self.actual_instance is None: return None diff --git a/platform_api_python_client/models/dynamo_worker_pool_config.py b/platform_api_python_client/models/dynamo_worker_pool_config.py index c2c9126..ee8fb6c 100644 --- a/platform_api_python_client/models/dynamo_worker_pool_config.py +++ b/platform_api_python_client/models/dynamo_worker_pool_config.py @@ -18,19 +18,23 @@ import json from pydantic import BaseModel, ConfigDict, Field, StrictInt -from typing import Any, ClassVar, Dict, List +from typing import Any, ClassVar, Dict, List, Optional from typing_extensions import Annotated from typing import Optional, Set from typing_extensions import Self class DynamoWorkerPoolConfig(BaseModel): """ - DynamoWorkerPoolConfig + Hardware and scaling for one Dynamo worker role. ``min_replicas``/``max_replicas`` are the canonical size. ``replicas`` is the deprecated fixed-size alias (``min == max``) still accepted on disaggregated pools. ``parse_dynamo_topology`` owns the cross-field rules (bounds ordering, autoscaling target, which roles may autoscale). """ # noqa: E501 hardware_instance_id: StrictInt - replicas: Annotated[int, Field(strict=True, ge=1)] + replicas: Optional[Annotated[int, Field(strict=True, ge=1)]] = None + min_replicas: Optional[Annotated[int, Field(strict=True, ge=1)]] = None + max_replicas: Optional[Annotated[int, Field(strict=True, ge=1)]] = None + concurrency: Optional[Annotated[int, Field(strict=True, ge=1)]] = None + cooldown_period: Optional[Annotated[int, Field(le=3600, strict=True, ge=0)]] = None additional_properties: Dict[str, Any] = {} - __properties: ClassVar[List[str]] = ["hardware_instance_id", "replicas"] + __properties: ClassVar[List[str]] = ["hardware_instance_id", "replicas", "min_replicas", "max_replicas", "concurrency", "cooldown_period"] model_config = ConfigDict( populate_by_name=True, @@ -78,6 +82,31 @@ def to_dict(self) -> Dict[str, Any]: for _key, _value in self.additional_properties.items(): _dict[_key] = _value + # set to None if replicas (nullable) is None + # and model_fields_set contains the field + if self.replicas is None and "replicas" in self.model_fields_set: + _dict['replicas'] = None + + # set to None if min_replicas (nullable) is None + # and model_fields_set contains the field + if self.min_replicas is None and "min_replicas" in self.model_fields_set: + _dict['min_replicas'] = None + + # set to None if max_replicas (nullable) is None + # and model_fields_set contains the field + if self.max_replicas is None and "max_replicas" in self.model_fields_set: + _dict['max_replicas'] = None + + # set to None if concurrency (nullable) is None + # and model_fields_set contains the field + if self.concurrency is None and "concurrency" in self.model_fields_set: + _dict['concurrency'] = None + + # set to None if cooldown_period (nullable) is None + # and model_fields_set contains the field + if self.cooldown_period is None and "cooldown_period" in self.model_fields_set: + _dict['cooldown_period'] = None + return _dict @classmethod @@ -91,7 +120,11 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "hardware_instance_id": obj.get("hardware_instance_id"), - "replicas": obj.get("replicas") + "replicas": obj.get("replicas"), + "min_replicas": obj.get("min_replicas"), + "max_replicas": obj.get("max_replicas"), + "concurrency": obj.get("concurrency"), + "cooldown_period": obj.get("cooldown_period") }) # store additional fields in additional_properties for _key in obj.keys(): diff --git a/platform_api_python_client/models/dynamo_worker_pools.py b/platform_api_python_client/models/dynamo_worker_pools.py index 49c97ed..6962c84 100644 --- a/platform_api_python_client/models/dynamo_worker_pools.py +++ b/platform_api_python_client/models/dynamo_worker_pools.py @@ -18,7 +18,7 @@ import json from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List +from typing import Any, ClassVar, Dict, List, Optional from platform_api_python_client.models.dynamo_worker_pool_config import DynamoWorkerPoolConfig from typing import Optional, Set from typing_extensions import Self @@ -27,10 +27,11 @@ class DynamoWorkerPools(BaseModel): """ DynamoWorkerPools """ # noqa: E501 - prefill: DynamoWorkerPoolConfig - decode: DynamoWorkerPoolConfig + worker: Optional[DynamoWorkerPoolConfig] = None + prefill: Optional[DynamoWorkerPoolConfig] = None + decode: Optional[DynamoWorkerPoolConfig] = None additional_properties: Dict[str, Any] = {} - __properties: ClassVar[List[str]] = ["prefill", "decode"] + __properties: ClassVar[List[str]] = ["worker", "prefill", "decode"] model_config = ConfigDict( populate_by_name=True, @@ -73,6 +74,9 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) + # override the default output from pydantic by calling `to_dict()` of worker + if self.worker: + _dict['worker'] = self.worker.to_dict() # override the default output from pydantic by calling `to_dict()` of prefill if self.prefill: _dict['prefill'] = self.prefill.to_dict() @@ -84,6 +88,21 @@ def to_dict(self) -> Dict[str, Any]: for _key, _value in self.additional_properties.items(): _dict[_key] = _value + # set to None if worker (nullable) is None + # and model_fields_set contains the field + if self.worker is None and "worker" in self.model_fields_set: + _dict['worker'] = None + + # set to None if prefill (nullable) is None + # and model_fields_set contains the field + if self.prefill is None and "prefill" in self.model_fields_set: + _dict['prefill'] = None + + # set to None if decode (nullable) is None + # and model_fields_set contains the field + if self.decode is None and "decode" in self.model_fields_set: + _dict['decode'] = None + return _dict @classmethod @@ -96,6 +115,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ + "worker": DynamoWorkerPoolConfig.from_dict(obj["worker"]) if obj.get("worker") is not None else None, "prefill": DynamoWorkerPoolConfig.from_dict(obj["prefill"]) if obj.get("prefill") is not None else None, "decode": DynamoWorkerPoolConfig.from_dict(obj["decode"]) if obj.get("decode") is not None else None }) diff --git a/platform_api_python_client/models/get_c_serve_v2_deployment_response.py b/platform_api_python_client/models/get_c_serve_v2_deployment_response.py index c385158..268c219 100644 --- a/platform_api_python_client/models/get_c_serve_v2_deployment_response.py +++ b/platform_api_python_client/models/get_c_serve_v2_deployment_response.py @@ -42,6 +42,7 @@ class GetCServeV2DeploymentResponse(BaseModel): hardware_instance_id: StrictInt revision_number: StrictInt user_annotations: Optional[Dict[str, StrictStr]] = None + priority: Optional[StrictStr] = None recipe: CServeV2Recipe cserve_version: Optional[StrictStr] = None min_scale: StrictInt @@ -51,7 +52,7 @@ class GetCServeV2DeploymentResponse(BaseModel): endpoint_bearer_token: Optional[StrictStr] = None concurrency: Optional[StrictInt] = None env_vars: Optional[Dict[str, StrictStr]] = None - __properties: ClassVar[List[str]] = ["creator_email", "cluster_id", "id", "name", "endpoint_url", "image_url", "type", "status", "created_at", "hardware_instance_id", "revision_number", "user_annotations", "recipe", "cserve_version", "min_scale", "max_scale", "initial_scale", "endpoint_certificate_authority", "endpoint_bearer_token", "concurrency", "env_vars"] + __properties: ClassVar[List[str]] = ["creator_email", "cluster_id", "id", "name", "endpoint_url", "image_url", "type", "status", "created_at", "hardware_instance_id", "revision_number", "user_annotations", "priority", "recipe", "cserve_version", "min_scale", "max_scale", "initial_scale", "endpoint_certificate_authority", "endpoint_bearer_token", "concurrency", "env_vars"] model_config = ConfigDict( populate_by_name=True, @@ -105,6 +106,11 @@ def to_dict(self) -> Dict[str, Any]: if self.user_annotations is None and "user_annotations" in self.model_fields_set: _dict['user_annotations'] = None + # set to None if priority (nullable) is None + # and model_fields_set contains the field + if self.priority is None and "priority" in self.model_fields_set: + _dict['priority'] = None + # set to None if cserve_version (nullable) is None # and model_fields_set contains the field if self.cserve_version is None and "cserve_version" in self.model_fields_set: @@ -154,6 +160,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "hardware_instance_id": obj.get("hardware_instance_id"), "revision_number": obj.get("revision_number"), "user_annotations": obj.get("user_annotations"), + "priority": obj.get("priority"), "recipe": CServeV2Recipe.from_dict(obj["recipe"]) if obj.get("recipe") is not None else None, "cserve_version": obj.get("cserve_version"), "min_scale": obj.get("min_scale"), diff --git a/platform_api_python_client/models/get_c_serve_v3_deployment_response.py b/platform_api_python_client/models/get_c_serve_v3_deployment_response.py index 8489d45..037eeea 100644 --- a/platform_api_python_client/models/get_c_serve_v3_deployment_response.py +++ b/platform_api_python_client/models/get_c_serve_v3_deployment_response.py @@ -42,6 +42,7 @@ class GetCServeV3DeploymentResponse(BaseModel): hardware_instance_id: StrictInt revision_number: StrictInt user_annotations: Optional[Dict[str, StrictStr]] = None + priority: Optional[StrictStr] = None recipe: CServeV2Recipe cserve_version: Optional[StrictStr] = None min_replicas: StrictInt @@ -54,7 +55,7 @@ class GetCServeV3DeploymentResponse(BaseModel): enable_logging: Optional[StrictBool] = True enable_node_model_cache: Optional[StrictBool] = False session_affinity: Optional[StrictBool] = Field(default=False, description="Enable best-effort sticky routing via the `X-Session-Id` request header. Requests carrying the same header value land on the same pod, improving KV cache reuse for agentic workloads. Requests without the header are routed at random. Affinity is NOT durable: scaling, rollouts, restarts, or readiness-probe transitions will remap sessions to different pods. Do not use for irreplaceable in-pod state.") - __properties: ClassVar[List[str]] = ["creator_email", "cluster_id", "id", "name", "endpoint_url", "image_url", "type", "status", "created_at", "hardware_instance_id", "revision_number", "user_annotations", "recipe", "cserve_version", "min_replicas", "max_replicas", "endpoint_certificate_authority", "endpoint_bearer_token", "concurrency", "cooldown_period", "env_vars", "enable_logging", "enable_node_model_cache", "session_affinity"] + __properties: ClassVar[List[str]] = ["creator_email", "cluster_id", "id", "name", "endpoint_url", "image_url", "type", "status", "created_at", "hardware_instance_id", "revision_number", "user_annotations", "priority", "recipe", "cserve_version", "min_replicas", "max_replicas", "endpoint_certificate_authority", "endpoint_bearer_token", "concurrency", "cooldown_period", "env_vars", "enable_logging", "enable_node_model_cache", "session_affinity"] model_config = ConfigDict( populate_by_name=True, @@ -108,6 +109,11 @@ def to_dict(self) -> Dict[str, Any]: if self.user_annotations is None and "user_annotations" in self.model_fields_set: _dict['user_annotations'] = None + # set to None if priority (nullable) is None + # and model_fields_set contains the field + if self.priority is None and "priority" in self.model_fields_set: + _dict['priority'] = None + # set to None if cserve_version (nullable) is None # and model_fields_set contains the field if self.cserve_version is None and "cserve_version" in self.model_fields_set: @@ -152,6 +158,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "hardware_instance_id": obj.get("hardware_instance_id"), "revision_number": obj.get("revision_number"), "user_annotations": obj.get("user_annotations"), + "priority": obj.get("priority"), "recipe": CServeV2Recipe.from_dict(obj["recipe"]) if obj.get("recipe") is not None else None, "cserve_version": obj.get("cserve_version"), "min_replicas": obj.get("min_replicas"), diff --git a/platform_api_python_client/models/get_compute_deployment_response.py b/platform_api_python_client/models/get_compute_deployment_response.py index 49a16c8..28b1226 100644 --- a/platform_api_python_client/models/get_compute_deployment_response.py +++ b/platform_api_python_client/models/get_compute_deployment_response.py @@ -43,6 +43,7 @@ class GetComputeDeploymentResponse(BaseModel): hardware_instance_id: StrictInt revision_number: StrictInt user_annotations: Optional[Dict[str, StrictStr]] = None + priority: Optional[StrictStr] = None exposed_port: StrictInt volume_mounts: Optional[List[VolumeMount]] = None ssh_public_key: Optional[StrictStr] = None @@ -50,7 +51,7 @@ class GetComputeDeploymentResponse(BaseModel): env_vars: Optional[Dict[str, StrictStr]] = None image_pull_secret_credentials: Optional[ImagePullSecretCredentials] = None enable_logging: Optional[StrictBool] = True - __properties: ClassVar[List[str]] = ["creator_email", "cluster_id", "id", "name", "endpoint_url", "image_url", "type", "status", "created_at", "hardware_instance_id", "revision_number", "user_annotations", "exposed_port", "volume_mounts", "ssh_public_key", "ssh_password", "env_vars", "image_pull_secret_credentials", "enable_logging"] + __properties: ClassVar[List[str]] = ["creator_email", "cluster_id", "id", "name", "endpoint_url", "image_url", "type", "status", "created_at", "hardware_instance_id", "revision_number", "user_annotations", "priority", "exposed_port", "volume_mounts", "ssh_public_key", "ssh_password", "env_vars", "image_pull_secret_credentials", "enable_logging"] model_config = ConfigDict( populate_by_name=True, @@ -111,6 +112,11 @@ def to_dict(self) -> Dict[str, Any]: if self.user_annotations is None and "user_annotations" in self.model_fields_set: _dict['user_annotations'] = None + # set to None if priority (nullable) is None + # and model_fields_set contains the field + if self.priority is None and "priority" in self.model_fields_set: + _dict['priority'] = None + # set to None if ssh_public_key (nullable) is None # and model_fields_set contains the field if self.ssh_public_key is None and "ssh_public_key" in self.model_fields_set: @@ -155,6 +161,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "hardware_instance_id": obj.get("hardware_instance_id"), "revision_number": obj.get("revision_number"), "user_annotations": obj.get("user_annotations"), + "priority": obj.get("priority"), "exposed_port": obj.get("exposed_port"), "volume_mounts": [VolumeMount.from_dict(_item) for _item in obj["volume_mounts"]] if obj.get("volume_mounts") is not None else None, "ssh_public_key": obj.get("ssh_public_key"), diff --git a/platform_api_python_client/models/get_deployment_response.py b/platform_api_python_client/models/get_deployment_response.py index e448a76..a3d9b90 100644 --- a/platform_api_python_client/models/get_deployment_response.py +++ b/platform_api_python_client/models/get_deployment_response.py @@ -41,7 +41,8 @@ class GetDeploymentResponse(BaseModel): hardware_instance_id: StrictInt revision_number: StrictInt user_annotations: Optional[Dict[str, StrictStr]] = None - __properties: ClassVar[List[str]] = ["creator_email", "cluster_id", "id", "name", "endpoint_url", "image_url", "type", "status", "created_at", "hardware_instance_id", "revision_number", "user_annotations"] + priority: Optional[StrictStr] = None + __properties: ClassVar[List[str]] = ["creator_email", "cluster_id", "id", "name", "endpoint_url", "image_url", "type", "status", "created_at", "hardware_instance_id", "revision_number", "user_annotations", "priority"] model_config = ConfigDict( populate_by_name=True, @@ -92,6 +93,11 @@ def to_dict(self) -> Dict[str, Any]: if self.user_annotations is None and "user_annotations" in self.model_fields_set: _dict['user_annotations'] = None + # set to None if priority (nullable) is None + # and model_fields_set contains the field + if self.priority is None and "priority" in self.model_fields_set: + _dict['priority'] = None + return _dict @classmethod @@ -115,7 +121,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "created_at": obj.get("created_at"), "hardware_instance_id": obj.get("hardware_instance_id"), "revision_number": obj.get("revision_number"), - "user_annotations": obj.get("user_annotations") + "user_annotations": obj.get("user_annotations"), + "priority": obj.get("priority") }) return _obj diff --git a/platform_api_python_client/models/get_dynamo_deployment_response.py b/platform_api_python_client/models/get_dynamo_deployment_response.py index e8c7117..9c019b3 100644 --- a/platform_api_python_client/models/get_dynamo_deployment_response.py +++ b/platform_api_python_client/models/get_dynamo_deployment_response.py @@ -18,7 +18,7 @@ import json from datetime import datetime -from pydantic import BaseModel, ConfigDict, StrictBool, StrictInt, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional from platform_api_python_client.models.backend_protocol import BackendProtocol from platform_api_python_client.models.deployment_status import DeploymentStatus @@ -30,7 +30,7 @@ class GetDynamoDeploymentResponse(BaseModel): """ - GetDynamoDeploymentResponse + Dynamo deployment read model. ``worker_pools`` is the authoritative hardware/scaling view for both serving modes. The inherited ``hardware_instance_id`` is the single-hardware projection (worker for aggregated, decode for disaggregated) and the top-level scaling fields mirror ``worker_pools.worker``; both remain for consumers that predate ``worker_pools``. """ # noqa: E501 creator_email: StrictStr cluster_id: StrictInt @@ -44,12 +44,14 @@ class GetDynamoDeploymentResponse(BaseModel): hardware_instance_id: StrictInt revision_number: StrictInt user_annotations: Optional[Dict[str, StrictStr]] = None + priority: Optional[StrictStr] = None serving_mode: Optional[DynamoServingMode] = None worker_pools: Optional[DynamoWorkerPools] = None model: StrictStr served_model_name: Optional[StrictStr] = None - min_replicas: StrictInt - max_replicas: StrictInt + runtime_version: Optional[StrictStr] = None + min_replicas: StrictInt = Field(description="Deprecated aggregated-only spelling; set this under worker_pools.worker instead. Accepted alongside worker_pools when the values agree.") + max_replicas: StrictInt = Field(description="Deprecated aggregated-only spelling; set this under worker_pools.worker instead. Accepted alongside worker_pools when the values agree.") concurrency: Optional[StrictInt] = None cooldown_period: Optional[StrictInt] = None extra_args: Optional[StrictStr] = None @@ -59,7 +61,7 @@ class GetDynamoDeploymentResponse(BaseModel): enable_logging: Optional[StrictBool] = True enable_node_model_cache: Optional[StrictBool] = False backend_protocol: Optional[BackendProtocol] = None - __properties: ClassVar[List[str]] = ["creator_email", "cluster_id", "id", "name", "endpoint_url", "image_url", "type", "status", "created_at", "hardware_instance_id", "revision_number", "user_annotations", "serving_mode", "worker_pools", "model", "served_model_name", "min_replicas", "max_replicas", "concurrency", "cooldown_period", "extra_args", "env_vars", "endpoint_certificate_authority", "endpoint_bearer_token", "enable_logging", "enable_node_model_cache", "backend_protocol"] + __properties: ClassVar[List[str]] = ["creator_email", "cluster_id", "id", "name", "endpoint_url", "image_url", "type", "status", "created_at", "hardware_instance_id", "revision_number", "user_annotations", "priority", "serving_mode", "worker_pools", "model", "served_model_name", "runtime_version", "min_replicas", "max_replicas", "concurrency", "cooldown_period", "extra_args", "env_vars", "endpoint_certificate_authority", "endpoint_bearer_token", "enable_logging", "enable_node_model_cache", "backend_protocol"] model_config = ConfigDict( populate_by_name=True, @@ -113,6 +115,11 @@ def to_dict(self) -> Dict[str, Any]: if self.user_annotations is None and "user_annotations" in self.model_fields_set: _dict['user_annotations'] = None + # set to None if priority (nullable) is None + # and model_fields_set contains the field + if self.priority is None and "priority" in self.model_fields_set: + _dict['priority'] = None + # set to None if worker_pools (nullable) is None # and model_fields_set contains the field if self.worker_pools is None and "worker_pools" in self.model_fields_set: @@ -123,6 +130,11 @@ def to_dict(self) -> Dict[str, Any]: if self.served_model_name is None and "served_model_name" in self.model_fields_set: _dict['served_model_name'] = None + # set to None if runtime_version (nullable) is None + # and model_fields_set contains the field + if self.runtime_version is None and "runtime_version" in self.model_fields_set: + _dict['runtime_version'] = None + # set to None if concurrency (nullable) is None # and model_fields_set contains the field if self.concurrency is None and "concurrency" in self.model_fields_set: @@ -172,10 +184,12 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "hardware_instance_id": obj.get("hardware_instance_id"), "revision_number": obj.get("revision_number"), "user_annotations": obj.get("user_annotations"), + "priority": obj.get("priority"), "serving_mode": obj.get("serving_mode"), "worker_pools": DynamoWorkerPools.from_dict(obj["worker_pools"]) if obj.get("worker_pools") is not None else None, "model": obj.get("model"), "served_model_name": obj.get("served_model_name"), + "runtime_version": obj.get("runtime_version"), "min_replicas": obj.get("min_replicas"), "max_replicas": obj.get("max_replicas"), "concurrency": obj.get("concurrency"), diff --git a/platform_api_python_client/models/get_inference_deployment_response.py b/platform_api_python_client/models/get_inference_deployment_response.py index fb164ce..9f8516b 100644 --- a/platform_api_python_client/models/get_inference_deployment_response.py +++ b/platform_api_python_client/models/get_inference_deployment_response.py @@ -41,6 +41,7 @@ class GetInferenceDeploymentResponse(BaseModel): hardware_instance_id: StrictInt revision_number: StrictInt user_annotations: Optional[Dict[str, StrictStr]] = None + priority: Optional[StrictStr] = None container_port: StrictInt min_scale: StrictInt max_scale: StrictInt @@ -52,7 +53,7 @@ class GetInferenceDeploymentResponse(BaseModel): env_vars: Optional[Dict[str, StrictStr]] = None command: Optional[List[StrictStr]] = None command_args: Optional[List[StrictStr]] = None - __properties: ClassVar[List[str]] = ["creator_email", "cluster_id", "id", "name", "endpoint_url", "image_url", "type", "status", "created_at", "hardware_instance_id", "revision_number", "user_annotations", "container_port", "min_scale", "max_scale", "initial_scale", "concurrency", "healthcheck", "endpoint_certificate_authority", "endpoint_bearer_token", "env_vars", "command", "command_args"] + __properties: ClassVar[List[str]] = ["creator_email", "cluster_id", "id", "name", "endpoint_url", "image_url", "type", "status", "created_at", "hardware_instance_id", "revision_number", "user_annotations", "priority", "container_port", "min_scale", "max_scale", "initial_scale", "concurrency", "healthcheck", "endpoint_certificate_authority", "endpoint_bearer_token", "env_vars", "command", "command_args"] model_config = ConfigDict( populate_by_name=True, @@ -103,6 +104,11 @@ def to_dict(self) -> Dict[str, Any]: if self.user_annotations is None and "user_annotations" in self.model_fields_set: _dict['user_annotations'] = None + # set to None if priority (nullable) is None + # and model_fields_set contains the field + if self.priority is None and "priority" in self.model_fields_set: + _dict['priority'] = None + # set to None if initial_scale (nullable) is None # and model_fields_set contains the field if self.initial_scale is None and "initial_scale" in self.model_fields_set: @@ -167,6 +173,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "hardware_instance_id": obj.get("hardware_instance_id"), "revision_number": obj.get("revision_number"), "user_annotations": obj.get("user_annotations"), + "priority": obj.get("priority"), "container_port": obj.get("container_port"), "min_scale": obj.get("min_scale"), "max_scale": obj.get("max_scale"), diff --git a/platform_api_python_client/models/get_inference_v3_deployment_response.py b/platform_api_python_client/models/get_inference_v3_deployment_response.py index bd9deec..fd152ad 100644 --- a/platform_api_python_client/models/get_inference_v3_deployment_response.py +++ b/platform_api_python_client/models/get_inference_v3_deployment_response.py @@ -45,6 +45,7 @@ class GetInferenceV3DeploymentResponse(BaseModel): hardware_instance_id: StrictInt revision_number: StrictInt user_annotations: Optional[Dict[str, StrictStr]] = None + priority: Optional[StrictStr] = None container_port: StrictInt min_replicas: StrictInt max_replicas: StrictInt @@ -64,7 +65,7 @@ class GetInferenceV3DeploymentResponse(BaseModel): session_affinity: Optional[StrictBool] = Field(default=False, description="Enable best-effort sticky routing via the `X-Session-Id` request header. Requests carrying the same header value land on the same pod, improving KV cache reuse for agentic workloads. Requests without the header are routed at random. Affinity is NOT durable: scaling, rollouts, restarts, or readiness-probe transitions will remap sessions to different pods. Do not use for irreplaceable in-pod state.") config_file: Optional[ConfigFileMount] = None metrics: Optional[MetricsConfig] = None - __properties: ClassVar[List[str]] = ["creator_email", "cluster_id", "id", "name", "endpoint_url", "image_url", "type", "status", "created_at", "hardware_instance_id", "revision_number", "user_annotations", "container_port", "min_replicas", "max_replicas", "concurrency", "cooldown_period", "healthcheck", "endpoint_certificate_authority", "endpoint_bearer_token", "env_vars", "command", "command_args", "original_command", "image_pull_secret_credentials", "backend_protocol", "enable_logging", "enable_node_model_cache", "session_affinity", "config_file", "metrics"] + __properties: ClassVar[List[str]] = ["creator_email", "cluster_id", "id", "name", "endpoint_url", "image_url", "type", "status", "created_at", "hardware_instance_id", "revision_number", "user_annotations", "priority", "container_port", "min_replicas", "max_replicas", "concurrency", "cooldown_period", "healthcheck", "endpoint_certificate_authority", "endpoint_bearer_token", "env_vars", "command", "command_args", "original_command", "image_pull_secret_credentials", "backend_protocol", "enable_logging", "enable_node_model_cache", "session_affinity", "config_file", "metrics"] model_config = ConfigDict( populate_by_name=True, @@ -124,6 +125,11 @@ def to_dict(self) -> Dict[str, Any]: if self.user_annotations is None and "user_annotations" in self.model_fields_set: _dict['user_annotations'] = None + # set to None if priority (nullable) is None + # and model_fields_set contains the field + if self.priority is None and "priority" in self.model_fields_set: + _dict['priority'] = None + # set to None if concurrency (nullable) is None # and model_fields_set contains the field if self.concurrency is None and "concurrency" in self.model_fields_set: @@ -203,6 +209,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "hardware_instance_id": obj.get("hardware_instance_id"), "revision_number": obj.get("revision_number"), "user_annotations": obj.get("user_annotations"), + "priority": obj.get("priority"), "container_port": obj.get("container_port"), "min_replicas": obj.get("min_replicas"), "max_replicas": obj.get("max_replicas"), diff --git a/platform_api_python_client/models/get_job_deployment_response.py b/platform_api_python_client/models/get_job_deployment_response.py index 1d1bdaa..841a406 100644 --- a/platform_api_python_client/models/get_job_deployment_response.py +++ b/platform_api_python_client/models/get_job_deployment_response.py @@ -44,6 +44,7 @@ class GetJobDeploymentResponse(BaseModel): hardware_instance_id: StrictInt revision_number: StrictInt user_annotations: Optional[Dict[str, StrictStr]] = None + priority: Optional[StrictStr] = None env_vars: Optional[Dict[str, StrictStr]] = None command: Optional[List[StrictStr]] = None args: Optional[List[StrictStr]] = None @@ -56,7 +57,7 @@ class GetJobDeploymentResponse(BaseModel): enable_logging: Optional[StrictBool] = True config_file: Optional[ConfigFileMount] = None volume_mounts: Optional[List[VolumeMount]] = None - __properties: ClassVar[List[str]] = ["creator_email", "cluster_id", "id", "name", "endpoint_url", "image_url", "type", "status", "created_at", "hardware_instance_id", "revision_number", "user_annotations", "env_vars", "command", "args", "original_command", "completions", "parallelism", "backoff_limit", "active_deadline_seconds", "image_pull_secret_credentials", "enable_logging", "config_file", "volume_mounts"] + __properties: ClassVar[List[str]] = ["creator_email", "cluster_id", "id", "name", "endpoint_url", "image_url", "type", "status", "created_at", "hardware_instance_id", "revision_number", "user_annotations", "priority", "env_vars", "command", "args", "original_command", "completions", "parallelism", "backoff_limit", "active_deadline_seconds", "image_pull_secret_credentials", "enable_logging", "config_file", "volume_mounts"] model_config = ConfigDict( populate_by_name=True, @@ -120,6 +121,11 @@ def to_dict(self) -> Dict[str, Any]: if self.user_annotations is None and "user_annotations" in self.model_fields_set: _dict['user_annotations'] = None + # set to None if priority (nullable) is None + # and model_fields_set contains the field + if self.priority is None and "priority" in self.model_fields_set: + _dict['priority'] = None + # set to None if env_vars (nullable) is None # and model_fields_set contains the field if self.env_vars is None and "env_vars" in self.model_fields_set: @@ -179,6 +185,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "hardware_instance_id": obj.get("hardware_instance_id"), "revision_number": obj.get("revision_number"), "user_annotations": obj.get("user_annotations"), + "priority": obj.get("priority"), "env_vars": obj.get("env_vars"), "command": obj.get("command"), "args": obj.get("args"), diff --git a/platform_api_python_client/models/get_object_volume_response.py b/platform_api_python_client/models/get_object_volume_response.py index f0b9bcf..3b9d982 100644 --- a/platform_api_python_client/models/get_object_volume_response.py +++ b/platform_api_python_client/models/get_object_volume_response.py @@ -43,9 +43,7 @@ class GetObjectVolumeResponse(BaseModel): region: StrictStr prefix: Optional[StrictStr] = None read_only: StrictBool - volume_attributes: Optional[Dict[str, StrictStr]] = None - mount_options: Optional[List[StrictStr]] = None - __properties: ClassVar[List[str]] = ["id", "name", "cluster_id", "backend", "access_mode", "status", "pvc_name", "created_at", "provider", "bucket", "region", "prefix", "read_only", "volume_attributes", "mount_options"] + __properties: ClassVar[List[str]] = ["id", "name", "cluster_id", "backend", "access_mode", "status", "pvc_name", "created_at", "provider", "bucket", "region", "prefix", "read_only"] @field_validator('backend') def backend_validate_enum(cls, value): @@ -98,16 +96,6 @@ def to_dict(self) -> Dict[str, Any]: if self.prefix is None and "prefix" in self.model_fields_set: _dict['prefix'] = None - # set to None if volume_attributes (nullable) is None - # and model_fields_set contains the field - if self.volume_attributes is None and "volume_attributes" in self.model_fields_set: - _dict['volume_attributes'] = None - - # set to None if mount_options (nullable) is None - # and model_fields_set contains the field - if self.mount_options is None and "mount_options" in self.model_fields_set: - _dict['mount_options'] = None - return _dict @classmethod @@ -132,9 +120,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "bucket": obj.get("bucket"), "region": obj.get("region"), "prefix": obj.get("prefix"), - "read_only": obj.get("read_only"), - "volume_attributes": obj.get("volume_attributes"), - "mount_options": obj.get("mount_options") + "read_only": obj.get("read_only") }) return _obj diff --git a/platform_api_python_client/models/validation_error.py b/platform_api_python_client/models/validation_error.py index a27db44..d0c2f01 100644 --- a/platform_api_python_client/models/validation_error.py +++ b/platform_api_python_client/models/validation_error.py @@ -18,7 +18,7 @@ import json from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List +from typing import Any, ClassVar, Dict, List, Optional from platform_api_python_client.models.validation_error_loc_inner import ValidationErrorLocInner from typing import Optional, Set from typing_extensions import Self @@ -30,7 +30,9 @@ class ValidationError(BaseModel): loc: List[ValidationErrorLocInner] msg: StrictStr type: StrictStr - __properties: ClassVar[List[str]] = ["loc", "msg", "type"] + input: Optional[Any] = None + ctx: Optional[Dict[str, Any]] = None + __properties: ClassVar[List[str]] = ["loc", "msg", "type", "input", "ctx"] model_config = ConfigDict( populate_by_name=True, @@ -78,6 +80,11 @@ def to_dict(self) -> Dict[str, Any]: if _item_loc: _items.append(_item_loc.to_dict()) _dict['loc'] = _items + # set to None if input (nullable) is None + # and model_fields_set contains the field + if self.input is None and "input" in self.model_fields_set: + _dict['input'] = None + return _dict @classmethod @@ -92,7 +99,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "loc": [ValidationErrorLocInner.from_dict(_item) for _item in obj["loc"]] if obj.get("loc") is not None else None, "msg": obj.get("msg"), - "type": obj.get("type") + "type": obj.get("type"), + "input": obj.get("input"), + "ctx": obj.get("ctx") }) return _obj diff --git a/pyproject.toml b/pyproject.toml index 67d275e..06d520e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "platform_api_python_client" -version = "4.28.0" +version = "4.30.0" description = "Platform External API" authors = ["OpenAPI Generator Community "] license = "NoLicense" diff --git a/setup.py b/setup.py index 1b40689..529dafa 100644 --- a/setup.py +++ b/setup.py @@ -21,7 +21,7 @@ # prerequisite: setuptools # http://pypi.python.org/pypi/setuptools NAME = "platform-api-python-client" -VERSION = "4.28.0" +VERSION = "4.30.0" PYTHON_REQUIRES = ">= 3.8" REQUIRES = [ "urllib3 >= 1.25.3, < 3.0.0", diff --git a/test/test_create_c_serve_v3_deployment_request.py b/test/test_create_c_serve_v3_deployment_request.py index 82f8d2d..acd21e9 100644 --- a/test/test_create_c_serve_v3_deployment_request.py +++ b/test/test_create_c_serve_v3_deployment_request.py @@ -44,6 +44,7 @@ def make_instance(self, include_optional) -> CreateCServeV3DeploymentRequest: 'key' : '' }, chart_revision = '', + priority = '', recipe = { }, cserve_version = '', hf_token = '', diff --git a/test/test_create_compute_deployment_request.py b/test/test_create_compute_deployment_request.py index 2d663c4..645c61d 100644 --- a/test/test_create_compute_deployment_request.py +++ b/test/test_create_compute_deployment_request.py @@ -42,6 +42,7 @@ def make_instance(self, include_optional) -> CreateComputeDeploymentRequest: 'key' : '' }, chart_revision = '', + priority = '', image_url = '', image_pull_secret_credentials = platform_api_python_client.models.image_pull_secret_credentials.ImagePullSecretCredentials( username = '', diff --git a/test/test_create_dynamo_deployment_request.py b/test/test_create_dynamo_deployment_request.py index 15b0a95..6bc6db5 100644 --- a/test/test_create_dynamo_deployment_request.py +++ b/test/test_create_dynamo_deployment_request.py @@ -44,10 +44,12 @@ def make_instance(self, include_optional) -> CreateDynamoDeploymentRequest: 'key' : '' }, chart_revision = '', + priority = '', serving_mode = 'aggregated', worker_pools = { }, model = '', served_model_name = '', + runtime_version = 'e6bUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awxoFZxHzs6ED.kjUSnTINkYPUndNl8pmPg5K897Fu1JEFj9R1_dz9rEoBi0L', min_replicas = 56, max_replicas = 56, concurrency = 56, diff --git a/test/test_create_inference_v3_deployment_request.py b/test/test_create_inference_v3_deployment_request.py index 90d655c..fcd9872 100644 --- a/test/test_create_inference_v3_deployment_request.py +++ b/test/test_create_inference_v3_deployment_request.py @@ -44,6 +44,7 @@ def make_instance(self, include_optional) -> CreateInferenceV3DeploymentRequest: 'key' : '' }, chart_revision = '', + priority = '', image_url = '', image_pull_secret_credentials = platform_api_python_client.models.image_pull_secret_credentials.ImagePullSecretCredentials( username = '', diff --git a/test/test_create_job_deployment_request.py b/test/test_create_job_deployment_request.py index 99c9758..5a20ef5 100644 --- a/test/test_create_job_deployment_request.py +++ b/test/test_create_job_deployment_request.py @@ -42,6 +42,7 @@ def make_instance(self, include_optional) -> CreateJobDeploymentRequest: 'key' : '' }, chart_revision = '', + priority = '', image_url = '', image_pull_secret_credentials = platform_api_python_client.models.image_pull_secret_credentials.ImagePullSecretCredentials( username = '', diff --git a/test/test_create_object_volume_request.py b/test/test_create_object_volume_request.py index c7eb7e9..d3cf772 100644 --- a/test/test_create_object_volume_request.py +++ b/test/test_create_object_volume_request.py @@ -39,24 +39,18 @@ def make_instance(self, include_optional) -> CreateObjectVolumeRequest: cluster_id = 56, backend = 'object', provider = 's3', - bucket = '012', - region = '0', + bucket = 'arn:r1c2v:s3:BY3=qY/UboV+5Ow:qrz/3IL6+fRkNYKgBvuQ_e0:0lPRw1FhCJ:vn1DhEndELjf8pKCdfAU/MKS-aAF012', + region = 'w1c2v7s6djuy1zmetozkhdomha1bae37b8ocvx8o53ow2eg7p6qw9qklp6l4y010fogx0', prefix = '', - read_only = True, - volume_attributes = { - 'key' : '' - }, - mount_options = [ - '' - ] + read_only = True ) else: return CreateObjectVolumeRequest( name = 'ar1c2v7s6djuy1zmetozkhdomha1b0', cluster_id = 56, backend = 'object', - bucket = '012', - region = '0', + bucket = 'arn:r1c2v:s3:BY3=qY/UboV+5Ow:qrz/3IL6+fRkNYKgBvuQ_e0:0lPRw1FhCJ:vn1DhEndELjf8pKCdfAU/MKS-aAF012', + region = 'w1c2v7s6djuy1zmetozkhdomha1bae37b8ocvx8o53ow2eg7p6qw9qklp6l4y010fogx0', ) """ diff --git a/test/test_create_volume_request.py b/test/test_create_volume_request.py index 403ee5c..7d9e9ef 100644 --- a/test/test_create_volume_request.py +++ b/test/test_create_volume_request.py @@ -41,24 +41,18 @@ def make_instance(self, include_optional) -> CreateVolumeRequest: size_gb = 1.0, storage_class = 'w1c2v7s6djuy1zmetozkhdomha1bae37b8ocvx8o53ow2eg7p6qw9qklp6l4y010fogx.mjvnh6nzn2yp6d7tmo7zxedi-pkbmhcbu-4d4ncp9sp-gpju7f9r1ly-n2jyba-zuswj171d3kxld4uyykb66fgvcwlw.s.p6div96l1hmssf5by0949ps5we2h1m5s.4.7ftu50o3hq25-ctix-xt8fyuzw85-6ya.ezgfzdm4groy.ccn4nxdzyngfr2bsdqi-90qr77qnqf26kpzuf5a652r9yc8wgc.uoko8ht4bjsb-86ca0gq8ejs584qp107f5qv9ze3gk7q64-5mecujmelufynb1wtb8v2n1x9-y9o36a.uqixpalso4ehay1yebs1kiembt-homr2.864bew-vpjuuty7-xv4qjygg3hwqd-5gynywalvhvvesyveyxp35spjahpsiagrj0jehh3a3x8z9axqtswj383252z.d6d4ifob3rgi7j1fao-vb9l55lz.bsk1mqype9zx3n6q-u55t879v1lf.1.k.isf-swgdlh.0.m4u5aoqakjc4xlcmbpoy4ndizk4s3cdhxttexawd8mnl6e4uzxalowdqy9rokd32ct-w5p-yt-emwrzfi.lulqkw0osnqktff9fp6xbt97440w4wt3xjayovyb7flljlnosgtrofp.o.j.p5-2p577rg1fwny6cq1e2d3p5aa62rscqk6cxzeqcrvjnbqd52lumjr3qda19c-7skjef4ovphp57sme4j.v.ex0xp4ft9xd1-4zvmus0m5p.v0h-jlvu47xor814uas43gvg7px7mohsvz1n3b561az73nipt-so37iphbtnhmw48ibn.m.bk41trymo7d0ea3vl3k8vn3ygn2a7ps3-pdkhjjxrdr3lz6urrzqtzh9wngf-95dvz5km9h9e5j8vg6kx1nnqzi442akggqdhy6.i.gupb4cz72xp4qgqp5jsd55qux2vq83uq1j9iy-qb4bt8kb625gpncppm1zw5yrhj.5q6soeyc3hzdpj1thb.b.b5xq79rwp3km1p11ikuwgghy12wdp5xrrsyrsnl7yjolek10nb0oh.h.x.2h707s1vjswprq6au.xucdr85u0erh5dfg2hvs9u7vn0y8ci0w5cs0m66nvcce2fr52dkbd9-7klkniu5cpn6qugmep5e6p9gx9creyetm.2sgithzei3bx4-4ox6m2aiffxmcwza92oxtwxs76a.s.z.im-3mvtf47ak-ld.a.2elgcf13ovinqusgnnclaaotmbqdseafe1dkj6zg4q-zexx0zm-n.j3-w17r6rxur1pbea75jjl8lv5xitcozp.c.h.61bftab5cre-v.9.v.s.fyenvbtf508c5c3k.mghqe7lyva958ar2bzuf2507k602lnujv0ps2icyh27nxstaqbg38m0hpe.g.bg8n69rdva8j104ap-cf1p9yc1ijk9np17sjmh2tukz4atwz0044pdhk9pk1eft1nod0p9-vepbljhwtpf-qd2ysm1.3tiane3jk-09bf0q3dbgqocrp16dzj0xk-uyej17sd81mbgu820re53g21e779vy6.z.rm8pn0xdthfd9cqpo9sslxeml661r0eol4jypf6mdna86sfgz92k.y-52xiufg9mfli1bjvsy947g3cz7wufbd001uiwvuaxblt37i0ah0z6f6qhqwar1c3r14v-vt3pd5kbrrs94okiob2jznknec6ky.3.d.dgp-oapce410llsnx-m--ufb725icarr8pijimdu9gxv3p7744x7btxc9-zq66zjny7rvcbdfcl-7ksv-awu1ddn3dlag.1cg4obm9r3waeqrdsk53.1.q.k.w.gz5qwr2rjf1o2625v873inyqekdlul-2yu96dhuposmz433w4216crklr6.5ifmkesrrzj9hbtdyamuoxl0l1gb0vgsms5ou3nfhhnvvfktn2uyclzyqvy90vz11a6oipnv4tno7.z.t.u4pfk1y-f41a9ekyw5sfqgxxg2436imo6t94jmeph0msaf6p04q5p6z75n97ibih9ynp9w52m2.7bh985by7-jms7z9rzl84e9iub-3gwwq4fe81bi2bmela-4-ti6-mqq-em0m73ls976osz80kxxj.x.jxe4zxgit8guso2bynf9xkxywffvyznse5yovoes9zqhgf9wk74po4qj1hri4b.06kv2f-9nff.ejas130ndgnxp85h0saokre-wcp8nl4iio.g.z8c-0hnu2tn0fal1tsn8phrmhzoys2l25i7fgxqn8.w.w.z0', provider = 's3', - bucket = '012', - region = '0', + bucket = 'arn:r1c2v:s3:BY3=qY/UboV+5Ow:qrz/3IL6+fRkNYKgBvuQ_e0:0lPRw1FhCJ:vn1DhEndELjf8pKCdfAU/MKS-aAF012', + region = 'w1c2v7s6djuy1zmetozkhdomha1bae37b8ocvx8o53ow2eg7p6qw9qklp6l4y010fogx0', prefix = '', - read_only = True, - volume_attributes = { - 'key' : '' - }, - mount_options = [ - '' - ] + read_only = True ) else: return CreateVolumeRequest( name = 'ar1c2v7s6djuy1zmetozkhdomha1b0', cluster_id = 56, backend = 'object', - bucket = '012', - region = '0', + bucket = 'arn:r1c2v:s3:BY3=qY/UboV+5Ow:qrz/3IL6+fRkNYKgBvuQ_e0:0lPRw1FhCJ:vn1DhEndELjf8pKCdfAU/MKS-aAF012', + region = 'w1c2v7s6djuy1zmetozkhdomha1bae37b8ocvx8o53ow2eg7p6qw9qklp6l4y010fogx0', ) """ diff --git a/test/test_deployment_response.py b/test/test_deployment_response.py index 47ced09..f37a192 100644 --- a/test/test_deployment_response.py +++ b/test/test_deployment_response.py @@ -49,10 +49,12 @@ def make_instance(self, include_optional) -> DeploymentResponse: user_annotations = { 'key' : '' }, + priority = '', serving_mode = 'aggregated', worker_pools = { }, model = '', served_model_name = '', + runtime_version = '', min_replicas = 56, max_replicas = 56, concurrency = 56, @@ -96,7 +98,14 @@ def make_instance(self, include_optional) -> DeploymentResponse: read_only = True, ) ], ssh_public_key = '', - ssh_password = '' + ssh_password = '', + args = [ + '' + ], + completions = 56, + parallelism = 56, + backoff_limit = 56, + active_deadline_seconds = 56 ) else: return DeploymentResponse( diff --git a/test/test_dynamo_worker_pool_config.py b/test/test_dynamo_worker_pool_config.py index 0bddb63..799f56d 100644 --- a/test/test_dynamo_worker_pool_config.py +++ b/test/test_dynamo_worker_pool_config.py @@ -36,12 +36,15 @@ def make_instance(self, include_optional) -> DynamoWorkerPoolConfig: if include_optional: return DynamoWorkerPoolConfig( hardware_instance_id = 56, - replicas = 1.0 + replicas = 1.0, + min_replicas = 1.0, + max_replicas = 1.0, + concurrency = 1.0, + cooldown_period = 0.0 ) else: return DynamoWorkerPoolConfig( hardware_instance_id = 56, - replicas = 1.0, ) """ diff --git a/test/test_dynamo_worker_pools.py b/test/test_dynamo_worker_pools.py index b45bc79..30d7b93 100644 --- a/test/test_dynamo_worker_pools.py +++ b/test/test_dynamo_worker_pools.py @@ -35,13 +35,12 @@ def make_instance(self, include_optional) -> DynamoWorkerPools: model = DynamoWorkerPools() if include_optional: return DynamoWorkerPools( + worker = { }, prefill = { }, decode = { } ) else: return DynamoWorkerPools( - prefill = { }, - decode = { }, ) """ diff --git a/test/test_external_api.py b/test/test_external_api.py index 40a166e..8c88235 100644 --- a/test/test_external_api.py +++ b/test/test_external_api.py @@ -124,13 +124,6 @@ def test_delete_hardware_instance_hardware_instances_hardware_instance_id_delete """ pass - def test_delete_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_id_gpu_quota_delete(self) -> None: - """Test case for delete_org_gpu_quota_on_cluster_clusters_cluster_id_organizations_organization_id_gpu_quota_delete - - Delete Org Gpu Quota On Cluster - """ - pass - def test_delete_service_account_service_accounts_workos_id_delete(self) -> None: """Test case for delete_service_account_service_accounts_workos_id_delete diff --git a/test/test_get_c_serve_v2_deployment_response.py b/test/test_get_c_serve_v2_deployment_response.py index 9725cc5..b751221 100644 --- a/test/test_get_c_serve_v2_deployment_response.py +++ b/test/test_get_c_serve_v2_deployment_response.py @@ -49,6 +49,7 @@ def make_instance(self, include_optional) -> GetCServeV2DeploymentResponse: user_annotations = { 'key' : '' }, + priority = '', recipe = { }, cserve_version = '', min_scale = 56, diff --git a/test/test_get_c_serve_v3_deployment_response.py b/test/test_get_c_serve_v3_deployment_response.py index 55332d8..2eca04d 100644 --- a/test/test_get_c_serve_v3_deployment_response.py +++ b/test/test_get_c_serve_v3_deployment_response.py @@ -49,6 +49,7 @@ def make_instance(self, include_optional) -> GetCServeV3DeploymentResponse: user_annotations = { 'key' : '' }, + priority = '', recipe = { }, cserve_version = '', min_replicas = 56, diff --git a/test/test_get_compute_deployment_response.py b/test/test_get_compute_deployment_response.py index 2a38c36..3a5c4ee 100644 --- a/test/test_get_compute_deployment_response.py +++ b/test/test_get_compute_deployment_response.py @@ -49,6 +49,7 @@ def make_instance(self, include_optional) -> GetComputeDeploymentResponse: user_annotations = { 'key' : '' }, + priority = '', exposed_port = 56, volume_mounts = [ platform_api_python_client.models.volume_mount.VolumeMount( diff --git a/test/test_get_deployment_log_response.py b/test/test_get_deployment_log_response.py index afbb0e4..7aa764b 100644 --- a/test/test_get_deployment_log_response.py +++ b/test/test_get_deployment_log_response.py @@ -36,14 +36,14 @@ def make_instance(self, include_optional) -> GetDeploymentLogResponse: if include_optional: return GetDeploymentLogResponse( events = [ - None + { } ], next_page_token = '' ) else: return GetDeploymentLogResponse( events = [ - None + { } ], ) """ diff --git a/test/test_get_deployment_response.py b/test/test_get_deployment_response.py index 001b87c..0e3b276 100644 --- a/test/test_get_deployment_response.py +++ b/test/test_get_deployment_response.py @@ -48,7 +48,8 @@ def make_instance(self, include_optional) -> GetDeploymentResponse: revision_number = 56, user_annotations = { 'key' : '' - } + }, + priority = '' ) else: return GetDeploymentResponse( diff --git a/test/test_get_dynamo_deployment_response.py b/test/test_get_dynamo_deployment_response.py index 4b3592a..f65c5cd 100644 --- a/test/test_get_dynamo_deployment_response.py +++ b/test/test_get_dynamo_deployment_response.py @@ -49,10 +49,12 @@ def make_instance(self, include_optional) -> GetDynamoDeploymentResponse: user_annotations = { 'key' : '' }, + priority = '', serving_mode = 'aggregated', worker_pools = { }, model = '', served_model_name = '', + runtime_version = '', min_replicas = 56, max_replicas = 56, concurrency = 56, diff --git a/test/test_get_inference_deployment_response.py b/test/test_get_inference_deployment_response.py index 04c848c..a6870d4 100644 --- a/test/test_get_inference_deployment_response.py +++ b/test/test_get_inference_deployment_response.py @@ -49,6 +49,7 @@ def make_instance(self, include_optional) -> GetInferenceDeploymentResponse: user_annotations = { 'key' : '' }, + priority = '', container_port = 56, min_scale = 56, max_scale = 56, diff --git a/test/test_get_inference_v3_deployment_response.py b/test/test_get_inference_v3_deployment_response.py index be4853c..25bd6ef 100644 --- a/test/test_get_inference_v3_deployment_response.py +++ b/test/test_get_inference_v3_deployment_response.py @@ -49,6 +49,7 @@ def make_instance(self, include_optional) -> GetInferenceV3DeploymentResponse: user_annotations = { 'key' : '' }, + priority = '', container_port = 56, min_replicas = 56, max_replicas = 56, diff --git a/test/test_get_job_deployment_response.py b/test/test_get_job_deployment_response.py index 441564b..e884978 100644 --- a/test/test_get_job_deployment_response.py +++ b/test/test_get_job_deployment_response.py @@ -49,6 +49,7 @@ def make_instance(self, include_optional) -> GetJobDeploymentResponse: user_annotations = { 'key' : '' }, + priority = '', env_vars = { 'key' : '' }, diff --git a/test/test_get_object_volume_response.py b/test/test_get_object_volume_response.py index f3bb868..5b67323 100644 --- a/test/test_get_object_volume_response.py +++ b/test/test_get_object_volume_response.py @@ -47,13 +47,7 @@ def make_instance(self, include_optional) -> GetObjectVolumeResponse: bucket = '', region = '', prefix = '', - read_only = True, - volume_attributes = { - 'key' : '' - }, - mount_options = [ - '' - ] + read_only = True ) else: return GetObjectVolumeResponse( diff --git a/test/test_get_volume_response.py b/test/test_get_volume_response.py index c5c8d74..9907225 100644 --- a/test/test_get_volume_response.py +++ b/test/test_get_volume_response.py @@ -49,13 +49,7 @@ def make_instance(self, include_optional) -> GetVolumeResponse: bucket = '', region = '', prefix = '', - read_only = True, - volume_attributes = { - 'key' : '' - }, - mount_options = [ - '' - ] + read_only = True ) else: return GetVolumeResponse( diff --git a/test/test_http_validation_error.py b/test/test_http_validation_error.py index b87c23f..b0fcfd3 100644 --- a/test/test_http_validation_error.py +++ b/test/test_http_validation_error.py @@ -41,7 +41,9 @@ def make_instance(self, include_optional) -> HTTPValidationError: null ], msg = '', - type = '', ) + type = '', + input = null, + ctx = platform_api_python_client.models.context.Context(), ) ] ) else: diff --git a/test/test_list_get_deployment_response.py b/test/test_list_get_deployment_response.py index 00e4872..8ac0d49 100644 --- a/test/test_list_get_deployment_response.py +++ b/test/test_list_get_deployment_response.py @@ -50,7 +50,8 @@ def make_instance(self, include_optional) -> ListGetDeploymentResponse: revision_number = 56, user_annotations = { 'key' : '' - }, ) + }, + priority = '', ) ] ) else: @@ -70,7 +71,8 @@ def make_instance(self, include_optional) -> ListGetDeploymentResponse: revision_number = 56, user_annotations = { 'key' : '' - }, ) + }, + priority = '', ) ], ) """ diff --git a/test/test_validation_error.py b/test/test_validation_error.py index bcf6cfd..7046712 100644 --- a/test/test_validation_error.py +++ b/test/test_validation_error.py @@ -39,7 +39,9 @@ def make_instance(self, include_optional) -> ValidationError: null ], msg = '', - type = '' + type = '', + input = None, + ctx = platform_api_python_client.models.context.Context() ) else: return ValidationError(