public static List<Double> getTimesBeforeVmMigration(List<Vm> vms) { //获取虚拟机迁移之前的时间,即迁移时间。参数:虚拟机列表。返回:虚拟机迁移之前的时间列表。
List<Double> timeBeforeVmMigration = new LinkedList<Double>(); //实例化一个double类型的列表集合--timeBeforeVmMigration
for (Vm vm : vms) { //第一层增强for循环遍历虚拟机列表(依次遍历虚拟机列表中的每个虚拟机)
boolean previousIsInMigration = false; //以前是否迁移
double lastTimeMigrationFinished = 0; //上次迁移完成的时间
for (VmStateHistoryEntry entry : vm.getStateHistory()) { //第二层增强for循环遍历虚拟机状态历史记录集合(依次遍历虚拟机状态历史记录列表中的每个历史状态)
if (previousIsInMigration == true && entry.isInMigration() == false) { //判断以前是否迁移并且当前历史状态是否迁移,如果以前在迁移并且当前没有迁移
timeBeforeVmMigration.add(entry.getTime() - lastTimeMigrationFinished); //通过当前时间减去上次迁移完成时间得到虚拟机迁移之前的时间,并将值添加到列表集合(timeBeforeVmMigration)
}
if (previousIsInMigration == false && entry.isInMigration() == true) { //判断以前是否迁移并且当前历史状态是否迁移,如果以前没有迁移并且当前发生迁移
lastTimeMigrationFinished = entry.getTime(); //将当前历史状态的时间赋值给上次迁移完成时间(lastTimeMigrationFinished)
}
previousIsInMigration = entry.isInMigration(); //将当前历史状态是否发生迁移赋值给以前是否迁移(previousIsInMigration),以便进行下个历史状态的循环。
}
}
return timeBeforeVmMigration; //返回虚拟机迁移之前的时间(Double)列表集合,即迁移时间集合。
}
该方法的功能:得到虚拟机迁移时间集合。