cfndsl 0.17.1 → 0.17.2

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: d9249a9d31e7834cc88e725fefd07df25c4a4a59dfcb8c9a5e68924fa19443bb
4
- data.tar.gz: c74e4fbd7a36fbdf7e09a1aa10b6e327e6656b999b920537045d6717ae176108
3
+ metadata.gz: d08e50970be94f664f6e4775cb3367c51a16e8702e6ff023e632b69bd9802ab6
4
+ data.tar.gz: dc2ed8885d37cc044293a3cc1aa4ee4139a237042bc5722d2f07c78aecba584d
5
5
  SHA512:
6
- metadata.gz: e169d2badcba3d0ed23f38111ad0d4ffb44a0672c686ee3929fef8bfbda3305e38f920cfccda851e2ddaa3c35f3343cc2ef725ccd98e286d5cb5ed511c35d0db
7
- data.tar.gz: 90391665c122cb7c9d8d79243af6cc4ca17303b701b095149a06cf93d91e0271282a820417db46418b714c78c109705314cae89d6172e7ba151c0209c219f63a
6
+ metadata.gz: 345a8c5bca051ecd484118cbb6ccbb862de0dceac2a9abbf5d314ca288741cd920be05fbe0a76b2331639a03f6e97bc48e2896ca0f3f6b7dc349e5ee862f4934
7
+ data.tar.gz: ae7442508593ec6bb3cd0957cd3656f6782e31d1487292c5a37bdd703b83aea3c4751b5a5470b630abfc2295b5c181415da5c3066986f772f49851c1b3c957fd
data/.travis.yml CHANGED
@@ -2,11 +2,10 @@ language: ruby
2
2
  rvm:
3
3
  - 2.3.3
4
4
  sudo: false
5
-
6
5
  deploy:
7
6
  provider: rubygems
8
7
  api_key:
9
- secure: AH+4R+m6U0kmALFYAYEQl2oF/dj1yOnu/M1ZOtWttk+Zjwnw6kFc0hFLbvxdy6uivq1XmMXVa9eXzDPsRjW4ow2g+UuDLxvkvfT45SMmJ5sYQpoiD7AIJnEvMu6TXnmfiRNgM5bHnV3oilNJ8KKCbCFCd+imGRLTkBuhLkhkejA=
8
+ secure: cIDF27JCirxxg7SXw6R+xxABMwCrrirJiJzljVxb/MdlRyUVaSW8XdZjOVyNgJkCx+vQOX4U+hp+p0xVI/Loh4EXkgbDvu2oGIAn/g1lfWabwKtdkFEviQn4tWvqDcEkxm5Hm6Gs0pFCaurqynMPNbsLVAEIiSw+la8LxEeeQ6I=
10
9
  gem: cfndsl
11
10
  on:
12
11
  tags: true
@@ -14,7 +13,7 @@ deploy:
14
13
  notifications:
15
14
  email:
16
15
  recipients:
17
- - dempsey.travis@gmail.com
18
- - gergnz@gmail.com
16
+ - dempsey.travis@gmail.com
17
+ - gergnz@gmail.com
19
18
  on_failure: change
20
19
  on_success: never
data/CHANGELOG.md CHANGED
@@ -1,7 +1,24 @@
1
1
  # Change Log
2
2
 
