private boolean isLocal(PrimaryStorageInventory inv) { return inv.getType().equals(LocalStorageConstants.LOCAL_STORAGE_TYPE); }
@Override public void afterAttachPrimaryStorage(PrimaryStorageInventory inventory, String clusterUuid) { if (inventory.getType().equals(LocalStorageConstants.LOCAL_STORAGE_TYPE)) { recalculatePrimaryStorageCapacity(clusterUuid); } }
@Override public void afterDetachPrimaryStorage(PrimaryStorageInventory inventory, String clusterUuid) { if (!inventory.getType().equals(NfsPrimaryStorageConstant.NFS_PRIMARY_STORAGE_TYPE)){ return; } new SQLBatch(){ @Override protected void scripts() { List<String> huuids = Q.New(HostVO.class).select(HostVO_.uuid) .eq(HostVO_.clusterUuid, clusterUuid) .listValues(); SQL.New(PrimaryStorageHostRefVO.class) .eq(PrimaryStorageHostRefVO_.primaryStorageUuid, inventory.getUuid()) .in(PrimaryStorageHostRefVO_.hostUuid, huuids) .hardDelete(); } }.execute(); logger.debug("succeed delete PrimaryStorageHostRef record"); recalculateCapacity(inventory.getUuid()); }
@Override public void afterAttachPrimaryStorage(PrimaryStorageInventory inventory, String clusterUuid) { if (inventory.getType().equals(SMPConstants.SMP_TYPE)) { RecalculatePrimaryStorageCapacityMsg msg = new RecalculatePrimaryStorageCapacityMsg(); msg.setPrimaryStorageUuid(inventory.getUuid()); bus.makeTargetServiceIdByResourceUuid(msg, PrimaryStorageConstant.SERVICE_ID, inventory.getUuid()); bus.send(msg); } } }
@Override public void afterDetachPrimaryStorage(PrimaryStorageInventory inventory, String clusterUuid) { if(!inventory.getType().equals(SMPConstants.SMP_TYPE)){ return; } PrimaryStorageVO vo = dbf.findByUuid(inventory.getUuid(), PrimaryStorageVO.class); if(null == vo){ logger.warn(String.format("run afterRecalculatePrimaryStorageCapacity fail, not find ps[%s] db record", inventory.getUuid())); return; } SMPPrimaryStorageBase base = new SMPPrimaryStorageBase(vo); if(base.isUnmounted()){ //base.resetDefaultCapacityWhenUnmounted(); releasePrimaryStorageCapacity(inventory.getUuid()); } }
if (!supportPsTypes.contains(d.getInventory().getType())) { return;
@Override public void afterAttachPrimaryStorage(PrimaryStorageInventory inventory, String clusterUuid) { if(inventory.getType().equals(NfsPrimaryStorageConstant.NFS_PRIMARY_STORAGE_TYPE)){ Q.New(HostVO.class).select(HostVO_.uuid) .eq(HostVO_.clusterUuid, clusterUuid) .eq(HostVO_.status, HostStatus.Connected) .notIn(HostVO_.state, list(HostState.PreMaintenance, HostState.Maintenance)) .listValues() .forEach(huuid -> updateNfsHostStatus(inventory.getUuid(), (String)huuid, PrimaryStorageHostStatus.Connected)); logger.debug("succeed add PrimaryStorageHostRef record"); recalculateCapacity(inventory.getUuid()); } }
@Override public void preBeforeInstantiateVmResource(VmInstanceSpec spec) throws VmInstantiateResourceException { if (spec.getCurrentVmOperation() != VmInstanceConstant.VmOperation.ChangeImage || !spec.getVolumeSpecs().get(0).getPrimaryStorageInventory().getType().equals(CephConstants.CEPH_PRIMARY_STORAGE_TYPE)) { return; } //get old ready root volume VolumeVO oldRootVolume = Q.New(VolumeVO.class).eq(VolumeVO_.vmInstanceUuid, spec.getVmInventory().getUuid()) .eq(VolumeVO_.type, VolumeType.Root) .eq(VolumeVO_.status, VolumeStatus.Ready) .find(); //sync root pool tag if exist if (oldRootVolume != null && CephSystemTags.USE_CEPH_ROOT_POOL.hasTag(oldRootVolume.getUuid())) { String token = CephSystemTags.USE_CEPH_ROOT_POOL.getTokenByResourceUuid(oldRootVolume.getUuid(), CephSystemTags.USE_CEPH_ROOT_POOL_TOKEN); SystemTagCreator creator = CephSystemTags.USE_CEPH_ROOT_POOL.newSystemTagCreator(spec.getDestRootVolume().getUuid()); creator.setTagByTokens(map(e(CephSystemTags.USE_CEPH_ROOT_POOL_TOKEN, token))); creator.inherent = false; creator.ignoreIfExisting = true; creator.create(); } }