Search in sources :

Example 1 with GET

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());
}
Also used : SearchStatisticsSnapshot(org.infinispan.query.core.stats.SearchStatisticsSnapshot) ResourceHandler(org.infinispan.rest.framework.ResourceHandler) LogFactory(org.infinispan.util.logging.LogFactory) INTERNAL_SERVER_ERROR(io.netty.handler.codec.http.HttpResponseStatus.INTERNAL_SERVER_ERROR) NOT_FOUND(io.netty.handler.codec.http.HttpResponseStatus.NOT_FOUND) CompletableFuture.completedFuture(java.util.concurrent.CompletableFuture.completedFuture) GET(org.infinispan.rest.framework.Method.GET) CompletableFuture(java.util.concurrent.CompletableFuture) POST(org.infinispan.rest.framework.Method.POST) MULTIPLE_CHOICES(io.netty.handler.codec.http.HttpResponseStatus.MULTIPLE_CHOICES) Function(java.util.function.Function) BAD_REQUEST(io.netty.handler.codec.http.HttpResponseStatus.BAD_REQUEST) NO_CONTENT(io.netty.handler.codec.http.HttpResponseStatus.NO_CONTENT) Indexer(org.infinispan.query.Indexer) AdvancedCache(org.infinispan.AdvancedCache) ResourceUtil.asJsonResponse(org.infinispan.rest.resources.ResourceUtil.asJsonResponse) InfinispanQueryStatisticsInfo(org.infinispan.query.impl.InfinispanQueryStatisticsInfo) Log(org.infinispan.rest.logging.Log) RestRequest(org.infinispan.rest.framework.RestRequest) Invocations(org.infinispan.rest.framework.impl.Invocations) CacheException(org.infinispan.commons.CacheException) MassIndexerAlreadyStartedException(org.infinispan.query.impl.massindex.MassIndexerAlreadyStartedException) NettyRestResponse(org.infinispan.rest.NettyRestResponse) InvocationHelper(org.infinispan.rest.InvocationHelper) HttpResponseStatus(io.netty.handler.codec.http.HttpResponseStatus) SearchStatistics(org.infinispan.query.core.stats.SearchStatistics) Security(org.infinispan.security.Security) ResourceUtil.asJsonResponseFuture(org.infinispan.rest.resources.ResourceUtil.asJsonResponseFuture) List(java.util.List) CompletionStage(java.util.concurrent.CompletionStage) Configuration(org.infinispan.configuration.cache.Configuration) RestResponse(org.infinispan.rest.framework.RestResponse) ComponentRegistryUtils(org.infinispan.query.impl.ComponentRegistryUtils) OK(io.netty.handler.codec.http.HttpResponseStatus.OK) Search(org.infinispan.query.Search) Indexer(org.infinispan.query.Indexer) MassIndexerAlreadyStartedException(org.infinispan.query.impl.massindex.MassIndexerAlreadyStartedException) NettyRestResponse(org.infinispan.rest.NettyRestResponse) CacheException(org.infinispan.commons.CacheException) MassIndexerAlreadyStartedException(org.infinispan.query.impl.massindex.MassIndexerAlreadyStartedException)

