anyscale 0.26.45__py3-none-any.whl → 0.26.47__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.
- anyscale/_private/anyscale_client/anyscale_client.py +4 -2
- anyscale/_private/anyscale_client/common.py +2 -0
- anyscale/_private/anyscale_client/fake_anyscale_client.py +4 -1
- anyscale/client/README.md +4 -0
- anyscale/client/openapi_client/__init__.py +2 -0
- anyscale/client/openapi_client/api/default_api.py +247 -0
- anyscale/client/openapi_client/models/__init__.py +2 -0
- anyscale/client/openapi_client/models/clouddeployment_response.py +121 -0
- anyscale/client/openapi_client/models/collaborator_type.py +101 -0
- anyscale/client/openapi_client/models/task_table_row.py +29 -3
- anyscale/cloud_resource.py +120 -150
- anyscale/commands/cloud_commands.py +46 -3
- anyscale/commands/command_examples.py +8 -0
- anyscale/controllers/cloud_controller.py +361 -76
- anyscale/gcp_verification.py +51 -38
- anyscale/utils/s3.py +2 -2
- anyscale/utils/user_utils.py +2 -1
- anyscale/version.py +1 -1
- {anyscale-0.26.45.dist-info → anyscale-0.26.47.dist-info}/METADATA +11 -2
- {anyscale-0.26.45.dist-info → anyscale-0.26.47.dist-info}/RECORD +25 -23
- {anyscale-0.26.45.dist-info → anyscale-0.26.47.dist-info}/WHEEL +1 -1
- {anyscale-0.26.45.dist-info → anyscale-0.26.47.dist-info}/entry_points.txt +0 -0
- {anyscale-0.26.45.dist-info → anyscale-0.26.47.dist-info/licenses}/LICENSE +0 -0
- {anyscale-0.26.45.dist-info → anyscale-0.26.47.dist-info/licenses}/NOTICE +0 -0
- {anyscale-0.26.45.dist-info → anyscale-0.26.47.dist-info}/top_level.txt +0 -0
anyscale/gcp_verification.py
CHANGED
|
@@ -15,10 +15,7 @@ from google.iam.v1.policy_pb2 import Binding
|
|
|
15
15
|
from googleapiclient.errors import HttpError
|
|
16
16
|
|
|
17
17
|
from anyscale.cli_logger import CloudSetupLogger
|
|
18
|
-
from anyscale.client.openapi_client.models import
|
|
19
|
-
CloudAnalyticsEventCloudResource,
|
|
20
|
-
CreateCloudResourceGCP,
|
|
21
|
-
)
|
|
18
|
+
from anyscale.client.openapi_client.models import CloudAnalyticsEventCloudResource
|
|
22
19
|
from anyscale.shared_anyscale_utils.conf import ANYSCALE_CORS_ORIGIN
|
|
23
20
|
from anyscale.utils.cloud_utils import CloudSetupError
|
|
24
21
|
from anyscale.utils.gcp_managed_setup_utils import enable_project_apis
|
|
@@ -48,9 +45,10 @@ _FILESTORE_NAME_REGEX_PATTERN = r"projects/(?P<project_id>[^/]+)/locations/(?P<l
|
|
|
48
45
|
PROXY_ONLY_SUBNET_PURPOSE = "REGIONAL_MANAGED_PROXY"
|
|
49
46
|
|
|
50
47
|
|
|
51
|
-
def verify_gcp_networking(
|
|
48
|
+
def verify_gcp_networking( # noqa: PLR0911, PLR0913
|
|
52
49
|
factory: GoogleCloudClientFactory,
|
|
53
|
-
|
|
50
|
+
vpc_name: Optional[str],
|
|
51
|
+
subnet_ids: Optional[List[str]],
|
|
54
52
|
project_id: str,
|
|
55
53
|
cloud_region: str,
|
|
56
54
|
logger: GCPLogger,
|
|
@@ -58,8 +56,11 @@ def verify_gcp_networking(
|
|
|
58
56
|
is_private_service_cloud: bool = False,
|
|
59
57
|
) -> bool:
|
|
60
58
|
"""Verify the existence and connectedness of the VPC & Subnet."""
|
|
61
|
-
vpc_name = resources.gcp_vpc_id
|
|
62
59
|
# TODO Verify Internet Gateway
|
|
60
|
+
if not vpc_name:
|
|
61
|
+
logger.internal.warning("No VPC provided. Please provide a VPC.")
|
|
62
|
+
return False
|
|
63
|
+
|
|
63
64
|
try:
|
|
64
65
|
vpc = factory.compute_v1.NetworksClient().get(
|
|
65
66
|
project=project_id, network=vpc_name
|
|
@@ -68,10 +69,14 @@ def verify_gcp_networking(
|
|
|
68
69
|
logger.log_resource_not_found_error("VPC", vpc_name, project_id)
|
|
69
70
|
return False
|
|
70
71
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
72
|
+
if not subnet_ids:
|
|
73
|
+
logger.internal.warning(
|
|
74
|
+
"No subnets provided. Please provide at least one subnet."
|
|
75
|
+
)
|
|
76
|
+
return False
|
|
77
|
+
|
|
78
|
+
subnet_name = subnet_ids[0] # TODO (congding): multiple subnets provided
|
|
79
|
+
if len(subnet_ids) > 1:
|
|
75
80
|
logger.internal.warning(
|
|
76
81
|
"Multiple subnets provided. Only taking the first subnet and ignoring the rest."
|
|
77
82
|
)
|
|
@@ -135,8 +140,8 @@ def _get_proxy_only_subnet_in_vpc(
|
|
|
135
140
|
|
|
136
141
|
def verify_gcp_project( # noqa: PLR0911
|
|
137
142
|
factory: GoogleCloudClientFactory,
|
|
138
|
-
resources: CreateCloudResourceGCP,
|
|
139
143
|
project_id: str,
|
|
144
|
+
enable_memorystore_api: bool,
|
|
140
145
|
logger: GCPLogger,
|
|
141
146
|
strict: bool = False,
|
|
142
147
|
) -> bool:
|
|
@@ -178,7 +183,6 @@ def verify_gcp_project( # noqa: PLR0911
|
|
|
178
183
|
|
|
179
184
|
# Verify that APIs are Enabled
|
|
180
185
|
service_usage_client = factory.build("serviceusage", "v1")
|
|
181
|
-
enable_memorystore_api = resources.memorystore_instance_config is not None
|
|
182
186
|
if enable_memorystore_api:
|
|
183
187
|
apis = GCP_REQUIRED_APIS + ["redis.googleapis.com"] # Memorystore for Redis
|
|
184
188
|
else:
|
|
@@ -233,7 +237,7 @@ def verify_gcp_project( # noqa: PLR0911
|
|
|
233
237
|
|
|
234
238
|
def verify_gcp_access_service_account(
|
|
235
239
|
factory: GoogleCloudClientFactory,
|
|
236
|
-
|
|
240
|
+
anyscale_access_service_account: Optional[str],
|
|
237
241
|
project_id: str,
|
|
238
242
|
logger: GCPLogger,
|
|
239
243
|
) -> bool:
|
|
@@ -241,8 +245,6 @@ def verify_gcp_access_service_account(
|
|
|
241
245
|
|
|
242
246
|
NOTE: We verify that this service account can call signBlob on itself because this is necessary for downloading logs.
|
|
243
247
|
"""
|
|
244
|
-
anyscale_access_service_account = resources.gcp_anyscale_iam_service_account_email
|
|
245
|
-
|
|
246
248
|
service_account_client = factory.build("iam", "v1").projects().serviceAccounts()
|
|
247
249
|
try:
|
|
248
250
|
service_account_iam_policy = service_account_client.getIamPolicy(
|
|
@@ -287,7 +289,7 @@ def verify_gcp_access_service_account(
|
|
|
287
289
|
|
|
288
290
|
def verify_gcp_dataplane_service_account(
|
|
289
291
|
factory: GoogleCloudClientFactory,
|
|
290
|
-
|
|
292
|
+
service_account: Optional[str],
|
|
291
293
|
project_id: str,
|
|
292
294
|
logger: GCPLogger,
|
|
293
295
|
strict: bool = False,
|
|
@@ -297,7 +299,6 @@ def verify_gcp_dataplane_service_account(
|
|
|
297
299
|
Compute Engine's ability to use this role
|
|
298
300
|
This relies on the fact that Compute Engine Service Agent has the roles/compute.serviceAgent Role
|
|
299
301
|
"""
|
|
300
|
-
service_account = resources.gcp_cluster_node_service_account_email
|
|
301
302
|
service_account_client = factory.build("iam", "v1").projects().serviceAccounts()
|
|
302
303
|
try:
|
|
303
304
|
resp = service_account_client.get(
|
|
@@ -346,7 +347,9 @@ def verify_gcp_dataplane_service_account(
|
|
|
346
347
|
|
|
347
348
|
def verify_firewall_policy( # noqa: PLR0911, PLR0912, C901, PLR0913
|
|
348
349
|
factory: GoogleCloudClientFactory,
|
|
349
|
-
|
|
350
|
+
firewall_policy_ids: Optional[List[str]],
|
|
351
|
+
vpc_name: Optional[str],
|
|
352
|
+
subnet_ids: Optional[List[str]],
|
|
350
353
|
project_id: str,
|
|
351
354
|
cloud_region: str,
|
|
352
355
|
use_shared_vpc: bool,
|
|
@@ -355,16 +358,21 @@ def verify_firewall_policy( # noqa: PLR0911, PLR0912, C901, PLR0913
|
|
|
355
358
|
strict: bool = False,
|
|
356
359
|
) -> bool:
|
|
357
360
|
"""Checks if the given firewall exists at either the Global or Regional level."""
|
|
358
|
-
|
|
361
|
+
if not firewall_policy_ids:
|
|
362
|
+
logger.internal.warning(
|
|
363
|
+
"No firewall policies provided. Please provide at least one firewall policy."
|
|
364
|
+
)
|
|
365
|
+
return False
|
|
366
|
+
|
|
367
|
+
firewall_policy = firewall_policy_ids[
|
|
359
368
|
0
|
|
360
369
|
] # TODO (congding): multiple firewall ids provided
|
|
361
|
-
if len(
|
|
370
|
+
if len(firewall_policy_ids) > 1:
|
|
362
371
|
logger.internal.warning(
|
|
363
372
|
"Multiple firewall policies provided. Only taking the first firewall policy and ignoring the rest."
|
|
364
373
|
)
|
|
365
374
|
if strict:
|
|
366
375
|
return False
|
|
367
|
-
vpc_name = resources.gcp_vpc_id
|
|
368
376
|
|
|
369
377
|
firewall = compute_v1.types.compute.FirewallPolicy()
|
|
370
378
|
try:
|
|
@@ -401,8 +409,14 @@ def verify_firewall_policy( # noqa: PLR0911, PLR0912, C901, PLR0913
|
|
|
401
409
|
)
|
|
402
410
|
return False
|
|
403
411
|
|
|
412
|
+
if not subnet_ids:
|
|
413
|
+
logger.internal.warning(
|
|
414
|
+
"No subnets provided. Please provide at least one subnet."
|
|
415
|
+
)
|
|
416
|
+
return False
|
|
417
|
+
|
|
404
418
|
subnet_obj = factory.compute_v1.SubnetworksClient().get(
|
|
405
|
-
project=project_id, subnetwork=
|
|
419
|
+
project=project_id, subnetwork=subnet_ids[0], region=cloud_region
|
|
406
420
|
) # TODO (congding): multiple subnets provided
|
|
407
421
|
subnet = ipaddress.ip_network(subnet_obj.ip_cidr_range)
|
|
408
422
|
|
|
@@ -451,6 +465,10 @@ def verify_firewall_policy( # noqa: PLR0911, PLR0912, C901, PLR0913
|
|
|
451
465
|
return False
|
|
452
466
|
|
|
453
467
|
if use_shared_vpc and is_private_service_cloud:
|
|
468
|
+
if not vpc_name:
|
|
469
|
+
logger.internal.warning("No VPC provided. Please provide a VPC.")
|
|
470
|
+
return False
|
|
471
|
+
|
|
454
472
|
proxy_only_subnet = _get_proxy_only_subnet_in_vpc(
|
|
455
473
|
factory, project_id, cloud_region, vpc_name
|
|
456
474
|
)
|
|
@@ -515,7 +533,8 @@ def _firewall_rules_from_proto_resp(
|
|
|
515
533
|
|
|
516
534
|
def verify_filestore(
|
|
517
535
|
factory: GoogleCloudClientFactory,
|
|
518
|
-
|
|
536
|
+
file_store_instance_name: str,
|
|
537
|
+
vpc_name: Optional[str],
|
|
519
538
|
cloud_region: str,
|
|
520
539
|
logger: GCPLogger,
|
|
521
540
|
strict: bool = False,
|
|
@@ -523,7 +542,6 @@ def verify_filestore(
|
|
|
523
542
|
"""Verify Filestore exists & that it is connected to the correct VPC.
|
|
524
543
|
|
|
525
544
|
TODO: Warn about Filestore size if it is 'too small'."""
|
|
526
|
-
file_store_instance_name = resources.gcp_filestore_config.instance_name
|
|
527
545
|
client = factory.filestore_v1.CloudFilestoreManagerClient()
|
|
528
546
|
try:
|
|
529
547
|
file_store = client.get_instance(name=file_store_instance_name)
|
|
@@ -552,7 +570,6 @@ def verify_filestore(
|
|
|
552
570
|
return False
|
|
553
571
|
|
|
554
572
|
file_store_networks = [v.network for v in file_store.networks]
|
|
555
|
-
vpc_name = resources.gcp_vpc_id
|
|
556
573
|
if not any(vpc_name == network.split("/")[-1] for network in file_store_networks):
|
|
557
574
|
logger.internal.log_resource_error(
|
|
558
575
|
CloudAnalyticsEventCloudResource.GCP_FILESTORE,
|
|
@@ -567,9 +584,11 @@ def verify_filestore(
|
|
|
567
584
|
return True
|
|
568
585
|
|
|
569
586
|
|
|
570
|
-
def verify_cloud_storage( # noqa: PLR0911, PLR0912
|
|
587
|
+
def verify_cloud_storage( # noqa: PLR0911, PLR0912, PLR0913
|
|
571
588
|
factory: GoogleCloudClientFactory,
|
|
572
|
-
|
|
589
|
+
bucket_name: Optional[str],
|
|
590
|
+
controlplane_service_account: Optional[str],
|
|
591
|
+
dataplane_service_account: Optional[str],
|
|
573
592
|
project_id: str,
|
|
574
593
|
cloud_region: str,
|
|
575
594
|
logger: GCPLogger,
|
|
@@ -577,7 +596,6 @@ def verify_cloud_storage( # noqa: PLR0911, PLR0912
|
|
|
577
596
|
):
|
|
578
597
|
"""Verify that the Google Cloud Storage Bucket exists & raises warnings about improper configurations."""
|
|
579
598
|
bucket_client = factory.storage.Client(project_id)
|
|
580
|
-
bucket_name = resources.gcp_cloud_storage_bucket_id
|
|
581
599
|
try:
|
|
582
600
|
bucket = bucket_client.get_bucket(bucket_name)
|
|
583
601
|
except NotFound:
|
|
@@ -634,21 +652,19 @@ def verify_cloud_storage( # noqa: PLR0911, PLR0912
|
|
|
634
652
|
"We suggest granting the predefined roles of `roles/storage.legacyBucketReader` and `roles/storage.objectAdmin`."
|
|
635
653
|
)
|
|
636
654
|
|
|
637
|
-
access_service_account = resources.gcp_anyscale_iam_service_account_email
|
|
638
655
|
if not _verify_service_account_on_bucket(
|
|
639
|
-
f"serviceAccount:{
|
|
656
|
+
f"serviceAccount:{controlplane_service_account}", iam_bindings
|
|
640
657
|
):
|
|
641
658
|
logger.confirm_missing_permission(
|
|
642
659
|
permission_warning.format(
|
|
643
660
|
location="Anyscale access",
|
|
644
|
-
email=
|
|
661
|
+
email=controlplane_service_account,
|
|
645
662
|
bucket=bucket_name,
|
|
646
663
|
)
|
|
647
664
|
)
|
|
648
665
|
if strict:
|
|
649
666
|
return False
|
|
650
667
|
|
|
651
|
-
dataplane_service_account = resources.gcp_cluster_node_service_account_email
|
|
652
668
|
if not _verify_service_account_on_bucket(
|
|
653
669
|
f"serviceAccount:{dataplane_service_account}", iam_bindings
|
|
654
670
|
):
|
|
@@ -726,15 +742,13 @@ def _check_bucket_region(bucket: Bucket, region: str) -> Tuple[bool, str]:
|
|
|
726
742
|
|
|
727
743
|
def verify_memorystore( # noqa: PLR0911
|
|
728
744
|
factory: GoogleCloudClientFactory,
|
|
729
|
-
|
|
745
|
+
redis_instance_name: str,
|
|
746
|
+
cloud_vpc_name: Optional[str],
|
|
730
747
|
logger: GCPLogger,
|
|
731
748
|
strict: bool = False,
|
|
732
749
|
):
|
|
733
750
|
"""Verify that the Google Memorystore exists & raises warnings about improper configurations."""
|
|
734
751
|
client = factory.redis_v1.CloudRedisClient()
|
|
735
|
-
|
|
736
|
-
redis_instance_name = resources.memorystore_instance_config.name
|
|
737
|
-
|
|
738
752
|
try:
|
|
739
753
|
redis_instance = client.get_instance(name=redis_instance_name)
|
|
740
754
|
except (NotFound, PermissionDenied):
|
|
@@ -742,7 +756,6 @@ def verify_memorystore( # noqa: PLR0911
|
|
|
742
756
|
return False
|
|
743
757
|
|
|
744
758
|
# Verify memorystore is in the same VPC as the cloud
|
|
745
|
-
cloud_vpc_name = resources.gcp_vpc_id
|
|
746
759
|
redis_vpc_name = redis_instance.authorized_network.split("/")[-1]
|
|
747
760
|
if cloud_vpc_name != redis_vpc_name:
|
|
748
761
|
logger.internal.log_resource_error(
|
anyscale/utils/s3.py
CHANGED
|
@@ -74,8 +74,8 @@ def _verify_identity_based_s3_access(
|
|
|
74
74
|
iam_role,
|
|
75
75
|
lambda statement: statement["Effect"] == "Allow"
|
|
76
76
|
and (
|
|
77
|
-
"*" in _coerce_to_list(statement
|
|
78
|
-
or s3_bucket.name in str(statement
|
|
77
|
+
"*" in _coerce_to_list(statement.get("Resource"))
|
|
78
|
+
or s3_bucket.name in str(statement.get("Resource"))
|
|
79
79
|
),
|
|
80
80
|
)
|
|
81
81
|
if len(allow_actions_on_role) == 0:
|
anyscale/utils/user_utils.py
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
from click import ClickException
|
|
2
2
|
|
|
3
3
|
from anyscale.client.openapi_client.api.default_api import DefaultApi
|
|
4
|
+
from anyscale.client.openapi_client.models.collaborator_type import CollaboratorType
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
def get_user_id_by_email(api_client: DefaultApi, email: str) -> str:
|
|
7
8
|
users = api_client.list_organization_collaborators_api_v2_organization_collaborators_get(
|
|
8
|
-
email=email
|
|
9
|
+
email=email, collaborator_type=CollaboratorType.ONLY_USER_ACCOUNTS,
|
|
9
10
|
).results
|
|
10
11
|
if len(users) == 0:
|
|
11
12
|
raise ClickException(f"No user found with email {email}.")
|
anyscale/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.26.
|
|
1
|
+
__version__ = "0.26.47"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: anyscale
|
|
3
|
-
Version: 0.26.
|
|
3
|
+
Version: 0.26.47
|
|
4
4
|
Summary: Command Line Interface for Anyscale
|
|
5
5
|
Author: Anyscale Inc.
|
|
6
6
|
License: AS License
|
|
@@ -70,6 +70,15 @@ Requires-Dist: google-cloud-redis; extra == "backend"
|
|
|
70
70
|
Requires-Dist: google-cloud-certificate-manager; extra == "backend"
|
|
71
71
|
Requires-Dist: terminado; extra == "backend"
|
|
72
72
|
Requires-Dist: tornado; extra == "backend"
|
|
73
|
+
Dynamic: author
|
|
74
|
+
Dynamic: description
|
|
75
|
+
Dynamic: description-content-type
|
|
76
|
+
Dynamic: license
|
|
77
|
+
Dynamic: license-file
|
|
78
|
+
Dynamic: provides-extra
|
|
79
|
+
Dynamic: requires-dist
|
|
80
|
+
Dynamic: requires-python
|
|
81
|
+
Dynamic: summary
|
|
73
82
|
|
|
74
83
|
# Anyscale
|
|
75
84
|
|
|
@@ -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=
|
|
11
|
+
anyscale/cloud_resource.py,sha256=laXDB0mCvSas6u9WYgmuQ1tbzNlL91Bi4jKNZwY0Txk,39196
|
|
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
|
|
@@ -18,7 +18,7 @@ anyscale/conf.py,sha256=_2vbCkaU_iIgU1boYOJxVUpafXO654_GmmE0kaqHbUc,573
|
|
|
18
18
|
anyscale/connect.py,sha256=ClIoc2vWciJT2VdbeC0LjfKbYGz9MmRn24uV7gjkJM0,57596
|
|
19
19
|
anyscale/feature_flags.py,sha256=Td0keH1-7isGIRsoSZn3mI1IFZQnLXtcvgwkFuyks_M,136
|
|
20
20
|
anyscale/fingerprint.py,sha256=BoMnfgmcME_IuulBih5K3QTEuHPSkeLsXYUbelVjfvU,2122
|
|
21
|
-
anyscale/gcp_verification.py,sha256=
|
|
21
|
+
anyscale/gcp_verification.py,sha256=Y8pvQE7D5_NahknzJ7g_CWkeTrqyOhAs0BMJlJyfPiU,31600
|
|
22
22
|
anyscale/integrations.py,sha256=bLBs5pDBMPi16qmU1gmTn5aw7PGUxtBAxnIkKWYmJrw,12633
|
|
23
23
|
anyscale/links.py,sha256=xFXN5TjL61p5T23dn66nNalkV47LNkPJxQqOPhGXfww,193
|
|
24
24
|
anyscale/memorydb_supported_zones.json,sha256=l5Iup9wFDZcHLfZqH640axxe4UiKteuraZRohi3MwRk,1098
|
|
@@ -28,13 +28,13 @@ 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=0iSmKKsDFV0i2eRmVQ1W60Sgh2g-vPeBoBw3ra3m6eI,42782
|
|
31
|
-
anyscale/version.py,sha256=
|
|
31
|
+
anyscale/version.py,sha256=WuKHz6pExXVlJabkXm2jIJ7hfivXfsB2Zc5SCDGdrU0,24
|
|
32
32
|
anyscale/workspace_utils.py,sha256=OViE88CnIF5ruVxd3kazQ0Mf2BxqtMq6wx-XQ5A2cp8,1204
|
|
33
33
|
anyscale/_private/anyscale_client/README.md,sha256=gk8obk7kqg6VWoUHcqDMwJULh35tYKEZFC0UF_dixGA,718
|
|
34
34
|
anyscale/_private/anyscale_client/__init__.py,sha256=807Blx3RHQeS8BmKZcsOQQ4dYoKlCnpm6Bdsif2CrHg,337
|
|
35
|
-
anyscale/_private/anyscale_client/anyscale_client.py,sha256=
|
|
36
|
-
anyscale/_private/anyscale_client/common.py,sha256=
|
|
37
|
-
anyscale/_private/anyscale_client/fake_anyscale_client.py,sha256=
|
|
35
|
+
anyscale/_private/anyscale_client/anyscale_client.py,sha256=SIC_f-mFYKXcIWDeI3mG5a3umtIRG_csxvPnZTysucM,83696
|
|
36
|
+
anyscale/_private/anyscale_client/common.py,sha256=7FD0Q07p__CN8IAT54VkbUpgTDiLTkDpI3vLnFVl2kc,27207
|
|
37
|
+
anyscale/_private/anyscale_client/fake_anyscale_client.py,sha256=bnE06sFKKHdS6kRmSnkHkp01SeTKRujYRKYubENSses,58719
|
|
38
38
|
anyscale/_private/docgen/README.md,sha256=z0tj8Jy0KmxWJBQMHKyzXGX_cYYgI8m5DCD6KCMU8oI,762
|
|
39
39
|
anyscale/_private/docgen/__main__.py,sha256=9ASjdxpkmnZrvv06UYDlRkSiCEhLW9gNMvIO23cWqVk,25442
|
|
40
40
|
anyscale/_private/docgen/api.md,sha256=VKW293yubbeUG17A38wYuaONKDL5XICMguyfZ2xkIyY,27495
|
|
@@ -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=
|
|
109
|
+
anyscale/client/README.md,sha256=_0wPS2r-x_hgz0YYBbpd7EaUg2jA0oHG2dcGK9EKeYY,114457
|
|
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=
|
|
117
|
+
anyscale/client/openapi_client/__init__.py,sha256=ZPvpkGPxahgAVLs02f09sijN6qdv4OnWN6EzVeNmXWY,51719
|
|
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
|
-
anyscale/client/openapi_client/api/default_api.py,sha256=
|
|
124
|
-
anyscale/client/openapi_client/models/__init__.py,sha256=
|
|
123
|
+
anyscale/client/openapi_client/api/default_api.py,sha256=J7LJ1hcjePAQ22fjCb2iATECSyWQuLZrJavofEILOQk,1833384
|
|
124
|
+
anyscale/client/openapi_client/models/__init__.py,sha256=jFhMhwFmtCEPiTj7LEFleV0A-pwjWnow_rsfv54t9Ic,51229
|
|
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
|
|
@@ -224,6 +224,7 @@ anyscale/client/openapi_client/models/cloudcollaborator_list_response.py,sha256=
|
|
|
224
224
|
anyscale/client/openapi_client/models/clouddatabucketpresigneduploadinfo_response.py,sha256=Oqayf777CsQTa5mU0AEsu_54VNDYL7kpxgn5Icn8jOg,3792
|
|
225
225
|
anyscale/client/openapi_client/models/clouddatabucketpresignedurlresponse_response.py,sha256=dNN9ed8MqR0wA45kniuFPPBTiMx_fdoVlarg5lS9oGw,3803
|
|
226
226
|
anyscale/client/openapi_client/models/clouddeployment_list_response.py,sha256=dUAeCsqyvzyubsgfCfB0y_H8YlaCZpoTnghJvDp0fD8,4422
|
|
227
|
+
anyscale/client/openapi_client/models/clouddeployment_response.py,sha256=axJRmEklVXvJCj9tgjzqlA7VqEPqQ1VW4ZQfbbcNB3Q,3583
|
|
227
228
|
anyscale/client/openapi_client/models/clouddeploymentconfig_response.py,sha256=0_eUWAir01cMeA32XNqkL-NKAEhGJscl9R-yEp0dQAY,3649
|
|
228
229
|
anyscale/client/openapi_client/models/cloudoverviewdashboard_response.py,sha256=87-kKGf6T50b0QjYYo9Vek5P0O71pc7sly8flWQmorA,3660
|
|
229
230
|
anyscale/client/openapi_client/models/cloudregionandzones_response.py,sha256=SHlXZwLnQTkvpUYVj8JaPxOYZ80yB9y_MO-NCiNwCs8,3627
|
|
@@ -246,6 +247,7 @@ anyscale/client/openapi_client/models/clusterauthresponse_response.py,sha256=rwq
|
|
|
246
247
|
anyscale/client/openapi_client/models/clusterevent_list_response.py,sha256=mtfYHoHjpzqg_VOyIn6XvcW71pfBPlfrxjVP6wxHsX4,4377
|
|
247
248
|
anyscale/client/openapi_client/models/clustereventsoutput_response.py,sha256=vFPLzXf_sRs8LAg16Ht6Oel18w6FISg7MLFi4YlTvHs,3627
|
|
248
249
|
anyscale/client/openapi_client/models/clusteroperation_response.py,sha256=g0tNqDigTKkzGSmhrDyhQYcUE0JQMCJTzk44INGhoV4,3594
|
|
250
|
+
anyscale/client/openapi_client/models/collaborator_type.py,sha256=ta_CEaVO_3FOeS57rdVFHkf0pfgavI_rvsZ-NFvav_A,2971
|
|
249
251
|
anyscale/client/openapi_client/models/commit_ledger_item_type.py,sha256=VuxqYjjGFtChMwfsPssdu9LWU-dq4SCJgs1hJyNNyVw,4013
|
|
250
252
|
anyscale/client/openapi_client/models/commit_ledger_record_v2.py,sha256=Xma0WWtZ7w9Oj2_GhK0nlv0jEc4ejF7B34ou_HtkOpw,6989
|
|
251
253
|
anyscale/client/openapi_client/models/complexity_level.py,sha256=TVdfUD3RMSlTuQQW-__CjGBXtIiV6_sSGks3uabPqvs,2898
|
|
@@ -660,7 +662,7 @@ anyscale/client/openapi_client/models/task_state.py,sha256=KpRA6VImK3r0qNeaiHh4a
|
|
|
660
662
|
anyscale/client/openapi_client/models/task_summary.py,sha256=8GIpf9xxmPDV8LJgIsGmSQex2R6CDKx0oJ9_VrL7oPw,9102
|
|
661
663
|
anyscale/client/openapi_client/models/task_table_config.py,sha256=sy9cStVRjjT6KFU_47ibBbSRPf7fXjXe9YW2hwtPFhM,6928
|
|
662
664
|
anyscale/client/openapi_client/models/task_table_response.py,sha256=T8VDBMlOzD1c2hY_Q1JdOF8ZF1MqA5JUMbnRjCKZmcg,5074
|
|
663
|
-
anyscale/client/openapi_client/models/task_table_row.py,sha256=
|
|
665
|
+
anyscale/client/openapi_client/models/task_table_row.py,sha256=neF3ZAb_A12MsZkm_5tc8QV_PaItUirrVugGLTP27eE,15434
|
|
664
666
|
anyscale/client/openapi_client/models/task_type.py,sha256=BwGeFgSgxL8aazGdhr58L7KyPHK5EqRrE_rVWuWyWCE,2807
|
|
665
667
|
anyscale/client/openapi_client/models/tasksummary_response.py,sha256=sgOV63ZyYroVvcLbISXz0LU44tW8tLCefcqYB1WFsQ0,3539
|
|
666
668
|
anyscale/client/openapi_client/models/text_query.py,sha256=aMcKF6nRme1J1jYKhvqUIG8VzlcDN72znSFF9kKCc2Y,5107
|
|
@@ -746,11 +748,11 @@ anyscale/cloud/_private/cloud_sdk.py,sha256=5TBGyGSjMI4jLOnSle1WWC6za0psP9xgTGWU
|
|
|
746
748
|
anyscale/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
747
749
|
anyscale/commands/aggregated_instance_usage_commands.py,sha256=TRP1X3hdIWbKg9V20VtazlDXsYAeV--M0DH3-Z5tnj4,2293
|
|
748
750
|
anyscale/commands/auth_commands.py,sha256=X1g6Yu9kqgPb4HLODlZTYEk8G5AVLeyizPIgagWx-p0,1026
|
|
749
|
-
anyscale/commands/cloud_commands.py,sha256=
|
|
751
|
+
anyscale/commands/cloud_commands.py,sha256=k-mctbUREXoO0HQaPNux8ciyfypBNsi6ka_0XHXImcs,47804
|
|
750
752
|
anyscale/commands/cloud_commands_util.py,sha256=d-6TSZ_syrGkZ3Fc1uRX6jG4dqYMebNkBNpYLojOJFg,247
|
|
751
753
|
anyscale/commands/cluster_commands.py,sha256=taNcffyFfqJ1MgOQd0cz9kzRXWFTdp-wfLPM4l_2tBc,13487
|
|
752
754
|
anyscale/commands/cluster_env_commands.py,sha256=KNWylyE8Ew1sDi7yu2Tp4RLcRu2_KJJJIzVGRyPflJo,3899
|
|
753
|
-
anyscale/commands/command_examples.py,sha256=
|
|
755
|
+
anyscale/commands/command_examples.py,sha256=hzM11Ysg2r6A-pk0xIdO1OsLdCIJGEXy_xBhvz1ZRFQ,28518
|
|
754
756
|
anyscale/commands/compute_config_commands.py,sha256=bn--ClTVovz-NAbZak7t769xXiOgQGYR61hZ_lkN7AM,8167
|
|
755
757
|
anyscale/commands/config_commands.py,sha256=p55uM6WrhfbFoRXC9hNAV-8c5ANghw7tBUYwaQDAtjE,7195
|
|
756
758
|
anyscale/commands/exec_commands.py,sha256=cMOP1u6xQbl81h69Jug3y73XnNSwpbM6XC1X57SIp4c,465
|
|
@@ -794,7 +796,7 @@ anyscale/connect_utils/start_interactive_session.py,sha256=DbuIK2wuWofmbwJ9MLbsb
|
|
|
794
796
|
anyscale/controllers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
795
797
|
anyscale/controllers/auth_controller.py,sha256=hDY2sPvUP8pvh8PnlDYH5rCHjQes2v3b_KBVjMbrzeE,5127
|
|
796
798
|
anyscale/controllers/base_controller.py,sha256=1QFJoScFUV7YTzpKarhwPOc1SvI-xqX3TZmwxKonW6I,1998
|
|
797
|
-
anyscale/controllers/cloud_controller.py,sha256=
|
|
799
|
+
anyscale/controllers/cloud_controller.py,sha256=6Qhv8ibISLpf_25ChuqOMXT4IyAm0wxQ08loFseqz3Q,196629
|
|
798
800
|
anyscale/controllers/cloud_functional_verification_controller.py,sha256=YsEfdHT9hPtxy_3a5Q62UlRXW0iFJ1lVS4IZ_NHoemE,33399
|
|
799
801
|
anyscale/controllers/cluster_controller.py,sha256=Sb5wVjrjpycg5iqmENAVtZ4iy9Kr6kM97_ck-KH85LM,28745
|
|
800
802
|
anyscale/controllers/cluster_env_controller.py,sha256=JalGzcmnFtMHefYL5U6ijMY3nX6W6BsMEfZSMtgBvtU,8048
|
|
@@ -1082,9 +1084,9 @@ anyscale/utils/ray_utils.py,sha256=8l1tP1f0ZtoISHLgRCalKAp8nlBhNDUK5O7HGRkg8r8,3
|
|
|
1082
1084
|
anyscale/utils/ray_version_checker.py,sha256=IiBJzBFJpOs4or0FeuaXKRysbCaFzCEoO_DoeMxpHLM,1521
|
|
1083
1085
|
anyscale/utils/ray_version_utils.py,sha256=DhrkyJAB7M-61QA73RkuVwXk3FfApFH3vShGSbcdsck,1932
|
|
1084
1086
|
anyscale/utils/runtime_env.py,sha256=WDHQXJYFZM9__RvuT6Fq66fWgtMENGP3umz3zLqHczU,18592
|
|
1085
|
-
anyscale/utils/s3.py,sha256=
|
|
1087
|
+
anyscale/utils/s3.py,sha256=9vgpNuovQdzMn8iEfe0iqokr6HgE9GWFE7bOle_FMzA,3435
|
|
1086
1088
|
anyscale/utils/ssh_websocket_proxy.py,sha256=AHDzFk6G8x4envhWs1IAYjv08VZIMieug7e-1n8-xhw,6805
|
|
1087
|
-
anyscale/utils/user_utils.py,sha256=
|
|
1089
|
+
anyscale/utils/user_utils.py,sha256=J11f0nc_iujcZM-KmNBAszGfCc4Z6NYJtoIT_YTY37I,714
|
|
1088
1090
|
anyscale/utils/workload_types.py,sha256=kKAaKDh5bd6zA2f1HR0VMlkhu9nAIeUMM-NMIGP0ZR4,128
|
|
1089
1091
|
anyscale/utils/workspace_notification.py,sha256=3utuEVFj7iHAXTHXDWedPcycIV3b0bpdQtAWz2n2GPI,1129
|
|
1090
1092
|
anyscale/utils/workspace_utils.py,sha256=UTcUQiB_75vgS8zqORK9S1RMM-XshVvAu90vImt7Euw,1997
|
|
@@ -1100,10 +1102,10 @@ anyscale/workspace/__init__.py,sha256=Innbm5ZhCyADEVBiYSo_vbpKwUNcMzVSAfxIGKOYe6
|
|
|
1100
1102
|
anyscale/workspace/commands.py,sha256=b1sqNseoPj-1VXznqQOLe0V_a663bOTvJX-TaOMJa1Y,14590
|
|
1101
1103
|
anyscale/workspace/models.py,sha256=HBvM9ybOdJjqQeViQ30C36gdKT_AwH_JHPoL-DTkESo,9841
|
|
1102
1104
|
anyscale/workspace/_private/workspace_sdk.py,sha256=2CMeYfJt0UtIFCocDn1ukw1iI5esKHdopLe6duEs-qE,27599
|
|
1103
|
-
anyscale-0.26.
|
|
1104
|
-
anyscale-0.26.
|
|
1105
|
-
anyscale-0.26.
|
|
1106
|
-
anyscale-0.26.
|
|
1107
|
-
anyscale-0.26.
|
|
1108
|
-
anyscale-0.26.
|
|
1109
|
-
anyscale-0.26.
|
|
1105
|
+
anyscale-0.26.47.dist-info/licenses/LICENSE,sha256=UOPu974Wzsna6frFv1mu4VrZgNdZT7lbcNPzo5ue3qs,3494
|
|
1106
|
+
anyscale-0.26.47.dist-info/licenses/NOTICE,sha256=gHqDhSnUYlRXX-mDOL5FtE7774oiKyV_HO80qM3r9Xo,196
|
|
1107
|
+
anyscale-0.26.47.dist-info/METADATA,sha256=ZSET0gnbnlQJuqszGFMY-ITjo5RdYe19fSnL9aBR4Sk,3231
|
|
1108
|
+
anyscale-0.26.47.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
1109
|
+
anyscale-0.26.47.dist-info/entry_points.txt,sha256=NqO18sCZn6zG6J0S38itjcN00s7aE3C3v3k5lMAfCLk,51
|
|
1110
|
+
anyscale-0.26.47.dist-info/top_level.txt,sha256=g3NVNS8Oh0NZwbFFgeX696C5MZZkS5dqV2NqcsbDRJE,9
|
|
1111
|
+
anyscale-0.26.47.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|