protected Response doAdd(Snapshot snapshot, boolean block) { validateParameters(snapshot, "description"); CreateSnapshotForVmParameters snapshotParams = new CreateSnapshotForVmParameters(parentId, snapshot.getDescription()); if (snapshot.isSetPersistMemorystate()) { snapshotParams.setSaveMemory(snapshot.isPersistMemorystate()); } if (snapshot.isSetDiskAttachments()) { Map<Guid, Guid> diskToImageIds = mapDisks(snapshot.getDiskAttachments()); snapshotParams.setDiskIds(new TreeSet<>(diskToImageIds.keySet())); snapshotParams.setDiskToImageIds(diskToImageIds); } return performCreate(ActionType.CreateSnapshotForVm, snapshotParams, new SnapshotIdResolver(), block); }
public void onSave() { if (getProgress() != null || !validate()) { return; } startProgress(); VM vm = getVm(); ArrayList<ActionParametersBase> params = new ArrayList<>(); Set<Guid> snapshotDisksIds = null; if (getSnapshotDisks().getSelectedItems() != null) { snapshotDisksIds = getSnapshotDisks() .getSelectedItems() .stream() .map(BaseDisk::getId) .collect(Collectors.toSet()); } CreateSnapshotForVmParameters param = new CreateSnapshotForVmParameters(vm.getId(), getDescription().getEntity(), getMemory().getEntity(), snapshotDisksIds); param.setQuotaId(vm.getQuotaId()); params.add(param); Frontend.getInstance().runMultipleAction(ActionType.CreateSnapshotForVm, params, result -> { SnapshotModel localModel = (SnapshotModel) result.getState(); localModel.stopProgress(); getCancelCommand().execute(); }, this); }
@Test public void objectMapperSerializeCreateSnapshotForVmParametersMapFailure() { Map<Guid, Guid> diskToImageIds = new HashMap<>(); diskToImageIds.put(Guid.newGuid(), Guid.newGuid()); CreateSnapshotForVmParameters params = new CreateSnapshotForVmParameters( Guid.newGuid(), "Test", false, diskToImageIds.keySet()); params.setDiskToImageIds(diskToImageIds); try { String json = serialize(params); assertTrue(json.length() > 0); assertThrows(JsonMappingException.class, () -> deserialize(json, CreateSnapshotForVmParameters.class)); } catch (Exception ex) { // ignore } }
@Test public void serializeCreateSnapshotForVmParametersMap() { Map<Guid, Guid> diskToImageIds = new HashMap<>(); diskToImageIds.put(Guid.newGuid(), Guid.newGuid()); CreateSnapshotForVmParameters params = new CreateSnapshotForVmParameters( Guid.newGuid(), "Test", false, new TreeSet<>(diskToImageIds.keySet())); params.setDiskToImageIds(diskToImageIds); JsonObjectSerializer serializer = new JsonObjectSerializer(); String json = serializer.serialize(params); assertTrue(json.length() > 0); JsonObjectDeserializer deserializer = new JsonObjectDeserializer(); CreateSnapshotForVmParameters deserializedParams = deserializer.deserialize(json, CreateSnapshotForVmParameters.class); assertEquals(params.getDiskIds(), deserializedParams.getDiskIds()); }
@Test public void serializeCreateSnapshotForVmParametersMapFailure() { Map<Guid, Guid> diskToImageIds = new HashMap<>(); diskToImageIds.put(Guid.newGuid(), Guid.newGuid()); CreateSnapshotForVmParameters params = new CreateSnapshotForVmParameters( Guid.newGuid(), "Test", false, diskToImageIds.keySet()); params.setDiskToImageIds(diskToImageIds); JsonObjectSerializer serializer = new JsonObjectSerializer(); String json = serializer.serialize(params); assertTrue(json.length() > 0); JsonObjectDeserializer deserializer = new JsonObjectDeserializer(); assertThrows(SerializationException.class, () -> deserializer.deserialize(json, CreateSnapshotForVmParameters.class)); }