def provide_index()

in infrastructure-provisioning/src/general/lib/aws/meta_lib.py [0:0]


def provide_index(resource_type, tag_name, tag_value=''):
    try:
        ids = []
        if resource_type == 'EMR':
            if tag_value:
                list = get_emr_list(tag_value, 'Value', True)
            else:
                list = get_emr_list(tag_name, 'Key', True)
            emr = boto3.client('emr')
            for i in list:
                response = emr.describe_cluster(ClusterId=i)
                time.sleep(5)
                number = response.get('Cluster').get('Name').split('-')[-1]
                if number not in ids:
                    ids.append(int(number))
        elif resource_type == 'EC2':
            if tag_value:
                list = get_ec2_list(tag_name, tag_value)
            else:
                list = get_ec2_list(tag_name)
            for i in list:
                for tag in i.tags:
                    if tag['Key'] == 'Name':
                        ids.append(int(tag['Value'].split('-')[-1]))
        else:
            print("Incorrect resource type!")
        index = 1
        while True:
            if index not in ids:
                break
            else:
                index += 1
        return index
    except Exception as err:
        logging.error("Error with providing index: " + str(err) + "\n Traceback: " + traceback.print_exc(
            file=sys.stdout))
        append_result(str({"error": "Error with providing index",
                   "error_message": str(err) + "\n Traceback: " + traceback.print_exc(file=sys.stdout)}))
        traceback.print_exc(file=sys.stdout)