class EY::Serverside::Slug::Finalizer
Attributes
config[R]
servers[R]
shell[R]
Public Class Methods
new(config, shell, servers)
click to toggle source
# File lib/engineyard-serverside/slug/finalizer.rb, line 17 def initialize(config, shell, servers) @config = config @shell = shell @servers = servers end
Private Instance Methods
all_releases(data)
click to toggle source
# File lib/engineyard-serverside/slug/finalizer.rb, line 75 def all_releases(data) "#{app_path(data)}/releases" end
app_path(data)
click to toggle source
# File lib/engineyard-serverside/slug/finalizer.rb, line 79 def app_path(data) "/data/#{data[:app_name]}" end
finalize_command(data)
click to toggle source
# File lib/engineyard-serverside/slug/finalizer.rb, line 61 def finalize_command(data) [ "for release in #{all_releases(data)}/*", %{do if [ -d "${release}" ] && [ "$(basename "${release}")" != "#{data[:release_name]}"]}, 'then rm -rf "${release}"', 'fi', 'done' ].join(' ; ') end
finalize_local(data = {})
click to toggle source
# File lib/engineyard-serverside/slug/finalizer.rb, line 43 def finalize_local(data = {}) unless run_and_success?(finalize_command(data)) return Failure(data.merge(:error => "Could not finalize #{data[:release_name]} on the app master")) end data[:finalized].push(servers.first {|server| server.role == :app_master || server.role == :solo}) Success(data) end
finalize_remotes(data)
click to toggle source
# File lib/engineyard-serverside/slug/finalizer.rb, line 24 def finalize_remotes(data) finalized = [] remotes.each do |remote| if run_and_success?(remote_command(remote, data)) finalized.push(remote) else return Failure( data.merge( :finalized => finalized, :error => "Could not finalize #{data[:release_name]} on #{remote.hostname}" ) ) end end Success(data.merge(:finalized => finalized)) end
old_release_path(data)
click to toggle source
# File lib/engineyard-serverside/slug/finalizer.rb, line 71 def old_release_path(data) "#{all_releases(data)}/#{data[:current_release_name]}" end
remote_command(remote, data)
click to toggle source
# File lib/engineyard-serverside/slug/finalizer.rb, line 57 def remote_command(remote, data) "ssh -i #{config.paths.internal_key} #{remote.user}@#{remote.hostname} '#{finalize_command(data)}'" end
remotes()
click to toggle source
# File lib/engineyard-serverside/slug/finalizer.rb, line 53 def remotes servers.reject {|server| server.role == :app_master} end