def terminate_edge_node()

in infrastructure-provisioning/src/general/scripts/aws/project_terminate.py [0:0]


def terminate_edge_node(tag_name, project_name, tag_value, nb_sg, edge_sg, de_sg, emr_sg, endpoint_name,
                        service_base_name):
    logging.info('Terminating EMR cluster')
    try:
        clusters_list = datalab.meta_lib.get_emr_list(tag_name)
        if clusters_list:
            for cluster_id in clusters_list:
                client = boto3.client('emr')
                cluster = client.describe_cluster(ClusterId=cluster_id)
                cluster = cluster.get("Cluster")
                emr_name = cluster.get('Name')
                if '{}'.format(tag_value[:-1]) in emr_name:
                    datalab.actions_lib.terminate_emr(cluster_id)
                    logging.info("The EMR cluster {} has been terminated successfully".format(emr_name))
        else:
            logging.info("There are no EMR clusters to terminate.")
    except Exception as err:
        datalab.fab.append_result("Failed to terminate EMR cluster.", str(err))
        sys.exit(1)

    logging.info("Terminating EDGE and notebook instances")
    try:
        datalab.actions_lib.remove_ec2(tag_name, tag_value)
    except Exception as err:
        datalab.fab.append_result("Failed to terminate instances.", str(err))
        sys.exit(1)

    logging.info("Removing s3 bucket")
    try:
        datalab.actions_lib.remove_s3('edge', project_name)
    except Exception as err:
        datalab.fab.append_result("Failed to remove buckets.", str(err))
        sys.exit(1)

    logging.info("Removing IAM roles and profiles")
    try:
        datalab.actions_lib.remove_all_iam_resources('notebook', project_name, endpoint_name)
        datalab.actions_lib.remove_all_iam_resources('edge', project_name, endpoint_name)
    except Exception as err:
        datalab.fab.append_result("Failed to remove IAM roles and profiles.", str(err))
        sys.exit(1)

    logging.info("Deregistering project specific notebook's AMI")
    try:
        datalab.actions_lib.deregister_image('{}-{}-{}-*'.format(service_base_name, project_name, endpoint_name))
    except Exception as err:
        datalab.fab.append_result("Failed to deregister images.", str(err))
        sys.exit(1)

    logging.info("Removing security groups")
    try:
        datalab.actions_lib.remove_sgroups(emr_sg)
        datalab.actions_lib.remove_sgroups(de_sg)
        datalab.actions_lib.remove_sgroups(nb_sg)
        datalab.actions_lib.remove_sgroups(edge_sg)
    except Exception as err:
        datalab.fab.append_result("Failed to remove Security Groups.", str(err))
        sys.exit(1)

    logging.info("Removing private subnet")
    try:
        datalab.actions_lib.remove_subnets(tag_value)
    except Exception as err:
        datalab.fab.append_result("Failed to remove subnets.", str(err))
        sys.exit(1)

    logging.info("Removing project route tables")
    try:
        datalab.actions_lib.remove_route_tables("Name", False, '{}-{}-{}-nat-rt'.format(service_base_name, project_name, endpoint_name))
    except Exception as err:
        datalab.fab.append_result("Failed to remove project route table.", str(err))
        sys.exit(1)