use of org.infinispan.rest.framework.Method.GET in project infinispan by infinispan.
the class SearchAdminResource method runIndexer.
private CompletionStage<RestResponse> runIndexer(RestRequest request, Function<Indexer, CompletionStage<Void>> op, boolean supportAsync) {
NettyRestResponse.Builder responseBuilder = new NettyRestResponse.Builder();
List<String> mode = request.parameters().get("mode");
boolean asyncParams = mode != null && !mode.isEmpty() && mode.iterator().next().equalsIgnoreCase("async");
boolean async = asyncParams && supportAsync;
AdvancedCache<?, ?> cache = lookupIndexedCache(request, responseBuilder);
int status = responseBuilder.getStatus();
if (status < OK.code() || status >= MULTIPLE_CHOICES.code()) {
return completedFuture(responseBuilder.build());
}
responseBuilder.status(NO_CONTENT);
Indexer indexer = ComponentRegistryUtils.getIndexer(cache);
if (async) {
try {
LOG.asyncMassIndexerStarted();
op.apply(indexer).whenComplete((v, e) -> {
if (e == null) {
LOG.asyncMassIndexerSuccess();
} else {
LOG.errorExecutingMassIndexer(e.getCause());
}
});
} catch (Exception e) {
responseBuilder.status(INTERNAL_SERVER_ERROR).entity("Error executing the MassIndexer " + e.getCause());
}
return CompletableFuture.completedFuture(responseBuilder.build());
}
return op.apply(indexer).exceptionally(e -> {
if (e instanceof MassIndexerAlreadyStartedException) {
responseBuilder.status(BAD_REQUEST).entity("MassIndexer already started");
} else {
responseBuilder.status(INTERNAL_SERVER_ERROR).entity("Error executing the MassIndexer " + e.getCause());
}
return null;
}).thenApply(v -> responseBuilder.build());
}
use of org.infinispan.rest.framework.Method.GET in project infinispan by infinispan.
the class SecurityResource method createRole.
private CompletionStage<RestResponse> createRole(RestRequest request) {
NettyRestResponse.Builder builder = new NettyRestResponse.Builder();
if (rolePermissionMapper == null) {
return completedFuture(new NettyRestResponse.Builder().status(CONFLICT).entity(Log.REST.rolePermissionMapperNotMutable()).build());
}
String name = request.variables().get("role");
List<String> perms = request.parameters().get("permission");
if (perms == null) {
return completedFuture(builder.status(HttpResponseStatus.BAD_REQUEST).build());
}
Set<AuthorizationPermission> permissions = perms.stream().map(p -> AuthorizationPermission.valueOf(p.toUpperCase())).collect(Collectors.toSet());
Role role = new CacheRoleImpl(name, true, permissions);
return rolePermissionMapper.addRole(role).thenCompose(ignore -> aclCacheFlush(request));
}
use of org.infinispan.rest.framework.Method.GET in project infinispan by infinispan.
the class ContainerResource method getCaches.
private CompletionStage<RestResponse> getCaches(RestRequest request) {
NettyRestResponse.Builder responseBuilder = checkCacheManager(request);
if (responseBuilder.getHttpStatus() == NOT_FOUND)
return completedFuture(responseBuilder.build());
EmbeddedCacheManager cacheManager = invocationHelper.getRestCacheManager().getInstance();
EmbeddedCacheManager subjectCacheManager = cacheManager.withSubject(request.getSubject());
// Remove internal caches
Set<String> cacheNames = new HashSet<>(subjectCacheManager.getCacheNames());
cacheNames.removeAll(internalCacheRegistry.getInternalCacheNames());
Set<String> ignoredCaches = serverStateManager.getIgnoredCaches();
List<CacheHealth> cachesHealth = SecurityActions.getHealth(subjectCacheManager).getCacheHealth(cacheNames);
LocalTopologyManager localTopologyManager = null;
Boolean clusterRebalancingEnabled = null;
try {
localTopologyManager = SecurityActions.getGlobalComponentRegistry(cacheManager).getLocalTopologyManager();
if (localTopologyManager != null) {
clusterRebalancingEnabled = localTopologyManager.isRebalancingEnabled();
}
} catch (Exception e) {
// Unable to get the component. Just ignore.
}
// We rely on the fact that getCacheNames doesn't block for embedded - remote it does unfortunately
LocalTopologyManager finalLocalTopologyManager = localTopologyManager;
Boolean finalClusterRebalancingEnabled = clusterRebalancingEnabled;
return Flowable.fromIterable(cachesHealth).map(chHealth -> getCacheInfo(request, cacheManager, subjectCacheManager, ignoredCaches, finalLocalTopologyManager, finalClusterRebalancingEnabled, chHealth)).sorted(Comparator.comparing(c -> c.name)).collect(Collectors.toList()).map(cacheInfos -> (RestResponse) addEntityAsJson(Json.make(cacheInfos), responseBuilder).build()).toCompletionStage();
}
Aggregations