@@ -108,6 +108,13 @@ func (r *computeInstanceResource) Schema(_ context.Context, _ resource.SchemaReq
108
108
"user_data" : schema.StringAttribute {
109
109
Optional : true ,
110
110
},
111
+ "quick_connect_enabled" : schema.StringAttribute {
112
+ Optional : true ,
113
+ },
114
+ "quick_connect_url" : schema.StringAttribute {
115
+ Computed : true ,
116
+ Optional : true ,
117
+ },
111
118
},
112
119
},
113
120
"interfaces" : schema.ListNestedAttribute {
@@ -224,9 +231,10 @@ func (r *computeInstanceResource) Create(ctx context.Context, req resource.Creat
224
231
Name string "json:\" name\" "
225
232
VNet string "json:\" vNet\" "
226
233
} "json:\" interfaces\" "
227
- MachineImage string "json:\" machineImage\" "
228
- SshPublicKeyNames []string "json:\" sshPublicKeyNames\" "
229
- UserData string "json:\" userData,omitempty\" "
234
+ MachineImage string "json:\" machineImage\" "
235
+ SshPublicKeyNames []string "json:\" sshPublicKeyNames\" "
236
+ UserData string "json:\" userData,omitempty\" "
237
+ QuickConnectEnabled string "json:\" quickConnectEnabled,omitempty\" "
230
238
}{
231
239
AvailabilityZone : fmt .Sprintf ("%sa" , * r .client .Region ),
232
240
InstanceGroup : plan .Spec .InstanceGroup .ValueString (),
@@ -239,10 +247,11 @@ func (r *computeInstanceResource) Create(ctx context.Context, req resource.Creat
239
247
VNet : fmt .Sprintf ("%sa-default" , * r .client .Region ),
240
248
},
241
249
},
242
- InstanceType : plan .Spec .InstanceType .ValueString (),
243
- MachineImage : plan .Spec .MachineImage .ValueString (),
244
- UserData : plan .Spec .UserData .ValueString (),
245
- SshPublicKeyNames : sshKeys ,
250
+ InstanceType : plan .Spec .InstanceType .ValueString (),
251
+ MachineImage : plan .Spec .MachineImage .ValueString (),
252
+ UserData : plan .Spec .UserData .ValueString (),
253
+ SshPublicKeyNames : sshKeys ,
254
+ QuickConnectEnabled : capitalize (plan .Spec .QuickConnectEnabled .ValueString ()),
246
255
},
247
256
}
248
257
@@ -307,6 +316,9 @@ func (r *computeInstanceResource) Create(ctx context.Context, req resource.Creat
307
316
return
308
317
}
309
318
319
+ // Set quick connect URL if required
320
+ plan .Spec .QuickConnectUrl = types .StringValue (r .getQuickConnectUrl (plan .Spec .QuickConnectEnabled , instResp ))
321
+
310
322
// Set state to fully populated data
311
323
diags = resp .State .Set (ctx , plan )
312
324
resp .Diagnostics .Append (diags ... )
@@ -346,10 +358,12 @@ func (r *computeInstanceResource) Read(ctx context.Context, req resource.ReadReq
346
358
state .Name = types .StringValue (instance .Metadata .Name )
347
359
state .AvailabilityZone = types .StringValue (instance .Spec .AvailabilityZone )
348
360
state .Spec = & models.InstanceSpec {
349
- InstanceGroup : types .StringValue (instance .Spec .InstanceGroup ),
350
- InstanceType : types .StringValue (instance .Spec .InstanceType ),
351
- MachineImage : types .StringValue (instance .Spec .MachineImage ),
352
- UserData : types .StringValue (instance .Spec .UserData ),
361
+ InstanceGroup : types .StringValue (instance .Spec .InstanceGroup ),
362
+ InstanceType : types .StringValue (instance .Spec .InstanceType ),
363
+ MachineImage : types .StringValue (instance .Spec .MachineImage ),
364
+ UserData : types .StringValue (instance .Spec .UserData ),
365
+ QuickConnectEnabled : types .StringValue (instance .Spec .QuickConnectEnabled ),
366
+ QuickConnectUrl : types .StringValue (instance .Spec .QuickConnectUrl ),
353
367
}
354
368
355
369
for _ , k := range instance .Spec .SshPublicKeyNames {
@@ -440,3 +454,14 @@ func (r *computeInstanceResource) Delete(ctx context.Context, req resource.Delet
440
454
return
441
455
}
442
456
}
457
+
458
+ func (r * computeInstanceResource ) getQuickConnectUrl (quickConnectEnabled types.String , inst * itacservices.Instance ) string {
459
+ if capitalize (quickConnectEnabled .ValueString ()) == "True" {
460
+ return fmt .Sprintf ("https://%s.connect.%s.devcloudtenant.io/v1/connect/%s/%s" ,
461
+ inst .Metadata .ResourceId ,
462
+ * r .client .Region ,
463
+ * r .client .Cloudaccount ,
464
+ inst .Metadata .ResourceId )
465
+ }
466
+ return ""
467
+ }
0 commit comments