cfhighlander 0.3.0.alpha.1531198720 → 0.3.0.alpha.1531270316

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5b686f58eba35660bb5220c67f1a9486e141b5835422f7750bcc49445b60d7e4
4
- data.tar.gz: 045635c52efbfb8c6c55053f576e463206a8ca2383827aafe110bddab6d7ed67
3
+ metadata.gz: e24583ffb52dd7b67178ec79684808d14fd0219a9ca6a03aa3a42fc249971fe7
4
+ data.tar.gz: 7f42b19cb4f05b087bdcf31593a53c04db7008d5c2670273d4b00134aa2007ce
5
5
  SHA512:
6
- metadata.gz: e6637bcbbd443d95eb32ecbe5a68b88f5d6b5210dfd305a8a9878e2add6c3a01a40069edb1808058165b437caf46b1dfd1f04540af975f344c838c55e90c1dc4
7
- data.tar.gz: f3c160205f24825ff5d53530bb9bee25061a9ff5744b44a662e8b58c2ee46090f01b8cad8cb053ad7faa05939f7b00858c194e7da671538b9adaa7c8a34a127f
6
+ metadata.gz: b237aebd3bbd2084945f494d41ef9599f73e5d91f18263fc8434fb061ebc65c61ebde430c9de0fa76833fa7324fcbc12efa308ebcbc8ae8c9427a4a4480b356b
7
+ data.tar.gz: 64712d1386bf517399b47aadb51f53fc11177737386201e7c2e25ed26888039ab59dc056c2c48fe2e41b94d9d5aff72a19c11cbc104e7632dc62ceefa07049f8
@@ -152,7 +152,7 @@ module Cfhighlander
152
152
  class SubcomponentParamValueResolver
153
153
  def self.resolveValue(component, sub_component, param, available_outputs)
154
154
 
155
- print("INFO Resolving parameter #{component.name} -> #{sub_component.name}.#{param.name}: ")
155
+ puts("INFO Resolving parameter #{component.name} -> #{sub_component.name}.#{param.name}: ")
156
156
 
157
157
  # rule 0: this rule is here for legacy reasons and OutputParam. It should be deprecated
158
158
  # once all hl-components- repos remove any references to OutputParam
@@ -39,7 +39,8 @@ module Cfhighlander
39
39
 
40
40
  attr_reader :conditions,
41
41
  :subcomponents,
42
- :config_overrides
42
+ :config_overrides,
43
+ :extended_template
43
44
 
44
45
  def initialize
45
46
  @mappings = []
@@ -55,7 +56,8 @@ module Cfhighlander
55
56
  @dependson_components_templates = []
56
57
  @dependson_components = []
57
58
  @conditions = []
58
- @config_overrides = {}
59
+ @config_overrides = {},
60
+ @extended_template = nil
59
61
  end
60
62
 
61
63
  # DSL statements
@@ -98,6 +100,9 @@ module Cfhighlander
98
100
  @dependson_components_templates << template
99
101
  end
100
102
 
103
+ def Extends(template)
104
+ @extended_template = template
105
+ end
101
106
 
