diff --git a/apps/dashboard/app/helpers/batch_connect/sessions_helper.rb b/apps/dashboard/app/helpers/batch_connect/sessions_helper.rb index bb4ee86bbf..9bcbb063eb 100644 --- a/apps/dashboard/app/helpers/batch_connect/sessions_helper.rb +++ b/apps/dashboard/app/helpers/batch_connect/sessions_helper.rb @@ -95,7 +95,7 @@ def time(session) end def host(session) - if ::Configuration.ood_bc_ssh_to_compute_node + if session.ssh_to_compute_node? content_tag(:p) do concat content_tag(:strong, t('dashboard.batch_connect_sessions_stats_host')) concat " " diff --git a/apps/dashboard/app/models/batch_connect/session.rb b/apps/dashboard/app/models/batch_connect/session.rb index 28839d1064..dd21b9bfde 100644 --- a/apps/dashboard/app/models/batch_connect/session.rb +++ b/apps/dashboard/app/models/batch_connect/session.rb @@ -497,6 +497,26 @@ def connection_in_info? info.respond_to?(:ood_connection_info) end + # Whether to allow SSH to node running the job + # @return [Boolean] whether to allow SSH to node running the job + def ssh_to_compute_node? + if !cluster_ssh_to_compute_node?.nil? + return cluster_ssh_to_compute_node? + else + return global_ssh_to_compute_node? + end + end + + # @return [Boolean] + def cluster_ssh_to_compute_node? + cluster.batch_connect_ssh_allow? + end + + # @return [Boolean] + def global_ssh_to_compute_node? + Configuration.ood_bc_ssh_to_compute_node + end + # A unique identifier that details the current state of a session # @return [String] hash of session def to_hash diff --git a/apps/dashboard/test/models/batch_connect/session_test.rb b/apps/dashboard/test/models/batch_connect/session_test.rb index 9290212960..9525f61201 100644 --- a/apps/dashboard/test/models/batch_connect/session_test.rb +++ b/apps/dashboard/test/models/batch_connect/session_test.rb @@ -382,4 +382,31 @@ def completed? assert Dir.exist?(session.staged_root) end end + + test "ssh_to_compute_node? default" do + session = BatchConnect::Session.new + session.stubs(:cluster).returns(OodCore::Cluster.new({id: 'owens', job: {foo: 'bar'}})) + assert session.ssh_to_compute_node? + end + + test "ssh_to_compute_node? disabled by cluster" do + session = BatchConnect::Session.new + session.stubs(:cluster).returns(OodCore::Cluster.new({id: 'owens', job: {foo: 'bar'}, batch_connect: {ssh_allow: false}})) + Configuration.stubs(:ood_bc_ssh_to_compute_node).returns(true) + refute session.ssh_to_compute_node? + end + + test "ssh_to_compute_node? disabled globally" do + session = BatchConnect::Session.new + session.stubs(:cluster).returns(OodCore::Cluster.new({id: 'owens', job: {foo: 'bar'}})) + Configuration.stubs(:ood_bc_ssh_to_compute_node).returns(false) + refute session.ssh_to_compute_node? + end + + test "ssh_to_compute_node? disabled globally allowed for cluster" do + session = BatchConnect::Session.new + session.stubs(:cluster).returns(OodCore::Cluster.new({id: 'owens', job: {foo: 'bar'}, batch_connect: {ssh_allow: true}})) + Configuration.stubs(:ood_bc_ssh_to_compute_node).returns(false) + assert session.ssh_to_compute_node? + end end