cfndsl 0.16.2 → 0.16.3
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/CHANGELOG.md +15 -2
- data/Rakefile +1 -3
- data/cfndsl.gemspec +1 -1
- data/lib/cfndsl/external_parameters.rb +6 -6
- data/lib/cfndsl/json_serialisable_object.rb +2 -2
- data/lib/cfndsl/jsonable.rb +11 -10
- data/lib/cfndsl/orchestration_template.rb +3 -5
- data/lib/cfndsl/patches.rb +1 -0
- data/lib/cfndsl/specification.rb +5 -2
- data/lib/cfndsl/version.rb +1 -1
- data/lib/deep_merge/core.rb +3 -3
- data/spec/cfndsl_spec.rb +7 -0
- data/spec/spec_helper.rb +3 -3
- data/spec/types_definition_spec.rb +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1dda569f61cd962d5edcf67c2732fc4ddd80259b21e3bd5858fe0a1d1065d51e
|
4
|
+
data.tar.gz: bf43293eef2e64331159bf403c8b9d13f5fb2bca54821b82aaae7b35770e97aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 79b518eff156a5fabf5d2035a63299fca23c05dcafe48781f86c0896b38c14e0de8690508be9405599bb74115b427dac88b965660fcf7dee155f5c4f49f493eb
|
7
|
+
data.tar.gz: 5655ab233f107f9ebed98ab42cd88d566236acad019bd004eae8c5a086b688d63c79bfe0ff7ffc3a405cae42c0345d3f36c474a6ee26dcda5d3a60292b25b8f0
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,20 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
-
## [0.16.
|
4
|
-
[Full Changelog](https://github.com/cfndsl/cfndsl/compare/v0.16.
|
3
|
+
## [0.16.3](https://github.com/cfndsl/cfndsl/tree/0.16.3) (2018-03-20)
|
4
|
+
[Full Changelog](https://github.com/cfndsl/cfndsl/compare/v0.16.2...0.16.3)
|
5
|
+
|
6
|
+
**Closed issues:**
|
7
|
+
|
8
|
+
- Schedule Event Rule creates an invalid JSON on FnGetAtt Arn. [\#344](https://github.com/cfndsl/cfndsl/issues/344)
|
9
|
+
|
10
|
+
**Merged pull requests:**
|
11
|
+
|
12
|
+
- add Fn::Cidr [\#364](https://github.com/cfndsl/cfndsl/pull/364) ([gergnz](https://github.com/gergnz))
|
13
|
+
- fixes for rubocop [\#363](https://github.com/cfndsl/cfndsl/pull/363) ([gergnz](https://github.com/gergnz))
|
14
|
+
- 0.x changes to 1.0.0.pre [\#361](https://github.com/cfndsl/cfndsl/pull/361) ([gergnz](https://github.com/gergnz))
|
15
|
+
|
16
|
+
## [v0.16.2](https://github.com/cfndsl/cfndsl/tree/v0.16.2) (2017-12-07)
|
17
|
+
[Full Changelog](https://github.com/cfndsl/cfndsl/compare/v0.16.1...v0.16.2)
|
5
18
|
|
6
19
|
**Closed issues:**
|
7
20
|
|
data/Rakefile
CHANGED
@@ -35,9 +35,7 @@ task :bump, :type do |_, args|
|
|
35
35
|
|
36
36
|
raise unless types.include?(type)
|
37
37
|
|
38
|
-
if `git rev-parse --abbrev-ref HEAD`.strip != 'master'
|
39
|
-
raise "Looks like you're trying to create a release in a branch, you can only create one in 'master'"
|
40
|
-
end
|
38
|
+
raise "Looks like you're trying to create a release in a branch, you can only create one in 'master'" if `git rev-parse --abbrev-ref HEAD`.strip != 'master'
|
41
39
|
|
42
40
|
version_segments = CfnDsl::VERSION.split('.').map(&:to_i)
|
43
41
|
|
data/cfndsl.gemspec
CHANGED
@@ -27,16 +27,16 @@ module CfnDsl
|
|
27
27
|
@parameters = self.class.defaults.clone
|
28
28
|
end
|
29
29
|
|
30
|
-
def set_param(
|
31
|
-
parameters[
|
30
|
+
def set_param(key, val)
|
31
|
+
parameters[key.to_sym] = val
|
32
32
|
end
|
33
33
|
|
34
|
-
def merge_param(
|
35
|
-
parameters.deep_merge!(
|
34
|
+
def merge_param(xray)
|
35
|
+
parameters.deep_merge!(xray)
|
36
36
|
end
|
37
37
|
|
38
|
-
def get_param(
|
39
|
-
parameters[
|
38
|
+
def get_param(key)
|
39
|
+
parameters[key.to_sym]
|
40
40
|
end
|
41
41
|
alias [] get_param
|
42
42
|
|
data/lib/cfndsl/jsonable.rb
CHANGED
@@ -43,9 +43,7 @@ module CfnDsl
|
|
43
43
|
|
44
44
|
# Equivalent to the CloudFormation template built in function Fn::And
|
45
45
|
def FnAnd(array)
|
46
|
-
if !array || array.count < 2 || array.count > 10
|
47
|
-
raise 'The array passed to Fn::And must have at least 2 elements and no more than 10'
|
48
|
-
end
|
46
|
+
raise 'The array passed to Fn::And must have at least 2 elements and no more than 10' if !array || array.count < 2 || array.count > 10
|
49
47
|
Fn.new('And', array)
|
50
48
|
end
|
51
49
|
|
@@ -70,9 +68,7 @@ module CfnDsl
|
|
70
68
|
|
71
69
|
# Equivalent to the CloudFormation template built in function Fn::Or
|
72
70
|
def FnOr(array)
|
73
|
-
if !array || array.count < 2 || array.count > 10
|
74
|
-
raise 'The array passed to Fn::Or must have at least 2 elements and no more than 10'
|
75
|
-
end
|
71
|
+
raise 'The array passed to Fn::Or must have at least 2 elements and no more than 10' if !array || array.count < 2 || array.count > 10
|
76
72
|
Fn.new('Or', array)
|
77
73
|
end
|
78
74
|
|
@@ -145,6 +141,11 @@ module CfnDsl
|
|
145
141
|
end
|
146
142
|
Fn.new('Join', ['', array])
|
147
143
|
end
|
144
|
+
|
145
|
+
# Equivalent to the CloudFormation template built in function Fn::Cidr
|
146
|
+
def FnCidr(ipblock, count, sizemask)
|
147
|
+
Fn.new('Cidr', [ipblock, count, sizemask])
|
148
|
+
end
|
148
149
|
# rubocop:enable Metrics/AbcSize, Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity
|
149
150
|
end
|
150
151
|
|
@@ -187,8 +188,8 @@ module CfnDsl
|
|
187
188
|
hash
|
188
189
|
end
|
189
190
|
|
190
|
-
def to_json(*
|
191
|
-
as_json.to_json(*
|
191
|
+
def to_json(*args)
|
192
|
+
as_json.to_json(*args)
|
192
193
|
end
|
193
194
|
|
194
195
|
def ref_children
|
@@ -214,8 +215,8 @@ module CfnDsl
|
|
214
215
|
hash
|
215
216
|
end
|
216
217
|
|
217
|
-
def to_json(*
|
218
|
-
as_json.to_json(*
|
218
|
+
def to_json(*args)
|
219
|
+
as_json.to_json(*args)
|
219
220
|
end
|
220
221
|
|
221
222
|
def references
|
@@ -11,7 +11,7 @@ module CfnDsl
|
|
11
11
|
dsl_attr_setter :AWSTemplateFormatVersion, :Description, :Metadata, :Transform
|
12
12
|
dsl_content_object :Condition, :Parameter, :Output, :Resource, :Mapping
|
13
13
|
|
14
|
-
|
14
|
+
GLOBAL_REFS = {
|
15
15
|
'AWS::NotificationARNs' => 1,
|
16
16
|
'AWS::Region' => 1,
|
17
17
|
'AWS::StackId' => 1,
|
@@ -117,13 +117,11 @@ module CfnDsl
|
|
117
117
|
ref = ref.to_s
|
118
118
|
origin = origin.to_s if origin
|
119
119
|
|
120
|
-
return true if
|
120
|
+
return true if GLOBAL_REFS.key?(ref)
|
121
121
|
|
122
122
|
return true if @Parameters && @Parameters.key?(ref)
|
123
123
|
|
124
|
-
if @Resources.key?(ref)
|
125
|
-
return !origin || !@_resource_refs || !@_resource_refs[ref] || !@_resource_refs[ref].key?(origin)
|
126
|
-
end
|
124
|
+
return !origin || !@_resource_refs || !@_resource_refs[ref] || !@_resource_refs[ref].key?(origin) if @Resources.key?(ref)
|
127
125
|
|
128
126
|
false
|
129
127
|
end
|
data/lib/cfndsl/patches.rb
CHANGED
data/lib/cfndsl/specification.rb
CHANGED
@@ -2,7 +2,7 @@ module CfnDsl
|
|
2
2
|
# Helper module for bridging the gap between a static types file included in the repo
|
3
3
|
# and dynamically generating the types directly from the AWS specification
|
4
4
|
module Specification
|
5
|
-
# rubocop:disable Metrics/
|
5
|
+
# rubocop:disable Metrics/AbcSize, Metrics/PerceivedComplexity
|
6
6
|
def self.extract_resources(spec)
|
7
7
|
spec.each_with_object({}) do |(resource_name, resource_info), resources|
|
8
8
|
properties = resource_info['Properties'].each_with_object({}) do |(property_name, property_info), extracted|
|
@@ -36,7 +36,9 @@ module CfnDsl
|
|
36
36
|
resources
|
37
37
|
end
|
38
38
|
end
|
39
|
+
# rubocop:enable Metrics/AbcSize, Metrics/PerceivedComplexity
|
39
40
|
|
41
|
+
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/PerceivedComplexity
|
40
42
|
def self.extract_types(spec)
|
41
43
|
primitive_types = {
|
42
44
|
'String' => 'String',
|
@@ -78,10 +80,11 @@ module CfnDsl
|
|
78
80
|
types
|
79
81
|
end
|
80
82
|
end
|
83
|
+
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize, Metrics/PerceivedComplexity
|
81
84
|
|
82
85
|
def self.determine_spec_file
|
83
86
|
return CfnDsl.specification_file if File.exist? CfnDsl.specification_file
|
84
|
-
File.expand_path('
|
87
|
+
File.expand_path('aws/resource_specification.json', __dir__)
|
85
88
|
end
|
86
89
|
|
87
90
|
def self.extract_from_resource_spec!
|
data/lib/cfndsl/version.rb
CHANGED
data/lib/deep_merge/core.rb
CHANGED
@@ -146,9 +146,7 @@ module DeepMerge
|
|
146
146
|
if array_split_char
|
147
147
|
puts "#{di} split/join on source: #{source.inspect}" if merge_debug
|
148
148
|
source = source.join(array_split_char).split(array_split_char)
|
149
|
-
if dest.is_a?(Array)
|
150
|
-
dest = dest.join(array_split_char).split(array_split_char)
|
151
|
-
end
|
149
|
+
dest = dest.join(array_split_char).split(array_split_char) if dest.is_a?(Array)
|
152
150
|
end
|
153
151
|
# if there's a naked knockout_prefix in source, that means we are to truncate dest
|
154
152
|
if knockout_prefix && source.index(knockout_prefix)
|
@@ -242,3 +240,5 @@ module DeepMerge
|
|
242
240
|
obj
|
243
241
|
end
|
244
242
|
end
|
243
|
+
# rubocop:enable Metrics/AbcSize, Metrics/BlockNesting, Metrics/CyclomaticComplexity, Metrics/MethodLength
|
244
|
+
# rubocop:enable Metrics/ModuleLength, Metrics/PerceivedComplexity, Style/IfInsideElse, Style/Semicolon
|
data/spec/cfndsl_spec.rb
CHANGED
@@ -248,5 +248,12 @@ describe CfnDsl::CloudFormationTemplate do
|
|
248
248
|
expect(func.to_json).to eq('{"Fn::Join":["",["123",{"Ref":"Test"},"456"]]}')
|
249
249
|
end
|
250
250
|
end
|
251
|
+
|
252
|
+
context 'FnCidr', 'Array' do
|
253
|
+
it 'formats correctly' do
|
254
|
+
func = subject.FnCidr('10.0.0.0', '256', '8')
|
255
|
+
expect(func.to_json).to eq('{"Fn::Cidr":["10.0.0.0","256","8"]}')
|
256
|
+
end
|
257
|
+
end
|
251
258
|
end
|
252
259
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -10,12 +10,12 @@ if ENV['CFNDSL_COV']
|
|
10
10
|
end
|
11
11
|
|
12
12
|
require 'cfndsl/globals'
|
13
|
-
CfnDsl.specification_file File.expand_path('
|
13
|
+
CfnDsl.specification_file File.expand_path('../lib/cfndsl/aws/resource_specification.json', __dir__)
|
14
14
|
# use local fixture for tests
|
15
15
|
require 'cfndsl'
|
16
16
|
require 'cfnlego'
|
17
17
|
|
18
|
-
bindir = File.expand_path('
|
18
|
+
bindir = File.expand_path('../bin', __dir__)
|
19
19
|
ENV['PATH'] = [ENV['PATH'], bindir].join(':')
|
20
20
|
|
21
|
-
Dir[File.expand_path('
|
21
|
+
Dir[File.expand_path('support/**/*.rb', __dir__)].each { |f| require f }
|
@@ -3,8 +3,8 @@ require 'spec_helper'
|
|
3
3
|
# This is a somewhat temporary test class to compare functionality
|
4
4
|
# between the AWS, OS and new ways of defining types
|
5
5
|
RSpec.describe 'Type Definitions' do
|
6
|
-
aws_spec = YAML.load_file File.expand_path('
|
7
|
-
os_spec = YAML.load_file File.expand_path('
|
6
|
+
aws_spec = YAML.load_file File.expand_path('../lib/cfndsl/aws/types.yaml', __dir__)
|
7
|
+
os_spec = YAML.load_file File.expand_path('../lib/cfndsl/os/types.yaml', __dir__)
|
8
8
|
new_spec = CfnDsl::Specification.extract_from_resource_spec!
|
9
9
|
|
10
10
|
{ 'AWS' => aws_spec, 'OS' => os_spec, 'New' => new_spec }.each_pair do |cloud, specdef|
|
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.16.
|
4
|
+
version: 0.16.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steven Jack
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2018-03-19 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|
@@ -150,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
150
|
version: '0'
|
151
151
|
requirements: []
|
152
152
|
rubyforge_project:
|
153
|
-
rubygems_version: 2.7.
|
153
|
+
rubygems_version: 2.7.6
|
154
154
|
signing_key:
|
155
155
|
specification_version: 4
|
156
156
|
summary: AWS Cloudformation DSL
|