コード例 #1
0
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'
            )
コード例 #2
0
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"]))
コード例 #3
0
ファイル: destroy_instances.py プロジェクト: mtkb2/content
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'
            )