Example 2 with GET

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));
}
Also used : PUT(org.infinispan.rest.framework.Method.PUT) ResourceHandler(org.infinispan.rest.framework.ResourceHandler) MutablePrincipalRoleMapper(org.infinispan.security.MutablePrincipalRoleMapper) CompletableFuture.completedFuture(java.util.concurrent.CompletableFuture.completedFuture) GET(org.infinispan.rest.framework.Method.GET) Role(org.infinispan.security.Role) CompletableFuture(java.util.concurrent.CompletableFuture) GlobalConfiguration(org.infinispan.configuration.global.GlobalConfiguration) POST(org.infinispan.rest.framework.Method.POST) CONFLICT(io.netty.handler.codec.http.HttpResponseStatus.CONFLICT) BAD_REQUEST(io.netty.handler.codec.http.HttpResponseStatus.BAD_REQUEST) NO_CONTENT(io.netty.handler.codec.http.HttpResponseStatus.NO_CONTENT) RestCacheManager(org.infinispan.rest.cachemanager.RestCacheManager) EmbeddedCacheManager(org.infinispan.manager.EmbeddedCacheManager) DELETE(org.infinispan.rest.framework.Method.DELETE) GlobalSecurityManager(org.infinispan.security.GlobalSecurityManager) Map(java.util.Map) Log(org.infinispan.rest.logging.Log) RestRequest(org.infinispan.rest.framework.RestRequest) SubjectACL(org.infinispan.security.impl.SubjectACL) Invocations(org.infinispan.rest.framework.impl.Invocations) NettyRestResponse(org.infinispan.rest.NettyRestResponse) AuthorizationPermission(org.infinispan.security.AuthorizationPermission) GlobalAuthorizationConfiguration(org.infinispan.configuration.global.GlobalAuthorizationConfiguration) Collection(java.util.Collection) Set(java.util.Set) InvocationHelper(org.infinispan.rest.InvocationHelper) HttpResponseStatus(io.netty.handler.codec.http.HttpResponseStatus) Json(org.infinispan.commons.dataconversion.internal.Json) Collectors(java.util.stream.Collectors) MutableRolePermissionMapper(org.infinispan.security.MutableRolePermissionMapper) Subject(javax.security.auth.Subject) ResourceUtil.asJsonResponseFuture(org.infinispan.rest.resources.ResourceUtil.asJsonResponseFuture) List(java.util.List) PrincipalRoleMapper(org.infinispan.security.PrincipalRoleMapper) CompletionStage(java.util.concurrent.CompletionStage) Authorizer(org.infinispan.security.impl.Authorizer) Configuration(org.infinispan.configuration.cache.Configuration) AuditContext(org.infinispan.security.AuditContext) RestResponse(org.infinispan.rest.framework.RestResponse) CacheRoleImpl(org.infinispan.security.impl.CacheRoleImpl) RolePermissionMapper(org.infinispan.security.RolePermissionMapper) Role(org.infinispan.security.Role) AuthorizationPermission(org.infinispan.security.AuthorizationPermission) CacheRoleImpl(org.infinispan.security.impl.CacheRoleImpl) NettyRestResponse(org.infinispan.rest.NettyRestResponse)

