hansolo 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 916cbd0792003b65e7e49d484ae605b119df286a
4
+ data.tar.gz: 7e00ea0d8875efac63beaf702aec2b08068f7f72
5
+ SHA512:
6
+ metadata.gz: 116f6351aed3eb2901be99d413d62987a1c8f2cc05b5a4c80affcb2016ad051c0008e2333f442f16aa26edb25d4728833182fbed7facc429b904064a594509cd
7
+ data.tar.gz: 7447133d9d147e84c99be8b17b340d16a9c418b69107b0833be13e1dbf7de8f62818683797eaae81d6941d6f34726f31090da7dd7a69d53c338de8d5362b0aad
data/hansolo.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["brian@vermonster.com"]
11
11
  spec.description = %q{Tool to automate deployment using chef-solo and berkshelf}
12
12
  spec.summary = %q{Vendors Berkshelf cookbooks, uses rsync to sync cookbooks, and NET::SSH to run chef-solo with conventions for building solo.rb and the JSON runlist}
13
- spec.homepage = ""
13
+ spec.homepage = "https://github.com/Vermonster/hansolo"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
@@ -18,16 +18,16 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "aws-sdk"
22
- spec.add_dependency "net-ssh"
23
- spec.add_dependency "net-ssh-gateway"
24
- spec.add_dependency "json"
25
- spec.add_dependency "terminal-table"
26
- spec.add_dependency "cocaine"
21
+ spec.add_dependency "aws-sdk", '~> 1.35'
22
+ spec.add_dependency "net-ssh", '~> 2.8'
23
+ spec.add_dependency "net-ssh-gateway", '~> 1.2'
24
+ spec.add_dependency "json", '~> 1.8'
25
+ spec.add_dependency "terminal-table", '~> 1.4'
26
+ spec.add_dependency "cocaine", '~> 0.5'
27
27
 
28
28
  spec.add_development_dependency "bundler", "~> 1.3"
29
- spec.add_development_dependency "rake"
30
- spec.add_development_dependency "mocha"
31
- spec.add_development_dependency "yard"
32
- spec.add_development_dependency "redcarpet"
29
+ spec.add_development_dependency "rake", '10.1'
30
+ spec.add_development_dependency "mocha", '~> 1.0'
31
+ spec.add_development_dependency "yard", '~> 0.8'
32
+ spec.add_development_dependency "redcarpet", '~> 3.1'
33
33
  end
@@ -16,23 +16,37 @@ module Hansolo
16
16
 
17
17
  return uri if uri.scheme == 'ssh'
18
18
 
19
- instance = instances_by_tag(uri.scheme.to_s, uri.host).first
20
- raise ArgumentError, "no gateway with #{uri.scheme} #{uri.host} found" if instance.nil?
19
+ ip_address = instance_ip_addresses_by_tag(uri.scheme.to_s, uri.host).first
20
+ raise ArgumentError, "no gateway with #{uri.scheme} #{uri.host} found" if ip_address.nil?
21
21
 
22
- URI.parse("ssh://#{uri.user}@#{instance.public_ip_address}:#{uri.port || 22}")
22
+ URI.parse("ssh://#{uri.user}@#{ip_address}:#{uri.port || 22}")
23
23
  end
24
24
  end
25
25
 
26
26
  def hosts
27
27
  @hosts ||= begin
28
28
  target = Hansolo.target
29
- return super unless target.is_a?(Hash)
30
29
 
31
- target_instances = instances_by_tag(target[:host].to_s, Hansolo.app)
30
+ if target.is_a?(Hash)
31
+ target_instances = instance_ip_addresses_by_tag(target[:host].to_s, Hansolo.app)
32
32
 
33
- target_instances.map do |instance|
34
- ip_address = instance.ip_address || instance.private_ip_address
35
- URI.parse("ssh://#{target[:user]}@#{ip_address}:#{target[:port] || 22}")
33
+ target_instances.map do |ip_address|
34
+ URI.parse("ssh://#{target[:user]}@#{ip_address}:#{target[:port] || 22}")
35
+ end
36
+ else
37
+ target.inject([]) do |uris, uri|
38
+ uri = URI.parse(uri)
39
+
40
+ if uri.scheme == 'ssh'
41
+ uris << uri
42
+ else
43
+ ip_addresses = instance_ip_addresses_by_tag(uri.scheme.to_s, uri.host)
44
+
45
+ uris += ip_addresses.map do |ip_address|
46
+ URI.parse("ssh://#{uri.user}@#{ip_address}:#{uri.port || 22}")
47
+ end
48
+ end
49
+ end
36
50
  end
37
51
  end
38
52
  end
@@ -49,10 +63,10 @@ module Hansolo
49
63
  end
50
64
  end
51
65
 
52
- def instances_by_tag(tag, value)
53
- ec2.instances.tagged(tag).tagged_values(value).select do |instance|
54
- instance.status != :terminated
55
- end
66
+ def instance_ip_addresses_by_tag(tag, value)
67
+ instances = ec2.instances.tagged(tag).tagged_values(value).to_a
68
+ instances.select! { |instance| instance.status != :terminated }
69
+ instances.map! { |instance| instance.ip_address || instance.private_ip_address }
56
70
  end
57
71
  end
58
72
  end
@@ -1,3 +1,3 @@
1
1
  module Hansolo
2
- VERSION = "0.1.7"
2
+ VERSION = "0.1.8"
3
3
  end
metadata CHANGED
@@ -1,192 +1,169 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hansolo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
5
- prerelease:
4
+ version: 0.1.8
6
5
  platform: ruby
