ec2-host 0.5.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/docs/EC2.html +2 -2
- data/docs/EC2/Host.html +14 -2
- data/docs/EC2/Host/CLI.html +14 -16
- data/docs/EC2/Host/Config.html +265 -87
- data/docs/EC2/Host/EC2Client.html +1 -1
- data/docs/EC2/Host/HashUtil.html +1 -1
- data/docs/EC2/Host/HostData.html +1 -1
- data/docs/EC2/Host/RoleData.html +151 -292
- data/docs/EC2/Host/StringUtil.html +1 -1
- data/docs/_index.html +1 -1
- data/docs/file.LICENSE.html +1 -1
- data/docs/file.README.html +13 -8
- data/docs/index.html +13 -8
- data/docs/method_list.html +34 -34
- data/docs/top-level-namespace.html +1 -1
- data/lib/ec2/host/host_data.rb +1 -4
- data/lib/ec2/host/role_data.rb +38 -20
- data/lib/ec2/host/version.rb +1 -1
- data/spec/host_spec.rb +70 -19
- metadata +2 -2
@@ -350,7 +350,7 @@
|
|
350
350
|
</div>
|
351
351
|
|
352
352
|
<div id="footer">
|
353
|
-
Generated on
|
353
|
+
Generated on Fri Dec 2 11:53:59 2016 by
|
354
354
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
355
355
|
0.8.7.6 (ruby-2.3.2).
|
356
356
|
</div>
|
data/docs/_index.html
CHANGED
@@ -192,7 +192,7 @@
|
|
192
192
|
</div>
|
193
193
|
|
194
194
|
<div id="footer">
|
195
|
-
Generated on
|
195
|
+
Generated on Fri Dec 2 11:53:58 2016 by
|
196
196
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
197
197
|
0.8.7.6 (ruby-2.3.2).
|
198
198
|
</div>
|
data/docs/file.LICENSE.html
CHANGED
@@ -86,7 +86,7 @@ DEALINGS IN THE SOFTWARE.</p>
|
|
86
86
|
</div></div>
|
87
87
|
|
88
88
|
<div id="footer">
|
89
|
-
Generated on
|
89
|
+
Generated on Fri Dec 2 11:53:59 2016 by
|
90
90
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
91
91
|
0.8.7.6 (ruby-2.3.2).
|
92
92
|
</div>
|
data/docs/file.README.html
CHANGED
@@ -85,9 +85,9 @@ using thease tags with this gem.</p>
|
|
85
85
|
<h2 id="label-Configuration">Configuration</h2>
|
86
86
|
|
87
87
|
<p>You can write a configuration file located at
|
88
|
-
<code>/etc/sysconfig/ec2-host</code>
|
89
|
-
<code>EC2_HOST_CONFIG_FILE</code>
|
90
|
-
variables:</p>
|
88
|
+
<code>/etc/sysconfig/ec2-host</code> or <code>/etc/default/ec2-host</code>
|
89
|
+
(You can configure this path by <code>EC2_HOST_CONFIG_FILE</code>
|
90
|
+
environment variable), or as environment variables:</p>
|
91
91
|
|
92
92
|
<p>AWS SDK (CLI) parameters:</p>
|
93
93
|
<ul><li>
|
@@ -98,7 +98,9 @@ loads a credentials file</p>
|
|
98
98
|
load a credentials file</p>
|
99
99
|
</li><li>
|
100
100
|
<p><strong>AWS_DEFAULT_REGION</strong> (<strong>AWS_REGION</strong>); AWS SDK
|
101
|
-
(CLI) region such as <code>ap-northeast-1</code>, <code>us-east-1</code
|
101
|
+
(CLI) region such as <code>ap-northeast-1</code>, <code>us-east-1</code>.
|
102
|
+
Default obtains from <code>$HOME/.aws/config</code> with profile
|
103
|
+
<code>AWS_DEFAULT_PROFILE</code>.</p>
|
102
104
|
</li><li>
|
103
105
|
<p><strong>AWS_DEFAULT_PROFILE</strong> (<strong>AWS_PROFILE</strong>): The
|
104
106
|
profile key of the AWS SDK (CLI) credentails file. Default is
|
@@ -143,6 +145,9 @@ tags. Array tags allows multiple values delimited by
|
|
143
145
|
<p><strong>ARRAY_TAG_DELIMITER (optional)</strong>: A delimiter to express
|
144
146
|
array. Default is <code>,</code></p>
|
145
147
|
</li><li>
|
148
|
+
<p><strong>ROLE_MAX_DEPTH (optional)</strong>: The maximum depth of levels of
|
149
|
+
roles. Default is 3.</p>
|
150
|
+
</li><li>
|
146
151
|
<p><strong>LOG_LEVEL (optional)</strong>: Log level such as <code>info</code>,
|
147
152
|
<code>debug</code>, <code>error</code>. The default is <code>info</code>.</p>
|
148
153
|
</li></ul>
|
@@ -215,9 +220,9 @@ test</code></pre>
|
|
215
220
|
Usage: ec2-host [options]
|
216
221
|
--hostname one,two,three name or private_dns_name
|
217
222
|
-r, --role one,two,three role
|
218
|
-
--r1, --role1 one,two,three role1,
|
219
|
-
--r2, --role2 one,two,three role2,
|
220
|
-
--r3, --role3 one,two,three role3,
|
223
|
+
--r1, --role1 one,two,three role1, 1th part of role delimited by :
|
224
|
+
--r2, --role2 one,two,three role2, 2th part of role delimited by :
|
225
|
+
--r3, --role3 one,two,three role3, 3th part of role delimited by :
|
221
226
|
--instance-id one,two,three instance_id
|
222
227
|
--state one,two,three filter with instance state (default: running)
|
223
228
|
--monitoring one,two,three filter with instance monitoring
|
@@ -314,7 +319,7 @@ $ env ($cat .env) terraform apply</code></pre>
|
|
314
319
|
</div></div>
|
315
320
|
|
316
321
|
<div id="footer">
|
317
|
-
Generated on
|
322
|
+
Generated on Fri Dec 2 11:53:59 2016 by
|
318
323
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
319
324
|
0.8.7.6 (ruby-2.3.2).
|
320
325
|
</div>
|
data/docs/index.html
CHANGED
@@ -85,9 +85,9 @@ using thease tags with this gem.</p>
|
|
85
85
|
<h2 id="label-Configuration">Configuration</h2>
|
86
86
|
|
87
87
|
<p>You can write a configuration file located at
|
88
|
-
<code>/etc/sysconfig/ec2-host</code>
|
89
|
-
<code>EC2_HOST_CONFIG_FILE</code>
|
90
|
-
variables:</p>
|
88
|
+
<code>/etc/sysconfig/ec2-host</code> or <code>/etc/default/ec2-host</code>
|
89
|
+
(You can configure this path by <code>EC2_HOST_CONFIG_FILE</code>
|
90
|
+
environment variable), or as environment variables:</p>
|
91
91
|
|
92
92
|
<p>AWS SDK (CLI) parameters:</p>
|
93
93
|
<ul><li>
|
@@ -98,7 +98,9 @@ loads a credentials file</p>
|
|
98
98
|
load a credentials file</p>
|
99
99
|
</li><li>
|
100
100
|
<p><strong>AWS_DEFAULT_REGION</strong> (<strong>AWS_REGION</strong>); AWS SDK
|
101
|
-
(CLI) region such as <code>ap-northeast-1</code>, <code>us-east-1</code
|
101
|
+
(CLI) region such as <code>ap-northeast-1</code>, <code>us-east-1</code>.
|
102
|
+
Default obtains from <code>$HOME/.aws/config</code> with profile
|
103
|
+
<code>AWS_DEFAULT_PROFILE</code>.</p>
|
102
104
|
</li><li>
|
103
105
|
<p><strong>AWS_DEFAULT_PROFILE</strong> (<strong>AWS_PROFILE</strong>): The
|
104
106
|
profile key of the AWS SDK (CLI) credentails file. Default is
|
@@ -143,6 +145,9 @@ tags. Array tags allows multiple values delimited by
|
|
143
145
|
<p><strong>ARRAY_TAG_DELIMITER (optional)</strong>: A delimiter to express
|
144
146
|
array. Default is <code>,</code></p>
|
145
147
|
</li><li>
|
148
|
+
<p><strong>ROLE_MAX_DEPTH (optional)</strong>: The maximum depth of levels of
|
149
|
+
roles. Default is 3.</p>
|
150
|
+
</li><li>
|
146
151
|
<p><strong>LOG_LEVEL (optional)</strong>: Log level such as <code>info</code>,
|
147
152
|
<code>debug</code>, <code>error</code>. The default is <code>info</code>.</p>
|
148
153
|
</li></ul>
|
@@ -215,9 +220,9 @@ test</code></pre>
|
|
215
220
|
Usage: ec2-host [options]
|
216
221
|
--hostname one,two,three name or private_dns_name
|
217
222
|
-r, --role one,two,three role
|
218
|
-
--r1, --role1 one,two,three role1,
|
219
|
-
--r2, --role2 one,two,three role2,
|
220
|
-
--r3, --role3 one,two,three role3,
|
223
|
+
--r1, --role1 one,two,three role1, 1th part of role delimited by :
|
224
|
+
--r2, --role2 one,two,three role2, 2th part of role delimited by :
|
225
|
+
--r3, --role3 one,two,three role3, 3th part of role delimited by :
|
221
226
|
--instance-id one,two,three instance_id
|
222
227
|
--state one,two,three filter with instance state (default: running)
|
223
228
|
--monitoring one,two,three filter with instance monitoring
|
@@ -314,7 +319,7 @@ $ env ($cat .env) terraform apply</code></pre>
|
|
314
319
|
</div></div>
|
315
320
|
|
316
321
|
<div id="footer">
|
317
|
-
Generated on
|
322
|
+
Generated on Fri Dec 2 11:53:59 2016 by
|
318
323
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
319
324
|
0.8.7.6 (ruby-2.3.2).
|
320
325
|
</div>
|
data/docs/method_list.html
CHANGED
@@ -69,6 +69,18 @@
|
|
69
69
|
</li>
|
70
70
|
|
71
71
|
|
72
|
+
<li class="r2 ">
|
73
|
+
<span class='object_link'><a href="EC2/Host/Config.html#aws_config-class_method" title="EC2::Host::Config.aws_config (method)">aws_config</a></span>
|
74
|
+
<small>EC2::Host::Config</small>
|
75
|
+
</li>
|
76
|
+
|
77
|
+
|
78
|
+
<li class="r1 ">
|
79
|
+
<span class='object_link'><a href="EC2/Host/Config.html#aws_config_file-class_method" title="EC2::Host::Config.aws_config_file (method)">aws_config_file</a></span>
|
80
|
+
<small>EC2::Host::Config</small>
|
81
|
+
</li>
|
82
|
+
|
83
|
+
|
72
84
|
<li class="r2 ">
|
73
85
|
<span class='object_link'><a href="EC2/Host/Config.html#aws_credential_file-class_method" title="EC2::Host::Config.aws_credential_file (method)">aws_credential_file</a></span>
|
74
86
|
<small>EC2::Host::Config</small>
|
@@ -178,38 +190,38 @@
|
|
178
190
|
|
179
191
|
|
180
192
|
<li class="r2 ">
|
181
|
-
<span class='object_link'><a href="EC2/Host.html#initialize-instance_method" title="EC2::Host#initialize (method)">#initialize</a></span>
|
182
|
-
<small>EC2::Host</small>
|
193
|
+
<span class='object_link'><a href="EC2/Host/HostData.html#initialize-instance_method" title="EC2::Host::HostData#initialize (method)">#initialize</a></span>
|
194
|
+
<small>EC2::Host::HostData</small>
|
183
195
|
</li>
|
184
196
|
|
185
197
|
|
186
198
|
<li class="r1 ">
|
187
|
-
<span class='object_link'><a href="EC2/Host
|
188
|
-
<small>EC2::Host
|
199
|
+
<span class='object_link'><a href="EC2/Host.html#initialize-instance_method" title="EC2::Host#initialize (method)">#initialize</a></span>
|
200
|
+
<small>EC2::Host</small>
|
189
201
|
</li>
|
190
202
|
|
191
203
|
|
192
204
|
<li class="r2 ">
|
193
|
-
<span class='object_link'><a href="EC2/Host/
|
194
|
-
<small>EC2::Host::
|
205
|
+
<span class='object_link'><a href="EC2/Host/CLI.html#initialize-instance_method" title="EC2::Host::CLI#initialize (method)">#initialize</a></span>
|
206
|
+
<small>EC2::Host::CLI</small>
|
195
207
|
</li>
|
196
208
|
|
197
209
|
|
198
210
|
<li class="r1 ">
|
199
|
-
<span class='object_link'><a href="EC2/Host/
|
200
|
-
<small>EC2::Host::
|
211
|
+
<span class='object_link'><a href="EC2/Host/RoleData.html#initialize-instance_method" title="EC2::Host::RoleData#initialize (method)">#initialize</a></span>
|
212
|
+
<small>EC2::Host::RoleData</small>
|
201
213
|
</li>
|
202
214
|
|
203
215
|
|
204
216
|
<li class="r2 ">
|
205
|
-
<span class='object_link'><a href="EC2/Host/
|
206
|
-
<small>EC2::Host::
|
217
|
+
<span class='object_link'><a href="EC2/Host/HostData.html#inspect-instance_method" title="EC2::Host::HostData#inspect (method)">#inspect</a></span>
|
218
|
+
<small>EC2::Host::HostData</small>
|
207
219
|
</li>
|
208
220
|
|
209
221
|
|
210
222
|
<li class="r1 ">
|
211
|
-
<span class='object_link'><a href="EC2/Host/
|
212
|
-
<small>EC2::Host::
|
223
|
+
<span class='object_link'><a href="EC2/Host/RoleData.html#inspect-instance_method" title="EC2::Host::RoleData#inspect (method)">#inspect</a></span>
|
224
|
+
<small>EC2::Host::RoleData</small>
|
213
225
|
</li>
|
214
226
|
|
215
227
|
|
@@ -262,14 +274,14 @@
|
|
262
274
|
|
263
275
|
|
264
276
|
<li class="r2 ">
|
265
|
-
<span class='object_link'><a href="EC2/Host/
|
266
|
-
<small>EC2::Host::
|
277
|
+
<span class='object_link'><a href="EC2/Host/HostData.html#match%3F-instance_method" title="EC2::Host::HostData#match? (method)">#match?</a></span>
|
278
|
+
<small>EC2::Host::HostData</small>
|
267
279
|
</li>
|
268
280
|
|
269
281
|
|
270
282
|
<li class="r1 ">
|
271
|
-
<span class='object_link'><a href="EC2/Host/
|
272
|
-
<small>EC2::Host::
|
283
|
+
<span class='object_link'><a href="EC2/Host/RoleData.html#match%3F-instance_method" title="EC2::Host::RoleData#match? (method)">#match?</a></span>
|
284
|
+
<small>EC2::Host::RoleData</small>
|
273
285
|
</li>
|
274
286
|
|
275
287
|
|
@@ -316,14 +328,14 @@
|
|
316
328
|
|
317
329
|
|
318
330
|
<li class="r1 ">
|
319
|
-
<span class='object_link'><a href="EC2/Host.html#options-instance_method" title="EC2::Host#options (method)">#options</a></span>
|
320
|
-
<small>EC2::Host</small>
|
331
|
+
<span class='object_link'><a href="EC2/Host/CLI.html#options-instance_method" title="EC2::Host::CLI#options (method)">#options</a></span>
|
332
|
+
<small>EC2::Host::CLI</small>
|
321
333
|
</li>
|
322
334
|
|
323
335
|
|
324
336
|
<li class="r2 ">
|
325
|
-
<span class='object_link'><a href="EC2/Host
|
326
|
-
<small>EC2::Host
|
337
|
+
<span class='object_link'><a href="EC2/Host.html#options-instance_method" title="EC2::Host#options (method)">#options</a></span>
|
338
|
+
<small>EC2::Host</small>
|
327
339
|
</li>
|
328
340
|
|
329
341
|
|
@@ -370,20 +382,8 @@
|
|
370
382
|
|
371
383
|
|
372
384
|
<li class="r2 ">
|
373
|
-
<span class='object_link'><a href="EC2/Host/
|
374
|
-
<small>EC2::Host::
|
375
|
-
</li>
|
376
|
-
|
377
|
-
|
378
|
-
<li class="r1 ">
|
379
|
-
<span class='object_link'><a href="EC2/Host/RoleData.html#role2-instance_method" title="EC2::Host::RoleData#role2 (method)">#role2</a></span>
|
380
|
-
<small>EC2::Host::RoleData</small>
|
381
|
-
</li>
|
382
|
-
|
383
|
-
|
384
|
-
<li class="r2 ">
|
385
|
-
<span class='object_link'><a href="EC2/Host/RoleData.html#role3-instance_method" title="EC2::Host::RoleData#role3 (method)">#role3</a></span>
|
386
|
-
<small>EC2::Host::RoleData</small>
|
385
|
+
<span class='object_link'><a href="EC2/Host/Config.html#role_max_depth-class_method" title="EC2::Host::Config.role_max_depth (method)">role_max_depth</a></span>
|
386
|
+
<small>EC2::Host::Config</small>
|
387
387
|
</li>
|
388
388
|
|
389
389
|
|
@@ -103,7 +103,7 @@
|
|
103
103
|
</div>
|
104
104
|
|
105
105
|
<div id="footer">
|
106
|
-
Generated on
|
106
|
+
Generated on Fri Dec 2 11:53:59 2016 by
|
107
107
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
108
108
|
0.8.7.6 (ruby-2.3.2).
|
109
109
|
</div>
|
data/lib/ec2/host/host_data.rb
CHANGED
@@ -186,10 +186,7 @@ class EC2
|
|
186
186
|
(condition["role#{i}".to_sym] || condition["usage#{i}".to_sym] || []).first
|
187
187
|
end
|
188
188
|
end
|
189
|
-
|
190
|
-
return false unless roles.find {|role| role.match?(*parts) }
|
191
|
-
end
|
192
|
-
true
|
189
|
+
roles.find {|role| role.match?(*parts) }
|
193
190
|
end
|
194
191
|
|
195
192
|
def instance_match?(condition)
|
data/lib/ec2/host/role_data.rb
CHANGED
@@ -2,50 +2,68 @@ class EC2
|
|
2
2
|
class Host
|
3
3
|
# Represents each role
|
4
4
|
class RoleData
|
5
|
-
|
6
|
-
|
5
|
+
# Initialize role data with role parts
|
6
|
+
#
|
7
|
+
# RoleData.new('admin', 'jenkins', 'slave')
|
8
|
+
#
|
9
|
+
# @param [Array] role_parts such as ['admin', 'jenkins', 'slave']
|
10
|
+
def initialize(*role_parts)
|
11
|
+
@role_parts = role_parts
|
7
12
|
end
|
8
13
|
|
14
|
+
# Create a role data with role delimiter by Config.role_tag_delimiter
|
15
|
+
#
|
16
|
+
# RoleData.build('admin:jenkins:slave')
|
17
|
+
#
|
18
|
+
# @param [String] role such as "admin:jenkins:slave"
|
9
19
|
def self.build(role)
|
10
|
-
|
11
|
-
new(*
|
20
|
+
role_parts = role.split(Config.role_tag_delimiter, Config.role_max_depth)
|
21
|
+
new(*role_parts)
|
12
22
|
end
|
13
23
|
|
14
24
|
# @return [String] something like "admin:jenkins:slave"
|
15
25
|
def role
|
16
|
-
@role ||= @
|
26
|
+
@role ||= @role_parts.compact.reject(&:empty?).join(Config.role_tag_delimiter)
|
17
27
|
end
|
18
28
|
alias :to_s :role
|
19
29
|
|
20
30
|
1.upto(Config.role_max_depth).each do |i|
|
21
31
|
define_method("role#{i}") do
|
22
|
-
@
|
32
|
+
@role_parts[i-1]
|
23
33
|
end
|
24
34
|
end
|
25
35
|
|
26
36
|
# @return [Array] something like ["admin", "admin:jenkins", "admin:jenkins:slave"]
|
27
37
|
def uppers
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
break if
|
33
|
-
|
38
|
+
role_parts = @role_parts.dup
|
39
|
+
upper_role_parts = []
|
40
|
+
upper_role_parts << [role_parts.shift]
|
41
|
+
role_parts.each do |role_part|
|
42
|
+
break if role_part.nil? or role_part.empty?
|
43
|
+
upper_role_parts << [*(upper_role_parts.last), role_part]
|
34
44
|
end
|
35
|
-
|
45
|
+
upper_role_parts.map {|role_parts| RoleData.new(*role_parts) }
|
36
46
|
end
|
37
47
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
48
|
+
# Check whether given role parts matches with this role data object
|
49
|
+
#
|
50
|
+
# RoleData.new('admin', 'jenkins', 'slave').match?('admin') #=> true
|
51
|
+
# RoleData.new('admin', 'jenkins', 'slave').match?('admin', 'jenkins') #=> true
|
52
|
+
# RoleData.new('admin', 'jenkins', 'slave').match?('admin', 'jenkins', 'slave') #=> true
|
53
|
+
# RoleData.new('admin', 'jenkins', 'slave').match?('admin', 'jenkins', 'master') #=> false
|
54
|
+
# RoleData.new('admin', 'jenkins', 'slave').match?(nil, 'jenkins') #=> true
|
55
|
+
# RoleData.new('admin', 'jenkins', 'slave').match?(nil, nil, 'slave') #=> true
|
56
|
+
#
|
57
|
+
# @param [Array] role_parts such as ["admin", "jenkins", "slave"]
|
58
|
+
def match?(*role_parts)
|
59
|
+
indexes = role_parts.map.with_index {|part, i| part ? i : nil }.compact
|
60
|
+
@role_parts.values_at(*indexes) == role_parts.values_at(*indexes)
|
43
61
|
end
|
44
62
|
|
45
63
|
# Equality
|
46
64
|
#
|
47
|
-
#
|
48
|
-
#
|
65
|
+
# RoleData.new('admin') == RoleData.new('admin') #=> true
|
66
|
+
# RoleData.new('admin', 'jenkin') == "admin:jenkins" #=> true
|
49
67
|
#
|
50
68
|
# @param [Object] other
|
51
69
|
def ==(other)
|
data/lib/ec2/host/version.rb
CHANGED
data/spec/host_spec.rb
CHANGED
@@ -87,31 +87,82 @@ describe EC2::Host do
|
|
87
87
|
|
88
88
|
context 'by role' do
|
89
89
|
context 'by a role' do
|
90
|
-
|
91
|
-
|
90
|
+
context 'hit' do
|
91
|
+
let(:subject) { EC2::Host.new(role: 'web:test').first }
|
92
|
+
it_should_behave_like 'host'
|
93
|
+
end
|
94
|
+
|
95
|
+
context 'miss' do
|
96
|
+
let(:subject) { EC2::Host.new(role: 'web:te').first }
|
97
|
+
it { expect(subject).to be_nil }
|
98
|
+
end
|
92
99
|
end
|
93
100
|
|
94
101
|
context 'by a role1' do
|
95
|
-
|
96
|
-
|
102
|
+
context 'hit' do
|
103
|
+
let(:subject) { EC2::Host.new(role1: 'web').first }
|
104
|
+
it_should_behave_like 'host'
|
105
|
+
end
|
106
|
+
|
107
|
+
context 'miss' do
|
108
|
+
let(:subject) { EC2::Host.new(role1: 'w').first }
|
109
|
+
it { expect(subject).to be_nil }
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
context 'by a role2' do
|
114
|
+
context 'hit' do
|
115
|
+
let(:hosts) { EC2::Host.new(role2: 'test').to_a }
|
116
|
+
it { expect(hosts.size).to be >= 2 }
|
117
|
+
end
|
118
|
+
|
119
|
+
context 'miss' do
|
120
|
+
let(:hosts) { EC2::Host.new(role2: 'te').to_a }
|
121
|
+
it { expect(hosts.size).to eq(0) }
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
context 'by a role3' do
|
126
|
+
context 'miss' do
|
127
|
+
let(:hosts) { EC2::Host.new(role3: 'no_host_has_role3').to_a }
|
128
|
+
it { expect(hosts.size).to eq(0) }
|
129
|
+
end
|
97
130
|
end
|
98
131
|
|
99
132
|
context 'by multiple roles (or)' do
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
133
|
+
context 'hit' do
|
134
|
+
let(:hosts) {
|
135
|
+
EC2::Host.new(
|
136
|
+
{
|
137
|
+
role1: 'web',
|
138
|
+
role2: 'test',
|
139
|
+
},
|
140
|
+
{
|
141
|
+
role1: 'db',
|
142
|
+
role2: 'test',
|
143
|
+
},
|
144
|
+
).to_a
|
145
|
+
}
|
146
|
+
let(:subject) { hosts.first }
|
147
|
+
it { expect(hosts.size).to be >= 2 }
|
148
|
+
it_should_behave_like 'host'
|
149
|
+
end
|
150
|
+
|
151
|
+
context 'miss' do
|
152
|
+
let(:hosts) {
|
153
|
+
EC2::Host.new(
|
154
|
+
{
|
155
|
+
role1: 'web',
|
156
|
+
role2: 'te',
|
157
|
+
},
|
158
|
+
{
|
159
|
+
role1: 'db',
|
160
|
+
role2: 'te',
|
161
|
+
},
|
162
|
+
).to_a
|
163
|
+
}
|
164
|
+
it { expect(hosts.size).to eq(0) }
|
165
|
+
end
|
115
166
|
end
|
116
167
|
end
|
117
168
|
|