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 347caf52d5057b0dd8e3b67c1e517f9bbe1ccab9..ce5d01e3c3ee31a9f69465871209cc7f015df5ad 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 @@ -19,6 +19,7 @@ import com.google.gson.Gson; import com.google.gson.JsonParseException; import java.lang.reflect.Type; import java.util.List; +import java.util.stream.Collectors; import javax.validation.Valid; import javax.validation.constraints.NotNull; import lombok.extern.java.Log; @@ -28,6 +29,7 @@ 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.indexer.SwaggerDoc; +import org.opengroup.osdu.indexer.logging.AuditLogger; import org.opengroup.osdu.indexer.service.IndexerService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -46,6 +48,9 @@ public class CleanupIndiciesApi { @Autowired private IndexerService indexerService; + @Autowired + private AuditLogger auditLogger; + @PostMapping(path = "/index-cleanup", consumes = "application/json") @PreAuthorize("@authorizationFilter.hasPermission('" + SearchServiceRole.ADMIN + "')") public ResponseEntity cleanupIndices(@NotNull(message = SwaggerDoc.REQUEST_VALIDATION_NOT_NULL_BODY) @@ -69,6 +74,10 @@ public class CleanupIndiciesApi { return new ResponseEntity(HttpStatus.OK); } indexerService.processSchemaMessages(recordInfos); + + auditLogger.getIndexCleanUpJobRun(recordInfos.stream() + .map(RecordInfo::getKind) + .collect(Collectors.toList())); return new ResponseEntity(HttpStatus.OK); } catch (AppException e) { throw e; diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/logging/AuditEvents.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/logging/AuditEvents.java index 9ac4df7da845cbd6014f19d4e53602011ffb8dbb..1f0970f1db6b0a629b2dbfa7a34d1b3d54f11a04 100644 --- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/logging/AuditEvents.java +++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/logging/AuditEvents.java @@ -38,6 +38,9 @@ public class AuditEvents { private static final String INDEX_PURGE_RECORD_ACTION_ID = "IN004"; + private static final String INDEX_STARTED_ACTION_ID = "IN006"; + private static final String INDEX_STARTED_OPERATION = "Indexing started"; + private static final String REINDEX_KIND_ACTION_ID = "IN007"; private static final String REINDEX_KIND_OPERATION = "Reindex kind"; @@ -151,6 +154,17 @@ public class AuditEvents { .build(); } + public AuditPayload getIndexEvent(List<String> resources) { + return AuditPayload.builder() + .action(AuditAction.CREATE) + .status(AuditStatus.SUCCESS) + .actionId(INDEX_STARTED_ACTION_ID) + .message(INDEX_STARTED_OPERATION) + .resources(resources) + .user(this.user) + .build(); + } + public AuditPayload getReindexEvent(List<String> resources) { return AuditPayload.builder() .action(AuditAction.CREATE) diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/logging/AuditLogger.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/logging/AuditLogger.java index aaf148f82d20bbc05b674225cafe68a881dc4a52..431e99afc29e4f4714ce3121057ecae2a81891ed 100644 --- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/logging/AuditLogger.java +++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/logging/AuditLogger.java @@ -73,6 +73,10 @@ public class AuditLogger { this.writeLog(this.getAuditEvents().getIndexPurgeRecordFailEvent(resources)); } + public void indexStarted(List<String> resources) { + this.writeLog(this.getAuditEvents().getIndexEvent(resources)); + } + public void getReindex(List<String> resources) { this.writeLog(this.getAuditEvents().getReindexEvent(resources)); } diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java index 36f91af2405098e188a4113b009e165dfd4500be..e77ef8f0908bbf9e718562ad4322aa9284756f73 100644 --- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java +++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java @@ -125,6 +125,10 @@ public class IndexerServiceImpl implements IndexerService { retryRecordIds.addAll(deleteFailureRecordIds); } + auditLogger.indexStarted(recordInfos.stream() + .map(RecordInfo::getKind) + .collect(Collectors.toList())); + // process schema change messages Map<String, OperationType> schemaMsgs = RecordInfo.getSchemaMsgs(recordInfos); if (schemaMsgs != null && !schemaMsgs.isEmpty()) { diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/api/CleanupIndiciesApiTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/api/CleanupIndiciesApiTest.java index 6a9f2ead5cf965f9e05f0e1d1782d97843ff7deb..f8236796ac646bdafe88df3ddcd7667002b2ccd1 100644 --- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/api/CleanupIndiciesApiTest.java +++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/api/CleanupIndiciesApiTest.java @@ -14,6 +14,7 @@ import org.opengroup.osdu.core.common.model.http.AppException; import org.opengroup.osdu.core.common.model.http.DpsHeaders; import org.opengroup.osdu.core.common.model.search.RecordChangedMessages; import org.opengroup.osdu.core.common.search.Config; +import org.opengroup.osdu.indexer.logging.AuditLogger; import org.opengroup.osdu.indexer.service.IndexerService; import org.opengroup.osdu.indexer.util.IndexerQueueTaskBuilder; import org.powermock.core.classloader.annotations.PrepareForTest; @@ -36,6 +37,9 @@ public class CleanupIndiciesApiTest { @Mock private IndexerService indexerService; + @Mock + private AuditLogger auditLogger; + @Before public void setup() { initMocks(this);