class EY::Serverside::Slug::Restarter
Attributes
config[R]
servers[R]
shell[R]
Public Class Methods
new(config, shell, servers)
click to toggle source
# File lib/engineyard-serverside/slug/restarter.rb, line 21 def initialize(config, shell, servers) @config = config @shell = shell @servers = servers end
restart(data = {})
click to toggle source
# File lib/engineyard-serverside/slug/restarter.rb, line 17 def self.restart(data = {}) new(data[:config], data[:shell], data[:servers]).call(data) end
Private Instance Methods
internal_key()
click to toggle source
# File lib/engineyard-serverside/slug/restarter.rb, line 97 def internal_key config.paths.internal_key end
master()
click to toggle source
# File lib/engineyard-serverside/slug/restarter.rb, line 75 def master @master ||= server_array.find {|server| master_roles.include?(server.role) } end
master?(server)
click to toggle source
# File lib/engineyard-serverside/slug/restarter.rb, line 67 def master?(server) server == master end
master_roles()
click to toggle source
# File lib/engineyard-serverside/slug/restarter.rb, line 81 def master_roles [:app_master, :solo] end
remote_apps()
click to toggle source
# File lib/engineyard-serverside/slug/restarter.rb, line 63 def remote_apps remotes.select {|server| server.role == :app} end
remote_command(remote, data)
click to toggle source
# File lib/engineyard-serverside/slug/restarter.rb, line 89 def remote_command(remote, data) "ssh -i #{internal_key} #{remote.user}@#{remote.hostname} '#{restart_command(data)}'" end
remotes()
click to toggle source
# File lib/engineyard-serverside/slug/restarter.rb, line 57 def remotes server_array.reject {|server| master?(server) } end
restart_command(data)
click to toggle source
# File lib/engineyard-serverside/slug/restarter.rb, line 93 def restart_command(data) %{LANG="en_US.UTF-8" /engineyard/bin/app_#{data[:app_name]} deploy} end
restart_local(data = {})
click to toggle source
# File lib/engineyard-serverside/slug/restarter.rb, line 47 def restart_local(data = {}) unless run_and_success?(restart_command(data)) return Failure(data.merge(:error => "Could not restart #{data[:release_name]} on the app master")) end data[:restarted].push(master) Success(data) end
restart_remote_apps(data = {})
click to toggle source
# File lib/engineyard-serverside/slug/restarter.rb, line 28 def restart_remote_apps(data = {}) restarted = [] remote_apps.each do |remote| if run_and_success?(remote_command(remote, data)) restarted.push(remote) else return Failure( data.merge( :restarted => restarted, :error => "Could not restart #{data[:release_name]} on #{remote.hostname}" ) ) end end Success(data.merge(:restarted => restarted)) end
server_array()
click to toggle source
# File lib/engineyard-serverside/slug/restarter.rb, line 85 def server_array @server_array ||= servers.to_a end
util?(server)
click to toggle source
# File lib/engineyard-serverside/slug/restarter.rb, line 71 def util?(server) server.role == :util end