7
6
  authors:
8
7
  - Brian Kaney
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-12-09 00:00:00.000000000 Z
11
+ date: 2014-03-06 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: aws-sdk
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: '0'
19
+ version: '1.35'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: '0'
26
+ version: '1.35'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: net-ssh
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - "~>"
36
32
  - !ruby/object:Gem::Version
37
- version: '0'
33
+ version: '2.8'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - "~>"
44
39
  - !ruby/object:Gem::Version
45
- version: '0'
40
+ version: '2.8'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: net-ssh-gateway
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - "~>"
52
46
  - !ruby/object:Gem::Version
53
- version: '0'
47
+ version: '1.2'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - "~>"
60
53
  - !ruby/object:Gem::Version
61
- version: '0'
54
+ version: '1.2'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: json
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - "~>"
68
60
  - !ruby/object:Gem::Version
69
- version: '0'
61
+ version: '1.8'
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - "~>"
76
67
  - !ruby/object:Gem::Version
77
- version: '0'
68
+ version: '1.8'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: terminal-table
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - "~>"
84
74
  - !ruby/object:Gem::Version
85
- version: '0'
75
+ version: '1.4'
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - "~>"
92
81
  - !ruby/object:Gem::Version
93
- version: '0'
82
+ version: '1.4'
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: cocaine
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - "~>"
100
88
  - !ruby/object:Gem::Version
101
- version: '0'
89
+ version: '0.5'
102
90
  type: :runtime
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - "~>"
108
95
  - !ruby/object:Gem::Version
109
- version: '0'
96
+ version: '0.5'
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: bundler
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ~>
101
+ - - "~>"
116
102
  - !ruby/object:Gem::Version
117
103
  version: '1.3'
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ~>
108
+ - - "~>"
124
109
  - !ruby/object:Gem::Version
125
110
  version: '1.3'
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: rake
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
- - - ! '>='
115
+ - - '='
132
116
  - !ruby/object:Gem::Version
133
- version: '0'
117
+ version: '10.1'
134
118
  type: :development
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
- - - ! '>='
122
+ - - '='
140
123
  - !ruby/object:Gem::Version
141
- version: '0'
124
+ version: '10.1'
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: mocha
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
- - - ! '>='
129
+ - - "~>"
148
130
  - !ruby/object:Gem::Version
149
- version: '0'
131
+ version: '1.0'
150
132
  type: :development
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
- - - ! '>='
136
+ - - "~>"
156
137
  - !ruby/object:Gem::Version
157
- version: '0'
138
+ version: '1.0'
158
139
  - !ruby/object:Gem::Dependency
159
140
  name: yard
160
141
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
142
  requirements:
163
- - - ! '>='
143
+ - - "~>"
164
144
  - !ruby/object:Gem::Version
165
- version: '0'
145
+ version: '0.8'
166
146
  type: :development
167
147
  prerelease: false
168
148
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
149
  requirements:
171
- - - ! '>='
150
+ - - "~>"
172
151
  - !ruby/object:Gem::Version
173
- version: '0'
152
+ version: '0.8'
174
153
  - !ruby/object:Gem::Dependency
175
154
  name: redcarpet
176
155
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
156
  requirements:
179
- - - ! '>='
157
+ - - "~>"
180
158
  - !ruby/object:Gem::Version
181
- version: '0'
159
+ version: '3.1'
182
160
  type: :development
183
161
  prerelease: false
184
162
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
163
  requirements:
187
- - - ! '>='
164
+ - - "~>"
188
165
  - !ruby/object:Gem::Version
189
- version: '0'
166
+ version: '3.1'
190
167
  description: Tool to automate deployment using chef-solo and berkshelf
191
168
  email:
192
169
  - brian@vermonster.com
@@ -197,8 +174,8 @@ executables:
197
174
  extensions: []
198
175
  extra_rdoc_files: []
199
176
  files:
200
- - .gitignore
201
- - .yardopts
177
+ - ".gitignore"
178
+ - ".yardopts"
202
179
  - Gemfile
203
180
  - LICENSE.txt
204
181
  - README.md
@@ -223,30 +200,29 @@ files:
223
200
  - lib/hansolo/providers/default/solo.rb
224
201
  - lib/hansolo/version.rb
225
202
  - tests/hansolo_test.rb
226
- homepage: ''
203
+ homepage: https://github.com/Vermonster/hansolo
227
204
  licenses:
228
205
  - MIT
206
+ metadata: {}
229
207
  post_install_message:
230
208
  rdoc_options: []
231
209
  require_paths:
232
210
  - lib
233
211
  required_ruby_version: !ruby/object:Gem::Requirement
234
- none: false
235
212
  requirements:
236
- - - ! '>='
213
+ - - ">="
237
214
  - !ruby/object:Gem::Version
238
215
  version: '0'
239
216
  required_rubygems_version: !ruby/object:Gem::Requirement
240
- none: false
241
217
  requirements:
242
- - - ! '>='
218
+ - - ">="
243
219
  - !ruby/object:Gem::Version
244
220
  version: '0'
245
221
  requirements: []
246
222
  rubyforge_project:
247
- rubygems_version: 1.8.23
223
+ rubygems_version: 2.2.0
248
224
  signing_key:
249
- specification_version: 3
225
+ specification_version: 4
250
226
  summary: Vendors Berkshelf cookbooks, uses rsync to sync cookbooks, and NET::SSH to
251
227
  run chef-solo with conventions for building solo.rb and the JSON runlist
252
228
  test_files: []