require File.join(File.dirname(__FILE__), 'base_agent') require 'em-http/middleware/cookie_jar' require 'uri' module Noah::Agents class RunDeckAgent < Base PREFIX = "rundeck://" NAME = self.class.to_s DEFAULT_CONCURRENCY = 50 def work!(ep, message) logger.info("Sending message to (#{ep})") uri = URI.parse(ep) credentials = {:j_username => uri.user, :j_password => uri.password} EM::HttpRequest.use EM::Middleware::CookieJar conn = EM::HttpRequest.new("http://#{uri.host}:#{uri.port}/j_security_check") http = conn.post :body => credentials http.callback { logger.info("Logged in to RunDeck. Calling path") conn2 = EM::HttpRequest.new("http://#{uri.host}:#{uri.port}#{uri.path}?#{uri.query}") exec = conn2.get exec.callback { logger.info("Successfully called #{ep}") logger.info("Response from RunDeck:") logger.info("#{exec.response}") } exec.errback { logger.error("Something went wrong with #{ep}") } } http.errback { logger.error("Something went wrong with #{ep}") } end end end