github.com/kubeshop/testkube@v1.17.23/pkg/scheduler/service.go (about) 1 package scheduler 2 3 import ( 4 "go.uber.org/zap" 5 6 "github.com/kubeshop/testkube/pkg/event/bus" 7 "github.com/kubeshop/testkube/pkg/repository/config" 8 9 executorsv1 "github.com/kubeshop/testkube-operator/pkg/client/executors/v1" 10 testsv3 "github.com/kubeshop/testkube-operator/pkg/client/tests/v3" 11 testsourcesv1 "github.com/kubeshop/testkube-operator/pkg/client/testsources/v1" 12 testsuiteexecutionsclientv1 "github.com/kubeshop/testkube-operator/pkg/client/testsuiteexecutions/v1" 13 testsuitesv3 "github.com/kubeshop/testkube-operator/pkg/client/testsuites/v3" 14 v1 "github.com/kubeshop/testkube/internal/app/api/metrics" 15 "github.com/kubeshop/testkube/pkg/configmap" 16 "github.com/kubeshop/testkube/pkg/event" 17 "github.com/kubeshop/testkube/pkg/executor/client" 18 "github.com/kubeshop/testkube/pkg/featureflags" 19 logsclient "github.com/kubeshop/testkube/pkg/logs/client" 20 "github.com/kubeshop/testkube/pkg/repository/result" 21 "github.com/kubeshop/testkube/pkg/repository/testresult" 22 "github.com/kubeshop/testkube/pkg/secret" 23 "github.com/kubeshop/testkube/pkg/tcl/checktcl" 24 ) 25 26 type Scheduler struct { 27 metrics v1.Metrics 28 executor client.Executor 29 containerExecutor client.Executor 30 testResults result.Repository 31 testsuiteResults testresult.Repository 32 executorsClient executorsv1.Interface 33 testsClient testsv3.Interface 34 testSuitesClient testsuitesv3.Interface 35 testSourcesClient testsourcesv1.Interface 36 secretClient secret.Interface 37 events *event.Emitter 38 logger *zap.SugaredLogger 39 configMap config.Repository 40 configMapClient configmap.Interface 41 testSuiteExecutionsClient testsuiteexecutionsclientv1.Interface 42 eventsBus bus.Bus 43 dashboardURI string 44 featureFlags featureflags.FeatureFlags 45 logsStream logsclient.Stream 46 subscriptionChecker checktcl.SubscriptionChecker 47 namespace string 48 agentAPITLSSecret string 49 runnerCustomCASecret string 50 } 51 52 func NewScheduler( 53 metrics v1.Metrics, 54 executor client.Executor, 55 containerExecutor client.Executor, 56 executionResults result.Repository, 57 testExecutionResults testresult.Repository, 58 executorsClient executorsv1.Interface, 59 testsClient testsv3.Interface, 60 testSuitesClient testsuitesv3.Interface, 61 testSourcesClient testsourcesv1.Interface, 62 secretClient secret.Interface, 63 events *event.Emitter, 64 logger *zap.SugaredLogger, 65 configMap config.Repository, 66 configMapClient configmap.Interface, 67 testSuiteExecutionsClient testsuiteexecutionsclientv1.Interface, 68 eventsBus bus.Bus, 69 dashboardURI string, 70 featureFlags featureflags.FeatureFlags, 71 logsStream logsclient.Stream, 72 namespace string, 73 agentAPITLSSecret string, 74 runnerCustomCASecret string, 75 ) *Scheduler { 76 return &Scheduler{ 77 metrics: metrics, 78 executor: executor, 79 containerExecutor: containerExecutor, 80 secretClient: secretClient, 81 testResults: executionResults, 82 testsuiteResults: testExecutionResults, 83 executorsClient: executorsClient, 84 testsClient: testsClient, 85 testSuitesClient: testSuitesClient, 86 testSourcesClient: testSourcesClient, 87 events: events, 88 logger: logger, 89 configMap: configMap, 90 configMapClient: configMapClient, 91 testSuiteExecutionsClient: testSuiteExecutionsClient, 92 eventsBus: eventsBus, 93 dashboardURI: dashboardURI, 94 featureFlags: featureFlags, 95 logsStream: logsStream, 96 namespace: namespace, 97 agentAPITLSSecret: agentAPITLSSecret, 98 runnerCustomCASecret: runnerCustomCASecret, 99 } 100 } 101 102 // WithSubscriptionChecker sets subscription checker for the Scheduler 103 // This is used to check if Pro/Enterprise subscription is valid 104 func (s *Scheduler) WithSubscriptionChecker(subscriptionChecker checktcl.SubscriptionChecker) *Scheduler { 105 s.subscriptionChecker = subscriptionChecker 106 return s 107 }