gaptool 0.10.3 → 0.10.4

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,5 +1,6 @@
1
1
  source :rubygems
2
2
  gem 'net-ssh'
3
+ gem 'net-scp'
3
4
  gem 'trollop'
4
5
  gem 'aws-sdk'
5
6
  gem 'json'
data/Gemfile.lock CHANGED
@@ -12,6 +12,8 @@ GEM
12
12
  json (1.6.1)
13
13
  multi_json (1.3.6)
14
14
  multi_xml (0.5.1)
15
+ net-scp (1.0.4)
16
+ net-ssh (>= 1.99.1)
15
17
  net-ssh (2.1.4)
16
18
  nokogiri (1.5.2)
17
19
  peach (0.4)
@@ -25,6 +27,7 @@ PLATFORMS
25
27
  DEPENDENCIES
26
28
  aws-sdk
27
29
  json
30
+ net-scp
28
31
  net-ssh
29
32
  peach
30
33
  rainbow
data/gaptool.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "gaptool"
3
- s.version = "0.10.3"
3
+ s.version = "0.10.4"
4
4
  s.authors = ['Matt Bailey']
5
5
  s.email = ['m@mdb.io']
6
6
  s.homepage = 'http://mdb.io'
@@ -10,6 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
11
11
 
12
12
  s.add_dependency "net-ssh"
13
+ s.add_dependency "net-scp"
13
14
  s.add_dependency "trollop"
14
15
  s.add_dependency "aws-sdk"
15
16
  s.add_dependency "json"
data/lib/app.rb CHANGED
@@ -89,13 +89,17 @@ class GTBase
89
89
  end
90
90
  return hosts
91
91
  end
92
- def sshcmd(host, commands, user='admin', key=@user_settings['mykey'])
92
+ def sshcmd(host, commands, options = {}, user='admin', key=@user_settings['mykey'])
93
93
  Net::SSH.start(host, user, :key_data => [key], :config => false, :keys_only => true, :paranoid => false) do |ssh|
94
94
  commands.each do |command|
95
- puts command.color(:cyan)
95
+ if !options[:quiet]
96
+ puts command.color(:cyan)
97
+ end
96
98
  ssh.exec! command do
97
99
  |ch, stream, line|
98
- puts "#{host.color(:yellow)}:#{line}"
100
+ if !options[:quiet]
101
+ puts "#{host.color(:yellow)}:#{line}"
102
+ end
99
103
  end
100
104
  end
101
105
  end
@@ -118,14 +122,14 @@ class GTBase
118
122
  "sudo chmod 600 ~#{@env_settings['user']}/.ssh/config",
119
123
  "rm /tmp/key"
120
124
  ]
121
- sshcmd(host, run)
125
+ sshcmd(host, run, :quiet => true)
122
126
  end
123
127
  def sshReachable?
124
128
  hosts = getCluster()
125
129
  hosts.each do |host|
126
130
  begin
127
131
  puts "Checking SSH to: #{host}"
128
- sshcmd(host, ["exit 0"])
132
+ sshcmd(host, ["exit 0"], :quiet => true)
129
133
  rescue
130
134
  puts "ERROR: Could not ssh to #{host}\nEither your connection is failing or AWS is having routing issues.\nAborting."
131
135
  exit 255
@@ -6,8 +6,26 @@ module Base
6
6
  system "rm /tmp/mykey 2> /dev/null"
7
7
  end
8
8
  def scpfrom
9
+ require 'net/scp'
10
+ # net-scp does not handle ~ well...
11
+ remote = ARGV[-2].gsub('~', "/data/admin")
12
+ local = ARGV[-1].gsub('~', ENV['HOME'])
13
+ host = singleHost()
14
+ session = Net::SSH.start(host, 'admin', :key_data => [@user_settings['mykey']], :config => false, :keys_only => true, :paranoid => false)
15
+ session.scp.download!(remote, local, :recursive => true) do |ch, name, sent, total|
16
+ print "\r#{name}: #{(sent.to_f * 100 / total.to_f).to_i}%"
17
+ end
9
18
  end
10
19
  def scpto
