Merge pull request #79 from open-metadata/issue78

Fix #78 Change AuditLog from entity into a type
This commit is contained in:
Suresh Srinivas 2021-08-09 15:46:04 -07:00 committed by GitHub
commit 5fc946827c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 58 additions and 64 deletions

View File

@ -212,9 +212,9 @@ CREATE TABLE IF NOT EXISTS tag_usage (
); );
CREATE TABLE IF NOT EXISTS audit_log ( CREATE TABLE IF NOT EXISTS audit_log (
id VARCHAR(36) GENERATED ALWAYS AS (json ->> '$.id') STORED NOT NULL, id VARCHAR(36) GENERATED ALWAYS AS (json ->> '$.entityId') STORED NOT NULL,
entityType VARCHAR(256) GENERATED ALWAYS AS (json ->> '$.entityType') NOT NULL, entityType VARCHAR(256) GENERATED ALWAYS AS (json ->> '$.entityType') NOT NULL,
username VARCHAR(256) GENERATED ALWAYS AS (json ->> '$.username') NOT NULL, username VARCHAR(256) GENERATED ALWAYS AS (json ->> '$.userName') NOT NULL,
json JSON NOT NULL, json JSON NOT NULL,
timestamp BIGINT, timestamp BIGINT,
PRIMARY KEY (id) PRIMARY KEY (id)

View File

@ -17,7 +17,7 @@
package org.openmetadata.catalog.events; package org.openmetadata.catalog.events;
import org.openmetadata.catalog.CatalogApplicationConfig; import org.openmetadata.catalog.CatalogApplicationConfig;
import org.openmetadata.catalog.entity.audit.AuditLog; import org.openmetadata.catalog.type.AuditLog;
import org.openmetadata.catalog.jdbi3.AuditLogRepository; import org.openmetadata.catalog.jdbi3.AuditLogRepository;
import org.openmetadata.catalog.type.EntityReference; import org.openmetadata.catalog.type.EntityReference;
import org.openmetadata.catalog.util.EntityUtil; import org.openmetadata.catalog.util.EntityUtil;
@ -31,7 +31,6 @@ import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.TimeZone; import java.util.TimeZone;
import java.util.UUID;
public class AuditEventHandler implements EventHandler { public class AuditEventHandler implements EventHandler {
private static final Logger LOG = LoggerFactory.getLogger(AuditEventHandler.class); private static final Logger LOG = LoggerFactory.getLogger(AuditEventHandler.class);
@ -59,14 +58,13 @@ public class AuditEventHandler implements EventHandler {
EntityReference entityReference = EntityUtil.getEntityReference(responseContext.getEntity(), EntityReference entityReference = EntityUtil.getEntityReference(responseContext.getEntity(),
responseContext.getEntity().getClass()); responseContext.getEntity().getClass());
if (entityReference != null) { if (entityReference != null) {
AuditLog auditLog = new AuditLog().withId(UUID.randomUUID()) AuditLog auditLog = new AuditLog()
.withPath(path) .withPath(path)
.withDate(nowAsISO) .withDateTime(nowAsISO)
.withEntityId(entityReference.getId()) .withEntityId(entityReference.getId())
.withEntityType(entityReference.getType()) .withEntityType(entityReference.getType())
.withEntity(entityReference) .withMethod(AuditLog.Method.fromValue(method))
.withMethod(method) .withUserName(username)
.withUsername(username)
.withResponseCode(responseCode); .withResponseCode(responseCode);
auditLogRepository.create(auditLog); auditLogRepository.create(auditLog);
LOG.debug("Added audit log entry: {}", auditLog); LOG.debug("Added audit log entry: {}", auditLog);

View File

@ -16,7 +16,7 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import org.openmetadata.catalog.entity.audit.AuditLog; import org.openmetadata.catalog.type.AuditLog;
import org.openmetadata.catalog.util.EntityUtil; import org.openmetadata.catalog.util.EntityUtil;
import org.openmetadata.catalog.util.JsonUtils; import org.openmetadata.catalog.util.JsonUtils;

View File

@ -1,49 +0,0 @@
{
"$id": "https://github.com/open-metadata/OpenMetadata/blob/main/catalog-rest-service/src/main/resources/json/schema/entity/audit/auditLog.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Audit Log",
"description": "This schema defines Audit Log entity. Audit Log is used to capture audit trail of POST, PUT, and PATCH API operations.",
"type": "object",
"properties" : {
"id": {
"description": "Unique identifier that identifies a Audit Log Entry.",
"$ref": "../../type/basic.json#/definitions/uuid"
},
"method": {
"description": "HTTP Method used in a call.",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"responseCode": {
"description": "HTTP response code for the api requested.",
"type": "integer"
},
"path": {
"description": "Requested API Path.",
"type": "string"
},
"username": {
"description": "Name of the user who requested for the API.",
"type": "string"
},
"date": {
"description": "Date which the api call is made.",
"$ref": "../../type/basic.json#/definitions/date"
},
"entityId": {
"description": "Entity reference.",
"$ref": "../../type/basic.json#/definitions/uuid"
},
"entityType": {
"description": "Entity Type.",
"type": "string"
},
"entity" : {
"description": "Link to entity on which api request is done.",
"$ref" : "../../type/entityReference.json"
}
},
"required": ["id", "method", "responseCode", "user", "entity"]
}

View File

@ -0,0 +1,45 @@
{
"$id": "https://github.com/open-metadata/OpenMetadata/blob/main/catalog-rest-service/src/main/resources/json/schema/type/auditLog.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Audit Log",
"description": "This schema defines type for Audit Log. Audit Log is used to capture audit trail of POST, PUT, and PATCH API operations.",
"type": "object",
"properties" : {
"method": {
"description": "HTTP Method used in a call.",
"type": "string",
"enum": [
"POST",
"PUT",
"PATCH",
"DELETE"
]
},
"responseCode": {
"description": "HTTP response code for the api requested.",
"type": "integer"
},
"path": {
"description": "Requested API Path.",
"type": "string"
},
"userName": {
"description": "Name of the user who requested for the API.",
"type": "string"
},
"dateTime": {
"description": "Date which the api call is made.",
"$ref": "basic.json#/definitions/dateTime"
},
"entityId": {
"description": "Entity Id that was modified by the operation.",
"$ref": "basic.json#/definitions/uuid"
},
"entityType": {
"description": "Entity Type that modified by the operation.",
"type": "string"
}
},
"required": ["method", "responseCode", "path", "userName", "entityId", "entityType"]
}

View File

@ -7,11 +7,11 @@
"definitions": { "definitions": {
"driverClass": { "driverClass": {
"$comment": "Type used for JDBC driver class", "description": "Type used for JDBC driver class",
"type": "string" "type": "string"
}, },
"connectionUrl": { "connectionUrl": {
"$comment": "Type used for JDBC connection URL", "description": "Type used for JDBC connection URL",
"type": "string", "type": "string",
"format": "uri" "format": "uri"
}, },
@ -19,7 +19,7 @@
"jdbcInfo": { "jdbcInfo": {
"type": "object", "type": "object",
"javaType": "org.openmetadata.catalog.type.JdbcInfo", "javaType": "org.openmetadata.catalog.type.JdbcInfo",
"$comment": "Type for capturing JDBC connector information", "description": "Type for capturing JDBC connector information",
"properties": { "properties": {
"driverClass": { "driverClass": {
"$ref" : "#/definitions/driverClass", "$ref" : "#/definitions/driverClass",
@ -36,7 +36,7 @@
} }
}, },
"$comment":"JDBC connection information", "description":"JDBC connection information",
"properties": { "properties": {
"driverClass": { "driverClass": {
"$ref" : "#/definitions/driverClass" "$ref" : "#/definitions/driverClass"

View File

@ -7,7 +7,7 @@
"javaType": "org.openmetadata.catalog.type.UsageDetails", "javaType": "org.openmetadata.catalog.type.UsageDetails",
"definitions": { "definitions": {
"usageStats": { "usageStats": {
"$comment": "Type used to return usage statistics", "description": "Type used to return usage statistics",
"type": "object", "type": "object",
"javaType": "org.openmetadata.catalog.type.UsageStats", "javaType": "org.openmetadata.catalog.type.UsageStats",
"properties": { "properties": {