Commit Graph

605 Commits

Author SHA1 Message Date
4ad898ad8b Remove set_docker_client method from submissions_controller.rb 2021-11-01 17:12:54 +01:00
1bf92d8c90 Fix sentry error capturing in submissions controller 2021-11-01 17:12:53 +01:00
30603cb7ab Generalize method and constant names for runner management 2021-11-01 17:12:53 +01:00
c7369366d5 Ensure that only one EventMachine is running 2021-11-01 17:12:52 +01:00
5cc180d0e9 Fix rubocop, I18n, cleanup rebase 2021-11-01 17:12:52 +01:00
2dff81a510 Attach duration information to the exception object 2021-11-01 17:12:52 +01:00
36578a2817 Ensure to save Testrun even when an error occurs 2021-11-01 17:12:52 +01:00
d1a5773e60 Add debug log statements to runner connection 2021-11-01 17:12:51 +01:00
704407b9fc Add strategy for DockerContainerPool
In order to provide an alternative to Poseidon, a strategy for the
DockerContainerPool is added that is used by the runner model.

Co-authored-by: Sebastian Serth <Sebastian.Serth@hpi.de>
2021-11-01 17:12:51 +01:00
413f9b2705 Improve error resilience and handling
Timeouts are now handled correctly and the Runner automatically
creates the execution environment if it could not be found in
Poseidon. The runner is deleted locally if Poseidon returns
a bad request error.
2021-11-01 17:12:50 +01:00
b6bc578aea Move submission scoring from controller concern to submission model
Localization and markdown formatting is now done in a controller
spec in order to bring this logic away from the data and towards
the view.
2021-11-01 17:12:50 +01:00
d0d1b1bffd Introduce strategy for runner behavior
The runner model is only a class responsible for storing information
now. Based on the configuration it picks a strategy for the runner
management. The Poseidon strategy is already implemented and tested.
The Docker strategy will follow.
2021-11-01 17:12:49 +01:00
cf58be97ee Fix 17 previously failing specs 2021-11-01 17:12:49 +01:00
598de3bcff Add button to synchronize all execution environments
This adds a button to the execution environment index page that, when
clicked, causes all execution environments to be synchronized to the
runner management (Poseidon) by creating or replacing them.

CodeOcean does not synchronize it's execution environments on startup or
when a new runner management configuration is used for the first time.
The administrator has to manually start this process by pressing this
button.

The equivalent for syncing just one execution environment is updating
it.
2021-11-01 17:12:49 +01:00
d5b274c9f2 Introduce new error types for runners
The errors are raised in the runner model and in the runner connection
class. In the submission controller the errors are rescued and,
depending on the error, the status timeout / container depleted is
sent to the client.
2021-11-01 17:12:48 +01:00
90fac7b94c Copy execution environment to Poseidon on create and update
When creating or updating an execution environment, an API call to
Poseidon is made with the necessary information to create the
corresponding Nomad job.

