in pkg/provider/gke/gke.go [456:487]
func (c *GKE) nodePoolRunning(zone, projectID, clusterID, poolName string) (bool, error) {
req := &containerpb.GetNodePoolRequest{
ProjectId: projectID,
Zone: zone,
ClusterId: clusterID,
NodePoolId: poolName,
}
rep, err := c.clientGKE.GetNodePool(c.ctx, req)
if err != nil {
// We don't consider none existing cluster node pool a failure. So don't return an error here.
if st, ok := status.FromError(err); ok && st.Code() == codes.NotFound {
return false, nil
}
return false, fmt.Errorf("Couldn't get node pool status:%v", err)
}
if rep.Status == containerpb.NodePool_RUNNING {
return true, nil
}
if rep.Status == containerpb.NodePool_ERROR ||
rep.Status == containerpb.NodePool_RUNNING_WITH_ERROR ||
rep.Status == containerpb.NodePool_STOPPING ||
rep.Status == containerpb.NodePool_STATUS_UNSPECIFIED {
//nolint:staticcheck // SA1019 - Ignore "Do not use.".
log.Fatalf("NodePool %s not in a status to become ready: %v", rep.Name, rep.StatusMessage)
}
//nolint:staticcheck // SA1019 - Ignore "Do not use.".
log.Printf("Current cluster node pool '%v' status:%v , %v", rep.Name, rep.Status, rep.StatusMessage)
return false, nil
}