stack_master 0.17.0 → 0.18.0

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.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +7 -5
  3. data/README.md +15 -0
  4. data/features/apply.feature +0 -1
  5. data/features/apply_with_compile_time_parameters.feature +93 -0
  6. data/lib/stack_master/parameter_loader.rb +41 -12
  7. data/lib/stack_master/sparkle_formation/compile_time/allowed_pattern_validator.rb +35 -0
  8. data/lib/stack_master/sparkle_formation/compile_time/allowed_values_validator.rb +37 -0
  9. data/lib/stack_master/sparkle_formation/compile_time/definitions_validator.rb +33 -0
  10. data/lib/stack_master/sparkle_formation/compile_time/empty_validator.rb +32 -0
  11. data/lib/stack_master/sparkle_formation/compile_time/max_length_validator.rb +36 -0
  12. data/lib/stack_master/sparkle_formation/compile_time/max_size_validator.rb +36 -0
  13. data/lib/stack_master/sparkle_formation/compile_time/min_length_validator.rb +36 -0
  14. data/lib/stack_master/sparkle_formation/compile_time/min_size_validator.rb +36 -0
  15. data/lib/stack_master/sparkle_formation/compile_time/number_validator.rb +35 -0
  16. data/lib/stack_master/sparkle_formation/compile_time/parameters_validator.rb +27 -0
  17. data/lib/stack_master/sparkle_formation/compile_time/state_builder.rb +32 -0
  18. data/lib/stack_master/sparkle_formation/compile_time/string_validator.rb +33 -0
  19. data/lib/stack_master/sparkle_formation/compile_time/value_builder.rb +40 -0
  20. data/lib/stack_master/sparkle_formation/compile_time/value_validator.rb +40 -0
  21. data/lib/stack_master/sparkle_formation/compile_time/value_validator_factory.rb +41 -0
  22. data/lib/stack_master/stack.rb +4 -3
  23. data/lib/stack_master/template_compiler.rb +2 -2
  24. data/lib/stack_master/template_compilers/cfndsl.rb +1 -1
  25. data/lib/stack_master/template_compilers/json.rb +1 -1
  26. data/lib/stack_master/template_compilers/sparkle_formation.rb +33 -4
  27. data/lib/stack_master/template_compilers/yaml.rb +1 -1
  28. data/lib/stack_master/validator.rb +4 -1
  29. data/lib/stack_master/version.rb +1 -1
  30. data/spec/spec_helper.rb +3 -0
  31. data/spec/stack_master/parameter_loader_spec.rb +65 -53
  32. data/spec/stack_master/sparkle_formation/compile_time/allowed_pattern_validator_spec.rb +47 -0
  33. data/spec/stack_master/sparkle_formation/compile_time/allowed_values_validator_spec.rb +47 -0
  34. data/spec/stack_master/sparkle_formation/compile_time/definitions_validator_spec.rb +36 -0
  35. data/spec/stack_master/sparkle_formation/compile_time/empty_validator_spec.rb +47 -0
  36. data/spec/stack_master/sparkle_formation/compile_time/max_length_validator_spec.rb +37 -0
  37. data/spec/stack_master/sparkle_formation/compile_time/max_size_validator_spec.rb +27 -0
  38. data/spec/stack_master/sparkle_formation/compile_time/min_length_validator_spec.rb +36 -0
  39. data/spec/stack_master/sparkle_formation/compile_time/min_size_validator_spec.rb +28 -0
  40. data/spec/stack_master/sparkle_formation/compile_time/number_validator_spec.rb +41 -0
  41. data/spec/stack_master/sparkle_formation/compile_time/parameters_validator_spec.rb +65 -0
  42. data/spec/stack_master/sparkle_formation/compile_time/state_builder_spec.rb +28 -0
  43. data/spec/stack_master/sparkle_formation/compile_time/string_validator_spec.rb +35 -0
  44. data/spec/stack_master/sparkle_formation/compile_time/value_build_spec.rb +52 -0
  45. data/spec/stack_master/sparkle_formation/compile_time/value_validator_factory_spec.rb +40 -0
  46. data/spec/stack_master/stack_spec.rb +15 -13
  47. data/spec/stack_master/template_compiler_spec.rb +7 -6
  48. data/spec/stack_master/template_compilers/cfndsl_spec.rb +4 -1
  49. data/spec/stack_master/template_compilers/json_spec.rb +4 -1
  50. data/spec/stack_master/template_compilers/sparkle_formation_spec.rb +53 -9
  51. data/spec/stack_master/template_compilers/yaml_spec.rb +4 -1
  52. data/spec/stack_master/validator_spec.rb +10 -6
  53. data/spec/support/gemfiles/Gemfile.activesupport-4.0.0 +5 -0
  54. data/spec/support/validator_spec.rb +23 -0
  55. data/stack_master.gemspec +1 -1
  56. metadata +55 -6
