class Rancher::Api::Instance::Action

Few possible actions are:

- execute shell command
- render logs
- restart

Public Instance Methods

run!() click to toggle source
# File lib/rancher/api/models/instance/action.rb, line 19
def run!
  uri = URI.parse(url)
  uri.userinfo = "#{Rancher::Api.configuration.access_key}:#{Rancher::Api.configuration.secret_key}"
  uri.query = "token=#{token}"

  self.response = []

  EM.run do
    # 15 seconds timeout in case of slow operation
    #
    EM.add_timer(15) do
      EM.stop
    end

    ws = Faye::WebSocket::Client.new(uri.to_s)

    ws.on :message do |event|
      response << Base64.decode64(event.data)
    end

    ws.on :close do |_event|
      ws = nil
      EM.stop
    end
  end

  self.response = response.join

  self
end