@Override public long getId() { return this.imageDataStoreVO.getId(); }
public ImageStoreVO createImageStore(Map<String, Object> params) { ImageStoreVO store = imageStoreDao.findByName((String)params.get("name")); if (store != null) { return store; } store = new ImageStoreVO(); store.setProtocol((String)params.get("protocol")); store.setProviderName((String)params.get("providerName")); store.setScope((ScopeType)params.get("scope")); store.setDataCenterId((Long)params.get("zoneId")); String uuid = (String)params.get("uuid"); if (uuid != null) { store.setUuid(uuid); } else { store.setUuid(UUID.randomUUID().toString()); } store.setName((String)params.get("name")); if (store.getName() == null) { store.setName(store.getUuid()); } store.setUrl((String)params.get("url")); store.setRole((DataStoreRole)params.get("role")); store = imageStoreDao.persist(store); return store; }
@Override public String getProviderName() { return imageDataStoreVO.getProviderName(); }
if (imgStores != null && imgStores.size() > 0) { for (ImageStoreVO store : imgStores) { if (!store.getProviderName().equals(DataStoreProvider.NFS_IMAGE)) { throw new InvalidParameterValueException("We only support migrate NFS secondary storage to use object store!"); } else { long storeId = store.getId(); _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), store.getDataCenterId()); DataStoreProvider provider = _dataStoreProviderMgr.getDataStoreProvider(store.getProviderName()); DataStoreLifeCycle lifeCycle = provider.getDataStoreLifeCycle(); DataStore secStore = _dataStoreMgr.getDataStore(storeId, DataStoreRole.Image);
protected List<DataStore> getCacheStores() { QueryBuilder<ImageStoreVO> sc = QueryBuilder.create(ImageStoreVO.class); sc.and(sc.entity().getRole(), SearchCriteria.Op.EQ, DataStoreRole.ImageCache); List<ImageStoreVO> imageStoreVOs = sc.list(); List<DataStore> stores = new ArrayList<DataStore>(); for (ImageStoreVO vo : imageStoreVOs) { stores.add(dataStoreManager.getDataStore(vo.getId(), vo.getRole())); } return stores; }
@Override public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { super.configure(name, params); nameSearch = createSearchBuilder(); nameSearch.and("name", nameSearch.entity().getName(), SearchCriteria.Op.EQ); nameSearch.and("role", nameSearch.entity().getRole(), SearchCriteria.Op.EQ); nameSearch.done(); providerSearch = createSearchBuilder(); providerSearch.and("providerName", providerSearch.entity().getProviderName(), SearchCriteria.Op.EQ); providerSearch.and("role", providerSearch.entity().getRole(), SearchCriteria.Op.EQ); providerSearch.done(); regionSearch = createSearchBuilder(); regionSearch.and("scope", regionSearch.entity().getScope(), SearchCriteria.Op.EQ); regionSearch.and("role", regionSearch.entity().getRole(), SearchCriteria.Op.EQ); regionSearch.done(); return true; }
@Override public DataStoreRole getRole() { return this.imageDataStoreVO.getRole(); }
@Override public String getName() { return imageDataStoreVO.getName(); }
@Override public Long getDataCenterId() { return imageDataStoreVO.getDataCenterId(); }
@Override public String getMountPoint() { return imageDataStoreVO.getParent(); }
@Override public String getUuid() { return this.imageDataStoreVO.getUuid(); }
@Override public Scope getScope() { return new ZoneScope(imageDataStoreVO.getDataCenterId()); }
public void cleanupStorage() { final int EXTRACT_URL_LIFE_LIMIT_IN_SECONDS = _urlExpirationInterval; List<UploadVO> extractJobs = _uploadDao.listByModeAndStatus(Mode.HTTP_DOWNLOAD, Status.DOWNLOAD_URL_CREATED); for (UploadVO extractJob : extractJobs) { if (getTimeDiff(extractJob.getLastUpdated()) > EXTRACT_URL_LIFE_LIMIT_IN_SECONDS) { String path = extractJob.getInstallPath(); DataStore secStore = storeMgr.getDataStore(extractJob.getDataStoreId(), DataStoreRole.Image); // Would delete the symlink for the Type and if Type == VOLUME then also the volume DeleteEntityDownloadURLCommand cmd = new DeleteEntityDownloadURLCommand(path, extractJob.getType(), extractJob.getUploadUrl(), ((ImageStoreVO)secStore).getParent()); EndPoint ep = _epSelector.select(secStore); if (ep == null) { s_logger.warn("UploadMonitor cleanup: There is no secondary storage VM for secondary storage host " + extractJob.getDataStoreId()); continue; //TODO: why continue? why not break? } if (s_logger.isDebugEnabled()) { s_logger.debug("UploadMonitor cleanup: Sending deletion of extract URL " + extractJob.getUploadUrl() + " to ssvm " + ep.getHostAddr()); } Answer ans = ep.sendMessage(cmd); if (ans != null && ans.getResult()) { _uploadDao.remove(extractJob.getId()); } else { s_logger.warn("UploadMonitor cleanup: Unable to delete the link for " + extractJob.getType() + " id=" + extractJob.getTypeId() + " url=" + extractJob.getUploadUrl() + " on ssvm " + ep.getHostAddr()); } } } }
return store; store = new ImageStoreVO(); store.setProtocol((String)params.get("protocol")); store.setProviderName((String)params.get("providerName")); store.setScope((ScopeType)params.get("scope")); store.setDataCenterId((Long)params.get("zoneId")); String uuid = (String)params.get("uuid"); if (uuid != null) { store.setUuid(uuid); } else { store.setUuid(UUID.randomUUID().toString()); store.setUrl((String)params.get("url")); store.setName((String)params.get("name")); if (store.getName() == null) { store.setName(store.getUuid()); store.setRole((DataStoreRole)params.get("role")); throw new CloudRuntimeException("Error while generating the cifs url. " + e.getMessage()); store.setUrl(updatedPath); value = DBEncryptionUtil.encrypt(value); ImageStoreDetailVO detail = new ImageStoreDetailVO(store.getId(), key, value, true); imageStoreDetailsDao.persist(detail);
@Override public List<DataStore> listImageStoreByProvider(String provider) { List<ImageStoreVO> stores = dataStoreDao.findByProvider(provider); List<DataStore> imageStores = new ArrayList<DataStore>(); for (ImageStoreVO store : stores) { imageStores.add(getImageStore(store.getId())); } return imageStores; }
@Override public ImageStoreEntity getImageStore(long dataStoreId) { ImageStoreVO dataStore = dataStoreDao.findById(dataStoreId); String providerName = dataStore.getProviderName(); ImageStoreProvider provider = (ImageStoreProvider)providerManager.getDataStoreProvider(providerName); ImageStoreEntity imgStore = ImageStoreImpl.getDataStore(dataStore, driverMaps.get(provider.getName()), provider); return imgStore; }
throw new InvalidParameterValueException("Cache store with id " + storeId + " doesn't exist"); _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), store.getDataCenterId());
@Override public List<DataStore> listImageStoresByScope(ZoneScope scope) { List<ImageStoreVO> stores = dataStoreDao.findByScope(scope); List<DataStore> imageStores = new ArrayList<DataStore>(); for (ImageStoreVO store : stores) { imageStores.add(getImageStore(store.getId())); } return imageStores; }
if (!store.getProviderName().equalsIgnoreCase(providerName)) { throw new InvalidParameterValueException("You can only add new image stores from the same provider " + store.getProviderName() + " already added");
throw new InvalidParameterValueException("Image store with id " + storeId + " doesn't exist"); _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), store.getDataCenterId());