Refactor Nomad Recovery

from an approach that loaded the runners only once at the startup
to a method that will be repeated i.e. if the Nomad Event Stream connection interrupts.
This commit is contained in:
Maximilian Paß
2023-10-23 14:36:14 +02:00
committed by Sebastian Serth
parent b2898f9183
commit 6b69a2d732
22 changed files with 211 additions and 120 deletions

View File

@@ -193,20 +193,20 @@ func createManagerHandler(handler managerCreator, enabled bool,
return runnerManager, environmentManager
}
func createNomadManager(ctx context.Context) (
runnerManager runner.Manager, environmentManager environment.ManagerHandler) {
func createNomadManager(ctx context.Context) (runner.Manager, environment.ManagerHandler) {
// API initialization
nomadAPIClient, err := nomad.NewExecutorAPI(&config.Config.Nomad)
if err != nil {
log.WithError(err).WithField("nomad config", config.Config.Nomad).Fatal("Error creating Nomad API client")
}
runnerManager = runner.NewNomadRunnerManager(nomadAPIClient, ctx)
environmentManager, err = environment.
NewNomadEnvironmentManager(runnerManager, nomadAPIClient, config.Config.Server.TemplateJobFile, ctx)
runnerManager := runner.NewNomadRunnerManager(nomadAPIClient, ctx)
environmentManager, err := environment.
NewNomadEnvironmentManager(runnerManager, nomadAPIClient, config.Config.Server.TemplateJobFile)
if err != nil {
log.WithError(err).Fatal("Error initializing environment manager")
}
go environmentManager.KeepEnvironmentsSynced(runnerManager.SynchronizeRunners, ctx)
return runnerManager, environmentManager
}