If runner management is configured, his will display a warning
(currently in the same color as if it were a success) in the UI, if the
API call fails. The environment is saved even if it fails.
If runner management is not configured, this warning will not be created.
2021-11-01 17:12:48 +01:00
63d997a7e3 Fix Rubocop offenses after Rubocop was reconfigured 2021-11-01 17:12:47 +01:00
17bd2d8726 Reuse runners per user and execution environment
Co-authored-by: Jan-Eric Hellenberg <jan-eric.hellenberg@student.hpi.uni-potsdam.de>
Co-authored-by: Maximilian Pass <maximilian.pass@student.hpi.uni-potsdam.de>
2021-11-01 17:12:46 +01:00
2404c1c36c Rename variables from container to runner 2021-11-01 17:12:45 +01:00
575057acd3 Fix some non-autocorrectable linting issues
Many functions in submission_controller.rb still are very long and have
a high complexity. Because the logic for handling execution of
submissions will probably move elsewhere (when switching to
ActionCable), this is fine for now.
2021-11-01 17:12:45 +01:00
80932c0c40 Auto-correct linting issues 2021-11-01 17:12:45 +01:00
cf1e4d6edf Rename API routes 2021-11-01 17:12:44 +01:00
28f8de1a93 Implement workaroud for double render error
Co-authored-by: Felix Auringer <felix.auringer@student.hpi.uni-potsdam.de>
2021-11-01 17:12:44 +01:00
347e4728a0 Rework protocol inside websocket
Co-authored-by Felix Auringer <felix.auringer@student.hpi.uni-potsdam.de>
2021-11-01 17:12:44 +01:00
6a4e302f4e Fix socket handling and add configuration option
Co-authored-by: Felix Auringer <felix.auringer@student.hpi.uni-potsdam.de>
2021-11-01 17:12:43 +01:00
92b249e7b3 Reimplement scoring and create connection abstraction
Co-authored-by: Felix Auringer <felix.auringer@student.hpi.uni-potsdam.de>
2021-11-01 17:12:43 +01:00
1546f70818 Begin to refactor websocket handling and implement test
Co-authored-by: Felix Auringer <felix.auringer@student.hpi.uni-potsdam.de>
2021-11-01 17:12:43 +01:00
3cf70a33d8 Integrate new API with websocket (run only)
Co-authored-by: Felix Auringer <felix.auringer@student.hpi.uni-potsdam.de>
2021-11-01 17:12:43 +01:00
2e2cd1855e Add Container abstration with new API calls and adapt running a submission
Co-authored-by: Felix Auringer <felix.auringer@student.hpi.uni-potsdam.de>
2021-11-01 17:12:43 +01:00
bb4b4ece92 Add ping/pong health check 2021-10-09 23:37:31 +02:00
9374334bef Fix memoization for exercise_params 2021-10-08 19:30:55 +02:00
ccf2f1f5fd Memoize @exercise_params 2021-10-08 19:30:54 +02:00
74e285e9fd Fix rubocop offenses 2021-10-05 12:09:56 +02:00
a170f7bfc2 Throw exception on any error within Concurrent::Future
Co-authored-by: Sebastian Serth <Sebastian.Serth@hpi.de>
2021-08-05 23:17:06 +02:00
3840b45f8a Revert "Revert "Use switch_locale instead of I18n.with_locale directly""
This reverts commit 2c08e270e7.

Co-authored-by: Sebastian Serth <Sebastian.Serth@hpi.de>
2021-08-05 23:17:06 +02:00
2c08e270e7 Revert "Use switch_locale instead of I18n.with_locale directly"
This reverts commit 125c342f35.
2021-08-05 11:55:54 +02:00
125c342f35 Use switch_locale instead of I18n.with_locale directly 2021-07-26 12:01:25 +02:00
448b5e4a7a Use current_locale for "not_graded" hint 2021-07-22 10:23:57 +02:00
671c2bd28b Allow changes to internal user when password is void 2021-07-12 13:27:41 +02:00
d7eb562389 Prevent underscores from being removed during command substitution 2021-07-07 20:42:59 +02:00
72e4026d6c Ensure that the current docker image is listed when editing an execution environment 2021-07-07 20:19:45 +02:00
9696fcb06f Remove unnecessary require for zip download 2021-07-06 09:27:44 +02:00
110f1a5750 Fix rubocop offenses after bundle update 2021-06-30 09:13:25 +02:00
7010614a75 Re-enable translation of linter messages 2021-06-28 22:11:00 +02:00
d08707f62e Fix switch_locale to return the block result 2021-06-28 16:08:24 +02:00
1b71163a77 Refactor locale with around method 2021-06-25 17:36:56 +02:00
e7cf4ef5db Apply automatic rubocop fixes 2021-06-25 14:41:49 +02:00
7b4a487530 Localize exercises.implement.not_graded 2021-06-11 22:23:09 +02:00
08d7b89108 Merge pull request #930 from openHPI/own-project
Rebrush action sidebar for implement view
2021-06-01 17:38:55 +02:00
f32661ad78 Rework left sidebar
* Move Buttons from left sidebar to JSTree
* Use light style for collapse sidebar buttons
2021-05-28 17:49:59 +02:00