cfn-model 0.6.5 → 0.6.8
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/lib/cfn-model/model/cfn_model.rb +3 -2
- data/lib/cfn-model/parser/cfn_parser.rb +5 -2
- data/lib/cfn-model/parser/parameter_substitution.rb +1 -1
- data/lib/cfn-model/validator/cloudformation_validator.rb +1 -1
- data/lib/cfn-model/validator/resource_type_validator.rb +1 -1
- data/lib/cfn-model/validator/schema_generator.rb +2 -2
- metadata +14 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 172517e2e8a7b2806737ca0075e8ea4eb0c1032b437956f4d9e0631decc0915f
|
4
|
+
data.tar.gz: 39c9ec8fa931f309cf07d70298be30a0fa25444e2d4785ee295e90da539656b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f9c56d1c4ca8fda37efe1c459239a15b1a62ccd22aa233955c94f85ac918db6d2d0d5ced0e37578c0549da2ebd502296935702cd8cfbadef2ed01c28eff0ced
|
7
|
+
data.tar.gz: 745cfa7e2eea93b915ed17ffd06abe3621de48b2752b8b09900ff5e4099efd067b25fdf4528276dbe86105a2c9da27695ebbe49902a56139e586ae716783a3b3
|
@@ -3,10 +3,10 @@
|
|
3
3
|
require_relative 'references'
|
4
4
|
|
5
5
|
class CfnModel
|
6
|
-
attr_reader :resources, :parameters, :line_numbers, :conditions, :globals, :mappings
|
6
|
+
attr_reader :resources, :parameters, :line_numbers, :conditions, :globals, :mappings, :element_types
|
7
7
|
|
8
8
|
##
|
9
|
-
# if you really want it, here it is - the raw Hash from YAML.
|
9
|
+
# if you really want it, here it is - the raw Hash from YAML.safe_load. you'll have to mess with structural nits of
|
10
10
|
# CloudFormation and deal with variations between yaml/json refs and all that
|
11
11
|
#
|
12
12
|
attr_accessor :raw_model
|
@@ -19,6 +19,7 @@ class CfnModel
|
|
19
19
|
@mappings = {}
|
20
20
|
@raw_model = nil
|
21
21
|
@line_numbers = {}
|
22
|
+
@element_types = {}
|
22
23
|
end
|
23
24
|
|
24
25
|
##
|
@@ -65,7 +65,7 @@ class CfnParser
|
|
65
65
|
if with_line_numbers
|
66
66
|
parse_with_line_numbers(cloudformation_yml)
|
67
67
|
else
|
68
|
-
YAML.
|
68
|
+
YAML.safe_load cloudformation_yml, permitted_classes: [Date]
|
69
69
|
end
|
70
70
|
|
71
71
|
# Transform raw resources in template as performed by
|
@@ -110,7 +110,7 @@ class CfnParser
|
|
110
110
|
if condition_values_json.nil?
|
111
111
|
condition_values = {}
|
112
112
|
else
|
113
|
-
condition_values = JSON.
|
113
|
+
condition_values = JSON.parse condition_values_json
|
114
114
|
end
|
115
115
|
|
116
116
|
cfn_hash['Conditions'].each do |condition_key, _|
|
@@ -156,6 +156,7 @@ class CfnParser
|
|
156
156
|
assign_fields_based_upon_properties resource_object, resource, cfn_model
|
157
157
|
|
158
158
|
cfn_model.resources[resource_name] = resource_object
|
159
|
+
cfn_model.element_types[resource_name] = "resource"
|
159
160
|
end
|
160
161
|
cfn_model
|
161
162
|
end
|
@@ -173,6 +174,7 @@ class CfnParser
|
|
173
174
|
|
174
175
|
cfn_model.resources[resource_name] = resource_object
|
175
176
|
cfn_model.line_numbers[resource_name] = resource['Type']['line']
|
177
|
+
cfn_model.element_types[resource_name] = "resource"
|
176
178
|
end
|
177
179
|
cfn_model
|
178
180
|
end
|
@@ -193,6 +195,7 @@ class CfnParser
|
|
193
195
|
|
194
196
|
cfn_model.parameters[parameter_name] = parameter
|
195
197
|
cfn_model.line_numbers[parameter_name] = parameter_hash['Type']['line']
|
198
|
+
cfn_model.element_types[parameter_name] = "parameter"
|
196
199
|
end
|
197
200
|
cfn_model
|
198
201
|
end
|
@@ -9,7 +9,7 @@ class ParameterSubstitution
|
|
9
9
|
|
10
10
|
def apply_parameter_values(cfn_model, parameter_values_json)
|
11
11
|
unless parameter_values_json.nil?
|
12
|
-
parameter_values = JSON.
|
12
|
+
parameter_values = JSON.parse parameter_values_json
|
13
13
|
if is_aws_format?(parameter_values)
|
14
14
|
parameter_values = convert_aws_to_legacy_format(parameter_values)
|
15
15
|
elsif !is_legacy_format?(parameter_values)
|
@@ -12,7 +12,7 @@ class CloudFormationValidator
|
|
12
12
|
|
13
13
|
schema = SchemaGenerator.new.generate cloudformation_string
|
14
14
|
validator = Kwalify::Validator.new(schema)
|
15
|
-
validator.validate(YAML.
|
15
|
+
validator.validate(YAML.safe_load(cloudformation_string, permitted_classes: [Date]))
|
16
16
|
rescue ArgumentError, IOError, NameError => e
|
17
17
|
raise ParserError, e.inspect
|
18
18
|
end
|
@@ -5,7 +5,7 @@ require 'cfn-model/parser/parser_error'
|
|
5
5
|
class ResourceTypeValidator
|
6
6
|
|
7
7
|
def self.validate(cloudformation_yml)
|
8
|
-
hash = YAML.
|
8
|
+
hash = YAML.safe_load cloudformation_yml, permitted_classes: [Date]
|
9
9
|
if hash == false || hash.nil?
|
10
10
|
raise ParserError.new 'yml empty'
|
11
11
|
end
|
@@ -19,7 +19,7 @@ class SchemaGenerator
|
|
19
19
|
parameters_schema = generate_schema_for_parameter_keys cloudformation_hash
|
20
20
|
resources_schema = generate_schema_for_resource_keys cloudformation_hash
|
21
21
|
|
22
|
-
main_schema = YAML.
|
22
|
+
main_schema = YAML.safe_load IO.read(schema_file('schema.yml.erb'))
|
23
23
|
if parameters_schema.empty?
|
24
24
|
main_schema['mapping'].delete 'Parameters'
|
25
25
|
else
|
@@ -82,7 +82,7 @@ class SchemaGenerator
|
|
82
82
|
if !File.exist? schema_file_path
|
83
83
|
nil
|
84
84
|
else
|
85
|
-
YAML.
|
85
|
+
YAML.safe_load IO.read(schema_file_path)
|
86
86
|
end
|
87
87
|
end
|
88
88
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cfn-model
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Kascic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-06-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -84,16 +84,22 @@ dependencies:
|
|
84
84
|
name: psych
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.1'
|
90
|
+
- - "<"
|
88
91
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
92
|
+
version: '5'
|
90
93
|
type: :runtime
|
91
94
|
prerelease: false
|
92
95
|
version_requirements: !ruby/object:Gem::Requirement
|
93
96
|
requirements:
|
94
|
-
- - "
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '3.1'
|
100
|
+
- - "<"
|
95
101
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
102
|
+
version: '5'
|
97
103
|
description: An object model for CloudFormation templates
|
98
104
|
email:
|
99
105
|
executables:
|
@@ -193,9 +199,9 @@ licenses:
|
|
193
199
|
metadata:
|
194
200
|
bug_tracker_uri: https://github.com/stelligent/cfn-model/issues
|
195
201
|
changelog_uri: https://github.com/stelligent/cfn-model/releases
|
196
|
-
documentation_uri: https://www.rubydoc.info/gems/cfn-model/0.6.
|
202
|
+
documentation_uri: https://www.rubydoc.info/gems/cfn-model/0.6.8
|
197
203
|
homepage_uri: https://github.com/stelligent/cfn-model
|
198
|
-
source_code_uri: https://github.com/stelligent/cfn-model/tree/v0.6.
|
204
|
+
source_code_uri: https://github.com/stelligent/cfn-model/tree/v0.6.8
|
199
205
|
post_install_message:
|
200
206
|
rdoc_options: []
|
201
207
|
require_paths:
|