use of org.opensearch.action.admin.indices.template.delete.DeleteIndexTemplateRequest in project OpenSearch by opensearch-project.
the class IndicesRequestConverters method deleteIndexTemplate.
static Request deleteIndexTemplate(DeleteComposableIndexTemplateRequest deleteIndexTemplateRequest) {
String name = deleteIndexTemplateRequest.getName();
String endpoint = new RequestConverters.EndpointBuilder().addPathPartAsIs("_index_template").addPathPart(name).build();
Request request = new Request(HttpDelete.METHOD_NAME, endpoint);
RequestConverters.Params params = new RequestConverters.Params();
params.withMasterTimeout(deleteIndexTemplateRequest.masterNodeTimeout());
request.addParameters(params.asMap());
return request;
}
use of org.opensearch.action.admin.indices.template.delete.DeleteIndexTemplateRequest in project OpenSearch by opensearch-project.
the class IndicesRequestConverters method deleteTemplate.
static Request deleteTemplate(DeleteIndexTemplateRequest deleteIndexTemplateRequest) {
String name = deleteIndexTemplateRequest.name();
String endpoint = new RequestConverters.EndpointBuilder().addPathPartAsIs("_template").addPathPart(name).build();
Request request = new Request(HttpDelete.METHOD_NAME, endpoint);
RequestConverters.Params params = new RequestConverters.Params();
params.withMasterTimeout(deleteIndexTemplateRequest.masterNodeTimeout());
request.addParameters(params.asMap());
return request;
}
use of org.opensearch.action.admin.indices.template.delete.DeleteIndexTemplateRequest in project OpenSearch by opensearch-project.
the class IndicesClientDocumentationIT method testDeleteTemplate.
public void testDeleteTemplate() throws Exception {
RestHighLevelClient client = highLevelClient();
{
PutIndexTemplateRequest putRequest = new PutIndexTemplateRequest("my-template");
putRequest.patterns(Arrays.asList("pattern-1", "log-*"));
putRequest.settings(Settings.builder().put("index.number_of_shards", 3));
assertTrue(client.indices().putTemplate(putRequest, RequestOptions.DEFAULT).isAcknowledged());
}
// tag::delete-template-request
DeleteIndexTemplateRequest request = new DeleteIndexTemplateRequest();
// <1>
request.name("my-template");
// end::delete-template-request
// tag::delete-template-request-masterTimeout
// <1>
request.masterNodeTimeout(TimeValue.timeValueMinutes(1));
// <2>
request.masterNodeTimeout("1m");
// end::delete-template-request-masterTimeout
// tag::delete-template-execute
AcknowledgedResponse deleteTemplateAcknowledge = client.indices().deleteTemplate(request, RequestOptions.DEFAULT);
// end::delete-template-execute
// tag::delete-template-response
// <1>
boolean acknowledged = deleteTemplateAcknowledge.isAcknowledged();
// end::delete-template-response
assertThat(acknowledged, equalTo(true));
{
PutIndexTemplateRequest putRequest = new PutIndexTemplateRequest("my-template");
putRequest.patterns(Arrays.asList("pattern-1", "log-*"));
putRequest.settings(Settings.builder().put("index.number_of_shards", 3));
assertTrue(client.indices().putTemplate(putRequest, RequestOptions.DEFAULT).isAcknowledged());
}
// tag::delete-template-execute-listener
ActionListener<AcknowledgedResponse> listener = new ActionListener<AcknowledgedResponse>() {
@Override
public void onResponse(AcknowledgedResponse response) {
// <1>
}
@Override
public void onFailure(Exception e) {
// <2>
}
};
// end::delete-template-execute-listener
// Replace the empty listener by a blocking listener in test
final CountDownLatch latch = new CountDownLatch(1);
listener = new LatchedActionListener<>(listener, latch);
// tag::delete-template-execute-async
// <1>
client.indices().deleteTemplateAsync(request, RequestOptions.DEFAULT, listener);
// end::delete-template-execute-async
assertTrue(latch.await(30L, TimeUnit.SECONDS));
}
use of org.opensearch.action.admin.indices.template.delete.DeleteIndexTemplateRequest in project OpenSearch by opensearch-project.
the class TemplateUpgradeServiceTests method testUpdateTemplates.
@SuppressWarnings("unchecked")
public void testUpdateTemplates() {
int additionsCount = randomIntBetween(0, 5);
int deletionsCount = randomIntBetween(0, 3);
List<ActionListener<AcknowledgedResponse>> putTemplateListeners = new ArrayList<>();
List<ActionListener<AcknowledgedResponse>> deleteTemplateListeners = new ArrayList<>();
Client mockClient = mock(Client.class);
AdminClient mockAdminClient = mock(AdminClient.class);
IndicesAdminClient mockIndicesAdminClient = mock(IndicesAdminClient.class);
when(mockClient.admin()).thenReturn(mockAdminClient);
when(mockAdminClient.indices()).thenReturn(mockIndicesAdminClient);
doAnswer(invocation -> {
Object[] args = invocation.getArguments();
assert args.length == 2;
PutIndexTemplateRequest request = (PutIndexTemplateRequest) args[0];
assertThat(request.name(), equalTo("add_template_" + request.order()));
putTemplateListeners.add((ActionListener) args[1]);
return null;
}).when(mockIndicesAdminClient).putTemplate(any(PutIndexTemplateRequest.class), any(ActionListener.class));
doAnswer(invocation -> {
Object[] args = invocation.getArguments();
assert args.length == 2;
DeleteIndexTemplateRequest request = (DeleteIndexTemplateRequest) args[0];
assertThat(request.name(), startsWith("remove_template_"));
deleteTemplateListeners.add((ActionListener) args[1]);
return null;
}).when(mockIndicesAdminClient).deleteTemplate(any(DeleteIndexTemplateRequest.class), any(ActionListener.class));
Set<String> deletions = new HashSet<>(deletionsCount);
for (int i = 0; i < deletionsCount; i++) {
deletions.add("remove_template_" + i);
}
Map<String, BytesReference> additions = new HashMap<>(additionsCount);
for (int i = 0; i < additionsCount; i++) {
additions.put("add_template_" + i, new BytesArray("{\"index_patterns\" : \"*\", \"order\" : " + i + "}"));
}
final TemplateUpgradeService service = new TemplateUpgradeService(mockClient, clusterService, threadPool, Collections.emptyList());
IllegalStateException ise = expectThrows(IllegalStateException.class, () -> service.upgradeTemplates(additions, deletions));
assertThat(ise.getMessage(), containsString("template upgrade service should always happen in a system context"));
// +2 to skip tryFinishUpgrade
service.upgradesInProgress.set(additionsCount + deletionsCount + 2);
final ThreadContext threadContext = threadPool.getThreadContext();
try (ThreadContext.StoredContext ignore = threadContext.stashContext()) {
threadContext.markAsSystemContext();
service.upgradeTemplates(additions, deletions);
}
assertThat(putTemplateListeners, hasSize(additionsCount));
assertThat(deleteTemplateListeners, hasSize(deletionsCount));
for (int i = 0; i < additionsCount; i++) {
if (randomBoolean()) {
putTemplateListeners.get(i).onFailure(new RuntimeException("test - ignore"));
} else {
putTemplateListeners.get(i).onResponse(new AcknowledgedResponse(randomBoolean()) {
});
}
}
for (int i = 0; i < deletionsCount; i++) {
if (randomBoolean()) {
int prevUpdatesInProgress = service.upgradesInProgress.get();
deleteTemplateListeners.get(i).onFailure(new RuntimeException("test - ignore"));
assertThat(prevUpdatesInProgress - service.upgradesInProgress.get(), equalTo(1));
} else {
int prevUpdatesInProgress = service.upgradesInProgress.get();
deleteTemplateListeners.get(i).onResponse(new AcknowledgedResponse(randomBoolean()) {
});
assertThat(prevUpdatesInProgress - service.upgradesInProgress.get(), equalTo(1));
}
}
// tryFinishUpgrade was skipped
assertThat(service.upgradesInProgress.get(), equalTo(2));
}
use of org.opensearch.action.admin.indices.template.delete.DeleteIndexTemplateRequest in project OpenSearch by opensearch-project.
the class TemplateUpgradeServiceTests method testClusterStateUpdate.
@SuppressWarnings("unchecked")
public void testClusterStateUpdate() throws InterruptedException {
final AtomicReference<ActionListener<AcknowledgedResponse>> addedListener = new AtomicReference<>();
final AtomicReference<ActionListener<AcknowledgedResponse>> changedListener = new AtomicReference<>();
final AtomicReference<ActionListener<AcknowledgedResponse>> removedListener = new AtomicReference<>();
final Semaphore updateInvocation = new Semaphore(0);
final Semaphore calculateInvocation = new Semaphore(0);
final Semaphore changedInvocation = new Semaphore(0);
final Semaphore finishInvocation = new Semaphore(0);
Metadata metadata = randomMetadata(IndexTemplateMetadata.builder("user_template").patterns(randomIndexPatterns()).build(), IndexTemplateMetadata.builder("removed_test_template").patterns(randomIndexPatterns()).build(), IndexTemplateMetadata.builder("changed_test_template").patterns(randomIndexPatterns()).build());
Client mockClient = mock(Client.class);
AdminClient mockAdminClient = mock(AdminClient.class);
IndicesAdminClient mockIndicesAdminClient = mock(IndicesAdminClient.class);
when(mockClient.admin()).thenReturn(mockAdminClient);
when(mockAdminClient.indices()).thenReturn(mockIndicesAdminClient);
doAnswer(invocation -> {
Object[] args = invocation.getArguments();
assert args.length == 2;
PutIndexTemplateRequest request = (PutIndexTemplateRequest) args[0];
if (request.name().equals("added_test_template")) {
assertThat(addedListener.getAndSet((ActionListener) args[1]), nullValue());
} else if (request.name().equals("changed_test_template")) {
assertThat(changedListener.getAndSet((ActionListener) args[1]), nullValue());
} else {
fail("unexpected put template call for " + request.name());
}
return null;
}).when(mockIndicesAdminClient).putTemplate(any(PutIndexTemplateRequest.class), any(ActionListener.class));
doAnswer(invocation -> {
Object[] args = invocation.getArguments();
assert args.length == 2;
DeleteIndexTemplateRequest request = (DeleteIndexTemplateRequest) args[0];
assertThat(request.name(), startsWith("removed_test_template"));
assertThat(removedListener.getAndSet((ActionListener) args[1]), nullValue());
return null;
}).when(mockIndicesAdminClient).deleteTemplate(any(DeleteIndexTemplateRequest.class), any(ActionListener.class));
new TemplateUpgradeService(mockClient, clusterService, threadPool, Arrays.asList(templates -> {
assertNull(templates.put("added_test_template", IndexTemplateMetadata.builder("added_test_template").patterns(Collections.singletonList("*")).build()));
return templates;
}, templates -> {
assertNotNull(templates.remove("removed_test_template"));
return templates;
}, templates -> {
assertNotNull(templates.put("changed_test_template", IndexTemplateMetadata.builder("changed_test_template").patterns(Collections.singletonList("*")).order(10).build()));
return templates;
})) {
@Override
void tryFinishUpgrade(AtomicBoolean anyUpgradeFailed) {
super.tryFinishUpgrade(anyUpgradeFailed);
finishInvocation.release();
}
@Override
void upgradeTemplates(Map<String, BytesReference> changes, Set<String> deletions) {
super.upgradeTemplates(changes, deletions);
updateInvocation.release();
}
@Override
Optional<Tuple<Map<String, BytesReference>, Set<String>>> calculateTemplateChanges(ImmutableOpenMap<String, IndexTemplateMetadata> templates) {
final Optional<Tuple<Map<String, BytesReference>, Set<String>>> ans = super.calculateTemplateChanges(templates);
calculateInvocation.release();
return ans;
}
@Override
public void clusterChanged(ClusterChangedEvent event) {
super.clusterChanged(event);
changedInvocation.release();
}
};
ClusterState prevState = ClusterState.EMPTY_STATE;
ClusterState state = ClusterState.builder(prevState).nodes(DiscoveryNodes.builder().add(new DiscoveryNode("node1", "node1", buildNewFakeTransportAddress(), emptyMap(), MASTER_DATA_ROLES, Version.CURRENT)).localNodeId("node1").masterNodeId("node1").build()).metadata(metadata).build();
setState(clusterService, state);
changedInvocation.acquire();
assertThat(changedInvocation.availablePermits(), equalTo(0));
calculateInvocation.acquire();
assertThat(calculateInvocation.availablePermits(), equalTo(0));
updateInvocation.acquire();
assertThat(updateInvocation.availablePermits(), equalTo(0));
assertThat(finishInvocation.availablePermits(), equalTo(0));
assertThat(addedListener.get(), notNullValue());
assertThat(changedListener.get(), notNullValue());
assertThat(removedListener.get(), notNullValue());
prevState = state;
state = ClusterState.builder(prevState).metadata(Metadata.builder(state.metadata()).removeTemplate("user_template")).build();
setState(clusterService, state);
// Make sure that update wasn't invoked since we are still running
changedInvocation.acquire();
assertThat(changedInvocation.availablePermits(), equalTo(0));
assertThat(calculateInvocation.availablePermits(), equalTo(0));
assertThat(updateInvocation.availablePermits(), equalTo(0));
assertThat(finishInvocation.availablePermits(), equalTo(0));
addedListener.getAndSet(null).onResponse(new AcknowledgedResponse(true) {
});
changedListener.getAndSet(null).onResponse(new AcknowledgedResponse(true) {
});
removedListener.getAndSet(null).onResponse(new AcknowledgedResponse(true) {
});
// 3 upgrades should be completed, in addition to the final calculate
finishInvocation.acquire(3);
assertThat(finishInvocation.availablePermits(), equalTo(0));
calculateInvocation.acquire();
assertThat(calculateInvocation.availablePermits(), equalTo(0));
setState(clusterService, state);
// Make sure that update was called this time since we are no longer running
changedInvocation.acquire();
assertThat(changedInvocation.availablePermits(), equalTo(0));
calculateInvocation.acquire();
assertThat(calculateInvocation.availablePermits(), equalTo(0));
updateInvocation.acquire();
assertThat(updateInvocation.availablePermits(), equalTo(0));
assertThat(finishInvocation.availablePermits(), equalTo(0));
addedListener.getAndSet(null).onFailure(new RuntimeException("test - ignore"));
changedListener.getAndSet(null).onFailure(new RuntimeException("test - ignore"));
removedListener.getAndSet(null).onFailure(new RuntimeException("test - ignore"));
finishInvocation.acquire(3);
assertThat(finishInvocation.availablePermits(), equalTo(0));
calculateInvocation.acquire();
assertThat(calculateInvocation.availablePermits(), equalTo(0));
setState(clusterService, state);
// Make sure that update wasn't called this time since the index template metadata didn't change
changedInvocation.acquire();
assertThat(changedInvocation.availablePermits(), equalTo(0));
assertThat(calculateInvocation.availablePermits(), equalTo(0));
assertThat(updateInvocation.availablePermits(), equalTo(0));
assertThat(finishInvocation.availablePermits(), equalTo(0));
}
Aggregations