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