anyscale 0.25.1__py3-none-any.whl → 0.25.3__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 (50) hide show
  1. anyscale/__init__.py +10 -0
  2. anyscale/_private/anyscale_client/anyscale_client.py +40 -9
  3. anyscale/_private/anyscale_client/common.py +37 -3
  4. anyscale/_private/anyscale_client/fake_anyscale_client.py +80 -6
  5. anyscale/_private/docgen/__main__.py +9 -2
  6. anyscale/_private/docgen/api.md +13 -0
  7. anyscale/_private/docgen/models.md +3 -3
  8. anyscale/_private/workload/workload_config.py +20 -6
  9. anyscale/client/README.md +6 -0
  10. anyscale/client/openapi_client/__init__.py +3 -0
  11. anyscale/client/openapi_client/api/default_api.py +391 -2
  12. anyscale/client/openapi_client/models/__init__.py +3 -0
  13. anyscale/client/openapi_client/models/baseimagesenum.py +43 -1
  14. anyscale/client/openapi_client/models/cluster_event_source.py +105 -0
  15. anyscale/client/openapi_client/models/clusterevent_list_response.py +147 -0
  16. anyscale/client/openapi_client/models/jobs_sort_field.py +1 -2
  17. anyscale/client/openapi_client/models/sessions_sort_field.py +1 -2
  18. anyscale/client/openapi_client/models/supportedbaseimagesenum.py +43 -1
  19. anyscale/client/openapi_client/models/update_cloud_collaborator.py +121 -0
  20. anyscale/commands/cloud_commands.py +49 -12
  21. anyscale/commands/command_examples.py +4 -0
  22. anyscale/commands/service_account_commands.py +65 -8
  23. anyscale/commands/service_commands.py +60 -0
  24. anyscale/controllers/cloud_controller.py +58 -25
  25. anyscale/controllers/cluster_controller.py +1 -9
  26. anyscale/controllers/job_controller.py +0 -3
  27. anyscale/resource_quota/_private/resource_quota_sdk.py +15 -6
  28. anyscale/sdk/anyscale_client/api/default_api.py +119 -0
  29. anyscale/sdk/anyscale_client/models/baseimagesenum.py +43 -1
  30. anyscale/sdk/anyscale_client/models/jobs_sort_field.py +1 -2
  31. anyscale/sdk/anyscale_client/models/supportedbaseimagesenum.py +43 -1
  32. anyscale/service/__init__.py +21 -0
  33. anyscale/service/_private/service_sdk.py +13 -0
  34. anyscale/service/commands.py +35 -0
  35. anyscale/service_account/__init__.py +88 -0
  36. anyscale/service_account/_private/service_account_sdk.py +101 -0
  37. anyscale/service_account/commands.py +147 -0
  38. anyscale/service_account/models.py +66 -0
  39. anyscale/shared_anyscale_utils/latest_ray_version.py +1 -1
  40. anyscale/shared_anyscale_utils/utils/id_gen.py +2 -0
  41. anyscale/util.py +8 -0
  42. anyscale/version.py +1 -1
  43. {anyscale-0.25.1.dist-info → anyscale-0.25.3.dist-info}/METADATA +1 -1
  44. {anyscale-0.25.1.dist-info → anyscale-0.25.3.dist-info}/RECORD +49 -43
  45. anyscale/controllers/service_account_controller.py +0 -168
  46. {anyscale-0.25.1.dist-info → anyscale-0.25.3.dist-info}/LICENSE +0 -0
  47. {anyscale-0.25.1.dist-info → anyscale-0.25.3.dist-info}/NOTICE +0 -0
  48. {anyscale-0.25.1.dist-info → anyscale-0.25.3.dist-info}/WHEEL +0 -0
  49. {anyscale-0.25.1.dist-info → anyscale-0.25.3.dist-info}/entry_points.txt +0 -0
  50. {anyscale-0.25.1.dist-info → anyscale-0.25.3.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,66 @@
1
+ from dataclasses import dataclass, field
2
+ from datetime import datetime
3
+
4
+ from anyscale._private.models import ModelBase, ModelEnum
5
+
6
+
7
+ # TODO(cynthiakwu): Move this when we have organization collaborator sdk
8
+ class OrganizationPermissionLevel(ModelEnum):
9
+ OWNER = "OWNER"
10
+ COLLABORATOR = "COLLABORATOR"
11
+
12
+ __docstrings__ = {
13
+ OWNER: "Owner permission level for the organization",
14
+ COLLABORATOR: "Collaborator permission level for the organization",
15
+ }
16
+
17
+
18
+ @dataclass(frozen=True)
19
+ class ServiceAccount(ModelBase):
20
+ """Service account
21
+ """
22
+
23
+ __doc_py_example__ = """\
24
+ import anyscale
25
+ from anyscale.service_account.models import ServiceAccount
26
+
27
+ service_accounts: List[ServiceAccount] = anyscale.service_account.list()
28
+ """
29
+
30
+ name: str = field(metadata={"docstring": "Name of the service account."})
31
+
32
+ def _validate_name(self, name: str):
33
+ if not isinstance(name, str):
34
+ raise TypeError("name must be a string.")
35
+
36
+ created_at: datetime = field(
37
+ metadata={"docstring": "The timestamp when this service account was created."}
38
+ )
39
+
40
+ def _validate_created_at(self, created_at: datetime):
41
+ if not isinstance(created_at, datetime):
42
+ raise TypeError("created_at must be a datetime.")
43
+
44
+ permission_level: OrganizationPermissionLevel = field(
45
+ metadata={
46
+ "docstring": "The organization permission level of the service account."
47
+ }
48
+ )
49
+
50
+ def _validate_permission_level(
51
+ self, permission_level: OrganizationPermissionLevel
52
+ ) -> OrganizationPermissionLevel:
53
+ if isinstance(permission_level, str):
54
+ return OrganizationPermissionLevel.validate(permission_level)
55
+ elif isinstance(permission_level, OrganizationPermissionLevel):
56
+ return permission_level
57
+ else:
58
+ raise TypeError(
59
+ f"'permission_level' must be a 'OrganizationPermissionLevel' (it is {type(permission_level)})."
60
+ )
61
+
62
+ email: str = field(metadata={"docstring": "Email of the service account."})
63
+
64
+ def _validate_email(self, email: str):
65
+ if not isinstance(email, str):
66
+ raise TypeError("email must be a string.")
@@ -1,2 +1,2 @@
1
1
  # AUTOGENERATED - modify shared_anyscale_util in root directory to make changes
2
- LATEST_RAY_VERSION = "2.40.0"
2
+ LATEST_RAY_VERSION = "2.41.0"
@@ -111,7 +111,9 @@ class IDTypes(Enum):
111
111
  instance_usage_budgets = "iub"
112
112
  datasets = "dataset"
113
113
  resource_quotas = "rsq"
114
+ resource_alerts = "rsa"
114
115
  aggregated_instance_usage = "aiu"
116
+ readonly_collaborators = "rc"
115
117
 
116
118
 
117
119
  _default_id_length: int = 26
anyscale/util.py CHANGED
@@ -1168,3 +1168,11 @@ T = TypeVar("T")
1168
1168
 
1169
1169
  def _coerce_to_list(maybe_list: Union[T, List[T]]) -> List[T]:
1170
1170
  return maybe_list if isinstance(maybe_list, list) else [maybe_list]
1171
+
1172
+
1173
+ def allow_optional_file_storage(api_client: Optional[ProductApi] = None) -> bool:
1174
+ if api_client is None:
1175
+ api_client = get_auth_api_client().api_client
1176
+ return api_client.check_is_feature_flag_on_api_v2_userinfo_check_is_feature_flag_on_get(
1177
+ "allow-optional-file-storage"
1178
+ ).result.is_on
anyscale/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.25.1"
1
+ __version__ = "0.25.3"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: anyscale
3
- Version: 0.25.1
3
+ Version: 0.25.3
4
4
  Summary: Command Line Interface for Anyscale
5
5
  Author: Anyscale Inc.
6
6
  License: AS License
@@ -1,4 +1,4 @@
1
- anyscale/__init__.py,sha256=mNi3XLFzZS4uWzhSxEaN8ji8xc1-69dxob6fs8Bmb8U,8179
1
+ anyscale/__init__.py,sha256=YtAe4ql_2J7SnRMMvJzx1Fdw2ZjtC2VLfZFPSDMdLxA,8595
2
2
  anyscale/anyscale-cloud-setup-gcp-oa.yaml,sha256=R8oCBlHF5ItLVZA8m35Dli9fdWXbadLHiNkWhRdUz9U,2722
3
3
  anyscale/anyscale-cloud-setup-gcp.yaml,sha256=-sNJ45nLW6W1qIu0Kc-d2IkYTTjEVYI65lAxZB4KcO8,3922
4
4
  anyscale/anyscale-cloud-setup-oa.yaml,sha256=MMfjT2UCNQS43I3mGOMoSq1cq1dufxtnXU9Zy260TK8,3192
@@ -26,20 +26,20 @@ anyscale/project_utils.py,sha256=2P7n3K7R3Iy3pZPAevtga4sn1jfdLLwblt2L5MJqUa0,179
26
26
  anyscale/scripts.py,sha256=HR6JOCBVBXMVi1Kz5uJmjsh73t2l1W8UbUge83ofnqk,5474
27
27
  anyscale/snapshot.py,sha256=UGJT5C1s_4xmQxjWODK5DFpGxHRBX5jOCdSCqXESH8E,1685
28
28
  anyscale/tables.py,sha256=TV4F2uLnwehvbkAfaP7iuLlT2wLIo6ORH2LVdRGXW5g,2840
29
- anyscale/util.py,sha256=Rhkz3VLUYAjLNUd1zy3w-9-EjLW2sLYJ3j_LAxj-_lM,40498
30
- anyscale/version.py,sha256=ACu2Z3Q3TFgYpAno_eu9ssJ1QULjNXvjGvyqDSHrQ_o,23
29
+ anyscale/util.py,sha256=Tqb9qWSxQI_PBJVSDxm9RWqFyGJFClgZDPByhb_fhU8,40813
30
+ anyscale/version.py,sha256=mXrC0wG0d9x4Qj0b-1a15tGJ6JHnWNOm82J2nX_CL2k,23
31
31
  anyscale/workspace_utils.py,sha256=OViE88CnIF5ruVxd3kazQ0Mf2BxqtMq6wx-XQ5A2cp8,1204
32
32
  anyscale/_private/anyscale_client/README.md,sha256=gk8obk7kqg6VWoUHcqDMwJULh35tYKEZFC0UF_dixGA,718
33
33
  anyscale/_private/anyscale_client/__init__.py,sha256=807Blx3RHQeS8BmKZcsOQQ4dYoKlCnpm6Bdsif2CrHg,337
34
- anyscale/_private/anyscale_client/anyscale_client.py,sha256=CXxFzoSNBJrx4ytuJ_V0ngXNWodRtj0PjdWEBnK6oD4,78439
35
- anyscale/_private/anyscale_client/common.py,sha256=8H6CI4os80Vacy0AzJ4rpXpVZuvKzvwktO5jYLjDMZ8,22682
36
- anyscale/_private/anyscale_client/fake_anyscale_client.py,sha256=c1kcatOIVjACfoObI9Fi9GqWilyfo1IeNzOuiv9WV9I,49753
34
+ anyscale/_private/anyscale_client/anyscale_client.py,sha256=4yQD0pBE7s_oBmrB85G3gQePnCbbaqyqkki7VTfUrOc,79665
35
+ anyscale/_private/anyscale_client/common.py,sha256=cdIYXPznSCN90PXvX5LixQQzBZMBFk2hM5WaZeh4ZmU,23729
36
+ anyscale/_private/anyscale_client/fake_anyscale_client.py,sha256=QlC71hwzqbE0Jv6SeHDCFMi7DLH2U04hFFAN6mXJJPg,52883
37
37
  anyscale/_private/docgen/README.md,sha256=z0tj8Jy0KmxWJBQMHKyzXGX_cYYgI8m5DCD6KCMU8oI,762
38
- anyscale/_private/docgen/__main__.py,sha256=6gl0j7X--e3b69_UC2nzB4Sy9NIWnDNDlhygcdBPVh8,25444
39
- anyscale/_private/docgen/api.md,sha256=bJSK-FvWWpMuxaW0b_YcuAx5exS_5q72CvVpef7XTA4,32123
38
+ anyscale/_private/docgen/__main__.py,sha256=K-U7QHryFUorzh8-Lj_uQYf-XEpvKsDkka3_Kw429t4,25824
39
+ anyscale/_private/docgen/api.md,sha256=SzLoDy6GyriU60l8964CNWz3z_QNEJA7mFHr0FzXyPU,32527
40
40
  anyscale/_private/docgen/generator.py,sha256=dgC3qlqhJrTt0bTl3ExlRFLDwpn_Is2Yv47TJ33jaeE,21711
41
41
  anyscale/_private/docgen/generator_legacy.py,sha256=pss_6ONF55XhARrKGcREDmg0J5plWact6USgb5Tr5mM,3002
42
- anyscale/_private/docgen/models.md,sha256=YDu1CHaZKx6SXmd5ULCLb6XmQ5skE6537oMW4Js65vU,275765
42
+ anyscale/_private/docgen/models.md,sha256=gNokrRui7ea89AfpdMew64sAnZU9X27bSv57-Do93-g,278751
43
43
  anyscale/_private/models/__init__.py,sha256=ZrkdHhJZNeCYiogsHc_po8m7vaVdxEjkNGixNeYdlgs,125
44
44
  anyscale/_private/models/image_uri.py,sha256=CMzHc-MNTBsBXvX0G73bjkiznCbm95DYQusgXJ8drm8,3971
45
45
  anyscale/_private/models/model_base.py,sha256=QdIKiyNpvjyUGqQtL4_J9qpCK6clHdmWiKV4jSFXunU,8217
@@ -49,7 +49,7 @@ anyscale/_private/sdk/timer.py,sha256=NK6rlmjW4NT6qOuxLo65FJ_wN1q23vNBaYDIt7WhSS
49
49
  anyscale/_private/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
50
  anyscale/_private/utils/progress_util.py,sha256=-xNU3MBbFcFOEk1yLA0t7vP_xQy9ygY6dW9e6ljmx5w,2287
51
51
  anyscale/_private/workload/__init__.py,sha256=_wOZsawqp5NZV9He502e2gFSM66hjqxhxNZTqxnrMws,134
52
- anyscale/_private/workload/workload_config.py,sha256=9nrXuMCED3YWxKdo-iO4NPST9QAYsTUtpDkSLNg9NOI,7740
52
+ anyscale/_private/workload/workload_config.py,sha256=7ATzg6YyCB-LPW3k18Qc6myX8XE8Ul0Q0cEeIEhPey4,8170
53
53
  anyscale/_private/workload/workload_sdk.py,sha256=ZNcvBQgvbcpE0QtdbwY9y-x5JFQmJ6qJ9fj-VXrGwLQ,13010
54
54
  anyscale/aggregated_instance_usage/__init__.py,sha256=mOreJrOZ87NAF3GD2ZEJ48sSwkUDKcTOPa9_DsRBZY8,1290
55
55
  anyscale/aggregated_instance_usage/commands.py,sha256=jzTYc_nljkkF4eTynZAdXPMKLPY8KE48WTmFbD_KwJI,1251
@@ -98,7 +98,7 @@ anyscale/background/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
98
98
  anyscale/background/job_runner.py,sha256=LTuv9JOahyv6C9i7DLQAONgQF6--FfYZEmJrKy-sUG8,2687
99
99
  anyscale/client/.gitignore,sha256=JZyvYEtT2DCSK9V5Joi6lQofhMik4PXiJRCWsg7SvqI,807
100
100
  anyscale/client/.openapi-generator-ignore,sha256=pu2PTide7pJtJ-DFLzDy0cTYQJRlrB-8RRH3zGLeUds,1040
101
- anyscale/client/README.md,sha256=FiqUisucOVyj16LvdxF4mIpkX_PkpHTBzt6kWDm9FMs,130145
101
+ anyscale/client/README.md,sha256=gmO0xijTKkiExa8vwJfp5F-SxyT-46a7NS11PJAJsik,131105
102
102
  anyscale/client/git_push.sh,sha256=EDCZOTTiLxbtPHmiU63qC99rGH67B7dhdPZdNUKivF0,1827
103
103
  anyscale/client/requirements.txt,sha256=dkVKYUStC5h_g_87SH7pRdhXCj7ySozAJMGAFEzGgFc,126
104
104
  anyscale/client/setup.cfg,sha256=l7bdKSIedeBhhoDtupsBwx1xPrlBf2yYeTH7a8kMga4,28
@@ -106,14 +106,14 @@ anyscale/client/setup.py,sha256=tSxqw1kAL1B9adnrnOarjnQfSbwGmnTr_kg8ZXhlm5A,1109
106
106
  anyscale/client/test-requirements.txt,sha256=sTjmDTj5W9fh1ZAeo8UT2EBdeGDBNttj_PHiPBXg1D4,111
107
107
  anyscale/client/tox.ini,sha256=M6L3UmvAdvU65LsoAF-Oi7oRjwZlCJZn8I7ofdXn5Ok,156
108
108
  anyscale/client/.openapi-generator/VERSION,sha256=J0RzX-4u4jfin1kviKtmncjUePyjHm2kyvmkobOrt_E,5
109
- anyscale/client/openapi_client/__init__.py,sha256=iCTcpBsgtbp_MsZFzJ3zgvZ3jfhnM8BPqJBJJLf3Zyw,54532
109
+ anyscale/client/openapi_client/__init__.py,sha256=UtTZmBf0YCKljEYbBFgqKNttiRRvRF3aERTQfvOmrF4,54776
110
110
  anyscale/client/openapi_client/api_client.py,sha256=d8Un6j2Ny2vlS2qBXPVFj6_ql0k36DFahpWt_28TfCk,25563
111
111
  anyscale/client/openapi_client/configuration.py,sha256=Dd5XrlHwv-wxnf0C35PG_-HBQoY3Yaz6hKrmkZz-m0E,12363
112
112
  anyscale/client/openapi_client/exceptions.py,sha256=3egwsXQG2j_vARbqgBxUO1xSltAhpfiHTYVP7VXTvU0,3792
113
113
  anyscale/client/openapi_client/rest.py,sha256=Ehj37v7GHW6SXV067Hze5HE42ayKaGi6a6ZlkR7u3Lg,12501
114
114
  anyscale/client/openapi_client/api/__init__.py,sha256=i8u7BI2xX1GrXTL3hN0pKpYIlnT-D_uDxH2ElOfYG1I,141
115
- anyscale/client/openapi_client/api/default_api.py,sha256=-fOQPOpcAT6oTOwTCJC8Su7r3YV3Ue8VZbLlxuu87nU,2091654
116
- anyscale/client/openapi_client/models/__init__.py,sha256=KGpJj7qOZZv3Y7sWndY2lAW4STE1IELJY-L2DpSQKtE,54042
115
+ anyscale/client/openapi_client/api/default_api.py,sha256=A-cm7khApyBZueMK_hFNrZEUhAvLf5rI15FG4L--myY,2114246
116
+ anyscale/client/openapi_client/models/__init__.py,sha256=p-Xpd0VXL-MxScK3ifwCUhmOkhYfec_PSX5PhVjgbr4,54286
117
117
  anyscale/client/openapi_client/models/access_config.py,sha256=b2mA0qtuTA5PFbp6C61Jc_T2zUMaojM1v32IhZo0MfY,3648
118
118
  anyscale/client/openapi_client/models/admin_create_user.py,sha256=9DPr8D0lKgoEZ3Z2kGsAd8L7ocFCiP6woOGLVs8SRb8,7251
119
119
  anyscale/client/openapi_client/models/admin_created_user.py,sha256=uZffwCvMxIdPbpCRvFwpkfeG5D3LEQ50ebbwa_cj6bQ,8098
@@ -169,7 +169,7 @@ anyscale/client/openapi_client/models/aws_region_info.py,sha256=y30HS1AyryxoqIEk
169
169
  anyscale/client/openapi_client/models/awsregionandzones_response.py,sha256=yUmo9cDoDworNZdnd-3F8PzLXWIMzPlxFstvo-p2HZY,3605
170
170
  anyscale/client/openapi_client/models/bank_account_information.py,sha256=500GehjG2BiYBj2VeAHGZ4TAr6_lRrTHYmnJ3aqsv60,8222
171
171
  anyscale/client/openapi_client/models/base_job_status.py,sha256=hQoX9Z6VWkKqPGVwiV7WGcfMgggWlpo8-Ig0lfhc534,3010
172
- anyscale/client/openapi_client/models/baseimagesenum.py,sha256=nnSXITsxfC7ZXQotMY9XvxmA71k83Dx6s8njfEQq-Hw,212372
172
+ anyscale/client/openapi_client/models/baseimagesenum.py,sha256=iaF5u-3Ih4r972CWQ_WuuogroS1LIvThGoH1kq1_t5A,216863
173
173
  anyscale/client/openapi_client/models/batch_response_batched_result_organization_invitation_base.py,sha256=jSabTOT2BCsngQQ9DcOj18Ug2ac1Dqfr4lbnVxTMfNE,3926
174
174
  anyscale/client/openapi_client/models/batched_result_organization_invitation_base.py,sha256=6lpamdA4O_xM3iRt6InZ2q5h0LIab4yx7FfJK-n8kog,5140
175
175
  anyscale/client/openapi_client/models/billing_information.py,sha256=P6U8sjJ_yhJki4XYuW_3m5V2hdwKSKXk8sXFMn8YsZg,6632
@@ -246,6 +246,7 @@ anyscale/client/openapi_client/models/cluster_config.py,sha256=ee_eRei3biKf5JZ2w
246
246
  anyscale/client/openapi_client/models/cluster_config_with_session_idle_timeout.py,sha256=l2fSRqmDdbEXMSu3D4vWqnm2FhajJI1S-Or6TRYXYZU,6867
247
247
  anyscale/client/openapi_client/models/cluster_environments_query.py,sha256=X2TRqYVnBMGY-QrslIR1jUTdh8ID4CPsuEhusnFh2SE,9699
248
248
  anyscale/client/openapi_client/models/cluster_event.py,sha256=wfOsofR0jNYeMKd_WzTMUifbY7UOZ20IdoLK3Ujrzxo,5018
249
+ anyscale/client/openapi_client/models/cluster_event_source.py,sha256=91NhcrFfTUPrDVt3B-VDdt3BNsrejOJKh0v_zC49cK8,3096
249
250
  anyscale/client/openapi_client/models/cluster_events_output.py,sha256=YUHkexy7mGLouGg3YwbJFzY8cryvbvwR-AokzmTeDDI,5351
250
251
  anyscale/client/openapi_client/models/cluster_features.py,sha256=WKGsgFLmCCRHrBMIgMLBmKs82yJ8nQAWD0Gd0KTN4w0,4838
251
252
  anyscale/client/openapi_client/models/cluster_management_stack_versions.py,sha256=bmfziKzWYVRKWthh1xQs013bz5Eg74H3xd0Urm7bOpA,2874
@@ -256,6 +257,7 @@ anyscale/client/openapi_client/models/cluster_status_details.py,sha256=Sj086_AZa
256
257
  anyscale/client/openapi_client/models/clusterauthresponse_response.py,sha256=rwq8UV5AKtjFkrWg0_k94EggUQ2OrSFkm36tIFK7YEk,3627
257
258
  anyscale/client/openapi_client/models/clusterconfig_response.py,sha256=7lOcvgwkBDR9i2BDbxvsV6L3BDxocEu5NFcOGKu7iaY,3561
258
259
  anyscale/client/openapi_client/models/clusterconfigwithsessionidletimeout_response.py,sha256=L0vEMcAMSI4aN-vEfgU_HxU2GPTnN9tHKIfey5EL9pQ,3803
260
+ anyscale/client/openapi_client/models/clusterevent_list_response.py,sha256=mtfYHoHjpzqg_VOyIn6XvcW71pfBPlfrxjVP6wxHsX4,4377
259
261
  anyscale/client/openapi_client/models/clustereventsoutput_response.py,sha256=vFPLzXf_sRs8LAg16Ht6Oel18w6FISg7MLFi4YlTvHs,3627
260
262
  anyscale/client/openapi_client/models/clusterfeatures_response.py,sha256=m0GHRo6sAAaSh41ind3rl_AKu5Vy4mfzplFcorYI3hs,3583
261
263
  anyscale/client/openapi_client/models/compute_node_type.py,sha256=Nj7xryJWGX0dqCioFPODIUsrJgDqNm4F0z7uSC0Uqeg,11042
@@ -456,7 +458,7 @@ anyscale/client/openapi_client/models/job_submissions_sort_field.py,sha256=y0NH2
456
458
  anyscale/client/openapi_client/models/jobqueue_response.py,sha256=cwvt1GkB2cKOWohhMukTazJGYmat0zBV4b2dvpqixkQ,3506
457
459
  anyscale/client/openapi_client/models/jobs_logs.py,sha256=oGAsEtd7jYx9a8h6d0XUteCckeDujgrTgf-QwJUYVuQ,4576
458
460
  anyscale/client/openapi_client/models/jobs_logs_query_info.py,sha256=rW0zzwJggmaRz2sQoneqQDlU-bueirEHVOjAzHRfeJs,5794
459
- anyscale/client/openapi_client/models/jobs_sort_field.py,sha256=nWLJ9ruTehbT9FB7occ4C6IBJuPlxOXotH9_dZEdAR4,2953
461
+ anyscale/client/openapi_client/models/jobs_sort_field.py,sha256=G5NGcfckLltrUMLhIJsgOjtu9ckBkjyXqOqvb__GNvc,2929
460
462
  anyscale/client/openapi_client/models/jobslogs_response.py,sha256=0wC0BbXsXey1QjDLaNA867W2cSKpw-ShLwZ327ONIWg,3506
461
463
  anyscale/client/openapi_client/models/jobslogsqueryinfo_response.py,sha256=NEI0TbR2WMQWpnUf-DpqpE3LjIkeJXIWTE3UpQ9YrDU,3605
462
464
  anyscale/client/openapi_client/models/json_patch_operation.py,sha256=oHgT9WKmcuAp7fkkvFl0nPhoxdQVmPoxPfF82ivf73k,5419
@@ -663,7 +665,7 @@ anyscale/client/openapi_client/models/sessioncommandid_response.py,sha256=x74buY
663
665
  anyscale/client/openapi_client/models/sessiondescribe_response.py,sha256=Ujer2LG0p_iUY9eBTlUUB99oLB6EGuEq_lEbo950b94,3583
664
666
  anyscale/client/openapi_client/models/sessiondetails_response.py,sha256=Lh-hoiRP3K7OH4sMvIHCJ7VK1JhWdngBy30QP-Z_uto,3572
665
667
  anyscale/client/openapi_client/models/sessionhistoryitem_list_response.py,sha256=H837Bhwhtj9zzzgftglrPVAtkJuCC3bTkpnItPfDMA8,4467
666
- anyscale/client/openapi_client/models/sessions_sort_field.py,sha256=9j_611fWcs61yzEmtV5wUPvSnQ8WrX0J7kfEf7CBbB8,2981
668
+ anyscale/client/openapi_client/models/sessions_sort_field.py,sha256=6C7TSxmnELVnK0l9_g3bSb9nV2fCLQroGdsZlTxymDY,2957
667
669
  anyscale/client/openapi_client/models/sessionsshkey_response.py,sha256=z0YT-uC_DYS6kn1C_2Xs6NHR4eMaOkRg05OUd1w02t0,3561
668
670
  anyscale/client/openapi_client/models/setup_initialize_session_options.py,sha256=6z4dZI7oa_YALBUGk3FVtNR8Kt4Sj8YaUKlcrIDNhZ0,6896
669
671
  anyscale/client/openapi_client/models/show_otp_source_return_api_model.py,sha256=gNK_eO-cTjA-aMCD2-U61psMxVsD4N9DzT6JQlOV1kQ,3642
@@ -683,7 +685,7 @@ anyscale/client/openapi_client/models/stop_session_options.py,sha256=8ulrBPdfMNE
683
685
  anyscale/client/openapi_client/models/stream_publish_request.py,sha256=39FNPmJYIg-nGNbIVyNoYkMlt4OjrVY9nVnqufHA7Ms,7774
684
686
  anyscale/client/openapi_client/models/subnet_id_with_availability_zone_aws.py,sha256=S2pj-e91QvTmbUhT_TBzYr8_ysxwl9uXabNHFDJJRzQ,4754
685
687
  anyscale/client/openapi_client/models/support_requests_query.py,sha256=uSM7EnvidalnDMA5rbu-wGFsP9PX8qdUwc7cABJ6ogw,5496
686
- anyscale/client/openapi_client/models/supportedbaseimagesenum.py,sha256=MjB8ksf_BA6lGpEUIRO_Rir9sVqkdmK4styGDj0KAx0,129377
688
+ anyscale/client/openapi_client/models/supportedbaseimagesenum.py,sha256=zWlyboc4d0_zskjQMKTv8mXFWYuv0jR3kIMdVnXUB2o,133112
687
689
  anyscale/client/openapi_client/models/templatized_compute_configs.py,sha256=PkxHWZl7w0U4jLYmRG303IEfE-B3VI9zdrMCV5CTGJk,6779
688
690
  anyscale/client/openapi_client/models/templatized_decorated_application_templates.py,sha256=a7mIVW12pYxghlud4quzp_w3vRzpW6yMma32zjOkMeI,7163
689
691
  anyscale/client/openapi_client/models/templatizedcomputeconfigs_response.py,sha256=5ZOMoPL77Dq1Ih1doGrshJ_AwKJg4ASefz_MT9HRq5c,3693
@@ -698,6 +700,7 @@ anyscale/client/openapi_client/models/tryloginemailresponse_response.py,sha256=O
698
700
  anyscale/client/openapi_client/models/unified_job_sort_field.py,sha256=jshTGJgBavjvCYTGNR74Fz18Ut6HzCla_uozGvcqS9g,2986
699
701
  anyscale/client/openapi_client/models/unified_job_status.py,sha256=Pbe6P2h0gGHky0ghEqDzEQwRjcecsIe9Ez72fmTnlz0,3415
700
702
  anyscale/client/openapi_client/models/unified_job_type.py,sha256=bgjHYG3vi5r0853mteoY6ENQcCaGIBj2l1OmWRWSZ2Q,2897
703
+ anyscale/client/openapi_client/models/update_cloud_collaborator.py,sha256=9jWSKGBhCxWg68CbCtFpP388nu55D5Ol6qYiDq_Jvyg,3793
701
704
  anyscale/client/openapi_client/models/update_cloud_with_cloud_resource.py,sha256=6eRMQHPB0s02qJoWvSiuHvtju467k5OsKuufd2Lch2c,5876
702
705
  anyscale/client/openapi_client/models/update_cloud_with_cloud_resource_gcp.py,sha256=qrHjRe0pFdddwx8ZsA6V2mIXjnX6NYBKBQV2GBja6Ck,5941
703
706
  anyscale/client/openapi_client/models/update_cluster_dns.py,sha256=eFCs_MSsb21TPWmPb4MQ67R0bcxfbTaCm2pdKh1FkEw,4575
@@ -771,11 +774,11 @@ anyscale/cloud/_private/cloud_sdk.py,sha256=kNhDJcbCArmgApATLgZb6b3kZ4YT_uHYCw0u
771
774
  anyscale/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
772
775
  anyscale/commands/aggregated_instance_usage_commands.py,sha256=TRP1X3hdIWbKg9V20VtazlDXsYAeV--M0DH3-Z5tnj4,2293
773
776
  anyscale/commands/auth_commands.py,sha256=X1g6Yu9kqgPb4HLODlZTYEk8G5AVLeyizPIgagWx-p0,1026
774
- anyscale/commands/cloud_commands.py,sha256=4hC-NtyHxTMOFxxtj2wsaCw0Fvmtoa0oEM8tZwX_4sA,37927
777
+ anyscale/commands/cloud_commands.py,sha256=PwDGw8CMTdJRoIqmW8i4hzwJSAaegQVwUs_7IP8YfxA,39061
775
778
  anyscale/commands/cloud_commands_util.py,sha256=d-6TSZ_syrGkZ3Fc1uRX6jG4dqYMebNkBNpYLojOJFg,247
776
779
  anyscale/commands/cluster_commands.py,sha256=taNcffyFfqJ1MgOQd0cz9kzRXWFTdp-wfLPM4l_2tBc,13487
777
780
  anyscale/commands/cluster_env_commands.py,sha256=KNWylyE8Ew1sDi7yu2Tp4RLcRu2_KJJJIzVGRyPflJo,3899
778
- anyscale/commands/command_examples.py,sha256=IYHNL4CbkGQ81MUP9YfKj0zsRxWaVFTdscUWiyxweNE,21478
781
+ anyscale/commands/command_examples.py,sha256=WrZWuBNHmdtDLN8mE28q54BO6ZocTUzBHZFCHyj7DZw,21559
779
782
  anyscale/commands/compute_config_commands.py,sha256=vdyrtMcdP8eeK32p_Y6zF-qps6_SyzprhbjRZ9p18tQ,7828
780
783
  anyscale/commands/config_commands.py,sha256=p55uM6WrhfbFoRXC9hNAV-8c5ANghw7tBUYwaQDAtjE,7195
781
784
  anyscale/commands/exec_commands.py,sha256=cMOP1u6xQbl81h69Jug3y73XnNSwpbM6XC1X57SIp4c,465
@@ -792,8 +795,8 @@ anyscale/commands/organization_invitation_commands.py,sha256=L0OEz_mF5Dm02KjVzDu
792
795
  anyscale/commands/project_commands.py,sha256=xVm-W5kKzgfbQjAiHSRhnyMIlYgGji1TUfYAi8QrGBo,7131
793
796
  anyscale/commands/resource_quota_commands.py,sha256=J6r8b6Bo1wMys5pYWieD6F-VsC2OpQZGVLaNFlvAKmI,8536
794
797
  anyscale/commands/schedule_commands.py,sha256=UPJir8mOAYCUhdL4W43n9WAUlWXpjNHyT048ymhyLRQ,14418
795
- anyscale/commands/service_account_commands.py,sha256=mX8qQjJHnqpSM_7acfQ7ofdCL73uJEl7oznRvPMyoVs,2358
796
- anyscale/commands/service_commands.py,sha256=5ftZvZnjyTCbndayoO_kM8essL48frCVnmF7XQdb6co,23558
798
+ anyscale/commands/service_account_commands.py,sha256=u45N2akHsZxyu5LK03FGEEnZh4dTt4B2Be-dXgbSg3U,3977
799
+ anyscale/commands/service_commands.py,sha256=zS8B3k710ZPAnYOeeuZr_KovnZP7q3D2wiP17JpGmds,25410
797
800
  anyscale/commands/session_commands_hidden.py,sha256=APEypnUB1yV2Rr6wdSFWy1vQbAnn-lOn0rU2enF5JdM,6200
798
801
  anyscale/commands/user_commands.py,sha256=C-i1dGpdhboywN_2XgPS2BekKx2y6LZq8c8gvS0S-tY,1259
799
802
  anyscale/commands/util.py,sha256=h34d1OUOjcC_QMUGc8th-sAp7xDGs4l7YeYmJx82BKk,5106
@@ -818,14 +821,14 @@ anyscale/connect_utils/start_interactive_session.py,sha256=NdS5qCnhPNMUA-v_F0l96
818
821
  anyscale/controllers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
819
822
  anyscale/controllers/auth_controller.py,sha256=hDY2sPvUP8pvh8PnlDYH5rCHjQes2v3b_KBVjMbrzeE,5127
820
823
  anyscale/controllers/base_controller.py,sha256=1QFJoScFUV7YTzpKarhwPOc1SvI-xqX3TZmwxKonW6I,1998
821
- anyscale/controllers/cloud_controller.py,sha256=_dYt5Lg47mXclYMuHufTic0ijM3bgstwG2QTCPhifks,156002
824
+ anyscale/controllers/cloud_controller.py,sha256=yRySAL0Zt82d18W5tT7M2QGwP4f8hjJWiBoPnmmXFDo,157602
822
825
  anyscale/controllers/cloud_functional_verification_controller.py,sha256=gTn0bNB-7zpICDFhttEEu4npoKUaKOX44BpVEpmW1l8,33389
823
- anyscale/controllers/cluster_controller.py,sha256=_P4RYX0Qx0wP2dsoAJvzk1jro2F4OBG5691M5zXfQO0,29464
826
+ anyscale/controllers/cluster_controller.py,sha256=f6Lh1zxZ-rmJrJaxE7SBB0YtFtZCa7qXzgxhRLEmUlQ,29275
824
827
  anyscale/controllers/cluster_env_controller.py,sha256=JalGzcmnFtMHefYL5U6ijMY3nX6W6BsMEfZSMtgBvtU,8048
825
828
  anyscale/controllers/compute_config_controller.py,sha256=GnZAJGrPAmGO6MWvqna-0-DBlwC1y8fnKgwsDVa0eDs,14110
826
829
  anyscale/controllers/config_controller.py,sha256=VsfdARHxo4tMLfeiYkTNOMGW3sIcNhVqYi37-SruKnk,17125
827
830
  anyscale/controllers/experimental_integrations_controller.py,sha256=_22_hAQCJIMg3E10s8xajoFF6Lf1HqVlAdAVt0Rh2DY,3889
828
- anyscale/controllers/job_controller.py,sha256=DMLGWy3XohQU4Cg7gWxSM_xpCmVTvjIjYf0NbYvp-eY,25306
831
+ anyscale/controllers/job_controller.py,sha256=upFMeLmQyXD8FfUdUxt6om9CgLvyqV19HExK6dV2a3Y,25196
829
832
  anyscale/controllers/jobs_bg_controller.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
830
833
  anyscale/controllers/list_controller.py,sha256=oaOS6oo2TKPpXhGjs_laxuIVKinv3FwYfHt1CIzeTuU,11621
831
834
  anyscale/controllers/logs_controller.py,sha256=x5GBUVdPYhbWRA3RfMQZJi3hBS2i35RkgzROfmY47h4,17647
@@ -833,7 +836,6 @@ anyscale/controllers/machine_controller.py,sha256=WauNi7Spzt2TFZrIN4PwULzgJZBVDF
833
836
  anyscale/controllers/machine_pool_controller.py,sha256=zRWDJgnkusLfOKtaOB2c3FSE70e2SaZS0iGwO39Rar8,3574
834
837
  anyscale/controllers/project_controller.py,sha256=kiGYUNCbYvO0MtzT8qUZLo4YBmfLMHObCjyFGWrByM0,11108
835
838
  anyscale/controllers/schedule_controller.py,sha256=4yLsWfRVqAFAkSV-eUnvLHw1732SUY7oWsgjeJrhhL8,11910
836
- anyscale/controllers/service_account_controller.py,sha256=nz9PULXuG72XcdHxOGfa0VlOip9ISOiIFah3mF1wPF0,6357
837
839
  anyscale/controllers/service_controller.py,sha256=RjYVWpGJjFbFDkEDfHpQNINR0tUbGVDkyDg3l-jakeU,16960
838
840
  anyscale/controllers/workspace_controller.py,sha256=LNjLMxQ29vBvYiVVLUWVl3AXTHlRU4Ohao0EgiD4ofI,8449
839
841
  anyscale/controllers/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -874,7 +876,7 @@ anyscale/project/_private/project_sdk.py,sha256=wYVCHpF4kfmI4UTa4-zdCL4m7ip3SqLw
874
876
  anyscale/resource_quota/__init__.py,sha256=UvK9xIuz8DMHqiTC6Eu8Pw-Ly_yXtTMhI88a9Rqu4Uw,2853
875
877
  anyscale/resource_quota/commands.py,sha256=d7J4Aejx_uBrDRVPozqt_DcPVocq0eGWTBAUHXylttU,3683
876
878
  anyscale/resource_quota/models.py,sha256=xbq6Lde63r4SPwHmxIXzpdPX_K7exVippzddJUIw0Zo,10950
877
- anyscale/resource_quota/_private/resource_quota_sdk.py,sha256=NrMoS7JhHS3xrqAgx6C20ddf5lIhLt7S24_ukWcQ4QA,4135
879
+ anyscale/resource_quota/_private/resource_quota_sdk.py,sha256=D5P7fboC4k7XLE6GkKhWgzLzbcvZpbAovgSIACnQDxs,4524
878
880
  anyscale/schedule/__init__.py,sha256=xZ07hHVUBMs_6tkhIJYqdskoDtgAndL7Zb0bMY9fCF8,2867
879
881
  anyscale/schedule/commands.py,sha256=hIWgDRUVOXpQusnxlt7aPgHtmfi6GAr__4kUWRJ6YGo,4511
880
882
  anyscale/schedule/models.py,sha256=l3vVpY6ovr1vAgiwjFjVXyHa2tTJ0cLCR0cFIIpllKg,4561
@@ -886,7 +888,7 @@ anyscale/sdk/anyscale_client/exceptions.py,sha256=A57t810Y_rVxFpbQlfaDhCwOjeFSB6
886
888
  anyscale/sdk/anyscale_client/rest.py,sha256=HVsalJFwXwGTEYgVsLJcsLKUU47wZ5oFSWmOsT2LkMM,12499
887
889
  anyscale/sdk/anyscale_client/sdk.py,sha256=donjqpTmWrGZhQOp5ludnKNBJoIZbMPU5EKTh6QoHW8,27604
888
890
  anyscale/sdk/anyscale_client/api/__init__.py,sha256=aI2dYRCOMQk0Ma2_qiEkpFpQGkEquzKNPGPSErfbhro,142
889
- anyscale/sdk/anyscale_client/api/default_api.py,sha256=_aXHJKt5_jaqJSQqIrVAus6UPrmNSGhHSGxqZSXEgrk,537310
891
+ anyscale/sdk/anyscale_client/api/default_api.py,sha256=LZ80ZUY62CGpOwM5RuMrcOwSXYP0YTcKHWw55CbJhw4,542726
890
892
  anyscale/sdk/anyscale_client/models/__init__.py,sha256=L26W47ClDCFq_5zMCgl6umG0H2BtaX6xu1Qa8ebmzto,15373
891
893
  anyscale/sdk/anyscale_client/models/access_config.py,sha256=FOH_2UU2astWm_ilA1_FpWqKQRxwMYXjGC-UT4Zj65Y,3646
892
894
  anyscale/sdk/anyscale_client/models/app_config.py,sha256=1sWYt1jiljHiXtWCQi7HJw4sBvulaqPV8tmTvNpgZYI,13439
@@ -897,7 +899,7 @@ anyscale/sdk/anyscale_client/models/apply_production_service_v2_model.py,sha256=
897
899
  anyscale/sdk/anyscale_client/models/apply_service_model.py,sha256=ZCOOYhB3WxBlcRH8TdKJyraiTWZl45rF19INfm_XmzE,19551
898
900
  anyscale/sdk/anyscale_client/models/archive_status.py,sha256=C5z72r5glAaa5cOXzwhECfBN3QiVP769B_2_Q9G4znk,2873
899
901
  anyscale/sdk/anyscale_client/models/base_job_status.py,sha256=wW3Cq4H1Bchg1OVf-f0eQyEugMDvM8BgDu6zrAQuYic,3008
900
- anyscale/sdk/anyscale_client/models/baseimagesenum.py,sha256=q5uRJgUVeIobijamM43WN2qH7H4I004lpVztA2lS6DM,212370
902
+ anyscale/sdk/anyscale_client/models/baseimagesenum.py,sha256=5qQr_bH9eoeYksSyHd2oQrhjMacU4OBu4Hwm4-nI8hg,216861
901
903
  anyscale/sdk/anyscale_client/models/build.py,sha256=xiHlZqdnn-jAcbsLp735tjXG4f9TX49ADYqkbL39zLQ,20306
902
904
  anyscale/sdk/anyscale_client/models/build_list_response.py,sha256=TF6awv_aL-Ng2luxUqScxK4goTpYQftyljrMhAGp2B0,4270
903
905
  anyscale/sdk/anyscale_client/models/build_log_response.py,sha256=CzBvxz8Oh3TJ3Kd2BpoSlXfhdiUKCSNp558nHf6PxP0,3529
@@ -991,7 +993,7 @@ anyscale/sdk/anyscale_client/models/job_queue_spec.py,sha256=6rfyCkyYCsLFIaq8m-f
991
993
  anyscale/sdk/anyscale_client/models/job_run_type.py,sha256=t2_LBY7PntZi5_zTEh4_JGH2eyjalGre4RVPG5d6qdc,2888
992
994
  anyscale/sdk/anyscale_client/models/job_status.py,sha256=gUFnvO3SJDTIsfculUWjlcrqDnBgL7zLqp15qyafW6k,2992
993
995
  anyscale/sdk/anyscale_client/models/jobs_query.py,sha256=QC-cZsymG4Hc7CE6atosIsLkuQ9BujtuxtjPTLjVyGY,15582
994
- anyscale/sdk/anyscale_client/models/jobs_sort_field.py,sha256=9DO4p5o4Yi1_6aXv31SPoCH__idqjExEzSRvelJJa-U,2951
996
+ anyscale/sdk/anyscale_client/models/jobs_sort_field.py,sha256=SZTibpFyBhP7wvvsUh7pBOtJYwIQkFOnYwvAZEOMsa8,2927
995
997
  anyscale/sdk/anyscale_client/models/list_response_metadata.py,sha256=gzH9tialntJ3AHSN1RTL1jMVgmgH28Wj7HAxwLi0a2Y,4214
996
998
  anyscale/sdk/anyscale_client/models/list_service_model.py,sha256=fmEvGc9sYpaY42Hru-6tVSr7JLPiD-cEuCljxwifMy4,11220
997
999
  anyscale/sdk/anyscale_client/models/listservicemodel_list_response.py,sha256=BUh7fEjTAo1U-1dPIJWJovetpQj3WL24dWUzi-CzmuY,4435
@@ -1070,7 +1072,7 @@ anyscale/sdk/anyscale_client/models/ssoconfig_response.py,sha256=_ezyQtU4CI25mYs
1070
1072
  anyscale/sdk/anyscale_client/models/start_cluster_options.py,sha256=hlCCHVqxwT70lJVL9mg7XhcoM_6nPcl6LmzMbIuJ-IM,6404
1071
1073
  anyscale/sdk/anyscale_client/models/start_session_options.py,sha256=y6Xa9hGFCMimdzCq-8k9MegI5JHelXoNve_UbGHWI08,6943
1072
1074
  anyscale/sdk/anyscale_client/models/static_sso_config.py,sha256=Bq_Pmc1-DKVKiX-xwm6bOc9hw3400U9YZ4-iN93tTSg,7119
1073
- anyscale/sdk/anyscale_client/models/supportedbaseimagesenum.py,sha256=t4uYVIX85fvGZieeS6TynoD48F1Bj424sHks_lyivgY,129375
1075
+ anyscale/sdk/anyscale_client/models/supportedbaseimagesenum.py,sha256=qZ1HMACAxN3ATh64jrHHSa6z5BOZJ43KM5JlUIKThpY,133110
1074
1076
  anyscale/sdk/anyscale_client/models/terminate_cluster_options.py,sha256=G88vOv_i5E-CXT5IFGjnu0oZ6diycd9UXI-go9o3vLE,3883
1075
1077
  anyscale/sdk/anyscale_client/models/terminate_session_options.py,sha256=eeWuiUVUZnojpojWbnO4VNijiI7y4S8JyW948Eh3quE,6621
1076
1078
  anyscale/sdk/anyscale_client/models/text_query.py,sha256=NVGbkdvoJxTiCtDhbkiwCUGsqHrewENVRvkh_njNGzg,5105
@@ -1087,10 +1089,14 @@ anyscale/sdk/anyscale_client/models/user_service_access_types.py,sha256=3gW1L_VT
1087
1089
  anyscale/sdk/anyscale_client/models/ux_instance.py,sha256=F2F2cxAJ5GElRgHcrxpB7GEpvhM-PJa3qpBBYmhwlUQ,15935
1088
1090
  anyscale/sdk/anyscale_client/models/validation_error.py,sha256=h5Cope8JNSDE3Fpr1TfjcnuJPThF0dd_uawvltOqPt0,4901
1089
1091
  anyscale/sdk/anyscale_client/models/worker_node_type.py,sha256=bI3sPVPA4t4axjdbj7pNlPkKPJDDkOnMgiN7B_o3IZI,15046
1090
- anyscale/service/__init__.py,sha256=TCy-chwvDLzTYd8QoTpVsgSH3opz-VzjRgPNuGCBtTE,5107
1091
- anyscale/service/commands.py,sha256=_oakFgvMqZzYHfHMTnUAzoQMIuOWyW2N2i9fvIlIp-Q,8946
1092
+ anyscale/service/__init__.py,sha256=-a1wMAR5ouEztZEpoS1c8iFCEKcaOtryTqXON8r2BJw,5702
1093
+ anyscale/service/commands.py,sha256=esBm_l2iTTgk6idTLbetBUe-p3wTxp2y6hCATmiFH7o,10047
1092
1094
  anyscale/service/models.py,sha256=-e-V1RKZ34ZXPzEBkvq4vfrvum33E_JTTu6uxmDA1Ak,24038
1093
- anyscale/service/_private/service_sdk.py,sha256=WCXIWwEPnISdRnA6lTGdchKoixkG1G7RYoapuROA1Co,28324
1095
+ anyscale/service/_private/service_sdk.py,sha256=RxTRZzD4KHw7H7k9bEsKb9IBqyVfMT3ImVxTxxfDp8M,28653
1096
+ anyscale/service_account/__init__.py,sha256=jV1OFo_ZTxU3vuPztO1300TuoMz-Ocudm6_84ZtjPQ4,2764
1097
+ anyscale/service_account/commands.py,sha256=zipHgr0-HtxwpZv_fOU6RKe_l8HFIrUSxvzyikTYhl8,3429
1098
+ anyscale/service_account/models.py,sha256=MhY-Fo5AZQ68brqtolTUMW3WQDrkNyL1udtNg70sNAU,2189
1099
+ anyscale/service_account/_private/service_account_sdk.py,sha256=MGF64copqVjDJgY05rOlKJOQ0KsIE6mjzWuM6XcyvUs,3590
1094
1100
  anyscale/shared_anyscale_utils/__init__.py,sha256=2iCXV0v5drnxM8pyFCGm4cthya6zkw1R5RwqMtNO5a0,80
1095
1101
  anyscale/shared_anyscale_utils/aws.py,sha256=MDWTFNOAD4fwxLWzv1taGhl1qP9u08qdsdbwSRvxbd4,5119
1096
1102
  anyscale/shared_anyscale_utils/bytes_util.py,sha256=6cpIW0LMymqivnww4uxFeWdPuyBxtwLf8Oo8FusMBxg,226
@@ -1098,7 +1104,7 @@ anyscale/shared_anyscale_utils/conf.py,sha256=nn5Uh-Aj8qShfnFBciKDUarnaGUGo1Xptf
1098
1104
  anyscale/shared_anyscale_utils/default_anyscale_aws.yaml,sha256=wU8xPUQ6sMtVB5q3QYYGYlhCKkI5QDtg8LvH53hQ6WE,1650
1099
1105
  anyscale/shared_anyscale_utils/default_anyscale_gcp.yaml,sha256=rmwavzx7aTsSPio-jmYhdvfkHCuu8BOkNOuMSKMgBRE,1817
1100
1106
  anyscale/shared_anyscale_utils/headers.py,sha256=c1PnH7Ag42ESQJkKTWP4ibEujvo9blZcFXEJtQzupUk,1002
1101
- anyscale/shared_anyscale_utils/latest_ray_version.py,sha256=t3SGeFYS5LpzziLtM09l73G1XgfqqJvmtMaFlhtJzZA,110
1107
+ anyscale/shared_anyscale_utils/latest_ray_version.py,sha256=QqsypiiNr-k6c_d4JZTxvbFiUjJJVG4A5m9yG_fbKQA,110
1102
1108
  anyscale/shared_anyscale_utils/project.py,sha256=7gQ6RXWV1bQEWRN5hloj-U3DxmEw6LEEhGoF0oWoAm8,476
1103
1109
  anyscale/shared_anyscale_utils/test_util.py,sha256=bYkCdHV9ZTlFrvHOtub5vivj4TXCct1WECzIPTRMU1I,657
1104
1110
  anyscale/shared_anyscale_utils/util.py,sha256=oT82MhLjJo2-Xb4iLN1_JhGN4rdXWfrkcLe4QDkRx1A,1787
@@ -1109,7 +1115,7 @@ anyscale/shared_anyscale_utils/utils/__init__.py,sha256=M_ebCo5_hZ-aSP8SzcuqKwhC
1109
1115
  anyscale/shared_anyscale_utils/utils/asyncio.py,sha256=aOlH-bw8QJbSIg7-BpbLuy8zBYJqEK56QJD2-DhBEAE,4145
1110
1116
  anyscale/shared_anyscale_utils/utils/byod.py,sha256=yue93FlA9bzlLAtIpSkpVj0-0IWaV8ITgdpkBr3wNvU,1097
1111
1117
  anyscale/shared_anyscale_utils/utils/collections.py,sha256=t_6SZNOskAn7EP0gwgJHRnRxj4ykYj_lxcqwLmUUs08,899
1112
- anyscale/shared_anyscale_utils/utils/id_gen.py,sha256=aUwwG_7Wk7P0le48RHlzQNwcNoSn-41jivcZ1UhN3mo,4730
1118
+ anyscale/shared_anyscale_utils/utils/id_gen.py,sha256=RbVvgGbtkFISaJFnf-ATImUA7VlQ6Wntflfzhfu-fDw,4792
1113
1119
  anyscale/shared_anyscale_utils/utils/protected_string.py,sha256=8-T3VC37NrWeAhc7aPjMsUd9zhjcSF1xaGo2GRNjLL4,3166
1114
1120
  anyscale/shared_anyscale_utils/utils/ray_semver.py,sha256=OzIJuawv4Ja-_irSCLUO8e-P1wc-qMvOAJcr689_hn4,2539
1115
1121
  anyscale/user/__init__.py,sha256=mWpx3KTLWGWMB5m6a_GKOaqCOm-sqhBkXYb6iM78OOA,1220
@@ -1151,10 +1157,10 @@ anyscale/workspace/__init__.py,sha256=fIxkn8b_HADCQl5njPAbcJxAf0sajZoc55L_wMvGAx
1151
1157
  anyscale/workspace/commands.py,sha256=21FubFd2wmEwlVbk-ng-adwBm-O4ZPBgEJnoavbfvbU,14035
1152
1158
  anyscale/workspace/models.py,sha256=Ey67KqxdslS51yK7xetbRaFjE8sURAArpf-F38r3cUU,9760
1153
1159
  anyscale/workspace/_private/workspace_sdk.py,sha256=4LOBmMm7kd-O94ii5uP1UDbkWLComh6zI5QmE2lXRTY,26824
1154
- anyscale-0.25.1.dist-info/LICENSE,sha256=UOPu974Wzsna6frFv1mu4VrZgNdZT7lbcNPzo5ue3qs,3494
1155
- anyscale-0.25.1.dist-info/METADATA,sha256=MgHSihInDi_PMND4QVTUqA2jVvlTwXvFunKibxga2Qs,3049
1156
- anyscale-0.25.1.dist-info/NOTICE,sha256=gHqDhSnUYlRXX-mDOL5FtE7774oiKyV_HO80qM3r9Xo,196
1157
- anyscale-0.25.1.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
1158
- anyscale-0.25.1.dist-info/entry_points.txt,sha256=NqO18sCZn6zG6J0S38itjcN00s7aE3C3v3k5lMAfCLk,51
1159
- anyscale-0.25.1.dist-info/top_level.txt,sha256=g3NVNS8Oh0NZwbFFgeX696C5MZZkS5dqV2NqcsbDRJE,9
1160
- anyscale-0.25.1.dist-info/RECORD,,
1160
+ anyscale-0.25.3.dist-info/LICENSE,sha256=UOPu974Wzsna6frFv1mu4VrZgNdZT7lbcNPzo5ue3qs,3494
1161
+ anyscale-0.25.3.dist-info/METADATA,sha256=YBLyVuJeB1XICwEcWyZST4_3HQljlpcBrQx1LvtQkjg,3049
1162
+ anyscale-0.25.3.dist-info/NOTICE,sha256=gHqDhSnUYlRXX-mDOL5FtE7774oiKyV_HO80qM3r9Xo,196
1163
+ anyscale-0.25.3.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
1164
+ anyscale-0.25.3.dist-info/entry_points.txt,sha256=NqO18sCZn6zG6J0S38itjcN00s7aE3C3v3k5lMAfCLk,51
1165
+ anyscale-0.25.3.dist-info/top_level.txt,sha256=g3NVNS8Oh0NZwbFFgeX696C5MZZkS5dqV2NqcsbDRJE,9
1166
+ anyscale-0.25.3.dist-info/RECORD,,
@@ -1,168 +0,0 @@
1
- from typing import List, Optional
2
-
3
- import click
4
- from rich import box
5
- from rich.console import Console
6
- from rich.table import Table
7
-
8
- from anyscale.cli_logger import BlockLogger
9
- from anyscale.client.openapi_client.models import (
10
- AnyscaleServiceAccount,
11
- ServerSessionToken,
12
- )
13
- from anyscale.controllers.base_controller import BaseController
14
-
15
-
16
- WARNING_COLOR = "bold red"
17
- DEFAULT_OVERFLOW = "fold"
18
- DEFAULT_COL_WIDTH = 36
19
- ONE_HUNDRED_YEARS_IN_SECONDS = 3153600000
20
-
21
-
22
- class ServiceAccountController(BaseController):
23
- def __init__(self):
24
- super().__init__()
25
- self.log = BlockLogger()
26
- self.console = Console()
27
-
28
- def _get_service_account_identifier(
29
- self, email: Optional[str], name: Optional[str]
30
- ) -> str:
31
- # Logic can be simplified but kept verbose for clarity and typing
32
- if not email and not name:
33
- raise click.ClickException("Either email or name must be provided.")
34
- if email and name:
35
- raise click.ClickException("Only one of email or name can be provided.")
36
- if email:
37
- return email
38
- elif name:
39
- return name
40
-
41
- raise click.ClickException("Internal server error. Please contact support.")
42
-
43
- def _validate_exactly_one_service_account_per_email_or_name(
44
- self, service_accounts: List[AnyscaleServiceAccount], identifier: str,
45
- ):
46
- if len(service_accounts) == 0:
47
- raise click.ClickException(f"No service account {identifier} found.")
48
-
49
- if len(service_accounts) > 1:
50
- raise click.ClickException(
51
- f"Internal server error when fetching service account {identifier}. Please contact support."
52
- )
53
-
54
- def _print_new_api_key(self, api_key: ServerSessionToken):
55
- self.console.print(
56
- "The following API token for the service account will only appear once:\n",
57
- style=WARNING_COLOR,
58
- )
59
- self.console.print(api_key.server_session_id)
60
-
61
- def create_service_account(self, name: str):
62
- service_account = self.api_client.create_service_account_api_v2_users_service_accounts_post(
63
- name=name
64
- ).result
65
- api_key = self.api_client.create_api_key_api_v2_users_create_api_key_post(
66
- api_key_parameters={
67
- "user_id": service_account.user_id,
68
- "duration": ONE_HUNDRED_YEARS_IN_SECONDS,
69
- }
70
- ).result
71
-
72
- self.console.print(f"\nService account {name} created successfully.")
73
- self._print_new_api_key(api_key)
74
-
75
- def create_new_service_account_api_key(
76
- self, email: Optional[str], name: Optional[str]
77
- ):
78
- service_accounts = (
79
- self.api_client.list_organization_collaborators_api_v2_organization_collaborators_get(
80
- is_service_account=True, email=email, name=name
81
- )
82
- ).results
83
- self._validate_exactly_one_service_account_per_email_or_name(
84
- service_accounts, self._get_service_account_identifier(email, name)
85
- )
86
- sa = service_accounts[0]
87
- api_key = self.api_client.create_api_key_api_v2_users_create_api_key_post(
88
- api_key_parameters={
89
- "user_id": sa.user_id,
90
- "duration": ONE_HUNDRED_YEARS_IN_SECONDS,
91
- }
92
- ).result
93
-
94
- self._print_new_api_key(api_key)
95
-
96
- def _print_service_account_table(
97
- self, service_accounts: List[AnyscaleServiceAccount]
98
- ):
99
- table = Table(box=box.MINIMAL, header_style="bright_cyan")
100
- table.add_column("NAME", width=DEFAULT_COL_WIDTH, overflow=DEFAULT_OVERFLOW)
101
- table.add_column(
102
- "CREATED AT",
103
- style="dim",
104
- width=DEFAULT_COL_WIDTH,
105
- overflow=DEFAULT_OVERFLOW,
106
- )
107
- table.add_column(
108
- "ORGANIZATION ROLE", width=DEFAULT_COL_WIDTH, overflow=DEFAULT_OVERFLOW
109
- )
110
- table.add_column("EMAIL", width=80, overflow=DEFAULT_OVERFLOW)
111
- for sa in service_accounts:
112
- table.add_row(
113
- sa.name,
114
- sa.created_at.strftime("%Y/%m/%d"),
115
- sa.permission_level,
116
- sa.email,
117
- )
118
-
119
- self.console.print(table)
120
-
121
- def list_service_accounts(self, max_items: int):
122
- service_accounts = self.api_client.list_organization_collaborators_api_v2_organization_collaborators_get(
123
- is_service_account=True
124
- ).results
125
-
126
- self._print_service_account_table(service_accounts[:max_items])
127
-
128
- def delete_service_account(self, email: Optional[str], name: Optional[str]):
129
- service_accounts = self.api_client.list_organization_collaborators_api_v2_organization_collaborators_get(
130
- is_service_account=True, email=email, name=name
131
- ).results
132
- identifier = self._get_service_account_identifier(email, name)
133
- self._validate_exactly_one_service_account_per_email_or_name(
134
- service_accounts, identifier
135
- )
136
- sa = service_accounts[0]
137
- self.api_client.remove_organization_collaborator_api_v2_organization_collaborators_identity_id_delete(
138
- identity_id=sa.id
139
- )
140
- self.console.print(f"Service account {identifier} deleted successfully.")
141
-
142
- def rotate_service_account_api_keys(
143
- self, email: Optional[str], name: Optional[str]
144
- ):
145
- service_accounts = (
146
- self.api_client.list_organization_collaborators_api_v2_organization_collaborators_get(
147
- is_service_account=True, email=email, name=name
148
- )
149
- ).results
150
-
151
- identifier = self._get_service_account_identifier(email, name)
152
- self._validate_exactly_one_service_account_per_email_or_name(
153
- service_accounts, identifier
154
- )
155
- sa = service_accounts[0]
156
- self.api_client.rotate_api_key_for_user_api_v2_organization_collaborators_rotate_api_key_for_user_user_id_post(
157
- sa.user_id
158
- )
159
- api_key = self.api_client.create_api_key_api_v2_users_create_api_key_post(
160
- api_key_parameters={
161
- "user_id": sa.user_id,
162
- "duration": ONE_HUNDRED_YEARS_IN_SECONDS,
163
- }
164
- ).result
165
- self.console.print(
166
- f"\nAll API keys for service account {identifier} rotated successfully."
167
- )
168
- self._print_new_api_key(api_key)