Save the environment id for runner monitoring.

This commit is contained in:
Maximilian Paß
2022-07-17 14:15:49 +02:00
parent 49c7a2d405
commit 18daa1152c
4 changed files with 29 additions and 16 deletions

View File

@ -36,8 +36,8 @@ func NewNomadEnvironment(apiClient nomad.ExecutorAPI, jobHCL string) (*NomadEnvi
return nil, fmt.Errorf("error parsing Nomad job: %w", err)
}
return &NomadEnvironment{apiClient, jobHCL, job,
storage.NewMonitoredLocalStorage[runner.Runner](monitoring.MeasurementIdleRunnerNomad, nil)}, nil
return &NomadEnvironment{apiClient, jobHCL, job, storage.NewMonitoredLocalStorage[runner.Runner](
monitoring.MeasurementIdleRunnerNomad, runner.MonitorRunnersEnvironmentID)}, nil
}
func NewNomadEnvironmentFromRequest(

View File

@ -3,6 +3,7 @@ package environment
import (
_ "embed"
"fmt"
nomadApi "github.com/hashicorp/nomad/api"
"github.com/hashicorp/nomad/nomad/structs"
"github.com/openHPI/poseidon/internal/nomad"
"github.com/openHPI/poseidon/internal/runner"
@ -139,18 +140,24 @@ func (m *NomadEnvironmentManager) Load() error {
jobLogger.Info("Couldn't find config task group in job, skipping ...")
continue
}
environment := &NomadEnvironment{
apiClient: m.api,
jobHCL: templateEnvironmentJobHCL,
job: job,
idleRunners: storage.NewMonitoredLocalStorage[runner.Runner](monitoring.MeasurementIdleRunnerNomad, nil),
}
environment := newNomadEnvironmetFromJob(job, m.api)
m.runnerManager.StoreEnvironment(environment)
jobLogger.Info("Successfully recovered environment")
}
return nil
}
// newNomadEnvironmetFromJob creates a Nomad environment from the passed Nomad job definition.
func newNomadEnvironmetFromJob(job *nomadApi.Job, apiClient nomad.ExecutorAPI) *NomadEnvironment {
return &NomadEnvironment{
apiClient: apiClient,
jobHCL: templateEnvironmentJobHCL,
job: job,
idleRunners: storage.NewMonitoredLocalStorage[runner.Runner](
monitoring.MeasurementIdleRunnerNomad, runner.MonitorRunnersEnvironmentID),
}
}
// loadTemplateEnvironmentJobHCL loads the template environment job HCL from the given path.
// If the path is empty, the embedded default file is used.
func loadTemplateEnvironmentJobHCL(path string) error {
@ -178,12 +185,7 @@ func fetchEnvironment(id dto.EnvironmentID, apiClient nomad.ExecutorAPI) (runner
continue
}
if id == environmentID {
fetchedEnvironment = &NomadEnvironment{
apiClient: apiClient,
jobHCL: templateEnvironmentJobHCL,
job: job,
idleRunners: storage.NewMonitoredLocalStorage[runner.Runner](monitoring.MeasurementIdleRunnerNomad, nil),
}
fetchedEnvironment = newNomadEnvironmetFromJob(job, apiClient)
}
}
return fetchedEnvironment, nil

View File

@ -260,7 +260,9 @@ func TestNomadEnvironmentManager_List(t *testing.T) {
environments, err = m.List(true)
assert.NoError(t, err)
assert.Equal(t, 1, len(environments))
assert.Equal(t, fetchedEnvironment, environments[0])
nomadEnvironment, ok := environments[0].(*NomadEnvironment)
assert.True(t, ok)
assert.Equal(t, fetchedEnvironment.job, nomadEnvironment.job)
})
}