@Override public DataStore getDataStore(long storeId, DataStoreRole role) { try { if (role == DataStoreRole.Primary) { return primaryStoreMgr.getPrimaryDataStore(storeId); } else if (role == DataStoreRole.Image) { return imageDataStoreMgr.getImageStore(storeId); } else if (role == DataStoreRole.ImageCache) { return imageDataStoreMgr.getImageStore(storeId); } } catch (CloudRuntimeException e) { throw e; } throw new CloudRuntimeException("un recognized type" + role); }
@Override public List<DataStore> getImageCacheStores(Scope scope) { return imageDataStoreMgr.listImageCacheStores(scope); }
@Override public List<DataStore> listImageStores() { return imageDataStoreMgr.listImageStores(); }
@Override public boolean configure(Map<String, Object> params) { lifeCycle = ComponentContext.inject(CloudStackImageStoreLifeCycleImpl.class); driver = ComponentContext.inject(CloudStackImageStoreDriverImpl.class); storeMgr.registerDriver(this.getName(), driver); return true; }
@Override public List<DataStore> getImageStoresByScope(ZoneScope scope) { return imageDataStoreMgr.listImageStoresByScope(scope); }
@Override public boolean configure(Map<String, Object> params) { lifeCycle = ComponentContext.inject(S3ImageStoreLifeCycleImpl.class); driver = ComponentContext.inject(S3ImageStoreDriverImpl.class); storeMgr.registerDriver(this.getName(), driver); return true; }
@Override public DataStore getImageStore(long zoneId) { List<DataStore> stores = getImageStoresByScope(new ZoneScope(zoneId)); if (stores == null || stores.size() == 0) { return null; } return imageDataStoreMgr.getImageStore(stores); }
@Override public boolean configure(Map<String, Object> params) { lifeCycle = ComponentContext.inject(SampleImageStoreLifeCycleImpl.class); driver = ComponentContext.inject(SampleImageStoreDriverImpl.class); storeMgr.registerDriver(this.getName(), driver); return true; }
@Override public List<DataStore> listImageCacheStores() { return imageDataStoreMgr.listImageCacheStores(); }
@Override public DataStore getImageCacheStore(long zoneId) { List<DataStore> stores = getImageCacheStores(new ZoneScope(zoneId)); if (stores == null || stores.size() == 0) { return null; } return imageDataStoreMgr.getImageStore(stores); }
@Override public boolean configure(Map<String, Object> params) { lifeCycle = ComponentContext.inject(SwiftImageStoreLifeCycleImpl.class); driver = ComponentContext.inject(SwiftImageStoreDriverImpl.class); storeMgr.registerDriver(this.getName(), driver); return true; }
@Override public DataStore getDataStore(String uuid, DataStoreRole role) { if (role == DataStoreRole.Primary) { return primaryStoreMgr.getPrimaryDataStore(uuid); } else if (role == DataStoreRole.Image) { return imageDataStoreMgr.getImageStore(uuid); } throw new CloudRuntimeException("un recognized type" + role); }
protected boolean registerProvider(DataStoreProvider provider) { Map<String, Object> copyParams = new HashMap<String, Object>(); String providerName = provider.getName(); if (providerMap.get(providerName) != null) { s_logger.debug("Did not register data store provider, provider name: " + providerName + " is not unique"); return false; } s_logger.debug("registering data store provider:" + provider.getName()); providerMap.put(providerName, provider); try { boolean registrationResult = provider.configure(copyParams); if (!registrationResult) { providerMap.remove(providerName); s_logger.debug("Failed to register data store provider: " + providerName); return false; } Set<DataStoreProviderType> types = provider.getTypes(); if (types.contains(DataStoreProviderType.PRIMARY)) { primaryDataStoreProviderMgr.registerDriver(provider.getName(), (PrimaryDataStoreDriver)provider.getDataStoreDriver()); primaryDataStoreProviderMgr.registerHostListener(provider.getName(), provider.getHostListener()); } else if (types.contains(DataStoreProviderType.IMAGE)) { imageStoreProviderMgr.registerDriver(provider.getName(), (ImageStoreDriver)provider.getDataStoreDriver()); } } catch (Exception e) { s_logger.debug("configure provider failed", e); providerMap.remove(providerName); return false; } return true; }
@Override public DataStore getCacheStore(Scope scope) { if (scope.getScopeType() != ScopeType.ZONE) { s_logger.debug("Can only support zone wide cache storage"); return null; } List<DataStore> cacheStores = dataStoreMgr.getImageCacheStores(scope); if ((cacheStores == null) || (cacheStores.size() <= 0)) { s_logger.debug("Can't find staging storage in zone: " + scope.getScopeId()); return null; } return imageStoreMgr.getImageStore(cacheStores); }
@Override public DataStore initialize(Map<String, Object> dsInfos) { Long dcId = (Long)dsInfos.get("zoneId"); String url = (String)dsInfos.get("url"); String name = (String)dsInfos.get("name"); ScopeType scope = (ScopeType)dsInfos.get("scope"); String providerName = (String)dsInfos.get("providerName"); DataStoreRole role = (DataStoreRole)dsInfos.get("role"); Map<String, String> details = (Map<String, String>)dsInfos.get("details"); s_logger.info("Trying to add a swift store at " + url + " in data center " + dcId); // just need to insert an entry in DB Map<String, Object> imageStoreParameters = new HashMap<String, Object>(); imageStoreParameters.put("name", name); imageStoreParameters.put("zoneId", dcId); imageStoreParameters.put("url", url); imageStoreParameters.put("protocol", "http"); if (scope != null) { imageStoreParameters.put("scope", scope); } else { imageStoreParameters.put("scope", ScopeType.REGION); } imageStoreParameters.put("providerName", providerName); imageStoreParameters.put("role", role); ImageStoreVO ids = imageStoreHelper.createImageStore(imageStoreParameters, details); return imageStoreMgr.getImageStore(ids.getId()); }
@SuppressWarnings("unchecked") @Override public DataStore initialize(Map<String, Object> dsInfos) { String url = (String)dsInfos.get("url"); String name = (String)dsInfos.get("name"); String providerName = (String)dsInfos.get("providerName"); ScopeType scope = (ScopeType)dsInfos.get("scope"); DataStoreRole role = (DataStoreRole)dsInfos.get("role"); Map<String, String> details = (Map<String, String>)dsInfos.get("details"); s_logger.info("Trying to add a S3 store with endpoint: " + details.get(ApiConstants.S3_END_POINT)); Map<String, Object> imageStoreParameters = new HashMap(); imageStoreParameters.put("name", name); imageStoreParameters.put("url", url); String protocol = "http"; String useHttps = details.get(ApiConstants.S3_HTTPS_FLAG); if (useHttps != null && Boolean.parseBoolean(useHttps)) { protocol = "https"; } imageStoreParameters.put("protocol", protocol); if (scope != null) { imageStoreParameters.put("scope", scope); } else { imageStoreParameters.put("scope", ScopeType.REGION); } imageStoreParameters.put("providerName", providerName); imageStoreParameters.put("role", role); ImageStoreVO ids = imageStoreHelper.createImageStore(imageStoreParameters, details); return imageStoreMgr.getImageStore(ids.getId()); }
@Override public DataStore initialize(Map<String, Object> dsInfos) { ImageStoreVO ids = imageStoreHelper.createImageStore(dsInfos); return imageStoreMgr.getImageStore(ids.getId()); }
return imageStoreMgr.getImageStore(ids.getId());
@Override public DataStore getCacheStore(DataObject data, Scope scope) { if (scope.getScopeType() != ScopeType.ZONE) { s_logger.debug("Can only support zone wide cache storage"); return null; } List<DataStore> cacheStores = dataStoreMgr.getImageCacheStores(scope); if (cacheStores.size() <= 0) { s_logger.debug("Can't find staging storage in zone: " + scope.getScopeId()); return null; } // if there are multiple cache stores, we give priority to the one where data is already there if (cacheStores.size() > 1) { for (DataStore store : cacheStores) { DataObjectInStore obj = objectInStoreMgr.findObject(data, store); if (obj != null && obj.getState() == ObjectInDataStoreStateMachine.State.Ready && statsCollector.imageStoreHasEnoughCapacity(store)) { s_logger.debug("pick the cache store " + store.getId() + " where data is already there"); return store; } } } return imageStoreMgr.getImageStore(cacheStores); } }