class CFnDK::Stacks
Public Class Methods
new(data, option, credentials)
click to toggle source
# File lib/cfndk/stacks.rb, line 3 def initialize(data, option, credentials) @option = option @credentials = credentials @global_config = CFnDK::GlobalConfig.new(data, option) prepare_stack(data) prepare_sequence end
Public Instance Methods
create()
click to toggle source
# File lib/cfndk/stacks.rb, line 11 def create @sequence.each do |stacks| stacks.each do |name| @stacks[name].create end stacks.each do |name| @stacks[name].wait_until_create end end end
create_change_set()
click to toggle source
# File lib/cfndk/stacks.rb, line 54 def create_change_set @sequence.each do |stacks| wait_until_stacks = [] stacks.each do |name| wait_until_stacks.push(@stacks[name].create_change_set) end wait_until_stacks.compact! wait_until_stacks.each do |name| @stacks[name].wait_until_create_change_set end end end
delete_change_set()
click to toggle source
# File lib/cfndk/stacks.rb, line 86 def delete_change_set @sequence.reverse_each do |stacks| stacks.each do |name| @stacks[name].delete_change_set end end end
destroy()
click to toggle source
# File lib/cfndk/stacks.rb, line 35 def destroy @sequence.reverse_each do |stacks| stacks.each do |name| @stacks[name].destroy end stacks.each do |name| @stacks[name].wait_until_destroy end end end
execute_change_set()
click to toggle source
# File lib/cfndk/stacks.rb, line 67 def execute_change_set @sequence.each do |stacks| created_stacks = [] wait_until_stacks = [] stacks.each do |name| created_stacks.push(name) if @stacks[name].created? wait_until_stacks.push(@stacks[name].execute_change_set) end wait_until_stacks.compact! wait_until_stacks.each do |name| if created_stacks.include?(name) @stacks[name].wait_until_update else @stacks[name].wait_until_create end end end end
post_command_execute()
click to toggle source
# File lib/cfndk/stacks.rb, line 118 def post_command_execute @sequence.each do |stacks| stacks.each do |name| @stacks[name].post_command_execute end end end
pre_command_execute()
click to toggle source
# File lib/cfndk/stacks.rb, line 110 def pre_command_execute @sequence.each do |stacks| stacks.each do |name| @stacks[name].pre_command_execute end end end
report()
click to toggle source
# File lib/cfndk/stacks.rb, line 102 def report @sequence.each do |stacks| stacks.each do |name| @stacks[name].report end end end
report_change_set()
click to toggle source
# File lib/cfndk/stacks.rb, line 94 def report_change_set @sequence.each do |stacks| stacks.each do |name| @stacks[name].report_change_set end end end
update()
click to toggle source
# File lib/cfndk/stacks.rb, line 22 def update @sequence.each do |stacks| updating_stacks = [] stacks.each do |name| result = @stacks[name].update updating_stacks.push name if result end updating_stacks.each do |name| @stacks[name].wait_until_update end end end
validate()
click to toggle source
# File lib/cfndk/stacks.rb, line 46 def validate @sequence.each do |stacks| stacks.each do |name| @stacks[name].validate end end end
Private Instance Methods
prepare_sequence()
click to toggle source
# File lib/cfndk/stacks.rb, line 136 def prepare_sequence @sequence = [] names_of_upprocessed_stack = @stacks.keys names_of_processed_stack = [] until names_of_upprocessed_stack.empty? names = names_of_upprocessed_stack.select do |name| @stacks[name].depends.all? do |depend_name| names_of_processed_stack.include? depend_name end end raise "There are cyclic dependency or stack doesn't exist. unprocessed_stack: " + names_of_upprocessed_stack.join(',') if names.empty? names_of_processed_stack += names names_of_upprocessed_stack -= names @sequence.push names end end
prepare_stack(data)
click to toggle source
# File lib/cfndk/stacks.rb, line 128 def prepare_stack(data) @stacks = {} return unless data['stacks'].is_a?(Hash) data['stacks'].each do |name, properties| @stacks[name] = Stack.new(name, properties, @option, @global_config, @credentials) end end