anyscale 0.26.55__py3-none-any.whl → 0.26.57__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. anyscale/_private/docgen/__main__.py +7 -0
  2. anyscale/_private/docgen/models.md +1 -0
  3. anyscale/client/README.md +3 -0
  4. anyscale/client/openapi_client/__init__.py +3 -0
  5. anyscale/client/openapi_client/models/__init__.py +3 -0
  6. anyscale/client/openapi_client/models/decorated_cloud_resource.py +30 -3
  7. anyscale/client/openapi_client/models/decorated_session.py +29 -1
  8. anyscale/client/openapi_client/models/operator_check_result.py +177 -0
  9. anyscale/client/openapi_client/models/operator_check_status.py +102 -0
  10. anyscale/client/openapi_client/models/operator_status.py +4 -4
  11. anyscale/client/openapi_client/models/operator_status_details.py +178 -0
  12. anyscale/cloud_resource.py +11 -11
  13. anyscale/commands/service_commands.py +10 -7
  14. anyscale/connect_utils/start_interactive_session.py +0 -1
  15. anyscale/sdk/anyscale_client/models/session.py +29 -1
  16. anyscale/service/__init__.py +5 -2
  17. anyscale/service/_private/service_sdk.py +10 -10
  18. anyscale/service/commands.py +3 -2
  19. anyscale/service/models.py +1 -1
  20. anyscale/version.py +1 -1
  21. {anyscale-0.26.55.dist-info → anyscale-0.26.57.dist-info}/METADATA +1 -1
  22. {anyscale-0.26.55.dist-info → anyscale-0.26.57.dist-info}/RECORD +27 -24
  23. {anyscale-0.26.55.dist-info → anyscale-0.26.57.dist-info}/WHEEL +0 -0
  24. {anyscale-0.26.55.dist-info → anyscale-0.26.57.dist-info}/entry_points.txt +0 -0
  25. {anyscale-0.26.55.dist-info → anyscale-0.26.57.dist-info}/licenses/LICENSE +0 -0
  26. {anyscale-0.26.55.dist-info → anyscale-0.26.57.dist-info}/licenses/NOTICE +0 -0
  27. {anyscale-0.26.55.dist-info → anyscale-0.26.57.dist-info}/top_level.txt +0 -0
@@ -2,6 +2,7 @@
2
2
 
3
3
  Usage: python -m anyscale._private.docgen --help
