cfhighlander 0.12.0.alpha.1586689671 → 0.12.2.alpha.1603234673
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 -3
- data/lib/cfhighlander.dsl.subcomponent.rb +14 -9
- data/lib/cfhighlander.dsl.template.rb +5 -1
- data/lib/cfhighlander.version.rb +1 -1
- data/templates/cfndsl.component.template.erb +4 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d536f8e52032ab314218ebc97602337ce9641674dc922162e5edd0bf85fc1c45
|
4
|
+
data.tar.gz: 6c8b11170fd53dd05101febff9805875bd09ef7ef978d045231d42d036179330
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 262fa6c520fbf222e38a3a6d6213fd5999774d06eb6b9dbb5cba02a353338a3638ccecf9afdb5abcb77c7d4f99dca2b3d732d893aea65d39dbd2df36d89ff404
|
7
|
+
data.tar.gz: 391b8f33fe0da950823abb6286116612c900a62cc273e9114bb2915cad42764b74459b8efd623a91035ce2531c9d139de96c750e471216899c6b3a49073d978c
|
data/README.md
CHANGED
@@ -448,7 +448,9 @@ end
|
|
448
448
|
|
449
449
|
**Conditional components** - If you want to add top level paramater as feature toggle for one of the inner
|
450
450
|
components, just mark it as conditional, using `conditional:` named parameter. In addition to this, default
|
451
|
-
value for feature toggle can be supplied using `enabled:` named parameter
|
451
|
+
value for feature toggle can be supplied using `enabled:` named parameter. Autogenerated parameter will be named
|
452
|
+
`Enable$COMPONENTNAME`, defaulting to `[true,false]` as set of allowed values. Autogenerated condition will
|
453
|
+
be named same as parameter, and checking if the parameter value equlas `true`
|
452
454
|
|
453
455
|
|
454
456
|
```ruby
|
@@ -469,16 +471,23 @@ end
|
|
469
471
|
|
470
472
|
```
|
471
473
|
|
472
|
-
**
|
474
|
+
**Override default behaviour** - If you have more than 1 stack you want to control with a single parameter, or you want to change
|
475
|
+
parameter name, you can supply the `condition:` option with a string value on each component you want to control with the condition.
|
476
|
+
Autogenerated condition can be overriden as well, by defining your own condition with the same name on the highlander
|
477
|
+
template, as in example below.
|
478
|
+
|
473
479
|
|
474
480
|
```ruby
|
475
481
|
CfhighlanderTemplate do
|
476
482
|
|
483
|
+
# [Optional - Define your own condition, instead of default true/false one]
|
484
|
+
Condition 'EnableDevelopmentResources', FnEquals(Ref(:EnvironmentName),'dev')
|
485
|
+
|
477
486
|
# Components always required
|
478
487
|
Component 'vpc'
|
479
488
|
Component name: 'ecs', template: 'ecs'
|
480
489
|
|
481
|
-
# Components only required in development environments
|
490
|
+
# Components only required in development environments with common condition name
|
482
491
|
Component name: 'linux-bastion', template: 'bastion', conditional: true, condition: 'EnableDevelopmentResources', enabled: false
|
483
492
|
Component name: 'windows-bastion', template: 'bastion', conditional: true, condition: 'EnableDevelopmentResources', enabled: false
|
484
493
|
|
@@ -486,6 +495,17 @@ CfhighlanderTemplate do
|
|
486
495
|
end
|
487
496
|
```
|
488
497
|
|
498
|
+
**Nested Stack Timeout** - If you ant set a timeout on your nested cloudformation stack you can set this with the `timeout: int` option on the component.
|
499
|
+
|
500
|
+
```ruby
|
501
|
+
CfhighlanderTemplate do
|
502
|
+
|
503
|
+
# sets a timeout for 10 minutes on the nested VPC stack, if the stack is not created or updated within 10 minutes the stack rolls back.
|
504
|
+
Component name: 'vpc', template: 'vpc-v2', timeout: 10
|
505
|
+
|
506
|
+
end
|
507
|
+
```
|
508
|
+
|
489
509
|
**Convert config value to parameter** - In case of inner component having configuration value
|
490
510
|
you wish to expose as runtime parameter, it is possible to do so with limitation that configuration
|
491
511
|
value is only used in *resource declarations*, as property value. If configuration value is being used
|
@@ -36,7 +36,8 @@ module Cfhighlander
|
|
36
36
|
:template_version,
|
37
37
|
:inlined,
|
38
38
|
:dependson,
|
39
|
-
:condition
|
39
|
+
:condition,
|
40
|
+
:template_timeout
|
40
41
|
|
41
42
|
def initialize(parent,
|
42
43
|
name,
|
@@ -49,6 +50,7 @@ module Cfhighlander
|
|
49
50
|
condition = nil,
|
50
51
|
enabled = true,
|
51
52
|
dependson = [],
|
53
|
+
template_timeout = nil,
|
52
54
|
inline = false,
|
53
55
|
distribution_format = 'yaml')
|
54
56
|
|
@@ -59,6 +61,7 @@ module Cfhighlander
|
|
59
61
|
@conditional = conditional
|
60
62
|
@condition = condition
|
61
63
|
@dependson = [*dependson]
|
64
|
+
@template_timeout = template_timeout
|
62
65
|
@inlined = inline
|
63
66
|
|
64
67
|
template_name = template
|
@@ -95,12 +98,15 @@ module Cfhighlander
|
|
95
98
|
if @conditional
|
96
99
|
condition = "Enable#{@cfn_name}" if @condition.nil?
|
97
100
|
@condition = condition
|
98
|
-
@parent.
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
101
|
+
parent_condition_defined = @parent.conditions.find {|c| c.name == @condition}
|
102
|
+
unless parent_condition_defined
|
103
|
+
@parent.Condition(condition, CfnDsl::Fn.new('Equals', [
|
104
|
+
CfnDsl::RefDefinition.new(condition),
|
105
|
+
'true'
|
106
|
+
]).to_json)
|
107
|
+
@parent.Parameters do
|
108
|
+
ComponentParam condition, enabled.to_s, allowedValues: %w(true false)
|
109
|
+
end
|
104
110
|
end
|
105
111
|
end
|
106
112
|
end
|
@@ -151,13 +157,12 @@ module Cfhighlander
|
|
151
157
|
param_ovr[:maxValue] = maxValue unless maxValue.nil?
|
152
158
|
param_ovr[:minLength] = minLength unless minLength.nil?
|
153
159
|
param_ovr[:minValue] = minValue unless minValue.nil?
|
154
|
-
|
155
160
|
@component_loaded.highlander_dsl.Parameters do
|
156
161
|
ComponentParam name, value, param_ovr
|
157
162
|
end
|
158
163
|
else
|
159
164
|
parameter.default_value = defaultValue unless defaultValue.nil?
|
160
|
-
parameter.type unless type.nil?
|
165
|
+
parameter.type = type unless type.nil?
|
161
166
|
parameter.no_echo = noEcho unless noEcho.nil?
|
162
167
|
parameter.allowed_values = allowedValues unless allowedValues.nil?
|
163
168
|
parameter.allowed_pattern = allowedPattern unless allowedPattern.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
|
+
:template_timeout
|
41
42
|
|
42
43
|
attr_reader :conditions,
|
43
44
|
:subcomponents,
|
@@ -57,6 +58,7 @@ module Cfhighlander
|
|
57
58
|
@lambda_functions_keys = []
|
58
59
|
@dependson_components_templates = []
|
59
60
|
@dependson_components = []
|
61
|
+
@template_timeout = nil
|
60
62
|
@conditions = []
|
61
63
|
@config_overrides = {}
|
62
64
|
@extended_template = nil
|
@@ -127,6 +129,7 @@ module Cfhighlander
|
|
127
129
|
condition: nil,
|
128
130
|
enabled: true,
|
129
131
|
dependson: [],
|
132
|
+
timeout: nil,
|
130
133
|
render: Cfhighlander::Model::Component::Substack,
|
131
134
|
&block)
|
132
135
|
puts "INFO: Requested subcomponent #{name} with template #{template}"
|
@@ -151,6 +154,7 @@ module Cfhighlander
|
|
151
154
|
condition,
|
152
155
|
enabled,
|
153
156
|
dependson,
|
157
|
+
timeout,
|
154
158
|
render == Cfhighlander::Model::Component::Inline
|
155
159
|
)
|
156
160
|
# component.instance_eval(&block) unless block.nil?
|
data/lib/cfhighlander.version.rb
CHANGED
@@ -17,12 +17,15 @@ CloudFormation do
|
|
17
17
|
CloudFormation_Stack('<%= @subcomponent.cfn_name %>') do
|
18
18
|
TemplateURL '<%= @subcomponent.distribution_url %>'
|
19
19
|
<%- if !@subcomponent.dependson.empty? %>
|
20
|
-
DependsOn <%=
|
20
|
+
DependsOn <%= @subcomponent.dependson %>
|
21
21
|
<%- end %>
|
22
22
|
Parameters ({
|
23
23
|
<% for @param in @subcomponent.parameters %><%="\t"%>'<%=@param.name %>' => <%= @param.cfndsl_value %>,
|
24
24
|
<% end %>})
|
25
25
|
<% if @subcomponent.conditional %>Condition '<%= @subcomponent.condition %>' <% end %>
|
26
|
+
<%- if !@subcomponent.template_timeout.nil? %>
|
27
|
+
TimeoutInMinutes <%= @subcomponent.template_timeout.to_i %>
|
28
|
+
<%- end %>
|
26
29
|
end
|
27
30
|
<% end %>
|
28
31
|
|
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.2.alpha.1603234673
|
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: 2020-
|
13
|
+
date: 2020-10-20 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: highline
|
@@ -281,8 +281,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
281
281
|
- !ruby/object:Gem::Version
|
282
282
|
version: 1.3.1
|
283
283
|
requirements: []
|
284
|
-
|
285
|
-
rubygems_version: 2.7.7
|
284
|
+
rubygems_version: 3.0.8
|
286
285
|
signing_key:
|
287
286
|
specification_version: 4
|
288
287
|
summary: DSL on top of cfndsl. Manage libraries of cloudformation components
|