3
- ## [0.17.1](https://github.com/cfndsl/cfndsl/tree/0.17.1) (2019-09-02)
4
- [Full Changelog](https://github.com/cfndsl/cfndsl/compare/v0.17.0...0.17.1)
3
+ ## [0.17.2](https://github.com/cfndsl/cfndsl/tree/0.17.2) (2019-09-05)
4
+ [Full Changelog](https://github.com/cfndsl/cfndsl/compare/v0.17.1...0.17.2)
5
+
6
+ **Fixed bugs:**
7
+
8
+ - update rubygems api key [\#416](https://github.com/cfndsl/cfndsl/pull/416) ([gergnz](https://github.com/gergnz))
9
+
10
+ **Closed issues:**
11
+
12
+ - Support for cross-parameter validation rules [\#414](https://github.com/cfndsl/cfndsl/issues/414)
13
+ - Missing patch for Tag support in AWS::IAM::Role and AWS::Serverless::Function [\#412](https://github.com/cfndsl/cfndsl/issues/412)
14
+ - Access to rubygems [\#391](https://github.com/cfndsl/cfndsl/issues/391)
15
+
16
+ **Merged pull requests:**
17
+
18
+ - Added Rules support for cross-parameter validation [\#417](https://github.com/cfndsl/cfndsl/pull/417) ([cmaxwellau](https://github.com/cmaxwellau))
19
+
20
+ ## [v0.17.1](https://github.com/cfndsl/cfndsl/tree/v0.17.1) (2019-09-01)
21
+ [Full Changelog](https://github.com/cfndsl/cfndsl/compare/v0.17.0...v0.17.1)
5
22
 
6
23
  **Fixed bugs:**
7
24
 
@@ -327,6 +344,7 @@
327
344
  **Merged pull requests:**
328
345
 
329
346
  - Update AWS::CloudWatch::Alarm with 2 new properties [\#312](https://github.com/cfndsl/cfndsl/pull/312) ([AnominousSign](https://github.com/AnominousSign))
347
+ - Add support for AWS::KMS::Alias [\#265](https://github.com/cfndsl/cfndsl/pull/265) ([mikechau](https://github.com/mikechau))
330
348
 
331
349
  ## [v0.12.8](https://github.com/cfndsl/cfndsl/tree/v0.12.8) (2017-05-03)
332
350
  [Full Changelog](https://github.com/cfndsl/cfndsl/compare/v0.12.7...v0.12.8)
@@ -483,7 +501,6 @@
483
501
 
484
502
  - Certificate manager type [\#267](https://github.com/cfndsl/cfndsl/pull/267) ([kornypoet](https://github.com/kornypoet))
485
503
  - Add monitoring properties to AWS::RDS::DBInstance [\#266](https://github.com/cfndsl/cfndsl/pull/266) ([mikechau](https://github.com/mikechau))
486
- - Add support for AWS::KMS::Alias [\#265](https://github.com/cfndsl/cfndsl/pull/265) ([mikechau](https://github.com/mikechau))
487
504
 
488
505
  ## [v0.11.6](https://github.com/cfndsl/cfndsl/tree/v0.11.6) (2016-10-23)
489
506
  [Full Changelog](https://github.com/cfndsl/cfndsl/compare/v0.11.5...v0.11.6)
data/lib/cfndsl.rb CHANGED
@@ -15,6 +15,7 @@ require 'cfndsl/creation_policy'
15
15
  require 'cfndsl/conditions'
16
16
  require 'cfndsl/mappings'
17
17
  require 'cfndsl/resources'
18
+ require 'cfndsl/rules'
18
19
  require 'cfndsl/parameters'
19
20
  require 'cfndsl/outputs'
20
21
  require 'cfndsl/patches'
@@ -27,6 +27,6 @@ module CfnDsl
27
27
  end
28
28
 
29
29
  def reserved_items
30
- %w[Resource Parameter Output].freeze
30
+ %w[Resource Rule Parameter Output].freeze
31
31
  end
32
32
  end
@@ -11,7 +11,7 @@ module CfnDsl
11
11
  # rubocop:disable Metrics/ClassLength
12
12
  class OrchestrationTemplate < JSONable
13
13
  dsl_attr_setter :AWSTemplateFormatVersion, :Description, :Metadata, :Transform
14
- dsl_content_object :Condition, :Parameter, :Output, :Resource, :Mapping
14
+ dsl_content_object :Condition, :Parameter, :Output, :Resource, :Mapping, :Rule
15
15
 
16
16
  GLOBAL_REFS = {
17
17
  'AWS::NotificationARNs' => 1,
@@ -132,7 +132,7 @@ module CfnDsl
132
132
  # rubocop:enable Metrics/PerceivedComplexity
133
133
 
134
134
  def check_refs
135
- invalids = check_resource_refs + check_output_refs
135
+ invalids = check_resource_refs + check_output_refs + check_rule_refs
136
136
  invalids unless invalids.empty?
137
137
  end
138
138
 
@@ -167,6 +167,22 @@ module CfnDsl
167
167
  end
168
168
  invalids
169
169
  end
170
+
171
+ def check_rule_refs
172
+ invalids = []
173
+ @_rule_refs = {}
174
+ if @Rules
175
+ @Rules.each_key do |rule|
176
+ @_rule_refs[resource.to_s] = @Rules[rule].build_references({})
177
+ end
178
+ @_rule_refs.each_key do |origin|
179
+ @_rule_refs[origin].each_key do |ref|
180
+ invalids.push "Invalid Reference: Rule #{origin} refers to #{ref}" unless valid_ref?(ref, origin)
181
+ end
182
+ end
183
+ end
184
+ invalids
185
+ end
170
186
  end
171
187
  # rubocop:enable Metrics/ClassLength
172
188
  end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'cfndsl/jsonable'
4
+
5
+ module CfnDsl
6
+ # Handles Rule objects
7
+ class RuleDefinition < JSONable
8
+ dsl_attr_setter :RuleCondition, :Assertions
9
+
10
+ def initialize
11
+ @Assertions = []
12
+ end
13
+
14
+ def Assert(desc, struct)
15
+ @Assertions.push('Assert' => struct, 'AssertDescription' => desc)
16
+ end
17
+
18
+ def FnContains(list_of_strings, string)
19
+ Fn.new('Contains', [list_of_strings, string])
20
+ end
21
+
22
+ def FnEachMemberEquals(list_of_strings, string)
23
+ Fn.new('EachMemberEquals', [list_of_strings, string])
24
+ end
25
+
26
+ def FnEachMemberIn(strings_to_check, strings_to_match)
27
+ Fn.new('EachMemberIn', [strings_to_check, strings_to_match])
28
+ end
29
+
30
+ def FnRefAll(parameter_type)
31
+ Fn.new('RefAll', parameter_type)
32
+ end
33
+
34
+ def FnValueOf(parameter_logical_id, attribute)
35
+ raise 'Cannot use functions within FnValueOf' unless parameter_logical_id.is_a?(String) && attribute.is_a?(String)
36
+
37
+ Fn.new('ValueOf', [parameter_logical_id, attribute])
38
+ end
39
+
40
+ def FnValueOfAll(parameter_logical_id, attribute)
41
+ raise 'Cannot use functions within FnValueOfAll' unless parameter_logical_id.is_a?(String) && attribute.is_a?(String)
42
+
43
+ Fn.new('ValueOfAll', [parameter_logical_id, attribute])
44
+ end
45
+ end
46
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CfnDsl
4
- VERSION = '0.17.1'
4
+ VERSION = '0.17.2'
5
5
  end
@@ -0,0 +1 @@
1
+ {"Assertions":[{"Assert":{"Fn::EachMemberIn":[{"Fn::ValueOfAll":["a","b"]},{"Fn::RefAll":"c"}]},"AssertDescription":"x"}],"RuleCondition":{"Fn::Equals":[{"Ref":"y"},"z"]}}
data/spec/rule_spec.rb ADDED
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe CfnDsl::OutputDefinition do
6
+ let(:template) { CfnDsl::OrchestrationTemplate.new }
7
+ let(:target) { File.read("#{File.dirname(__FILE__)}/fixtures/rule-assertion.json") }
8
+ context '#Assert' do
9
+ it 'formats correctly' do
10
+ output = template.Rule(:testRule) do
11
+ Assert('x', FnEachMemberIn(FnValueOfAll('a', 'b'), FnRefAll('c')))
12
+ RuleCondition FnEquals(Ref('y'), 'z')
13
+ end
14
+ expect(output.to_json).to eq(target)
15
+ end
16
+ end
17
+ end
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.17.1
4
+ version: 0.17.2
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: 2019-09-01 00:00:00.000000000 Z
14
+ date: 2019-09-05 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
@@ -75,6 +75,7 @@ files:
75
75
  - lib/cfndsl/rake_task.rb
76
76
  - lib/cfndsl/ref_check.rb
77
77
  - lib/cfndsl/resources.rb
78
+ - lib/cfndsl/rules.rb
78
79
  - lib/cfndsl/specification.rb
79
80
  - lib/cfndsl/types.rb
80
81
  - lib/cfndsl/update_policy.rb
@@ -115,6 +116,7 @@ files:
115
116
  - spec/deep_merge_spec.rb
116
117
  - spec/external_parameters_spec.rb
117
118
  - spec/fixtures/heattest.rb
119
+ - spec/fixtures/rule-assertion.json
118
120
  - spec/fixtures/serverless-api.json
119
121
  - spec/fixtures/serverless-function.json
120
122
  - spec/fixtures/test.rb
@@ -126,6 +128,7 @@ files:
126
128
  - spec/output_spec.rb
127
129
  - spec/plurals_spec.rb
128
130
  - spec/resources_spec.rb
131
+ - spec/rule_spec.rb
129
132
  - spec/spec_helper.rb
130
133
  - spec/support/shared_examples/orchestration_template.rb
131
134
  - spec/transform_spec.rb
@@ -170,6 +173,7 @@ test_files:
170
173
  - spec/deep_merge_spec.rb
171
174
  - spec/external_parameters_spec.rb
172
175
  - spec/fixtures/heattest.rb
176
+ - spec/fixtures/rule-assertion.json
173
177
  - spec/fixtures/serverless-api.json
174
178
  - spec/fixtures/serverless-function.json
175
179
  - spec/fixtures/test.rb
@@ -181,6 +185,7 @@ test_files:
181
185
  - spec/output_spec.rb
182
186
  - spec/plurals_spec.rb
183
187
  - spec/resources_spec.rb
188
+ - spec/rule_spec.rb
184
189
  - spec/spec_helper.rb
185
190
  - spec/support/shared_examples/orchestration_template.rb
186
191
  - spec/transform_spec.rb