Class: LanesCli::FileCmd

Inherits:
Thor
  • Object
show all
Defined in:
lib/lanes/file.rb

Instance Method Summary collapse

Instance Method Details

#push(target, dest, lane = nil) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/lanes/file.rb', line 7

def push(target, dest, lane=nil)
  pwd = Dir.pwd
  puts "#{pwd} #{target} #{dest} #{lane}"
  file = "#{pwd}/#{target}"

  servers = AWS.instance.fetchServers(lane)
  servers.sort_by{ |s| s[:lane] }
  puts 'Servers that will receive the file:'
  servers.each{|server|
    puts "\t%{name} (%{lane}) \t %{ip} \t %{id} " % server
  }


  mods = Props.instance.sshMod(lane)
  identity = if mods['identity'] then mods['identity'] else '' end
  puts "Identity file #{mods['identity']} will be used" if identity

  if options[:confirm] then
    puts 'Confirmed via command line. Moving forward with execution..'
    confirm = 'CONFIRM'
  else
    confirm = ask 'Type CONFIRM to begin pushing files:'
  end


  if confirm == 'CONFIRM' then
    servers.each{|server|
      id = if identity then "-i #{identity}" else '' end
      user = if mods['user'] then mods['user'] else 'ec2-user' end
      cmd = "scp #{id} #{file} #{user}@%{ip}:#{dest}" % server
      puts " => Executing: #{cmd}"
      result = system cmd
      if !result then
        puts 'WARNING: Failed on %{ip}' % server
      end
    }
  end

end