summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorMorten Tokle <mortent@verizonmedia.com>2021-04-15 11:58:21 +0200
committerMorten Tokle <mortent@verizonmedia.com>2021-04-15 12:01:30 +0200
commit96c2e442cbb798f0c85990d3f0c760c60ee9a5b3 (patch)
tree3e3559545df8686955d083b65eb239baa8c09505 /container-search
parent81fad70d16a8494ce0464af6ee4ba9c0e12f6a6e (diff)
Custom acl mapping
Diffstat (limited to 'container-search')
-rw-r--r--container-search/abi-spec.json3
-rw-r--r--container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java25
2 files changed, 27 insertions, 1 deletions
diff --git a/container-search/abi-spec.json b/container-search/abi-spec.json
index 75b8814ecb0..9e5963e5152 100644
--- a/container-search/abi-spec.json
+++ b/container-search/abi-spec.json
@@ -4235,7 +4235,8 @@
"public com.yahoo.search.Result searchAndFill(com.yahoo.search.Query, com.yahoo.component.chain.Chain)",
"public com.yahoo.processing.rendering.Renderer getRendererCopy(com.yahoo.component.ComponentSpecification)",
"public com.yahoo.search.searchchain.SearchChainRegistry getSearchChainRegistry()",
- "public void createRequestMapping(com.yahoo.slime.Inspector, java.util.Map, java.lang.String)"
+ "public void createRequestMapping(com.yahoo.slime.Inspector, java.util.Map, java.lang.String)",
+ "public com.yahoo.container.jdisc.RequestHandlerSpec requestHandlerSpec()"
],
"fields": [
"public static final java.lang.String defaultSearchChainName"
diff --git a/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java b/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
index 2b27f60ef73..e95e085ed5c 100644
--- a/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
+++ b/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
@@ -14,11 +14,14 @@ import com.yahoo.container.handler.threadpool.ContainerThreadPool;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.container.jdisc.LoggingRequestHandler;
+import com.yahoo.container.jdisc.RequestHandlerSpec;
import com.yahoo.container.jdisc.VespaHeaders;
import com.yahoo.container.logging.AccessLog;
import com.yahoo.io.IOUtils;
import com.yahoo.jdisc.Metric;
import com.yahoo.jdisc.Request;
+import com.yahoo.container.jdisc.AclMapping;
+import com.yahoo.container.jdisc.RequestView;
import com.yahoo.language.Linguistics;
import com.yahoo.net.HostName;
import com.yahoo.net.UriTools;
@@ -103,6 +106,8 @@ public class SearchHandler extends LoggingRequestHandler {
private final AtomicLong numRequestsLeftToTrace;
+ private final static RequestHandlerSpec REQUEST_HANDLER_SPEC = RequestHandlerSpec.builder().withAclMapping(SearchHandler::mapRequestToAction).build();
+
private final class MeanConnections implements Callback {
@Override
@@ -631,6 +636,26 @@ public class SearchHandler extends LoggingRequestHandler {
});
}
+ @Override
+ public RequestHandlerSpec requestHandlerSpec() {
+ return REQUEST_HANDLER_SPEC;
+ }
+
+ private static AclMapping.Action mapRequestToAction(RequestView requestMeta) {
+ switch (requestMeta.method()){
+ case GET:
+ case POST:
+ case HEAD:
+ case OPTIONS:
+ return AclMapping.Action.read;
+ case PUT:
+ return AclMapping.Action.update;
+ case DELETE:
+ return AclMapping.Action.delete;
+ default:
+ return AclMapping.Action.create;
+ }
+ }
}