Skip to content
Snippets Groups Projects
Verified Commit ca692fbc authored by Nick Thomas's avatar Nick Thomas
Browse files

Fix an exception seen using the online terminal

parent 3edda4c2
No related branches found
No related tags found
1 merge request!10495Merge Requests - Assignee
module Gitlab
# Helper methods to do with Kubernetes network services & resources
module Kubernetes
def self.build_header_hash
Hash.new { |h, k| h[k] = [] }
end
# This is the comand that is run to start a terminal session. Kubernetes
# expects `command=foo&command=bar, not `command[]=foo&command[]=bar`
EXEC_COMMAND = URI.encode_www_form(
Loading
Loading
@@ -37,13 +41,14 @@ module Gitlab
selectors: { pod: pod_name, container: container["name"] },
url: container_exec_url(api_url, namespace, pod_name, container["name"]),
subprotocols: ['channel.k8s.io'],
headers: Hash.new { |h, k| h[k] = [] },
headers: ::Gitlab::Kubernetes.build_header_hash,
created_at: created_at
}
end
end
 
def add_terminal_auth(terminal, token:, max_session_time:, ca_pem: nil)
terminal[:headers] ||= ::Gitlab::Kubernetes.build_header_hash
terminal[:headers]['Authorization'] << "Bearer #{token}"
terminal[:max_session_time] = max_session_time
terminal[:ca_pem] = ca_pem if ca_pem.present?
Loading
Loading
Loading
Loading
@@ -70,4 +70,19 @@ describe Gitlab::Kubernetes do
it { is_expected.to eq(YAML.load_file(path)) }
end
end
describe '#add_terminal_auth' do
it 'adds authentication parameters to a hash' do
terminal = { original: 'value' }
add_terminal_auth(terminal, token: 'foo', max_session_time: 0, ca_pem: 'bar')
expect(terminal).to eq(
original: 'value',
headers: { 'Authorization' => ['Bearer foo'] },
max_session_time: 0,
ca_pem: 'bar'
)
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment