class Hygroscope::Stack
Attributes
capabilities[W]
client[R]
name[RW]
on_failure[W]
parameters[RW]
template[W]
timeout[W]
Public Class Methods
new(name, region, profile)
click to toggle source
# File lib/hygroscope/stack.rb, line 9 def initialize(name, region, profile) @name = name @parameters = {} @tags = {} @template = '' @capabilities = [] @timeout = 15 @on_failure = 'DO_NOTHING' @region = region @profile = profile @credentials = Aws::SharedCredentials.new(profile_name: @profile) @client = Aws::CloudFormation::Client.new(region: @region, credentials: @credentials) end
Public Instance Methods
create!()
click to toggle source
# File lib/hygroscope/stack.rb, line 24 def create! stack_parameters = [] @parameters.each do |k, v| stack_parameters << { parameter_key: k, parameter_value: v.to_s } end stack_tags = [] @tags.each do |k, v| stack_tags << { key: k, value: v.to_s } end stack_opts = { stack_name: @name, template_body: @template, parameters: stack_parameters, timeout_in_minutes: @timeout, on_failure: @on_failure } stack_opts['capabilities'] = @capabilities unless @capabilities.empty? stack_opts['tags'] = stack_tags begin stack_id = @client.create_stack(stack_opts) rescue => e raise e end stack_id end
delete!()
click to toggle source
# File lib/hygroscope/stack.rb, line 94 def delete! @client.delete_stack(stack_name: @name) rescue => e raise e end
describe()
click to toggle source
# File lib/hygroscope/stack.rb, line 100 def describe resp = @client.describe_stacks(stack_name: @name) rescue => e raise e else resp.stacks.first end
list_resources()
click to toggle source
# File lib/hygroscope/stack.rb, line 108 def list_resources resp = @client.describe_stack_resources(stack_name: @name) rescue => e raise e else resources = [] resp.stack_resources.each do |r| resources << { name: r.logical_resource_id, type: r.resource_type, status: r.resource_status } end resources end
update!()
click to toggle source
# File lib/hygroscope/stack.rb, line 61 def update! stack_parameters = [] @parameters.each do |k, v| stack_parameters << if v == 'HYGROSCOPE_USE_PREVIOUS_VALUE' { parameter_key: k, use_previous_value: true } else { parameter_key: k, parameter_value: v.to_s } end end stack_opts = { stack_name: @name, template_body: @template, parameters: stack_parameters } stack_opts['capabilities'] = @capabilities unless @capabilities.empty? begin stack_id = @client.update_stack(stack_opts) rescue => e raise e end stack_id end