aws-cfn-compiler 0.9.19 → 0.9.20

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c314214182b86cc683ff569ba9948f457229e0e6
4
- data.tar.gz: 9f228fb599828fd39c469efcded246d7669ece82
3
+ metadata.gz: 640e002a656701661bb83c206787586544be8146
4
+ data.tar.gz: 5365902f02751c7043df5b3566d2f3332a8781a0
5
5
  SHA512:
6
- metadata.gz: feceea17b40dd88c919ac4ee56dc1edf46770611e1703340b3a203863b5dc963c0f8b00ee2eff6e5d991718007bdcf9c1e6e476719ec83b408ea92bbbe5e3c8d
7
- data.tar.gz: 399d6dc20b812448e942c77755ccc0eeb8052c8ecb0a0b2d683798c2cc746e32f4217ff6ace7225331872c0ae28eaa39fa9ba17eaa5cdf12855f65357c167fca
6
+ metadata.gz: 24cf23031d4cf11fc27c85ab89a36bce568743e824ba02a1b04186596b8222acd789351d8bd9f67bebde4ffaacf32d23c45cf4c27a60103437e0773f7d4328ea
7
+ data.tar.gz: 36c7d203fabf3d67642ad8229d119e9e96e92993524f5d6c380658e41ccf66b5929fdc0c97f33eccd013568062b8bc2877e62318e82cefdb4956219429d19c44
data/aws-cfn-compiler.iml CHANGED
@@ -10,40 +10,6 @@
10
10
  <orderEntry type="sourceFolder" forTests="false" />
11
11
  <orderEntry type="module" module-name="aws-cfn-dsl" />
12
12
  <orderEntry type="module" module-name="cloudformation-ruby-dsl" />
13
- <orderEntry type="module-library">
14
- <library name="aws-cfn-dsl (v0.9.6, /Users/cdelange/Dropbox/DLDInternet/ws/gems-ws/aws-cfn-dsl) [path][gem]">
15
- <CLASSES>
16
- <root url="file://$MODULE_DIR$/../aws-cfn-dsl/bin" />
17
- <root url="file://$MODULE_DIR$/../aws-cfn-dsl/lib" />
18
- <root url="file://$MODULE_DIR$/../aws-cfn-dsl/pkg" />
19
- <root url="file://$MODULE_DIR$/../aws-cfn-dsl/.idea" />
20
- </CLASSES>
21
- <JAVADOC />
22
- <SOURCES>
23
- <root url="file://$MODULE_DIR$/../aws-cfn-dsl/bin" />
24
- <root url="file://$MODULE_DIR$/../aws-cfn-dsl/lib" />
25
- <root url="file://$MODULE_DIR$/../aws-cfn-dsl/pkg" />
26
- <root url="file://$MODULE_DIR$/../aws-cfn-dsl/.idea" />
27
- </SOURCES>
28
- </library>
29
- </orderEntry>
30
- <orderEntry type="module-library">
31
- <library name="cloudformation-ruby-dsl (v[path], /Users/cdelange/Dropbox/DLDInternet/ws/gems-ws/cloudformation-ruby-dsl) [path][gem]">
32
- <CLASSES>
33
- <root url="file://$MODULE_DIR$/../cloudformation-ruby-dsl/bin" />
34
- <root url="file://$MODULE_DIR$/../cloudformation-ruby-dsl/lib" />
35
- <root url="file://$MODULE_DIR$/../cloudformation-ruby-dsl/.idea" />
36
- <root url="file://$MODULE_DIR$/../cloudformation-ruby-dsl/vendor" />
37
- </CLASSES>
38
- <JAVADOC />
39
- <SOURCES>
40
- <root url="file://$MODULE_DIR$/../cloudformation-ruby-dsl/bin" />
41
- <root url="file://$MODULE_DIR$/../cloudformation-ruby-dsl/lib" />
42
- <root url="file://$MODULE_DIR$/../cloudformation-ruby-dsl/.idea" />
43
- <root url="file://$MODULE_DIR$/../cloudformation-ruby-dsl/vendor" />
44
- </SOURCES>
45
- </library>
46
- </orderEntry>
47
13
  <orderEntry type="module-library">
48
14
  <library name="dldinternet-mixlib-cli (v0.2.0, /Users/cdelange/Dropbox/DLDInternet/ws/gems-ws/dldinternet-mixlib-cli) [path][gem]">
49
15
  <CLASSES>
@@ -79,7 +45,6 @@
79
45
  </library>
80
46
  </orderEntry>
81
47
  <orderEntry type="library" scope="PROVIDED" name="awesome_print (v1.2.0, RVM: ruby-1.9.3-p547 [aws-cfn-compile]) [gem]" level="application" />
82
- <orderEntry type="library" scope="PROVIDED" name="bundler (v1.6.2, RVM: ruby-1.9.3-p547 [aws-cfn-compile]) [gem]" level="application" />
83
48
  <orderEntry type="library" scope="PROVIDED" name="detabulator (v0.1.0, RVM: ruby-1.9.3-p547 [aws-cfn-compile]) [gem]" level="application" />
