Commit f687fb7d by Madhan Neethiraj

ATLAS-3492: updated object-id attributes in audit logs to replace…

ATLAS-3492: updated object-id attributes in audit logs to replace unassigned-guids with assigned-guids
parent c04c0ab3
...@@ -597,6 +597,8 @@ public class EntityGraphMapper { ...@@ -597,6 +597,8 @@ public class EntityGraphMapper {
true, ctx.getAttribute().getRelationshipEdgeDirection(), ctx.getReferringVertex()); true, ctx.getAttribute().getRelationshipEdgeDirection(), ctx.getReferringVertex());
} }
setAssignedGuid(ctx.getValue(), context.getGuidAssignments());
return newEdge; return newEdge;
} }
...@@ -626,6 +628,8 @@ public class EntityGraphMapper { ...@@ -626,6 +628,8 @@ public class EntityGraphMapper {
} }
} }
setAssignedGuid(ctx.getValue(), context.getGuidAssignments());
return ret; return ret;
} }
...@@ -886,12 +890,18 @@ public class EntityGraphMapper { ...@@ -886,12 +890,18 @@ public class EntityGraphMapper {
AtlasVertex entityVertex = context.getDiscoveryContext().getResolvedEntityVertex(guid); AtlasVertex entityVertex = context.getDiscoveryContext().getResolvedEntityVertex(guid);
if (entityVertex == null) { if (entityVertex == null) {
if (AtlasTypeUtil.isAssignedGuid(guid)) {
entityVertex = context.getVertex(guid);
}
if (entityVertex == null) {
AtlasObjectId objId = getObjectId(ctx.getValue()); AtlasObjectId objId = getObjectId(ctx.getValue());
if (objId != null) { if (objId != null) {
entityVertex = context.getDiscoveryContext().getResolvedEntityVertex(objId); entityVertex = context.getDiscoveryContext().getResolvedEntityVertex(objId);
} }
} }
}
if (entityVertex == null) { if (entityVertex == null) {
throw new AtlasBaseException(AtlasErrorCode.INVALID_OBJECT_ID, (ctx.getValue() == null ? null : ctx.getValue().toString())); throw new AtlasBaseException(AtlasErrorCode.INVALID_OBJECT_ID, (ctx.getValue() == null ? null : ctx.getValue().toString()));
...@@ -921,15 +931,22 @@ public class EntityGraphMapper { ...@@ -921,15 +931,22 @@ public class EntityGraphMapper {
LOG.debug("==> mapObjectIdValueUsingRelationship({})", ctx); LOG.debug("==> mapObjectIdValueUsingRelationship({})", ctx);
} }
AtlasVertex attributeVertex = context.getDiscoveryContext().getResolvedEntityVertex(getGuid(ctx.getValue())); String guid = getGuid(ctx.getValue());
AtlasVertex attributeVertex = context.getDiscoveryContext().getResolvedEntityVertex(guid);
AtlasVertex entityVertex = ctx.getReferringVertex(); AtlasVertex entityVertex = ctx.getReferringVertex();
AtlasEdge ret; AtlasEdge ret;
if (attributeVertex == null) { if (attributeVertex == null) {
if (AtlasTypeUtil.isAssignedGuid(guid)) {
attributeVertex = context.getVertex(guid);
}
if (attributeVertex == null) {
AtlasObjectId objectId = getObjectId(ctx.getValue()); AtlasObjectId objectId = getObjectId(ctx.getValue());
attributeVertex = (objectId != null) ? context.getDiscoveryContext().getResolvedEntityVertex(objectId) : null; attributeVertex = (objectId != null) ? context.getDiscoveryContext().getResolvedEntityVertex(objectId) : null;
} }
}
if (attributeVertex == null) { if (attributeVertex == null) {
if(RequestContext.get().isImportInProgress()) { if(RequestContext.get().isImportInProgress()) {
...@@ -1287,6 +1304,39 @@ public class EntityGraphMapper { ...@@ -1287,6 +1304,39 @@ public class EntityGraphMapper {
return null; return null;
} }
private static void setAssignedGuid(Object val, Map<String, String> guidAssignements) {
if (val != null && MapUtils.isNotEmpty(guidAssignements)) {
if (val instanceof AtlasObjectId) {
AtlasObjectId objId = (AtlasObjectId) val;
String guid = objId.getGuid();
if (StringUtils.isNotEmpty(guid) && !AtlasTypeUtil.isAssignedGuid(guid)) {
String assignedGuid = guidAssignements.get(guid);
if (StringUtils.isNotEmpty(assignedGuid)) {
RequestContext.get().recordEntityGuidUpdate(objId, guid);
objId.setGuid(assignedGuid);
}
}
} else if (val instanceof Map) {
Map objId = (Map) val;
Object guidVal = objId.get(AtlasObjectId.KEY_GUID);
String guid = objId != null ? guidVal.toString() : null;
if (StringUtils.isNotEmpty(guid) && !AtlasTypeUtil.isAssignedGuid(guid)) {
String assignedGuid = guidAssignements.get(guid);
if (StringUtils.isNotEmpty(assignedGuid)) {
RequestContext.get().recordEntityGuidUpdate(objId, guid);
objId.put(AtlasObjectId.KEY_GUID, assignedGuid);
}
}
}
}
}
private static Map<String, Object> getRelationshipAttributes(Object val) throws AtlasBaseException { private static Map<String, Object> getRelationshipAttributes(Object val) throws AtlasBaseException {
if (val instanceof AtlasRelatedObjectId) { if (val instanceof AtlasRelatedObjectId) {
AtlasStruct relationshipStruct = ((AtlasRelatedObjectId) val).getRelationshipAttributes(); AtlasStruct relationshipStruct = ((AtlasRelatedObjectId) val).getRelationshipAttributes();
......
...@@ -22,6 +22,7 @@ import org.apache.atlas.model.instance.AtlasClassification; ...@@ -22,6 +22,7 @@ import org.apache.atlas.model.instance.AtlasClassification;
import org.apache.atlas.model.instance.AtlasEntity; import org.apache.atlas.model.instance.AtlasEntity;
import org.apache.atlas.model.instance.AtlasEntity.AtlasEntityWithExtInfo; import org.apache.atlas.model.instance.AtlasEntity.AtlasEntityWithExtInfo;
import org.apache.atlas.model.instance.AtlasEntityHeader; import org.apache.atlas.model.instance.AtlasEntityHeader;
import org.apache.atlas.model.instance.AtlasObjectId;
import org.apache.atlas.store.DeleteType; import org.apache.atlas.store.DeleteType;
import org.apache.atlas.utils.AtlasPerfMetrics; import org.apache.atlas.utils.AtlasPerfMetrics;
import org.apache.atlas.utils.AtlasPerfMetrics.MetricRecorder; import org.apache.atlas.utils.AtlasPerfMetrics.MetricRecorder;
...@@ -37,6 +38,8 @@ import java.util.ArrayList; ...@@ -37,6 +38,8 @@ import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.HashMap; import java.util.HashMap;
import static org.apache.atlas.model.instance.AtlasObjectId.KEY_GUID;
public class RequestContext { public class RequestContext {
private static final Logger METRICS = LoggerFactory.getLogger("METRICS"); private static final Logger METRICS = LoggerFactory.getLogger("METRICS");
...@@ -337,11 +340,23 @@ public class RequestContext { ...@@ -337,11 +340,23 @@ public class RequestContext {
} }
public void recordEntityGuidUpdate(AtlasEntity entity, String guidInRequest) { public void recordEntityGuidUpdate(AtlasEntity entity, String guidInRequest) {
recordEntityGuidUpdate(new EntityGuidPair(entity, guidInRequest));
}
public void recordEntityGuidUpdate(AtlasObjectId entity, String guidInRequest) {
recordEntityGuidUpdate(new EntityGuidPair(entity, guidInRequest));
}
public void recordEntityGuidUpdate(Map entity, String guidInRequest) {
recordEntityGuidUpdate(new EntityGuidPair(entity, guidInRequest));
}
public void recordEntityGuidUpdate(EntityGuidPair record) {
if (entityGuidInRequest == null) { if (entityGuidInRequest == null) {
entityGuidInRequest = new ArrayList<>(); entityGuidInRequest = new ArrayList<>();
} }
entityGuidInRequest.add(new EntityGuidPair(entity, guidInRequest)); entityGuidInRequest.add(record);
} }
public void resetEntityGuidUpdates() { public void resetEntityGuidUpdates() {
...@@ -353,7 +368,7 @@ public class RequestContext { ...@@ -353,7 +368,7 @@ public class RequestContext {
} }
public class EntityGuidPair { public class EntityGuidPair {
private final AtlasEntity entity; private final Object entity;
private final String guid; private final String guid;
public EntityGuidPair(AtlasEntity entity, String guid) { public EntityGuidPair(AtlasEntity entity, String guid) {
...@@ -361,8 +376,24 @@ public class RequestContext { ...@@ -361,8 +376,24 @@ public class RequestContext {
this.guid = guid; this.guid = guid;
} }
public EntityGuidPair(AtlasObjectId entity, String guid) {
this.entity = entity;
this.guid = guid;
}
public EntityGuidPair(Map entity, String guid) {
this.entity = entity;
this.guid = guid;
}
public void resetEntityGuid() { public void resetEntityGuid() {
entity.setGuid(guid); if (entity instanceof AtlasEntity) {
((AtlasEntity) entity).setGuid(guid);
} else if (entity instanceof AtlasObjectId) {
((AtlasObjectId) entity).setGuid(guid);
} else if (entity instanceof Map) {
((Map) entity).put(KEY_GUID, guid);
}
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment