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  }