class EY::Serverside::CLI::Workflows::Base

Base is the template from which all Workflows are derived

Attributes

options[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/engineyard-serverside/cli/workflows/base.rb, line 15
def initialize(options = {})
  @options = options
end
perform(options = {}) click to toggle source
# File lib/engineyard-serverside/cli/workflows/base.rb, line 33
def self.perform(options = {})
  new(options).perform
end

Public Instance Methods

perform() click to toggle source
# File lib/engineyard-serverside/cli/workflows/base.rb, line 19
def perform
  shell.debug "Initializing #{About.name_with_version}."

  begin
    procedure
  rescue EY::Serverside::RemoteFailure => remote_error
    shell.fatal(remote_error.message)
    raise
  rescue Exception => error
    shell.fatal("#{error.backtrace[0]}: #{error.message} (#{error.class})")
    raise
  end
end

Private Instance Methods

config() click to toggle source
# File lib/engineyard-serverside/cli/workflows/base.rb, line 38
def config
  @config ||= EY::Serverside::Deploy::Configuration.new(options)
end
procedure() click to toggle source
# File lib/engineyard-serverside/cli/workflows/base.rb, line 65
def procedure
  raise Undefined.new(
    "You must define the private procedure method for your workflow."
  )
end
propagate_serverside() click to toggle source
# File lib/engineyard-serverside/cli/workflows/base.rb, line 71
def propagate_serverside
  EY::Serverside::Propagator.propagate(servers, shell)
end
servers() click to toggle source
# File lib/engineyard-serverside/cli/workflows/base.rb, line 52
def servers
  @servers ||= EY::Serverside::Servers.from_hashes(
    EY::Serverside::CLI::ServerHashExtractor.hashes(options, config),
    shell
  )
end
shell() click to toggle source
# File lib/engineyard-serverside/cli/workflows/base.rb, line 42
def shell
  @shell ||= EY::Serverside::Shell.new(
    :verbose => config.verbose,
    :log_path => File.join(
      ENV['HOME'],
      "#{config.app}-#{task_name}.log"
    )
  )
end
task_name() click to toggle source
# File lib/engineyard-serverside/cli/workflows/base.rb, line 59
def task_name
  raise Undefined.new(
    "You must define the private task_name method for your workflow."
  )
end