Fix Bug with the runner recovery
that the runners of the environment 10 are also recovered for the environment 1.
This commit is contained in:
@@ -8,6 +8,8 @@ import (
|
|||||||
api "github.com/hashicorp/nomad/api"
|
api "github.com/hashicorp/nomad/api"
|
||||||
config "github.com/openHPI/poseidon/internal/config"
|
config "github.com/openHPI/poseidon/internal/config"
|
||||||
|
|
||||||
|
dto "github.com/openHPI/poseidon/pkg/dto"
|
||||||
|
|
||||||
io "io"
|
io "io"
|
||||||
|
|
||||||
mock "github.com/stretchr/testify/mock"
|
mock "github.com/stretchr/testify/mock"
|
||||||
@@ -187,13 +189,13 @@ func (_m *ExecutorAPIMock) LoadJobList() ([]*api.JobListStub, error) {
|
|||||||
return r0, r1
|
return r0, r1
|
||||||
}
|
}
|
||||||
|
|
||||||
// LoadRunnerIDs provides a mock function with given fields: environmentID
|
// LoadRunnerIDs provides a mock function with given fields: prefix
|
||||||
func (_m *ExecutorAPIMock) LoadRunnerIDs(environmentID string) ([]string, error) {
|
func (_m *ExecutorAPIMock) LoadRunnerIDs(prefix string) ([]string, error) {
|
||||||
ret := _m.Called(environmentID)
|
ret := _m.Called(prefix)
|
||||||
|
|
||||||
var r0 []string
|
var r0 []string
|
||||||
if rf, ok := ret.Get(0).(func(string) []string); ok {
|
if rf, ok := ret.Get(0).(func(string) []string); ok {
|
||||||
r0 = rf(environmentID)
|
r0 = rf(prefix)
|
||||||
} else {
|
} else {
|
||||||
if ret.Get(0) != nil {
|
if ret.Get(0) != nil {
|
||||||
r0 = ret.Get(0).([]string)
|
r0 = ret.Get(0).([]string)
|
||||||
@@ -202,7 +204,7 @@ func (_m *ExecutorAPIMock) LoadRunnerIDs(environmentID string) ([]string, error)
|
|||||||
|
|
||||||
var r1 error
|
var r1 error
|
||||||
if rf, ok := ret.Get(1).(func(string) error); ok {
|
if rf, ok := ret.Get(1).(func(string) error); ok {
|
||||||
r1 = rf(environmentID)
|
r1 = rf(prefix)
|
||||||
} else {
|
} else {
|
||||||
r1 = ret.Error(1)
|
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
|
// 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)
|
ret := _m.Called(environmentID)
|
||||||
|
|
||||||
var r0 []*api.Job
|
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)
|
r0 = rf(environmentID)
|
||||||
} else {
|
} else {
|
||||||
if ret.Get(0) != nil {
|
if ret.Get(0) != nil {
|
||||||
@@ -224,7 +226,7 @@ func (_m *ExecutorAPIMock) LoadRunnerJobs(environmentID string) ([]*api.Job, err
|
|||||||
}
|
}
|
||||||
|
|
||||||
var r1 error
|
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)
|
r1 = rf(environmentID)
|
||||||
} else {
|
} else {
|
||||||
r1 = ret.Error(1)
|
r1 = ret.Error(1)
|
||||||
|
@@ -7,6 +7,7 @@ import (
|
|||||||
nomadApi "github.com/hashicorp/nomad/api"
|
nomadApi "github.com/hashicorp/nomad/api"
|
||||||
"github.com/hashicorp/nomad/nomad/structs"
|
"github.com/hashicorp/nomad/nomad/structs"
|
||||||
"github.com/openHPI/poseidon/internal/config"
|
"github.com/openHPI/poseidon/internal/config"
|
||||||
|
"github.com/openHPI/poseidon/pkg/dto"
|
||||||
"github.com/openHPI/poseidon/pkg/logging"
|
"github.com/openHPI/poseidon/pkg/logging"
|
||||||
"github.com/openHPI/poseidon/pkg/nullio"
|
"github.com/openHPI/poseidon/pkg/nullio"
|
||||||
"io"
|
"io"
|
||||||
@@ -33,11 +34,11 @@ type ExecutorAPI interface {
|
|||||||
LoadEnvironmentJobs() ([]*nomadApi.Job, error)
|
LoadEnvironmentJobs() ([]*nomadApi.Job, error)
|
||||||
|
|
||||||
// LoadRunnerJobs loads all runner jobs specific for the environment.
|
// 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.
|
// 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 returns the mapped ports of the runner.
|
||||||
LoadRunnerPortMappings(runnerID string) ([]nomadApi.PortMapping, error)
|
LoadRunnerPortMappings(runnerID string) ([]nomadApi.PortMapping, error)
|
||||||
@@ -88,8 +89,8 @@ func (a *APIClient) init(nomadConfig *config.Nomad) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *APIClient) LoadRunnerIDs(environmentID string) (runnerIDs []string, err error) {
|
func (a *APIClient) LoadRunnerIDs(prefix string) (runnerIDs []string, err error) {
|
||||||
list, err := a.listJobs(environmentID)
|
list, err := a.listJobs(prefix)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -113,8 +114,8 @@ func (a *APIClient) LoadRunnerPortMappings(runnerID string) ([]nomadApi.PortMapp
|
|||||||
return alloc.AllocatedResources.Shared.Ports, nil
|
return alloc.AllocatedResources.Shared.Ports, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *APIClient) LoadRunnerJobs(environmentID string) ([]*nomadApi.Job, error) {
|
func (a *APIClient) LoadRunnerJobs(environmentID dto.EnvironmentID) ([]*nomadApi.Job, error) {
|
||||||
runnerIDs, err := a.LoadRunnerIDs(environmentID)
|
runnerIDs, err := a.LoadRunnerIDs(RunnerJobID(environmentID, ""))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return []*nomadApi.Job{}, fmt.Errorf("couldn't load jobs: %w", err)
|
return []*nomadApi.Job{}, fmt.Errorf("couldn't load jobs: %w", err)
|
||||||
}
|
}
|
||||||
|
@@ -184,7 +184,7 @@ func (m *NomadRunnerManager) Return(r Runner) error {
|
|||||||
func (m *NomadRunnerManager) Load() {
|
func (m *NomadRunnerManager) Load() {
|
||||||
for _, environment := range m.environments.List() {
|
for _, environment := range m.environments.List() {
|
||||||
environmentLogger := log.WithField("environmentID", environment.ID())
|
environmentLogger := log.WithField("environmentID", environment.ID())
|
||||||
runnerJobs, err := m.apiClient.LoadRunnerJobs(environment.ID().ToString())
|
runnerJobs, err := m.apiClient.LoadRunnerJobs(environment.ID())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
environmentLogger.WithError(err).Warn("Error fetching the runner jobs")
|
environmentLogger.WithError(err).Warn("Error fetching the runner jobs")
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user