class Opsicle::FailureLog
Attributes
client[R]
stack[R]
Public Class Methods
new(environment)
click to toggle source
# File lib/opsicle/commands/failure_log.rb, line 5 def initialize(environment) @environment = environment @client = Client.new(environment) @stack = Opsicle::Stack.new(@client) end
Public Instance Methods
execute()
click to toggle source
# File lib/opsicle/commands/failure_log.rb, line 11 def execute puts "Getting most recent failure log..." fetch end
fetch()
click to toggle source
# File lib/opsicle/commands/failure_log.rb, line 17 def fetch failed_deployments = fetch_failed_deployments unless failed_deployments.empty? failed_deployment_id = failed_deployments.first.deployment_id failed_deployments_instances = failed_deployments.first.instance_ids unless failed_deployments_instances.empty? involved_instance_id = fetch_instance_id(failed_deployments_instances) target_failed_command = fetch_target_command(involved_instance_id, failed_deployment_id) log_url = target_failed_command.first.log_url system("open", log_url) if log_url puts "Unable to find a url to open." unless log_url else puts "There is at least one failed deployment, but there is no log available for that failure." end else puts "No failed deployments in available history." end end
fetch_failed_deployments()
click to toggle source
# File lib/opsicle/commands/failure_log.rb, line 40 def fetch_failed_deployments deployments = @client.opsworks.describe_deployments(stack_id: @stack.stack_id).deployments deployments.select{ |deploy| deploy.status.eql? "failed" } end
fetch_instance_id(failed_deployments_instances)
click to toggle source
# File lib/opsicle/commands/failure_log.rb, line 45 def fetch_instance_id(failed_deployments_instances) involved_instances = @client.opsworks.describe_instances(instance_ids: failed_deployments_instances).instances choice = select_instance(involved_instances) involved_instances[choice-1].instance_id end
fetch_target_command(involved_instance_id, failed_deployment_id)
click to toggle source
# File lib/opsicle/commands/failure_log.rb, line 51 def fetch_target_command(involved_instance_id, failed_deployment_id) command_list = @client.opsworks.describe_commands(instance_id: involved_instance_id)[:commands] command_list.select{ |command| command.deployment_id == failed_deployment_id } end
select_instance(instance_list)
click to toggle source
# File lib/opsicle/commands/failure_log.rb, line 56 def select_instance(instance_list) if instance_list.length == 1 choice = 1 else Output.say "Choose an Opsworks instance:" instance_list.each_with_index do |instance, index| Output.say "#{index+1}) #{instance[:hostname]}" end choice = Output.ask("? ", Integer) { |q| q.in = 1..instance_list.length } end return choice end