class Bosh::Director::LogsFetcher

Public Class Methods

new(instance_manager, log_bundles_cleaner, logger) click to toggle source

@param [Bosh::Director::EventLog::Log] event_log @param [Bosh::Director::Api::InstanceManager] instance_manager @param [Bosh::Director::LogBundlesCleaner] log_bundles_cleaner

# File lib/bosh/director/logs_fetcher.rb, line 6
def initialize(instance_manager, log_bundles_cleaner, logger)
  @instance_manager = instance_manager
  @log_bundles_cleaner = log_bundles_cleaner
  @logger = logger
end

Public Instance Methods

fetch(instance, log_type, filters) click to toggle source

@param [Models::Instance] instance @param [String] log_type @param [Array] filters

# File lib/bosh/director/logs_fetcher.rb, line 15
def fetch(instance, log_type, filters)
  @logger.info("Fetching logs from agent with log_type=#{log_type} filters=#{filters}")

  @log_bundles_cleaner.clean

  agent = @instance_manager.agent_client_for(instance)
  blobstore_id = nil

  stage = Config.event_log.begin_stage("Fetching logs for #{instance.job}/#{instance.uuid} (#{instance.index})", 1)
  stage.advance_and_track('Finding and packing log files') do
    fetch_logs_result = agent.fetch_logs(log_type, filters)
    blobstore_id = fetch_logs_result['blobstore_id']
  end

  if blobstore_id.nil?
    raise AgentTaskNoBlobstoreId,
          "Agent didn't return a blobstore object id for packaged logs"
  end

  @log_bundles_cleaner.register_blobstore_id(blobstore_id)

  blobstore_id
end