4
4
  """
5
+
5
6
  import os
6
7
 
7
8
  import click
@@ -81,6 +82,8 @@ from anyscale.schedule.models import ScheduleConfig, ScheduleState, ScheduleStat
81
82
  from anyscale.service.models import (
82
83
  RayGCSExternalStorageConfig,
83
84
  ServiceConfig,
85
+ ServiceSortField,
86
+ ServiceSortOrder,
84
87
  ServiceState,
85
88
  ServiceStatus,
86
89
  ServiceVersionState,
@@ -253,6 +256,7 @@ ALL_MODULES = [
253
256
  filename="service-api.md",
254
257
  cli_prefix="anyscale service",
255
258
  cli_commands=[
259
+ service_commands.list,
256
260
  service_commands.deploy,
257
261
  service_commands.status,
258
262
  service_commands.wait,
@@ -263,6 +267,7 @@ ALL_MODULES = [
263
267
  ],
264
268
  sdk_prefix="anyscale.service",
265
269
  sdk_commands=[
270
+ anyscale.service.list,
266
271
  anyscale.service.deploy,
267
272
  anyscale.service.status,
268
273
  anyscale.service.wait,
@@ -279,6 +284,8 @@ ALL_MODULES = [
279
284
  ServiceState,
280
285
  ServiceVersionStatus,
281
286
  ServiceVersionState,
287
+ ServiceSortField,
288
+ ServiceSortOrder,
282
289
  ],
283
290
  # The following commands are legacy
284
291
  legacy_sdk_commands={
@@ -1620,6 +1620,7 @@ Name | Type | Description | Notes
1620
1620
  **serve_metrics_dashboard_url** | **str** | URL for Serve Grafana dashboard for this Session. This field will only be populated after the Session finishes starting. | [optional] [default to null]
1621
1621
  **serve_deployment_metrics_dashboard_url** | **str** | URL for Serve deployment Grafana dashboard for this Session. This field will only be populated after the Session finishes starting. | [optional] [default to null]
1622
1622
  **serve_llm_metrics_dashboard_url** | **str** | URL for Serve LLM Grafana dashboard for this Session. This field will only be populated after the Session finishes starting. | [optional] [default to null]
1623
+ **supports_full_grafana_view** | **bool** | Whether the session supports full Grafana embedding view. This field will only be populated after the Session finishes starting. | [optional] [default to false]
1623
1624
  **persistent_metrics_url** | **str** | URL for persistent Grafana (metrics) dashboard for this Session in the non-running cluster state. This field will only be populated after the Session finishes starting. | [optional] [default to null]
1624
1625
  **connect_url** | **str** | URL for Anyscale connect for this Session. This field will only be populated after the Session finishes starting. | [optional] [default to null]
1625
1626
  **jupyter_notebook_url** | **str** | URL for Jupyter Lab for this Session. This field will only be populated after the Session finishes starting. | [optional] [default to null]
anyscale/client/README.md CHANGED
@@ -793,9 +793,12 @@ Class | Method | HTTP request | Description
793
793
  - [OperationProgress](docs/OperationProgress.md)
794
794
  - [OperationResult](docs/OperationResult.md)
795
795
  - [OperatorBranch](docs/OperatorBranch.md)
796
+ - [OperatorCheckResult](docs/OperatorCheckResult.md)
797
+ - [OperatorCheckStatus](docs/OperatorCheckStatus.md)
796
798
  - [OperatorId](docs/OperatorId.md)
797
799
  - [OperatorMetrics](docs/OperatorMetrics.md)
798
800
  - [OperatorStatus](docs/OperatorStatus.md)
801
+ - [OperatorStatusDetails](docs/OperatorStatusDetails.md)
799
802
  - [Organization](docs/Organization.md)
800
803
  - [OrganizationCollaborator](docs/OrganizationCollaborator.md)
801
804
  - [OrganizationConfiguration](docs/OrganizationConfiguration.md)
@@ -432,9 +432,12 @@ from openapi_client.models.operation_error import OperationError
432
432
  from openapi_client.models.operation_progress import OperationProgress
433
433
  from openapi_client.models.operation_result import OperationResult
434
434
  from openapi_client.models.operator_branch import OperatorBranch
435
+ from openapi_client.models.operator_check_result import OperatorCheckResult
436
+ from openapi_client.models.operator_check_status import OperatorCheckStatus
435
437
  from openapi_client.models.operator_id import OperatorId
436
438
  from openapi_client.models.operator_metrics import OperatorMetrics
437
439
  from openapi_client.models.operator_status import OperatorStatus
440
+ from openapi_client.models.operator_status_details import OperatorStatusDetails
438
441
  from openapi_client.models.organization import Organization
439
442
  from openapi_client.models.organization_collaborator import OrganizationCollaborator
440
443
  from openapi_client.models.organization_configuration import OrganizationConfiguration
@@ -418,9 +418,12 @@ from openapi_client.models.operation_error import OperationError
418
418
  from openapi_client.models.operation_progress import OperationProgress
419
419
  from openapi_client.models.operation_result import OperationResult
420
420
  from openapi_client.models.operator_branch import OperatorBranch
421
+ from openapi_client.models.operator_check_result import OperatorCheckResult
422
+ from openapi_client.models.operator_check_status import OperatorCheckStatus
421
423
  from openapi_client.models.operator_id import OperatorId
422
424
  from openapi_client.models.operator_metrics import OperatorMetrics
423
425
  from openapi_client.models.operator_status import OperatorStatus
426
+ from openapi_client.models.operator_status_details import OperatorStatusDetails
424
427
  from openapi_client.models.organization import Organization
425
428
  from openapi_client.models.organization_collaborator import OrganizationCollaborator
426
429
  from openapi_client.models.organization_configuration import OrganizationConfiguration
@@ -47,7 +47,8 @@ class DecoratedCloudResource(object):
47
47
  'kubernetes_config': 'KubernetesConfig',
48
48
  'created_at': 'datetime',
49
49
  'is_default': 'bool',
50
- 'operator_status': 'OperatorStatus'
50
+ 'operator_status': 'OperatorStatus',
51
+ 'operator_status_details': 'OperatorStatusDetails'
51
52
  }
52
53
 
53
54
  attribute_map = {
@@ -65,10 +66,11 @@ class DecoratedCloudResource(object):
65
66
  'kubernetes_config': 'kubernetes_config',
66
67
  'created_at': 'created_at',
67
68
  'is_default': 'is_default',
68
- 'operator_status': 'operator_status'
69
+ 'operator_status': 'operator_status',
70
+ 'operator_status_details': 'operator_status_details'
69
71
  }
70
72
 
71
- def __init__(self, cloud_resource_id=None, cloud_deployment_id=None, name=None, provider=None, compute_stack=None, region=None, networking_mode=None, object_storage=None, file_storage=None, aws_config=None, gcp_config=None, kubernetes_config=None, created_at=None, is_default=False, operator_status=None, local_vars_configuration=None): # noqa: E501
73
+ def __init__(self, cloud_resource_id=None, cloud_deployment_id=None, name=None, provider=None, compute_stack=None, region=None, networking_mode=None, object_storage=None, file_storage=None, aws_config=None, gcp_config=None, kubernetes_config=None, created_at=None, is_default=False, operator_status=None, operator_status_details=None, local_vars_configuration=None): # noqa: E501
72
74
  """DecoratedCloudResource - a model defined in OpenAPI""" # noqa: E501
73
75
  if local_vars_configuration is None:
74
76
  local_vars_configuration = Configuration()
@@ -89,6 +91,7 @@ class DecoratedCloudResource(object):
89
91
  self._created_at = None
90
92
  self._is_default = None
91
93
  self._operator_status = None
94
+ self._operator_status_details = None
92
95
  self.discriminator = None
93
96
 
94
97
  if cloud_resource_id is not None:
@@ -114,6 +117,7 @@ class DecoratedCloudResource(object):
114
117
  if is_default is not None:
115
118
  self.is_default = is_default
116
119
  self.operator_status = operator_status
120
+ self.operator_status_details = operator_status_details
117
121
 
118
122
  @property
119
123
  def cloud_resource_id(self):
@@ -462,6 +466,29 @@ class DecoratedCloudResource(object):
462
466
 
463
467
  self._operator_status = operator_status
464
468
 
469
+ @property
470
+ def operator_status_details(self):
471
+ """Gets the operator_status_details of this DecoratedCloudResource. # noqa: E501
472
+
473
+ The details of the operator status. # noqa: E501
474
+
475
+ :return: The operator_status_details of this DecoratedCloudResource. # noqa: E501
476
+ :rtype: OperatorStatusDetails
477
+ """
478
+ return self._operator_status_details
479
+
480
+ @operator_status_details.setter
481
+ def operator_status_details(self, operator_status_details):
482
+ """Sets the operator_status_details of this DecoratedCloudResource.
483
+
484
+ The details of the operator status. # noqa: E501
485
+
486
+ :param operator_status_details: The operator_status_details of this DecoratedCloudResource. # noqa: E501
487
+ :type: OperatorStatusDetails
488
+ """
489
+
490
+ self._operator_status_details = operator_status_details
491
+
465
492
  def to_dict(self):
466
493
  """Returns the model properties as a dict"""
467
494
  result = {}
@@ -61,6 +61,7 @@ class DecoratedSession(object):
61
61
  'serve_metrics_dashboard_url': 'str',
62
62
  'serve_deployment_metrics_dashboard_url': 'str',
63
63
  'serve_llm_metrics_dashboard_url': 'str',
64
+ 'supports_full_grafana_view': 'bool',
64
65
  'persistent_metrics_url': 'str',
65
66
  'connect_url': 'str',
66
67
  'jupyter_notebook_url': 'str',
@@ -124,6 +125,7 @@ class DecoratedSession(object):
124
125
  'serve_metrics_dashboard_url': 'serve_metrics_dashboard_url',
125
126
  'serve_deployment_metrics_dashboard_url': 'serve_deployment_metrics_dashboard_url',
126
127
  'serve_llm_metrics_dashboard_url': 'serve_llm_metrics_dashboard_url',
128
+ 'supports_full_grafana_view': 'supports_full_grafana_view',
127
129
  'persistent_metrics_url': 'persistent_metrics_url',
128
130
  'connect_url': 'connect_url',
129
131
  'jupyter_notebook_url': 'jupyter_notebook_url',
@@ -158,7 +160,7 @@ class DecoratedSession(object):
158
160
  'latest_started_at': 'latest_started_at'
159
161
  }
160
162
 
161
- def __init__(self, name=None, project_id=None, cloud_id=None, cluster_config=None, build_id=None, compute_template_id=None, idle_timeout=120, uses_app_config=False, allow_public_internet_traffic=False, user_service_access=None, user_service_token=None, ha_job_id=None, id=None, state=None, pending_state=None, state_data=None, status=None, status_details=None, creator_id=None, created_at=None, archived_at=None, webterminal_auth_url=None, metrics_dashboard_url=None, data_metrics_dashboard_url=None, train_metrics_dashboard_url=None, serve_metrics_dashboard_url=None, serve_deployment_metrics_dashboard_url=None, serve_llm_metrics_dashboard_url=None, persistent_metrics_url=None, connect_url=None, jupyter_notebook_url=None, ray_dashboard_url=None, access_token=None, service_proxy_url=None, tensorboard_available=None, cluster_config_last_modified_at=None, host_name=None, head_node_ip=None, ssh_authorized_keys=None, ssh_private_key=None, anyscaled_config=None, anyscaled_config_generated_at=None, default_build_id=None, idle_timeout_last_activity_at=None, ray_version=None, ray_version_last_updated_at=None, user_service_url=None, ray_component_activities_last_reported_at=None, activity_details=None, maximum_uptime_will_terminate_cluster_at=None, idle_termination_status=None, ray_dashboard_snapshot_last_reported_at=None, build=None, cloud=None, creator=None, compute_template=None, idle_time_remaining_seconds=None, access=None, project=None, latest_started_at=None, local_vars_configuration=None): # noqa: E501
163
+ def __init__(self, name=None, project_id=None, cloud_id=None, cluster_config=None, build_id=None, compute_template_id=None, idle_timeout=120, uses_app_config=False, allow_public_internet_traffic=False, user_service_access=None, user_service_token=None, ha_job_id=None, id=None, state=None, pending_state=None, state_data=None, status=None, status_details=None, creator_id=None, created_at=None, archived_at=None, webterminal_auth_url=None, metrics_dashboard_url=None, data_metrics_dashboard_url=None, train_metrics_dashboard_url=None, serve_metrics_dashboard_url=None, serve_deployment_metrics_dashboard_url=None, serve_llm_metrics_dashboard_url=None, supports_full_grafana_view=False, persistent_metrics_url=None, connect_url=None, jupyter_notebook_url=None, ray_dashboard_url=None, access_token=None, service_proxy_url=None, tensorboard_available=None, cluster_config_last_modified_at=None, host_name=None, head_node_ip=None, ssh_authorized_keys=None, ssh_private_key=None, anyscaled_config=None, anyscaled_config_generated_at=None, default_build_id=None, idle_timeout_last_activity_at=None, ray_version=None, ray_version_last_updated_at=None, user_service_url=None, ray_component_activities_last_reported_at=None, activity_details=None, maximum_uptime_will_terminate_cluster_at=None, idle_termination_status=None, ray_dashboard_snapshot_last_reported_at=None, build=None, cloud=None, creator=None, compute_template=None, idle_time_remaining_seconds=None, access=None, project=None, latest_started_at=None, local_vars_configuration=None): # noqa: E501
162
164
  """DecoratedSession - a model defined in OpenAPI""" # noqa: E501
163
165
  if local_vars_configuration is None:
164
166
  local_vars_configuration = Configuration()
@@ -192,6 +194,7 @@ class DecoratedSession(object):
192
194
  self._serve_metrics_dashboard_url = None
193
195
  self._serve_deployment_metrics_dashboard_url = None
194
196
  self._serve_llm_metrics_dashboard_url = None
197
+ self._supports_full_grafana_view = None
195
198
  self._persistent_metrics_url = None
196
199
  self._connect_url = None
197
200
  self._jupyter_notebook_url = None
@@ -274,6 +277,8 @@ class DecoratedSession(object):
274
277
  self.serve_deployment_metrics_dashboard_url = serve_deployment_metrics_dashboard_url
275
278
  if serve_llm_metrics_dashboard_url is not None:
276
279
  self.serve_llm_metrics_dashboard_url = serve_llm_metrics_dashboard_url
280
+ if supports_full_grafana_view is not None:
281
+ self.supports_full_grafana_view = supports_full_grafana_view
277
282
  if persistent_metrics_url is not None:
278
283
  self.persistent_metrics_url = persistent_metrics_url
279
284
  if connect_url is not None:
@@ -992,6 +997,29 @@ class DecoratedSession(object):
992
997
 
993
998
  self._serve_llm_metrics_dashboard_url = serve_llm_metrics_dashboard_url
994
999
 
1000
+ @property
1001
+ def supports_full_grafana_view(self):
1002
+ """Gets the supports_full_grafana_view of this DecoratedSession. # noqa: E501
1003
+
1004
+ Whether the session supports full Grafana embedding view. This field will only be populated after the Session finishes starting. # noqa: E501
1005
+
1006
+ :return: The supports_full_grafana_view of this DecoratedSession. # noqa: E501
1007
+ :rtype: bool
1008
+ """
1009
+ return self._supports_full_grafana_view
1010
+
1011
+ @supports_full_grafana_view.setter
1012
+ def supports_full_grafana_view(self, supports_full_grafana_view):
1013
+ """Sets the supports_full_grafana_view of this DecoratedSession.
1014
+
1015
+ Whether the session supports full Grafana embedding view. This field will only be populated after the Session finishes starting. # noqa: E501
1016
+
1017
+ :param supports_full_grafana_view: The supports_full_grafana_view of this DecoratedSession. # noqa: E501
1018
+ :type: bool
1019
+ """
1020
+
1021
+ self._supports_full_grafana_view = supports_full_grafana_view
1022
+
995
1023
  @property
996
1024
  def persistent_metrics_url(self):
997
1025
  """Gets the persistent_metrics_url of this DecoratedSession. # noqa: E501
