1+ /*
2+ * Copyright 2024 Google LLC
3+ *
4+ * Licensed under the Apache License, Version 2.0 (the "License");
5+ * you may not use this file except in compliance with the License.
6+ * You may obtain a copy of the License at
7+ *
8+ * http://www.apache.org/licenses/LICENSE-2.0
9+ *
10+ * Unless required by applicable law or agreed to in writing, software
11+ * distributed under the License is distributed on an "AS IS" BASIS,
12+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+ * See the License for the specific language governing permissions and
14+ * limitations under the License.
15+ */
16+
17+ package tpu ;
18+
19+ //[START tpu_queued_resources_create]
20+
21+ import com .google .cloud .tpu .v2alpha1 .CreateQueuedResourceRequest ;
22+ import com .google .cloud .tpu .v2alpha1 .Node ;
23+ import com .google .cloud .tpu .v2alpha1 .QueuedResource ;
24+ import com .google .cloud .tpu .v2alpha1 .TpuClient ;
25+ import java .io .IOException ;
26+ import java .util .concurrent .ExecutionException ;
27+
28+ public class CreateQueuedResource {
29+ public static void main (String [] args )
30+ throws IOException , ExecutionException , InterruptedException {
31+ // TODO(developer): Replace these variables before running the sample.
32+ // Project ID or project number of the Google Cloud project you want to create a node.
33+ String projectId = "YOUR_PROJECT_ID" ;
34+ // The zone in which to create the TPU.
35+ // For more information about supported TPU types for specific zones,
36+ // see https://cloud.google.com/tpu/docs/regions-zones
37+ String zone = "europe-west4-a" ;
38+ // The name for your TPU.
39+ String nodeName = "YOUR_NODE_ID" ;
40+ // The accelerator type that specifies the version and size of the Cloud TPU you want to create.
41+ // For more information about supported accelerator types for each TPU version,
42+ // see https://cloud.google.com/tpu/docs/system-architecture-tpu-vm#versions.
43+ String tpuType = "v2-8" ;
44+ // Software version that specifies the version of the TPU runtime to install.
45+ // For more information see https://cloud.google.com/tpu/docs/runtimes
46+ String tpuSoftwareVersion = "tpu-vm-tf-2.14.1" ;
47+ // The name for your Queued Resource.
48+ String queuedResourceId = "QUEUED_RESOURCE_ID" ;
49+
50+ createQueuedResource (
51+ projectId , zone , queuedResourceId , nodeName , tpuType , tpuSoftwareVersion );
52+ }
53+
54+ // Creates a Queued Resource
55+ public static void createQueuedResource (String projectId , String zone ,
56+ String queuedResourceId , String nodeName , String tpuType , String tpuSoftwareVersion )
57+ throws IOException , ExecutionException , InterruptedException {
58+ try (TpuClient tpuClient = TpuClient .create ()) {
59+ String parent = String .format ("projects/%s/locations/%s" , projectId , zone );
60+
61+ Node node =
62+ Node .newBuilder ()
63+ .setName (nodeName )
64+ .setAcceleratorType (tpuType )
65+ .setRuntimeVersion (tpuSoftwareVersion )
66+ .setQueuedResource (
67+ String .format (
68+ "projects/%s/locations/%s/queuedResources/%s" ,
69+ projectId , zone , queuedResourceId ))
70+ .build ();
71+
72+ QueuedResource queuedResource =
73+ QueuedResource .newBuilder ()
74+ .setName (queuedResourceId )
75+ .setTpu (
76+ QueuedResource .Tpu .newBuilder ()
77+ .addNodeSpec (
78+ QueuedResource .Tpu .NodeSpec .newBuilder ()
79+ .setParent (parent )
80+ .setNode (node )
81+ .setNodeId (nodeName )
82+ .build ())
83+ .build ())
84+ .build ();
85+
86+ CreateQueuedResourceRequest request =
87+ CreateQueuedResourceRequest .newBuilder ()
88+ .setParent (parent )
89+ .setQueuedResourceId (queuedResourceId )
90+ .setQueuedResource (queuedResource )
91+ .build ();
92+
93+ QueuedResource response = tpuClient .createQueuedResourceAsync (request ).get ();
94+ System .out .printf ("Queued Resource created: %s\n " , response .getName ());
95+ }
96+ }
97+ }
98+ //[END tpu_queued_resources_create]
0 commit comments