@@ -1,7 +1,10 @@
1
1
  RSpec.describe StackMaster::TemplateCompilers::Yaml do
2
2
  describe '.compile' do
3
+
4
+ let(:compile_time_parameters) { {'InstanceType' => 't2.medium'} }
5
+
3
6
  def compile
4
- described_class.compile(template_file_path)
7
+ described_class.compile(template_file_path, compile_time_parameters)
5
8
  end
6
9
 
7
10
  context 'valid YAML template' do
@@ -5,16 +5,20 @@ RSpec.describe StackMaster::Validator do
5
5
  let(:stack_name) { 'myapp_vpc' }
6
6
  let(:stack_definition) do
7
7
  StackMaster::StackDefinition.new(
8
- region: 'us-east-1',
9
- stack_name: stack_name,
10
- template: 'myapp_vpc.json',
11
- tags: { 'environment' => 'production' },
12
- base_dir: File.expand_path('spec/fixtures'),
8
+ region: 'us-east-1',
9
+ stack_name: stack_name,
10
+ template: 'myapp_vpc.json',
11
+ tags: {'environment' => 'production'},
12
+ base_dir: File.expand_path('spec/fixtures'),
13
13
  )
14
14
  end
15
15
  let(:cf) { Aws::CloudFormation::Client.new(region: "us-east-1") }
16
+ let(:parameter_hash) { {template_parameters: {}, compile_time_parameters: {'DbPassword' => {'secret' => 'db_password'}}} }
17
+ let(:resolved_parameters) { {'DbPassword' => 'sdfgjkdhlfjkghdflkjghdflkjg', 'InstanceType' => 't2.medium'} }
16
18
  before do
17
19
  allow(Aws::CloudFormation::Client).to receive(:new).and_return cf
20
+ allow(StackMaster::ParameterLoader).to receive(:load).and_return(parameter_hash)
21
+ allow(StackMaster::ParameterResolver).to receive(:resolve).and_return(resolved_parameters)
18
22
  end
19
23
 
20
24
  describe "#perform" do
@@ -48,5 +52,5 @@ RSpec.describe StackMaster::Validator do
48
52
  end
49
53
  end
50
54
  end
51
-
55
+
52
56
  end
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec :path => '../../../'
4
+
5
+ gem 'activesupport', '4.0.0'
@@ -0,0 +1,23 @@
1
+ def validate_valid_parameter(parameter)
2
+ context "with parameter #{parameter}" do
3
+ subject { described_class.new('name', definition, parameter).tap { |validator| validator.validate } }
4
+
5
+ it 'is valid' do
6
+ expect(subject.is_valid).to be_truthy
7
+ end
8
+ end
9
+ end
10
+
11
+ def validate_invalid_parameter(parameter, errors)
12
+ context "with parameter #{parameter}" do
13
+ subject { described_class.new(name, definition, parameter).tap { |validator| validator.validate } }
14
+
15
+ it 'is not valid' do
16
+ expect(subject.is_valid).to be_falsey
17
+ end
18
+
19
+ it 'has an error' do
20
+ expect(subject.error).to eql error_message.call(errors, definition)
21
+ end
22
+ end
23
+ end
data/stack_master.gemspec CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
32
32
  spec.add_dependency "diffy"
33
33
  spec.add_dependency "erubis"
34
34
  spec.add_dependency "colorize"
