@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { final StoragePool pool = (StoragePool) state.getResource(); if (!KIND.equals(pool.getKind()) || EXT_UUID.equals(pool.getUuid())) { return null; } StoragePool extPool = getExtPool(); if (extPool == null) { lockManager.lock(new SimExtPoolCreateLock(), new LockCallbackNoReturn() { @Override public void doWithLockNoResult() { StoragePool extPool = getExtPool(); if (extPool == null) { extPool = getObjectManager().create(StoragePool.class, ObjectMetaDataManager.UUID_FIELD, EXT_UUID, ObjectMetaDataManager.KIND_FIELD, KIND, STORAGE_POOL.ACCOUNT_ID, pool.getAccountId(), STORAGE_POOL.EXTERNAL, true); getObjectProcessManager().executeStandardProcess(StandardProcess.CREATE, extPool, null); } } }); } else { getObjectProcessManager().executeStandardProcess(StandardProcess.CREATE, extPool, null); } return null; }
@Override public Map<String, StoragePool> getStoragePools(long agentId) { Map<String,StoragePool> pools = new HashMap<>(); List<? extends StoragePool> poolList = create() .select(STORAGE_POOL.fields()) .from(STORAGE_POOL) .where( STORAGE_POOL.AGENT_ID.eq(agentId) .and(STORAGE_POOL.REMOVED.isNull())) .fetchInto(StoragePoolRecord.class); for ( StoragePool pool : poolList ) { String uuid = DataAccessor.fields(pool).withKey(HostConstants.FIELD_REPORTED_UUID).as(String.class); if ( uuid == null ) { uuid = pool.getUuid(); } pools.put(uuid, pool); } return pools; }
/** * {@inheritDoc} */ @Override public void from(io.cattle.platform.core.model.StoragePool from) { setId(from.getId()); setName(from.getName()); setAccountId(from.getAccountId()); setKind(from.getKind()); setUuid(from.getUuid()); setDescription(from.getDescription()); setState(from.getState()); setCreated(from.getCreated()); setRemoved(from.getRemoved()); setRemoveTime(from.getRemoveTime()); setData(from.getData()); setPhysicalTotalSizeMb(from.getPhysicalTotalSizeMb()); setVirtualTotalSizeMb(from.getVirtualTotalSizeMb()); setExternal(from.getExternal()); setAgentId(from.getAgentId()); setZoneId(from.getZoneId()); setExternalId(from.getExternalId()); setDriverName(from.getDriverName()); setVolumeAccessMode(from.getVolumeAccessMode()); setStorageDriverId(from.getStorageDriverId()); }