Class: LonoCfn::Plan
- Includes:
- AwsServices
- Defined in:
- lib/lono_cfn/plan.rb
Overview
Inherit from Base because the initializer is the same
Instance Method Summary collapse
-
#change_set_name ⇒ Object
generates a change set name.
- #create_change_set ⇒ Object
- #delete_change_set ⇒ Object
- #display_change_set ⇒ Object
- #execute_change_set ⇒ Object
- #preview_change_set ⇒ Object
-
#run ⇒ Object
Override run from Base superclass, the run method is different enough with Plan.
- #setup ⇒ Object
Methods included from AwsServices
#cfn, #stack_exists?, #testing_update?
Methods inherited from Base
#check_files, #check_for_errors, #convention_path, #detect_format, #exist_unless_updatable, #generate_params, #generate_templates, #get_source_path, #initialize, #quit, #stack_status
Methods included from Util
Constructor Details
This class inherits a constructor from LonoCfn::Base
Instance Method Details
#change_set_name ⇒ Object
generates a change set name
95 96 97 |
# File 'lib/lono_cfn/plan.rb', line 95 def change_set_name @change_set_name ||= "changeset-#{Time.now.strftime("%Y%d%m%H%M%S")}" end |
#create_change_set ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/lono_cfn/plan.rb', line 29 def create_change_set unless stack_exists?(@stack_name) puts "Cannot create a change set for the stack because the #{@stack_name} does not exists." return end exist_unless_updatable(stack_status(@stack_name)) template_body = IO.read(@template_path) begin cfn.create_change_set( change_set_name: change_set_name, stack_name: @stack_name, template_body: template_body, parameters: @params ) rescue Aws::CloudFormation::Errors::ValidationError => e if e. =~ /^Parameters: / puts "Error creating CloudFormation plan because invalid CloudFormation parameters. Full error message:".colorize(:red) puts e. quit(1) else raise end end end |
#delete_change_set ⇒ Object
80 81 82 83 84 85 |
# File 'lib/lono_cfn/plan.rb', line 80 def delete_change_set cfn.delete_change_set( change_set_name: change_set_name, stack_name: @stack_name ) end |
#display_change_set ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/lono_cfn/plan.rb', line 55 def display_change_set print "Generating CloudFormation Change Set for plan.." change_set = describe_change_set until change_set_finished?(change_set) do change_set = describe_change_set sleep 1 print '.' end puts case change_set.status when "CREATE_COMPLETE" puts "CloudFormation plan for '#{@stack_name}' stack update. Changes:" change_set.changes.each do |change| display_change(change) end when "FAILED" puts "Fail to create a CloudFormation plan for '#{@stack_name}' stack update. Reason:".colorize(:red) puts change_set.status_reason quit(1) else raise "hell: never come here" end end |
#execute_change_set ⇒ Object
87 88 89 90 91 92 |
# File 'lib/lono_cfn/plan.rb', line 87 def execute_change_set cfn.execute_change_set( change_set_name: change_set_name, stack_name: @stack_name ) end |
#preview_change_set ⇒ Object
24 25 26 27 |
# File 'lib/lono_cfn/plan.rb', line 24 def preview_change_set create_change_set display_change_set end |
#run ⇒ Object
Override run from Base superclass, the run method is different enough with Plan
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/lono_cfn/plan.rb', line 13 def run setup if @options[:noop] puts "NOOP CloudFormation plan for #{@stack_name} update" else preview_change_set delete_change_set unless @options[:keep] # Clean up and delete the change set end end |
#setup ⇒ Object
6 7 8 9 10 |
# File 'lib/lono_cfn/plan.rb', line 6 def setup generate_templates if @options[:lono] check_for_errors @params = generate_params(mute: @options[:mute_params]) end |