35
- spec.add_dependency "activesupport", "~> 4.2"
35
+ spec.add_dependency "activesupport", '>= 4'
36
36
  spec.add_dependency "sparkle_formation"
37
37
  spec.add_dependency "table_print"
38
38
  spec.add_dependency "dotgpg"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stack_master
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Hodgkiss
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-08-01 00:00:00.000000000 Z
12
+ date: 2017-10-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -197,16 +197,16 @@ dependencies:
197
197
  name: activesupport
198
198
  requirement: !ruby/object:Gem::Requirement
199
199
  requirements:
200
- - - "~>"
200
+ - - ">="
201
201
  - !ruby/object:Gem::Version
202
- version: '4.2'
202
+ version: '4'
203
203
  type: :runtime
204
204
  prerelease: false
205
205
  version_requirements: !ruby/object:Gem::Requirement
206
206
  requirements:
207
- - - "~>"
207
+ - - ">="
208
208
  - !ruby/object:Gem::Version
209
- version: '4.2'
209
+ version: '4'
210
210
  - !ruby/object:Gem::Dependency
211
211
  name: sparkle_formation
212
212
  requirement: !ruby/object:Gem::Requirement
@@ -302,6 +302,7 @@ files:
302
302
  - example/simple/templates/myapp_vpc.rb
303
303
  - example/simple/templates/myapp_web.rb
304
304
  - features/apply.feature
305
+ - features/apply_with_compile_time_parameters.feature
305
306
  - features/apply_with_s3.feature
306
307
  - features/delete.feature
307
308
  - features/diff.feature
@@ -348,6 +349,21 @@ files:
348
349
  - lib/stack_master/resolver_array.rb
349
350
  - lib/stack_master/security_group_finder.rb
350
351
  - lib/stack_master/sns_topic_finder.rb
352
+ - lib/stack_master/sparkle_formation/compile_time/allowed_pattern_validator.rb
353
+ - lib/stack_master/sparkle_formation/compile_time/allowed_values_validator.rb
354
+ - lib/stack_master/sparkle_formation/compile_time/definitions_validator.rb
355
+ - lib/stack_master/sparkle_formation/compile_time/empty_validator.rb
356
+ - lib/stack_master/sparkle_formation/compile_time/max_length_validator.rb
357
+ - lib/stack_master/sparkle_formation/compile_time/max_size_validator.rb
358
+ - lib/stack_master/sparkle_formation/compile_time/min_length_validator.rb
359
+ - lib/stack_master/sparkle_formation/compile_time/min_size_validator.rb
360
+ - lib/stack_master/sparkle_formation/compile_time/number_validator.rb
361
+ - lib/stack_master/sparkle_formation/compile_time/parameters_validator.rb
362
+ - lib/stack_master/sparkle_formation/compile_time/state_builder.rb
363
+ - lib/stack_master/sparkle_formation/compile_time/string_validator.rb
364
+ - lib/stack_master/sparkle_formation/compile_time/value_builder.rb
365
+ - lib/stack_master/sparkle_formation/compile_time/value_validator.rb
366
+ - lib/stack_master/sparkle_formation/compile_time/value_validator_factory.rb
351
367
  - lib/stack_master/sparkle_formation/template_file.rb
352
368
  - lib/stack_master/stack.rb
353
369
  - lib/stack_master/stack_definition.rb
@@ -407,6 +423,20 @@ files:
407
423
  - spec/stack_master/resolver_array_spec.rb
408
424
  - spec/stack_master/security_group_finder_spec.rb
409
425
  - spec/stack_master/sns_topic_finder_spec.rb
