public String getUuid() { return inventory.getUuid(); }
@Override public Boolean call(VolumeSnapshotInventory arg) { return arg.getUuid().equals(currentRoot.getUuid()); } });
private NeedReplyMessage handleSnapshotDeletion(VolumeSnapshotInventory sinv) { return makeMsg(sinv.getUuid(), false); }
public static String makeKvmSnapshotInstallPath(PrimaryStorageInventory pinv, VolumeInventory vol, VolumeSnapshotInventory snapshot) { String volDir = makeVolumeInstallDir(pinv, vol); return PathUtil.join(volDir, "snapshots", String.format("%s.qcow2", snapshot.getUuid())); }
public String makeSnapshotInstallPath(VolumeInventory vol, VolumeSnapshotInventory snapshot) { String volDir = makeVolumeInstallDir(vol); return PathUtil.join(volDir, "snapshots", String.format("%s.qcow2", snapshot.getUuid())); }
@Override public void success(TakeSnapshotReply returnValue) { createResourceRefVO(sp.getUuid(), VolumeSnapshotVO.class.getSimpleName(), returnValue.getInventory().getSize(), hostUuid); bus.reply(msg, returnValue); }
public String makeSnapshotInstallPath(VolumeInventory vol, VolumeSnapshotInventory snapshot) { String volPath; if (VolumeType.Data.toString().equals(vol.getType())) { volPath = makeDataVolumeInstallUrl(vol.getUuid()); } else { volPath = makeRootVolumeInstallUrl(vol); } File volDir = new File(volPath).getParentFile(); return PathUtil.join(volDir.getAbsolutePath(), "snapshots", String.format("%s.qcow2", snapshot.getUuid())); }
@Override public Result audit(APIMessage msg, APIEvent rsp) { return new Result(rsp.isSuccess() ? ((APICreateVolumeSnapshotEvent)rsp).getInventory().getUuid() : "", VolumeSnapshotVO.class); } }
@Override public void protect(VolumeSnapshotInventory snapshot, Completion completion) { Path path = Paths.get(snapshot.getPrimaryStorageInstallPath()); if (!path.getParent().toString().contains(snapshot.getVolumeUuid())) { completion.fail(inerr("the snapshot[name:%s, uuid:%s, path: %s] seems not belong to the volume[uuid:%s]", snapshot.getName(), snapshot.getUuid(), snapshot.getPrimaryStorageInstallPath(), snapshot.getVolumeUuid())); return; } completion.success(); } }
@Override public void protect(VolumeSnapshotInventory snapshot, Completion completion) { Path path = Paths.get(snapshot.getPrimaryStorageInstallPath()); if (!path.getParent().toString().contains(snapshot.getVolumeUuid())) { completion.fail(inerr("the snapshot[name:%s, uuid:%s, path: %s] seems not belong to the volume[uuid:%s]", snapshot.getName(), snapshot.getUuid(), snapshot.getPrimaryStorageInstallPath(), snapshot.getVolumeUuid())); return; } completion.success(); } }
@Override public void protect(VolumeSnapshotInventory snapshot, Completion completion) { Path path = Paths.get(snapshot.getPrimaryStorageInstallPath()); if (!path.getParent().toString().contains(snapshot.getVolumeUuid())) { completion.fail(inerr("the snapshot[name:%s, uuid:%s, path: %s] seems not belong to the volume[uuid:%s]", snapshot.getName(), snapshot.getUuid(), snapshot.getPrimaryStorageInstallPath(), snapshot.getVolumeUuid())); return; } completion.success(); } }
@Override public void after(APIEvent evt) { if (evt.isSuccess()) { ntfy(NotificationConstant.Volume.CREATE_VOLUME_SNAPSHOT, ((APICreateVolumeSnapshotEvent)evt).getInventory().getUuid()).resource(volumeUuid, VolumeVO.class.getSimpleName()) .messageAndEvent(that, evt).done(); ntfy(NotificationConstant.CREATE_OPERATE_NOTIFICATION_CONTENT).resource(((APICreateVolumeSnapshotEvent)evt).getInventory().getUuid(), VolumeSnapshotVO.class.getSimpleName()) .messageAndEvent(that, evt).done(); } } };
@Override public void after(APIEvent evt) { if (evt.isSuccess()) { ntfy("Backuped").resource(((APIBackupVolumeSnapshotEvent)evt).getInventory().getUuid(), VolumeSnapshotVO.class.getSimpleName()) .messageAndEvent(that, evt).done(); } } };
@Override public void after(APIEvent evt) { if (evt.isSuccess()) { ntfy("Deleted").resource(((APIDeleteVolumeSnapshotFromBackupStorageEvent)evt).getInventory().getUuid(), VolumeSnapshotVO.class.getSimpleName()) .messageAndEvent(that, evt).done(); } } };
@Override public ChangeVolumeSnapshotStatusMsg call(VolumeSnapshotInventory arg) { ChangeVolumeSnapshotStatusMsg msg = new ChangeVolumeSnapshotStatusMsg(); msg.setEvent(evt.toString()); msg.setSnapshotUuid(arg.getUuid()); bus.makeLocalServiceId(msg, VolumeSnapshotConstant.SERVICE_ID); return msg; } });
public SnapshotLeaf buildRootLeaf(String uuid) { VolumeSnapshotVO s = dbf.findByUuid(uuid, VolumeSnapshotVO.class); SimpleQuery<VolumeSnapshotVO> q = dbf.createQuery(VolumeSnapshotVO.class); q.add(VolumeSnapshotVO_.treeUuid, Op.EQ, s.getTreeUuid()); List<VolumeSnapshotVO> vos = q.list(); VolumeSnapshotTree tree = VolumeSnapshotTree.fromVOs(vos); SnapshotLeaf leaf = tree.getRoot(); if (!leaf.getInventory().getUuid().equals(uuid)) { Assert.fail(String.format("snapshot[%s] is not root snapshot", uuid)); } return leaf; } }
@Override public void protect(VolumeSnapshotInventory snapshot, Completion completion) { if (!snapshot.getPrimaryStorageInstallPath().contains(snapshot.getVolumeUuid())) { completion.fail(inerr("the snapshot[name:%s, uuid:%s, path: %s] seems not belong to the volume[uuid:%s]", snapshot.getName(), snapshot.getUuid(), snapshot.getPrimaryStorageInstallPath(), snapshot.getVolumeUuid())); return; } completion.success(); } }
@Override public void fail(ErrorCode errorCode) { NfsDeleteVolumeSnapshotGC gc = new NfsDeleteVolumeSnapshotGC(); gc.NAME = String.format("gc-nfs-%s-snapshot-%s", self.getUuid(), sinv.getUuid()); gc.snapshot = sinv; gc.primaryStorageUuid = self.getUuid(); gc.hypervisorType = bkd.getHypervisorType().toString(); gc.submit(NfsPrimaryStorageGlobalConfig.GC_INTERVAL.value(Long.class), TimeUnit.SECONDS); N.New(PrimaryStorageVO.class, self.getUuid()).warn_("NFS primary storage[uuid:%s] failed to delete a volume snapshot[uuid:%s], %s. A GC" + " job[uuid:%s] is scheduled to cleanup it in the interval of %s seconds", self.getUuid(), sinv.getUuid(), errorCode, NfsPrimaryStorageGlobalConfig.GC_INTERVAL.value(Long.class)); bus.reply(msg, reply); } });
public void fireSnapShotStatusChangedEvent(VolumeSnapshotStatus oldStatus, VolumeSnapshotInventory vsi) { SnapShotCanonicalEvents.SnapShotStatusChangedData d = new SnapShotCanonicalEvents.SnapShotStatusChangedData(); d.setInventory(vsi); d.setDate(new Date()); d.setNewStatus(vsi.getStatus()); d.setOldStatus(oldStatus == null ? null : oldStatus.toString()); d.setSnapShotUuid(vsi.getUuid()); evtf.fire(SnapShotCanonicalEvents.SNAPSHOT_STATUS_CHANGED_PATH, d); } }