Add custom websocket header to strategy class

This commit is contained in:
Sebastian Serth
2021-10-11 23:11:40 +02:00
parent 08f36a0a7a
commit 58e923abd8
4 changed files with 16 additions and 1 deletions

View File

@ -17,7 +17,7 @@ class Runner::Connection
# Internally, Faye::WebSocket uses EventMachine and the `ping` value is used to wake the EventMachine thread
# The `tls` option is used to customize the validation of TLS connections.
# Passing `nil` as a `root_cert_file` is okay and done so for the DockerContainerPool.
@socket = Faye::WebSocket::Client.new(url, [], ping: 0.1, tls: {root_cert_file: Runner.strategy_class.config[:ca_file]})
@socket = Faye::WebSocket::Client.new(url, [], strategy.websocket_header.merge(ping: 0.1))
@strategy = strategy
@status = :established
@event_loop = event_loop

View File

@ -28,4 +28,8 @@ class Runner::Strategy
def attach_to_execution(_command)
raise NotImplementedError
end
def websocket_header
raise NotImplementedError
end
end

View File

@ -76,6 +76,10 @@ class Runner::Strategy::DockerContainerPool < Runner::Strategy
socket
end
def websocket_header
{}
end
private
def container

View File

@ -121,6 +121,13 @@ class Runner::Strategy::Poseidon < Runner::Strategy
raise Runner::Error::FaradayError.new("Request to Poseidon failed: #{e.inspect}")
end
def websocket_header
{
tls: {root_cert_file: self.class.config[:ca_file]},
headers: {'Poseidon-Token' => self.class.config[:token]},
}
end
private
def execute_command(command)