@@ -0,0 +1,177 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Managed Ray API
5
+
6
+ No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
7
+
8
+ The version of the OpenAPI document: 0.1.0
9
+ Generated by: https://openapi-generator.tech
10
+ """
11
+
12
+
13
+ import pprint
14
+ import re # noqa: F401
15
+
16
+ import six
17
+
18
+ from openapi_client.configuration import Configuration
19
+
20
+
21
+ class OperatorCheckResult(object):
22
+ """NOTE: This class is auto generated by OpenAPI Generator.
23
+ Ref: https://openapi-generator.tech
24
+
25
+ Do not edit the class manually.
26
+ """
27
+
28
+ """
29
+ Attributes:
30
+ openapi_types (dict): The key is attribute name
31
+ and the value is attribute type.
32
+ attribute_map (dict): The key is attribute name
33
+ and the value is json key in definition.
34
+ """
35
+ openapi_types = {
36
+ 'name': 'str',
37
+ 'status': 'OperatorCheckStatus',
38
+ 'details': 'str'
39
+ }
40
+
41
+ attribute_map = {
42
+ 'name': 'name',
43
+ 'status': 'status',
44
+ 'details': 'details'
45
+ }
46
+
47
+ def __init__(self, name=None, status=None, details=None, local_vars_configuration=None): # noqa: E501
48
+ """OperatorCheckResult - a model defined in OpenAPI""" # noqa: E501
49
+ if local_vars_configuration is None:
50
+ local_vars_configuration = Configuration()
51
+ self.local_vars_configuration = local_vars_configuration
52
+
53
+ self._name = None
54
+ self._status = None
55
+ self._details = None
56
+ self.discriminator = None
57
+
58
+ if name is not None:
59
+ self.name = name
60
+ if status is not None:
61
+ self.status = status
62
+ self.details = details
63
+
64
+ @property
65
+ def name(self):
66
+ """Gets the name of this OperatorCheckResult. # noqa: E501
67
+
68
+ The name of the operator check. # noqa: E501
69
+
70
+ :return: The name of this OperatorCheckResult. # noqa: E501
71
+ :rtype: str
72
+ """
73
+ return self._name
74
+
75
+ @name.setter
76
+ def name(self, name):
77
+ """Sets the name of this OperatorCheckResult.
78
+
79
+ The name of the operator check. # noqa: E501
80
+
81
+ :param name: The name of this OperatorCheckResult. # noqa: E501
82
+ :type: str
83
+ """
84
+
85
+ self._name = name
86
+
87
+ @property
88
+ def status(self):
89
+ """Gets the status of this OperatorCheckResult. # noqa: E501
90
+
91
+ The status of the operator check. # noqa: E501
92
+
93
+ :return: The status of this OperatorCheckResult. # noqa: E501
94
+ :rtype: OperatorCheckStatus
95
+ """
96
+ return self._status
97
+
98
+ @status.setter
99
+ def status(self, status):
100
+ """Sets the status of this OperatorCheckResult.
101
+
102
+ The status of the operator check. # noqa: E501
103
+
104
+ :param status: The status of this OperatorCheckResult. # noqa: E501
105
+ :type: OperatorCheckStatus
106
+ """
107
+
108
+ self._status = status
109
+
110
+ @property
111
+ def details(self):
112
+ """Gets the details of this OperatorCheckResult. # noqa: E501
113
+
114
+ The details of the operator check. # noqa: E501
115
+
116
+ :return: The details of this OperatorCheckResult. # noqa: E501
117
+ :rtype: str
118
+ """
119
+ return self._details
120
+
121
+ @details.setter
122
+ def details(self, details):
123
+ """Sets the details of this OperatorCheckResult.
124
+
125
+ The details of the operator check. # noqa: E501
126
+
127
+ :param details: The details of this OperatorCheckResult. # noqa: E501
128
+ :type: str
129
+ """
130
+
131
+ self._details = details
132
+
133
+ def to_dict(self):
134
+ """Returns the model properties as a dict"""
135
+ result = {}
136
+
137
+ for attr, _ in six.iteritems(self.openapi_types):
138
+ value = getattr(self, attr)
139
+ if isinstance(value, list):
140
+ result[attr] = list(map(
141
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
142
+ value
143
+ ))
144
+ elif hasattr(value, "to_dict"):
145
+ result[attr] = value.to_dict()
146
+ elif isinstance(value, dict):
147
+ result[attr] = dict(map(
148
+ lambda item: (item[0], item[1].to_dict())
149
+ if hasattr(item[1], "to_dict") else item,
150
+ value.items()
151
+ ))
152
+ else:
153
+ result[attr] = value
154
+
155
+ return result
156
+
157
+ def to_str(self):
158
+ """Returns the string representation of the model"""
159
+ return pprint.pformat(self.to_dict())
160
+
161
+ def __repr__(self):
162
+ """For `print` and `pprint`"""
163
+ return self.to_str()
164
+
165
+ def __eq__(self, other):
166
+ """Returns true if both objects are equal"""
167
+ if not isinstance(other, OperatorCheckResult):
168
+ return False
169
+
170
+ return self.to_dict() == other.to_dict()
171
+
172
+ def __ne__(self, other):
173
+ """Returns true if both objects are not equal"""
174
+ if not isinstance(other, OperatorCheckResult):
175
+ return True
176
+
177
+ return self.to_dict() != other.to_dict()
@@ -0,0 +1,102 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Managed Ray API
5
+
6
+ No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
7
+
8
+ The version of the OpenAPI document: 0.1.0
9
+ Generated by: https://openapi-generator.tech
10
+ """
11
+
12
+
13
+ import pprint
14
+ import re # noqa: F401
15
+
16
+ import six
17
+
18
+ from openapi_client.configuration import Configuration
19
+
20
+
21
+ class OperatorCheckStatus(object):
22
+ """NOTE: This class is auto generated by OpenAPI Generator.
23
+ Ref: https://openapi-generator.tech
24
+
25
+ Do not edit the class manually.
26
+ """
27
+
28
+ """
29
+ allowed enum values
30
+ """
31
+ UNSPECIFIED = "UNSPECIFIED"
32
+ HEALTHY = "HEALTHY"
33
+ UNHEALTHY = "UNHEALTHY"
34
+ WARNING = "WARNING"
35
+
36
+ allowable_values = [UNSPECIFIED, HEALTHY, UNHEALTHY, WARNING] # noqa: E501
37
+
38
+ """
39
+ Attributes:
40
+ openapi_types (dict): The key is attribute name
41
+ and the value is attribute type.
42
+ attribute_map (dict): The key is attribute name
43
+ and the value is json key in definition.
44
+ """
45
+ openapi_types = {
46
+ }
47
+
48
+ attribute_map = {
49
+ }
50
+
51
+ def __init__(self, local_vars_configuration=None): # noqa: E501
52
+ """OperatorCheckStatus - a model defined in OpenAPI""" # noqa: E501
53
+ if local_vars_configuration is None:
54
+ local_vars_configuration = Configuration()
55
+ self.local_vars_configuration = local_vars_configuration
56
+ self.discriminator = None
57
+
58
+ def to_dict(self):
59
+ """Returns the model properties as a dict"""
60
+ result = {}
61
+
62
+ for attr, _ in six.iteritems(self.openapi_types):
63
+ value = getattr(self, attr)
64
+ if isinstance(value, list):
65
+ result[attr] = list(map(
66
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
67
+ value
68
+ ))
69
+ elif hasattr(value, "to_dict"):
70
+ result[attr] = value.to_dict()
71
+ elif isinstance(value, dict):
72
+ result[attr] = dict(map(
73
+ lambda item: (item[0], item[1].to_dict())
74
+ if hasattr(item[1], "to_dict") else item,
75
+ value.items()
76
+ ))
77
+ else:
78
+ result[attr] = value
79
+
80
+ return result
81
+
82
+ def to_str(self):
83
+ """Returns the string representation of the model"""
84
+ return pprint.pformat(self.to_dict())
85
+
86
+ def __repr__(self):
87
+ """For `print` and `pprint`"""
88
+ return self.to_str()
89
+
90
+ def __eq__(self, other):
91
+ """Returns true if both objects are equal"""
92
+ if not isinstance(other, OperatorCheckStatus):
93
+ return False
94
+
95
+ return self.to_dict() == other.to_dict()
96
+
97
+ def __ne__(self, other):
98
+ """Returns true if both objects are not equal"""
99
+ if not isinstance(other, OperatorCheckStatus):
100
+ return True
101
+
102
+ return self.to_dict() != other.to_dict()
@@ -28,10 +28,10 @@ class OperatorStatus(object):
28
28
  """
29
29
  allowed enum values
30
30
  """
31
- UNSPECIFIED = "OPERATOR_STATUS_UNSPECIFIED"
32
- HEALTHY = "OPERATOR_STATUS_HEALTHY"
33
- UNHEALTHY = "OPERATOR_STATUS_UNHEALTHY"
34
- DISCONNECTED = "OPERATOR_STATUS_DISCONNECTED"
31
+ UNSPECIFIED = "UNSPECIFIED"
32
+ HEALTHY = "HEALTHY"
33
+ UNHEALTHY = "UNHEALTHY"
34
+ DISCONNECTED = "DISCONNECTED"
35
35
 
36
36
  allowable_values = [UNSPECIFIED, HEALTHY, UNHEALTHY, DISCONNECTED] # noqa: E501
37
37
 
@@ -0,0 +1,178 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Managed Ray API
5
+
6
+ No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
7
+
8
+ The version of the OpenAPI document: 0.1.0
9
+ Generated by: https://openapi-generator.tech
10
+ """
11
+
12
+
13
+ import pprint
14
+ import re # noqa: F401
15
+
16
+ import six
17
+
18
+ from openapi_client.configuration import Configuration
19
+
20
+
21
+ class OperatorStatusDetails(object):
22
+ """NOTE: This class is auto generated by OpenAPI Generator.
23
+ Ref: https://openapi-generator.tech
24
+
25
+ Do not edit the class manually.
26
+ """
27
+
28
+ """
29
+ Attributes:
30
+ openapi_types (dict): The key is attribute name
31
+ and the value is attribute type.
32
+ attribute_map (dict): The key is attribute name
33
+ and the value is json key in definition.
34
+ """
35
+ openapi_types = {
36
+ 'operator_version': 'str',
37
+ 'check_results': 'list[OperatorCheckResult]',
38
+ 'reported_at': 'datetime'
39
+ }
40
+
41
+ attribute_map = {
42
+ 'operator_version': 'operator_version',
43
+ 'check_results': 'check_results',
44
+ 'reported_at': 'reported_at'
45
+ }
46
+
47
+ def __init__(self, operator_version=None, check_results=None, reported_at=None, local_vars_configuration=None): # noqa: E501
48
+ """OperatorStatusDetails - a model defined in OpenAPI""" # noqa: E501
49
+ if local_vars_configuration is None:
50
+ local_vars_configuration = Configuration()
51
+ self.local_vars_configuration = local_vars_configuration
52
+
53
+ self._operator_version = None
54
+ self._check_results = None
55
+ self._reported_at = None
56
+ self.discriminator = None
57
+
58
+ if operator_version is not None:
59
+ self.operator_version = operator_version
60
+ if check_results is not None:
61
+ self.check_results = check_results
62
+ if reported_at is not None:
63
+ self.reported_at = reported_at
64
+
65
+ @property
66
+ def operator_version(self):
67
+ """Gets the operator_version of this OperatorStatusDetails. # noqa: E501
68
+
69
+ The version of the Anyscale Operator. # noqa: E501
70
+
71
+ :return: The operator_version of this OperatorStatusDetails. # noqa: E501
72
+ :rtype: str
73
+ """
74
+ return self._operator_version
75
+
76
+ @operator_version.setter
77
+ def operator_version(self, operator_version):
78
+ """Sets the operator_version of this OperatorStatusDetails.
79
+
80
+ The version of the Anyscale Operator. # noqa: E501
81
+
82
+ :param operator_version: The operator_version of this OperatorStatusDetails. # noqa: E501
83
+ :type: str
84
+ """
85
+
86
+ self._operator_version = operator_version
87
+
88
+ @property
89
+ def check_results(self):
90
+ """Gets the check_results of this OperatorStatusDetails. # noqa: E501
91
+
92
+ The results of the operator checks. # noqa: E501
93
+
94
+ :return: The check_results of this OperatorStatusDetails. # noqa: E501
95
+ :rtype: list[OperatorCheckResult]
96
+ """
97
+ return self._check_results
98
+
99
+ @check_results.setter
100
+ def check_results(self, check_results):
101
+ """Sets the check_results of this OperatorStatusDetails.
102
+
103
+ The results of the operator checks. # noqa: E501
104
+
105
+ :param check_results: The check_results of this OperatorStatusDetails. # noqa: E501
106
+ :type: list[OperatorCheckResult]
107
+ """
108
+
109
+ self._check_results = check_results
110
+
111
+ @property
112
+ def reported_at(self):
113
+ """Gets the reported_at of this OperatorStatusDetails. # noqa: E501
114
+
115
+ The timestamp when the operator status was last reported. # noqa: E501
116
+
117
+ :return: The reported_at of this OperatorStatusDetails. # noqa: E501
118
+ :rtype: datetime
119
+ """
120
+ return self._reported_at
121
+
122
+ @reported_at.setter
123
+ def reported_at(self, reported_at):
124
+ """Sets the reported_at of this OperatorStatusDetails.
125
+
126
+ The timestamp when the operator status was last reported. # noqa: E501
127
+
128
+ :param reported_at: The reported_at of this OperatorStatusDetails. # noqa: E501
129
+ :type: datetime
130
+ """
131
+
132
+ self._reported_at = reported_at
133
+
134
+ def to_dict(self):
135
+ """Returns the model properties as a dict"""
136
+ result = {}
137
+
138
+ for attr, _ in six.iteritems(self.openapi_types):
139
+ value = getattr(self, attr)
140
+ if isinstance(value, list):
141
+ result[attr] = list(map(
142
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
143
+ value
144
+ ))
145
+ elif hasattr(value, "to_dict"):
146
+ result[attr] = value.to_dict()
147
+ elif isinstance(value, dict):
148
+ result[attr] = dict(map(
149
+ lambda item: (item[0], item[1].to_dict())
150
+ if hasattr(item[1], "to_dict") else item,
151
+ value.items()
152
+ ))
153
+ else:
154
+ result[attr] = value
155
+
156
+ return result
157
+
158
+ def to_str(self):
159
+ """Returns the string representation of the model"""
160
+ return pprint.pformat(self.to_dict())
161
+
162
+ def __repr__(self):
163
+ """For `print` and `pprint`"""
164
+ return self.to_str()
165
+
166
+ def __eq__(self, other):
167
+ """Returns true if both objects are equal"""
168
+ if not isinstance(other, OperatorStatusDetails):
169
+ return False
170
+
171
+ return self.to_dict() == other.to_dict()
172
+
173
+ def __ne__(self, other):
174
+ """Returns true if both objects are not equal"""
175
+ if not isinstance(other, OperatorStatusDetails):
176
+ return True
177
+
178
+ return self.to_dict() != other.to_dict()
@@ -50,6 +50,8 @@ S3_ARN_PREFIX = "arn:aws:s3:::"
50
50
  S3_STORAGE_PREFIX = "s3://"
51
51
  GCS_STORAGE_PREFIX = "gs://"
52
52
 
53
+ HTTPS_INGRESS_PORT = 443
54
+
53
55
 
54
56
  def compare_dicts_diff(d1: Dict[Any, Any], d2: Dict[Any, Any]) -> str:
55
57
  """Returns a string representation of the difference of the two dictionaries.
