@Override public List<VM> getVmsListForDisk(Guid id, boolean includeVmsSnapshotAttachedTo) { List<Pair<VM, VmDevice>> vms = getVmsWithPlugInfo(id); return vms.stream() .filter(pair -> includeVmsSnapshotAttachedTo || pair.getSecond().getSnapshotId() == null) .map(Pair::getFirst) .collect(Collectors.toList()); }
@Override public Map<Boolean, List<VM>> getForDisk(Guid id, boolean includeVmsSnapshotAttachedTo) { List<Pair<VM, VmDevice>> vms = getVmsWithPlugInfo(id); return vms.stream() .filter(p -> includeVmsSnapshotAttachedTo || p.getSecond().getSnapshotId() == null) .collect(Collectors.groupingBy(p -> p.getSecond().isPlugged(), Collectors.mapping(Pair::getFirst, Collectors.toList()))); }
/** * updates disk boot order * snapshot disk devices always will have lower priority than regular attached disks. */ private static int setDiskBootOrder( Collection<VmDevice> devices, int bootOrder, Map<VmDeviceId, DiskVmElement> deviceIdTodiskVmElement) { LinkedList<VmDevice> diskDevices = new LinkedList<>(); for (VmDevice device : devices) { if (isDisk(device)) { Guid id = device.getDeviceId(); if (id != null && !id.equals(Guid.Empty)) { if (device.getSnapshotId() == null) { diskDevices.addFirst(device); } else { diskDevices.addLast(device); } } } } for (VmDevice device : diskDevices) { DiskVmElement dve = deviceIdTodiskVmElement.get(device.getId()); if (dve != null && dve.isBoot()) { device.setBootOrder(++bootOrder); } } return bootOrder; }
@SuppressWarnings("unchecked") public VmPayload(VmDevice dev) { super(dev.getId(), dev.getType(), dev.getDevice(), dev.getAddress(), dev.getSpecParams(), dev.isManaged(), dev.isPlugged(), dev.getReadOnly(), dev.getAlias(), dev.getCustomProperties(), dev.getSnapshotId(), dev.getLogicalName()); if (dev.getSpecParams() != null) { Map<String, Object> payload = (Map<String, Object>)dev.getSpecParams().get(SpecParamsPayload); this.volumeId = (String)payload.get(SpecParamsVolumeIdType); this.files = (HashMap<String, String>)payload.get(SpecParamsFileType); } }
private void writeVmDeviceInfo(VmDevice vmDevice) { _writer.writeElement(VMD_TYPE, String.valueOf(vmDevice.getType().getValue())); _writer.writeElement(VMD_DEVICE, String.valueOf(vmDevice.getDevice())); _writer.writeElement(VMD_ADDRESS, vmDevice.getAddress()); _writer.writeElement(VMD_BOOT_ORDER, String.valueOf(vmDevice.getBootOrder())); _writer.writeElement(VMD_IS_PLUGGED, String.valueOf(vmDevice.isPlugged())); _writer.writeElement(VMD_IS_READONLY, String.valueOf(vmDevice.getReadOnly())); _writer.writeElement(VMD_ALIAS, String.valueOf(vmDevice.getAlias())); if (vmDevice.getSpecParams() != null && vmDevice.getSpecParams().size() != 0 && !VmPayload.isPayload(vmDevice.getSpecParams())) { _writer.writeStartElement(VMD_SPEC_PARAMS); _writer.writeMap(vmDevice.getSpecParams()); _writer.writeEndElement(); } if (vmDevice.getCustomProperties() != null && !vmDevice.getCustomProperties().isEmpty()) { _writer.writeElement(VMD_CUSTOM_PROP, DevicePropertiesUtils.getInstance().convertProperties(vmDevice.getCustomProperties())); } if (vmDevice.getSnapshotId() != null) { _writer.writeElement(VMD_SNAPSHOT_PROP, String.valueOf(vmDevice.getSnapshotId())); } }
@Override public String toString() { return ToStringBuilder.forInstance(this) .append("id", id) .append("device", getDevice()) .append("type", getType()) .append("specParams", getSpecParams()) .append("address", getAddress()) .append("managed", isManaged()) .append("plugged", isPlugged()) .append("readOnly", getReadOnly()) .append("deviceAlias", getAlias()) .append("customProperties", getCustomProperties()) .append("snapshotId", getSnapshotId()) .append("logicalName", getLogicalName()) .append("hostDevice", getHostDevice()) .build(); }
@Override protected MapSqlParameterSource createFullParametersMapper(VmDevice entity) { return createIdParameterMapper(entity.getId()) .addValue("device", entity.getDevice()) .addValue("type", entity.getType().getValue()) .addValue("address", entity.getAddress()) .addValue("spec_params", SerializationFactory.getSerializer().serialize(entity.getSpecParams())) .addValue("is_managed", entity.isManaged()) .addValue("is_plugged", entity.isPlugged()) .addValue("is_readonly", entity.getReadOnly()) .addValue("alias", entity.getAlias()) .addValue("custom_properties", SerializationFactory.getSerializer().serialize(entity.getCustomProperties())) .addValue("snapshot_id", entity.getSnapshotId()) .addValue("logical_name", entity.getLogicalName()) .addValue("host_device", entity.getHostDevice()); }