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."
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"
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"
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)
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)
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)
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)
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."
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 ..."
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)