16
16
#
17
17
18
18
import dataclasses
19
+ import sys
19
20
20
21
from google .cloud .aiplatform .preview .vertex_ray .util .resources import Cluster
21
22
from google .cloud .aiplatform .preview .vertex_ray .util .resources import (
28
29
from google .cloud .aiplatform_v1beta1 .types .persistent_resource import (
29
30
PersistentResource ,
30
31
)
31
- from google .cloud .aiplatform_v1beta1 .types .persistent_resource import RaySpec
32
32
from google .cloud .aiplatform_v1beta1 .types .persistent_resource import (
33
33
RayMetricSpec ,
34
34
)
35
+ from google .cloud .aiplatform_v1beta1 .types .persistent_resource import RaySpec
35
36
from google .cloud .aiplatform_v1beta1 .types .persistent_resource import (
36
37
ResourcePool ,
37
38
)
41
42
from google .cloud .aiplatform_v1beta1 .types .persistent_resource import (
42
43
ResourceRuntimeSpec ,
43
44
)
44
-
45
+ from google .cloud .aiplatform_v1beta1 .types .persistent_resource import (
46
+ ServiceAccountSpec ,
47
+ )
45
48
import pytest
46
- import sys
49
+
47
50
48
51
rovminversion = pytest .mark .skipif (
49
52
sys .version_info > (3 , 10 ), reason = "Requires python3.10 or lower"
@@ -67,6 +70,7 @@ class ProjectConstants:
67
70
TEST_MODEL_ID = (
68
71
f"projects/{ TEST_GCP_PROJECT_NUMBER } /locations/{ TEST_GCP_REGION } /models/456"
69
72
)
73
+ TEST_SERVICE_ACCOUNT = "[email protected] "
70
74
71
75
72
76
@dataclasses .dataclass (frozen = True )
@@ -79,6 +83,9 @@ class ClusterConstants:
79
83
TEST_VERTEX_RAY_DASHBOARD_ADDRESS = (
80
84
"48b400ad90b8dd3c-dot-us-central1.aiplatform-training.googleusercontent.com"
81
85
)
86
+ TEST_VERTEX_RAY_CLIENT_ENDPOINT = (
87
+ "88888.us-central1-1234567.staging-ray.vertexai.goog:443"
88
+ )
82
89
TEST_VERTEX_RAY_PR_ID = "user-persistent-resource-1234567890"
83
90
TEST_VERTEX_RAY_PR_ADDRESS = (
84
91
f"{ ProjectConstants .TEST_PARENT } /persistentResources/" + TEST_VERTEX_RAY_PR_ID
@@ -106,7 +113,7 @@ class ClusterConstants:
106
113
TEST_RESOURCE_POOL_0 = ResourcePool (
107
114
id = "head-node" ,
108
115
machine_spec = MachineSpec (
109
- machine_type = "n1-standard-8 " ,
116
+ machine_type = "n1-standard-16 " ,
110
117
accelerator_type = "NVIDIA_TESLA_P100" ,
111
118
accelerator_count = 1 ,
112
119
),
@@ -147,6 +154,20 @@ class ClusterConstants:
147
154
),
148
155
network = ProjectConstants .TEST_VPC_NETWORK ,
149
156
)
157
+ TEST_REQUEST_RUNNING_1_POOL_BYOSA = PersistentResource (
158
+ resource_pools = [TEST_RESOURCE_POOL_0 ],
159
+ resource_runtime_spec = ResourceRuntimeSpec (
160
+ ray_spec = RaySpec (
161
+ resource_pool_images = {"head-node" : TEST_GPU_IMAGE },
162
+ ray_metric_spec = RayMetricSpec (disabled = False ),
163
+ ),
164
+ service_account_spec = ServiceAccountSpec (
165
+ enable_custom_service_account = True ,
166
+ service_account = ProjectConstants .TEST_SERVICE_ACCOUNT ,
167
+ ),
168
+ ),
169
+ network = None ,
170
+ )
150
171
# Get response has generated name, and URIs
151
172
TEST_RESPONSE_RUNNING_1_POOL = PersistentResource (
152
173
name = TEST_VERTEX_RAY_PR_ADDRESS ,
@@ -185,6 +206,50 @@ class ClusterConstants:
185
206
),
186
207
state = "RUNNING" ,
187
208
)
209
+ TEST_RESPONSE_RUNNING_1_POOL_BYOSA = PersistentResource (
210
+ name = TEST_VERTEX_RAY_PR_ADDRESS ,
211
+ resource_pools = [TEST_RESOURCE_POOL_0 ],
212
+ resource_runtime_spec = ResourceRuntimeSpec (
213
+ ray_spec = RaySpec (
214
+ resource_pool_images = {"head-node" : TEST_GPU_IMAGE },
215
+ ray_metric_spec = RayMetricSpec (disabled = False ),
216
+ ),
217
+ service_account_spec = ServiceAccountSpec (
218
+ enable_custom_service_account = True ,
219
+ service_account = ProjectConstants .TEST_SERVICE_ACCOUNT ,
220
+ ),
221
+ ),
222
+ network = None ,
223
+ resource_runtime = ResourceRuntime (
224
+ access_uris = {
225
+ "RAY_DASHBOARD_URI" : TEST_VERTEX_RAY_DASHBOARD_ADDRESS ,
226
+ "RAY_CLIENT_ENDPOINT" : TEST_VERTEX_RAY_CLIENT_ENDPOINT ,
227
+ }
228
+ ),
229
+ state = "RUNNING" ,
230
+ )
231
+ TEST_RESPONSE_1_POOL_BYOSA_PRIVATE = PersistentResource (
232
+ name = TEST_VERTEX_RAY_PR_ADDRESS ,
233
+ resource_pools = [TEST_RESOURCE_POOL_0 ],
234
+ resource_runtime_spec = ResourceRuntimeSpec (
235
+ ray_spec = RaySpec (
236
+ resource_pool_images = {"head-node" : TEST_GPU_IMAGE },
237
+ ray_metric_spec = RayMetricSpec (disabled = False ),
238
+ ),
239
+ service_account_spec = ServiceAccountSpec (
240
+ enable_custom_service_account = True ,
241
+ service_account = ProjectConstants .TEST_SERVICE_ACCOUNT ,
242
+ ),
243
+ ),
244
+ network = ProjectConstants .TEST_VPC_NETWORK ,
245
+ resource_runtime = ResourceRuntime (
246
+ access_uris = {
247
+ "RAY_DASHBOARD_URI" : TEST_VERTEX_RAY_DASHBOARD_ADDRESS ,
248
+ "RAY_CLIENT_ENDPOINT" : TEST_VERTEX_RAY_CLIENT_ENDPOINT ,
249
+ }
250
+ ),
251
+ state = "RUNNING" ,
252
+ )
188
253
# 2_POOL: worker_node_types and head_node_type have different MachineSpecs
189
254
TEST_HEAD_NODE_TYPE_2_POOLS = Resources ()
190
255
TEST_WORKER_NODE_TYPES_2_POOLS = [
@@ -208,7 +273,7 @@ class ClusterConstants:
208
273
TEST_RESOURCE_POOL_1 = ResourcePool (
209
274
id = "head-node" ,
210
275
machine_spec = MachineSpec (
211
- machine_type = "n1-standard-8 " ,
276
+ machine_type = "n1-standard-16 " ,
212
277
),
213
278
disk_spec = DiskSpec (
214
279
boot_disk_type = "pd-ssd" ,
@@ -302,6 +367,7 @@ class ClusterConstants:
302
367
python_version = "3.10" ,
303
368
ray_version = "2.9" ,
304
369
network = ProjectConstants .TEST_VPC_NETWORK ,
370
+ service_account = None ,
305
371
state = "RUNNING" ,
306
372
head_node_type = TEST_HEAD_NODE_TYPE_1_POOL ,
307
373
worker_node_types = TEST_WORKER_NODE_TYPES_1_POOL ,
@@ -312,6 +378,7 @@ class ClusterConstants:
312
378
python_version = "3.10" ,
313
379
ray_version = "2.9" ,
314
380
network = ProjectConstants .TEST_VPC_NETWORK ,
381
+ service_account = None ,
315
382
state = "RUNNING" ,
316
383
head_node_type = TEST_HEAD_NODE_TYPE_2_POOLS ,
317
384
worker_node_types = TEST_WORKER_NODE_TYPES_2_POOLS ,
@@ -320,11 +387,23 @@ class ClusterConstants:
320
387
TEST_CLUSTER_CUSTOM_IMAGE = Cluster (
321
388
cluster_resource_name = TEST_VERTEX_RAY_PR_ADDRESS ,
322
389
network = ProjectConstants .TEST_VPC_NETWORK ,
390
+ service_account = None ,
323
391
state = "RUNNING" ,
324
392
head_node_type = TEST_HEAD_NODE_TYPE_2_POOLS_CUSTOM_IMAGE ,
325
393
worker_node_types = TEST_WORKER_NODE_TYPES_2_POOLS_CUSTOM_IMAGE ,
326
394
dashboard_address = TEST_VERTEX_RAY_DASHBOARD_ADDRESS ,
327
395
)
396
+ TEST_CLUSTER_BYOSA = Cluster (
397
+ cluster_resource_name = TEST_VERTEX_RAY_PR_ADDRESS ,
398
+ python_version = "3.10" ,
399
+ ray_version = "2.9" ,
400
+ network = "" ,
401
+ service_account = ProjectConstants .TEST_SERVICE_ACCOUNT ,
402
+ state = "RUNNING" ,
403
+ head_node_type = TEST_HEAD_NODE_TYPE_1_POOL ,
404
+ worker_node_types = TEST_WORKER_NODE_TYPES_1_POOL ,
405
+ dashboard_address = TEST_VERTEX_RAY_DASHBOARD_ADDRESS ,
406
+ )
328
407
TEST_BEARER_TOKEN = "test-bearer-token"
329
408
TEST_HEADERS = {
330
409
"Content-Type" : "application/json" ,
0 commit comments