module Aptible::CLI::Helpers::LogDrain

Public Instance Methods

create_https_based_log_drain(handle, options, url_format_msg: nil) click to toggle source
# File lib/aptible/cli/helpers/log_drain.rb, line 21
def create_https_based_log_drain(handle, options, url_format_msg: nil)
  account = ensure_environment(options)
  url = ensure_url(options, url_format_msg: url_format_msg)

  opts = {
    handle: handle,
    url: url,
    drain_apps: options[:drain_apps],
    drain_databases: options[:drain_databases],
    drain_ephemeral_sessions: options[:drain_ephemeral_sessions],
    drain_proxies: options[:drain_proxies],
    drain_type: :https_post
  }
  create_log_drain(account, opts)
end
create_log_drain(account, drain_opts) click to toggle source
# File lib/aptible/cli/helpers/log_drain.rb, line 7
def create_log_drain(account, drain_opts)
  drain = account.create_log_drain!(drain_opts)
  op = drain.create_operation(type: :provision)

  if op.errors.any?
    # NOTE: If we fail to provision the log drain, we should try and
    # clean it up immediately.
    drain.create_operation(type: :deprovision)
    raise Thor::Error, op.errors.full_messages.first
  end

  attach_to_operation_logs(op)
end
create_syslog_based_log_drain(handle, options) click to toggle source
# File lib/aptible/cli/helpers/log_drain.rb, line 37
def create_syslog_based_log_drain(handle, options)
  account = ensure_environment(options)

  opts = {
    handle: handle,
    drain_host: options[:host],
    drain_port: options[:port],
    logging_token: options[:token],
    drain_apps: options[:drain_apps],
    drain_databases: options[:drain_databases],
    drain_ephemeral_sessions: options[:drain_ephemeral_sessions],
    drain_proxies: options[:drain_proxies],
    drain_type: :syslog_tls_tcp
  }
  create_log_drain(account, opts)
end
ensure_log_drain(account, handle) click to toggle source
# File lib/aptible/cli/helpers/log_drain.rb, line 67
def ensure_log_drain(account, handle)
  drains = account.log_drains.select { |d| d.handle == handle }

  if drains.empty?
    raise Thor::Error, "No drain found with handle #{handle}"
  end

  # Log Drain handles are globally unique, so this is excessive
  unless drains.length == 1
    raise Thor::Error, "#{drains.length} drains found with handle "\
                       "#{handle}"
  end

  drains.first
end
ensure_url(options, url_format_msg: nil) click to toggle source
# File lib/aptible/cli/helpers/log_drain.rb, line 54
def ensure_url(options, url_format_msg: nil)
  msg = '--url is required.'
  msg = "#{msg} #{url_format_msg}" unless url_format_msg.nil?

  url = options[:url]
  raise Thor::Error, msg if url.nil?

  # API already does url validation, so I'm not going
  # to duplicate that logic here, even if it would
  # get us an error faster
  url
end