cfhighlander 0.12.4 → 0.12.7
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/README.md +23 -1
- data/cfndsl_ext/lambda_helper.rb +1 -0
- data/lib/cfhighlander.dsl.subcomponent.rb +1 -1
- data/lib/cfhighlander.dsl.template.rb +10 -3
- data/lib/cfhighlander.error.rb +3 -0
- data/lib/cfhighlander.model.component.rb +2 -2
- data/lib/cfhighlander.publisher.rb +12 -2
- data/lib/cfhighlander.version.rb +1 -1
- data/lib/util/cloudformation.util.rb +16 -1
- data/templates/cfndsl.component.template.erb +4 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d2dfe3eb66664ba5c592e060c0c2257f890fa8ed03f7583d396857a8d1b789cd
|
4
|
+
data.tar.gz: 0577fcd3991f9e5fbb4b146c705c791a678523c04a025203255375ab1b264e98
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea89979f91b1a001a87c0779b57d7e6efad18a1897b0bc4ca8bcf69c0132694a4131c2d312d1451aa8cc0a8cd0cafa6abb44458097f69650e84a7ecd7026eae9
|
7
|
+
data.tar.gz: e7ab34cb43ad010ad12ae0dd4193c0cf247d24878bd07f2a4701d07d0fed419bc573c7ba649350b0d2e264a23864c63d9427fefa80184abdf915600ac85dcc5d
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
 [](https://gitter.im/theonestack/cfhighlander?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
2
2
|
|
3
3
|
# Intro
|
4
4
|
|
@@ -863,6 +863,27 @@ end
|
|
863
863
|
|
864
864
|
```
|
865
865
|
|
866
|
+
### Publishing Additonal Artifacts
|
867
|
+
|
868
|
+
If you need to publish additonal files along with your cloudformation templates you can use the following DSL:
|
869
|
+
|
870
|
+
```ruby
|
871
|
+
CfhighlanderTemplate do
|
872
|
+
Name 'my_app'
|
873
|
+
PublishArtifact file: "my-apigateway-spec.yaml"
|
874
|
+
end
|
875
|
+
```
|
876
|
+
|
877
|
+
This will upload the file `my-apigateway-spec.yaml` to the s3 destnation/distribution bucket using the default s3 prefix. If you want to override the s3 key you can use
|
878
|
+
|
879
|
+
```ruby
|
880
|
+
CfhighlanderTemplate do
|
881
|
+
Name 'my_app'
|
882
|
+
PublishArtifact file: "my-apigateway-spec.yaml", key: '/my-custom-path/my-custom-file.yaml'
|
883
|
+
end
|
884
|
+
```
|
885
|
+
|
886
|
+
|
866
887
|
## Finding templates and creating components
|
867
888
|
|
868
889
|
|
@@ -1038,3 +1059,4 @@ Test Highlander component with test case config
|
|
1038
1059
|
### Reports
|
1039
1060
|
|
1040
1061
|
By default test will print the output to stdout. You can output to a file with a format of xml or json using the `-r` option
|
1062
|
+
|
data/cfndsl_ext/lambda_helper.rb
CHANGED
@@ -30,6 +30,7 @@ def render_lambda_functions(cfndsl, lambdas, lambda_metadata, distribution)
|
|
30
30
|
S3Bucket: distribution['bucket'],
|
31
31
|
S3Key: "#{distribution['prefix']}/#{distribution['version']}/#{lambda_metadata['path'][key]}"
|
32
32
|
})
|
33
|
+
Layers lambda_config['layers'] unless lambda_config['layers'].nil?
|
33
34
|
|
34
35
|
Environment(Variables: Hash[environment.collect { |k, v| [k, v] }])
|
35
36
|
|
@@ -155,7 +155,7 @@ module Cfhighlander
|
|
155
155
|
param_ovr[:minLength] = minLength unless minLength.nil?
|
156
156
|
param_ovr[:minValue] = minValue unless minValue.nil?
|
157
157
|
@component_loaded.highlander_dsl.Parameters do
|
158
|
-
ComponentParam name, value, param_ovr
|
158
|
+
ComponentParam name, value, **param_ovr
|
159
159
|
end
|
160
160
|
else
|
161
161
|
parameter.default_value = defaultValue unless defaultValue.nil?
|
@@ -37,7 +37,8 @@ module Cfhighlander
|
|
37
37
|
:lambda_functions_keys,
|
38
38
|
:description,
|
39
39
|
:dependson_components,
|
40
|
-
:template_dir
|
40
|
+
:template_dir,
|
41
|
+
:publish_artifacts
|
41
42
|
|
42
43
|
attr_reader :conditions,
|
43
44
|
:subcomponents,
|
@@ -63,6 +64,7 @@ module Cfhighlander
|
|
63
64
|
# execution blocks for subcomponents
|
64
65
|
@subcomponents_exec = {}
|
65
66
|
@template_dir = nil
|
67
|
+
@publish_artifacts = []
|
66
68
|
end
|
67
69
|
|
68
70
|
# DSL statements
|
@@ -207,6 +209,11 @@ module Cfhighlander
|
|
207
209
|
@lambda_functions_keys << config_key
|
208
210
|
end
|
209
211
|
|
212
|
+
def PublishArtifact(file: nil, key: key=nil)
|
213
|
+
puts "INFO: adding artifact #{file} to publishing list"
|
214
|
+
@publish_artifacts << {file: file, key: key}
|
215
|
+
end
|
216
|
+
|
210
217
|
# Internal and interface functions
|
211
218
|
|
212
219
|
def loadComponents
|
@@ -467,11 +474,11 @@ def CfhighlanderTemplate(&block)
|
|
467
474
|
|
468
475
|
if @parent_dsl.nil?
|
469
476
|
instance = Cfhighlander::Dsl::HighlanderTemplate.new
|
470
|
-
puts "Processing
|
477
|
+
puts "Processing highlander component #{@name}\n\tLocation:#{@highlander_dsl_path}" +
|
471
478
|
"\n\tConfig:#{@config}"
|
472
479
|
else
|
473
480
|
instance = @parent_dsl
|
474
|
-
puts "Processing
|
481
|
+
puts "Processing highlander component #{@name}\n\tLocation:#{@highlander_dsl_path}" +
|
475
482
|
"\n\tConfig:#{@config}\n\tParent: #{@parent_template}"
|
476
483
|
end
|
477
484
|
|
@@ -153,7 +153,7 @@ module Cfhighlander
|
|
153
153
|
|
154
154
|
|
155
155
|
# evaluate template file and load parent if defined
|
156
|
-
|
156
|
+
evaluateHighlanderTemplate
|
157
157
|
|
158
158
|
# set version if not defined
|
159
159
|
@highlander_dsl.ComponentVersion(@version) unless @version.nil?
|
@@ -223,7 +223,7 @@ module Cfhighlander
|
|
223
223
|
end
|
224
224
|
end
|
225
225
|
|
226
|
-
def
|
226
|
+
def evaluateHighlanderTemplate
|
227
227
|
loadCfndslContent
|
228
228
|
|
229
229
|
cfhl_script = ''
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require_relative './cfhighlander.compiler'
|
2
2
|
require 'aws-sdk-s3'
|
3
|
-
|
3
|
+
|
4
4
|
module Cfhighlander
|
5
5
|
|
6
6
|
module Publisher
|
@@ -53,7 +53,7 @@ module Cfhighlander
|
|
53
53
|
template_url = getTemplateUrl
|
54
54
|
region = s3_bucket_region(@component.highlander_dsl.distribution_bucket)
|
55
55
|
return "https://console.aws.amazon.com/cloudformation/home?region=#{region}#/stacks/create/review?filter=active&templateURL=" +
|
56
|
-
"#{
|
56
|
+
"#{CGI::escape(template_url)}&stackName=#{@component.name}"
|
57
57
|
end
|
58
58
|
|
59
59
|
def publishFiles(file_list)
|
@@ -83,6 +83,16 @@ module Cfhighlander
|
|
83
83
|
end
|
84
84
|
print "\n"
|
85
85
|
|
86
|
+
@component.highlander_dsl.publish_artifacts.each do |artifact|
|
87
|
+
s3_key = artifact[:key].nil? ? "#{prefix}/#{version}/#{artifact[:file]}" : artifact[:key]
|
88
|
+
print "\nPublishing artifact: #{artifact[:file]} to s3://#{bucket}/#{s3_key} ..."
|
89
|
+
s3.put_object({
|
90
|
+
body: File.read(artifact[:file]),
|
91
|
+
bucket: bucket,
|
92
|
+
key: s3_key
|
93
|
+
})
|
94
|
+
print ' [OK] '
|
95
|
+
end
|
86
96
|
end
|
87
97
|
|
88
98
|
end
|
data/lib/cfhighlander.version.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require_relative '../cfhighlander.model.component'
|
2
|
+
require_relative '../cfhighlander.error'
|
2
3
|
require_relative './debug.util'
|
3
4
|
require 'duplicate'
|
4
5
|
|
@@ -57,7 +58,6 @@ module Cfhighlander
|
|
57
58
|
template.subcomponents.each do |sub_component|
|
58
59
|
next unless sub_component.inlined
|
59
60
|
model = sub_component.component_loaded.cfn_model_raw
|
60
|
-
|
61
61
|
model[element_type].keys.each do |key|
|
62
62
|
if keys_taken.include? key
|
63
63
|
candidate = "#{sub_component.component_loaded.name}#{key}"
|
@@ -109,6 +109,16 @@ module Cfhighlander
|
|
109
109
|
next unless sub_component.inlined
|
110
110
|
model = sub_component.component_loaded.cfn_model_raw
|
111
111
|
model[element_name].each do |resource, value|
|
112
|
+
if sub_component.conditional
|
113
|
+
# If the resource already has a conditon we need to combine it with the stack condition
|
114
|
+
if element_name == 'Conditions'
|
115
|
+
value = { "Fn::And" => [{"Condtion" => sub_component.condition}, value]}
|
116
|
+
end
|
117
|
+
# Adds the condition to the inlined resource if it doesn't already have a condition
|
118
|
+
if element_name == 'Resources'
|
119
|
+
value['Condition'] = sub_component.condition unless value.has_key?('Condition')
|
120
|
+
end
|
121
|
+
end
|
112
122
|
# effective extraction of child resource into parent
|
113
123
|
# allows for line components to use - or _ in the component name
|
114
124
|
# and still generate valid references
|
@@ -295,6 +305,11 @@ module Cfhighlander
|
|
295
305
|
outval_refs.each do |out_ref|
|
296
306
|
component_name = out_ref[:component]
|
297
307
|
ref_sub_component = template.subcomponents.find {|sc| sc.name == component_name}
|
308
|
+
|
309
|
+
if ref_sub_component.nil?
|
310
|
+
raise Cfhighlander::Error, "unable to find outputs from component #{component_name} reference by parameters in component #{sub_component.name}"
|
311
|
+
end
|
312
|
+
|
298
313
|
if ref_sub_component.inlined
|
299
314
|
# out refs here need to be replaced with actual values
|
300
315
|
replacement = output_values[out_ref[:component]][out_ref[:outputName]]
|
@@ -42,7 +42,11 @@ CloudFormation do
|
|
42
42
|
<% for @param in dsl.parameters.param_list %>
|
43
43
|
Parameter('<%= @param.name %>') do
|
44
44
|
Type '<%= @param.type %>'
|
45
|
+
<%- if ['Number', 'List<Number>'].include?(@param.type) -%>
|
46
|
+
Default <%= @param.default_value %>
|
47
|
+
<%- else -%>
|
45
48
|
Default '<%= @param.default_value %>'
|
49
|
+
<%- end -%>
|
46
50
|
<%- unless @param.no_echo.nil? -%>
|
47
51
|
NoEcho <%= @param.no_echo %>
|
48
52
|
<%- 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.12.
|
4
|
+
version: 0.12.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nikola Tosic
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2022-03-31 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: highline
|
@@ -247,6 +247,7 @@ files:
|
|
247
247
|
- lib/cfhighlander.dsl.params.rb
|
248
248
|
- lib/cfhighlander.dsl.subcomponent.rb
|
249
249
|
- lib/cfhighlander.dsl.template.rb
|
250
|
+
- lib/cfhighlander.error.rb
|
250
251
|
- lib/cfhighlander.factory.rb
|
251
252
|
- lib/cfhighlander.factory.templatefinder.rb
|
252
253
|
- lib/cfhighlander.helper.rb
|
@@ -281,7 +282,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
281
282
|
- !ruby/object:Gem::Version
|
282
283
|
version: '0'
|
283
284
|
requirements: []
|
284
|
-
rubygems_version: 3.
|
285
|
+
rubygems_version: 3.1.6
|
285
286
|
signing_key:
|
286
287
|
specification_version: 4
|
287
288
|
summary: DSL on top of cfndsl. Manage libraries of cloudformation components
|