542 Commits

Author SHA1 Message Date
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
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
b762c73ddd Update usage of Poseidon API to newest API version (0.2.2)
copy file, create and execute command had to be adapted.
2021-11-01 17:12:47 +01:00
8d968e01e6 Move RunnerConnection into class Runner
The old approach was to require the runner connection. This did
not work anymore with Zeitwerk in Rails 6. @sebastian.serth and I
moved the Connection class in `lib` into the ActiveRecord class
`Runner`. This will also work with future changes like specific
error classes. Furthermore the config was fixed and simplified.

Co-authored-by: Sebastian Serth <Sebastian.Serth@hpi.de>
2021-11-01 17:12:47 +01:00
63d997a7e3 Fix Rubocop offenses after Rubocop was reconfigured 2021-11-01 17:12:47 +01:00
fc6aa12b0a Remove handling of runner timeouts 2021-11-01 17:12:47 +01:00
286a3f394d Fix autocorrectable rubocop offences and implement suggestions 2021-11-01 17:12:46 +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
3e6534567d Move copy_submission_files from runner to submission 2021-11-01 17:12:45 +01:00
cf1e4d6edf Rename API routes 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
6a255ced5b Exclude content attribute of files to be trimmed 2021-10-08 19:30:55 +02:00
6321b2edef trim whitespace from beginning and end of string attributes 2021-10-08 19:30:54 +02:00
74e285e9fd Fix rubocop offenses 2021-10-05 12:09:56 +02:00
671c2bd28b Allow changes to internal user when password is void 2021-07-12 13:27:41 +02:00
110f1a5750 Fix rubocop offenses after bundle update 2021-06-30 09:13:25 +02:00
e7cf4ef5db Apply automatic rubocop fixes 2021-06-25 14:41:49 +02:00
5243808d54 Apply automatic rubocop fixes 2021-05-17 19:40:38 +02:00
da0a682ffb Apply manual rubocop fixes 2021-05-14 22:03:06 +02:00
6cbecb5b39 Apply automatic rubocop fixes 2021-05-14 22:03:06 +02:00
11962a1d65 Upgrade to Rails 6.1 and apply new framework defaults 2021-05-12 16:49:14 +02:00
3c7e9176a2 Daily Rubocop 2021-04-30 12:06:13 +02:00
4958f5b9a9 Add StudyGroup to RemoteEvaluationMapping 2021-04-30 12:06:12 +02:00
1d5ceebd7b Fix RfC filter for unnamed study groups 2021-04-09 10:25:41 +02:00
44b32b6f6a #46 Add Prometheus exporter 2021-04-07 14:06:32 +02:00
36ac8b63cb Use regular file as default for new exercise file roles 2021-03-17 14:33:40 +01:00
b10e23dd16 Upgrade to newest Sentry 2021-03-04 14:02:16 +01:00
72b3524b18 Leverage PostgreSQL count for study group size 2021-01-23 00:28:11 +01:00
423a5b08f9 Allow internal user to be part of an study group 2021-01-11 14:22:50 +01:00
b2cb1bde39 Use postgres interval explicitly for all default occasions 2020-12-16 17:35:52 +01:00
89a42f2dae Use either remoteSubmit or submit for showing exercise statistics 2020-12-16 13:23:47 +01:00
2d2869765f Ensure Postgres always returns a duration 2020-12-14 19:57:11 +01:00
bc2e0d90c4 Use proper duration instead of seconds since midnight 2020-12-14 19:11:12 +01:00
304f0ad469 Add sentry logging for working_time_query 2020-12-14 13:17:12 +01:00
fac29f73d4 Respect user_type for RfC index routes 2020-12-04 16:58:11 +01:00
993fb88f03 Enable submit via API client 2020-11-25 20:47:28 +01:00
4d09c8a6d6 Prevent exception if no detailed_linter_results are available 2020-11-09 00:00:31 +01:00
4cc9bc49fe Cap points_ratio for tags statistics at 1.0 2020-10-28 16:26:40 +01:00
e8b02b2e0a Submission file_by_name: Improve comment 2020-10-27 01:14:13 +01:00
c2db083529 Hotfix: LinterCheckRun rescue within each loop 2020-10-27 01:11:31 +01:00
bad51add3f Store parsed linter messages 2020-10-26 21:14:09 +01:00
ee7729110b Add LinterCheck and LinterCheckRun 2020-10-26 21:08:43 +01:00