@Override public String call(PrimaryStorageVO arg) { return arg.getUuid(); } });
@Override public String call(PrimaryStorageVO arg) { return arg.getUuid(); } });
@Override public String getName() { return String.format("detach-primary-storage-%s-from-%s", self.getUuid(), msg.getClusterUuid()); } });
@Override public void detachHook(String clusterUuid, Completion completion) { logger.debug(String.format("SimulatorPrimaryStorage[uuid:%s] detached from cluster[uuid:%s]", self.getUuid(), clusterUuid)); completion.success(); }
@Transactional private void updateCapacity(long total, long avail) { PrimaryStorageCapacityVO cvo = dbf.getEntityManager().find(PrimaryStorageCapacityVO.class, self.getUuid(), LockModeType.PESSIMISTIC_WRITE); DebugUtils.Assert(cvo != null, String.format("how can there is no PrimaryStorageCapacityVO[uuid:%s]", self.getUuid())); cvo.setTotalPhysicalCapacity(total); cvo.setAvailablePhysicalCapacity(avail); dbf.getEntityManager().merge(cvo); }
@Override public PrimaryStorage getPrimaryStorage(PrimaryStorageVO vo) { FusionstorPrimaryStorageVO cvo = dbf.findByUuid(vo.getUuid(), FusionstorPrimaryStorageVO.class); return new FusionstorPrimaryStorageBase(cvo); }
@Override public PrimaryStorage getPrimaryStorage(PrimaryStorageVO vo) { CephPrimaryStorageVO cvo = dbf.findByUuid(vo.getUuid(), CephPrimaryStorageVO.class); return new CephPrimaryStorageBase(cvo); }
private String getAvailableHostUuidForOperation() { List<String> hostUuids = Q.New(PrimaryStorageHostRefVO.class). eq(PrimaryStorageHostRefVO_.primaryStorageUuid, self.getUuid()).select(PrimaryStorageHostRefVO_.hostUuid).listValues(); if (hostUuids == null || hostUuids.size() == 0) { return null; } return hostUuids.get(0); }
@Override public void fail(ErrorCode errorCode) { NfsDeleteVolumeGC gc = new NfsDeleteVolumeGC(); gc.NAME = String.format("gc-nfs-%s-volume-%s", self.getUuid(), vol.getUuid()); gc.primaryStorageUuid = self.getUuid(); gc.hypervisorType = backend.getHypervisorType().toString(); gc.volume = vol; gc.submit(NfsPrimaryStorageGlobalConfig.GC_INTERVAL.value(Long.class), TimeUnit.SECONDS); bus.reply(msg, reply); } });
public boolean isUnmounted() { long count = Q.New(PrimaryStorageClusterRefVO.class) .eq(PrimaryStorageClusterRefVO_.primaryStorageUuid, this.self.getUuid()).count(); return count == 0; }
protected void handle(final CheckInstallPathMsg msg) { CheckInstallPathReply reply = new CheckInstallPathReply(); Long trashId = trash.getTrashId(self.getUuid(), msg.getInstallPath()); if (trashId != null) { StorageTrashSpec spec = trash.getTrash(self.getUuid(), trashId); reply.setTrashId(trashId); reply.setResourceUuid(spec.getResourceUuid()); } bus.reply(msg, reply); }
@Override protected void connectHook(final ConnectParam param, final Completion completion) { RecalculatePrimaryStorageCapacityMsg rmsg = new RecalculatePrimaryStorageCapacityMsg(); rmsg.setPrimaryStorageUuid(self.getUuid()); bus.makeLocalServiceId(rmsg, PrimaryStorageConstant.SERVICE_ID); bus.send(rmsg); completion.success(); }
protected LocalStorageHypervisorFactory getHypervisorBackendFactoryByHostUuid(String hostUuid, boolean checkPsRef) { if (checkPsRef && !Q.New(LocalStorageHostRefVO.class) .eq(LocalStorageHostRefVO_.hostUuid, hostUuid) .eq(LocalStorageHostRefVO_.primaryStorageUuid, self.getUuid()).isExists()) { throw new OperationFailureException(operr("host[uuid:%s] cannot access local storage[uuid:%s], maybe it is detached", hostUuid, self.getUuid())); } SimpleQuery<HostVO> q = dbf.createQuery(HostVO.class); q.select(HostVO_.hypervisorType); q.add(HostVO_.uuid, Op.EQ, hostUuid); String hvType = q.findValue(); return getHypervisorBackendFactory(hvType); }
@Override public void success(RevertVolumeFromSnapshotOnPrimaryStorageReply returnValue) { long increment = returnValue.getSize() - msg.getVolume().getSize(); long size = ratioMgr.calculateByRatio(self.getUuid(), increment); if (size > 0) { reserveCapacityOnHost(hostUuid, size, msg.getPrimaryStorageUuid()); } else if (size < 0) { returnStorageCapacityToHost(hostUuid, Math.abs(size)); } bus.reply(msg, returnValue); }
private void handle(PrimaryStorageRemoveCachedImageMsg msg) { if (self.getAttachedClusterRefs().isEmpty()) { PrimaryStorageRemoveCachedImageReply reply = new PrimaryStorageRemoveCachedImageReply(); reply.setError(operr("primary storage[uuid:%s] doesn't attach to any cluster", self.getUuid())); bus.reply(msg, reply); return; } PrimaryStorageClusterRefVO ref = self.getAttachedClusterRefs().iterator().next(); ClusterVO cluster = dbf.findByUuid(ref.getClusterUuid(), ClusterVO.class); getBackend(HypervisorType.valueOf(cluster.getHypervisorType())).deleteImageCache(msg.getInventory()); }
protected void handle(NfsRecalculatePrimaryStorageCapacityMsg msg) { if (msg.isRelease()) { doReleasePrimaryStorageCapacity(); } else { RecalculatePrimaryStorageCapacityMsg rmsg = new RecalculatePrimaryStorageCapacityMsg(); rmsg.setPrimaryStorageUuid(self.getUuid()); bus.makeLocalServiceId(rmsg, PrimaryStorageConstant.SERVICE_ID); bus.send(rmsg); } }
private void createResourceRefVO(String resUuid, String resType, long size, String hostUuid) { LocalStorageResourceRefVO ref = new LocalStorageResourceRefVO(); ref.setPrimaryStorageUuid(self.getUuid()); ref.setSize(size); ref.setResourceType(resType); ref.setResourceUuid(resUuid); ref.setHostUuid(hostUuid); dbf.persist(ref); }
private void handle(PrimaryStorageDeletionMsg msg) { PrimaryStorageInventory inv = PrimaryStorageInventory.valueOf(self); extpEmitter.beforeDelete(inv); deleteHook(); extpEmitter.afterDelete(inv); tracker.untrack(self.getUuid()); PrimaryStorageDeletionReply reply = new PrimaryStorageDeletionReply(); bus.reply(msg, reply); }
private void handle(LocalStorageReturnHostCapacityMsg msg) { LocalStorageReturnHostCapacityReply reply = new LocalStorageReturnHostCapacityReply(); long size = msg.isNoOverProvisioning() ? msg.getSize() : ratioMgr.calculateByRatio(self.getUuid(), msg.getSize()); returnStorageCapacityToHost(msg.getHostUuid(), 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); }