Fix deleting non existent environments
that is an error caused by throwing a panic when an environment is not found and a nonexistent runner manager at the end of the chain is asked for it.
This commit is contained in:

committed by
Sebastian Serth

parent
689493047d
commit
795c83f7b2
@ -113,7 +113,7 @@ func createAWSManager() (runnerManager runner.Manager, environmentManager enviro
|
||||
// initServer builds the http server and configures it with the chain of responsibility for multiple managers.
|
||||
func initServer(influxClient influxdb2API.WriteAPI) *http.Server {
|
||||
runnerManager, environmentManager := createManagerHandler(createNomadManager, config.Config.Nomad.Enabled,
|
||||
runner.NewAbstractManager(), &environment.AbstractManager{})
|
||||
nil, nil)
|
||||
runnerManager, environmentManager = createManagerHandler(createAWSManager, config.Config.AWS.Enabled,
|
||||
runnerManager, environmentManager)
|
||||
|
||||
|
@ -18,13 +18,17 @@ func (n *AbstractManager) SetNextHandler(next ManagerHandler) {
|
||||
}
|
||||
|
||||
func (n *AbstractManager) NextHandler() ManagerHandler {
|
||||
if n.nextHandler != nil {
|
||||
if n.HasNextHandler() {
|
||||
return n.nextHandler
|
||||
} else {
|
||||
return &AbstractManager{}
|
||||
}
|
||||
}
|
||||
|
||||
func (n *AbstractManager) HasNextHandler() bool {
|
||||
return n.nextHandler != nil
|
||||
}
|
||||
|
||||
func (n *AbstractManager) List(_ bool) ([]runner.ExecutionEnvironment, error) {
|
||||
return []runner.ExecutionEnvironment{}, nil
|
||||
}
|
||||
@ -38,17 +42,17 @@ func (n *AbstractManager) CreateOrUpdate(_ dto.EnvironmentID, _ dto.ExecutionEnv
|
||||
}
|
||||
|
||||
func (n *AbstractManager) Delete(id dto.EnvironmentID) (bool, error) {
|
||||
e, ok := n.runnerManager.GetEnvironment(id)
|
||||
if !ok {
|
||||
if n.nextHandler != nil {
|
||||
isFound, err := n.NextHandler().Delete(id)
|
||||
if err != nil {
|
||||
return false, fmt.Errorf("aws wrapped: %w", err)
|
||||
}
|
||||
return isFound, nil
|
||||
} else {
|
||||
if n.runnerManager == nil {
|
||||
return false, nil
|
||||
}
|
||||
|
||||
e, ok := n.runnerManager.GetEnvironment(id)
|
||||
if !ok {
|
||||
isFound, err := n.NextHandler().Delete(id)
|
||||
if err != nil {
|
||||
return false, fmt.Errorf("abstract wrapped: %w", err)
|
||||
}
|
||||
return isFound, nil
|
||||
}
|
||||
|
||||
n.runnerManager.DeleteEnvironment(id)
|
||||
|
@ -11,6 +11,7 @@ type ManagerHandler interface {
|
||||
Manager
|
||||
SetNextHandler(next ManagerHandler)
|
||||
NextHandler() ManagerHandler
|
||||
HasNextHandler() bool
|
||||
}
|
||||
|
||||
// Manager encapsulates API calls to the executor API for creation and deletion of execution environments.
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Code generated by mockery v2.9.4. DO NOT EDIT.
|
||||
// Code generated by mockery v2.12.3. DO NOT EDIT.
|
||||
|
||||
package environment
|
||||
|
||||
@ -79,6 +79,20 @@ func (_m *ManagerHandlerMock) Get(id dto.EnvironmentID, fetch bool) (runner.Exec
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// HasNextHandler provides a mock function with given fields:
|
||||
func (_m *ManagerHandlerMock) HasNextHandler() bool {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 bool
|
||||
if rf, ok := ret.Get(0).(func() bool); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
r0 = ret.Get(0).(bool)
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// List provides a mock function with given fields: fetch
|
||||
func (_m *ManagerHandlerMock) List(fetch bool) ([]runner.ExecutionEnvironment, error) {
|
||||
ret := _m.Called(fetch)
|
||||
@ -118,9 +132,9 @@ func (_m *ManagerHandlerMock) NextHandler() ManagerHandler {
|
||||
return r0
|
||||
}
|
||||
|
||||
// SetNextHandler provides a mock function with given fields: m
|
||||
func (_m *ManagerHandlerMock) SetNextHandler(m ManagerHandler) {
|
||||
_m.Called(m)
|
||||
// SetNextHandler provides a mock function with given fields: next
|
||||
func (_m *ManagerHandlerMock) SetNextHandler(next ManagerHandler) {
|
||||
_m.Called(next)
|
||||
}
|
||||
|
||||
// Statistics provides a mock function with given fields:
|
||||
@ -138,3 +152,18 @@ func (_m *ManagerHandlerMock) Statistics() map[dto.EnvironmentID]*dto.Statistica
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
type NewManagerHandlerMockT interface {
|
||||
mock.TestingT
|
||||
Cleanup(func())
|
||||
}
|
||||
|
||||
// NewManagerHandlerMock creates a new instance of ManagerHandlerMock. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
|
||||
func NewManagerHandlerMock(t NewManagerHandlerMockT) *ManagerHandlerMock {
|
||||
mock := &ManagerHandlerMock{}
|
||||
mock.Mock.Test(t)
|
||||
|
||||
t.Cleanup(func() { mock.AssertExpectations(t) })
|
||||
|
||||
return mock
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ func (n *AbstractManager) SetNextHandler(next AccessorHandler) {
|
||||
}
|
||||
|
||||
func (n *AbstractManager) NextHandler() AccessorHandler {
|
||||
if n.nextHandler != nil {
|
||||
if n.HasNextHandler() {
|
||||
return n.nextHandler
|
||||
} else {
|
||||
return NewAbstractManager()
|
||||
|
Reference in New Issue
Block a user