@@ -680,7 +680,14 @@ func (me *TkeService) CheckOneOfClusterNodeReady(ctx context.Context, clusterId
680680 if err != nil {
681681 return retryError (err )
682682 }
683- if len (workers ) == 0 {
683+
684+ // check serverless node
685+ virtualNodes , err := me .DescribeClusterVirtualNode (ctx , clusterId )
686+ if err != nil {
687+ return retryError (err )
688+ }
689+
690+ if len (workers ) == 0 && len (virtualNodes ) == 0 {
684691 if mustHaveWorkers {
685692 return resource .RetryableError (fmt .Errorf ("waiting for workers created" ))
686693 }
@@ -693,6 +700,13 @@ func (me *TkeService) CheckOneOfClusterNodeReady(ctx context.Context, clusterId
693700 return nil
694701 }
695702 }
703+ for i := range virtualNodes {
704+ virtualNode := virtualNodes [i ]
705+ if virtualNode .Phase != nil && * virtualNode .Phase == "Running" {
706+ return nil
707+ }
708+ }
709+
696710 return resource .RetryableError (fmt .Errorf ("cluster %s waiting for one of the workers ready" , clusterId ))
697711 })
698712}
@@ -2374,3 +2388,37 @@ func (me *TkeService) ModifyClusterVirtualNodePool(ctx context.Context, request
23742388
23752389 return
23762390}
2391+
2392+ func (me * TkeService ) DescribeClusterVirtualNode (ctx context.Context , clusterId string ) (virtualNodes []tke.VirtualNode , errRet error ) {
2393+ logId := getLogId (ctx )
2394+
2395+ request := tke .NewDescribeClusterVirtualNodeRequest ()
2396+ request .ClusterId = common .StringPtr (clusterId )
2397+
2398+ defer func () {
2399+ if errRet != nil {
2400+ log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " ,
2401+ logId , request .GetAction (), request .ToJsonString (), errRet .Error ())
2402+ }
2403+ }()
2404+
2405+ ratelimit .Check (request .GetAction ())
2406+ response , err := me .client .UseTkeClient ().DescribeClusterVirtualNode (request )
2407+
2408+ if err != nil {
2409+ errRet = err
2410+ return
2411+ }
2412+
2413+ log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " ,
2414+ logId , request .GetAction (), request .ToJsonString (), response .ToJsonString ())
2415+
2416+ if response .Response != nil && len (response .Response .Nodes ) > 0 {
2417+ for _ , node := range response .Response .Nodes {
2418+ if node != nil {
2419+ virtualNodes = append (virtualNodes , * node )
2420+ }
2421+ }
2422+ }
2423+ return
2424+ }
0 commit comments