convection 1.0.3 → 1.0.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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/lib/convection/control/stack.rb +11 -1
- data/lib/convection/model/cloudfile.rb +2 -0
- data/spec/convection/control/stack_spec.rb +21 -0
- data/spec/convection/model/cloudfile_spec.rb +29 -0
- data/spec/spec_helper.rb +1 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67bf51eb16483fd69d3076cddb1dd2e78dace915
|
4
|
+
data.tar.gz: 7bb593969be4f0f776d4129c9435408180a79a9e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0120c0fc5b9a7bd2bac857823cf77fa0910d30b464cb18d6e5bade366ff55935e24d0d771acdd00aa0c7d1402a8d8da3e8ae1ceea01254f9b42b4db36ed1a514
|
7
|
+
data.tar.gz: 9333ef1c307dc39f36542e878aae36911728d0d8cfda403dc4d93f5cfc499444bfcaf5fee0e8438366b8fce21af3ae01a2fe61e4292d304dc1b875f9ecb84a2f
|
data/.travis.yml
CHANGED
@@ -34,6 +34,7 @@ module Convection
|
|
34
34
|
|
35
35
|
## AWS-SDK
|
36
36
|
attr_accessor :region
|
37
|
+
attr_accessor :exclude_availability_zones
|
37
38
|
attr_accessor :cloud
|
38
39
|
attr_reader :capabilities
|
39
40
|
attr_accessor :credentials
|
@@ -108,6 +109,7 @@ module Convection
|
|
108
109
|
@cloud = options.delete(:cloud)
|
109
110
|
@cloud_name = options.delete(:cloud_name)
|
110
111
|
@region = options.delete(:region) { |_| 'us-east-1' }
|
112
|
+
@exclude_availability_zones = options.delete(:exclude_availability_zones) { |_| [] } # Default empty Array
|
111
113
|
@credentials = options.delete(:credentials)
|
112
114
|
@parameters = options.delete(:parameters) { |_| {} } # Default empty hash
|
113
115
|
@tags = options.delete(:tags) { |_| {} } # Default empty hash
|
@@ -434,7 +436,15 @@ module Convection
|
|
434
436
|
# the call to ec2 client's describe availability zones
|
435
437
|
def availability_zones(&block)
|
436
438
|
@availability_zones ||=
|
437
|
-
@ec2_client.describe_availability_zones.availability_zones.map(&:zone_name)
|
439
|
+
@ec2_client.describe_availability_zones.availability_zones.map(&:zone_name)
|
440
|
+
|
441
|
+
unless @exclude_availability_zones.empty?
|
442
|
+
@availability_zones.reject! { |az| @exclude_availability_zones.include?(az) }
|
443
|
+
end
|
444
|
+
if @availability_zones.empty? && block
|
445
|
+
fail 'There are no AvailabilityZones, check exclude_availability_zones in the Cloudfile.'
|
446
|
+
end
|
447
|
+
@availability_zones.sort!
|
438
448
|
|
439
449
|
@availability_zones.each_with_index(&block) if block
|
440
450
|
@availability_zones
|
@@ -14,6 +14,7 @@ module Convection
|
|
14
14
|
|
15
15
|
attribute :name
|
16
16
|
attribute :region
|
17
|
+
attribute :exclude_availability_zones
|
17
18
|
attribute :splay
|
18
19
|
attribute :retry_limit
|
19
20
|
attribute :thread_count
|
@@ -32,6 +33,7 @@ module Convection
|
|
32
33
|
# @see Convection::Control::Stack#initialize
|
33
34
|
def stack(stack_name, template, options = {}, &block)
|
34
35
|
options[:region] ||= region
|
36
|
+
options[:exclude_availability_zones] = exclude_availability_zones
|
35
37
|
options[:cloud] = name
|
36
38
|
options[:attributes] = attributes
|
37
39
|
options[:retry_limit] = retry_limit
|
@@ -36,6 +36,27 @@ module Convection::Control
|
|
36
36
|
azs.uniq!
|
37
37
|
expect(azs.size).to be(1)
|
38
38
|
end
|
39
|
+
|
40
|
+
it 'availability_zones can be ignored' do
|
41
|
+
subject.exclude_availability_zones = %w(eu-central-1a)
|
42
|
+
expect(subject.availability_zones).to contain_exactly('eu-central-1b')
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'multiple availability_zones can be ignored' do
|
46
|
+
subject.exclude_availability_zones = %w(eu-central-1a eu-central-1b)
|
47
|
+
expect(subject.availability_zones).to contain_exactly
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'remove all availability_zones fails' do
|
51
|
+
subject.exclude_availability_zones = %w(eu-central-1a eu-central-1b)
|
52
|
+
b = proc do
|
53
|
+
end
|
54
|
+
expect { subject.availability_zones(&b) }.to raise_exception(RuntimeError, /AvailabilityZones/)
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'can get default availability_zones' do
|
58
|
+
expect(subject.availability_zones).to contain_exactly('eu-central-1a', 'eu-central-1b')
|
59
|
+
end
|
39
60
|
end
|
40
61
|
end
|
41
62
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'stringio'
|
3
|
+
|
4
|
+
module Convection::Model
|
5
|
+
describe Cloudfile do
|
6
|
+
describe 'stack' do
|
7
|
+
subject do
|
8
|
+
klass = Class.new
|
9
|
+
klass.extend(Convection::DSL::Cloudfile)
|
10
|
+
klass
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'can get cloud name' do
|
14
|
+
subject.name 'test-1'
|
15
|
+
expect(subject.name).to eq('test-1')
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'can get region name' do
|
19
|
+
subject.region 'eu-central-1'
|
20
|
+
expect(subject.region).to eq('eu-central-1')
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'can exclude_availability_zones an availability_zone' do
|
24
|
+
subject.exclude_availability_zones %w(eu-central-1a)
|
25
|
+
expect(subject.exclude_availability_zones).to contain_exactly('eu-central-1a')
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -6,6 +6,7 @@ SimpleCov.start do
|
|
6
6
|
end
|
7
7
|
|
8
8
|
require_relative '../lib/convection'
|
9
|
+
require_relative '../lib/convection/model/cloudfile'
|
9
10
|
require_relative './cf_client_context'
|
10
11
|
require_relative './collect_availability_zones_task_context'
|
11
12
|
require_relative './ec2_client_context'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: convection
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Manero
|
@@ -276,6 +276,7 @@ files:
|
|
276
276
|
- spec/convection/control/stack_spec.rb
|
277
277
|
- spec/convection/dsl/intrinsic_functions_spec.rb
|
278
278
|
- spec/convection/model/attributes_spec.rb
|
279
|
+
- spec/convection/model/cloudfile_spec.rb
|
279
280
|
- spec/convection/model/template/condition_spec.rb
|
280
281
|
- spec/convection/model/template/resource/aws_auto_scaling_auto_scaling_group_spec.rb
|
281
282
|
- spec/convection/model/template/resource/directoryservice_simple_ad_spec.rb
|
@@ -344,6 +345,7 @@ test_files:
|
|
344
345
|
- spec/convection/control/stack_spec.rb
|
345
346
|
- spec/convection/dsl/intrinsic_functions_spec.rb
|
346
347
|
- spec/convection/model/attributes_spec.rb
|
348
|
+
- spec/convection/model/cloudfile_spec.rb
|
347
349
|
- spec/convection/model/template/condition_spec.rb
|
348
350
|
- spec/convection/model/template/resource/aws_auto_scaling_auto_scaling_group_spec.rb
|
349
351
|
- spec/convection/model/template/resource/directoryservice_simple_ad_spec.rb
|