checker.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package executor
  2. import (
  3. "fmt"
  4. schemepkg "git.buran.team/main/cep/scheme"
  5. )
  6. type FindContainer func(string) (Container, error)
  7. type Checker interface {
  8. Check() *TaskResult
  9. }
  10. func NewChecker(global *Global, ticket *Ticket, finder FindContainer, checkerScheme schemepkg.Checker) (Checker, error) {
  11. switch checkerScheme.Kind {
  12. case schemepkg.CHECKER_KIND_SEQUENTIAL:
  13. checks := []Check{}
  14. for _, checkScheme := range checkerScheme.KindSequential.Checks {
  15. container, err := finder(checkScheme.ContainerID)
  16. if err != nil {
  17. return nil, fmt.Errorf("can't create checker: %w", err)
  18. }
  19. check, err := NewCheck(global, ticket, checkScheme, container)
  20. if err != nil {
  21. return nil, fmt.Errorf("can't create checker: %w", err)
  22. }
  23. checks = append(checks, check)
  24. }
  25. return NewSequentialChecker(global, ticket, checks)
  26. case schemepkg.CHECKER_KIND_PARALLEL:
  27. checks := []Check{}
  28. for _, checkScheme := range checkerScheme.KindParallel.Checks {
  29. container, err := finder(checkScheme.ContainerID)
  30. if err != nil {
  31. return nil, fmt.Errorf("can't create checker: %w", err)
  32. }
  33. check, err := NewCheck(global, ticket, checkScheme, container)
  34. if err != nil {
  35. return nil, fmt.Errorf("can't create checker: %w", err)
  36. }
  37. checks = append(checks, check)
  38. }
  39. return NewParallelChecker(global, ticket, checks)
  40. }
  41. return nil, ErrKindUnknown
  42. }