MCPcopy
hub / github.com/kubernetes/test-infra / loadLabels

Function loadLabels

label_sync/main.go:402–449  ·  view source on GitHub ↗

loadLabels returns what labels exist in github

(gc client, org string, repos []string)

Source from the content-addressed store, hash-verified

400
401// loadLabels returns what labels exist in github
402func loadLabels(gc client, org string, repos []string) (*RepoLabels, error) {
403 repoChan := make(chan string, len(repos))
404 for _, repo := range repos {
405 repoChan <- repo
406 }
407 close(repoChan)
408
409 wg := sync.WaitGroup{}
410 wg.Add(maxConcurrentWorkers)
411 labels := make(chan RepoLabels, len(repos))
412 errChan := make(chan error, len(repos))
413 for i := 0; i < maxConcurrentWorkers; i++ {
414 go func(repositories <-chan string) {
415 defer wg.Done()
416 for repository := range repositories {
417 logrus.WithField("org", org).WithField("repo", repository).Info("Listing labels for repo")
418 repoLabels, err := gc.GetRepoLabels(org, repository)
419 if err != nil {
420 logrus.WithField("org", org).WithField("repo", repository).WithError(err).Error("Failed listing labels for repo")
421 errChan <- err
422 }
423 labels <- RepoLabels{repository: repoLabels}
424 }
425 }(repoChan)
426 }
427
428 wg.Wait()
429 close(labels)
430 close(errChan)
431
432 rl := RepoLabels{}
433 for data := range labels {
434 for repo, repoLabels := range data {
435 rl[repo] = repoLabels
436 }
437 }
438
439 var overallErr error
440 if len(errChan) > 0 {
441 var listErrs []error
442 for listErr := range errChan {
443 listErrs = append(listErrs, listErr)
444 }
445 overallErr = fmt.Errorf("failed to list labels: %v", listErrs)
446 }
447
448 return &rl, overallErr
449}
450
451// Delete the label
452func kill(repo string, label Label) Update {

Callers 1

syncOrgFunction · 0.85

Calls 4

makeFunction · 0.85
AddMethod · 0.65
GetRepoLabelsMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected