github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/internal/operator/orbiter/kinds/clusters/kubernetes/pool.go (about) 1 package kubernetes 2 3 import ( 4 "sync" 5 6 "github.com/caos/orbos/internal/helpers" 7 "github.com/caos/orbos/internal/operator/orbiter/kinds/clusters/core/infra" 8 ) 9 10 func newMachines(pool infra.Pool, number int, desiredInstances int) (machines []infra.Machine, err error) { 11 12 var wg sync.WaitGroup 13 var it int 14 for it = 0; it < number; it++ { 15 wg.Add(1) 16 go func() { 17 defer wg.Done() 18 infraMachines, addErr := pool.AddMachine(desiredInstances) 19 if addErr != nil { 20 err = helpers.Concat(err, addErr) 21 return 22 } 23 for _, machine := range infraMachines { 24 machines = append(machines, machine) 25 } 26 }() 27 } 28 29 wg.Wait() 30 31 if err != nil { 32 for _, machine := range machines { 33 wg.Add(1) 34 go func() { 35 defer wg.Done() 36 37 remove, destroyErr := machine.Destroy() 38 err = helpers.Concat(err, destroyErr) 39 if destroyErr != nil { 40 return 41 } 42 43 err = helpers.Concat(err, remove()) 44 }() 45 } 46 wg.Wait() 47 } 48 49 return machines, err 50 }