class Appforce::Spawn::Api::Call
Public Class Methods
get_active_users(*args)
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 25 def self.get_active_users(*args) opts = args[1] unless opts[:client_api_name] logger.error "[#{self.name}##{__method__.to_s}] Appforce::Spawn::MissingParameters -- Missing Client API Name" raise Appforce::Spawn::MissingParameters, "Missing Client API Name" end url = "#{client_url(opts[:client_api_name])}/users/active.yml?#{token_param}" logger.debug "[#{self.name}##{__method__.to_s}] URL: #{url}" make_api_call(url) end
get_all_host_data(*args)
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 97 def self.get_all_host_data(*args) opts = args[1] unless opts[:client_api_name] logger.error "[#{self.name}##{__method__.to_s}] Appforce::Spawn::MissingParameters -- Missing Client API Name" raise Appforce::Spawn::MissingParameters, "Missing Client API Name" end url = "#{client_url(opts[:client_api_name])}/all_host_data.json?#{token_param}" logger.debug "[#{self.name}##{__method__.to_s}] URL: #{url}" make_api_call(url) end
get_clients()
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 7 def self.get_clients url = "#{base_api_url}client/list?#{token_param}" logger.debug "[#{self.name}##{__method__.to_s}] URL: #{url}" make_api_call(url) end
get_host_scout_vars(*args)
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 85 def self.get_host_scout_vars(*args) opts = args[1] unless opts[:host_api_name] logger.error "[#{self.name}##{__method__.to_s}] Appforce::Spawn::MissingParameters -- Missing Host API Name" raise Appforce::Spawn::MissingParameters, "Missing Host API Name" end url = "#{host_url(opts[:host_api_name])}/scout.yml?#{token_param}" logger.debug "[#{self.name}##{__method__.to_s}] URL: #{url}" make_api_call(url) end
get_hosts(*args)
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 13 def self.get_hosts(*args) opts = args[1] unless opts[:client_api_name] logger.error "[#{self.name}##{__method__.to_s}] Appforce::Spawn::MissingParameters -- Missing Client API Name" raise Appforce::Spawn::MissingParameters, "Missing Client API Name" end url = "#{client_url(opts[:client_api_name])}/hosts?#{token_param}" logger.debug "[#{self.name}##{__method__.to_s}] URL: #{url}" make_api_call(url) end
get_inactive_users(*args)
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 37 def self.get_inactive_users(*args) opts = args[1] unless opts[:client_api_name] logger.error "[#{self.name}##{__method__.to_s}] Appforce::Spawn::MissingParameters -- Missing Client API Name" raise Appforce::Spawn::MissingParameters, "Missing Client API Name" end url = "#{client_url(opts[:client_api_name])}/users/inactive.yml?#{token_param}" logger.debug "[#{self.name}##{__method__.to_s}] URL: #{url}" make_api_call(url) end
get_main_scout(*args)
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 61 def self.get_main_scout(*args) opts = args[1] unless opts[:client_api_name] logger.error "[#{self.name}##{__method__.to_s}] Appforce::Spawn::MissingParameters -- Missing Client API Name" raise Appforce::Spawn::MissingParameters, "Missing Client API Name" end url = "#{client_url(opts[:client_api_name])}/scout.yml?#{token_param}" logger.debug "[#{self.name}##{__method__.to_s}] URL: #{url}" make_api_call(url) end
get_private_key(*args)
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 73 def self.get_private_key(*args) opts = args[1] unless opts[:client_api_name] logger.error "[#{self.name}##{__method__.to_s}] Appforce::Spawn::MissingParameters -- Missing Client API Name" raise Appforce::Spawn::MissingParameters, "Missing Client API Name" end url = "#{client_url(opts[:client_api_name])}/private_key.pem?#{token_param}" logger.debug "[#{self.name}##{__method__.to_s}] URL: #{url}" make_api_call(url) end
get_vars(*args)
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 49 def self.get_vars(*args) opts = args[1] unless opts[:client_api_name] logger.error "[#{self.name}##{__method__.to_s}] Appforce::Spawn::MissingParameters -- Missing Client API Name" raise Appforce::Spawn::MissingParameters, "Missing Client API Name" end url = "#{client_url(opts[:client_api_name])}/vars.yml?#{token_param}" logger.debug "[#{self.name}##{__method__.to_s}] URL: #{url}" make_api_call(url) end
latest_version(*args)
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 154 def self.latest_version(*args) url = rubygem_latest_version_url logger.debug "[#{self.name}##{__method__.to_s}] URL: #{url}" resp = make_api_call(url) resp['version'] end
list_clients()
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 109 def self.list_clients resp = get_clients puts Appforce::Logger.header("Client List") resp.each do |item| printf " Client: %-16s API Name: %s\n", item['name'], item['api_name'] end puts Appforce::Logger.footer end
list_hosts(*args)
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 118 def self.list_hosts(*args) resp = get_all_host_data(*args) puts Appforce::Logger.header("Host List") i = 1 resp.each do |item| printf " #{i} - '%s' host: %s ip: %s\n", item['desc'], item['hostname'], item['ip'] i += 1 end puts Appforce::Logger.footer resp end
ping(*args)
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 148 def self.ping(*args) url = "#{base_api_url}ping?#{token_param}" logger.debug "[#{self.name}##{__method__.to_s}] URL: #{url}" make_api_call("#{base_api_url}ping?#{token_param}") end
ssh_to_host(*args)
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 130 def self.ssh_to_host(*args) hosts = list_hosts(*args) input = HighLine.ask("\nWhich host to ssh to? ", Integer) { |q| q.in = 1..hosts.count } machine = hosts[input - 1] $stderr.print "\n" logger.info "Establishing SSH seesion as '#{machine['username']}' to #{machine['desc']}" logger.debug "SSH command: #{ssh_cmd(machine)}" pid = fork { exec ssh_cmd(machine) } Process.wait pid $stderr.print "\n" logger.info "SSH session terminated." end
Private Class Methods
base_api_url()
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 167 def self.base_api_url "#{Appforce::Config.config.api_host}/#{Appforce::Config.config.api_version}/" end
client_url(client_api_name)
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 171 def self.client_url(client_api_name) "#{base_api_url}client/#{client_api_name}" end
host_url(host_api_name)
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 175 def self.host_url(host_api_name) "#{base_api_url}host/#{host_api_name}" end
logger()
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 210 def self.logger Appforce::Logger.logger end
make_api_call(url)
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 187 def self.make_api_call(url) begin resp = HTTParty.get(url) rescue logger.fatal "[#{self.name}##{__method__.to_s}] Appforce::Spawn::API::CallFailure - API Failed to Return for URL: #{url}" raise Appforce::Spawn::API::CallFailure, "API Failed to Return." end case resp.code when 200 resp when 401 logger.fatal "[#{self.name}##{__method__.to_s}] Appforce::Spawn::API::UnauthorizedAccess -- Invalid API Access Token -- URL: #{url}" raise Appforce::Spawn::API::UnauthorizedAccess, "Invalid API Access Token" when 404 logger.fatal "[#{self.name}##{__method__.to_s}] -- Appforce::Spawn::API::NotFound -- API Route Not Found -- URL: #{url}" raise Appforce::Spawn::API::NotFound, "API Route Not Found" when 500...600 logger.fatal "[#{self.name}##{__method__.to_s}] -- Appforce::Spawn::API::Unavailable -- API Service Unavailable -- URL: #{url}" raise Appforce::Spawn::API::Unavailable, "API Service Unavailable" end end
rubygem_latest_version_url()
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 183 def self.rubygem_latest_version_url "https://rubygems.org/api/v1/versions/appforce-spawn/latest.json" end
ssh_cmd(info)
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 163 def self.ssh_cmd(info) "ssh #{info['username']}@#{info[info['method']]}" end
token_param()
click to toggle source
# File lib/appforce/spawn/api/call.rb, line 179 def self.token_param "token=#{Appforce::Config.config.api_token}" end