Sha256: 168f07147010cb0a46155a9e35b42894abd77ac99a84bb68cbd4646a6c52241a

Contents?: true

Size: 1.58 KB

Versions: 48

Compression:

Stored size: 1.58 KB

Contents

module AgentTasks
  # When request(s) are received by the host agent, it is sent here
  # for handling & processing.
  #
  # @param json_string [String] the requests from the host agent
  #

  OJ_OPTIONS = {mode: :strict}

  def handle_agent_tasks(json_string)
    tasks = Oj.load(json_string, OJ_OPTIONS)

    if tasks.is_a?(Hash)
      process_agent_task(tasks)
    elsif tasks.is_a?(Array)
      tasks.each do |t|
        process_agent_task(t)
      end
    end
  end

  # Process a task sent from the host agent.
  #
  # @param task [String] the request json from the host agent
  #
  def process_agent_task(task)
    if task.key?("action")
      if task["action"] == "ruby.source"
        payload = ::Instana::Util.get_rb_source(task["args"]["file"])
      else
        payload = { :error => "Unrecognized action: #{task["action"]}. An newer Instana gem may be required for this. Current version: #{::Instana::VERSION}" }
      end
    else
      payload = { :error => "Instana Ruby: No action specified in request." }
    end

    path = "com.instana.plugin.ruby/response.#{@process[:report_pid]}?messageId=#{URI.encode(task['messageId'])}"
    uri = URI.parse("http://#{@discovered[:agent_host]}:#{@discovered[:agent_port]}/#{path}")
    req = Net::HTTP::Post.new(uri)
    req.body = Oj.dump(payload, OJ_OPTIONS)
    ::Instana.logger.debug "Responding to agent request: #{req.inspect}"
    make_host_agent_request(req)

  rescue StandardError => e
    Instana.logger.debug { "#{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" }
    Instana.logger.debug { e.backtrace.join("\r\n") }
  end
end

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
instana-1.193.4 lib/instana/agent/tasks.rb
instana-1.193.3 lib/instana/agent/tasks.rb
instana-1.193.3.pre1 lib/instana/agent/tasks.rb
instana-1.193.2 lib/instana/agent/tasks.rb
instana-1.192.1 lib/instana/agent/tasks.rb
instana-1.192.0 lib/instana/agent/tasks.rb
instana-1.13.0 lib/instana/agent/tasks.rb
instana-1.12.0 lib/instana/agent/tasks.rb
instana-1.11.8-java lib/instana/agent/tasks.rb
instana-1.11.8 lib/instana/agent/tasks.rb
instana-1.11.7 lib/instana/agent/tasks.rb
instana-1.11.6 lib/instana/agent/tasks.rb
instana-1.11.6-java lib/instana/agent/tasks.rb
instana-1.11.5 lib/instana/agent/tasks.rb
instana-1.11.5-java lib/instana/agent/tasks.rb
instana-1.11.4-java lib/instana/agent/tasks.rb
instana-1.11.4 lib/instana/agent/tasks.rb
instana-1.11.3-java lib/instana/agent/tasks.rb
instana-1.11.3 lib/instana/agent/tasks.rb
instana-1.11.2-java lib/instana/agent/tasks.rb