diff --git a/app/views/admin/dashboard/show.html.slim b/app/views/admin/dashboard/show.html.slim index f6766d80..a4fd9102 100644 --- a/app/views/admin/dashboard/show.html.slim +++ b/app/views/admin/dashboard/show.html.slim @@ -13,14 +13,14 @@ div.mb-4 = "CodeOcean Release:" pre = Sentry.configuration.release -- if DockerContainerPool.config[:active] +- if DockerContainerPool.active? div.mb-4 = "DockerContainerPool Release:" pre = DockerContainerPool.dump_info['release'] h2 Docker -- if DockerContainerPool.config[:active] +- if DockerContainerPool.active? h3 = t('.current') .table-responsive table.table diff --git a/lib/docker_client.rb b/lib/docker_client.rb index 807f2725..cd48721a 100644 --- a/lib/docker_client.rb +++ b/lib/docker_client.rb @@ -230,7 +230,7 @@ class DockerClient Rails.logger.info("destroying container #{container}") # Checks only if container assignment is not nil and not whether the container itself is still present. - if container && !DockerContainerPool.config[:active] + if container && !DockerContainerPool.active? container.kill container.port_bindings.each_value {|port| PortPool.release(port) } begin @@ -355,7 +355,7 @@ container_execution_time: nil} exit_thread_if_alive @socket.close # if we use pooling and recylce the containers, put it back. otherwise, destroy it. - if DockerContainerPool.config[:active] && RECYCLE_CONTAINERS + if DockerContainerPool.active? && RECYCLE_CONTAINERS self.class.return_container(container, @execution_environment) else @@ -493,7 +493,7 @@ container_execution_time: nil} end # if we use pooling and recylce the containers, put it back. otherwise, destroy it. - if DockerContainerPool.config[:active] && RECYCLE_CONTAINERS + if DockerContainerPool.active? && RECYCLE_CONTAINERS self.class.return_container(container, @execution_environment) else self.class.destroy_container(container) diff --git a/lib/docker_container_pool.rb b/lib/docker_container_pool.rb index a290c82c..61de69aa 100644 --- a/lib/docker_container_pool.rb +++ b/lib/docker_container_pool.rb @@ -9,6 +9,11 @@ require 'concurrent/timer_task' # dump_info and quantities are still in use. class DockerContainerPool + def self.active? + # TODO: Refactor config and merge with code_ocean.yml + config[:active] && Runner.management_active? && Runner.strategy_class == Runner::Strategy::DockerContainerPool + end + def self.config # TODO: Why erb? @config ||= CodeOcean::Config.new(:docker).read(erb: true)[:pool] @@ -39,7 +44,7 @@ class DockerContainerPool def self.get_container(execution_environment) # if pooling is active, do pooling, otherwise just create an container and return it - if config[:active] + if active? begin container_id = JSON.parse(Faraday.get("#{config[:location]}/docker_container_pool/get_container/#{execution_environment.id}").body)['id'] Docker::Container.get(container_id) if container_id.present?