Browse Source

Remove create parameter from put query ruleset API call (#96883)

Kathleen DeRusso 2 years ago
parent
commit
163fa8c96b

+ 0 - 6
rest-api-spec/src/main/resources/rest-api-spec/api/query_ruleset.put.json

@@ -31,12 +31,6 @@
         }
       ]
     },
-    "params": {
-      "create": {
-        "type": "boolean",
-        "description": "If true, requires that a query_ruleset with the specified resource_id does not already exist. (default: false)"
-      }
-    },
     "body": {
       "description": "The query ruleset configuration, including `rules`",
       "required": true

+ 1 - 5
x-pack/plugin/ent-search/qa/rest/src/yamlRestTest/resources/rest-api-spec/test/entsearch/200_query_ruleset_put.yml

@@ -37,7 +37,6 @@
 'Create Query Ruleset - Resource already exists':
   - do:
       query_ruleset.put:
-        create: true
         ruleset_id: test-query-ruleset-recreating
         body:
           ruleset_id: 'test-query-ruleset-recreating'
@@ -55,9 +54,7 @@
   - match: { result: 'created' }
 
   - do:
-      catch: conflict
       query_ruleset.put:
-        create: true
         ruleset_id: test-query-ruleset-recreating
         body:
           ruleset_id: 'test-query-ruleset-recreating'
@@ -72,7 +69,7 @@
               ids:
                 - 'id2'
 
-  - match: { error.type: 'version_conflict_engine_exception' }
+  - match: { result: 'updated' }
 
 ---
 'Create Query Ruleset - Insufficient privilege':
@@ -84,7 +81,6 @@
       headers: { Authorization: "Basic ZW50c2VhcmNoLXVzZXI6ZW50c2VhcmNoLXVzZXItcGFzc3dvcmQ=" }  # user
       query_ruleset.put:
         ruleset_id: forbidden-query-ruleset
-        create: true
         body:
           ruleset_id: 'forbidden-query-ruleset'
           rules:

+ 2 - 4
x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/QueryRulesIndexService.java

@@ -207,15 +207,13 @@ public class QueryRulesIndexService {
      * Creates or updates the {@link QueryRuleset} in the underlying index.
      *
      * @param queryRuleset The query ruleset object.
-     * @param create If true, a query ruleset with the specified unique identifier must not already exist
      * @param listener The action listener to invoke on response/failure.
      */
-    public void putQueryRuleset(QueryRuleset queryRuleset, boolean create, ActionListener<IndexResponse> listener) {
+    public void putQueryRuleset(QueryRuleset queryRuleset, ActionListener<IndexResponse> listener) {
         try {
-            DocWriteRequest.OpType opType = (create ? DocWriteRequest.OpType.CREATE : DocWriteRequest.OpType.INDEX);
             final IndexRequest indexRequest = new IndexRequest(QUERY_RULES_ALIAS_NAME).opType(DocWriteRequest.OpType.INDEX)
                 .id(queryRuleset.id())
-                .opType(opType)
+                .opType(DocWriteRequest.OpType.INDEX)
                 .setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE)
                 .source(queryRuleset.toXContent(jsonBuilder(), ToXContent.EMPTY_PARAMS));
             clientWithOrigin.index(indexRequest, listener);

+ 4 - 13
x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/action/PutQueryRulesetAction.java

@@ -41,22 +41,18 @@ public class PutQueryRulesetAction extends ActionType<PutQueryRulesetAction.Resp
     public static class Request extends ActionRequest {
 
         private final QueryRuleset queryRuleset;
-        private final boolean create;
 
         public Request(StreamInput in) throws IOException {
             super(in);
             this.queryRuleset = new QueryRuleset(in);
-            this.create = in.readBoolean();
         }
 
-        public Request(QueryRuleset queryRuleset, boolean create) {
+        public Request(QueryRuleset queryRuleset) {
             this.queryRuleset = queryRuleset;
-            this.create = create;
         }
 
-        public Request(String rulesetId, boolean create, BytesReference content, XContentType contentType) {
+        public Request(String rulesetId, BytesReference content, XContentType contentType) {
             this.queryRuleset = QueryRuleset.fromXContentBytes(rulesetId, content, contentType);
-            this.create = create;
         }
 
         @Override
@@ -79,28 +75,23 @@ public class PutQueryRulesetAction extends ActionType<PutQueryRulesetAction.Resp
         public void writeTo(StreamOutput out) throws IOException {
             super.writeTo(out);
             queryRuleset.writeTo(out);
-            out.writeBoolean(create);
         }
 
         public QueryRuleset queryRuleset() {
             return queryRuleset;
         }
 
-        public boolean create() {
-            return create;
-        }
-
         @Override
         public boolean equals(Object o) {
             if (this == o) return true;
             if (o == null || getClass() != o.getClass()) return false;
             Request request = (Request) o;
-            return create == request.create && Objects.equals(queryRuleset, request.queryRuleset);
+            return Objects.equals(queryRuleset, request.queryRuleset);
         }
 
         @Override
         public int hashCode() {
-            return Objects.hash(queryRuleset, create);
+            return Objects.hash(queryRuleset);
         }
     }
 

+ 0 - 1
x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/action/RestPutQueryRulesetAction.java

@@ -42,7 +42,6 @@ public class RestPutQueryRulesetAction extends EnterpriseSearchBaseRestHandler {
     protected RestChannelConsumer innerPrepareRequest(RestRequest restRequest, NodeClient client) throws IOException {
         PutQueryRulesetAction.Request request = new PutQueryRulesetAction.Request(
             restRequest.param("ruleset_id"),
-            restRequest.paramAsBoolean("create", false),
             restRequest.content(),
             restRequest.getXContentType()
         );

+ 1 - 2
x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/action/TransportPutQueryRulesetAction.java

@@ -29,8 +29,7 @@ public class TransportPutQueryRulesetAction extends HandledTransportAction<PutQu
     @Override
     protected void doExecute(Task task, PutQueryRulesetAction.Request request, ActionListener<PutQueryRulesetAction.Response> listener) {
         QueryRuleset queryRuleset = request.queryRuleset();
-        boolean create = request.create();
-        systemIndexService.putQueryRuleset(queryRuleset, create, listener.map(r -> new PutQueryRulesetAction.Response(r.getResult())));
+        systemIndexService.putQueryRuleset(queryRuleset, listener.map(r -> new PutQueryRulesetAction.Response(r.getResult())));
 
     }
 }

+ 6 - 32
x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/rules/QueryRulesIndexServiceTests.java

@@ -12,7 +12,6 @@ import org.elasticsearch.action.ActionListener;
 import org.elasticsearch.action.delete.DeleteResponse;
 import org.elasticsearch.action.index.IndexResponse;
 import org.elasticsearch.common.settings.Settings;
-import org.elasticsearch.index.engine.VersionConflictEngineException;
 import org.elasticsearch.indices.SystemIndexDescriptor;
 import org.elasticsearch.plugins.Plugin;
 import org.elasticsearch.plugins.SystemIndexPlugin;
@@ -59,31 +58,6 @@ public class QueryRulesIndexServiceTests extends ESSingleNodeTestCase {
         assertThat(listResults.totalResults(), equalTo(0L));
     }
 
-    public void testCreateQueryRuleset() throws Exception {
-        final QueryRule myQueryRule1 = new QueryRule(
-            "my_rule1",
-            QueryRuleType.PINNED,
-            List.of(new QueryRuleCriteria(CriteriaType.EXACT, "query_string", "foo")),
-            Map.of("ids", List.of("id1", "id2"))
-        );
-        final QueryRule myQueryRule2 = new QueryRule(
-            "my_rule2",
-            QueryRuleType.PINNED,
-            List.of(new QueryRuleCriteria(CriteriaType.EXACT, "query_string", "bar")),
-            Map.of("ids", List.of("id3", "id4"))
-        );
-        final QueryRuleset myQueryRuleset = new QueryRuleset("my_ruleset", List.of(myQueryRule1, myQueryRule2));
-
-        IndexResponse resp = awaitPutQueryRuleset(myQueryRuleset, true);
-        assertThat(resp.status(), equalTo(RestStatus.CREATED));
-        assertThat(resp.getIndex(), equalTo(QUERY_RULES_CONCRETE_INDEX_NAME));
-
-        QueryRuleset getQueryRuleset = awaitGetQueryRuleset(myQueryRuleset.id());
-        assertThat(getQueryRuleset, equalTo(myQueryRuleset));
-
-        expectThrows(VersionConflictEngineException.class, () -> awaitPutQueryRuleset(myQueryRuleset, true));
-    }
-
     public void testUpdateQueryRuleset() throws Exception {
         {
             final QueryRule myQueryRule1 = new QueryRule(
@@ -93,7 +67,7 @@ public class QueryRulesIndexServiceTests extends ESSingleNodeTestCase {
                 Map.of("ids", List.of("id1", "id2"))
             );
             final QueryRuleset myQueryRuleset = new QueryRuleset("my_ruleset", Collections.singletonList(myQueryRule1));
-            IndexResponse resp = awaitPutQueryRuleset(myQueryRuleset, false);
+            IndexResponse resp = awaitPutQueryRuleset(myQueryRuleset);
             assertThat(resp.status(), anyOf(equalTo(RestStatus.CREATED), equalTo(RestStatus.OK)));
             assertThat(resp.getIndex(), equalTo(QUERY_RULES_CONCRETE_INDEX_NAME));
 
@@ -114,7 +88,7 @@ public class QueryRulesIndexServiceTests extends ESSingleNodeTestCase {
             Map.of("docs", List.of(Map.of("_index", "my_index1", "_id", "id3"), Map.of("_index", "my_index2", "_id", "id4")))
         );
         final QueryRuleset myQueryRuleset = new QueryRuleset("my_ruleset", List.of(myQueryRule1, myQueryRule2));
-        IndexResponse newResp = awaitPutQueryRuleset(myQueryRuleset, false);
+        IndexResponse newResp = awaitPutQueryRuleset(myQueryRuleset);
         assertThat(newResp.status(), equalTo(RestStatus.OK));
         assertThat(newResp.getIndex(), equalTo(QUERY_RULES_CONCRETE_INDEX_NAME));
         QueryRuleset getQueryRuleset = awaitGetQueryRuleset(myQueryRuleset.id());
@@ -140,7 +114,7 @@ public class QueryRulesIndexServiceTests extends ESSingleNodeTestCase {
             );
             final QueryRuleset myQueryRuleset = new QueryRuleset("my_ruleset_" + i, rules);
 
-            IndexResponse resp = awaitPutQueryRuleset(myQueryRuleset, false);
+            IndexResponse resp = awaitPutQueryRuleset(myQueryRuleset);
             assertThat(resp.status(), equalTo(RestStatus.CREATED));
             assertThat(resp.getIndex(), equalTo(QUERY_RULES_CONCRETE_INDEX_NAME));
         }
@@ -188,7 +162,7 @@ public class QueryRulesIndexServiceTests extends ESSingleNodeTestCase {
                 Map.of("ids", List.of("id3", "id4"))
             );
             final QueryRuleset myQueryRuleset = new QueryRuleset("my_ruleset", List.of(myQueryRule1, myQueryRule2));
-            IndexResponse resp = awaitPutQueryRuleset(myQueryRuleset, false);
+            IndexResponse resp = awaitPutQueryRuleset(myQueryRuleset);
             assertThat(resp.status(), anyOf(equalTo(RestStatus.CREATED), equalTo(RestStatus.OK)));
             assertThat(resp.getIndex(), equalTo(QUERY_RULES_CONCRETE_INDEX_NAME));
 
@@ -201,11 +175,11 @@ public class QueryRulesIndexServiceTests extends ESSingleNodeTestCase {
         expectThrows(ResourceNotFoundException.class, () -> awaitGetQueryRuleset("my_ruleset"));
     }
 
-    private IndexResponse awaitPutQueryRuleset(QueryRuleset queryRuleset, boolean create) throws Exception {
+    private IndexResponse awaitPutQueryRuleset(QueryRuleset queryRuleset) throws Exception {
         CountDownLatch latch = new CountDownLatch(1);
         final AtomicReference<IndexResponse> resp = new AtomicReference<>(null);
         final AtomicReference<Exception> exc = new AtomicReference<>(null);
-        queryRulesIndexService.putQueryRuleset(queryRuleset, create, new ActionListener<>() {
+        queryRulesIndexService.putQueryRuleset(queryRuleset, new ActionListener<>() {
             @Override
             public void onResponse(IndexResponse indexResponse) {
                 resp.set(indexResponse);

+ 1 - 1
x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/rules/action/PutQueryRulesetActionRequestSerializingTests.java

@@ -20,7 +20,7 @@ public class PutQueryRulesetActionRequestSerializingTests extends AbstractWireSe
 
     @Override
     protected PutQueryRulesetAction.Request createTestInstance() {
-        return new PutQueryRulesetAction.Request(SearchApplicationTestUtils.randomQueryRuleset(), randomBoolean());
+        return new PutQueryRulesetAction.Request(SearchApplicationTestUtils.randomQueryRuleset());
     }
 
     @Override