class OpenStax::Aws::ChangeSet
Attributes
client[R]
Public Class Methods
new(client:)
click to toggle source
# File lib/openstax/aws/change_set.rb, line 6 def initialize(client:) @client = client end
Public Instance Methods
create(options:)
click to toggle source
# File lib/openstax/aws/change_set.rb, line 10 def create(options:) create_change_set_output = client.create_change_set(options) @id = create_change_set_output.id wait_message = OpenStax::Aws::WaitMessage.new( message: "Waiting for change set #{id} to be ready" ) begin client.wait_until(:change_set_create_complete, change_set_name: id) do |w| w.delay = OpenStax::Aws.configuration.stack_waiter_delay w.before_attempt do |attempts, response| wait_message.say_it end end rescue Aws::Waiters::Errors::FailureStateError => ee if ee.response&.status_reason =~ /didn't contain changes/ logger.info("No changes detected, deleting change set") delete return self else logger.error(ee.response.status_reason) raise end rescue Aws::Waiters::Errors::WaiterFailed => ee logger.error("An error occurred: #{ee.message}") raise end @description = client.describe_change_set(change_set_name: id) self end
created?()
click to toggle source
# File lib/openstax/aws/change_set.rb, line 44 def created? @description.present? end
delete()
click to toggle source
# File lib/openstax/aws/change_set.rb, line 48 def delete client.delete_change_set(change_set_name: id) end
description()
click to toggle source
# File lib/openstax/aws/change_set.rb, line 60 def description @description || raise("Description not set; create failed?") end
execute()
click to toggle source
# File lib/openstax/aws/change_set.rb, line 52 def execute client.execute_change_set(change_set_name: id) end
has_change_caused_by?(entity_name)
click to toggle source
# File lib/openstax/aws/change_set.rb, line 64 def has_change_caused_by?(entity_name) description.changes.any? do |change| change.resource_change.details.any? do |detail| detail.causing_entity == entity_name end end end
id()
click to toggle source
# File lib/openstax/aws/change_set.rb, line 56 def id @id || raise("ID isn't yet known!") end
parameter_value(parameter_name)
click to toggle source
# File lib/openstax/aws/change_set.rb, line 72 def parameter_value(parameter_name) description.parameters.select do |parameter| parameter.parameter_key == parameter_name end.first.parameter_value end
resource_change_summaries()
click to toggle source
# File lib/openstax/aws/change_set.rb, line 78 def resource_change_summaries summaries = description.changes.flat_map(&:resource_change).map do |change| summary = "#{change.action} '#{change.logical_resource_id}' (#{change.resource_type})" case change.action when "Modify" causes = change.details.map{|detail| [detail.change_source, detail.causing_entity].compact.join(":")}.join(", ") summary = "#{summary}: Replacement=#{change.replacement}; Due to change in #{change.scope}; Causes: #{causes}" end summary end end
Protected Instance Methods
logger()
click to toggle source
# File lib/openstax/aws/change_set.rb, line 95 def logger OpenStax::Aws.configuration.logger end