84
49
  <orderEntry type="library" scope="PROVIDED" name="inifile (v2.0.2, RVM: ruby-1.9.3-p547 [aws-cfn-compile]) [gem]" level="application" />
85
50
  <orderEntry type="library" scope="PROVIDED" name="json (v1.8.1, RVM: ruby-1.9.3-p547 [aws-cfn-compile]) [gem]" level="application" />
@@ -18,16 +18,29 @@ module Aws
18
18
  super
19
19
  @items = {}
20
20
  @dynamic_items = {}
21
+ @dynamic_references = {}
22
+ @all_sections.each do |section|
23
+ @dynamic_items[section] ||= {}
24
+ @dynamic_references[section] ||= []
25
+ end
21
26
  end
22
27
 
23
28
  def dynamic_item(section,resource,hash)
24
29
  abort! "Invalid section '#{section}'\nValid sections are: #{@all_sections.join(',')}" unless @all_sections.include?(section)
25
- unless @dynamic_items.has_key?(section)
26
- @dynamic_items[section] ||= {}
27
- end
28
30
  @dynamic_items[section][resource] = hash
29
31
  end
30
32
 
33
+ def dynamic_reference(section,resource)
34
+ abort! "Invalid section '#{section}'\nValid sections are: #{@all_sections.join(',')}" unless @all_sections.include?(section)
35
+ @dynamic_references[section] << resource
36
+ end
37
+
38
+ def _uniq_names(arr)
39
+ names = {}
40
+ arr.map { |n| names[n] = nil }
41
+ names.keys
42
+ end
43
+
31
44
  def validate(compiled)
32
45
  abort! 'No Resources!?' unless compiled['Resources']
33
46
  logStep 'Validating template'
@@ -68,11 +81,11 @@ module Aws
68
81
  # --- Mappings ----------------------------------------------------------------------------------------------
69
82
  mappings = find_maps(compiled)
70
83
  mpgs = compiled['Mappings'].nil? ? [] : compiled['Mappings'].keys
71
- names = mpgs # rscs+
84
+ names = _uniq_names(mpgs+@dynamic_items['Mappings'].keys)
72
85
 
73
86
  maps = {}
74
87
  mappings.each{|m| maps[m[:mapping]] = m[:source] }
75
- mapnames = maps.keys
88
+ mapnames = maps.keys+@dynamic_references['Mappings']
76
89
  net = (mapnames-names)
77
90
  unless net.empty?
78
91
  @logger.error '!!! Unknown mappings !!!'
@@ -91,9 +104,9 @@ module Aws
91
104
  @logger.info ' Mappings validated'
92
105
 
93
106
  # --- Conditions ----------------------------------------------------------------------------------------------
94
- cond = find_conditions(compiled)
107
+ cond = find_conditions(compiled)+@dynamic_references['Conditions']
95
108
  cnds = compiled['Conditions'].keys rescue []
96
- names = cnds
109
+ names = _uniq_names(cnds+@dynamic_items['Conditions'].keys)
97
110
 
98
111
  net = (cond-names)
99
112
  unless net.empty?
@@ -116,9 +129,9 @@ module Aws
116
129
  # Parameters => Resources => Outputs
117
130
  refs = find_refs(compiled).select { |a,_| !(a =~ /^AWS::/) }
118
131
  rscs = compiled['Resources'].keys
119
- names = rscs+prms+cnds
132
+ names = _uniq_names((mpgs+rscs+prms+cnds)+@dynamic_items['Mappings'].keys+@dynamic_items['Conditions'].keys+@dynamic_items['Parameters'].keys+@dynamic_items['Resources'].keys)
120
133
 
121
- net = (refs.keys-names)
134
+ net = (_uniq_names(refs.keys+@dynamic_references['Mappings']+@dynamic_references['Parameters']+@dynamic_references['Resources'])-names)
122
135
  unless net.empty?
123
136
  @logger.error '!!! Unknown references !!!'
124
137
  net.each do |name|
@@ -126,17 +139,17 @@ module Aws
126
139
  end
127
140
  abort!
128
141
  end
129
- net = (prms-refs.keys)
142
+ net = (prms+@dynamic_items['Parameters'].keys-refs.keys-@dynamic_references['Parameters'])
130
143
  unless net.empty?
131
144
  @logger.warn '!!! Unused Parameters !!!'
132
- net.each do |name|
145
+ net.sort.each do |name|
133
146
  @logger.warn " #{name}"
134
147
  end
135
148
  end
136
- net = (rscs.sort-refs.keys.sort)
149
+ net = (rscs+@dynamic_items['Resources'].keys-refs.keys-@dynamic_references['Resources'])
137
150
  unless net.empty?
138
151
  @logger.info '!!! Unreferenced Resources !!!'
139
- net.each do |name|
152
+ net.sort.each do |name|
140
153
  @logger.info " #{name}"
141
154
  end
142
155
  end
@@ -1,7 +1,7 @@
1
1
  module Aws
2
2
  module Cfn
3
3
  module Compiler
4
- VERSION = '0.9.19'
4
+ VERSION = '0.9.20'
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-cfn-compiler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.19
4
+ version: 0.9.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - PKinney
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-20 00:00:00.000000000 Z
11
+ date: 2014-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: awesome_print