class StackMaster::TestDriver::CloudFormation
Public Class Methods
new()
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 66 def initialize reset end
Public Instance Methods
add_stack(stack)
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 173 def add_stack(stack) @stacks[stack.fetch(:stack_name)] = Stack.new(stack) end
add_stack_event(event)
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 186 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)
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 177 def add_stack_resource(options) @stack_resources[options.fetch(:stack_name)] ||= [] @stack_resources[options.fetch(:stack_name)] << StackResource.new(options) end
create_change_set(options)
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 87 def create_change_set(options) id = SecureRandom.uuid options.merge!(change_set_id: id) @change_sets[id] = options @change_sets[options.fetch(:change_set_name)] = options stack_name = options.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)
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 158 def create_stack(options) stack_name = options.fetch(:stack_name) add_stack(options) @stack_policies[stack_name] = options[:stack_policy_body] end
delete_change_set(options)
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 116 def delete_change_set(options) change_set_id = options.fetch(:change_set_name) @change_sets.delete(change_set_id) end
delete_stack(options)
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 164 def delete_stack(options) stack_name = options.fetch(:stack_name) @stacks.delete(stack_name) end
describe_change_set(options)
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 97 def describe_change_set(options) change_set_id = options.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)
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 153 def describe_stack_events(options) events = @stack_events[options.fetch(:stack_name)] || [] OpenStruct.new(stack_events: events, next_token: nil) end
describe_stack_resources(options = {})
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 135 def describe_stack_resources(options = {}) @stacks.fetch(options.fetch(:stack_name)) { raise Aws::CloudFormation::Errors::ValidationError.new('', 'Stack does not exist') } OpenStruct.new(stack_resources: @stack_resources[options.fetch(:stack_name)]) end
describe_stacks(options = {})
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 121 def describe_stacks(options = {}) stack_name = options[: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)
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 110 def execute_change_set(options) change_set_id = options.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)
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 145 def get_stack_policy(options) OpenStruct.new(stack_policy_body: @stack_policies[options.fetch(:stack_name)]) end
get_template(options)
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 140 def get_template(options) template_body = @templates[options[:stack_name]] || nil OpenStruct.new(template_body: template_body) end
region()
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 70 def region @region ||= ENV['AWS_REGION'] || Aws.config[:region] || Aws.shared_config.region end
reset()
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 78 def reset @stacks = {} @templates = {} @stack_events = {} @stack_resources = {} @stack_policies = {} @change_sets = {} end
set_region(region)
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 74 def set_region(region) @region = region end
set_stack_policy(options)
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 149 def set_stack_policy(options) @stack_policies[options.fetch(:stack_name)] = options[:stack_policy_body] end
set_template(stack_name, template)
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 182 def set_template(stack_name, template) @templates[stack_name] = template end
validate_template(options)
click to toggle source
# File lib/stack_master/test_driver/cloud_formation.rb, line 169 def validate_template(options) true end