chemtrail 0.3.1 → 0.4.0

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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/examples/lib/templates/config/load_balancer.yml +23 -0
  3. data/examples/lib/templates/config/nat_device.yml +49 -0
  4. data/examples/lib/templates/config/opsworks.yml +5 -0
  5. data/examples/lib/templates/config/private_network.yml +34 -0
  6. data/examples/lib/templates/config/{resources.yml → public_network.yml} +4 -14
  7. data/examples/lib/templates/config/public_network_acl.yml +54 -0
  8. data/examples/lib/templates/config/{mappings.yml → stack.yml} +24 -17
  9. data/examples/lib/templates/opsworks_vpc/load_balancer.rb +36 -0
  10. data/examples/lib/templates/opsworks_vpc/nat_device.rb +58 -0
  11. data/examples/lib/templates/opsworks_vpc/opsworks.rb +27 -0
  12. data/examples/lib/templates/opsworks_vpc/private_network.rb +89 -0
  13. data/examples/lib/templates/opsworks_vpc/public_network.rb +79 -0
  14. data/examples/lib/templates/opsworks_vpc/public_network_acl.rb +72 -0
  15. data/examples/lib/templates/opsworks_vpc_template.rb +71 -67
  16. data/examples/spec/lib/templates/opsworks_vpc/load_balancer_spec.rb +22 -0
  17. data/examples/spec/lib/templates/opsworks_vpc/nat_device_spec.rb +45 -0
  18. data/examples/spec/lib/templates/opsworks_vpc/opsworks_spec.rb +21 -0
  19. data/examples/spec/lib/templates/opsworks_vpc/private_network_spec.rb +62 -0
  20. data/examples/spec/lib/templates/opsworks_vpc/public_network_acl_spec.rb +63 -0
  21. data/examples/spec/lib/templates/opsworks_vpc/public_network_spec.rb +40 -0
  22. data/examples/spec/lib/templates/opsworks_vpc_template_spec.rb +37 -39
  23. data/lib/chemtrail/matchers/be_reference_to.rb +11 -0
  24. data/lib/chemtrail/matchers/have_entry.rb +36 -0
  25. data/lib/chemtrail/matchers/have_field.rb +7 -20
  26. data/lib/chemtrail/matchers/have_mapping.rb +4 -2
  27. data/lib/chemtrail/matchers/have_output.rb +46 -0
  28. data/lib/chemtrail/matchers/have_parameter.rb +9 -8
  29. data/lib/chemtrail/matchers/have_property.rb +35 -20
  30. data/lib/chemtrail/matchers/have_resource.rb +9 -8
  31. data/lib/chemtrail/matchers/have_tag.rb +7 -20
  32. data/lib/chemtrail/reference_presenter.rb +8 -6
  33. data/lib/chemtrail/rspec.rb +3 -1
  34. data/lib/chemtrail/version.rb +1 -1
  35. metadata +24 -6
  36. data/examples/lib/templates/config/parameters.yml +0 -18
  37. data/lib/chemtrail/matchers/have_mapping_key.rb +0 -49
@@ -4,24 +4,25 @@ module Chemtrail::RSpec
4
4
  extend RSpec::Matchers::DSL
5
5
 
6
6
  matcher :have_resource do |resource_id|
7
- define_method :resource_for do |actual|
8
- actual.resources.detect { |resource| resource.id == resource_id }
7
+ define_method :resource_for do |resource_list|
8
+ resource_list.detect { |resource| resource.id == resource_id }
9
9
  end
10
10
 
11
- define_method :matches_type? do |actual|
12
- @type.nil? || resource_for(actual).type == @type
11
+ define_method :matches_type? do |resource|
12
+ @type.nil? || resource.type == @type
13
13
  end
14
14
 
15
- match do |actual|
16
- !resource_for(actual).nil? && matches_type?(actual)
15
+ match do |resource_list|
16
+ resource = resource_for(resource_list)
17
+ !resource.nil? && matches_type?(resource)
17
18
  end
18
19
 
19
20
  chain :with_type do |type|
20
21
  @type = type
21
22
  end
22
23
 
