Example #1
0
def schedule_2(spec):
    scheduled_containers = []
    info = ''
    container_id_list_all = itf_database.get_container_id_list()
    # filter out some containers
    container_id_list = []
    for cid in container_id_list_all:
        status = itf_database.get_status(cid)
        if qos_checker.check_space(spec, [status]) and \
                qos_checker.check_dataintegrity(spec,[status]) and \
                status.StorageReliability > 0 and \
                status.ContainerAvailability > 0:
            container_id_list.append(cid)
    # check if k containers together can satisfy the spec
    for k in range(min(5, len(container_id_list))):
        cid_comb = list(itertools.combinations(container_id_list, k))
        for comb in cid_comb:
            cid_list = list(comb)
            status_list = [itf_database.get_status(x) for x in cid_list]
            if qos_checker.check_availability(spec, status_list) and \
                    qos_checker.check_reliability(spec, status_list) and \
                    qos_checker.check_bandwidth(spec, status_list) and \
                    qos_checker.check_latency(spec, status_list):
                scheduled_containers = cid_list
                costs = [x.CostPerGBMonth for x in status_list]
                cost = sum(costs) / 1024.0 * spec.ReservedSize
                info = '$%.2f/month' % cost
                return scheduled_containers, info
    return scheduled_containers, info
Example #2
0
def schedule_0(spec):
    scheduled_containers = []
    info = ''
    container_id_list = itf_database.get_container_id_list()
    container_id_list = [x for x in container_id_list if \
            qos_checker.check_space(spec, [itf_database.get_status(x)])]
    if len(container_id_list) > 0:
        container_id = container_id_list[0]
        status = itf_database.get_status(container_id)
        scheduled_containers.append(container_id)
        cost = status.CostPerGBMonth / 1024.0 * spec.ReservedSize
        info = '$%.2f/month' % cost
    return scheduled_containers, info