diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/api/CleanupIndiciesApi.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/api/CleanupIndiciesApi.java index 5c58742f89bcf3fad892289ef7e407cbdf25a5eb..7b364f5c433b4958c482badd463b8ac3bfc82a51 100644 --- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/api/CleanupIndiciesApi.java +++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/api/CleanupIndiciesApi.java @@ -21,6 +21,7 @@ import java.lang.reflect.Type; import java.util.List; import java.util.stream.Collectors; import javax.validation.Valid; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import lombok.extern.java.Log; import org.opengroup.osdu.core.common.model.http.AppException; @@ -28,6 +29,7 @@ import org.opengroup.osdu.core.common.model.http.DpsHeaders; import org.opengroup.osdu.core.common.model.indexer.RecordInfo; import org.opengroup.osdu.core.common.model.search.RecordChangedMessages; import org.opengroup.osdu.core.common.model.search.SearchServiceRole; +import org.opengroup.osdu.core.common.model.storage.validation.ValidKind; import org.opengroup.osdu.indexer.SwaggerDoc; import org.opengroup.osdu.indexer.logging.AuditLogger; import org.opengroup.osdu.indexer.service.IndexerService; @@ -37,6 +39,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.context.annotation.RequestScope; import springfox.documentation.annotations.ApiIgnore; @@ -89,4 +92,19 @@ public class CleanupIndiciesApi { throw new AppException(HttpStatus.BAD_REQUEST.value(), "Unknown error", "An unknown error has occurred.", e); } } + + public ResponseEntity deleteIndex(@RequestParam("kind") @NotBlank @ValidKind String kind) { + try { + String index = elasticIndexNameResolver.getIndexNameFromKind(kind); + boolean responseStatus = indicesService.deleteIndex(index); + if (responseStatus) { + return new ResponseEntity(HttpStatus.OK); + } + } catch (AppException e) { + throw e; + } catch (Exception e) { + throw new AppException(HttpStatus.BAD_REQUEST.value(), "Unknown error", "An unknown error has occurred.", e); + } + return new ResponseEntity(HttpStatus.BAD_REQUEST); + } } diff --git a/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java b/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java index 81da502c69dc5dc20160417bd1ff1085f823b139..93aa9d1ff41a85dea1289050cb5aee8d1934cbc1 100644 --- a/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java +++ b/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java @@ -56,6 +56,7 @@ import org.opengroup.osdu.core.common.model.indexer.RecordIndexerPayload; import org.opengroup.osdu.core.common.model.indexer.RecordInfo; import org.opengroup.osdu.core.common.model.indexer.RecordStatus; import org.opengroup.osdu.core.common.model.indexer.Records; +import org.opengroup.osdu.core.common.model.search.IndexInfo; import org.opengroup.osdu.core.common.model.search.RecordChangedMessages; import org.opengroup.osdu.core.common.model.search.RecordMetaAttribute; import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;