ATLAS-1721: updated action-string in the audit logs generated during import
Signed-off-by: Madhan Neethiraj <madhan@apache.org>
diff --git a/client/src/main/java/org/apache/atlas/EntityAuditEvent.java b/client/src/main/java/org/apache/atlas/EntityAuditEvent.java
index 7eaa556..e541531 100644
--- a/client/src/main/java/org/apache/atlas/EntityAuditEvent.java
+++ b/client/src/main/java/org/apache/atlas/EntityAuditEvent.java
@@ -20,7 +20,6 @@
import org.apache.atlas.typesystem.IReferenceableInstance;
import org.apache.atlas.typesystem.json.InstanceSerialization;
-import org.apache.commons.lang.StringUtils;
import java.util.Objects;
@@ -29,7 +28,8 @@
*/
public class EntityAuditEvent {
public enum EntityAuditAction {
- ENTITY_CREATE, ENTITY_UPDATE, ENTITY_DELETE, TAG_ADD, TAG_DELETE
+ ENTITY_CREATE, ENTITY_UPDATE, ENTITY_DELETE, TAG_ADD, TAG_DELETE,
+ ENTITY_IMPORT_CREATE, ENTITY_IMPORT_UPDATE, ENTITY_IMPORT_DELETE
}
private String entityId;
diff --git a/dashboardv2/public/js/utils/Enums.js b/dashboardv2/public/js/utils/Enums.js
index c779cd4..a44490a 100644
--- a/dashboardv2/public/js/utils/Enums.js
+++ b/dashboardv2/public/js/utils/Enums.js
@@ -26,7 +26,10 @@
ENTITY_UPDATE: "Entity Updated",
ENTITY_DELETE: "Entity Deleted",
TAG_ADD: "Tag Added",
- TAG_DELETE: "Tag Deleted"
+ TAG_DELETE: "Tag Deleted",
+ ENTITY_IMPORT_CREATE: "Entity Created by import",
+ ENTITY_IMPORT_UPDATE: "Entity Updated by import",
+ ENTITY_IMPORT_DELETE: "Entity Deleted by import"
}
Enums.entityStateReadOnly = {
diff --git a/repository/src/main/java/org/apache/atlas/repository/audit/EntityAuditListener.java b/repository/src/main/java/org/apache/atlas/repository/audit/EntityAuditListener.java
index 3f03c50..9d0f802 100644
--- a/repository/src/main/java/org/apache/atlas/repository/audit/EntityAuditListener.java
+++ b/repository/src/main/java/org/apache/atlas/repository/audit/EntityAuditListener.java
@@ -55,10 +55,10 @@
}
@Override
- public void onEntitiesAdded(Collection<ITypedReferenceableInstance> entities) throws AtlasException {
+ public void onEntitiesAdded(Collection<ITypedReferenceableInstance> entities, boolean isImport) throws AtlasException {
List<EntityAuditEvent> events = new ArrayList<>();
for (ITypedReferenceableInstance entity : entities) {
- EntityAuditEvent event = createEvent(entity, EntityAuditAction.ENTITY_CREATE);
+ EntityAuditEvent event = createEvent(entity, isImport ? EntityAuditAction.ENTITY_IMPORT_CREATE : EntityAuditAction.ENTITY_CREATE);
events.add(event);
}
@@ -66,10 +66,10 @@
}
@Override
- public void onEntitiesUpdated(Collection<ITypedReferenceableInstance> entities) throws AtlasException {
+ public void onEntitiesUpdated(Collection<ITypedReferenceableInstance> entities, boolean isImport) throws AtlasException {
List<EntityAuditEvent> events = new ArrayList<>();
for (ITypedReferenceableInstance entity : entities) {
- EntityAuditEvent event = createEvent(entity, EntityAuditAction.ENTITY_UPDATE);
+ EntityAuditEvent event = createEvent(entity, isImport ? EntityAuditAction.ENTITY_IMPORT_UPDATE : EntityAuditAction.ENTITY_UPDATE);
events.add(event);
}
@@ -100,10 +100,10 @@
}
@Override
- public void onEntitiesDeleted(Collection<ITypedReferenceableInstance> entities) throws AtlasException {
+ public void onEntitiesDeleted(Collection<ITypedReferenceableInstance> entities, boolean isImport) throws AtlasException {
List<EntityAuditEvent> events = new ArrayList<>();
for (ITypedReferenceableInstance entity : entities) {
- EntityAuditEvent event = createEvent(entity, EntityAuditAction.ENTITY_DELETE, "Deleted entity");
+ EntityAuditEvent event = createEvent(entity, isImport ? EntityAuditAction.ENTITY_IMPORT_DELETE : EntityAuditAction.ENTITY_DELETE, "Deleted entity");
events.add(event);
}
@@ -279,6 +279,15 @@
case TAG_DELETE:
ret = "Deleted trait: ";
break;
+ case ENTITY_IMPORT_CREATE:
+ ret = "Created by import: ";
+ break;
+ case ENTITY_IMPORT_UPDATE:
+ ret = "Updated by import: ";
+ break;
+ case ENTITY_IMPORT_DELETE:
+ ret = "Deleted by import: ";
+ break;
default:
ret = "Unknown: ";
}
diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityChangeNotifier.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityChangeNotifier.java
index 0439ada..f3d9ca7 100644
--- a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityChangeNotifier.java
+++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityChangeNotifier.java
@@ -63,7 +63,7 @@
this.instanceConverter = instanceConverter;
}
- public void onEntitiesMutated(EntityMutationResponse entityMutationResponse) throws AtlasBaseException {
+ public void onEntitiesMutated(EntityMutationResponse entityMutationResponse, boolean isImport) throws AtlasBaseException {
if (CollectionUtils.isEmpty(entityChangeListeners) || instanceConverter == null) {
return;
}
@@ -79,10 +79,10 @@
doFullTextMapping(updatedEntities);
doFullTextMapping(partiallyUpdatedEntities);
- notifyListeners(createdEntities, EntityOperation.CREATE);
- notifyListeners(updatedEntities, EntityOperation.UPDATE);
- notifyListeners(partiallyUpdatedEntities, EntityOperation.PARTIAL_UPDATE);
- notifyListeners(deletedEntities, EntityOperation.DELETE);
+ notifyListeners(createdEntities, EntityOperation.CREATE, isImport);
+ notifyListeners(updatedEntities, EntityOperation.UPDATE, isImport);
+ notifyListeners(partiallyUpdatedEntities, EntityOperation.PARTIAL_UPDATE, isImport);
+ notifyListeners(deletedEntities, EntityOperation.DELETE, isImport);
}
public void onClassificationAddedToEntity(String entityId, List<AtlasClassification> classifications) throws AtlasBaseException {
@@ -125,7 +125,7 @@
}
}
- private void notifyListeners(List<AtlasEntityHeader> entityHeaders, EntityOperation operation) throws AtlasBaseException {
+ private void notifyListeners(List<AtlasEntityHeader> entityHeaders, EntityOperation operation, boolean isImport) throws AtlasBaseException {
if (CollectionUtils.isEmpty(entityHeaders)) {
return;
}
@@ -136,14 +136,14 @@
try {
switch (operation) {
case CREATE:
- listener.onEntitiesAdded(typedRefInsts);
+ listener.onEntitiesAdded(typedRefInsts, isImport);
break;
case UPDATE:
case PARTIAL_UPDATE:
- listener.onEntitiesUpdated(typedRefInsts);
+ listener.onEntitiesUpdated(typedRefInsts, isImport);
break;
case DELETE:
- listener.onEntitiesDeleted(typedRefInsts);
+ listener.onEntitiesDeleted(typedRefInsts, isImport);
break;
}
} catch (AtlasException e) {
diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStoreV1.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStoreV1.java
index 32b1ea8..27f6928 100644
--- a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStoreV1.java
+++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStoreV1.java
@@ -232,7 +232,7 @@
}
// Notify the change listeners
- entityChangeNotifier.onEntitiesMutated(ret);
+ entityChangeNotifier.onEntitiesMutated(ret, entityStream instanceof EntityImportStream);
return ret;
}
@@ -340,7 +340,7 @@
EntityMutationResponse ret = deleteVertices(deletionCandidates);
// Notify the change listeners
- entityChangeNotifier.onEntitiesMutated(ret);
+ entityChangeNotifier.onEntitiesMutated(ret, false);
return ret;
}
@@ -376,7 +376,7 @@
EntityMutationResponse ret = deleteVertices(deletionCandidates);
// Notify the change listeners
- entityChangeNotifier.onEntitiesMutated(ret);
+ entityChangeNotifier.onEntitiesMutated(ret, false);
return ret;
}
@@ -406,7 +406,7 @@
EntityMutationResponse ret = deleteVertices(deletionCandidates);
// Notify the change listeners
- entityChangeNotifier.onEntitiesMutated(ret);
+ entityChangeNotifier.onEntitiesMutated(ret, false);
return ret;
}
diff --git a/repository/src/main/java/org/apache/atlas/services/DefaultMetadataService.java b/repository/src/main/java/org/apache/atlas/services/DefaultMetadataService.java
index d9ce8c4..fd85ef0 100755
--- a/repository/src/main/java/org/apache/atlas/services/DefaultMetadataService.java
+++ b/repository/src/main/java/org/apache/atlas/services/DefaultMetadataService.java
@@ -21,7 +21,6 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.inject.Provider;
-
import org.apache.atlas.ApplicationProperties;
import org.apache.atlas.AtlasClient;
import org.apache.atlas.AtlasErrorCode;
@@ -73,10 +72,14 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.*;
-
import javax.inject.Inject;
import javax.inject.Singleton;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
@@ -701,7 +704,7 @@
private void onEntitiesAdded(List<String> guids) throws AtlasException {
List<ITypedReferenceableInstance> entities = loadEntities(guids);
for (EntityChangeListener listener : entityChangeListeners) {
- listener.onEntitiesAdded(entities);
+ listener.onEntitiesAdded(entities, false);
}
}
@@ -718,7 +721,7 @@
private void onEntitiesUpdated(List<String> guids) throws AtlasException {
List<ITypedReferenceableInstance> entities = loadEntities(guids);
for (EntityChangeListener listener : entityChangeListeners) {
- listener.onEntitiesUpdated(entities);
+ listener.onEntitiesUpdated(entities, false);
}
}
@@ -787,7 +790,7 @@
private void onEntitiesDeleted(List<ITypedReferenceableInstance> entities) throws AtlasException {
for (EntityChangeListener listener : entityChangeListeners) {
- listener.onEntitiesDeleted(entities);
+ listener.onEntitiesDeleted(entities, false);
}
}
diff --git a/repository/src/test/java/org/apache/atlas/service/DefaultMetadataServiceTest.java b/repository/src/test/java/org/apache/atlas/service/DefaultMetadataServiceTest.java
index 7e828a1..c6d7e9d 100644
--- a/repository/src/test/java/org/apache/atlas/service/DefaultMetadataServiceTest.java
+++ b/repository/src/test/java/org/apache/atlas/service/DefaultMetadataServiceTest.java
@@ -1244,12 +1244,12 @@
private List<String> updatedEntities = new ArrayList<>();
@Override
- public void onEntitiesAdded(Collection<ITypedReferenceableInstance> entities)
+ public void onEntitiesAdded(Collection<ITypedReferenceableInstance> entities, boolean isImport)
throws AtlasException {
}
@Override
- public void onEntitiesUpdated(Collection<ITypedReferenceableInstance> entities)
+ public void onEntitiesUpdated(Collection<ITypedReferenceableInstance> entities, boolean isImport)
throws AtlasException {
updatedEntities.clear();
for (ITypedReferenceableInstance entity : entities) {
@@ -1268,7 +1268,7 @@
}
@Override
- public void onEntitiesDeleted(Collection<ITypedReferenceableInstance> entities)
+ public void onEntitiesDeleted(Collection<ITypedReferenceableInstance> entities, boolean isImport)
throws AtlasException {
deletedEntities.clear();
for (ITypedReferenceableInstance entity : entities) {
diff --git a/server-api/src/main/java/org/apache/atlas/listener/EntityChangeListener.java b/server-api/src/main/java/org/apache/atlas/listener/EntityChangeListener.java
index 256e839..346c8a2 100644
--- a/server-api/src/main/java/org/apache/atlas/listener/EntityChangeListener.java
+++ b/server-api/src/main/java/org/apache/atlas/listener/EntityChangeListener.java
@@ -19,7 +19,6 @@
package org.apache.atlas.listener;
import org.apache.atlas.AtlasException;
-import org.apache.atlas.model.instance.AtlasEntity;
import org.apache.atlas.typesystem.IStruct;
import org.apache.atlas.typesystem.ITypedReferenceableInstance;
@@ -29,24 +28,25 @@
* Entity (a Typed instance) change notification listener.
*/
public interface EntityChangeListener {
-
/**
* This is upon adding new entities to the repository.
*
* @param entities the created entities
*
+ * @param isImport
* @throws AtlasException if the listener notification fails
*/
- void onEntitiesAdded(Collection<ITypedReferenceableInstance> entities) throws AtlasException;
+ void onEntitiesAdded(Collection<ITypedReferenceableInstance> entities, boolean isImport) throws AtlasException;
/**
* This is upon updating an entity.
*
* @param entities the updated entities
*
+ * @param isImport
* @throws AtlasException if the listener notification fails
*/
- void onEntitiesUpdated(Collection<ITypedReferenceableInstance> entities) throws AtlasException;
+ void onEntitiesUpdated(Collection<ITypedReferenceableInstance> entities, boolean isImport) throws AtlasException;
/**
* This is upon adding a new trait to a typed instance.
@@ -72,7 +72,8 @@
* This is upon deleting entities from the repository.
*
* @param entities the deleted entities
+ * @param isImport
* @throws AtlasException
*/
- void onEntitiesDeleted(Collection<ITypedReferenceableInstance> entities) throws AtlasException;
+ void onEntitiesDeleted(Collection<ITypedReferenceableInstance> entities, boolean isImport) throws AtlasException;
}
diff --git a/webapp/src/main/java/org/apache/atlas/notification/NotificationEntityChangeListener.java b/webapp/src/main/java/org/apache/atlas/notification/NotificationEntityChangeListener.java
index 978b21d..565eea7 100644
--- a/webapp/src/main/java/org/apache/atlas/notification/NotificationEntityChangeListener.java
+++ b/webapp/src/main/java/org/apache/atlas/notification/NotificationEntityChangeListener.java
@@ -77,12 +77,12 @@
// ----- EntityChangeListener ----------------------------------------------
@Override
- public void onEntitiesAdded(Collection<ITypedReferenceableInstance> entities) throws AtlasException {
+ public void onEntitiesAdded(Collection<ITypedReferenceableInstance> entities, boolean isImport) throws AtlasException {
notifyOfEntityEvent(entities, EntityNotification.OperationType.ENTITY_CREATE);
}
@Override
- public void onEntitiesUpdated(Collection<ITypedReferenceableInstance> entities) throws AtlasException {
+ public void onEntitiesUpdated(Collection<ITypedReferenceableInstance> entities, boolean isImport) throws AtlasException {
notifyOfEntityEvent(entities, EntityNotification.OperationType.ENTITY_UPDATE);
}
@@ -97,7 +97,7 @@
}
@Override
- public void onEntitiesDeleted(Collection<ITypedReferenceableInstance> entities) throws AtlasException {
+ public void onEntitiesDeleted(Collection<ITypedReferenceableInstance> entities, boolean isImport) throws AtlasException {
notifyOfEntityEvent(entities, EntityNotification.OperationType.ENTITY_DELETE);
}