stack_master 1.5.0 → 1.6.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 (122) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -0
  3. data/lib/stack_master/commands/terminal_helper.rb +14 -1
  4. data/lib/stack_master/parameter_resolvers/secret.rb +7 -2
  5. data/lib/stack_master/version.rb +1 -1
  6. metadata +21 -216
  7. data/.gitignore +0 -18
  8. data/.rspec +0 -2
  9. data/.travis.yml +0 -12
  10. data/CODE_OF_CONDUCT.md +0 -73
  11. data/Gemfile +0 -4
  12. data/LICENSE.txt +0 -22
  13. data/Rakefile +0 -27
  14. data/apply_demo.gif +0 -0
  15. data/example/simple/Gemfile +0 -3
  16. data/example/simple/parameters/myapp_vpc.yml +0 -1
  17. data/example/simple/parameters/myapp_web.yml +0 -2
  18. data/example/simple/stack_master.yml +0 -13
  19. data/example/simple/templates/myapp_vpc.rb +0 -39
  20. data/example/simple/templates/myapp_web.rb +0 -16
  21. data/features/apply.feature +0 -392
  22. data/features/apply_with_compile_time_parameters.feature +0 -93
  23. data/features/apply_with_env_parameters.feature +0 -49
  24. data/features/apply_with_parameter_store_parameters.feature +0 -47
  25. data/features/apply_with_s3.feature +0 -106
  26. data/features/delete.feature +0 -29
  27. data/features/diff.feature +0 -179
  28. data/features/events.feature +0 -33
  29. data/features/init.feature +0 -6
  30. data/features/outputs.feature +0 -45
  31. data/features/region_aliases.feature +0 -62
  32. data/features/resources.feature +0 -42
  33. data/features/stack_defaults.feature +0 -82
  34. data/features/status.feature +0 -118
  35. data/features/step_definitions/parameter_store_steps.rb +0 -14
  36. data/features/step_definitions/stack_steps.rb +0 -71
  37. data/features/support/env.rb +0 -16
  38. data/features/validate.feature +0 -46
  39. data/logo.png +0 -0
  40. data/script/buildkite/bundle.sh +0 -5
  41. data/script/buildkite/clean.sh +0 -3
  42. data/script/buildkite_rspec.sh +0 -27
  43. data/spec/fixtures/parameters/myapp_vpc.yml +0 -1
  44. data/spec/fixtures/parameters/myapp_vpc_with_secrets.yml +0 -3
  45. data/spec/fixtures/sparkle_pack_integration/my_sparkle_pack/lib/my_sparkle_pack.rb +0 -1
  46. data/spec/fixtures/sparkle_pack_integration/my_sparkle_pack/lib/sparkleformation/dynamics/my_dynamic.rb +0 -5
  47. data/spec/fixtures/sparkle_pack_integration/templates/dynamics/local_dynamic.rb +0 -5
  48. data/spec/fixtures/sparkle_pack_integration/templates/template_with_dynamic.rb +0 -3
  49. data/spec/fixtures/sparkle_pack_integration/templates/template_with_dynamic_from_pack.rb +0 -3
  50. data/spec/fixtures/stack_master.yml +0 -49
  51. data/spec/fixtures/templates/json/valid_myapp_vpc.json +0 -53
  52. data/spec/fixtures/templates/myapp_vpc.json +0 -1
  53. data/spec/fixtures/templates/rb/cfndsl/sample.json +0 -28
  54. data/spec/fixtures/templates/rb/cfndsl/sample.rb +0 -16
  55. data/spec/fixtures/templates/yml/valid_myapp_vpc.yml +0 -35
  56. data/spec/fixtures/test/.gitkeep +0 -0
  57. data/spec/spec_helper.rb +0 -102
  58. data/spec/stack_master/aws_driver/s3_spec.rb +0 -130
  59. data/spec/stack_master/change_set_spec.rb +0 -70
  60. data/spec/stack_master/command_spec.rb +0 -66
  61. data/spec/stack_master/commands/apply_spec.rb +0 -259
  62. data/spec/stack_master/commands/delete_spec.rb +0 -40
  63. data/spec/stack_master/commands/init_spec.rb +0 -17
  64. data/spec/stack_master/commands/status_spec.rb +0 -44
  65. data/spec/stack_master/commands/validate_spec.rb +0 -27
  66. data/spec/stack_master/config_spec.rb +0 -153
  67. data/spec/stack_master/paged_response_accumulator_spec.rb +0 -39
  68. data/spec/stack_master/parameter_loader_spec.rb +0 -110
  69. data/spec/stack_master/parameter_resolver_spec.rb +0 -148
  70. data/spec/stack_master/parameter_resolvers/ami_finder_spec.rb +0 -68
  71. data/spec/stack_master/parameter_resolvers/env_spec.rb +0 -35
  72. data/spec/stack_master/parameter_resolvers/latest_ami_by_tags_spec.rb +0 -33
  73. data/spec/stack_master/parameter_resolvers/latest_ami_spec.rb +0 -46
  74. data/spec/stack_master/parameter_resolvers/parameter_store_spec.rb +0 -50
  75. data/spec/stack_master/parameter_resolvers/secret_spec.rb +0 -66
  76. data/spec/stack_master/parameter_resolvers/security_group_spec.rb +0 -19
  77. data/spec/stack_master/parameter_resolvers/security_groups_spec.rb +0 -32
  78. data/spec/stack_master/parameter_resolvers/sns_topic_name_spec.rb +0 -43
  79. data/spec/stack_master/parameter_resolvers/stack_output_spec.rb +0 -127
  80. data/spec/stack_master/prompter_spec.rb +0 -23
  81. data/spec/stack_master/resolver_array_spec.rb +0 -42
  82. data/spec/stack_master/security_group_finder_spec.rb +0 -49
  83. data/spec/stack_master/sns_topic_finder_spec.rb +0 -25
  84. data/spec/stack_master/sparkle_formation/compile_time/allowed_pattern_validator_spec.rb +0 -47
  85. data/spec/stack_master/sparkle_formation/compile_time/allowed_values_validator_spec.rb +0 -47
  86. data/spec/stack_master/sparkle_formation/compile_time/definitions_validator_spec.rb +0 -36
  87. data/spec/stack_master/sparkle_formation/compile_time/empty_validator_spec.rb +0 -47
  88. data/spec/stack_master/sparkle_formation/compile_time/max_length_validator_spec.rb +0 -37
  89. data/spec/stack_master/sparkle_formation/compile_time/max_size_validator_spec.rb +0 -27
  90. data/spec/stack_master/sparkle_formation/compile_time/min_length_validator_spec.rb +0 -36
  91. data/spec/stack_master/sparkle_formation/compile_time/min_size_validator_spec.rb +0 -28
  92. data/spec/stack_master/sparkle_formation/compile_time/number_validator_spec.rb +0 -41
  93. data/spec/stack_master/sparkle_formation/compile_time/parameters_validator_spec.rb +0 -65
  94. data/spec/stack_master/sparkle_formation/compile_time/state_builder_spec.rb +0 -28
  95. data/spec/stack_master/sparkle_formation/compile_time/string_validator_spec.rb +0 -35
  96. data/spec/stack_master/sparkle_formation/compile_time/value_build_spec.rb +0 -52
  97. data/spec/stack_master/sparkle_formation/compile_time/value_validator_factory_spec.rb +0 -40
  98. data/spec/stack_master/sparkle_formation/template_file_spec.rb +0 -147
  99. data/spec/stack_master/stack_definition_spec.rb +0 -70
  100. data/spec/stack_master/stack_differ_spec.rb +0 -46
  101. data/spec/stack_master/stack_events/fetcher_spec.rb +0 -40
  102. data/spec/stack_master/stack_events/presenter_spec.rb +0 -18
  103. data/spec/stack_master/stack_events/streamer_spec.rb +0 -47
  104. data/spec/stack_master/stack_spec.rb +0 -184
  105. data/spec/stack_master/template_compiler_spec.rb +0 -39
  106. data/spec/stack_master/template_compilers/cfndsl_spec.rb +0 -22
  107. data/spec/stack_master/template_compilers/json_spec.rb +0 -32
  108. data/spec/stack_master/template_compilers/sparkle_formation_spec.rb +0 -116
  109. data/spec/stack_master/template_compilers/yaml_spec.rb +0 -20
  110. data/spec/stack_master/template_utils_spec.rb +0 -21
  111. data/spec/stack_master/test_driver/cloud_formation_spec.rb +0 -64
  112. data/spec/stack_master/test_driver/s3_spec.rb +0 -17
  113. data/spec/stack_master/utils_spec.rb +0 -30
  114. data/spec/stack_master/validator_spec.rb +0 -56
  115. data/spec/stack_master_spec.rb +0 -81
  116. data/spec/support/gemfiles/Gemfile.activesupport-4.0.0 +0 -5
  117. data/spec/support/validator_spec.rb +0 -23
  118. data/stack_master.gemspec +0 -46
  119. data/stacktemplates/parameter_region.yml +0 -3
  120. data/stacktemplates/parameter_stack_name.yml +0 -3
  121. data/stacktemplates/stack.json.erb +0 -20
  122. data/stacktemplates/stack_master.yml.erb +0 -6
