in src/terraform/providers/terraform-provider-avere/averevfxt.go [2121:2161]
func (a *AvereVfxt) scaleUpCluster(newNodeCount int) error {
for {
currentNodeCount, err := a.GetCurrentNodeCount()
if err != nil {
return err
}
// check if cluster sizing is complete
if currentNodeCount >= newNodeCount {
log.Printf("[INFO] vfxt: node count %d >= %d", currentNodeCount, newNodeCount)
return nil
}
log.Printf("[INFO] vfxt: add node to cluster %d (target %d)", currentNodeCount, newNodeCount)
// the cluster should be stable before and after the addition of the cluster node
if err = a.EnsureClusterStable(); err != nil {
return err
}
// only add a single node at a time
err = a.Platform.AddIaasNodeToCluster(a)
if err != nil {
return err
}
// wait until the node is added
targetNodeCount := currentNodeCount + 1
for retries := 0; ; retries++ {
nodeCount, err := a.GetCurrentNodeCount()
if err != nil {
return err
}
if nodeCount >= targetNodeCount {
break
}
if retries > NodeChangeRetryCount {
return fmt.Errorf("Failure to add node after %d retries trying to add node", retries)
}
time.Sleep(NodeChangeRetrySleepSeconds * time.Second)
}
}
}