Exemple #1
0
def create_amis(conn, user_vpc, lab_tag):
    """Create all images for lab"""

    running_labs = get_running_labs(conn, user_vpc)

    cfg = util.read_config(LAB_DIR + lab_tag.rsplit('-', 1)[0] + '/instances.cfg')
    instances = inst.get_vpc_instances(conn, user_vpc)

    lab_instances = []
    for instance in instances:
        if 'Lab' in instance.tags:
            if instance.tags['Lab'] == lab_tag and instance.tags['AMI-Build'] == 'True':
                lab_instances.append(instance)


    print "Creating AMI's for lab: {0}".format(lab_tag)
    for instance in lab_instances:
        name_tag = TRAINER + '-{0}-'.format(VPC) + \
                             '{0}-'.format(lab_tag.rsplit('-', 1)[0]) + \
                             '{0}-'.format(instance.tags['Script']) + \
                             '{0}'.format(instance.tags['AMI-Key'])

        ami = conn.create_image(instance.id, name_tag, '{0} lab AMI'.format(lab_tag.rsplit('-', 1)[0]))

        # tags
        tags = {'Name': '{0}'.format(name_tag),
                'AMI-Key': '{0}'.format(instance.tags['AMI-Key']),
                'Lab': '{0}'.format(lab_tag.rsplit('-', 1)[0])}

        conn.create_tags(ami, tags)

    print "AMI build trigger completed successfully ..."
    print "Note: It could take 15-20 minutes for the AMI build to complete."
Exemple #2
0
def get_running_labs(conn, user_vpc):
    """List/Return all running labs"""

    labs = []
    instances = inst.get_vpc_instances(conn, user_vpc)

    # get all lab tags
    for instance in instances:
        if 'Lab' in instance.tags:
            labs.append(instance.tags['Lab'])

    # remove duplicates
    labs = list(set(labs))

    labs.sort()

    if labs:
        print "\nRunning labs:"
        for lab in labs:
            print " ", lab
        print ""

        return labs
    else:
        print "\nNo labs running ...\n"
Exemple #3
0
def get_running_labs(conn, user_vpc):
    """List/Return all running labs"""

    labs = []
    instances = inst.get_vpc_instances(conn, user_vpc)

    # get all lab tags
    for instance in instances:
        if "Lab" in instance.tags:
            labs.append(instance.tags["Lab"])

    # remove duplicates
    labs = list(set(labs))

    labs.sort()

    if labs:
        print "\nRunning labs:"
        for lab in labs:
            print " ", lab
        print ""

        return labs
    else:
        print "\nNo labs running ...\n"
Exemple #4
0
def terminate_lab(conn, user_vpc, lab_tag):
    """Terminate a single lab and all instances"""
    instance_ids = []
    instances = inst.get_vpc_instances(conn, user_vpc)

    # get all lab instances
    for instance in instances:
        if 'Lab' in instance.tags:
            if instance.tags['Lab'] == lab_tag:
                instance_ids.append(instance.id)

    conn.terminate_instances(instance_ids=instance_ids)

    with open(USER_FILE) as users:
        for user in users:
            os.remove('/host/share/{0}/{1}.txt'.format(user.strip(), lab_tag))

    print "\nTerminate request sent for all lab instances ..."
    print "Lab '{0}' has been deleted ...\n".format(lab_tag)
Exemple #5
0
def calculate_lab_tag(conn, user_vpc, lab):
    """Auto-increment lab ID numbers"""

    labs = []
    instances = inst.get_vpc_instances(conn, user_vpc)

    # get all lab tags
    for instance in instances:
        if "Lab" in instance.tags:
            if instance.tags["Lab"].startswith(lab):
                labs.append(instance.tags["Lab"])

    # remove duplicates
    labs = list(set(labs))

    # find first unused number
    count = 1
    while lab + "-" + str(count) in labs:
        count += 1

    return lab + "-" + str(count)
Exemple #6
0
def calculate_lab_tag(conn, user_vpc, lab):
    """Auto-increment lab ID numbers"""

    labs = []
    instances = inst.get_vpc_instances(conn, user_vpc)

    # get all lab tags
    for instance in instances:
        if 'Lab' in instance.tags:
            if instance.tags['Lab'].startswith(lab):
                labs.append(instance.tags['Lab'])

    # remove duplicates
    labs = list(set(labs))

    # find first unused number
    count = 1
    while lab + '-' + str(count) in labs:
        count += 1

    return lab + '-' + str(count)
