def main(): circle_aritfact = sys.argv[1] env_file = sys.argv[2] instance_role = sys.argv[3] time_to_live = sys.argv[4] with open(env_file, 'r') as json_file: env_results = json.load(json_file) filtered_results = [ env_result for env_result in env_results if env_result["Role"] == instance_role ] for env in filtered_results: print(f'Downloading server log from {env.get("Role", "Unknown role")}') ssh_string = 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null {}@{} ' \ '"sudo chmod -R 755 /var/log/demisto"' scp_string = 'scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ' \ '{}@{}:/var/log/demisto/server.log {} || echo "WARN: Failed downloading server.log"' try: subprocess.check_output(ssh_string.format(env["SSHuser"], env["InstanceDNS"]), shell=True) except subprocess.CalledProcessError as exc: print(exc.output) try: server_ip = env["InstanceDNS"].split('.')[0] subprocess.check_output(scp_string.format( env["SSHuser"], env["InstanceDNS"], "{}/server_{}_{}.log".format(circle_aritfact, env["Role"].replace(' ', ''), server_ip)), shell=True) except subprocess.CalledProcessError as exc: print(exc.output) if time_to_live: print(f'Skipping - Time to live was set to {time_to_live} minutes') return if os.path.isfile("./Tests/is_build_passed_{}.txt".format( env["Role"].replace(' ', ''))): print(f'Destroying instance {env.get("Role", "Unknown role")}') rminstance = aws_functions.destroy_instance( env["Region"], env["InstanceID"]) if aws_functions.isError(rminstance): print_error(rminstance) else: print_warning( f'Tests failed on {env.get("Role", "Unknown role")}, keeping instance alive' )
def main(): circle_aritfact = sys.argv[1] envfile = sys.argv[2] with open(envfile, 'r') as json_file: env_results = json.load(json_file) for env in env_results: if not os.path.isfile("./Tests/is_build_failed_{}.txt".format( env["Role"].replace(' ', ''))): ssh_string = 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null {}@{} ' \ '"sudo chmod -R 755 /var/log/demisto"' scp_string = 'scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ' \ '{}@{}:/var/log/demisto/server.log {} || echo "WARN: Failed downloading server.log"' try: subprocess.check_output(ssh_string.format( env["SSHuser"], env["InstanceDNS"]), shell=True) except subprocess.CalledProcessError as exc: print(exc.output) try: subprocess.check_output(scp_string.format( env["SSHuser"], env["InstanceDNS"], "{}/server_{}.log".format(circle_aritfact, env["Role"].replace(' ', ''))), shell=True) except subprocess.CalledProcessError as exc: print(exc.output) rminstance = aws_functions.destroy_instance( env["Region"], env["InstanceID"]) if aws_functions.isError(rminstance): print_error(rminstance) else: print_warning("Tests failed on {} ,keeping instance alive".format( env["Role"]))
def main(): install_logging('Destroy_instances.log') circle_aritfact = sys.argv[1] env_file = sys.argv[2] instance_role = sys.argv[3] time_to_live = sys.argv[4] with open(env_file, 'r') as json_file: env_results = json.load(json_file) filtered_results = [ env_result for env_result in env_results if env_result["Role"] == instance_role ] for env in filtered_results: logging.info( f'Downloading server log from {env.get("Role", "Unknown role")}') ssh_string = 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null {}@{} ' \ '"sudo chmod -R 755 /var/log/demisto"' scp_string = 'scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ' \ '{}@{}:/var/log/demisto/server.log {} || echo "WARN: Failed downloading server.log"' try: logging.debug( f'Changing permissions of folder /var/log/demisto on server {env["InstanceDNS"]}' ) subprocess.check_output(ssh_string.format(env["SSHuser"], env["InstanceDNS"]), shell=True) except subprocess.CalledProcessError: logging.exception( f'Failed changing permissions of folder /var/log/demisto on server {env["InstanceDNS"]}' ) try: logging.debug( f'Downloading server logs from server {env["InstanceDNS"]}') server_ip = env["InstanceDNS"].split('.')[0] subprocess.check_output(scp_string.format( env["SSHuser"], env["InstanceDNS"], "{}/server_{}_{}.log".format(circle_aritfact, env["Role"].replace(' ', ''), server_ip)), shell=True) except subprocess.CalledProcessError: logging.exception( f'Failed downloading server logs from server {env["InstanceDNS"]}' ) try: container_engine_type = 'podman' if is_redhat_instance( env["InstanceDNS"]) else 'docker' logging.debug( f'logging out of {container_engine_type} on server for server {env["InstanceDNS"]}' ) subprocess.check_output( f'ssh -o StrictHostKeyChecking=no {env["SSHuser"]}@{env["InstanceDNS"]} ' f'cd /home/demisto && sudo -u demisto {container_engine_type} logout' .split()) except Exception: logging.exception( f'Could not log out of {container_engine_type} on {env["InstanceDNS"]}' ) if time_to_live: logging.info( f'Skipping - Time to live was set to {time_to_live} minutes') continue if os.path.isfile("./Tests/is_build_passed_{}.txt".format( env["Role"].replace(' ', ''))): logging.info( f'Destroying instance with role - {env.get("Role", "Unknown role")} and IP - ' f'{env["InstanceDNS"]}') rminstance = aws_functions.destroy_instance( env["Region"], env["InstanceID"]) if aws_functions.isError(rminstance): logging.error(rminstance['Message']) else: logging.warning( f'Tests failed on {env.get("Role", "Unknown role")}, keeping instance alive' )