Skip to content

Instantly share code, notes, and snippets.

@SnacksOnAPlane
Created March 30, 2017 20:35
Show Gist options
  • Save SnacksOnAPlane/ac0493abd7f36d717f8c01920d8ca8b0 to your computer and use it in GitHub Desktop.
Save SnacksOnAPlane/ac0493abd7f36d717f8c01920d8ca8b0 to your computer and use it in GitHub Desktop.
import pexpect
from pexpect import pxssh
import pdb
def do_lines(ssh, lines):
for line in lines.split("\n"):
line = line.strip()
print(line)
ssh.sendline(line)
ssh.prompt(timeout=300)
print(ssh.before)
def generate_id_list():
# generate and download call IDs
ssh = pxssh.pxssh()
ssh.PROMPT = "pry"
ssh.login('web01.production.callscoring.aws.callrail.com','crconsole',auto_prompt_reset=False)
do_lines(ssh, '''require 'rake';
CallScoring::Application.load_tasks;
Rake::Task['export:for_reloading'].invoke;''')
ssh.close()
def copy_id_list_to_local():
scp = pexpect.spawn("scp crconsole@web01.production.callscoring.aws.callrail.com:/tmp/call_ids.txt /tmp/call_ids.txt")
scp.expect(pexpect.EOF)
print(scp.before)
def upload_id_list_to_prod():
# upload call IDs to prod console
scp = pexpect.spawn("scp /tmp/call_ids.txt crconsole@console01.production.aws.callrail.com:/tmp/call_ids.txt")
scp.expect(pexpect.EOF)
print(scp.before)
def generate_call_csv():
# generate CSV for import into call scoring
ssh = pxssh.pxssh()
ssh.PROMPT = "pry"
ssh.login('console01.production.aws.callrail.com','crconsole', auto_prompt_reset=False, login_timeout=45)
do_lines(ssh, '''ids = IO.read("/tmp/call_ids.txt").split("\\n");
calls = Call.where(id: ids);
CSV.open("/tmp/export-scoring.csv", "wb") do |csv|
calls.each do |c|
c = c.decorate
csv << [ c.id, c.duration, c.recording_mp3.expiring_url(time=1.week).to_s, "https://app.callrail.com#{c.web_waveform_path('primary')}", "https://app.callrail.com#{c.web_waveform_path('secondary')}", c.start_time, c.network, c.company.id, c.company.name ]
end
end;''')
ssh.close()
def download_csv_to_local():
# download CSV from prod
scp = pexpect.spawn("scp crconsole@console01.production.aws.callrail.com:/tmp/export-scoring.csv /tmp/export-scoring.csv")
scp.expect(pexpect.EOF)
print(scp.before)
def upload_csv_to_scoring():
scp = pexpect.spawn("scp /tmp/export-scoring.csv crconsole@web01.production.callscoring.aws.callrail.com:/tmp/export-scoring.csv")
scp.expect(pexpect.EOF)
print(scp.before)
def import_csv_into_scoring():
ssh = pxssh.pxssh()
ssh.PROMPT = "pry"
ssh.login('web01.production.callscoring.aws.callrail.com','crconsole',auto_prompt_reset=False)
do_lines(ssh, '''require 'rake';
CallScoring::Application.load_tasks;
Rake::Task['import:refresh'].invoke('/tmp/export-scoring.csv');''')
ssh.close()
#generate_call_csv()
#download_csv_to_local()
upload_csv_to_scoring()
import_csv_into_scoring()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment