class Appfront::Command::Ps

Public Class Methods

force_restart(args, opts) click to toggle source
# File lib/appfront/command/ps.rb, line 17
def self.force_restart(args, opts)
  find_deploy! opts
  api.put "/flow/#{@deploy}/force-restart"

  spinner "Force restarting Deploy..." do
    loop do
      sleep 3
      info = api.get "/flow/#{@deploy}"
      break if info['status'] == 'running'
    end
  end
  puts "\n"
end
reload(args, opts) click to toggle source
# File lib/appfront/command/ps.rb, line 3
def self.reload(args, opts)
  find_deploy! opts
  api.put "/flow/#{@deploy}/reload"

  spinner "Reloading Deploy..." do
    loop do
      sleep 3
      info = api.get "/flow/#{@deploy}"
      break if info['status'] == 'running' or info['status'] == 'pending_reload'
    end
  end
  puts "\n"
end
run(settings, opts) click to toggle source
# File lib/appfront/command/ps.rb, line 78
def self.run(settings, opts)
  find_deploy! opts

  count  = 1
  
  unless count
    puts 'Usage: appfront ps:run'
    exit 1
  end

  api.put "/flow/#{@deploy}/scale", instances: count

  spinner "Running deploy instance..." do
    loop do
      sleep 3
      info = api.get "/flow/#{@deploy}"
      break if info['status'] == 'running' or info['status'] == 'new' or info['status'] == 'pending_recovery'
    end
  end

  puts "Now running #{count} instances"
end
scale(settings, opts) click to toggle source
# File lib/appfront/command/ps.rb, line 101
def self.scale(settings, opts)
  find_deploy! opts

  count, mode = nil
  settings.each do |s|
    p, v = s.split('=',2)
    count  = v if p == 'instances'
    mode = nil
  end

  p, v = settings.first.split('=',2)

  if p == 'instances'

    unless count
      puts 'Usage: appfront ps:scale instances=N'
      exit 1
    end

    api.put "/flow/#{@deploy}/scale", instances: count

    spinner "Scaling deploy instances..." do
      loop do
        sleep 3
        info = api.get "/flow/#{@deploy}"
        break if info['status'] == 'running' or info['status'] == 'new' or info['status'] == 'pending_recovery'
      end
    end

    puts "Now deploying #{count} instances"
  elsif p == 'memory'
    count = v

    api.put "/flow/#{@deploy}/memory", memory: count

    spinner "Scaling deploy memory..." do
      loop do
        sleep 3
        info = api.get "/flow/#{@deploy}"
        break if info['status'] == 'pending_reload' or info['status'] == 'pending_reset'
      end
    end
    puts "Now deploying with #{count} memory"
  else
    puts 'Usage: appfront ps:scale instances=N|memory=MB' 
    exit 1
  end
end
scale_down(opts) click to toggle source
# File lib/appfront/command/ps.rb, line 68
def self.scale_down(opts)
  find_deploy! opts

  spinner "Scaling down deploy instances..." do
      api.put "/flow/#{@deploy}/scale/down"
  end

  puts "\n"
end
scale_up(opts) click to toggle source
# File lib/appfront/command/ps.rb, line 59
def self.scale_up(opts)
  find_deploy! opts

  spinner "Scaling up deploy instances..." do
      api.put "/flow/#{@deploy}/scale/up"
  end
  puts "\n"
end
start(args, opts) click to toggle source
# File lib/appfront/command/ps.rb, line 45
def self.start(args, opts)
  find_deploy! opts
  api.put "/flow/#{@deploy}/start"

  spinner "Starting Deploy..." do
    loop do
      sleep 3
      info = api.get "/flow/#{@deploy}"
      break if info['status'] == 'available'
    end
  end
  puts "\n"
end
stop(args, opts) click to toggle source
# File lib/appfront/command/ps.rb, line 31
def self.stop(args, opts)
  find_deploy! opts
  api.put "/flow/#{@deploy}/stop"

  spinner "Stopping Deploy..." do
    loop do
      sleep 3
      info = api.get "/flow/#{@deploy}"
      break if info['status'] == 'deactivated' or info['status'] == 'stopped'
    end
  end
  puts "\n"
end

Private Class Methods

time_ago(since) click to toggle source
# File lib/appfront/command/ps.rb, line 152
def self.time_ago(since)
  if since.is_a?(String)
    since = Time.parse(since)
  end

  elapsed = Time.now - since

  message = since.strftime("%Y/%m/%d %H:%M:%S")
  if elapsed <= 60
    message << " (~ #{elapsed.floor}s ago)"
  elsif elapsed <= (60 * 60)
    message << " (~ #{(elapsed / 60).floor}m ago)"
  elsif elapsed <= (60 * 60 * 25)
    message << " (~ #{(elapsed / 60 / 60).floor}h ago)"
  end
  message
end