cfndsl 0.4.4 → 0.5.0.pre

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 (64) hide show
  1. checksums.yaml +5 -13
  2. data/.rubocop.yml +23 -0
  3. data/Gemfile +4 -0
  4. data/Rakefile +19 -17
  5. data/bin/cfndsl +20 -20
  6. data/cfndsl.gemspec +16 -15
  7. data/lib/cfndsl.rb +62 -68
  8. data/lib/cfndsl/aws/cloud_formation_template.rb +16 -0
  9. data/lib/cfndsl/aws/types.rb +12 -0
  10. data/lib/cfndsl/{aws_types.yaml → aws/types.yaml} +0 -0
  11. data/lib/cfndsl/{Conditions.rb → conditions.rb} +5 -7
  12. data/lib/cfndsl/creation_policy.rb +21 -0
  13. data/lib/cfndsl/errors.rb +29 -0
  14. data/lib/cfndsl/generate_types.rb +154 -0
  15. data/lib/cfndsl/jsonable.rb +214 -0
  16. data/lib/cfndsl/mappings.rb +23 -0
  17. data/lib/cfndsl/metadata.rb +16 -0
  18. data/lib/cfndsl/module.rb +52 -51
  19. data/lib/cfndsl/names.rb +5 -5
  20. data/lib/cfndsl/orchestration_template.rb +173 -0
  21. data/lib/cfndsl/os/heat_template.rb +16 -0
  22. data/lib/cfndsl/os/types.rb +12 -0
  23. data/lib/cfndsl/{os_types.yaml → os/types.yaml} +11 -11
  24. data/lib/cfndsl/{Outputs.rb → outputs.rb} +3 -4
  25. data/lib/cfndsl/{Parameters.rb → parameters.rb} +12 -13
  26. data/lib/cfndsl/plurals.rb +34 -0
  27. data/lib/cfndsl/properties.rb +21 -0
  28. data/lib/cfndsl/rake_task.rb +9 -7
  29. data/lib/cfndsl/ref_check.rb +44 -0
  30. data/lib/cfndsl/{Resources.rb → resources.rb} +13 -15
  31. data/lib/cfndsl/types.rb +151 -0
  32. data/lib/cfndsl/update_policy.rb +25 -0
  33. data/lib/cfndsl/version.rb +1 -1
  34. data/sample/autoscale.rb +152 -158
  35. data/sample/autoscale2.rb +151 -155
  36. data/sample/circular.rb +30 -33
  37. data/sample/codedeploy.rb +35 -36
  38. data/sample/config_service.rb +120 -0
  39. data/sample/ecs.rb +39 -39
  40. data/sample/iam_policies.rb +82 -0
  41. data/sample/lambda.rb +20 -24
  42. data/sample/s3.rb +11 -11
  43. data/sample/t1.rb +7 -9
  44. data/sample/vpc_example.rb +50 -0
  45. data/sample/vpc_with_vpn_example.rb +97 -0
  46. data/spec/cfndsl_spec.rb +22 -11
  47. data/spec/fixtures/heattest.rb +13 -14
  48. data/spec/fixtures/test.rb +56 -53
  49. metadata +36 -30
  50. data/lib/cfndsl/CloudFormationTemplate.rb +0 -267
  51. data/lib/cfndsl/CreationPolicy.rb +0 -25
  52. data/lib/cfndsl/Errors.rb +0 -31
  53. data/lib/cfndsl/JSONable.rb +0 -235
  54. data/lib/cfndsl/Mappings.rb +0 -25
  55. data/lib/cfndsl/Metadata.rb +0 -22
  56. data/lib/cfndsl/Plurals.rb +0 -35
  57. data/lib/cfndsl/Properties.rb +0 -25
  58. data/lib/cfndsl/RefCheck.rb +0 -48
  59. data/lib/cfndsl/Types.rb +0 -309
  60. data/lib/cfndsl/UpdatePolicy.rb +0 -29
  61. data/sample/config-service.rb +0 -119
  62. data/sample/iam-policies.rb +0 -82
  63. data/sample/vpc-example.rb +0 -51
  64. data/sample/vpc-with-vpn-example.rb +0 -97
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfndsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.5.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Jack
@@ -15,14 +15,14 @@ dependencies:
15
15
  name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ! '>='
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: '0'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ! '>='
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
28
  description: DSL for creating AWS Cloudformation templates
