@Override public boolean equals(Object t) { if (t == null || !(t instanceof VolumeSnapshotType)) { return false; } VolumeSnapshotType type = (VolumeSnapshotType) t; return type.toString().equals(typeName); }
@Transactional(readOnly = true) private void handle(VolumeSnapshotReportPrimaryStorageCapacityUsageMsg msg) { String sql = "select sum(sp.size)" + " from VolumeSnapshotVO sp" + " where sp.type = :sptype" + " and sp.primaryStorageUuid = :prUuid"; TypedQuery<Long> q = dbf.getEntityManager().createQuery(sql, Long.class); q.setParameter("sptype", VolumeSnapshotConstant.HYPERVISOR_SNAPSHOT_TYPE.toString()); q.setParameter("prUuid", msg.getPrimaryStorageUuid()); Long size = q.getSingleResult(); VolumeSnapshotReportPrimaryStorageCapacityUsageReply reply = new VolumeSnapshotReportPrimaryStorageCapacityUsageReply(); reply.setUsedSize(size == null ? 0 : size); bus.reply(msg, reply); }
@Override public void success(CreateSnapshotRsp rsp) { // current fusionstor has no way to get actual size long asize = rsp.getActualSize() == null ? 0 : rsp.getActualSize(); sp.setSize(asize); sp.setPrimaryStorageUuid(self.getUuid()); sp.setPrimaryStorageInstallPath(spPath); sp.setType(VolumeSnapshotConstant.STORAGE_SNAPSHOT_TYPE.toString()); sp.setFormat(VolumeConstant.VOLUME_FORMAT_RAW); reply.setInventory(sp); bus.reply(msg, reply); }
@Override public void run(MessageReply reply) { if (!reply.isSuccess()) { completion.fail(reply.getError()); return; } TakeSnapshotOnHypervisorReply treply = (TakeSnapshotOnHypervisorReply) reply; sp.setSize(treply.getSize()); sp.setPrimaryStorageUuid(self.getUuid()); sp.setPrimaryStorageInstallPath(treply.getSnapshotInstallPath()); sp.setType(VolumeSnapshotConstant.HYPERVISOR_SNAPSHOT_TYPE.toString()); TakeSnapshotReply ret = new TakeSnapshotReply(); ret.setNewVolumeInstallPath(treply.getNewVolumeInstallPath()); ret.setInventory(sp); completion.success(ret); } });
@Override public void run(MessageReply ret) { if (ret.isSuccess()) { TakeSnapshotOnHypervisorReply treply = (TakeSnapshotOnHypervisorReply) ret; VolumeSnapshotInventory inv = msg.getStruct().getCurrent(); inv.setSize(treply.getSize()); inv.setPrimaryStorageUuid(self.getUuid()); inv.setPrimaryStorageInstallPath(treply.getSnapshotInstallPath()); inv.setType(VolumeSnapshotConstant.HYPERVISOR_SNAPSHOT_TYPE.toString()); reply.setNewVolumeInstallPath(treply.getNewVolumeInstallPath()); reply.setInventory(inv); } else { reply.setError(ret.getError()); } bus.reply(msg, reply); } });
@Override public void run(MessageReply reply) { if (!reply.isSuccess()) { completion.fail(reply.getError()); return; } TakeSnapshotOnHypervisorReply treply = (TakeSnapshotOnHypervisorReply) reply; sp.setSize(treply.getSize()); sp.setPrimaryStorageUuid(self.getUuid()); sp.setPrimaryStorageInstallPath(treply.getSnapshotInstallPath()); sp.setType(VolumeSnapshotConstant.HYPERVISOR_SNAPSHOT_TYPE.toString()); TakeSnapshotReply ret = new TakeSnapshotReply(); ret.setNewVolumeInstallPath(treply.getNewVolumeInstallPath()); ret.setInventory(sp); reserveCapaciryOnHostIgnoreError(hostUuid, sp.getSize(), self.getUuid()); completion.success(ret); } });
Boolean onCurrentTree = tq.findValue(); boolean needMerge = onCurrentTree && ancestorOfLatest && currentRoot.getPrimaryStorageUuid() != null && VolumeSnapshotConstant.HYPERVISOR_SNAPSHOT_TYPE.toString().equals(currentRoot.getType()); if (needMerge) { chain.then(new NoRollbackFlow() {