#!/usr/bin/env python3 # -*- coding: utf-8 -*- ''' Criticality: High Checks that MediaWorker can be reached using SSH ''' import os import imp import sys import subprocess GREEN = '\033[92m' RED = '\033[91m' DEF = '\033[0m' os.chdir(os.path.dirname(__file__)) if not os.path.isfile('../utils.py'): print('conf.sh not found') sys.exit(1) es_utils = imp.load_source('es_utils', '../utils.py') conf = es_utils.load_conf() def check_ssh(ip): cmd = 'ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no %s ls /tmp' % ip print('Connecting to MediaWorker: %s' % cmd) try: subprocess.check_output(cmd, shell=True, timeout=2) print('%sLogged in successfully%s' % (GREEN, DEF)) except subprocess.CalledProcessError: print('%sFailed to login using SSH, run ssh-copy-id %s %s' % (RED, ip, DEF)) return False return True def run_tests(ip): print('Updating envsetup tests on MediaWorker') cmd = 'ssh -t %s cd /root/envsetup && git pull' % ip os.system(cmd) print('Running envsetup tests on MediaWorker') cmd = 'ssh -t %s /root/envsetup/tester.py' % ip status = os.system(cmd) if status == 0: subprocess.check_output(cmd, shell=True, timeout=10) print('%sAll tests completed on MediaWorker%s' % (GREEN, DEF)) return True else: print('%apt-get update failed on MediaWorker%s' % (RED, DEF)) return False def check_celerity_connectivity(ip): h = conf.get('MS_SERVER_NAME') cmd = "ssh %s curl -k https://%s:6200" % (ip, h) print('Checking celerity connectivity: %s' % cmd) try: d = subprocess.check_output(cmd, shell=True, timeout=5) except exception: d = '' if "Celerity tasks server" in d: print('%sSuccessfully reached tasks server%s' % (GREEN, DEF)) return True print('%sFailed to reach tasks server%s' % (RED, DEF)) return False all_ok = True worker_ip = conf.get('CELERITY_WORKER_IP') if worker_ip != '127.0.1.1': if not check_ssh(worker_ip): all_ok = False else: if not check_celerity_connectivity(worker_ip): all_ok = False if not run_tests(worker_ip): all_ok = False sys.exit(int(not all_ok))