102
107
  def Component(template_arg = nil, template: nil,
103
108
  name: template,
@@ -435,11 +440,16 @@ module Cfhighlander
435
440
  end
436
441
 
437
442
  def CfhighlanderTemplate(&block)
438
- instance = Cfhighlander::Dsl::HighlanderTemplate.new
439
-
440
- puts "Processing cfhighlander component #{@name}\n\tLocation:#{@highlander_dsl_path}" +
441
- "\n\tConfig:#{@config}"
442
443
 
444
+ if @parent_dsl.nil?
445
+ instance = Cfhighlander::Dsl::HighlanderTemplate.new
446
+ puts "Processing higlander component #{@name}\n\tLocation:#{@highlander_dsl_path}" +
447
+ "\n\tConfig:#{@config}"
448
+ else
449
+ instance = @parent_dsl
450
+ puts "Processing higlander component #{@name}\n\tLocation:#{@highlander_dsl_path}" +
451
+ "\n\tConfig:#{@config}\n\tParent: #{@parent_template}"
452
+ end
443
453
 
444
454
  instance.config = @config
445
455
 
@@ -34,7 +34,10 @@ module Cfhighlander
34
34
 
35
35
 
36
36
  def buildComponentFromLocation(template_meta, component_name)
37
- component = Model::Component.new(template_meta, component_name)
37
+ component = Model::Component.new(template_meta,
38
+ component_name,
39
+ self)
40
+ component.factory = self
38
41
  component.load_config
39
42
  return component
40
43
  end
@@ -20,13 +20,21 @@ module Cfhighlander
20
20
  :distribution_prefix,
21
21
  :component_files,
22
22
  :cfndsl_ext_files,
23
- :lambda_src_files
23
+ :lambda_src_files,
24
+ :parent_template,
25
+ :template_finder,
26
+ :factory,
27
+ :extended_component,
28
+ :is_parent_component
24
29
 
25
30
  attr_reader :cfn_model,
26
31
  :outputs,
32
+ :factory,
33
+ :extended_component,
27
34
  :potential_subcomponent_overrides
28
35
 
29
- def initialize(template_meta, component_name)
36
+
37
+ def initialize(template_meta, component_name, factory)
30
38
  @template = template_meta
31
39
  @name = component_name
32
40
  @component_dir = template_meta.template_location
@@ -37,7 +45,11 @@ module Cfhighlander
37
45
  @component_files = []
38
46
  @cfndsl_ext_files = []
39
47
  @lambda_src_files = []
48
+ @factory = factory
49
+ @extended_component = nil
50
+ @parent_dsl = nil
40
51
  @potential_subcomponent_overrides = {}
52
+ @is_parent_component = false
41
53
  end
42
54
 
43
55
  def distribution_bucket=(value)
@@ -65,7 +77,7 @@ module Cfhighlander
65
77
  @component_files << config_file
66
78
  end
67
79
  fname = File.basename(config_file)
68
- potential_component_name = fname.gsub('.config.yaml','')
80
+ potential_component_name = fname.gsub('.config.yaml', '')
69
81
  @potential_subcomponent_overrides[potential_component_name] = partial_config
70
82
  end
71
83
  end
@@ -99,7 +111,7 @@ module Cfhighlander
99
111
  candidate_dynamic_mappings_path = "#{@component_dir}/#{@template.template_name}.mappings.rb"
100
112
 
101
113
  @cfndsl_ext_files += Dir["#{@component_dir}/ext/cfndsl/*.rb"]
102
- @lambda_src_files += Dir["#{@component_dir}/lambdas/**/*"].find_all {|p| not File.directory? p}
114
+ @lambda_src_files += Dir["#{@component_dir}/lambdas/**/*"].find_all { |p| not File.directory? p }
103
115
  @component_files += @cfndsl_ext_files
104
116
  @component_files += @lambda_src_files
105
117
 
@@ -125,16 +137,11 @@ module Cfhighlander
125
137
  @component_files << candidate_dynamic_mappings_path
126
138
  end
127
139
 
128
- # 1st pass - parse the file
129
140
  @component_files << @highlander_dsl_path
130
141
 
131
- cfhl_script = ''
132
- @config.each do |key, val|
133
- cfhl_script += ("\n#{key} = #{val.inspect}\n")
134
- end
135
- cfhl_script += File.read(@highlander_dsl_path)
136
142
 
137
- @highlander_dsl = eval(cfhl_script, binding)
143
+ # evaluate template file and load parent if defined
144
+ evaluateHiglanderTemplate
138
145
 
139
146
  # set version if not defined
140
147
  @highlander_dsl.ComponentVersion(@version) unless @version.nil?
@@ -149,12 +156,39 @@ module Cfhighlander
149
156
  end
150
157
 
151
158
  @highlander_dsl.Description(description)
152
- end
159
+ end unless @is_parent_component
153
160
 
154
161
  # set (override) distribution options
155
162
  @highlander_dsl.DistributionBucket(@distribution_bucket) unless @distribution_bucket.nil?
156
163
  @highlander_dsl.DistributionPrefix(@distribution_prefix) unless @distribution_prefix.nil?
157
164
 
165
+
166
+ loadDepandantExt()
167
+ end
168
+
169
+ def inheritParentTemplate
170
+ if not @parent_template.nil?
171
+ extended_component = @factory.loadComponentFromTemplate(@parent_template)
172
+ extended_component.is_parent_component = true
173
+ extended_component.load()
174
+
175
+ @config = extended_component.config.extend(@config)
176
+ @mappings = extended_component.mappings.extend(@mappings)
177
+ @cfndsl_ext_files += extended_component.cfndsl_ext_files
178
+ @lambda_src_files += extended_component.lambda_src_files
179
+ @extended_component = extended_component
180
+
181
+ # extend cfndsl, first comes parent, than child
182
+ # this allows for child component to shadow parent component
183
+ # defined resources
184
+ @cfndsl_content = extended_component.cfndsl_content + @cfndsl_content
185
+
186
+ @parent_dsl = extended_component.highlander_dsl
187
+
188
+ end
189
+ end
190
+
191
+ def loadCfndslContent
158
192
  if File.exist? @cfndsl_path
159
193
  @component_files << @cfndsl_path
160
194
  @cfndsl_content = File.read(@cfndsl_path)
@@ -169,8 +203,27 @@ module Cfhighlander
169
203
  else
170
204
  @cfndsl_content = ''
171
205
  end
206
+ end
172
207
 
173
- loadDepandantExt()
208
+ def evaluateHiglanderTemplate
209
+ loadCfndslContent
210
+
211
+ cfhl_script = ''
212
+ @config.each do |key, val|
213
+ cfhl_script += ("\n#{key} = #{val.inspect}\n")
214
+ end
215
+ cfhl_script += File.read(@highlander_dsl_path)
216
+
217
+ cfhl_dsl = eval(cfhl_script, binding)
218
+ if not cfhl_dsl.extended_template.nil?
219
+ @parent_template = cfhl_dsl.extended_template
220
+ inheritParentTemplate
221
+ puts "INFO: #{@template} extends #{@parent_template}, loading parent definition..."
222
+ # 2nd pass, template instance is already created from parent
223
+ @highlander_dsl = eval(cfhl_script, binding)
224
+ else
225
+ @highlander_dsl = cfhl_dsl
226
+ end
174
227
  end
175
228
 
176
229
  # evaluates cfndsl with current config
@@ -183,7 +236,7 @@ module Cfhighlander
183
236
  @outputs = (
184
237
  if @cfn_model.key? 'Outputs'
185
238
  then
186
- @cfn_model['Outputs'].map {|k, v| ComponentOutput.new self, k, v}
239
+ @cfn_model['Outputs'].map { |k, v| ComponentOutput.new self, k, v }
187
240
  else
188
241
  []
189
242
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfhighlander
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0.alpha.1531198720
4
+ version: 0.3.0.alpha.1531270316
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikola Tosic
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-07-10 00:00:00.000000000 Z
12
+ date: 2018-07-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: highline