MCPcopy Create free account
hub / github.com/cloudbase/garm / Wait

Method Wait

runner/runner.go:701–754  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

699}
700
701func (r *Runner) Wait() error {
702 r.mux.Lock()
703 defer r.mux.Unlock()
704
705 var wg sync.WaitGroup
706
707 repos, err := r.poolManagerCtrl.GetRepoPoolManagers()
708 if err != nil {
709 return fmt.Errorf("error fetching repo pool managers: %w", err)
710 }
711
712 orgs, err := r.poolManagerCtrl.GetOrgPoolManagers()
713 if err != nil {
714 return fmt.Errorf("error fetching org pool managers: %w", err)
715 }
716
717 enterprises, err := r.poolManagerCtrl.GetEnterprisePoolManagers()
718 if err != nil {
719 return fmt.Errorf("error fetching enterprise pool managers: %w", err)
720 }
721
722 for poolID, repo := range repos {
723 wg.Add(1)
724 go func(id string, poolMgr common.PoolManager) {
725 defer wg.Done()
726 if err := poolMgr.Wait(); err != nil {
727 slog.With(slog.Any("error", err)).ErrorContext(r.ctx, "timed out waiting for pool manager to exit", "pool_id", id, "pool_mgr_id", poolMgr.ID())
728 }
729 }(poolID, repo)
730 }
731
732 for poolID, org := range orgs {
733 wg.Add(1)
734 go func(id string, poolMgr common.PoolManager) {
735 defer wg.Done()
736 if err := poolMgr.Wait(); err != nil {
737 slog.With(slog.Any("error", err)).ErrorContext(r.ctx, "timed out waiting for pool manager to exit", "pool_id", id)
738 }
739 }(poolID, org)
740 }
741
742 for poolID, enterprise := range enterprises {
743 wg.Add(1)
744 go func(id string, poolMgr common.PoolManager) {
745 defer wg.Done()
746 if err := poolMgr.Wait(); err != nil {
747 slog.With(slog.Any("error", err)).ErrorContext(r.ctx, "timed out waiting for pool manager to exit", "pool_id", id)
748 }
749 }(poolID, enterprise)
750 }
751
752 wg.Wait()
753 return nil
754}
755
756func (r *Runner) validateHookBody(signature, secret string, body []byte) error {
757 if secret == "" {

Callers 1

mainFunction · 0.95

Calls 9

AddMethod · 0.80
LockMethod · 0.65
UnlockMethod · 0.65
GetRepoPoolManagersMethod · 0.65
GetOrgPoolManagersMethod · 0.65
WaitMethod · 0.65
IDMethod · 0.65
DoneMethod · 0.45

Tested by

no test coverage detected