20
+ require 'net/scp'
21
+ # net-scp does not handle ~ well...
22
+ remote = ARGV[-1].gsub(/~/, "/data/admin")
23
+ local = ARGV[-2].gsub(/~/, ENV['HOME'])
24
+ host = singleHost()
25
+ session = Net::SSH.start(host, 'admin', :key_data => [@user_settings['mykey']], :config => false, :keys_only => true, :paranoid => false)
26
+ session.scp.upload!(local, remote, :recursive => true) do |ch, name, sent, total|
27
+ print "\r#{name}: #{(sent.to_f * 100 / total.to_f).to_i}%"
28
+ end
11
29
  end
12
30
  def chefrun
13
31
  if sshReachable?
@@ -81,13 +99,13 @@ module Base
81
99
  hosts = getCluster()
82
100
  if @args[:enable]
83
101
  hosts.peach do |host|
84
- sshcmd(host, "sudo -u #{@env_settings['user']} rm /data/#{@args[:app]}/shared/system/maintenance.html 2> /dev/null")
102
+ sshcmd(host, "sudo -u #{@env_settings['user']} rm /data/#{@args[:app]}/shared/system/maintenance.html 2> /dev/null", :quiet => true)
85
103
  puts "#{host} : web enabled"
86
104
  end
87
105
  end
88
106
  if @args[:disable]
89
107
  hosts.peach do |host|
90
- sshcmd(host, "sudo -u #{@env_settings['user']} ln -sf /data/#{@args[:app]}/current/public/maintenance.html /data/#{@args[:app]}/shared/system/maintenance.html")
108
+ sshcmd(host, "sudo -u #{@env_settings['user']} ln -sf /data/#{@args[:app]}/current/public/maintenance.html /data/#{@args[:app]}/shared/system/maintenance.html", :quiet => true)
91
109
  puts "#{host} : web disabled"
92
110
  end
93
111
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gaptool
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.3
4
+ version: 0.10.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-22 00:00:00.000000000Z
12
+ date: 2012-07-03 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: net-ssh
16
- requirement: &70324593881460 !ruby/object:Gem::Requirement
16
+ requirement: &70173691043640 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,21 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70324593881460
24
+ version_requirements: *70173691043640
25
+ - !ruby/object:Gem::Dependency
26
+ name: net-scp
27
+ requirement: &70173691043200 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70173691043200
25
36
  - !ruby/object:Gem::Dependency
26
37
  name: trollop
27
- requirement: &70324593881020 !ruby/object:Gem::Requirement
38
+ requirement: &70173691042780 !ruby/object:Gem::Requirement
28
39
  none: false
29
40
  requirements:
30
41
  - - ! '>='
@@ -32,10 +43,10 @@ dependencies:
32
43
  version: '0'
33
44
  type: :runtime
34
45
  prerelease: false
35
- version_requirements: *70324593881020
46
+ version_requirements: *70173691042780
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: aws-sdk
38
- requirement: &70324593880600 !ruby/object:Gem::Requirement
49
+ requirement: &70173691042360 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ! '>='
@@ -43,10 +54,10 @@ dependencies:
43
54
  version: '0'
44
55
  type: :runtime
45
56
  prerelease: false
46
- version_requirements: *70324593880600
57
+ version_requirements: *70173691042360
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: json
49
- requirement: &70324593880180 !ruby/object:Gem::Requirement
60
+ requirement: &70173691041940 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ! '>='
@@ -54,10 +65,10 @@ dependencies:
54
65
  version: '0'
55
66
  type: :runtime
56
67
  prerelease: false
57
- version_requirements: *70324593880180
68
+ version_requirements: *70173691041940
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: peach
60
- requirement: &70324593879760 !ruby/object:Gem::Requirement
71
+ requirement: &70173691041520 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ! '>='
@@ -65,10 +76,10 @@ dependencies:
65
76
  version: '0'
66
77
  type: :runtime
67
78
  prerelease: false
68
- version_requirements: *70324593879760
79
+ version_requirements: *70173691041520
69
80
  - !ruby/object:Gem::Dependency
70
81
  name: rainbow
71
- requirement: &70324593879340 !ruby/object:Gem::Requirement
82
+ requirement: &70173691041100 !ruby/object:Gem::Requirement
72
83
  none: false
73
84
  requirements:
74
85
  - - ! '>='
@@ -76,7 +87,7 @@ dependencies:
76
87
  version: '0'
77
88
  type: :runtime
78
89
  prerelease: false
79
- version_requirements: *70324593879340
90
+ version_requirements: *70173691041100
80
91
  description: This command line tool will service a chef repo for building out, configuring,
81
92
  and deploying environments in EC2 and EC2 compatable infrastructure clouds
82
93
  email: