Пример #1
0
  private void setDefaultBootDevice() {
    // In the time of disk creation the VM ID is an empty Guid, this is changed to the real ID only
    // after the reading
    // of the OS properties which comes after the disks creation so the disk VM elements are set to
    // the wrong VM ID
    // this part sets them to the correct VM ID
    for (DiskImage disk : _images) {
      disk.getDiskVmElements()
          .stream()
          .forEach(dve -> dve.setId(new VmDeviceId(disk.getId(), vmBase.getId())));
      disk.setDiskVmElements(disk.getDiskVmElements());
    }

    boolean hasBootDevice =
        vmBase
            .getManagedDeviceMap()
            .values()
            .stream()
            .anyMatch(device -> device.getBootOrder() > 0);
    if (hasBootDevice) {
      return;
    }

    AtomicInteger order =
        new AtomicInteger(1); // regular non-final variable cannot be used in lambda expression
    _images
        .stream()
        .filter(d -> d.getDiskVmElementForVm(vmBase.getId()).isBoot())
        .map(image -> vmBase.getManagedDeviceMap().get(image.getId()))
        .filter(Objects::nonNull)
        .forEachOrdered(device -> device.setBootOrder(order.getAndIncrement()));
  }