@@ -34,8 +34,9 @@ executables:
34
34
  extensions: []
35
35
  extra_rdoc_files: []
36
36
  files:
37
- - .gitignore
38
- - .travis.yml
37
+ - ".gitignore"
38
+ - ".rubocop.yml"
39
+ - ".travis.yml"
39
40
  - Gemfile
40
41
  - LICENSE
41
42
  - README.md
@@ -43,41 +44,46 @@ files:
43
44
  - bin/cfndsl
44
45
  - cfndsl.gemspec
45
46
  - lib/cfndsl.rb
46
- - lib/cfndsl/CloudFormationTemplate.rb
47
- - lib/cfndsl/Conditions.rb
48
- - lib/cfndsl/CreationPolicy.rb
49
- - lib/cfndsl/Errors.rb
50
- - lib/cfndsl/JSONable.rb
51
- - lib/cfndsl/Mappings.rb
52
- - lib/cfndsl/Metadata.rb
53
- - lib/cfndsl/Outputs.rb
54
- - lib/cfndsl/Parameters.rb
55
- - lib/cfndsl/Plurals.rb
56
- - lib/cfndsl/Properties.rb
57
- - lib/cfndsl/RefCheck.rb
58
- - lib/cfndsl/Resources.rb
59
- - lib/cfndsl/Types.rb
60
- - lib/cfndsl/UpdatePolicy.rb
61
- - lib/cfndsl/aws_types.yaml
47
+ - lib/cfndsl/aws/cloud_formation_template.rb
48
+ - lib/cfndsl/aws/types.rb
49
+ - lib/cfndsl/aws/types.yaml
50
+ - lib/cfndsl/conditions.rb
51
+ - lib/cfndsl/creation_policy.rb
52
+ - lib/cfndsl/errors.rb
53
+ - lib/cfndsl/generate_types.rb
54
+ - lib/cfndsl/jsonable.rb
55
+ - lib/cfndsl/mappings.rb
56
+ - lib/cfndsl/metadata.rb
62
57
  - lib/cfndsl/module.rb
63
58
  - lib/cfndsl/names.rb
64
- - lib/cfndsl/os_types.yaml
59
+ - lib/cfndsl/orchestration_template.rb
60
+ - lib/cfndsl/os/heat_template.rb
61
+ - lib/cfndsl/os/types.rb
62
+ - lib/cfndsl/os/types.yaml
63
+ - lib/cfndsl/outputs.rb
64
+ - lib/cfndsl/parameters.rb
65
+ - lib/cfndsl/plurals.rb
66
+ - lib/cfndsl/properties.rb
65
67
  - lib/cfndsl/rake_task.rb
68
+ - lib/cfndsl/ref_check.rb
69
+ - lib/cfndsl/resources.rb
70
+ - lib/cfndsl/types.rb
71
+ - lib/cfndsl/update_policy.rb
66
72
  - lib/cfndsl/version.rb
67
73
  - sample/autoscale.rb
68
74
  - sample/autoscale.template
69
75
  - sample/autoscale2.rb
70
76
  - sample/circular.rb
71
77
  - sample/codedeploy.rb
72
- - sample/config-service.rb
78
+ - sample/config_service.rb
73
79
  - sample/ecs.rb
74
- - sample/iam-policies.rb
80
+ - sample/iam_policies.rb
75
81
  - sample/lambda.rb
76
82
  - sample/s3.rb
77
83
  - sample/t1.rb
78
84
  - sample/t1.yaml