Exemple #7
0
def terminate_lab(conn, user_vpc, lab_tag):
    """Terminate a single lab and all instances"""
    instance_ids = []
    instances = inst.get_vpc_instances(conn, user_vpc)

    # get all lab instances
    for instance in instances:
        if "Lab" in instance.tags:
            if instance.tags["Lab"] == lab_tag:
                instance_ids.append(instance.id)

    conn.terminate_instances(instance_ids=instance_ids)

    try:
        with open("/host/{0}/key-pairs.txt".format(VPC)) as users:
            for user in users:
                os.remove("/host/{0}/users/{1}/{2}.txt".format(VPC, user.split("-")[0], lab_tag))
    except:
        print "No user files removed..."

    print "\nTerminate request sent for all lab instances ..."
    print "Lab '{0}' has been deleted ...\n".format(lab_tag)
Exemple #8
0
def create_amis(conn, user_vpc, lab_tag):
    """Create all images for lab"""

    running_labs = get_running_labs(conn, user_vpc)

    cfg = util.read_config(LAB_DIR + lab_tag.rsplit('-', 1)[0] +
                           '/instances.cfg')
    instances = inst.get_vpc_instances(conn, user_vpc)

    lab_instances = []
    for instance in instances:
        if 'Lab' in instance.tags:
            if instance.tags['Lab'] == lab_tag and instance.tags[
                    'AMI-Build'] == 'True':
                lab_instances.append(instance)

    print "Creating AMI's for lab: {0}".format(lab_tag)
    for instance in lab_instances:
        name_tag = TRAINER + '-{0}-'.format(VPC) + \
                             '{0}-'.format(lab_tag.rsplit('-', 1)[0]) + \
                             '{0}-'.format(instance.tags['Script']) + \
                             '{0}'.format(instance.tags['AMI-Key'])

        ami = conn.create_image(
            instance.id, name_tag,
            '{0} lab AMI'.format(lab_tag.rsplit('-', 1)[0]))

        # tags
        tags = {
            'Name': '{0}'.format(name_tag),
            'AMI-Key': '{0}'.format(instance.tags['AMI-Key']),
            'Lab': '{0}'.format(lab_tag.rsplit('-', 1)[0])
        }

        conn.create_tags(ami, tags)

    print "AMI build trigger completed successfully ..."
    print "Note: It could take 15-20 minutes for the AMI build to complete."
Exemple #9
0
def create_amis(conn, user_vpc, lab_tag):
    """Create all images for lab"""

    running_labs = get_running_labs(conn, user_vpc)

    cfg = util.read_config(LAB_DIR + lab_tag.rsplit("-", 1)[0] + "/instances.cfg")
    instances = inst.get_vpc_instances(conn, user_vpc)

    lab_instances = []
    for instance in instances:
        if "Lab" in instance.tags:
            if instance.tags["Lab"] == lab_tag and instance.tags["AMI-Build"] == "True":
                lab_instances.append(instance)

    print "Creating AMI's for lab: {0}".format(lab_tag)
    for instance in lab_instances:
        name_tag = (
            TRAINER
            + "-{0}-".format(VPC)
            + "{0}-".format(lab_tag.rsplit("-", 1)[0])
            + "{0}-".format(instance.tags["Script"])
            + "{0}".format(instance.tags["AMI-Key"])
        )

        ami = conn.create_image(instance.id, name_tag, "{0} lab AMI".format(lab_tag.rsplit("-", 1)[0]))

        # tags
        tags = {
            "Name": "{0}".format(name_tag),
            "AMI-Key": "{0}".format(instance.tags["AMI-Key"]),
            "Lab": "{0}".format(lab_tag.rsplit("-", 1)[0]),
        }

        conn.create_tags(ami, tags)

    print "Completed ..."
Exemple #10
0
def terminate_lab(conn, user_vpc, lab_tag):
    """Terminate a single lab and all instances"""
    instance_ids = []
    instances = inst.get_vpc_instances(conn, user_vpc)

    # get all lab instances
    for instance in instances:
        if 'Lab' in instance.tags:
            if instance.tags['Lab'] == lab_tag:
                instance_ids.append(instance.id)

    conn.terminate_instances(instance_ids=instance_ids)

    try:
        with open('/host/{0}/key-pairs.txt'.format(VPC)) as users:
            for user in users:
                os.remove('/host/{0}/users/{1}/{2}.txt'.format(
                    VPC,
                    user.split('-')[0], lab_tag))
    except:
        print "No user files removed..."

    print "\nTerminate request sent for all lab instances ..."
    print "Lab '{0}' has been deleted ...\n".format(lab_tag)