Add the Environment ID to the influxdb data.

Also move the interface of an execution environment into its own file, execution_environment.go.
This commit is contained in:
Maximilian Paß
2022-04-10 23:02:33 +02:00
parent b7a20e3114
commit eabe3a1b27
7 changed files with 85 additions and 57 deletions

View File

@ -47,8 +47,8 @@ func configureV1Router(router *mux.Router,
w.WriteHeader(http.StatusNotFound)
})
v1 := router.PathPrefix(BasePath).Subrouter()
v1.HandleFunc(HealthPath, Health).Methods(http.MethodGet)
v1.HandleFunc(VersionPath, Version).Methods(http.MethodGet)
v1.HandleFunc(HealthPath, Health).Methods(http.MethodGet).Name(HealthPath)
v1.HandleFunc(VersionPath, Version).Methods(http.MethodGet).Name(VersionPath)
runnerController := &RunnerController{manager: runnerManager}
environmentController := &EnvironmentController{manager: environmentManager}
@ -59,7 +59,8 @@ func configureV1Router(router *mux.Router,
// May add a statistics controller if another route joins
statisticsRouter := router.PathPrefix(StatisticsPath).Subrouter()
statisticsRouter.
HandleFunc(EnvironmentsPath, StatisticsExecutionEnvironments(environmentManager)).Methods(http.MethodGet)
HandleFunc(EnvironmentsPath, StatisticsExecutionEnvironments(environmentManager)).
Methods(http.MethodGet).Name(EnvironmentsPath)
}
if auth.InitializeAuthentication() {

View File

@ -51,7 +51,6 @@ func (r *RunnerController) provide(writer http.ResponseWriter, request *http.Req
return
}
environmentID := dto.EnvironmentID(runnerRequest.ExecutionEnvironmentID)
logging.AddEnvironmentID(request, environmentID)
nextRunner, err := r.manager.Claim(environmentID, runnerRequest.InactivityTimeout)
if err != nil {
@ -66,7 +65,7 @@ func (r *RunnerController) provide(writer http.ResponseWriter, request *http.Req
}
return
}
logging.AddRunnerID(request, nextRunner.ID())
addMonitoringData(request, nextRunner)
sendJSON(writer, &dto.RunnerResponse{ID: nextRunner.ID(), MappedPorts: nextRunner.MappedPorts()}, http.StatusOK)
}
@ -80,7 +79,7 @@ func (r *RunnerController) updateFileSystem(writer http.ResponseWriter, request
}
targetRunner, _ := runner.FromContext(request.Context())
logging.AddRunnerID(request, targetRunner.ID())
addMonitoringData(request, targetRunner)
if err := targetRunner.UpdateFileSystem(fileCopyRequest); err != nil {
log.WithError(err).Error("Could not perform the requested updateFileSystem.")
writeInternalServerError(writer, err, dto.ErrorUnknown)
@ -106,7 +105,7 @@ func (r *RunnerController) execute(writer http.ResponseWriter, request *http.Req
scheme = "ws"
}
targetRunner, _ := runner.FromContext(request.Context())
logging.AddRunnerID(request, targetRunner.ID())
addMonitoringData(request, targetRunner)
path, err := r.runnerRouter.Get(WebsocketPath).URL(RunnerIDKey, targetRunner.ID())
if err != nil {
@ -158,7 +157,7 @@ func (r *RunnerController) findRunnerMiddleware(next http.Handler) http.Handler
// It destroys the given runner on the executor and removes it from the used runners list.
func (r *RunnerController) delete(writer http.ResponseWriter, request *http.Request) {
targetRunner, _ := runner.FromContext(request.Context())
logging.AddRunnerID(request, targetRunner.ID())
addMonitoringData(request, targetRunner)
err := r.manager.Return(targetRunner)
if err != nil {
@ -172,3 +171,9 @@ func (r *RunnerController) delete(writer http.ResponseWriter, request *http.Requ
writer.WriteHeader(http.StatusNoContent)
}
// addMonitoringData adds the data of the runner and environment we want to monitor.
func addMonitoringData(request *http.Request, r runner.Runner) {
logging.AddRunnerID(request, r.ID())
logging.AddEnvironmentID(request, r.Environment())
}

View File

@ -254,6 +254,7 @@ func (s *UpdateFileSystemRouteTestSuite) SetupTest() {
s.path = routeURL.String()
s.runnerMock = &runner.RunnerMock{}
s.runnerMock.On("ID").Return(tests.DefaultMockID)
s.runnerMock.On("Environment").Return(dto.EnvironmentID(tests.DefaultEnvironmentIDAsInteger))
s.runnerManager.On("Get", tests.DefaultMockID).Return(s.runnerMock, nil)
s.recorder = httptest.NewRecorder()
}

View File

@ -8,7 +8,6 @@ import (
"github.com/gorilla/websocket"
"github.com/openHPI/poseidon/internal/runner"
"github.com/openHPI/poseidon/pkg/dto"
"github.com/openHPI/poseidon/pkg/logging"
"io"
"net/http"
"sync"
@ -337,7 +336,8 @@ func (wp *webSocketProxy) writeMessage(messageType int, data []byte) error {
// connectToRunner is the endpoint for websocket connections.
func (r *RunnerController) connectToRunner(writer http.ResponseWriter, request *http.Request) {
targetRunner, _ := runner.FromContext(request.Context())
logging.AddRunnerID(request, targetRunner.ID())
addMonitoringData(request, targetRunner)
executionID := request.URL.Query().Get(ExecutionIDKey)
if !targetRunner.ExecutionExists(executionID) {
writeNotFound(writer, ErrUnknownExecutionID)