426
+ - spec/stack_master/sparkle_formation/compile_time/allowed_pattern_validator_spec.rb
427
+ - spec/stack_master/sparkle_formation/compile_time/allowed_values_validator_spec.rb
428
+ - spec/stack_master/sparkle_formation/compile_time/definitions_validator_spec.rb
429
+ - spec/stack_master/sparkle_formation/compile_time/empty_validator_spec.rb
430
+ - spec/stack_master/sparkle_formation/compile_time/max_length_validator_spec.rb
431
+ - spec/stack_master/sparkle_formation/compile_time/max_size_validator_spec.rb
432
+ - spec/stack_master/sparkle_formation/compile_time/min_length_validator_spec.rb
433
+ - spec/stack_master/sparkle_formation/compile_time/min_size_validator_spec.rb
434
+ - spec/stack_master/sparkle_formation/compile_time/number_validator_spec.rb
435
+ - spec/stack_master/sparkle_formation/compile_time/parameters_validator_spec.rb
436
+ - spec/stack_master/sparkle_formation/compile_time/state_builder_spec.rb
437
+ - spec/stack_master/sparkle_formation/compile_time/string_validator_spec.rb
438
+ - spec/stack_master/sparkle_formation/compile_time/value_build_spec.rb
439
+ - spec/stack_master/sparkle_formation/compile_time/value_validator_factory_spec.rb
410
440
  - spec/stack_master/sparkle_formation/template_file_spec.rb
411
441
  - spec/stack_master/stack_definition_spec.rb
412
442
  - spec/stack_master/stack_differ_spec.rb
@@ -425,6 +455,8 @@ files:
425
455
  - spec/stack_master/utils_spec.rb
426
456
  - spec/stack_master/validator_spec.rb
427
457
  - spec/stack_master_spec.rb
458
+ - spec/support/gemfiles/Gemfile.activesupport-4.0.0
459
+ - spec/support/validator_spec.rb
428
460
  - stack_master.gemspec
429
461
  - stacktemplates/parameter_region.yml
430
462
  - stacktemplates/parameter_stack_name.yml
@@ -457,6 +489,7 @@ summary: StackMaster is a sure-footed way of creating, updating and keeping trac
457
489
  of Amazon (AWS) CloudFormation stacks.
458
490
  test_files:
459
491
  - features/apply.feature
492
+ - features/apply_with_compile_time_parameters.feature
460
493
  - features/apply_with_s3.feature
461
494
  - features/delete.feature
462
495
  - features/diff.feature
@@ -504,6 +537,20 @@ test_files:
504
537
  - spec/stack_master/resolver_array_spec.rb
505
538
  - spec/stack_master/security_group_finder_spec.rb
506
539
  - spec/stack_master/sns_topic_finder_spec.rb
540
+ - spec/stack_master/sparkle_formation/compile_time/allowed_pattern_validator_spec.rb
541
+ - spec/stack_master/sparkle_formation/compile_time/allowed_values_validator_spec.rb
542
+ - spec/stack_master/sparkle_formation/compile_time/definitions_validator_spec.rb
543
+ - spec/stack_master/sparkle_formation/compile_time/empty_validator_spec.rb
544
+ - spec/stack_master/sparkle_formation/compile_time/max_length_validator_spec.rb
545
+ - spec/stack_master/sparkle_formation/compile_time/max_size_validator_spec.rb
546
+ - spec/stack_master/sparkle_formation/compile_time/min_length_validator_spec.rb
547
+ - spec/stack_master/sparkle_formation/compile_time/min_size_validator_spec.rb
548
+ - spec/stack_master/sparkle_formation/compile_time/number_validator_spec.rb
549
+ - spec/stack_master/sparkle_formation/compile_time/parameters_validator_spec.rb
550
+ - spec/stack_master/sparkle_formation/compile_time/state_builder_spec.rb
551
+ - spec/stack_master/sparkle_formation/compile_time/string_validator_spec.rb
552
+ - spec/stack_master/sparkle_formation/compile_time/value_build_spec.rb
553
+ - spec/stack_master/sparkle_formation/compile_time/value_validator_factory_spec.rb
507
554
  - spec/stack_master/sparkle_formation/template_file_spec.rb
508
555
  - spec/stack_master/stack_definition_spec.rb
509
556
  - spec/stack_master/stack_differ_spec.rb
@@ -522,3 +569,5 @@ test_files:
522
569
  - spec/stack_master/utils_spec.rb
523
570
  - spec/stack_master/validator_spec.rb
524
571
  - spec/stack_master_spec.rb
572
+ - spec/support/gemfiles/Gemfile.activesupport-4.0.0
573
+ - spec/support/validator_spec.rb