def summarize_packing_plans()

in performance_prediction/util/util.py [0:0]


def summarize_packing_plans(packing_plan) -> Dict[int, tuple]:
    # We assume that the resources of all instances are the same
    # TODO: How do we factors in different container sizes + padding?
    instance_count = {}
    instance_cpu = {}
    instance_ram = {}
    instance_disk = {}
    instance_task_ids = defaultdict(list)
    result = {}

    container_plans = packing_plan["container_plans"]
    for container_plan in container_plans:
        for instance in container_plan["instances"]:
            comp_name = instance["component_name"]
            count = instance_count.get(comp_name, 0) + 1
            instance_count[comp_name] = count
            if comp_name not in instance_cpu:
                instance_cpu[comp_name] = instance["instance_resources"]["cpu"]
                instance_ram[comp_name] = instance["instance_resources"]["ram"]
                instance_disk[comp_name] = instance["instance_resources"]["disk"]
                instance_task_ids[comp_name] = [instance["task_id"]]
            else:
                instance_task_ids[comp_name].append(instance["task_id"])

    for comp_name in instance_count:
        result[comp_name] = InstanceInfo(instance_count[comp_name], instance_cpu[comp_name],
                                         instance_ram[comp_name], instance_disk[comp_name],
                                         instance_task_ids[comp_name])

    return result