@@ -1,93 +0,0 @@
1
- Feature: Apply command with compile time parameters
2
-
3
- Background:
4
- Given a file named "stack_master.yml" with:
5
- """
6
- stacks:
7
- us-east-1:
8
- vpc:
9
- template: vpc.rb
10
- """
11
- And a directory named "parameters"
12
- And a file named "parameters/vpc.yml" with:
13
- """
14
- vpc_cidr: 10.200.2.0/23
15
- compile_time_parameters:
16
- private_subnet_cidrs:
17
- - 10.0.0.0/32:ap-southeast-2
18
- - 10.0.0.2/32:ap-southeast-1
19
- """
20
- And a directory named "templates"
21
- And a file named "templates/vpc.rb" with:
22
- """
23
- SparkleFormation.new(
24
- :vpc,
25
- {
26
- compile_time_parameters: {
27
- private_subnet_cidrs: {
28
- type: :string,
29
- multiple: true
30
- }
31
- }
32
- }
33
- ) do
34
-
35
- parameters.vpc_cidr do
36
- type 'String'
37
- end
38
-
39
- resources.vpc do
40
- type 'AWS::EC2::VPC'
41
- properties do
42
- cidr_block ref!(:vpc_cidr)
43
- end
44
- end
45
-
46
- state!(:private_subnet_cidrs).each_with_index do |item, index|
47
- private_subnet = item.split(':')
48
- private_cidr = private_subnet[0]
49
- private_az = private_subnet[1]
50
- resources.set!("subnet_private_#{index}".to_sym) do
51
- type 'AWS::EC2::Subnet'
52
- properties do
53
- vpc_id ref!(:vpc)
54
- availability_zone private_az
55
- cidr_block private_cidr
56
- end
57
- end
58
- end
59
-
60
- end
61
- """
62
-
63
- Scenario: Run apply and create a new stack
64
- Given I stub the following stack events:
65
- | stack_id | event_id | stack_name | logical_resource_id | resource_status | resource_type | timestamp |
66
- | 1 | 1 | vpc | SubnetPrivate1 | CREATE_COMPLETE | AWS::EC2::Subnet | 2020-10-29 00:00:00 |
67
- | 1 | 1 | vpc | SubnetPrivate0 | CREATE_COMPLETE | AWS::EC2::Subnet | 2020-10-29 00:00:00 |
68
- | 1 | 1 | vpc | Vpc | CREATE_COMPLETE | AWS::EC2::VPC | 2020-10-29 00:00:00 |
69
- | 1 | 1 | vpc | vpc | CREATE_COMPLETE | AWS::CloudFormation::Stack | 2020-10-29 00:00:00 |
70
- When I run `stack_master apply us-east-1 vpc --trace`
71
- And the output should contain all of these lines:
72
- | + "SubnetPrivate0": { |
73
- | + "Type": "AWS::EC2::Subnet", |
74
- | + "Properties": { |
75
- | + "VpcId": { |
76
- | + "Ref": "Vpc" |
77
- | + }, |
78
- | + "AvailabilityZone": "ap-southeast-2", |
79
- | + "CidrBlock": "10.0.0.0/32" |
80
- | + } |
81
- | + }, |
82
- | + "SubnetPrivate1": { |
83
- | + "Type": "AWS::EC2::Subnet", |
84
- | + "Properties": { |
85
- | + "VpcId": { |
86
- | + "Ref": "Vpc" |
87
- | + }, |
88
- | + "AvailabilityZone": "ap-southeast-1", |
89
- | + "CidrBlock": "10.0.0.2/32" |
90
- | + } |
91
- | + } |
92
- And the output should match /2020-10-29 00:00:00 (\+|\-)[0-9]{4} vpc AWS::CloudFormation::Stack CREATE_COMPLETE/
93
- Then the exit status should be 0
@@ -1,49 +0,0 @@
1
- Feature: Apply command with environment parameter
2
-
3
- Background:
4
- Given a file named "stack_master.yml" with:
5
- """
6
- stacks:
7
- us-east-2:
8
- vpc:
9
- template: vpc.rb
10
- """
11
- And a directory named "parameters"
12
- And a file named "parameters/vpc.yml" with:
13
- """
14
- vpc_cidr:
15
- env: VPC_CIDR
16
- """
17
- And a directory named "templates"
18
- And a file named "templates/vpc.rb" with:
19
- """
20
- SparkleFormation.new(:vpc) do
21
-
22
- parameters.vpc_cidr do
23
- type 'String'
24
- end
25
-
26
- resources.vpc do
27
- type 'AWS::EC2::VPC'
28
- properties do
29
- cidr_block ref!(:vpc_cidr)
30
- end
31
- end
32
-
33
- end
34
- """
35
-
36
- Scenario: Run apply and create a new stack
37
- Given I stub the following stack events:
38
- | stack_id | event_id | stack_name | logical_resource_id | resource_status | resource_type | timestamp |
39
- | 1 | 1 | vpc | Vpc | CREATE_COMPLETE | AWS::EC2::VPC | 2020-10-29 00:00:00 |
40
- | 1 | 1 | vpc | vpc | CREATE_COMPLETE | AWS::CloudFormation::Stack | 2020-10-29 00:00:00 |
41
- And I set the environment variables to:
42
- | variable | value |
43
- | VPC_CIDR | 10.0.0.0/16 |
44
- When I run `stack_master apply us-east-2 vpc --trace`
45
- And the output should contain all of these lines:
46
- | +--- |
47
- | +VpcCidr: 10.0.0.0/16 |
48
- And the output should match /2020-10-29 00:00:00 (\+|\-)[0-9]{4} vpc AWS::CloudFormation::Stack CREATE_COMPLETE/
49
- Then the exit status should be 0
@@ -1,47 +0,0 @@
1
- Feature: Apply command with parameter_store parameter
2
-
3
- Background:
4
- Given a file named "stack_master.yml" with:
5
- """
6
- stacks:
7
- us-east-2:
8
- vpc:
9
- template: vpc.rb
10
- """
11
- And a directory named "parameters"
12
- And a file named "parameters/vpc.yml" with:
13
- """
14
- vpc_cidr:
15
- parameter_store: "/cucumber-test-vpc-cidr"
16
- """
17
- And a SSM parameter named "/cucumber-test-vpc-cidr" with value "10.0.0.0/16" in region "us-east-2"
18
- And a directory named "templates"
19
- And a file named "templates/vpc.rb" with:
20
- """
21
- SparkleFormation.new(:vpc) do
22
-
23
- parameters.vpc_cidr do
24
- type 'String'
25
- end
26
-
27
- resources.vpc do
28
- type 'AWS::EC2::VPC'
29
- properties do
30
- cidr_block ref!(:vpc_cidr)
31
- end
32
- end
33
-
34
- end
35
- """
36
-
37
- Scenario: Run apply and create a new stack
38
- Given I stub the following stack events:
39
- | stack_id | event_id | stack_name | logical_resource_id | resource_status | resource_type | timestamp |
40
- | 1 | 1 | vpc | Vpc | CREATE_COMPLETE | AWS::EC2::VPC | 2020-10-29 00:00:00 |
41
- | 1 | 1 | vpc | vpc | CREATE_COMPLETE | AWS::CloudFormation::Stack | 2020-10-29 00:00:00 |
42
- When I run `stack_master apply us-east-2 vpc --trace`
43
- And the output should contain all of these lines:
44
- | +--- |
45
- | +VpcCidr: 10.0.0.0/16 |
46
- And the output should match /2020-10-29 00:00:00 (\+|\-)[0-9]{4} vpc AWS::CloudFormation::Stack CREATE_COMPLETE/
47
- Then the exit status should be 0
@@ -1,106 +0,0 @@
1
- Feature: Apply command
2
-
3
- Background:
4
- Given a file named "stack_master.yml" with:
5
- """
6
- stack_defaults:
7
- s3:
8
- bucket: my-bucket
9
- region: us-east-1
10
- prefix: cfn_templates/my-app
11
- stacks:
12
- us_east_1:
13
- myapp_vpc:
14
- template: myapp_vpc.rb
15
- files:
16
- - user_data.sh
17
- """
18
- And a directory named "parameters"
19
- And a file named "parameters/myapp_vpc.yml" with:
20
- """
21
- KeyName: my-key
22
- """
23
- And a file named "parameters/myapp_web.yml" with:
24
- """
25
- VpcId: vpc-blah
26
- """
27
- And a directory named "templates"
28
- And a file named "files/user_data.sh" with:
29
- """
30
- #!/bin/bash
31
- echo "HI"
32
- """
33
- And a file named "templates/myapp_vpc.rb" with:
34
- """
35
- SparkleFormation.new(:myapp_vpc) do
36
- description "Test template"
37
- set!('AWSTemplateFormatVersion', '2010-09-09')
38
-
39
- parameters.key_name do
40
- description 'Key name'
41
- type 'String'
42
- end
43
-
44
- resources.vpc do
45
- type 'AWS::EC2::VPC'
46
- properties do
47
- cidr_block '10.200.0.0/16'
48
- end
49
- end
50
-
51
- outputs do
52
- vpc_id do
53
- description 'A VPC ID'
54
- value ref!(:vpc)
55
- end
56
- end
57
- end
58
- """
59
-
60
- Scenario: Run apply and create a new stack
61
- Given I stub the following stack events:
62
- | stack_id | event_id | stack_name | logical_resource_id | resource_status | resource_type | timestamp |
63
- | 1 | 1 | myapp-vpc | TestSg | CREATE_COMPLETE | AWS::EC2::SecurityGroup | 2020-10-29 00:00:00 |
64
- | 1 | 1 | myapp-vpc | myapp-vpc | CREATE_COMPLETE | AWS::CloudFormation::Stack | 2020-10-29 00:00:00 |
65
- When I run `stack_master apply us-east-1 myapp-vpc --trace`
66
- And the output should contain all of these lines:
67
- | Stack diff: |
68
- | + "Vpc": { |
69
- | Parameters diff: |
70
- | KeyName: my-key |
71
- And the output should match /2020-10-29 00:00:00 (\+|\-)[0-9]{4} myapp-vpc AWS::CloudFormation::Stack CREATE_COMPLETE/
72
- And an S3 file in bucket "my-bucket" with key "cfn_templates/my-app/myapp_vpc.json" exists with content:
73
- """
74
- {
75
- "Description": "Test template",
76
- "AWSTemplateFormatVersion": "2010-09-09",
77
- "Parameters": {
78
- "KeyName": {
79
- "Description": "Key name",
80
- "Type": "String"
81
- }
82
- },
83
- "Resources": {
84
- "Vpc": {
85
- "Type": "AWS::EC2::VPC",
86
- "Properties": {
87
- "CidrBlock": "10.200.0.0/16"
88
- }
89
- }
90
- },
91
- "Outputs": {
92
- "VpcId": {
93
- "Description": "A VPC ID",
94
- "Value": {
95
- "Ref": "Vpc"
96
- }
97
- }
98
- }
99
- }
100
- """
101
- And an S3 file in bucket "my-bucket" with key "cfn_templates/my-app/user_data.sh" exists with content:
102
- """
103
- #!/bin/bash
104
- echo "HI"
105
- """
106
- Then the exit status should be 0
@@ -1,29 +0,0 @@
1
- Feature: Delete command
2
-
3
- Scenario: Run a delete command on a stack that exists
4
- Given I stub the following stacks:
5
- | stack_id | stack_name | parameters | region |
6
- | 1 | myapp-vpc | KeyName=my-key | us-east-1 |
7
- And I stub the following stack events:
8
- | stack_id | event_id | stack_name | logical_resource_id | resource_status | resource_type | timestamp |
9
- | 1 | 1 | myapp-vpc | myapp-vpc | DELETE_COMPLETE | AWS::CloudFormation::Stack | 2020-10-29 00:00:00 |
10
- When I run `stack_master delete us-east-1 myapp-vpc --trace`
11
- And the output should match /2020-10-29 00:00:00 (\+|\-)[0-9]{4} myapp-vpc AWS::CloudFormation::Stack DELETE_COMPLETE/
12
- Then the exit status should be 0
13
-
14
- Scenario: Run a delete command on a stack that does not exists
15
- When I run `stack_master delete us-east-1 myapp-vpc --trace`
16
- And the output should contain all of these lines:
17
- | Stack does not exist |
18
- Then the exit status should be 0
19
-
20
- Scenario: Answer no when asked to delete stack
21
- Given I will answer prompts with "n"
22
- And I stub the following stacks:
23
- | stack_id | stack_name | parameters | region |
24
- | 1 | myapp-vpc | KeyName=my-key | us-east-1 |
25
- When I run `stack_master delete us-east-1 myapp-vpc --trace`
26
- And the output should contain all of these lines:
27
- | Stack update aborted |
28
- Then the exit status should be 0
29
-
@@ -1,179 +0,0 @@
1
- Feature: Diff command
2
-
3
- Background:
4
- Given a file named "stack_master.yml" with:
5
- """
6
- stacks:
7
- us_east_1:
8
- myapp_vpc:
9
- template: myapp_vpc.json
10
- """
11
- And a directory named "parameters"
12
- And a file named "parameters/myapp_vpc.yml" with:
13
- """
14
- KeyName: my-key
15
- """
16
- And a directory named "templates"
17
- And a file named "templates/myapp_vpc.json" with:
18
- """
19
- {
20
- "Description": "Test template",
21
- "AWSTemplateFormatVersion": "2010-09-09",
22
- "Parameters": {
23
- "KeyName": {
24
- "Description": "Key Name",
25
- "Type": "String"
26
- }
27
- },
28
- "Resources": {
29
- "TestSg": {
30
- "Type": "AWS::EC2::SecurityGroup",
31
- "Properties": {
32
- "GroupDescription": "Test SG",
33
- "VpcId": {
34
- "Ref": "VpcId"
35
- }
36
- }
37
- },
38
- "TestSg2": {
39
- "Type": "AWS::EC2::SecurityGroup",
40
- "Properties": {
41
- "GroupDescription": "Test SG 2",
42
- "VpcId": {
43
- "Ref": "VpcId"
44
- }
45
- }
46
- }
47
- }
48
- }
49
- """
50
-
51
- Scenario: Run diff on a stack with no changes
52
- Given I stub the following stacks:
53
- | stack_id | stack_name | parameters | region |
54
- | 1 | myapp-vpc | KeyName=changed-key | us-east-1 |
55
- And I stub a template for the stack "myapp-vpc":
56
- """
57
- {
58
- "Description": "Test template",
59
- "AWSTemplateFormatVersion": "2010-09-09",
60
- "Parameters": {
61
- "KeyName": {
62
- "Description": "Key Name",
63
- "Type": "String"
64
- }
65
- },
66
- "Resources": {
67
- "TestSg": {
68
- "Type": "AWS::EC2::SecurityGroup",
69
- "Properties": {
70
- "GroupDescription": "Test SG",
71
- "VpcId": {
72
- "Ref": "VpcId"
73
- }
74
- }
75
- },
76
- "TestSg2": {
77
- "Type": "AWS::EC2::SecurityGroup",
78
- "Properties": {
79
- "GroupDescription": "Test SG 2",
80
- "VpcId": {
81
- "Ref": "VpcId"
82
- }
83
- }
84
- }
85
- }
86
- }
87
- """
88
- When I run `stack_master diff us-east-1 myapp-vpc --trace`
89
- And the output should contain all of these lines:
90
- | -KeyName: changed |
91
- | +KeyName: my-key |
92
- Then the exit status should be 0
93
-
94
- Scenario: Run diff on a stack with parameter changes
95
- Given I stub the following stacks:
96
- | stack_id | stack_name | parameters | region |
97
- | 1 | myapp-vpc | KeyName=my-key | us-east-1 |
98
- And I stub a template for the stack "myapp-vpc":
99
- """
100
- {
101
- "Description": "Test template",
102
- "AWSTemplateFormatVersion": "2010-09-09",
103
- "Parameters": {
104
- "KeyName": {
105
- "Description": "Key Name",
106
- "Type": "String"
107
- }
108
- },
109
- "Resources": {
110
- "TestSg": {
111
- "Type": "AWS::EC2::SecurityGroup",
112
- "Properties": {
113
- "GroupDescription": "Test SG",
114
- "VpcId": {
115
- "Ref": "VpcId"
116
- }
117
- }
118
- },
119
- "TestSg2": {
120
- "Type": "AWS::EC2::SecurityGroup",
121
- "Properties": {
122
- "GroupDescription": "Test SG 2",
123
- "VpcId": {
124
- "Ref": "VpcId"
125
- }
126
- }
127
- }
128
- }
129
- }
130
- """
131
- When I run `stack_master diff us-east-1 myapp-vpc --trace`
132
- And the output should contain all of these lines:
133
- | Stack diff: No changes |
134
- | Parameters diff: No changes |
135
- Then the exit status should be 0
136
-
137
- Scenario: Run diff on a stack with template changes
138
- Given I stub the following stacks:
139
- | stack_id | stack_name | parameters | region |
140
- | 1 | myapp-vpc | KeyName=my-key | us-east-1 |
141
- And I stub a template for the stack "myapp-vpc":
142
- """
143
- {
144
- "Description": "Test template",
145
- "AWSTemplateFormatVersion": "2010-09-09",
146
- "Parameters": {
147
- "KeyName": {
148
- "Description": "Key Name",
149
- "Type": "String"
150
- }
151
- },
152
- "Resources": {
153
- "TestSg": {
154
- "Type": "AWS::EC2::SecurityGroup",
155
- "Properties": {
156
- "GroupDescription": "Test SG",
157
- "VpcId": {
158
- "Ref": "VpcId"
159
- }
160
- }
161
- },
162
- "TestSg2": {
163
- "Type": "AWS::EC2::SecurityGroup",
164
- "Properties": {
165
- "GroupDescription": "Changed description",
166
- "VpcId": {
167
- "Ref": "VpcId"
168
- }
169
- }
170
- }
171
- }
172
- }
173
- """
174
- When I run `stack_master diff us-east-1 myapp-vpc --trace`
175
- And the output should contain all of these lines:
176
- | - "GroupDescription": "Changed description" |
177
- | + "GroupDescription": "Test SG 2", |
178
- Then the exit status should be 0
179
-