def read_log(file_content): lines = file_content.splitlines() current_line = 0 deadline, budget, vm_cost_per_hour = map(float, lines[current_line].split()) current_line += 1 settings = ExperimentSettings(deadline, budget, vm_cost_per_hour) vm_number = int(lines[current_line]) current_line += 1 vms = {} for i in xrange(0, vm_number): vm_info = lines[current_line].split() vm = VMLog(id=vm_info[0], started=float_or_none(vm_info[1]), finished=float_or_none(vm_info[2])) vms[vm.id] = vm current_line += 1 workflows_number = int(lines[current_line]) current_line += 1 workflows = {} for i in xrange(0, workflows_number): workflow_info = lines[current_line].split() workflow = Workflow(id=workflow_info[0], priority=int(workflow_info[1]), filename=workflow_info[2]) workflows[workflow.id] = workflow current_line += 1 tasks_number = int(lines[current_line]) current_line += 1 tasks = [] for i in xrange(0, tasks_number): task_info = lines[current_line].split() task = TaskLog(id=task_info[0], workflow=task_info[1], task_id=task_info[2], vm=task_info[3], started=float_or_none(task_info[4]), finished=float_or_none(task_info[5]), result=task_info[6]) tasks.append(task) current_line += 1 transfers_number = int(lines[current_line]) current_line += 1 transfers = [] for i in xrange(0, transfers_number): transfer_info = lines[current_line].split() transfer = TransferLog(id=transfer_info[0], vm=transfer_info[1], started=float_or_none(transfer_info[2]), finished=float_or_none(transfer_info[3]), direction=transfer_info[4], job_id=transfer_info[5], file_id=transfer_info[6]) transfers.append(transfer) current_line += 1 execution_log = ExecutionLog() execution_log.settings = settings for task in tasks: execution_log.add_event(EventType.TASK, task) for transfer in transfers: execution_log.add_event(EventType.TRANSFER, transfer) for vm in vms.values(): execution_log.add_event(EventType.VM, vm) for workflow in workflows.values(): execution_log.add_workflow(workflow) return execution_log
def read_log(file_content): lines = file_content.splitlines() current_line = 0 deadline, budget = map(float, lines[current_line].split()[:2]) pricing_model = lines[current_line].split()[2] settings = None if pricing_model == "google": billing_time_in_seconds, first_billing_time_in_seconds = map(float, lines[current_line].split()[3:]) settings = ExperimentSettings(deadline, budget, pricing_model, billing_time_in_seconds, first_billing_time_in_seconds) elif pricing_model == "simple": billing_time_in_seconds = float(lines[current_line].split()[3]) settings = ExperimentSettings(deadline, budget, pricing_model, billing_time_in_seconds, None) current_line += 1 vm_number = int(lines[current_line]) current_line += 1 vms = {} for i in xrange(0, vm_number): vm_info = lines[current_line].split() vm = VMLog(id=vm_info[0], started=float_or_none(vm_info[1]), finished=float_or_none(vm_info[2]), cores=vm_info[3], price_for_billing_unit=float_or_none(vm_info[4])) vms[vm.id] = vm current_line += 1 workflows_number = int(lines[current_line]) current_line += 1 workflows = {} for i in xrange(0, workflows_number): workflow_info = lines[current_line].split() workflow = Workflow(id=workflow_info[0], priority=int(workflow_info[1]), filename=workflow_info[2]) workflows[workflow.id] = workflow current_line += 1 tasks_number = int(lines[current_line]) current_line += 1 tasks = [] for i in xrange(0, tasks_number): task_info = lines[current_line].split() task = TaskLog(id=task_info[0], workflow=task_info[1], task_id=task_info[2], vm=task_info[3], started=float_or_none(task_info[4]), finished=float_or_none(task_info[5]), result=task_info[6]) tasks.append(task) current_line += 1 transfers_number = int(lines[current_line]) current_line += 1 transfers = [] for i in xrange(0, transfers_number): transfer_info = lines[current_line].split() transfer = TransferLog(id=transfer_info[0], vm=transfer_info[1], started=float_or_none(transfer_info[2]), finished=float_or_none(transfer_info[3]), direction=transfer_info[4], job_id=transfer_info[5], file_id=transfer_info[6]) transfers.append(transfer) current_line += 1 execution_log = ExecutionLog() execution_log.settings = settings for task in tasks: execution_log.add_event(EventType.TASK, task) for transfer in transfers: execution_log.add_event(EventType.TRANSFER, transfer) for vm in vms.values(): execution_log.add_event(EventType.VM, vm) for workflow in workflows.values(): execution_log.add_workflow(workflow) return execution_log