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
# File lib/rebi/application.rb, line 71 def print_environment_status stage_name, env_name if env_name.blank? Rebi.config.stage(stage_name).each do |e_name, conf| next if conf.blank? print_environment_status stage_name, e_name end return end env = get_environment stage_name, env_name env.check_created! log("--------- CURRENT STATUS -------------") log("id: #{env.id}") log("Status: #{env.status}") log("Health: #{env.health}") log("--------------------------------------") end
print_environment_variables(stage_name, env_name, from_config=false)
click to toggle source
# File lib/rebi/application.rb, line 52 def print_environment_variables stage_name, env_name, from_config=false if env_name.blank? Rebi.config.stage(stage_name).each do |e_name, conf| next if conf.blank? print_environment_variables stage_name, e_name, from_config end return end env = get_environment stage_name, env_name env_vars = from_config ? env.config.environment_variables : env.environment_variables log("#{from_config ? "Config" : "Current"} environment variables") env_vars.each do |k,v| log("#{k}=#{v}") end log("--------------------------------------") end
print_list()
click to toggle source
# File lib/rebi/application.rb, line 100 def print_list others = [] configed = Hash.new {|h, k| h[k] = {} } environments.each do |e| if env_conf = Rebi.config.env_by_name(e.environment_name) configed[env_conf.stage.to_s].merge! env_conf.env_name.to_s => env_conf.name else others << e.environment_name end end configed.each do |stg, envs| log h1("#{stg.camelize}") envs.each do |kname, env_name| env = get_environment stg, kname log "\t[#{kname.camelize}] #{env.name} #{h2(env.status)} #{hstatus(env.health)}" end end if others.present? log h1("Others") others.each do |e| log "\t- #{e}" end end end
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