@@ -480,8 +482,6 @@ def verify_aws_security_groups( # noqa: PLR0912, PLR0911
480
482
  raise e
481
483
  anyscale_security_groups.append(anyscale_security_group)
482
484
 
483
- expected_open_ports = [443, 22] # 443 is for HTTPS ingress, 22 is for SSH
484
-
485
485
  inbound_ip_permissions = [
486
486
  ip_permission
487
487
  for anyscale_security_group in anyscale_security_groups
@@ -499,20 +499,20 @@ def verify_aws_security_groups( # noqa: PLR0912, PLR0911
499
499
  }
500
500
 
501
501
  # Check inbound permissions
502
- missing_open_ports = []
503
- for port in expected_open_ports:
504
- if not any(
505
- inbound_ip_permission_port == port
506
- for inbound_ip_permission_port in inbound_ip_permissions_with_specific_port
507
- ):
508
- missing_open_ports.append(port)
509
- if missing_open_ports:
502
+ if not any(
503
+ inbound_ip_permission_port == HTTPS_INGRESS_PORT
504
+ for inbound_ip_permission_port in inbound_ip_permissions_with_specific_port
505
+ ):
510
506
  logger.warning(
511
- f"Security groups {aws_security_group_ids} do not contain inbound permission for ports: {missing_open_ports}. These ports are used for interaction with the clusters from Anyscale UI. Please make sure to configure them according to https://docs.anyscale.com/cloud-deployment/aws/manage-clouds#appendix-detailed-resource-requirements"
507
+ f"Security groups {aws_security_group_ids} do not contain inbound permission for port {HTTPS_INGRESS_PORT}. This port is used for interaction with the clusters from Anyscale UI."
512
508
  )
513
509
  if strict:
514
510
  return False
515
511
 
512
+ expected_open_ports = [
513
+ HTTPS_INGRESS_PORT,
514
+ 22,
515
+ ] # 22 was previously used for SSH but is no longer required.
516
516
  if len(inbound_ip_permissions_with_specific_port) > len(expected_open_ports):
517
517
  logger.warning(
518
518
  f"Security groups {aws_security_group_ids} allows access to more than {expected_open_ports}. This may not be safe by default."
@@ -31,10 +31,10 @@ from anyscale.service.models import (
31
31
  ServiceConfig,
32
32
  ServiceLogMode,
33
33
  ServiceSortField,
34
+ ServiceSortOrder,
34
35
  ServiceState,
35
36
  ServiceStatus,
36
37
  ServiceVersionStatus,
37
- SortOrder,
38
38
  )
39
39
  from anyscale.util import (
40
40
  AnyscaleJSONEncoder,
@@ -658,13 +658,13 @@ def validate_max_items(ctx, param, value):
658
658
  return validate_non_negative_arg(ctx, param, value)
659
659
 
660
660
 
661
- def _parse_sort_option(sort: Optional[str],) -> Tuple[Optional[str], SortOrder]:
661
+ def _parse_sort_option(sort: Optional[str],) -> Tuple[Optional[str], ServiceSortOrder]:
662
662
  """
663
663
  Given a raw sort string (e.g. "-created_at"), return
664
664
  (canonical_field_name, SortOrder).
665
665
  """
666
666
  if not sort:
667
- return None, SortOrder.ASC
667
+ return None, ServiceSortOrder.ASC
668
668
 
669
669
  # build case-insensitive map of allowed fields
670
670
  allowed = {f.value.lower(): f.value for f in ServiceSortField.__members__.values()}
@@ -672,10 +672,10 @@ def _parse_sort_option(sort: Optional[str],) -> Tuple[Optional[str], SortOrder]:
672
672
  # detect leading '-' for descending
673
673
  if sort.startswith("-"):
674
674
  raw = sort[1:]
675
- order = SortOrder.DESC
675
+ order = ServiceSortOrder.DESC
676
676
  else:
677
677
  raw = sort
678
- order = SortOrder.ASC
678
+ order = ServiceSortOrder.ASC
679
679
 
680
680
  key = raw.lower()
681
681
  if key not in allowed:
@@ -726,7 +726,10 @@ def _format_service_output_data(svc: ServiceStatus) -> Dict[str, str]:
726
726
 
727
727
 
728
728
  @service_cli.command(
729
- name="list", help="List services.", cls=AnyscaleCommand,
729
+ name="list",
730
+ help="List services.",
731
+ cls=AnyscaleCommand,
732
+ example=command_examples.SERVICE_LIST_EXAMPLE,
730
733
  )
731
734
  @click.option("--service-id", "--id", help="ID of the service to display.")
732
735
  @click.option("--name", "-n", help="Name of the service to display.")
@@ -979,7 +982,7 @@ def terminate(
979
982
  anyscale.service.terminate(id=service_id)
980
983
  log.info(f"Service {service_id} terminate initiated.")
981
984
  log.info(
982
- f'View the service in the UI at {get_endpoint(f"/services/{service_id}")}'
985
+ f"View the service in the UI at {get_endpoint(f'/services/{service_id}')}"
983
986
  )
984
987
  except Exception as e: # noqa: BLE001
985
988
  log.error(f"Error terminating service: {e}")
@@ -119,7 +119,6 @@ class StartInteractiveSessionBlock:
119
119
  python_version=self.connection_info.get("python_version"),
120
120
  ray_version=self.connection_info.get("ray_version"),
121
121
  ray_commit=self.connection_info.get("ray_commit"),
122
- protocol_version=self.connection_info.get("protocol_version"),
123
122
  _num_clients=self.connection_info.get("num_clients"),
124
123
  )
125
124
  self.log.info(
@@ -61,6 +61,7 @@ class Session(object):
61
61
  'serve_metrics_dashboard_url': 'str',
62
62
  'serve_deployment_metrics_dashboard_url': 'str',
63
63
  'serve_llm_metrics_dashboard_url': 'str',
64
+ 'supports_full_grafana_view': 'bool',
64
65
  'persistent_metrics_url': 'str',
65
66
  'connect_url': 'str',
66
67
  'jupyter_notebook_url': 'str',
@@ -116,6 +117,7 @@ class Session(object):
116
117
  'serve_metrics_dashboard_url': 'serve_metrics_dashboard_url',
117
118
  'serve_deployment_metrics_dashboard_url': 'serve_deployment_metrics_dashboard_url',
118
119
  'serve_llm_metrics_dashboard_url': 'serve_llm_metrics_dashboard_url',
120
+ 'supports_full_grafana_view': 'supports_full_grafana_view',
119
121
  'persistent_metrics_url': 'persistent_metrics_url',
120
122
  'connect_url': 'connect_url',
121
123
  'jupyter_notebook_url': 'jupyter_notebook_url',
@@ -142,7 +144,7 @@ class Session(object):
142
144
  'ray_dashboard_snapshot_last_reported_at': 'ray_dashboard_snapshot_last_reported_at'
143
145
  }
144
146
 
145
- def __init__(self, name=None, project_id=None, cloud_id=None, cluster_config=None, build_id=None, compute_template_id=None, idle_timeout=120, uses_app_config=False, allow_public_internet_traffic=False, user_service_access=None, user_service_token=None, ha_job_id=None, id=None, state=None, pending_state=None, state_data=None, status=None, status_details=None, creator_id=None, created_at=None, archived_at=None, webterminal_auth_url=None, metrics_dashboard_url=None, data_metrics_dashboard_url=None, train_metrics_dashboard_url=None, serve_metrics_dashboard_url=None, serve_deployment_metrics_dashboard_url=None, serve_llm_metrics_dashboard_url=None, persistent_metrics_url=None, connect_url=None, jupyter_notebook_url=None, ray_dashboard_url=None, access_token=None, service_proxy_url=None, tensorboard_available=None, cluster_config_last_modified_at=None, host_name=None, head_node_ip=None, ssh_authorized_keys=None, ssh_private_key=None, anyscaled_config=None, anyscaled_config_generated_at=None, default_build_id=None, idle_timeout_last_activity_at=None, ray_version=None, ray_version_last_updated_at=None, user_service_url=None, ray_component_activities_last_reported_at=None, activity_details=None, maximum_uptime_will_terminate_cluster_at=None, idle_termination_status=None, ray_dashboard_snapshot_last_reported_at=None, local_vars_configuration=None): # noqa: E501
147
+ def __init__(self, name=None, project_id=None, cloud_id=None, cluster_config=None, build_id=None, compute_template_id=None, idle_timeout=120, uses_app_config=False, allow_public_internet_traffic=False, user_service_access=None, user_service_token=None, ha_job_id=None, id=None, state=None, pending_state=None, state_data=None, status=None, status_details=None, creator_id=None, created_at=None, archived_at=None, webterminal_auth_url=None, metrics_dashboard_url=None, data_metrics_dashboard_url=None, train_metrics_dashboard_url=None, serve_metrics_dashboard_url=None, serve_deployment_metrics_dashboard_url=None, serve_llm_metrics_dashboard_url=None, supports_full_grafana_view=False, persistent_metrics_url=None, connect_url=None, jupyter_notebook_url=None, ray_dashboard_url=None, access_token=None, service_proxy_url=None, tensorboard_available=None, cluster_config_last_modified_at=None, host_name=None, head_node_ip=None, ssh_authorized_keys=None, ssh_private_key=None, anyscaled_config=None, anyscaled_config_generated_at=None, default_build_id=None, idle_timeout_last_activity_at=None, ray_version=None, ray_version_last_updated_at=None, user_service_url=None, ray_component_activities_last_reported_at=None, activity_details=None, maximum_uptime_will_terminate_cluster_at=None, idle_termination_status=None, ray_dashboard_snapshot_last_reported_at=None, local_vars_configuration=None): # noqa: E501
146
148
  """Session - a model defined in OpenAPI""" # noqa: E501
147
149
  if local_vars_configuration is None:
148
150
  local_vars_configuration = Configuration()
@@ -176,6 +178,7 @@ class Session(object):
176
178
  self._serve_metrics_dashboard_url = None
177
179
  self._serve_deployment_metrics_dashboard_url = None
178
180
  self._serve_llm_metrics_dashboard_url = None
181
+ self._supports_full_grafana_view = None
179
182
  self._persistent_metrics_url = None
180
183
  self._connect_url = None
181
184
  self._jupyter_notebook_url = None
@@ -250,6 +253,8 @@ class Session(object):
250
253
  self.serve_deployment_metrics_dashboard_url = serve_deployment_metrics_dashboard_url
251
254
  if serve_llm_metrics_dashboard_url is not None:
252
255
  self.serve_llm_metrics_dashboard_url = serve_llm_metrics_dashboard_url
256
+ if supports_full_grafana_view is not None:
257
+ self.supports_full_grafana_view = supports_full_grafana_view
253
258
  if persistent_metrics_url is not None:
254
259
  self.persistent_metrics_url = persistent_metrics_url
255
260
  if connect_url is not None:
@@ -954,6 +959,29 @@ class Session(object):
954
959
 
955
960
  self._serve_llm_metrics_dashboard_url = serve_llm_metrics_dashboard_url
956
961
 
962
+ @property
963
+ def supports_full_grafana_view(self):
964
+ """Gets the supports_full_grafana_view of this Session. # noqa: E501
965
+
966
+ Whether the session supports full Grafana embedding view. This field will only be populated after the Session finishes starting. # noqa: E501
967
+
968
+ :return: The supports_full_grafana_view of this Session. # noqa: E501
969
+ :rtype: bool
970
+ """
971
+ return self._supports_full_grafana_view
972
+
973
+ @supports_full_grafana_view.setter
974
+ def supports_full_grafana_view(self, supports_full_grafana_view):
975
+ """Sets the supports_full_grafana_view of this Session.
976
+
977
+ Whether the session supports full Grafana embedding view. This field will only be populated after the Session finishes starting. # noqa: E501
978
+
979
+ :param supports_full_grafana_view: The supports_full_grafana_view of this Session. # noqa: E501
980
+ :type: bool
981
+ """
982
+
983
+ self._supports_full_grafana_view = supports_full_grafana_view
984
+
957
985
  @property
958
986
  def persistent_metrics_url(self):
959
987
  """Gets the persistent_metrics_url of this Session. # noqa: E501
@@ -39,9 +39,9 @@ from anyscale.service.models import (
39
39
  ServiceConfig,
40
40
  ServiceLogMode,
41
41
  ServiceSortField,
42
+ ServiceSortOrder,
42
43
  ServiceState,
43
44
  ServiceStatus,
44
- SortOrder,
45
45
  )
46
46
 
47
47
 
@@ -162,6 +162,9 @@ class ServiceSDK:
162
162
  """
163
163
  return self._private_sdk.delete(id=id, name=name, cloud=cloud, project=project)
164
164
 
165
+ @sdk_docs(
166
+ doc_py_example=_LIST_EXAMPLE, arg_docstrings=_LIST_ARG_DOCSTRINGS,
167
+ )
165
168
  def list( # noqa: F811, A001
166
169
  self,
167
170
  *,
@@ -179,7 +182,7 @@ class ServiceSDK:
179
182
  page_size: Optional[int] = None,
180
183
  # Sorting
181
184
  sort_field: Optional[Union[str, ServiceSortField]] = None,
182
- sort_order: Optional[Union[str, SortOrder]] = None,
185
+ sort_order: Optional[Union[str, ServiceSortOrder]] = None,
183
186
  ) -> ResultIterator[ServiceStatus]:
184
187
  """List services.
185
188
 
@@ -24,13 +24,13 @@ from anyscale.sdk.anyscale_client.models import (
24
24
  ServiceConfig as ExternalAPIServiceConfig,
25
25
  ServiceEventCurrentState,
26
26
  ServiceSortField,
27
- SortOrder,
28
27
  TracingConfig as APITracingConfg,
29
28
  )
30
29
  from anyscale.service.models import (
31
30
  RayGCSExternalStorageConfig,
32
31
  ServiceConfig,
33
32
  ServiceLogMode,
33
+ ServiceSortOrder,
34
34
  ServiceState,
35
35
  ServiceStatus,
36
36
  ServiceVersionStatus,
@@ -252,7 +252,9 @@ class PrivateServiceSDK(WorkloadSDK):
252
252
  "are ignored when performing an in_place update."
253
253
  )
254
254
 
255
- existing_config: ProductionServiceV2VersionModel = existing_service.primary_version
255
+ existing_config: ProductionServiceV2VersionModel = (
256
+ existing_service.primary_version
257
+ )
256
258
  query_auth_token_enabled = existing_service.auth_token is not None
257
259
  cloud_id = self.client.get_cloud_id(
258
260
  compute_config_id=existing_config.compute_config_id
@@ -437,10 +439,10 @@ class PrivateServiceSDK(WorkloadSDK):
437
439
  raise ValueError("max_surge_percent must be between 0 and 100.")
438
440
 
439
441
  name = config.name or self._get_default_name()
440
- existing_service: Optional[
441
- DecoratedProductionServiceV2APIModel
442
- ] = self.client.get_service(
443
- name=name, cloud=config.cloud, project=config.project
442
+ existing_service: Optional[DecoratedProductionServiceV2APIModel] = (
443
+ self.client.get_service(
444
+ name=name, cloud=config.cloud, project=config.project
445
+ )
444
446
  )
445
447
  if existing_service is None:
446
448
  self.logger.info(f"Starting new service '{name}'.")
@@ -585,7 +587,6 @@ class PrivateServiceSDK(WorkloadSDK):
585
587
  project_id: str,
586
588
  query_auth_token_enabled: bool,
587
589
  ) -> ServiceVersionStatus:
588
-
589
590
  image_uri, image_build, project, compute_config = await asyncio.gather(
590
591
  asyncio.to_thread(
591
592
  self._image_sdk.get_image_uri_from_build_id, model.build_id
@@ -734,9 +735,8 @@ class PrivateServiceSDK(WorkloadSDK):
734
735
  page_size: Optional[int] = None, # Controls items fetched per API call
735
736
  # Sorting
736
737
  sort_field: Optional[Union[str, ServiceSortField]] = None,
737
- sort_order: Optional[Union[str, SortOrder]] = None,
738
+ sort_order: Optional[Union[str, ServiceSortOrder]] = None,
738
739
  ) -> ResultIterator[ServiceStatus]:
739
-
740
740
  if page_size is not None and (page_size <= 0 or page_size > MAX_PAGE_SIZE):
741
741
  raise ValueError(
742
742
  f"page_size must be between 1 and {MAX_PAGE_SIZE}, inclusive."
@@ -875,7 +875,7 @@ class PrivateServiceSDK(WorkloadSDK):
875
875
 
876
876
 
877
877
  def _normalize_state_filter(
878
- states: Optional[Union[List[ServiceState], List[str]]]
878
+ states: Optional[Union[List[ServiceState], List[str]]],
879
879
  ) -> Optional[List[str]]:
880
880
  if states is None:
881
881
  return None
@@ -7,9 +7,9 @@ from anyscale.service.models import (
7
7
  ServiceConfig,
8
8
  ServiceLogMode,
9
9
  ServiceSortField,
10
+ ServiceSortOrder,
10
11
  ServiceState,
11
12
  ServiceStatus,
12
- SortOrder,
13
13
  )
14
14
 
15
15
 
@@ -371,6 +371,7 @@ _LIST_ARG_DOCSTRINGS = {
371
371
  "sort_order": "Sort direction (`ASC` or `DESC`).",
372
372
  }
373
373
 
374
+
374
375
  # Public command
375
376
  @sdk_command(
376
377
  _SERVICE_SDK_SINGLETON_KEY,
@@ -394,7 +395,7 @@ def list( # noqa: A001
394
395
  page_size: Optional[int] = None,
395
396
  # Sorting
396
397
  sort_field: Optional[Union[str, ServiceSortField]] = None,
397
- sort_order: Optional[Union[str, SortOrder]] = None,
398
+ sort_order: Optional[Union[str, ServiceSortOrder]] = None,
398
399
  # Injected SDK
399
400
  _private_sdk: Optional[PrivateServiceSDK] = None,
400
401
  ) -> ResultIterator[ServiceStatus]:
@@ -724,7 +724,7 @@ class ServiceModel(ModelBase):
724
724
  state: ServiceState = field(metadata={"docstring": "Current state of the service."})
725
725
 
726
726
 
727
- class SortOrder(ModelEnum):
727
+ class ServiceSortOrder(ModelEnum):
728
728
  """Enum for sort order directions."""
729
729
 
730
730
  ASC = "ASC"
anyscale/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.26.55"
1
+ __version__ = "0.26.57"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: anyscale
3
- Version: 0.26.55
3
+ Version: 0.26.57
4
4
  Summary: Command Line Interface for Anyscale
5
5
  Author: Anyscale Inc.
6
6
  License: AS License
@@ -8,7 +8,7 @@ anyscale/api.py,sha256=HAZZg8zWLTkMgHkIeJys-9xKvFqzBVONRUeI6MQDhSA,8271
8
8
  anyscale/authenticate.py,sha256=4RiJ1Ruu-JKENwuMkWqq1R19DXxucVPS-GoKlii1fLI,12346
9
9
  anyscale/aws_iam_policies.py,sha256=KEPS8JC_6fdRAXWMDVX5mlcI7Ab2agdx5wM2IW8-jqw,16543
10
10
  anyscale/cli_logger.py,sha256=sw-sjcXPIlRWT6LCC0nhHcr53VEJba579P8mbOFTJ6k,12545
11
- anyscale/cloud_resource.py,sha256=laXDB0mCvSas6u9WYgmuQ1tbzNlL91Bi4jKNZwY0Txk,39196
11
+ anyscale/cloud_resource.py,sha256=V7qgaJ3UTwg3IhQbQ3WfQVhCucjHsc6tJTIZ2cuOp34,38985
12
12
  anyscale/cloud_utils.py,sha256=R12leVFphO_DSCK54ZpDPRIcMSYSeWtCXoJbXwvvcug,8138
13
13
  anyscale/cluster.py,sha256=SmSoZSGpRljOA4SWK1VcFtGXLRD11ZwP0VjgGaiaSwY,6582
14
14
  anyscale/cluster_compute.py,sha256=RvlJMO_fXsoMn0bBz-3DbBI1iBjQ83srQp4J7XcAynQ,6213
@@ -28,7 +28,7 @@ anyscale/snapshot.py,sha256=UGJT5C1s_4xmQxjWODK5DFpGxHRBX5jOCdSCqXESH8E,1685
28
28
  anyscale/tables.py,sha256=TV4F2uLnwehvbkAfaP7iuLlT2wLIo6ORH2LVdRGXW5g,2840
29
29
  anyscale/telemetry.py,sha256=U90C2Vgx48z9PMTI6EbzHFbP3jWnDUutbIfMPBb8-SI,14711
30
30
  anyscale/util.py,sha256=7YPUcm1KCWnmwQpgO0iy0Ly3kSKEAdsCI2jmFridKH0,42881
31
- anyscale/version.py,sha256=Q91RXdcQACvk1n5hluPOYNf8C1ugDnw4_PqOP-z1lsI,24
31
+ anyscale/version.py,sha256=-yDt8TaGigBmP7qMg7Z4EOu0HTdOPZYs7CcaTPFXA_w,24
32
32
  anyscale/workspace_utils.py,sha256=OViE88CnIF5ruVxd3kazQ0Mf2BxqtMq6wx-XQ5A2cp8,1204
33
33
  anyscale/_private/anyscale_client/README.md,sha256=kSfI2Jfw5RHZWYtu0di3XtdSCx0d2pSwKMfjmDvw7Tg,3770
34
34
  anyscale/_private/anyscale_client/__init__.py,sha256=807Blx3RHQeS8BmKZcsOQQ4dYoKlCnpm6Bdsif2CrHg,337
@@ -36,11 +36,11 @@ anyscale/_private/anyscale_client/anyscale_client.py,sha256=iMc2DI45r5roA2_RCUU5
36
36
  anyscale/_private/anyscale_client/common.py,sha256=J5F2vv8OBu6lbwKRpe4gqATLft_bKAwJlRUyk7smykw,27436
37
37
  anyscale/_private/anyscale_client/fake_anyscale_client.py,sha256=y_Rq-nqVndWdO5y55KVL262YKCQRM8AGYvg-SbQxe_c,63526
38
38
  anyscale/_private/docgen/README.md,sha256=z0tj8Jy0KmxWJBQMHKyzXGX_cYYgI8m5DCD6KCMU8oI,762
39
- anyscale/_private/docgen/__main__.py,sha256=PAREqbWTpq61MFzokKlHjBF_lOyh2_mM_AjQ3Ia1jdA,25045
39
+ anyscale/_private/docgen/__main__.py,sha256=aKBQJ7g_IXiWRURA1SYkh5uYnixGNXtV0XXKQ5mU23E,25220
40
40
  anyscale/_private/docgen/api.md,sha256=VKW293yubbeUG17A38wYuaONKDL5XICMguyfZ2xkIyY,27495
41
41
  anyscale/_private/docgen/generator.py,sha256=9HvkVxTmaeAFBjK59eZ5pil6tpGjFQDqf0LNP2-lg4s,24041
42
42
  anyscale/_private/docgen/generator_legacy.py,sha256=f6eJzQXjkqGEOWsKPIthl8Bx1yh5MHidhEuEHN-nukk,4853
43
- anyscale/_private/docgen/models.md,sha256=K63IZ4ZIvqz8hz8Q0FHMq_DNgRNdj3Dg14WDb_ueKz4,311918
43
+ anyscale/_private/docgen/models.md,sha256=yGeeUIlN8POgNHiAhYvDyQnT2r0HdMD9Y2zZ_55Qeec,312123
44
44
  anyscale/_private/models/__init__.py,sha256=ZrkdHhJZNeCYiogsHc_po8m7vaVdxEjkNGixNeYdlgs,125
45
45
  anyscale/_private/models/image_uri.py,sha256=CMzHc-MNTBsBXvX0G73bjkiznCbm95DYQusgXJ8drm8,3971
46
46
  anyscale/_private/models/model_base.py,sha256=GJLA4JC0yHT554ctMYS_1es-YoTHQH9oqRHr28vV4R0,11354
@@ -106,7 +106,7 @@ anyscale/background/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
106
106
  anyscale/background/job_runner.py,sha256=LTuv9JOahyv6C9i7DLQAONgQF6--FfYZEmJrKy-sUG8,2687
107
107
  anyscale/client/.gitignore,sha256=JZyvYEtT2DCSK9V5Joi6lQofhMik4PXiJRCWsg7SvqI,807
108
108
  anyscale/client/.openapi-generator-ignore,sha256=pu2PTide7pJtJ-DFLzDy0cTYQJRlrB-8RRH3zGLeUds,1040
109
- anyscale/client/README.md,sha256=drReIpsz3aOF68F7ZdDWi-tdexu2HtkkAFIqHzpZPYs,117082
109
+ anyscale/client/README.md,sha256=muUytIoAe8VTq4ui9rR8GzNp9PNXsEzY0b5-N8G08Jg,117248
110
110
  anyscale/client/git_push.sh,sha256=EDCZOTTiLxbtPHmiU63qC99rGH67B7dhdPZdNUKivF0,1827
111
111
  anyscale/client/requirements.txt,sha256=dkVKYUStC5h_g_87SH7pRdhXCj7ySozAJMGAFEzGgFc,126
112
112
  anyscale/client/setup.cfg,sha256=l7bdKSIedeBhhoDtupsBwx1xPrlBf2yYeTH7a8kMga4,28
@@ -114,14 +114,14 @@ anyscale/client/setup.py,sha256=tSxqw1kAL1B9adnrnOarjnQfSbwGmnTr_kg8ZXhlm5A,1109
114
114
  anyscale/client/test-requirements.txt,sha256=sTjmDTj5W9fh1ZAeo8UT2EBdeGDBNttj_PHiPBXg1D4,111
115
115
  anyscale/client/tox.ini,sha256=M6L3UmvAdvU65LsoAF-Oi7oRjwZlCJZn8I7ofdXn5Ok,156
116
116
  anyscale/client/.openapi-generator/VERSION,sha256=J0RzX-4u4jfin1kviKtmncjUePyjHm2kyvmkobOrt_E,5
117
- anyscale/client/openapi_client/__init__.py,sha256=KOoXXkErPM_UsuBVuf8Qi3gvLAseOrCukFI6EAx49Sc,52154
117
+ anyscale/client/openapi_client/__init__.py,sha256=sMzroZEMhVxSMVOgQ4tiuv3iK6irQn9lbyEj69SxGW4,52386
118
118
  anyscale/client/openapi_client/api_client.py,sha256=d8Un6j2Ny2vlS2qBXPVFj6_ql0k36DFahpWt_28TfCk,25563
119
119
  anyscale/client/openapi_client/configuration.py,sha256=Dd5XrlHwv-wxnf0C35PG_-HBQoY3Yaz6hKrmkZz-m0E,12363
120
120
  anyscale/client/openapi_client/exceptions.py,sha256=3egwsXQG2j_vARbqgBxUO1xSltAhpfiHTYVP7VXTvU0,3792
121
121
  anyscale/client/openapi_client/rest.py,sha256=Ehj37v7GHW6SXV067Hze5HE42ayKaGi6a6ZlkR7u3Lg,12501
122
122
  anyscale/client/openapi_client/api/__init__.py,sha256=i8u7BI2xX1GrXTL3hN0pKpYIlnT-D_uDxH2ElOfYG1I,141
123
123
  anyscale/client/openapi_client/api/default_api.py,sha256=ZE4su4Qoq_SDdJt6yFfoCe11NwnugVy_2GltALBXuHY,1895564
124
- anyscale/client/openapi_client/models/__init__.py,sha256=xveymwyO79TG-b3lfrZWJWV3sp9tDwB0pMYrQpbqmc8,51664
124
+ anyscale/client/openapi_client/models/__init__.py,sha256=3aAw-hW1DrqvOHlH0ko_R8AKpENuBokxqKYQlt_gBQ4,51896
125
125
  anyscale/client/openapi_client/models/access_config.py,sha256=b2mA0qtuTA5PFbp6C61Jc_T2zUMaojM1v32IhZo0MfY,3648
126
126
  anyscale/client/openapi_client/models/actor_status.py,sha256=6xyX_aIqURj2raBdY9DmBxsdDACFrqqYvElGiM6YG2E,2813
127
127
  anyscale/client/openapi_client/models/admin_create_user.py,sha256=9DPr8D0lKgoEZ3Z2kGsAd8L7ocFCiP6woOGLVs8SRb8,7251
@@ -321,7 +321,7 @@ anyscale/client/openapi_client/models/dataset_upload.py,sha256=rOHyuUSC_14OlJU2I
321
321
  anyscale/client/openapi_client/models/datasetupload_response.py,sha256=0c090SMm7H---lZkx9lPHAimah54Nk1hdwJK7pd82Mg,3561
322
322
  anyscale/client/openapi_client/models/decorated_application_template.py,sha256=p8td6V3VQ0NqW4mnabM4W7EughggIduIo8Xv7jUZgEE,16407
323
323
  anyscale/client/openapi_client/models/decorated_build.py,sha256=wel4rROizNrKxMXz5BrmhMSgO04XQrerLPLopsuEXuo,22984
324
- anyscale/client/openapi_client/models/decorated_cloud_resource.py,sha256=kGKETN6spGINCiZ9iebE9ppa0XD8ihOyQGUYc322ANo,16493
324
+ anyscale/client/openapi_client/models/decorated_cloud_resource.py,sha256=ReSK1jhW4lmI0wWz8N-z-QZN7ULvh7fEhlvagY-bIbY,17608
325
325
  anyscale/client/openapi_client/models/decorated_compute_template.py,sha256=7bDVlmudYB-CPqqONBfpFc7-B2MItWEnsxefFlcSVUo,14186
326
326
  anyscale/client/openapi_client/models/decorated_compute_template_config.py,sha256=TjiPN3e55YHAQG6W0yVeSfV_-og9qvnsnty5k-L5vhs,21362
327
327
  anyscale/client/openapi_client/models/decorated_interactive_session.py,sha256=S2m6CuKL-yKYPSQFE5wHIZMBX-sNAG-6Wy2JnQ2sfVo,24575
@@ -335,7 +335,7 @@ anyscale/client/openapi_client/models/decorated_production_service_v2_version_ap
335
335
  anyscale/client/openapi_client/models/decorated_schedule.py,sha256=zCDLO0og8GMMxv_43k3BjYB3MAGc3znGcKV28GYoJwU,18193
336
336
  anyscale/client/openapi_client/models/decorated_serve_deployment.py,sha256=fujpuo3v3GNhKwwiHwBqtU8BrBvBrcbg_TTtSvVG7oY,24397
337
337
  anyscale/client/openapi_client/models/decorated_service_event_api_model.py,sha256=TE2bxLquf15IQZTXDiqawOnRYQKT-0Gxrr9VJVNwu9c,17555
338
- anyscale/client/openapi_client/models/decorated_session.py,sha256=inA-fNRdIv1DmbzI_YygBvtKn1tP3XAIpjHhuaottwk,70380
338
+ anyscale/client/openapi_client/models/decorated_session.py,sha256=wlBiEeIrXEbSAGMqr3zvNOP7XXOxVx23wRp1eMcYLBY,71719
339
339
  anyscale/client/openapi_client/models/decorated_support_request.py,sha256=FyU8FQbCVAXUpxikWjVmEn5WasPTZeFppafbU2B0kQE,9163
340
340
  anyscale/client/openapi_client/models/decorated_unified_job.py,sha256=chXCS6V5Zkweel9Xeg2mqotcLgKXwo4uoM-kZMWVeJ4,13976
341
341
  anyscale/client/openapi_client/models/decoratedapplicationtemplate_list_response.py,sha256=Aqq7NLQ1JszMgO7GDZkY-taxuMuohu83MziWxKyAw3o,4617
@@ -526,9 +526,12 @@ anyscale/client/openapi_client/models/operation_error.py,sha256=GFDVbjzXwFb9ocl0
526
526
  anyscale/client/openapi_client/models/operation_progress.py,sha256=K7TAuDeJ2b_uBQthLAowetZwHL6WVbB0nqY40jyJe7g,3682
527
527
  anyscale/client/openapi_client/models/operation_result.py,sha256=I3d5JsCrLiXgM7TZRKIbOrrmMJP-6WuyOgkU1jXWlsE,4364
528
528
  anyscale/client/openapi_client/models/operator_branch.py,sha256=_wl7vipkkcgd_fn2TG6VZp5Z7zme7kVtp6xXimdNBPg,4232
529
+ anyscale/client/openapi_client/models/operator_check_result.py,sha256=G1mFVQ-tJtuG6BeLBOV91NGEX07OrvZeMMpJQxukGSo,4975
530
+ anyscale/client/openapi_client/models/operator_check_status.py,sha256=IQsSKq3ql4nt5BYQjccvpTC68DOSUG-QQ3rXDm16LEQ,2944
529
531
  anyscale/client/openapi_client/models/operator_id.py,sha256=D1gfzRMkSIl5svx9CuRdyd_WdsBwS135D6mjAUuReVg,3359
530
532
  anyscale/client/openapi_client/models/operator_metrics.py,sha256=Pl6H2qzNbNhSPOtg081yDuhdAltaPvojTIn-kzNH64c,8607
531
- anyscale/client/openapi_client/models/operator_status.py,sha256=JRuV6l41VYDHHMDOyti0NIeQLEl78EzD-aUUdy5BUMU,3003
533
+ anyscale/client/openapi_client/models/operator_status.py,sha256=Av-_FizOfXNjcMjS1MlE37s_QPQdzKeAr_HWt2zF0S8,2939
534
+ anyscale/client/openapi_client/models/operator_status_details.py,sha256=BZABehq5rwacGZi8O0LBtWdsBxcimK5NPrQVDnsFGNs,5598
532
535
  anyscale/client/openapi_client/models/organization.py,sha256=denL5QGkErdMLQkEkGWCIxLt-Wv1EWc5u7REMOTKqrw,17320
533
536
  anyscale/client/openapi_client/models/organization_collaborator.py,sha256=b1EWH9jTsPKPv5aotAnf052kC_v4YQ2FVyIcJ28g5pM,8034
534
537
  anyscale/client/openapi_client/models/organization_configuration.py,sha256=ut6TmxbRFp9dQjQQHJL10vV1DRsZPFtFa3sCiPU2Ae8,8754
@@ -777,7 +780,7 @@ anyscale/commands/project_commands.py,sha256=NFGYcPY8qaMHhO_325jeZp4Yj79JvWWN_bG
777
780
  anyscale/commands/resource_quota_commands.py,sha256=J6r8b6Bo1wMys5pYWieD6F-VsC2OpQZGVLaNFlvAKmI,8536
778
781
  anyscale/commands/schedule_commands.py,sha256=Bw2aKp_w6xcuRSVVi9FLdUjRVCr8_v4Tt2kGL6Y4aRg,14924
779
782
  anyscale/commands/service_account_commands.py,sha256=u45N2akHsZxyu5LK03FGEEnZh4dTt4B2Be-dXgbSg3U,3977
780
- anyscale/commands/service_commands.py,sha256=M4A2OJA796f83dXesr0pEs4fgKS94MBxlSgLXdXuZSI,33920
783
+ anyscale/commands/service_commands.py,sha256=DBrPkW7JH3kCsr038aQStm7AF1u-n80sLjwc2Hjifks,34014
781
784
  anyscale/commands/session_commands_hidden.py,sha256=APEypnUB1yV2Rr6wdSFWy1vQbAnn-lOn0rU2enF5JdM,6200
782
785
  anyscale/commands/user_commands.py,sha256=C-i1dGpdhboywN_2XgPS2BekKx2y6LZq8c8gvS0S-tY,1259
783
786
  anyscale/commands/util.py,sha256=fIob29G1jZ4VU9PKVSJnT6hqX7wAqsS4L9sApsMZcNs,8585
@@ -794,7 +797,7 @@ anyscale/compute_config/_private/compute_config_sdk.py,sha256=akJzc_cSRhxzP6N4iC
794
797
  anyscale/connect_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
795
798
  anyscale/connect_utils/prepare_cluster.py,sha256=uxBjxKuzcgbQdzGT0VWPpO_Iljeep8UcpQzc0oOvvVc,41792
796
799
  anyscale/connect_utils/project.py,sha256=LwcGqTQS_mZp6C79NMoMhmcWGR9j2C1Zi1S4PnPNzhQ,12239
797
- anyscale/connect_utils/start_interactive_session.py,sha256=DbuIK2wuWofmbwJ9MLbsb7xpLDs8I2TJB6zWsyHXvjI,17446
800
+ anyscale/connect_utils/start_interactive_session.py,sha256=m-RCH0e_bQBF6dAOskbP9ENkD5x5pu1SIQIzREMDuHk,17371
798
801
  anyscale/controllers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
799
802
  anyscale/controllers/auth_controller.py,sha256=hDY2sPvUP8pvh8PnlDYH5rCHjQes2v3b_KBVjMbrzeE,5127
800
803
  anyscale/controllers/base_controller.py,sha256=1QFJoScFUV7YTzpKarhwPOc1SvI-xqX3TZmwxKonW6I,1998
@@ -998,7 +1001,7 @@ anyscale/sdk/anyscale_client/models/service_type.py,sha256=rZdrus7PK1yag9evso0hM
998
1001
  anyscale/sdk/anyscale_client/models/service_version_state.py,sha256=70UygIXv31YQgInoublJt-lZqwIbNCWJFFH0jqkS6iA,3110
999
1002
  anyscale/sdk/anyscale_client/models/servicemodel_list_response.py,sha256=-71b0cU3Lj_dTh74WcTlHRbB6OqIDyRPmXBLhhY-P-w,4375
1000
1003
  anyscale/sdk/anyscale_client/models/servicemodel_response.py,sha256=3rAjmUOO6HKR8gEklDxoHKvn6IXECCRCuqQiLbZCmw0,3548
1001
- anyscale/sdk/anyscale_client/models/session.py,sha256=16msP79lxSucYEp4xoxTbPvTLp-z-RhjEKkW4Fzpaz0,61114
1004
+ anyscale/sdk/anyscale_client/models/session.py,sha256=hdaS_DuyWKZfV2y7xv8ncfZKmj8wdDFVUAZmWL5NZbI,62417
1002
1005
  anyscale/sdk/anyscale_client/models/session_response.py,sha256=wB3HFhPxlVOX4F7IJPH4mxc4qxQWsyYRPeUuftZknLQ,3493
1003
1006
  anyscale/sdk/anyscale_client/models/session_starting_up_data.py,sha256=kfwpLY1s4-Tf8Gdkdah4cSkRHE2JRYJNd3Rjkj8q5eQ,4366
1004
1007
  anyscale/sdk/anyscale_client/models/session_state.py,sha256=HbGrjYS-zATMtgCjKdiV0_ViadEyXIUAZU-8wVjnRF4,3388
@@ -1022,10 +1025,10 @@ anyscale/sdk/anyscale_client/models/user_service_access_types.py,sha256=3gW1L_VT
1022
1025
  anyscale/sdk/anyscale_client/models/ux_instance.py,sha256=F2F2cxAJ5GElRgHcrxpB7GEpvhM-PJa3qpBBYmhwlUQ,15935
1023
1026
  anyscale/sdk/anyscale_client/models/validation_error.py,sha256=h5Cope8JNSDE3Fpr1TfjcnuJPThF0dd_uawvltOqPt0,4901
1024
1027
  anyscale/sdk/anyscale_client/models/worker_node_type.py,sha256=bI3sPVPA4t4axjdbj7pNlPkKPJDDkOnMgiN7B_o3IZI,15046
1025
- anyscale/service/__init__.py,sha256=8L7JynFGOfZ28WIDTUM-ipzbrChZ_ZqadJuIhApTvFM,7988
1026
- anyscale/service/commands.py,sha256=cef52vv7KlUX_vOhQubUOM9t3rT4NbE_GNhllCFZWvg,14384
1027
- anyscale/service/models.py,sha256=In9Nn6xYWSpKwjYaMe1zyRWs1gU-g9J-tNt74BQh0js,25985
1028
- anyscale/service/_private/service_sdk.py,sha256=H872hrLu1qxaRcQ9G22g8UeG3xh0AZhtP6vN0BSD4kI,35072
1028
+ anyscale/service/__init__.py,sha256=XB6Lo7oynMbMARhDeg_ydGVrSPomxc8H8xdM5BFjZ1A,8098
1029
+ anyscale/service/commands.py,sha256=bHCv0aErfScx52vU5avTFtegV-L_7r_ZfQDmYZry4Vs,14399
1030
+ anyscale/service/models.py,sha256=j6mEh8JK5_yxpDi9GJlGQNuQexKdYS5r5RKJzjXDx60,25992
1031
+ anyscale/service/_private/service_sdk.py,sha256=pODsuYJg6vofz4hlVj8nt5roxG9NWDUkn7ncr4s2Wi4,35119
1029
1032
  anyscale/service_account/__init__.py,sha256=jV1OFo_ZTxU3vuPztO1300TuoMz-Ocudm6_84ZtjPQ4,2764
1030
1033
  anyscale/service_account/commands.py,sha256=pkJjZwK8aRKFFVfE5swMTJrm9CTnPcNJETEFdMkPiic,3680
1031
1034
  anyscale/service_account/models.py,sha256=MhY-Fo5AZQ68brqtolTUMW3WQDrkNyL1udtNg70sNAU,2189
@@ -1092,10 +1095,10 @@ anyscale/workspace/__init__.py,sha256=Innbm5ZhCyADEVBiYSo_vbpKwUNcMzVSAfxIGKOYe6
1092
1095
  anyscale/workspace/commands.py,sha256=GBwZenhxe4LFAOCoW8y8KLSgm2HxMxozJ3njEcx53QE,18555
1093
1096
  anyscale/workspace/models.py,sha256=uiMqoJRQNRgTcOIIsysSrtlHMtnI7paUWS34EN626Cg,10016
1094
1097
  anyscale/workspace/_private/workspace_sdk.py,sha256=2CMeYfJt0UtIFCocDn1ukw1iI5esKHdopLe6duEs-qE,27599
1095
- anyscale-0.26.55.dist-info/licenses/LICENSE,sha256=UOPu974Wzsna6frFv1mu4VrZgNdZT7lbcNPzo5ue3qs,3494
1096
- anyscale-0.26.55.dist-info/licenses/NOTICE,sha256=gHqDhSnUYlRXX-mDOL5FtE7774oiKyV_HO80qM3r9Xo,196
1097
- anyscale-0.26.55.dist-info/METADATA,sha256=Eckny4k8rW5-VXvfnrA2lu9Mx6GXNWP_aPUMFeMksLo,3231
1098
- anyscale-0.26.55.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1099
- anyscale-0.26.55.dist-info/entry_points.txt,sha256=NqO18sCZn6zG6J0S38itjcN00s7aE3C3v3k5lMAfCLk,51
1100
- anyscale-0.26.55.dist-info/top_level.txt,sha256=g3NVNS8Oh0NZwbFFgeX696C5MZZkS5dqV2NqcsbDRJE,9
1101
- anyscale-0.26.55.dist-info/RECORD,,
1098
+ anyscale-0.26.57.dist-info/licenses/LICENSE,sha256=UOPu974Wzsna6frFv1mu4VrZgNdZT7lbcNPzo5ue3qs,3494
1099
+ anyscale-0.26.57.dist-info/licenses/NOTICE,sha256=gHqDhSnUYlRXX-mDOL5FtE7774oiKyV_HO80qM3r9Xo,196
1100
+ anyscale-0.26.57.dist-info/METADATA,sha256=EnoQtowf5PNI8F-StrAexShkIy10cQZQ1mSnL4GLcIc,3231
1101
+ anyscale-0.26.57.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1102
+ anyscale-0.26.57.dist-info/entry_points.txt,sha256=NqO18sCZn6zG6J0S38itjcN00s7aE3C3v3k5lMAfCLk,51
1103
+ anyscale-0.26.57.dist-info/top_level.txt,sha256=g3NVNS8Oh0NZwbFFgeX696C5MZZkS5dqV2NqcsbDRJE,9
1104
+ anyscale-0.26.57.dist-info/RECORD,,