Class: StackMaster::TestDriver::CloudFormation
- Inherits:
-
Object
- Object
- StackMaster::TestDriver::CloudFormation
- Defined in:
- lib/stack_master/test_driver/cloud_formation.rb
Instance Method Summary collapse
- #add_stack(stack) ⇒ Object
- #add_stack_event(event) ⇒ Object
- #add_stack_resource(options) ⇒ Object
- #create_change_set(options) ⇒ Object
- #create_stack(options) ⇒ Object
- #delete_change_set(options) ⇒ Object
- #delete_stack(options) ⇒ Object
- #describe_change_set(options) ⇒ Object
- #describe_stack_events(options) ⇒ Object
- #describe_stack_resources(options = {}) ⇒ Object
- #describe_stacks(options = {}) ⇒ Object
- #execute_change_set(options) ⇒ Object
- #get_stack_policy(options) ⇒ Object
- #get_template(options) ⇒ Object
-
#initialize ⇒ CloudFormation
constructor
A new instance of CloudFormation.
- #region ⇒ Object
- #reset ⇒ Object
- #set_region(region) ⇒ Object
- #set_stack_policy(options) ⇒ Object
- #set_template(stack_name, template) ⇒ Object
- #validate_template(options) ⇒ Object
Constructor Details
#initialize ⇒ CloudFormation
Returns a new instance of CloudFormation.
67 68 69 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 67 def initialize reset end |
Instance Method Details
#add_stack(stack) ⇒ Object
191 192 193 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 191 def add_stack(stack) @stacks[stack.fetch(:stack_name)] = Stack.new(stack) end |
#add_stack_event(event) ⇒ Object
204 205 206 207 208 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 204 def add_stack_event(event) stack_name = event.fetch(:stack_name) @stack_events[stack_name] ||= [] @stack_events[stack_name] << StackEvent.new(event) end |
#add_stack_resource(options) ⇒ Object
195 196 197 198 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 195 def add_stack_resource() @stack_resources[.fetch(:stack_name)] ||= [] @stack_resources[.fetch(:stack_name)] << StackResource.new() end |
#create_change_set(options) ⇒ Object
88 89 90 91 92 93 94 95 96 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 88 def create_change_set() id = SecureRandom.uuid .merge!(change_set_id: id) @change_sets[id] = @change_sets[.fetch(:change_set_name)] = stack_name = .fetch(:stack_name) add_stack(stack_name: stack_name, stack_status: 'REVIEW_IN_PROGRESS') unless @stacks[stack_name] OpenStruct.new(id: id) end |
#create_stack(options) ⇒ Object
176 177 178 179 180 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 176 def create_stack() stack_name = .fetch(:stack_name) add_stack() @stack_policies[stack_name] = [:stack_policy_body] end |
#delete_change_set(options) ⇒ Object
133 134 135 136 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 133 def delete_change_set() change_set_id = .fetch(:change_set_name) @change_sets.delete(change_set_id) end |
#delete_stack(options) ⇒ Object
182 183 184 185 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 182 def delete_stack() stack_name = .fetch(:stack_name) @stacks.delete(stack_name) end |
#describe_change_set(options) ⇒ Object
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 98 def describe_change_set() change_set_id = .fetch(:change_set_name) change_set = @change_sets.fetch(change_set_id) change_details = [ OpenStruct.new( evaluation: 'Static', change_source: 'ResourceReference', target: OpenStruct.new( attribute: 'Properties', requires_recreation: 'Always', name: 'blah' ) ) ] change = OpenStruct.new( action: 'Modify', replacement: 'True', scope: ['Properties'], details: change_details ) changes = [ OpenStruct.new( type: 'AWS::Resource', resource_change: change ) ] OpenStruct.new(change_set.merge(changes: changes, status: 'CREATE_COMPLETE')) end |
#describe_stack_events(options) ⇒ Object
171 172 173 174 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 171 def describe_stack_events() events = @stack_events[.fetch(:stack_name)] || [] OpenStruct.new(stack_events: events, next_token: nil) end |
#describe_stack_resources(options = {}) ⇒ Object
153 154 155 156 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 153 def describe_stack_resources( = {}) @stacks.fetch(.fetch(:stack_name)) { raise Aws::CloudFormation::Errors::ValidationError.new('', 'Stack does not exist') } OpenStruct.new(stack_resources: @stack_resources[.fetch(:stack_name)]) end |
#describe_stacks(options = {}) ⇒ Object
138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 138 def describe_stacks( = {}) stack_name = [:stack_name] stacks = if stack_name if @stacks[stack_name] [@stacks[stack_name]] else raise Aws::CloudFormation::Errors::ValidationError.new('', 'Stack does not exist') end else @stacks.values end OpenStruct.new(stacks: stacks, next_token: nil) end |
#execute_change_set(options) ⇒ Object
127 128 129 130 131 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 127 def execute_change_set() change_set_id = .fetch(:change_set_name) change_set = @change_sets.fetch(change_set_id) @stacks[change_set.fetch(:stack_name)].attributes = change_set end |
#get_stack_policy(options) ⇒ Object
163 164 165 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 163 def get_stack_policy() OpenStruct.new(stack_policy_body: @stack_policies[.fetch(:stack_name)]) end |
#get_template(options) ⇒ Object
158 159 160 161 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 158 def get_template() template_body = @templates[[:stack_name]] || nil OpenStruct.new(template_body: template_body) end |
#region ⇒ Object
71 72 73 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 71 def region @region ||= ENV['AWS_REGION'] || Aws.config[:region] || Aws.shared_config.region end |
#reset ⇒ Object
79 80 81 82 83 84 85 86 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 79 def reset @stacks = {} @templates = {} @stack_events = {} @stack_resources = {} @stack_policies = {} @change_sets = {} end |
#set_region(region) ⇒ Object
75 76 77 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 75 def set_region(region) @region = region end |
#set_stack_policy(options) ⇒ Object
167 168 169 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 167 def set_stack_policy() @stack_policies[.fetch(:stack_name)] = [:stack_policy_body] end |
#set_template(stack_name, template) ⇒ Object
200 201 202 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 200 def set_template(stack_name, template) @templates[stack_name] = template end |
#validate_template(options) ⇒ Object
187 188 189 |
# File 'lib/stack_master/test_driver/cloud_formation.rb', line 187 def validate_template() true end |