From cf1e4d6edff30e211f1ad6aa0f2886766a539f8d Mon Sep 17 00:00:00 2001 From: Konrad Hanff Date: Thu, 1 Apr 2021 16:11:56 +0200 Subject: [PATCH] Rename API routes --- app/controllers/submissions_controller.rb | 4 +-- app/models/submission.rb | 2 +- lib/{container.rb => runner.rb} | 26 +++++++++---------- ...ner_connection.rb => runner_connection.rb} | 2 +- 4 files changed, 17 insertions(+), 17 deletions(-) rename lib/{container.rb => runner.rb} (69%) rename lib/{container_connection.rb => runner_connection.rb} (98%) diff --git a/app/controllers/submissions_controller.rb b/app/controllers/submissions_controller.rb index 358d353c..a3e2add7 100644 --- a/app/controllers/submissions_controller.rb +++ b/app/controllers/submissions_controller.rb @@ -161,9 +161,9 @@ class SubmissionsController < ApplicationController tubesock.send_data JSON.dump({cmd: :timeout}) @output = "timeout: #{@output}" elsif @output.empty? - tubesock.send_data JSON.dump({cmd: :write, stream: :stdout, data: t('exercises.implement.no_output', timestamp: l(Time.now, format: :short))}) + tubesock.send_data JSON.dump({cmd: :write, stream: :stdout, data: t('exercises.implement.no_output', timestamp: l(Time.now, format: :short)) + "\n"}) end - tubesock.send_data JSON.dump({cmd: :write, stream: :stdout, data: t('exercises.implement.exit', exit_code: exit_code)}) unless status == :timeouted + tubesock.send_data JSON.dump({cmd: :write, stream: :stdout, data: t('exercises.implement.exit', exit_code: exit_code) + "\n"}) unless status == :timeouted kill_socket(tubesock) end diff --git a/app/models/submission.rb b/app/models/submission.rb index 7d94f400..5a5ed14e 100644 --- a/app/models/submission.rb +++ b/app/models/submission.rb @@ -187,7 +187,7 @@ class Submission < ApplicationRecord def prepared_container request_time = Time.now - container = Container.new(execution_environment, execution_environment.permitted_execution_time) + container = Runner.new(execution_environment, execution_environment.permitted_execution_time) container.copy_submission_files self container.waiting_time = Time.now - request_time yield(container) if block_given? diff --git a/lib/container.rb b/lib/runner.rb similarity index 69% rename from lib/container.rb rename to lib/runner.rb index 68e443c4..4ef77a8a 100644 --- a/lib/container.rb +++ b/lib/runner.rb @@ -1,26 +1,26 @@ # frozen_string_literal: true -require 'container_connection' +require 'runner_connection' -class Container +class Runner BASE_URL = CodeOcean::Config.new(:code_ocean).read[:container_management][:url] HEADERS = {"Content-Type" => "application/json"} attr_accessor :waiting_time def initialize(execution_environment, time_limit = nil) - url = "#{BASE_URL}/execution-environments/#{execution_environment.id}/containers/create" - body = {} + url = "#{BASE_URL}/runners" + body = {execution_environment_id: execution_environment.id} if time_limit body[:time_limit] = time_limit end response = Faraday.post(url, body.to_json, HEADERS) response = parse response - @container_id = response[:id] + @id = response[:id] end def copy_files(files) - url = container_url + "/files" + url = runner_url + "/files" body = { files: files.map{ |filename, content| { filename: filename, content: content } } } Faraday.post(url, body.to_json, HEADERS) end @@ -34,8 +34,8 @@ class Container end def execute_command(command) - url = container_url + "/execute" - response = Faraday.patch(url, {command: command}.to_json, HEADERS) + url = runner_url + "/execute" + response = Faraday.post(url, {command: command}.to_json, HEADERS) response = parse response response end @@ -44,24 +44,24 @@ class Container starting_time = Time.now websocket_url = execute_command(command)[:websocket_url] EventMachine.run do - socket = ContainerConnection.new(websocket_url) + socket = RunnerConnection.new(websocket_url) yield(self, socket) if block_given? end Time.now - starting_time # execution time end def destroy - Faraday.delete container_url + Faraday.delete runner_url end def status - parse(Faraday.get(container_url))[:status].to_sym + parse(Faraday.get(runner_url))[:status].to_sym end private - def container_url - "#{BASE_URL}/containers/#{@container_id}" + def runner_url + "#{BASE_URL}/runners/#{@id}" end def parse(response) diff --git a/lib/container_connection.rb b/lib/runner_connection.rb similarity index 98% rename from lib/container_connection.rb rename to lib/runner_connection.rb index ec8fb23f..25008d66 100644 --- a/lib/container_connection.rb +++ b/lib/runner_connection.rb @@ -1,6 +1,6 @@ require 'faye/websocket/client' -class ContainerConnection +class RunnerConnection EVENTS = %i[start output exit stdout stderr].freeze def initialize(url)