79
- - sample/vpc-example.rb
80
- - sample/vpc-with-vpn-example.rb
85
+ - sample/vpc_example.rb
86
+ - sample/vpc_with_vpn_example.rb
81
87
  - spec/cfndsl_spec.rb
82
88
  - spec/fixtures/heattest.rb
83
89
  - spec/fixtures/test.rb
@@ -92,17 +98,17 @@ require_paths:
92
98
  - lib
93
99
  required_ruby_version: !ruby/object:Gem::Requirement
94
100
  requirements:
95
- - - ! '>='
101
+ - - ">="
96
102
  - !ruby/object:Gem::Version
97
103
  version: '0'
98
104
  required_rubygems_version: !ruby/object:Gem::Requirement
99
105
  requirements:
100
- - - ! '>='
106
+ - - ">"
101
107
  - !ruby/object:Gem::Version
102
- version: '0'
108
+ version: 1.3.1
103
109
  requirements: []
104
110
  rubyforge_project:
105
- rubygems_version: 2.4.5
111
+ rubygems_version: 2.4.8
106
112
  signing_key:
107
113
  specification_version: 4
108
114
  summary: AWS Cloudformation DSL
@@ -1,267 +0,0 @@
1
- require 'cfndsl/JSONable'
2
- require 'cfndsl/names'
3
-
4
- module CfnDsl
5
- class OrchestrationTemplate < JSONable
6
- ##
7
- # Handles the overall template object
8
- dsl_attr_setter :AWSTemplateFormatVersion, :Description
9
- dsl_content_object :Condition, :Parameter, :Output, :Resource, :Mapping
10
-
11
- def initialize
12
- @AWSTemplateFormatVersion = "2010-09-09"
13
- end
14
-
15
- @@globalRefs = {
16
- "AWS::NotificationARNs" => 1,
17
- "AWS::Region" => 1,
18
- "AWS::StackId" => 1,
19
- "AWS::StackName" => 1,
20
- "AWS::AccountId" => 1,
21
- "AWS::NoValue" => 1
22
- }
23
-
24
- def isValidRef( ref, origin=nil)
25
- ref = ref.to_s
26
- origin = origin.to_s if origin
27
-
28
- return true if @@globalRefs.has_key?( ref )
29
-
30
- return true if @Parameters && @Parameters.has_key?( ref )
31
-
32
- if( @Resources.has_key?( ref ) ) then
33
- return !origin || !@_ResourceRefs || !@_ResourceRefs[ref] || !@_ResourceRefs[ref].has_key?(origin)
34
- end
35
-
36
- return false
37
- end
38
-
39
- def checkRefs()
40
- invalids = []
41
- @_ResourceRefs = {}
42
- if(@Resources) then
43
- @Resources.keys.each do |resource|
44
- @_ResourceRefs[resource.to_s] = @Resources[resource].references({})
45
- end
46
- @_ResourceRefs.keys.each do |origin|
47
- @_ResourceRefs[origin].keys.each do |ref|
48
- invalids.push "Invalid Reference: Resource #{origin} refers to #{ref}" unless isValidRef(ref,origin)
49
- end
50
- end
51
- end
52
- outputRefs = {}
53
- if(@Outputs) then
54
- @Outputs.keys.each do |resource|
55
- outputRefs[resource.to_s] = @Outputs[resource].references({})
56
- end
57
- outputRefs.keys.each do |origin|
58
- outputRefs[origin].keys.each do |ref|
59
- invalids.push "Invalid Reference: Output #{origin} refers to #{ref}" unless isValidRef(ref,nil)
60
- end
61
- end
62
- end
63
- return invalids.length>0 ? invalids : nil
64
- end
65
- end
66
-
67
- class CloudFormationTemplate < OrchestrationTemplate
68
- def self.template_types
69
- CfnDsl::AWSTypes::AWS_Types
70
- end
71
- def self.type_module
72
- CfnDsl::AWSTypes
73
- end
74
-
75
- names = {}
76
- nametypes = {}
77
- self.template_types["Resources"].each_pair do |name, type|
78
- # Subclass ResourceDefintion and generate property methods
79
- klass = Class.new(CfnDsl::ResourceDefinition)
80
- klassname = name.split("::").join("_")
81
- type_module.const_set( klassname, klass )
82
- type["Properties"].each_pair do |pname, ptype|
83
- if( ptype.instance_of? String )
84
- create_klass = type_module.const_get( ptype );
85
-
86
- klass.class_eval do
87
- CfnDsl::methodNames(pname) do |method|
88
- define_method(method) do |*values, &block|
89
- if( values.length <1 ) then
90
- values.push create_klass.new
91
- end
92
- @Properties ||= {}
93
- @Properties[pname] = CfnDsl::PropertyDefinition.new( *values )
94
- @Properties[pname].value.instance_eval &block if block
95
- @Properties[pname].value
96
- end
97
- end
98
- end
99
- else
100
- #Array version
101
- sing_name = CfnDsl::Plurals.singularize( pname )
102
- create_klass = type_module.const_get( ptype[0] )
103
- klass.class_eval do
104
- CfnDsl::methodNames(pname) do |method|
105
- define_method(method) do |*values, &block|
106
- if( values.length < 1 ) then
107
- values.push []
108
- end
109
- @Properties ||= {}
110
- @Properties[pname] ||= PropertyDefinition.new( *values )
111
- @Properties[pname].value.instance_eval &block if block
112
- @Properties[pname].value
113
- end
114
- end
115
-
116
- CfnDsl::methodNames(sing_name) do |method|
117
- define_method(method) do |value=nil, &block|
118
- @Properties ||= {}
119
- @Properties[pname] ||= PropertyDefinition.new( [] )
120
- if( !value ) then
121
- value = create_klass.new
122
- end
123
- @Properties[pname].value.push value
124
- value.instance_eval &block if block
125
- value
126
- end
127
- end
128
- end
129
- end
130
-
131
- end
132
- parts = name.split "::"
133
- while( parts.length > 0)
134
- abreve_name = parts.join "_"
135
- if( names.has_key? abreve_name ) then
136
- # this only happens if there is an ambiguity
137
- names[abreve_name] = nil
138
- else
139
- names[abreve_name] = self.type_module.const_get(klassname)
140
- nametypes[abreve_name] = name
141
- end
142
- parts.shift
143
- end
144
-
145
-
146
- end
147
-
148
- #Define property setter methods for each of the unambiguous type names
149
- names.each_pair do |typename,type|
150
- if(type) then
151
- class_eval do
152
- CfnDsl::methodNames(typename) do |method|
153
- define_method(method) do |name,*values,&block|
154
- name = name.to_s
155
- @Resources ||= {}
156
- resource = @Resources[name] ||= type.new(*values)
157
- resource.instance_eval &block if block
158
- resource.instance_variable_set( "@Type", nametypes[typename] )
159
- resource
160
- end
161
- end
162
- end
163
- end
164
- end
165
-
166
-
167
- end
168
-
169
- class HeatTemplate < OrchestrationTemplate
170
- def self.template_types
171
- CfnDsl::OSTypes::OS_Types
172
- end
173
- def self.type_module
174
- CfnDsl::OSTypes
175
- end
176
-
177
- names = {}
178
- nametypes = {}
179
- self.template_types["Resources"].each_pair do |name, type|
180
- # Subclass ResourceDefintion and generate property methods
181
- klass = Class.new(CfnDsl::ResourceDefinition)
182
- klassname = name.split("::").join("_")
183
- type_module.const_set( klassname, klass )
184
- type["Properties"].each_pair do |pname, ptype|
185
- if( ptype.instance_of? String )
186
- create_klass = type_module.const_get( ptype );
187
-
188
- klass.class_eval do
189
- CfnDsl::methodNames(pname) do |method|
190
- define_method(method) do |*values, &block|
191
- if( values.length <1 ) then
192
- values.push create_klass.new
193
- end
194
- @Properties ||= {}
195
- @Properties[pname] = CfnDsl::PropertyDefinition.new( *values )
196
- @Properties[pname].value.instance_eval &block if block
197
- @Properties[pname].value
198
- end
199
- end
200
- end
201
- else
202
- #Array version
203
- sing_name = CfnDsl::Plurals.singularize( pname )
204
- create_klass = type_module.const_get( ptype[0] )
205
- klass.class_eval do
206
- CfnDsl::methodNames(pname) do |method|
207
- define_method(method) do |*values, &block|
208
- if( values.length < 1 ) then
209
- values.push []
210
- end
211
- @Properties ||= {}
212
- @Properties[pname] ||= PropertyDefinition.new( *values )
213
- @Properties[pname].value.instance_eval &block if block
214
- @Properties[pname].value
215
- end
216
- end
217
-
218
- CfnDsl::methodNames(sing_name) do |method|
219
- define_method(method) do |value=nil, &block|
220
- @Properties ||= {}
221
- @Properties[pname] ||= PropertyDefinition.new( [] )
222
- if( !value ) then
223
- value = create_klass.new
224
- end
225
- @Properties[pname].value.push value
226
- value.instance_eval &block if block
227
- value
228
- end
229
- end
230
- end
231
- end
232
-
233
- end
234
- parts = name.split "::"
235
- while( parts.length > 0)
236
- abreve_name = parts.join "_"
237
- if( names.has_key? abreve_name ) then
238
- # this only happens if there is an ambiguity
239
- names[abreve_name] = nil
240
- else
241
- names[abreve_name] = self.type_module.const_get(klassname)
242
- nametypes[abreve_name] = name
243
- end
244
- parts.shift
245
- end
246
- end
247
-
248
- #Define property setter methods for each of the unambiguous type names
249
- names.each_pair do |typename,type|
250
- if(type) then
251
- class_eval do
252
- CfnDsl::methodNames(typename) do |method|
253
- define_method(method) do |name,*values,&block|
254
- name = name.to_s
255
- @Resources ||= {}
256
- resource = @Resources[name] ||= type.new(*values)
257
- resource.instance_eval &block if block
258
- resource.instance_variable_set( "@Type", nametypes[typename] )
259
- resource
260
- end
261
- end
262
- end
263
- end
264
- end
265
- end
266
-
267
- end
@@ -1,25 +0,0 @@
1
- require 'cfndsl/JSONable'
2
-
3
- module CfnDsl
4
- class CreationPolicyDefinition < JSONable
5
- ##
6
- # Handles creation policy objects for Resources
7
- #
8
- # Usage
9
- # Resource("aaa") {
10
- # CreationPolicy('ResourceSignal', { 'Count' => 1, 'Timeout' => 'PT10M' })
11
- # }
12
- #
13
- def initialize(value)
14
- @value = value;
15
- end
16
-
17
- def value
18
- return @value
19
- end
20
-
21
- def to_json(*a)
22
- @value.to_json(*a)
23
- end
24
- end
25
- end
data/lib/cfndsl/Errors.rb DELETED
@@ -1,31 +0,0 @@
1
- module CfnDsl
2
- module Errors
3
- @@errors = []
4
-
5
- def self.error( err, idx=nil )
6
- if(idx.nil?) then
7
- @@errors.push ( err + "\n" + caller.join("\n") + "\n" )
8
- else
9
- if( m = caller[idx].match(/^.*?:\d+:/ ) ) then
10
- err_loc = m[0];
11
- else
12
- err_loc = caller[idx]
13
- end
14
-
15
- @@errors.push ( err_loc + " " + err + "\n" )
16
- end
17
- end
18
-
19
- def self.clear()
20
- @@errors = []
21
- end
22
-
23
- def self.errors()
24
- @@errors
25
- end
26
-
27
- def self.errors?()
28
- return @@errors.length > 0
29
- end
30
- end
31
- end