@@ -93,12 +93,12 @@ func (p *DefaultProvider) Create(ctx context.Context, nodeClass *v1alpha1.ECSNod
9393 return nil , fmt .Errorf ("truncating instance types, %w" , err )
9494 }
9595 tags := getTags (ctx , nodeClass , nodeClaim )
96- launchInstance , err := p .launchInstance (ctx , nodeClass , nodeClaim , instanceTypes , tags )
96+ launchInstance , createAutoProvisioningGroupRequest , err := p .launchInstance (ctx , nodeClass , nodeClaim , instanceTypes , tags )
9797 if err != nil {
9898 return nil , err
9999 }
100100
101- return p . Get ( ctx , * launchInstance . InstanceIds . InstanceId [ 0 ])
101+ return NewInstanceFromProvisioningGroup ( launchInstance , createAutoProvisioningGroupRequest , p . region ), nil
102102}
103103
104104func (p * DefaultProvider ) Get (ctx context.Context , id string ) (* Instance , error ) {
@@ -323,28 +323,28 @@ func getTags(ctx context.Context, nodeClass *v1alpha1.ECSNodeClass, nodeClaim *k
323323}
324324
325325func (p * DefaultProvider ) launchInstance (ctx context.Context , nodeClass * v1alpha1.ECSNodeClass , nodeClaim * karpv1.NodeClaim , instanceTypes []* cloudprovider.InstanceType ,
326- tags map [string ]string ) (* ecsclient.CreateAutoProvisioningGroupResponseBodyLaunchResultsLaunchResult , error ) {
326+ tags map [string ]string ) (* ecsclient.CreateAutoProvisioningGroupResponseBodyLaunchResultsLaunchResult , * ecsclient. CreateAutoProvisioningGroupRequest , error ) {
327327 if err := p .checkODFallback (nodeClaim , instanceTypes ); err != nil {
328328 log .FromContext (ctx ).Error (err , "failed while checking on-demand fallback" )
329329 }
330330 capacityType := p .getCapacityType (nodeClaim , instanceTypes )
331331 zonalVSwitchs , err := p .vSwitchProvider .ZonalVSwitchesForLaunch (ctx , nodeClass , instanceTypes , capacityType )
332332 if err != nil {
333- return nil , fmt .Errorf ("getting vSwitches, %w" , err )
333+ return nil , nil , fmt .Errorf ("getting vSwitches, %w" , err )
334334 }
335335
336336 createAutoProvisioningGroupRequest , err := p .getProvisioningGroup (ctx , nodeClass , nodeClaim , instanceTypes , zonalVSwitchs , capacityType , tags )
337337 if err != nil {
338- return nil , fmt .Errorf ("getting provisioning group, %w" , err )
338+ return nil , nil , fmt .Errorf ("getting provisioning group, %w" , err )
339339 }
340340
341341 runtime := & util.RuntimeOptions {}
342342 resp , err := p .ecsClient .CreateAutoProvisioningGroupWithOptions (createAutoProvisioningGroupRequest , runtime )
343343 if err != nil {
344- return nil , fmt .Errorf ("creating auto provisioning group, %w" , err )
344+ return nil , nil , fmt .Errorf ("creating auto provisioning group, %w" , err )
345345 }
346346
347- return resp .Body .LaunchResults .LaunchResult [0 ], nil
347+ return resp .Body .LaunchResults .LaunchResult [0 ], createAutoProvisioningGroupRequest , nil
348348}
349349
350350// getCapacityType selects spot if both constraints are flexible and there is an
@@ -401,6 +401,14 @@ func (p *DefaultProvider) getProvisioningGroup(ctx context.Context, nodeClass *v
401401 launchTemplateConfigs = append (launchTemplateConfigs , launchTemplateConfig )
402402 }
403403
404+ reqTags := make ([]* ecsclient.CreateAutoProvisioningGroupRequestTag , 0 , len (tags ))
405+ for k , v := range tags {
406+ reqTags = append (reqTags , & ecsclient.CreateAutoProvisioningGroupRequestTag {
407+ Key : tea .String (k ),
408+ Value : tea .String (v ),
409+ })
410+ }
411+
404412 createAutoProvisioningGroupRequest := & ecsclient.CreateAutoProvisioningGroupRequest {
405413 RegionId : tea .String (p .region ),
406414 TotalTargetCapacity : tea .String ("1" ),
@@ -420,6 +428,7 @@ func (p *DefaultProvider) getProvisioningGroup(ctx context.Context, nodeClass *v
420428 SystemDiskConfig : []* ecsclient.CreateAutoProvisioningGroupRequestSystemDiskConfig {
421429 {DiskCategory : launchtemplate .SystemDisk .Category },
422430 },
431+ Tag : reqTags ,
423432 }
424433
425434 if capacityType == karpv1 .CapacityTypeSpot {
0 commit comments