generated from pulumi/pulumi-tf-provider-boilerplate
/
computeGpuCluster.go
375 lines (321 loc) · 15.2 KB
/
computeGpuCluster.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
package yandex
import (
"context"
"reflect"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// GPU Cluster connects multiple Compute GPU Instances in the same availability zone with high-speed low-latency network.
//
// Users can create a cluster from several VMs and use GPUDirectRDMA to directly send data between GPUs on different VMs.
//
// For more information about GPU cluster in Yandex.Cloud, see:
//
// * [Documentation](https://cloud.yandex.com/docs/compute/concepts/gpu_cluster)
//
// ## Example Usage
//
// ```go
// package main
//
// import (
//
// "github.com/pulumi/pulumi-yandex/sdk/go/yandex"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
//
// )
//
// func main() {
// pulumi.Run(func(ctx *pulumi.Context) error {
// _, err := yandex.NewComputeGpuCluster(ctx, "default", &yandex.ComputeGpuClusterArgs{
// InterconnectType: pulumi.String("infiniband"),
// Labels: pulumi.StringMap{
// "environment": pulumi.String("test"),
// },
// Zone: pulumi.String("ru-central1-a"),
// })
// if err != nil {
// return err
// }
// return nil
// })
// }
//
// ```
//
// ## Import
//
// # A GPU cluster can be imported using any of these accepted formats
//
// ```sh
//
// $ pulumi import yandex:index/computeGpuCluster:ComputeGpuCluster default gpu_cluster_id
//
// ```
type ComputeGpuCluster struct {
pulumi.CustomResourceState
// Creation timestamp of the GPU cluster.
CreatedAt pulumi.StringOutput `pulumi:"createdAt"`
// Description of the GPU cluster. Provide this property when you create a resource.
Description pulumi.StringPtrOutput `pulumi:"description"`
// The ID of the folder that the GPU cluster belongs to. If it is not provided, the default
// provider folder is used.
FolderId pulumi.StringOutput `pulumi:"folderId"`
// Type of interconnect between nodes to use in GPU cluster. Type `infiniband` is set by default,
// and it is the only one available at the moment.
InterconnectType pulumi.StringPtrOutput `pulumi:"interconnectType"`
// Labels to assign to this GPU cluster. A list of key/value pairs. For details about the concept,
// see [documentation](https://cloud.yandex.com/docs/overview/concepts/services#labels).
Labels pulumi.StringMapOutput `pulumi:"labels"`
// Name of the GPU cluster. Provide this property when you create a resource.
Name pulumi.StringOutput `pulumi:"name"`
// The status of the GPU cluster.
Status pulumi.StringOutput `pulumi:"status"`
// Availability zone where the GPU cluster will reside.
Zone pulumi.StringOutput `pulumi:"zone"`
}
// NewComputeGpuCluster registers a new resource with the given unique name, arguments, and options.
func NewComputeGpuCluster(ctx *pulumi.Context,
name string, args *ComputeGpuClusterArgs, opts ...pulumi.ResourceOption) (*ComputeGpuCluster, error) {
if args == nil {
args = &ComputeGpuClusterArgs{}
}
opts = pkgResourceDefaultOpts(opts)
var resource ComputeGpuCluster
err := ctx.RegisterResource("yandex:index/computeGpuCluster:ComputeGpuCluster", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetComputeGpuCluster gets an existing ComputeGpuCluster resource's state with the given name, ID, and optional
// state properties that are used to uniquely qualify the lookup (nil if not required).
func GetComputeGpuCluster(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *ComputeGpuClusterState, opts ...pulumi.ResourceOption) (*ComputeGpuCluster, error) {
var resource ComputeGpuCluster
err := ctx.ReadResource("yandex:index/computeGpuCluster:ComputeGpuCluster", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering ComputeGpuCluster resources.
type computeGpuClusterState struct {
// Creation timestamp of the GPU cluster.
CreatedAt *string `pulumi:"createdAt"`
// Description of the GPU cluster. Provide this property when you create a resource.
Description *string `pulumi:"description"`
// The ID of the folder that the GPU cluster belongs to. If it is not provided, the default
// provider folder is used.
FolderId *string `pulumi:"folderId"`
// Type of interconnect between nodes to use in GPU cluster. Type `infiniband` is set by default,
// and it is the only one available at the moment.
InterconnectType *string `pulumi:"interconnectType"`
// Labels to assign to this GPU cluster. A list of key/value pairs. For details about the concept,
// see [documentation](https://cloud.yandex.com/docs/overview/concepts/services#labels).
Labels map[string]string `pulumi:"labels"`
// Name of the GPU cluster. Provide this property when you create a resource.
Name *string `pulumi:"name"`
// The status of the GPU cluster.
Status *string `pulumi:"status"`
// Availability zone where the GPU cluster will reside.
Zone *string `pulumi:"zone"`
}
type ComputeGpuClusterState struct {
// Creation timestamp of the GPU cluster.
CreatedAt pulumi.StringPtrInput
// Description of the GPU cluster. Provide this property when you create a resource.
Description pulumi.StringPtrInput
// The ID of the folder that the GPU cluster belongs to. If it is not provided, the default
// provider folder is used.
FolderId pulumi.StringPtrInput
// Type of interconnect between nodes to use in GPU cluster. Type `infiniband` is set by default,
// and it is the only one available at the moment.
InterconnectType pulumi.StringPtrInput
// Labels to assign to this GPU cluster. A list of key/value pairs. For details about the concept,
// see [documentation](https://cloud.yandex.com/docs/overview/concepts/services#labels).
Labels pulumi.StringMapInput
// Name of the GPU cluster. Provide this property when you create a resource.
Name pulumi.StringPtrInput
// The status of the GPU cluster.
Status pulumi.StringPtrInput
// Availability zone where the GPU cluster will reside.
Zone pulumi.StringPtrInput
}
func (ComputeGpuClusterState) ElementType() reflect.Type {
return reflect.TypeOf((*computeGpuClusterState)(nil)).Elem()
}
type computeGpuClusterArgs struct {
// Description of the GPU cluster. Provide this property when you create a resource.
Description *string `pulumi:"description"`
// The ID of the folder that the GPU cluster belongs to. If it is not provided, the default
// provider folder is used.
FolderId *string `pulumi:"folderId"`
// Type of interconnect between nodes to use in GPU cluster. Type `infiniband` is set by default,
// and it is the only one available at the moment.
InterconnectType *string `pulumi:"interconnectType"`
// Labels to assign to this GPU cluster. A list of key/value pairs. For details about the concept,
// see [documentation](https://cloud.yandex.com/docs/overview/concepts/services#labels).
Labels map[string]string `pulumi:"labels"`
// Name of the GPU cluster. Provide this property when you create a resource.
Name *string `pulumi:"name"`
// Availability zone where the GPU cluster will reside.
Zone *string `pulumi:"zone"`
}
// The set of arguments for constructing a ComputeGpuCluster resource.
type ComputeGpuClusterArgs struct {
// Description of the GPU cluster. Provide this property when you create a resource.
Description pulumi.StringPtrInput
// The ID of the folder that the GPU cluster belongs to. If it is not provided, the default
// provider folder is used.
FolderId pulumi.StringPtrInput
// Type of interconnect between nodes to use in GPU cluster. Type `infiniband` is set by default,
// and it is the only one available at the moment.
InterconnectType pulumi.StringPtrInput
// Labels to assign to this GPU cluster. A list of key/value pairs. For details about the concept,
// see [documentation](https://cloud.yandex.com/docs/overview/concepts/services#labels).
Labels pulumi.StringMapInput
// Name of the GPU cluster. Provide this property when you create a resource.
Name pulumi.StringPtrInput
// Availability zone where the GPU cluster will reside.
Zone pulumi.StringPtrInput
}
func (ComputeGpuClusterArgs) ElementType() reflect.Type {
return reflect.TypeOf((*computeGpuClusterArgs)(nil)).Elem()
}
type ComputeGpuClusterInput interface {
pulumi.Input
ToComputeGpuClusterOutput() ComputeGpuClusterOutput
ToComputeGpuClusterOutputWithContext(ctx context.Context) ComputeGpuClusterOutput
}
func (*ComputeGpuCluster) ElementType() reflect.Type {
return reflect.TypeOf((**ComputeGpuCluster)(nil)).Elem()
}
func (i *ComputeGpuCluster) ToComputeGpuClusterOutput() ComputeGpuClusterOutput {
return i.ToComputeGpuClusterOutputWithContext(context.Background())
}
func (i *ComputeGpuCluster) ToComputeGpuClusterOutputWithContext(ctx context.Context) ComputeGpuClusterOutput {
return pulumi.ToOutputWithContext(ctx, i).(ComputeGpuClusterOutput)
}
// ComputeGpuClusterArrayInput is an input type that accepts ComputeGpuClusterArray and ComputeGpuClusterArrayOutput values.
// You can construct a concrete instance of `ComputeGpuClusterArrayInput` via:
//
// ComputeGpuClusterArray{ ComputeGpuClusterArgs{...} }
type ComputeGpuClusterArrayInput interface {
pulumi.Input
ToComputeGpuClusterArrayOutput() ComputeGpuClusterArrayOutput
ToComputeGpuClusterArrayOutputWithContext(context.Context) ComputeGpuClusterArrayOutput
}
type ComputeGpuClusterArray []ComputeGpuClusterInput
func (ComputeGpuClusterArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*ComputeGpuCluster)(nil)).Elem()
}
func (i ComputeGpuClusterArray) ToComputeGpuClusterArrayOutput() ComputeGpuClusterArrayOutput {
return i.ToComputeGpuClusterArrayOutputWithContext(context.Background())
}
func (i ComputeGpuClusterArray) ToComputeGpuClusterArrayOutputWithContext(ctx context.Context) ComputeGpuClusterArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(ComputeGpuClusterArrayOutput)
}
// ComputeGpuClusterMapInput is an input type that accepts ComputeGpuClusterMap and ComputeGpuClusterMapOutput values.
// You can construct a concrete instance of `ComputeGpuClusterMapInput` via:
//
// ComputeGpuClusterMap{ "key": ComputeGpuClusterArgs{...} }
type ComputeGpuClusterMapInput interface {
pulumi.Input
ToComputeGpuClusterMapOutput() ComputeGpuClusterMapOutput
ToComputeGpuClusterMapOutputWithContext(context.Context) ComputeGpuClusterMapOutput
}
type ComputeGpuClusterMap map[string]ComputeGpuClusterInput
func (ComputeGpuClusterMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*ComputeGpuCluster)(nil)).Elem()
}
func (i ComputeGpuClusterMap) ToComputeGpuClusterMapOutput() ComputeGpuClusterMapOutput {
return i.ToComputeGpuClusterMapOutputWithContext(context.Background())
}
func (i ComputeGpuClusterMap) ToComputeGpuClusterMapOutputWithContext(ctx context.Context) ComputeGpuClusterMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(ComputeGpuClusterMapOutput)
}
type ComputeGpuClusterOutput struct{ *pulumi.OutputState }
func (ComputeGpuClusterOutput) ElementType() reflect.Type {
return reflect.TypeOf((**ComputeGpuCluster)(nil)).Elem()
}
func (o ComputeGpuClusterOutput) ToComputeGpuClusterOutput() ComputeGpuClusterOutput {
return o
}
func (o ComputeGpuClusterOutput) ToComputeGpuClusterOutputWithContext(ctx context.Context) ComputeGpuClusterOutput {
return o
}
// Creation timestamp of the GPU cluster.
func (o ComputeGpuClusterOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *ComputeGpuCluster) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
}
// Description of the GPU cluster. Provide this property when you create a resource.
func (o ComputeGpuClusterOutput) Description() pulumi.StringPtrOutput {
return o.ApplyT(func(v *ComputeGpuCluster) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
}
// The ID of the folder that the GPU cluster belongs to. If it is not provided, the default
// provider folder is used.
func (o ComputeGpuClusterOutput) FolderId() pulumi.StringOutput {
return o.ApplyT(func(v *ComputeGpuCluster) pulumi.StringOutput { return v.FolderId }).(pulumi.StringOutput)
}
// Type of interconnect between nodes to use in GPU cluster. Type `infiniband` is set by default,
// and it is the only one available at the moment.
func (o ComputeGpuClusterOutput) InterconnectType() pulumi.StringPtrOutput {
return o.ApplyT(func(v *ComputeGpuCluster) pulumi.StringPtrOutput { return v.InterconnectType }).(pulumi.StringPtrOutput)
}
// Labels to assign to this GPU cluster. A list of key/value pairs. For details about the concept,
// see [documentation](https://cloud.yandex.com/docs/overview/concepts/services#labels).
func (o ComputeGpuClusterOutput) Labels() pulumi.StringMapOutput {
return o.ApplyT(func(v *ComputeGpuCluster) pulumi.StringMapOutput { return v.Labels }).(pulumi.StringMapOutput)
}
// Name of the GPU cluster. Provide this property when you create a resource.
func (o ComputeGpuClusterOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v *ComputeGpuCluster) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
}
// The status of the GPU cluster.
func (o ComputeGpuClusterOutput) Status() pulumi.StringOutput {
return o.ApplyT(func(v *ComputeGpuCluster) pulumi.StringOutput { return v.Status }).(pulumi.StringOutput)
}
// Availability zone where the GPU cluster will reside.
func (o ComputeGpuClusterOutput) Zone() pulumi.StringOutput {
return o.ApplyT(func(v *ComputeGpuCluster) pulumi.StringOutput { return v.Zone }).(pulumi.StringOutput)
}
type ComputeGpuClusterArrayOutput struct{ *pulumi.OutputState }
func (ComputeGpuClusterArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*ComputeGpuCluster)(nil)).Elem()
}
func (o ComputeGpuClusterArrayOutput) ToComputeGpuClusterArrayOutput() ComputeGpuClusterArrayOutput {
return o
}
func (o ComputeGpuClusterArrayOutput) ToComputeGpuClusterArrayOutputWithContext(ctx context.Context) ComputeGpuClusterArrayOutput {
return o
}
func (o ComputeGpuClusterArrayOutput) Index(i pulumi.IntInput) ComputeGpuClusterOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ComputeGpuCluster {
return vs[0].([]*ComputeGpuCluster)[vs[1].(int)]
}).(ComputeGpuClusterOutput)
}
type ComputeGpuClusterMapOutput struct{ *pulumi.OutputState }
func (ComputeGpuClusterMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*ComputeGpuCluster)(nil)).Elem()
}
func (o ComputeGpuClusterMapOutput) ToComputeGpuClusterMapOutput() ComputeGpuClusterMapOutput {
return o
}
func (o ComputeGpuClusterMapOutput) ToComputeGpuClusterMapOutputWithContext(ctx context.Context) ComputeGpuClusterMapOutput {
return o
}
func (o ComputeGpuClusterMapOutput) MapIndex(k pulumi.StringInput) ComputeGpuClusterOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ComputeGpuCluster {
return vs[0].(map[string]*ComputeGpuCluster)[vs[1].(string)]
}).(ComputeGpuClusterOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*ComputeGpuClusterInput)(nil)).Elem(), &ComputeGpuCluster{})
pulumi.RegisterInputType(reflect.TypeOf((*ComputeGpuClusterArrayInput)(nil)).Elem(), ComputeGpuClusterArray{})
pulumi.RegisterInputType(reflect.TypeOf((*ComputeGpuClusterMapInput)(nil)).Elem(), ComputeGpuClusterMap{})
pulumi.RegisterOutputType(ComputeGpuClusterOutput{})
pulumi.RegisterOutputType(ComputeGpuClusterArrayOutput{})
pulumi.RegisterOutputType(ComputeGpuClusterMapOutput{})
}