stack_master 0.17.0 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
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