class Pvcglue::CLI

Public Class Methods

new(args = [], local_options = {}, config = {}) click to toggle source
Calls superclass method
# File lib/pvcglue/cli.rb, line 19
def initialize(args = [], local_options = {}, config = {})
  super
  Pvcglue.cloud.set_stage(options[:stage])
  Pvcglue.command_line_options = options
  # puts "/\\"*80
  # puts options.inspect
  # puts "*"*80
end

Public Instance Methods

b(mode) click to toggle source
# File lib/pvcglue/cli.rb, line 178
def b(mode)
  bypass(mode)
end
bootstrap(roles = 'all') click to toggle source
# File lib/pvcglue/cli.rb, line 53
def bootstrap(roles = 'all')
  Pvcglue::Bootstrap.run(roles)
end
build(roles = 'all') click to toggle source
# File lib/pvcglue/cli.rb, line 60
def build(roles = 'all')
  Pvcglue::Stack.build(Pvcglue.cloud.minions, roles)
end
bypass(mode) click to toggle source
# File lib/pvcglue/cli.rb, line 169
def bypass(mode)
  raise(Thor::Error, "invalid maintenance bypass mode :(  (Hint:  try on or off.)") unless mode.in?(%w(on off))
  Pvcglue.cloud.bypass_mode = mode
  Pvcglue::Packages.apply(:bypass_mode, :maintenance, Pvcglue.cloud.minions_filtered('lb'))
end
c(server='web') click to toggle source
# File lib/pvcglue/cli.rb, line 118
def c(server='web')
  console(server)
end
config(roles = 'all') click to toggle source
# File lib/pvcglue/cli.rb, line 67
def config(roles = 'all')
  if roles == 'all'
    ap Pvcglue.cloud.data
  else
    minions = Pvcglue.cloud.minions_filtered(roles)
    minions.each do |minion_name, minion|
      filtered = '[filtered]'
      # filtered = nil
      project = minion.merge({
        stages: filtered,
        all_data: filtered,
        cloud: filtered,
        project: filtered,
        stage: filtered,
        default_cloud_provider: filtered,
        connection: filtered
      })
      # project = project.select { |_, value| !value.nil? }
      data = minion.merge({
        cloud: filtered,
        all_data: filtered,
        connection: filtered,
        project: project
      })
      # ap data.select { |_, value| !value.nil? }
      ap(data, indent: 2)
    end

  end

end
console(role='web') click to toggle source
# File lib/pvcglue/cli.rb, line 102
def console(role='web')
  data = Pvcglue.cloud.minions_filtered(role)
  minion_name = data.keys.first
  minion = data.values.first
  working_dir = Pvcglue.cloud.deploy_to_app_current_dir
  Pvcglue.logger.warn("Opening Rails console on #{minion_name} (#{minion.public_ip}) as user '#{minion.remote_user_name}'...")
  Pvcglue.logger.debug("Project root:  #{working_dir}")

  cmd = "cd #{working_dir} && bundle exec rails c #{options[:stage].downcase}"
  # system(%(ssh -t deploy@#{node_data[:public_ip]} "cd #{working_dir} && echo 'Starting #{options[:stage].upcase} Rails console in #{working_dir}' && bundle exec rails c #{options[:stage].downcase}"))
  minion.connection.ssh!(minion.remote_user_name, '-t', cmd)
end
deploy() click to toggle source
# File lib/pvcglue/cli.rb, line 208
def deploy
  Pvcglue::Capistrano.deploy
end
destroy() click to toggle source
# File lib/pvcglue/cli.rb, line 261
def destroy
  Pvcglue::Local.destroy
end
info() click to toggle source
# File lib/pvcglue/cli.rb, line 37
def info
  puts "Pvcglue version #{Pvcglue::Version.version}"
  puts "Options:  #{options}"
  puts "  Manager settings:"
  Pvcglue.configuration.options.each { |k, v| puts "    #{k}=#{v}" }
end
kill() click to toggle source
# File lib/pvcglue/cli.rb, line 282
def kill
  Pvcglue::Local.kill
end
m(mode) click to toggle source
# File lib/pvcglue/cli.rb, line 162
def m(mode)
  maintenance(mode)
end
maint(mode) click to toggle source
# File lib/pvcglue/cli.rb, line 155
def maint(mode)
  maintenance(mode)
end
maintenance(mode) click to toggle source
# File lib/pvcglue/cli.rb, line 143
def maintenance(mode)
  raise(Thor::Error, "invalid maintenance mode :(  (Hint:  try on or off.)") unless mode.in?(%w(on off))
  # Pvcglue.cloud.maintenance_mode = mode
  # Pvcglue::Packages.apply(:maintenance_mode, :maintenance, Pvcglue.cloud.nodes_in_stage('lb'))
  Pvcglue.cloud.minions_filtered('lb').each do |minioin_name, minion|
    Pvcglue::Packages::MaintenanceMode.apply(minion, {maintenance_mode: mode})
  end
end
pvcify() click to toggle source
# File lib/pvcglue/cli.rb, line 226
def pvcify
  Pvcglue::Pvcify.run
end
rake(*tasks) click to toggle source
# File lib/pvcglue/cli.rb, line 215
def rake(*tasks)
  if Pvcglue.cloud.stage_name == 'production'
    # if Pvcglue.cloud.stage_name == 'local'
    raise(Thor::Error, "\nDidn't think so!\n") unless yes?("\n\nStop!  Think!  Are you sure you want to do this on the #{Pvcglue.cloud.stage_name} stage? (y/N)")
  end
  Pvcglue::Capistrano.rake(tasks)
end
rebuild() click to toggle source
# File lib/pvcglue/cli.rb, line 289
def rebuild
  Pvcglue::Local.rebuild
end
render(template_file_name, machine_name = nil) click to toggle source
# File lib/pvcglue/cli.rb, line 303
def render(template_file_name, machine_name = nil)
  minion = machine_name.nil? ? nil : Pvcglue.cloud.find_minion_by_name(machine_name)
  template = Tilt.new(Pvcglue.template_file_name(template_file_name))
  data = template.render(self, minion: minion)
  puts data
  puts "---> Rendered '#{template_file_name}' from #{Pvcglue.template_file_name(template_file_name)}"
end
restart() click to toggle source
# File lib/pvcglue/cli.rb, line 254
def restart
  Pvcglue::Local.restart
end
s(server='web') click to toggle source
# File lib/pvcglue/cli.rb, line 201
def s(server='web')
  sh(server)
end
sh(server='web') click to toggle source
# File lib/pvcglue/cli.rb, line 186
def sh(server='web') # `shell` is a Thor reserved word
  data = Pvcglue.cloud.minions_filtered(server)
  minion_name = data.keys.first
  minion = data.values.first
  # puts "*"*80
  # puts node.inspect
  Pvcglue.logger.warn("Connecting to #{minion_name} (#{minion.public_ip}) as user '#{minion.remote_user_name}'...")
  # puts "Connection to #{minion_name} (#{minion.public_ip}) as user '#{minion.remote_user_name}'..."
  # system("ssh -p #{Pvcglue.cloud.port_in_context(:shell)} #{minion.remote_user_name}@#{minion[:public_ip]}")
  minion.connection.ssh!(minion.remote_user_name, '', '')
end
show() click to toggle source
# File lib/pvcglue/cli.rb, line 46
def show
  info
end
start() click to toggle source
# File lib/pvcglue/cli.rb, line 233
def start
  Pvcglue::Local.start
end
status() click to toggle source
# File lib/pvcglue/cli.rb, line 275
def status
  Pvcglue::Local.status
end
stop() click to toggle source
# File lib/pvcglue/cli.rb, line 247
def stop
  Pvcglue::Local.stop
end
suspend() click to toggle source
# File lib/pvcglue/cli.rb, line 268
def suspend
  Pvcglue::Local.suspend
end
up() click to toggle source
# File lib/pvcglue/cli.rb, line 240
def up
  Pvcglue::Local.up
end
update_config() click to toggle source
# File lib/pvcglue/cli.rb, line 296
def update_config
  Pvcglue::Local.update_local_config_from_cache
end
version() click to toggle source
# File lib/pvcglue/cli.rb, line 30
def version
  byebug
  puts Pvcglue::Version.version
end