23
- failure_message_for_should do |actual|
24
- if resource = resource_for(actual)
24
+ failure_message_for_should do |resource_list|
25
+ if resource = resource_for(resource_list)
25
26
  %(expected resource #{resource_id.inspect} to have type #{@type.inspect}, but got #{resource.type.inspect})
26
27
  else
27
28
  %(expected to find resource #{resource_id.inspect}, but got nothing)
@@ -4,10 +4,6 @@ module Chemtrail::RSpec
4
4
  extend RSpec::Matchers::DSL
5
5
 
6
6
  matcher :have_tag do |key_name|
7
- define_method :resource_for do |actual|
8
- actual.resources.detect { |resource| resource.id == @resource_id }
9
- end
10
-
11
7
  define_method :tag_for do |resource|
12
8
  tags = resource.properties["Tags"] || []
13
9
  tags.detect { |tag| tag["Key"] == key_name }
@@ -23,16 +19,11 @@ module Chemtrail::RSpec
23
19
  end
24
20
  end
25
21
 
26
- match do |actual|
27
- resource = resource_for(actual)
22
+ match do |resource|
28
23
  tag = tag_for(resource)
29
24
  !resource.nil? && !tag.nil? && matches_value?(tag)
30
25
  end
31
26
 
32
- chain :on do |resource_id|
33
- @resource_id = resource_id
34
- end
35
-
36
27
  chain :with_value do |value|
37
28
  @value = value
38
29
  end
@@ -41,19 +32,15 @@ module Chemtrail::RSpec
41
32
  @reference = reference
42
33
  end
43
34
 
44
- failure_message_for_should do |actual|
45
- if resource = resource_for(actual)
46
- if tag = tag_for(resource)
47
- if @value
48
- %(expected resource #{@resource_id.inspect} tag #{key_name.inspect} to have value #{@value.inspect}, but got #{tag["Value"].inspect})
49
- else
50
- %(expected resource #{@resource_id.inspect} tag #{key_name.inspect} to refer to #{@reference.inspect}, but got #{tag["Value"].id.inspect})
51
- end
35
+ failure_message_for_should do |resource|
36
+ if tag = tag_for(resource)
37
+ if @value
38
+ %(expected resource #{resource.id} tag #{key_name.inspect} to have value #{@value.inspect}, but got #{tag["Value"].inspect})
52
39
  else
53
- %(expected resource #{@resource_id.inspect} to have tag #{key_name.inspect})
40
+ %(expected resource #{resource.id} tag #{key_name.inspect} to refer to #{@reference.inspect}, but got #{tag["Value"].id.inspect})
54
41
  end
55
42
  else
56
- %(expected to find resource #{@resource_id.inspect}, but got nothing)
43
+ %(expected resource #{resource.id} to have tag #{key_name.inspect})
57
44
  end
58
45
  end
59
46
  end
@@ -20,14 +20,16 @@ class Chemtrail::ReferencePresenter
20
20
  def to_parameter
21
21
  if reference?
22
22
  argument.to_reference
23
- elsif iterable?
24
- if hashlike?
25
- argument.reduce(argument) { |h, (k, v)| h[k] = self.class.new(v).to_parameter; h }
23
+ else
24
+ if iterable?
25
+ if hashlike?
26
+ argument.reduce(argument) { |h, (k, v)| h[k] = self.class.new(v).to_parameter; h }
27
+ else
28
+ argument.map { |item| self.class.new(item).to_parameter }
29
+ end
26
30
  else
27
- argument.map { |item| self.class.new(item).to_parameter }
31
+ argument
28
32
  end
29
- else
30
- argument
31
33
  end
32
34
  end
33
35
  end
@@ -1,7 +1,9 @@
1
1
  require "chemtrail"
2
+ require "chemtrail/matchers/be_reference_to"
3
+ require "chemtrail/matchers/have_entry"
2
4
  require "chemtrail/matchers/have_field"
3
5
  require "chemtrail/matchers/have_mapping"
4
- require "chemtrail/matchers/have_mapping_key"
6
+ require "chemtrail/matchers/have_output"
5
7
  require "chemtrail/matchers/have_parameter"
6
8
  require "chemtrail/matchers/have_property"
7
9
  require "chemtrail/matchers/have_resource"
@@ -1,3 +1,3 @@
1
1
  module Chemtrail
2
- VERSION = "0.3.1"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chemtrail
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Doc Ritezel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-16 00:00:00.000000000 Z
11
+ date: 2013-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core
@@ -101,10 +101,26 @@ files:
101
101
  - chemtrail.gemspec
102
102
  - examples/.rspec
103
103
  - examples/Guardfile
104
- - examples/lib/templates/config/mappings.yml
105
- - examples/lib/templates/config/parameters.yml
106
- - examples/lib/templates/config/resources.yml
104
+ - examples/lib/templates/config/load_balancer.yml
105
+ - examples/lib/templates/config/nat_device.yml
106
+ - examples/lib/templates/config/opsworks.yml
107
+ - examples/lib/templates/config/private_network.yml
108
+ - examples/lib/templates/config/public_network.yml
109
+ - examples/lib/templates/config/public_network_acl.yml
110
+ - examples/lib/templates/config/stack.yml
111
+ - examples/lib/templates/opsworks_vpc/load_balancer.rb
112
+ - examples/lib/templates/opsworks_vpc/nat_device.rb
113
+ - examples/lib/templates/opsworks_vpc/opsworks.rb
114
+ - examples/lib/templates/opsworks_vpc/private_network.rb
115
+ - examples/lib/templates/opsworks_vpc/public_network.rb
116
+ - examples/lib/templates/opsworks_vpc/public_network_acl.rb
107
117
  - examples/lib/templates/opsworks_vpc_template.rb
118
+ - examples/spec/lib/templates/opsworks_vpc/load_balancer_spec.rb
119
+ - examples/spec/lib/templates/opsworks_vpc/nat_device_spec.rb
120
+ - examples/spec/lib/templates/opsworks_vpc/opsworks_spec.rb
121
+ - examples/spec/lib/templates/opsworks_vpc/private_network_spec.rb
122
+ - examples/spec/lib/templates/opsworks_vpc/public_network_acl_spec.rb
123
+ - examples/spec/lib/templates/opsworks_vpc/public_network_spec.rb
108
124
  - examples/spec/lib/templates/opsworks_vpc_template_spec.rb
109
125
  - examples/spec/spec_helper.rb
110
126
  - lib/chemtrail.rb
@@ -113,9 +129,11 @@ files:
113
129
  - lib/chemtrail/function.rb
114
130
  - lib/chemtrail/intrinsic.rb
115
131
  - lib/chemtrail/mapping.rb
132
+ - lib/chemtrail/matchers/be_reference_to.rb
133
+ - lib/chemtrail/matchers/have_entry.rb
116
134
  - lib/chemtrail/matchers/have_field.rb
117
135
  - lib/chemtrail/matchers/have_mapping.rb
118
- - lib/chemtrail/matchers/have_mapping_key.rb
136
+ - lib/chemtrail/matchers/have_output.rb
119
137
  - lib/chemtrail/matchers/have_parameter.rb
120
138
  - lib/chemtrail/matchers/have_property.rb
121
139
  - lib/chemtrail/matchers/have_resource.rb
@@ -1,18 +0,0 @@
1
- NATInstanceType:
2
- Default: m1.small
3
- Description: NAT Device EC2 instance type
4
- ConstraintDescription: must be a valid EC2 instance type.
5
- AllowedValues:
6
- - t1.micro
7
- - m1.small
8
- - m1.medium
9
- - m1.large
10
- - m1.xlarge
11
- - m2.xlarge
12
- - m2.2xlarge
13
- - m2.4xlarge
14
- - c1.medium
15
- - c1.xlarge
16
- - cc1.4xlarge
17
- - cc2.8xlarge
18
- - cg1.4xlarge
@@ -1,49 +0,0 @@
1
- require "rspec/expectations"
2
-
3
- module Chemtrail::RSpec
4
- extend RSpec::Matchers::DSL
5
-
6
- matcher :have_mapping_key do |entry_name|
7
- define_method :mapping_for do |actual|
8
- actual.mappings.detect { |m| m.id == @mapping_id }
9
- end
10
-
11
- define_method :entry_for do |mapping|
12
- mapping.entries[entry_name]
13
- end
14
-
15
- define_method :matches_value? do |entry|
16
- if @included_value
17
- entry.values_at(*@included_value.keys) == @included_value.values
18
- else
19
- true
20
- end
21
- end
22
-
23
- match do |actual|
24
- mapping = mapping_for(actual)
25
- entry = entry_for(mapping)
26
- !mapping.nil? && !entry.nil? && matches_value?(entry)
27
- end
28
-
29
- chain :on do |mapping_id|
30
- @mapping_id = mapping_id
31
- end
32
-
33
- chain :including do |value|
34
- @included_value = value
35
- end
36
-
37
- failure_message_for_should do |actual|
38
- if mapping = mapping_for(actual)
39
- if entry = entry_for(mapping)
40
- %(expected mapping #{@mapping_id.inspect} field #{entry_name.inspect} to have value #{@included_value.inspect}, but got #{entry.inspect})
41
- else
42
- %(expected mapping #{@mapping_id.inspect} to have type #{entry_name.inspect})
43
- end
44
- else
45
- %(expected to find mapping #{@mapping_id.inspect}, but got nothing)
46
- end
47
- end
48
- end
49
- end