class Rebi::Application

Attributes

app[R]
app_name[R]
client[R]
s3_client[R]

Public Class Methods

client() click to toggle source
# File lib/rebi/application.rb, line 156
def self.client
  Rebi.eb
end
create_application(app_name, description=nil) click to toggle source
# File lib/rebi/application.rb, line 165
def self.create_application app_name, description=nil
  res = client.create_application(
    application_name: app_name,
    description: description,
  )
  return Rebi::Application.new(res.application, client)
end
get_application(app_name) click to toggle source
# File lib/rebi/application.rb, line 160
def self.get_application app_name
  raise Error::ApplicationNotFound.new unless app = client.describe_applications(application_names: [app_name]).applications.first
  return Rebi::Application.new(app, client)
end
get_or_create_application(app_name) click to toggle source
# File lib/rebi/application.rb, line 173
def self.get_or_create_application app_name
  raise "App name cannot be nil" if app_name.blank?
  begin
    return get_application app_name
  rescue Error::ApplicationNotFound
    return create_application app_name, Rebi.config.app_description
  end
end
new(app, client=Rebi.eb) click to toggle source
# File lib/rebi/application.rb, line 5
def initialize app, client=Rebi.eb
  @app = app
  @app_name = app.application_name
  @client = client
end

Public Instance Methods

bucket_name() click to toggle source
# File lib/rebi/application.rb, line 11
def bucket_name
  @bucket_name ||= client.create_storage_location.s3_bucket
end
deploy(stage_name, env_name=nil, opts={}) click to toggle source
# File lib/rebi/application.rb, line 23
def deploy stage_name, env_name=nil, opts={}
  return deploy_stage(stage_name, opts) if env_name.blank?
  env = get_environment stage_name, env_name
  begin
    env.deploy opts
  rescue Interrupt
    log("Interrupt")
  end
end
deploy_stage(stage_name, opts={}) click to toggle source
# File lib/rebi/application.rb, line 33
def deploy_stage stage_name, opts={}
  threads = []
  Rebi.config.stage(stage_name).each do |env_name, conf|
    next if conf.blank?
    threads << Thread.new do
      begin
        deploy stage_name, env_name, opts
      rescue Exception => e
        error(e.message)
        opts[:trace] && e.backtrace.each do |m|
          error(m)
        end
      end
    end
  end

  ThreadsWait.all_waits(*threads)
end
environments() click to toggle source
# File lib/rebi/application.rb, line 15
def environments
  Rebi::Environment.all app_name
end
get_environment(stage_name, env_name) click to toggle source
# File lib/rebi/application.rb, line 152
def get_environment stage_name, env_name
  Rebi::Environment.new stage_name, env_name, client
end
log_label() click to toggle source
# File lib/rebi/application.rb, line 19
def log_label
  app_name
end
print_environment_status(stage_name, env_name) click to toggle source
print_environment_variables(stage_name, env_name, from_config=false) click to toggle source
print_list() click to toggle source
ssh_interaction(stage_name, env_name, opts={}) click to toggle source
# File lib/rebi/application.rb, line 127
def ssh_interaction stage_name, env_name, opts={}
  env_name = Rebi.config.stage(stage_name).keys.first unless env_name
  env = get_environment stage_name, env_name
  instance_ids = env.instance_ids
  return if instance_ids.empty?

  instance_ids.each.with_index do |i,idx|
    log "#{idx+1}) #{i}"
  end

  instance_id = instance_ids.first

  if instance_ids.count != 1 && opts[:select]

    idx = 0
    while idx < 1 || idx > instance_ids.count
      idx = ask_for_integer "Select an instance to ssh into:"
    end
    instance_id = instance_ids[idx - 1]
  end

  log "Preparing to ssh into [#{instance_id}]"
  env.ssh instance_id
end
terminate!(stage_name, env_name) click to toggle source
# File lib/rebi/application.rb, line 89
def terminate! stage_name, env_name
  env = get_environment stage_name, env_name
  begin
    req_id = env.terminate!
    ThreadsWait.all_waits(env.watch_request req_id) if req_id
  rescue Rebi::Error::EnvironmentInUpdating => e
    log("Environment in updating")
    raise e
  end
end