Example 3 with GET

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();
}
Also used : ConfigurationWriter(org.infinispan.commons.configuration.io.ConfigurationWriter) JsonSerialization(org.infinispan.commons.dataconversion.internal.JsonSerialization) InternalCacheRegistry(org.infinispan.registry.InternalCacheRegistry) ResourceHandler(org.infinispan.rest.framework.ResourceHandler) APPLICATION_XML(org.infinispan.commons.dataconversion.MediaType.APPLICATION_XML) ConfigurationBuilder(org.infinispan.configuration.cache.ConfigurationBuilder) NOT_FOUND(io.netty.handler.codec.http.HttpResponseStatus.NOT_FOUND) CompletableFuture.completedFuture(java.util.concurrent.CompletableFuture.completedFuture) GET(org.infinispan.rest.framework.Method.GET) GlobalConfiguration(org.infinispan.configuration.global.GlobalConfiguration) POST(org.infinispan.rest.framework.Method.POST) Cache(org.infinispan.Cache) ConfigurationChanged(org.infinispan.notifications.cachemanagerlistener.annotation.ConfigurationChanged) CompletableFutures(org.infinispan.util.concurrent.CompletableFutures) ConfigurationBuilderHolder(org.infinispan.configuration.parsing.ConfigurationBuilderHolder) Map(java.util.Map) ServerSentEvent(org.infinispan.rest.ServerSentEvent) RestRequest(org.infinispan.rest.framework.RestRequest) Listener(org.infinispan.notifications.Listener) NettyRestResponse(org.infinispan.rest.NettyRestResponse) AuthorizationPermission(org.infinispan.security.AuthorizationPermission) GlobalComponentRegistry(org.infinispan.factories.GlobalComponentRegistry) Set(java.util.Set) InvocationHelper(org.infinispan.rest.InvocationHelper) HttpResponseStatus(io.netty.handler.codec.http.HttpResponseStatus) PrivilegedAction(java.security.PrivilegedAction) EventStream(org.infinispan.rest.EventStream) Collectors(java.util.stream.Collectors) ComponentStatus(org.infinispan.lifecycle.ComponentStatus) List(java.util.List) CompletionStage(java.util.concurrent.CompletionStage) ResourceUtil.addEntityAsJson(org.infinispan.rest.resources.ResourceUtil.addEntityAsJson) LocalTopologyManager(org.infinispan.topology.LocalTopologyManager) OK(io.netty.handler.codec.http.HttpResponseStatus.OK) StringBuilderWriter(org.infinispan.commons.io.StringBuilderWriter) PersistenceManager(org.infinispan.persistence.manager.PersistenceManager) ByteArrayOutputStream(java.io.ByteArrayOutputStream) INTERNAL_SERVER_ERROR(io.netty.handler.codec.http.HttpResponseStatus.INTERNAL_SERVER_ERROR) CompletableFuture(java.util.concurrent.CompletableFuture) NO_CONTENT(io.netty.handler.codec.http.HttpResponseStatus.NO_CONTENT) HashSet(java.util.HashSet) MediaType(org.infinispan.commons.dataconversion.MediaType) RestCacheManager(org.infinispan.rest.cachemanager.RestCacheManager) ServerStateManager(org.infinispan.server.core.ServerStateManager) APPLICATION_YAML(org.infinispan.commons.dataconversion.MediaType.APPLICATION_YAML) HealthStatus(org.infinispan.health.HealthStatus) EmbeddedCacheManager(org.infinispan.manager.EmbeddedCacheManager) DELETE(org.infinispan.rest.framework.Method.DELETE) HEAD(org.infinispan.rest.framework.Method.HEAD) MediaTypeUtils.negotiateMediaType(org.infinispan.rest.resources.MediaTypeUtils.negotiateMediaType) ConfigurationChangedEvent(org.infinispan.notifications.cachemanagerlistener.event.ConfigurationChangedEvent) TEXT_EVENT_STREAM(org.infinispan.commons.dataconversion.MediaType.TEXT_EVENT_STREAM) Collections.emptyMap(java.util.Collections.emptyMap) Invocations(org.infinispan.rest.framework.impl.Invocations) Flowable(io.reactivex.rxjava3.core.Flowable) APPLICATION_JSON(org.infinispan.commons.dataconversion.MediaType.APPLICATION_JSON) UTF_8(java.nio.charset.StandardCharsets.UTF_8) StringWriter(java.io.StringWriter) ContentSource(org.infinispan.rest.framework.ContentSource) Json(org.infinispan.commons.dataconversion.internal.Json) TEXT_PLAIN(org.infinispan.commons.dataconversion.MediaType.TEXT_PLAIN) Security(org.infinispan.security.Security) BackupManager(org.infinispan.server.core.BackupManager) ResourceUtil.asJsonResponseFuture(org.infinispan.rest.resources.ResourceUtil.asJsonResponseFuture) Configuration(org.infinispan.configuration.cache.Configuration) ParserRegistry(org.infinispan.configuration.parsing.ParserRegistry) AuditContext(org.infinispan.security.AuditContext) ClusterHealth(org.infinispan.health.ClusterHealth) CacheHealth(org.infinispan.health.CacheHealth) RestResponse(org.infinispan.rest.framework.RestResponse) Comparator(java.util.Comparator) Collections(java.util.Collections) Health(org.infinispan.health.Health) NettyRestResponse(org.infinispan.rest.NettyRestResponse) RestResponse(org.infinispan.rest.framework.RestResponse) EmbeddedCacheManager(org.infinispan.manager.EmbeddedCacheManager) NettyRestResponse(org.infinispan.rest.NettyRestResponse) CacheHealth(org.infinispan.health.CacheHealth) HashSet(java.util.HashSet) LocalTopologyManager(org.infinispan.topology.LocalTopologyManager)

Aggregations

HttpResponseStatus (io.netty.handler.codec.http.HttpResponseStatus)3 NO_CONTENT (io.netty.handler.codec.http.HttpResponseStatus.NO_CONTENT)3 List (java.util.List)3 CompletableFuture (java.util.concurrent.CompletableFuture)3 CompletableFuture.completedFuture (java.util.concurrent.CompletableFuture.completedFuture)3 CompletionStage (java.util.concurrent.CompletionStage)3 Configuration (org.infinispan.configuration.cache.Configuration)3 InvocationHelper (org.infinispan.rest.InvocationHelper)3 NettyRestResponse (org.infinispan.rest.NettyRestResponse)3 GET (org.infinispan.rest.framework.Method.GET)3 POST (org.infinispan.rest.framework.Method.POST)3 ResourceHandler (org.infinispan.rest.framework.ResourceHandler)3 RestRequest (org.infinispan.rest.framework.RestRequest)3 RestResponse (org.infinispan.rest.framework.RestResponse)3 Invocations (org.infinispan.rest.framework.impl.Invocations)3 ResourceUtil.asJsonResponseFuture (org.infinispan.rest.resources.ResourceUtil.asJsonResponseFuture)3 BAD_REQUEST (io.netty.handler.codec.http.HttpResponseStatus.BAD_REQUEST)2 INTERNAL_SERVER_ERROR (io.netty.handler.codec.http.HttpResponseStatus.INTERNAL_SERVER_ERROR)2 NOT_FOUND (io.netty.handler.codec.http.HttpResponseStatus.NOT_FOUND)2 OK (io.netty.handler.codec.http.HttpResponseStatus.OK)2