gaptool 0.10.3 → 0.10.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: