class PcfPause::Pause
Constants
- TARGET_JOBS
Attributes
logger[R]
Public Class Methods
new(logger = Logger.new(STDOUT))
click to toggle source
# File lib/pcf_pause/pause.rb, line 23 def initialize(logger = Logger.new(STDOUT)) @logger = logger end
Public Instance Methods
connect_to_bosh(password, url, username)
click to toggle source
# File lib/pcf_pause/pause.rb, line 76 def connect_to_bosh(password, url, username) logger.info("Connecting to OpsMan at #{url}") ops_man = PcfPause::OpsManInfo.new(url, username, password) manifest = ops_man.get_director_manifest uaa_secret = manifest['jobs'][0]['properties']['uaa']['clients']['ops_manager']['secret'] director_ip = manifest['jobs'][0]['properties']['director']['address'] product_id = ops_man.get_product_id 'cf' bosh_vms_value = ops_man.get_vm_names product_id bosh_command = "BOSH_CLIENT=ops_manager BOSH_CLIENT_SECRET=#{uaa_secret} BUNDLE_GEMFILE=/home/tempest-web/tempest/web/vendor/bosh/Gemfile bundle exec bosh -n --ca-cert /var/tempest/workspaces/default/root_ca_certificate -d /var/tempest/workspaces/default/deployments/#{product_id}.yml -t #{director_ip}" return bosh_command, bosh_vms_value end
exec_ssh(ssh, command)
click to toggle source
# File lib/pcf_pause/pause.rb, line 102 def exec_ssh(ssh, command) logger.debug 'SSH: executing command' ssh.exec!(command) do |ch, stream, data| puts data ch.on_request "exit-status" do |ch, data| exit_status = data.read_long raise "process terminated with exit status: #{exit_status}" if exit_status != 0 end end end
get_job_sequence(bosh_vms_value)
click to toggle source
# File lib/pcf_pause/pause.rb, line 34 def get_job_sequence(bosh_vms_value) bosh_vms_value.select do |vm_name| TARGET_JOBS.any? { |job| vm_name.start_with?(job) } end end
smoke_tests(url, username, password, key_path='')
click to toggle source
# File lib/pcf_pause/pause.rb, line 40 def smoke_tests(url, username, password, key_path='') bosh_command, bosh_vms_value = connect_to_bosh(password, url, username) Net::SSH.start(URI.parse(url).host, 'ubuntu', keys: [key_path]) do |ssh| exec_ssh ssh, "#{bosh_command} #{smoke_tests_command}" end logger.info 'Smoke tests have finished' end
smoke_tests_command()
click to toggle source
# File lib/pcf_pause/pause.rb, line 98 def smoke_tests_command "run errand smoke-tests" end
start(url, username, password, key_path='')
click to toggle source
# File lib/pcf_pause/pause.rb, line 49 def start(url, username, password, key_path='') bosh_command, bosh_vms_value = connect_to_bosh(password, url, username) logger.info("Preparing to start instances") Net::SSH.start(URI.parse(url).host, 'ubuntu', keys: [key_path]) do |ssh| exec_ssh ssh, "#{bosh_command} #{start_command}" logger.info "Started" end logger.info 'All instances started' end
start_command()
click to toggle source
# File lib/pcf_pause/pause.rb, line 90 def start_command "start --force" end
stop(url, username, password, key_path='')
click to toggle source
# File lib/pcf_pause/pause.rb, line 61 def stop(url, username, password, key_path='') bosh_command, bosh_vms_value = connect_to_bosh(password, url, username) stop_sequence = get_job_sequence(bosh_vms_value).reverse logger.info("Preparing to stop instances #{stop_sequence.join(', ')}") Net::SSH.start(URI.parse(url).host, 'ubuntu', keys: [key_path]) do |ssh| stop_sequence.each do |job_name| exec_ssh ssh, "#{bosh_command} #{stop_command(job_name)}" logger.info "Stopped #{job_name}" end end logger.info 'All instances stopped' end
stop_command(job_name)
click to toggle source
# File lib/pcf_pause/pause.rb, line 94 def stop_command(job_name) "stop #{job_name} --hard" end