diff --git a/internal/nomad/executor_api_mock.go b/internal/nomad/executor_api_mock.go index 852dca4..0e21ed3 100644 --- a/internal/nomad/executor_api_mock.go +++ b/internal/nomad/executor_api_mock.go @@ -8,6 +8,8 @@ import ( api "github.com/hashicorp/nomad/api" config "github.com/openHPI/poseidon/internal/config" + dto "github.com/openHPI/poseidon/pkg/dto" + io "io" mock "github.com/stretchr/testify/mock" @@ -187,13 +189,13 @@ func (_m *ExecutorAPIMock) LoadJobList() ([]*api.JobListStub, error) { return r0, r1 } -// LoadRunnerIDs provides a mock function with given fields: environmentID -func (_m *ExecutorAPIMock) LoadRunnerIDs(environmentID string) ([]string, error) { - ret := _m.Called(environmentID) +// LoadRunnerIDs provides a mock function with given fields: prefix +func (_m *ExecutorAPIMock) LoadRunnerIDs(prefix string) ([]string, error) { + ret := _m.Called(prefix) var r0 []string if rf, ok := ret.Get(0).(func(string) []string); ok { - r0 = rf(environmentID) + r0 = rf(prefix) } else { if ret.Get(0) != nil { r0 = ret.Get(0).([]string) @@ -202,7 +204,7 @@ func (_m *ExecutorAPIMock) LoadRunnerIDs(environmentID string) ([]string, error) var r1 error if rf, ok := ret.Get(1).(func(string) error); ok { - r1 = rf(environmentID) + r1 = rf(prefix) } else { r1 = ret.Error(1) } @@ -211,11 +213,11 @@ func (_m *ExecutorAPIMock) LoadRunnerIDs(environmentID string) ([]string, error) } // LoadRunnerJobs provides a mock function with given fields: environmentID -func (_m *ExecutorAPIMock) LoadRunnerJobs(environmentID string) ([]*api.Job, error) { +func (_m *ExecutorAPIMock) LoadRunnerJobs(environmentID dto.EnvironmentID) ([]*api.Job, error) { ret := _m.Called(environmentID) var r0 []*api.Job - if rf, ok := ret.Get(0).(func(string) []*api.Job); ok { + if rf, ok := ret.Get(0).(func(dto.EnvironmentID) []*api.Job); ok { r0 = rf(environmentID) } else { if ret.Get(0) != nil { @@ -224,7 +226,7 @@ func (_m *ExecutorAPIMock) LoadRunnerJobs(environmentID string) ([]*api.Job, err } var r1 error - if rf, ok := ret.Get(1).(func(string) error); ok { + if rf, ok := ret.Get(1).(func(dto.EnvironmentID) error); ok { r1 = rf(environmentID) } else { r1 = ret.Error(1) diff --git a/internal/nomad/nomad.go b/internal/nomad/nomad.go index 6fc225b..b00b51b 100644 --- a/internal/nomad/nomad.go +++ b/internal/nomad/nomad.go @@ -7,6 +7,7 @@ import ( nomadApi "github.com/hashicorp/nomad/api" "github.com/hashicorp/nomad/nomad/structs" "github.com/openHPI/poseidon/internal/config" + "github.com/openHPI/poseidon/pkg/dto" "github.com/openHPI/poseidon/pkg/logging" "github.com/openHPI/poseidon/pkg/nullio" "io" @@ -33,11 +34,11 @@ type ExecutorAPI interface { LoadEnvironmentJobs() ([]*nomadApi.Job, error) // LoadRunnerJobs loads all runner jobs specific for the environment. - LoadRunnerJobs(environmentID string) ([]*nomadApi.Job, error) + LoadRunnerJobs(environmentID dto.EnvironmentID) ([]*nomadApi.Job, error) - // LoadRunnerIDs returns the IDs of all runners of the specified environment which are running and not about to + // LoadRunnerIDs returns the IDs of all runners with the specified id prefix which are running and not about to // get stopped. - LoadRunnerIDs(environmentID string) (runnerIds []string, err error) + LoadRunnerIDs(prefix string) (runnerIds []string, err error) // LoadRunnerPortMappings returns the mapped ports of the runner. LoadRunnerPortMappings(runnerID string) ([]nomadApi.PortMapping, error) @@ -88,8 +89,8 @@ func (a *APIClient) init(nomadConfig *config.Nomad) error { return nil } -func (a *APIClient) LoadRunnerIDs(environmentID string) (runnerIDs []string, err error) { - list, err := a.listJobs(environmentID) +func (a *APIClient) LoadRunnerIDs(prefix string) (runnerIDs []string, err error) { + list, err := a.listJobs(prefix) if err != nil { return nil, err } @@ -113,8 +114,8 @@ func (a *APIClient) LoadRunnerPortMappings(runnerID string) ([]nomadApi.PortMapp return alloc.AllocatedResources.Shared.Ports, nil } -func (a *APIClient) LoadRunnerJobs(environmentID string) ([]*nomadApi.Job, error) { - runnerIDs, err := a.LoadRunnerIDs(environmentID) +func (a *APIClient) LoadRunnerJobs(environmentID dto.EnvironmentID) ([]*nomadApi.Job, error) { + runnerIDs, err := a.LoadRunnerIDs(RunnerJobID(environmentID, "")) if err != nil { return []*nomadApi.Job{}, fmt.Errorf("couldn't load jobs: %w", err) } diff --git a/internal/runner/manager.go b/internal/runner/manager.go index 983c673..6b52de0 100644 --- a/internal/runner/manager.go +++ b/internal/runner/manager.go @@ -184,7 +184,7 @@ func (m *NomadRunnerManager) Return(r Runner) error { func (m *NomadRunnerManager) Load() { for _, environment := range m.environments.List() { environmentLogger := log.WithField("environmentID", environment.ID()) - runnerJobs, err := m.apiClient.LoadRunnerJobs(environment.ID().ToString()) + runnerJobs, err := m.apiClient.LoadRunnerJobs(environment.ID()) if err != nil { environmentLogger.WithError(err).Warn("Error fetching the runner jobs") }