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 +1 -0
- data/Gemfile.lock +3 -0
- data/gaptool.gemspec +2 -1
- data/lib/app.rb +9 -5
- data/lib/plugins/Base/plugin.rb +20 -2
- metadata +25 -14
data/Gemfile
CHANGED
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
|
+
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
|
-
|
95
|
+
if !options[:quiet]
|
96
|
+
puts command.color(:cyan)
|
97
|
+
end
|
96
98
|
ssh.exec! command do
|
97
99
|
|ch, stream, line|
|
98
|
-
|
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
|
data/lib/plugins/Base/plugin.rb
CHANGED
@@ -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.
|
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-
|
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: &
|
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: *
|
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: &
|
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: *
|
46
|
+
version_requirements: *70173691042780
|
36
47
|
- !ruby/object:Gem::Dependency
|
37
48
|
name: aws-sdk
|
38
|
-
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: *
|
57
|
+
version_requirements: *70173691042360
|
47
58
|
- !ruby/object:Gem::Dependency
|
48
59
|
name: json
|
49
|
-
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: *
|
68
|
+
version_requirements: *70173691041940
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: peach
|
60
|
-
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: *
|
79
|
+
version_requirements: *70173691041520
|
69
80
|
- !ruby/object:Gem::Dependency
|
70
81
|
name: rainbow
|
71
|
-
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: *
|
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:
|