This is an automated email from the ASF dual-hosted git repository.
fanng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/main by this push:
new 4aac9852b4 [#10537] improvement(core): Complete v2 audit operation
mapping coverage (#10553)
4aac9852b4 is described below
commit 4aac9852b4cff6a4789625f08cda48b5c411da3e
Author: FANNG <[email protected]>
AuthorDate: Wed Apr 1 20:15:45 2026 +0800
[#10537] improvement(core): Complete v2 audit operation mapping coverage
(#10553)
### What changes were proposed in this pull request?
Added explicit v2 audit mappings for all known `OperationType` values in
`CompatibilityUtils`, expanded `AuditLog.Operation` with the concrete
audit operation values needed by v2, and added tests to verify all known
operation types map to a non-unknown audit operation.
### Why are the changes needed?
The previous v2 compatibility mapping only covered part of the listener
operation space. Many supported operations still fell back to
`UNKNOWN_OPERATION`, which made audit output incomplete and
inconsistent.
Fix: #10537
### Does this PR introduce _any_ user-facing change?
No. This change only completes internal audit operation mapping for v2
audit compatibility.
### How was this patch tested?
```bash
IT_SPARK_HOME=/Users/fanng/deploy/demo/spark-3.5.3-bin-hadoop3 \
IT_SPARK_ARGS='--conf
spark.jars=/Users/fanng/deploy/demo/jars/iceberg-spark-runtime-3.5_2.12-1.9.2.jar,/Users/fanng/deploy/demo/jars/iceberg-aws-bundle-1.9.2.jar
--conf
spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
--conf spark.sql.catalog.rest=org.apache.iceberg.spark.SparkCatalog --conf
spark.sql.catalog.rest.type=rest --conf
spark.sql.catalog.rest.uri=http://127.0.0.1:9001/iceberg/ --conf
spark.sql.catalog.rest.header.X-Iceberg-Access-Deleg [...]
IT_TABLE_IDENTIFIER=rest.ab.a1 \
GRAVITINO_ENV_IT=true \
./gradlew :core:test -PskipIT=true --tests
'org.apache.gravitino.audit.v2.TestCompatibilityUtils'
```
---------
Co-authored-by: fanng <[email protected]>
---
.../java/org/apache/gravitino/audit/AuditLog.java | 192 +++++++++++++++++++++
.../gravitino/audit/v2/CompatibilityUtils.java | 169 +++++++++++++-----
.../gravitino/audit/v2/TestCompatibilityUtils.java | 137 +++++++++++++--
3 files changed, 444 insertions(+), 54 deletions(-)
diff --git a/core/src/main/java/org/apache/gravitino/audit/AuditLog.java
b/core/src/main/java/org/apache/gravitino/audit/AuditLog.java
index e1b77f5ecb..1d03be7d3e 100644
--- a/core/src/main/java/org/apache/gravitino/audit/AuditLog.java
+++ b/core/src/main/java/org/apache/gravitino/audit/AuditLog.java
@@ -237,6 +237,8 @@ public interface AuditLog {
LIST_SCHEMA,
+ SCHEMA_EXISTS,
+
CREATE_TABLE,
ALTER_TABLE,
@@ -245,12 +247,26 @@ public interface AuditLog {
LOAD_TABLE,
+ LOAD_TABLE_CREDENTIAL,
+
+ PLAN_TABLE_SCAN,
+
PURGE_TABLE,
LIST_TABLE,
+ RENAME_TABLE,
+
+ REGISTER_TABLE,
+
+ TABLE_EXISTS,
+
PARTITION_EXIST,
+ ADD_PARTITION,
+
+ DROP_PARTITION,
+
PURGE_PARTITION,
LIST_PARTITION,
@@ -279,6 +295,182 @@ public interface AuditLog {
LIST_FILESET,
+ LIST_FILESET_FILES,
+
+ CREATE_TAG,
+
+ GET_TAG,
+
+ GET_TAG_FOR_METADATA_OBJECT,
+
+ DELETE_TAG,
+
+ ALTER_TAG,
+
+ LIST_TAG,
+
+ ASSOCIATE_TAGS_FOR_METADATA_OBJECT,
+
+ LIST_TAGS_FOR_METADATA_OBJECT,
+
+ LIST_TAGS_INFO_FOR_METADATA_OBJECT,
+
+ LIST_METADATA_OBJECTS_FOR_TAG,
+
+ LIST_TAGS_INFO,
+
+ CREATE_VIEW,
+
+ ALTER_VIEW,
+
+ DROP_VIEW,
+
+ LOAD_VIEW,
+
+ VIEW_EXISTS,
+
+ RENAME_VIEW,
+
+ LIST_VIEW,
+
+ REGISTER_MODEL,
+
+ DELETE_MODEL,
+
+ GET_MODEL,
+
+ LIST_MODEL,
+
+ ALTER_MODEL,
+
+ LINK_MODEL_VERSION,
+
+ DELETE_MODEL_VERSION,
+
+ GET_MODEL_VERSION,
+
+ GET_MODEL_VERSION_URI,
+
+ LIST_MODEL_VERSIONS,
+
+ LIST_MODEL_VERSION_INFOS,
+
+ REGISTER_AND_LINK_MODEL_VERSION,
+
+ ALTER_MODEL_VERSION,
+
+ ADD_USER,
+
+ REMOVE_USER,
+
+ GET_USER,
+
+ LIST_USERS,
+
+ LIST_USER_NAMES,
+
+ GRANT_USER_ROLES,
+
+ REVOKE_USER_ROLES,
+
+ ADD_GROUP,
+
+ REMOVE_GROUP,
+
+ GET_GROUP,
+
+ LIST_GROUPS,
+
+ LIST_GROUP_NAMES,
+
+ GRANT_GROUP_ROLES,
+
+ REVOKE_GROUP_ROLES,
+
+ CREATE_ROLE,
+
+ DELETE_ROLE,
+
+ GET_ROLE,
+
+ LIST_ROLE_NAMES,
+
+ GRANT_PRIVILEGES,
+
+ REVOKE_PRIVILEGES,
+
+ OVERRIDE_PRIVILEGES,
+
+ GET_OWNER,
+
+ SET_OWNER,
+
+ LIST_JOB_TEMPLATES,
+
+ REGISTER_JOB_TEMPLATE,
+
+ GET_JOB_TEMPLATE,
+
+ ALTER_JOB_TEMPLATE,
+
+ DELETE_JOB_TEMPLATE,
+
+ LIST_JOBS,
+
+ RUN_JOB,
+
+ GET_JOB,
+
+ CANCEL_JOB,
+
+ LIST_STATISTICS,
+
+ LIST_PARTITION_STATISTICS,
+
+ DROP_STATISTICS,
+
+ DROP_PARTITION_STATISTICS,
+
+ UPDATE_STATISTICS,
+
+ UPDATE_PARTITION_STATISTICS,
+
+ CREATE_POLICY,
+
+ GET_POLICY,
+
+ ALTER_POLICY,
+
+ DELETE_POLICY,
+
+ ENABLE_POLICY,
+
+ DISABLE_POLICY,
+
+ LIST_POLICY,
+
+ LIST_POLICY_INFO,
+
+ LIST_METADATA_OBJECTS_FOR_POLICY,
+
+ LIST_POLICY_INFOS_FOR_METADATA_OBJECT,
+
+ ASSOCIATE_POLICIES_FOR_METADATA_OBJECT,
+
+ GET_POLICY_FOR_METADATA_OBJECT,
+
+ REGISTER_FUNCTION,
+
+ GET_FUNCTION,
+
+ ALTER_FUNCTION,
+
+ DROP_FUNCTION,
+
+ LIST_FUNCTION,
+
+ LIST_FUNCTION_INFOS,
+
UNKNOWN_OPERATION;
public static Operation fromEvent(Event event) {
diff --git
a/core/src/main/java/org/apache/gravitino/audit/v2/CompatibilityUtils.java
b/core/src/main/java/org/apache/gravitino/audit/v2/CompatibilityUtils.java
index 99c8911012..19f8211c11 100644
--- a/core/src/main/java/org/apache/gravitino/audit/v2/CompatibilityUtils.java
+++ b/core/src/main/java/org/apache/gravitino/audit/v2/CompatibilityUtils.java
@@ -27,9 +27,8 @@ import org.apache.gravitino.listener.api.event.OperationType;
public class CompatibilityUtils {
- private static ImmutableMap<OperationType, Operation> operationTypeMap =
+ private static final ImmutableMap<OperationType, Operation>
OPERATION_TYPE_MAP =
ImmutableMap.<OperationType, Operation>builder()
- // Metalake operation
.put(OperationType.CREATE_METALAKE, Operation.CREATE_METALAKE)
.put(OperationType.ALTER_METALAKE, Operation.ALTER_METALAKE)
.put(OperationType.DROP_METALAKE, Operation.DROP_METALAKE)
@@ -37,71 +36,159 @@ public class CompatibilityUtils {
.put(OperationType.LIST_METALAKE, Operation.LIST_METALAKE)
.put(OperationType.ENABLE_METALAKE, Operation.ENABLE_METALAKE)
.put(OperationType.DISABLE_METALAKE, Operation.DISABLE_METALAKE)
-
- // Catalog operation
.put(OperationType.CREATE_CATALOG, Operation.CREATE_CATALOG)
- .put(OperationType.ALTER_CATALOG, Operation.ALTER_CATALOG)
.put(OperationType.DROP_CATALOG, Operation.DROP_CATALOG)
+ .put(OperationType.ALTER_CATALOG, Operation.ALTER_CATALOG)
.put(OperationType.LOAD_CATALOG, Operation.LOAD_CATALOG)
.put(OperationType.LIST_CATALOG, Operation.LIST_CATALOG)
.put(OperationType.ENABLE_CATALOG, Operation.ENABLE_CATALOG)
.put(OperationType.DISABLE_CATALOG, Operation.DISABLE_CATALOG)
-
- // Schema operation
.put(OperationType.CREATE_SCHEMA, Operation.CREATE_SCHEMA)
- .put(OperationType.ALTER_SCHEMA, Operation.ALTER_SCHEMA)
.put(OperationType.DROP_SCHEMA, Operation.DROP_SCHEMA)
+ .put(OperationType.ALTER_SCHEMA, Operation.ALTER_SCHEMA)
.put(OperationType.LOAD_SCHEMA, Operation.LOAD_SCHEMA)
.put(OperationType.LIST_SCHEMA, Operation.LIST_SCHEMA)
- .put(OperationType.SCHEMA_EXISTS, Operation.UNKNOWN_OPERATION)
-
- // Table operation
+ .put(OperationType.SCHEMA_EXISTS, Operation.SCHEMA_EXISTS)
.put(OperationType.CREATE_TABLE, Operation.CREATE_TABLE)
- .put(OperationType.ALTER_TABLE, Operation.ALTER_TABLE)
.put(OperationType.DROP_TABLE, Operation.DROP_TABLE)
.put(OperationType.PURGE_TABLE, Operation.PURGE_TABLE)
.put(OperationType.LOAD_TABLE, Operation.LOAD_TABLE)
- .put(OperationType.TABLE_EXISTS, Operation.UNKNOWN_OPERATION)
+ .put(OperationType.LOAD_TABLE_CREDENTIAL,
Operation.LOAD_TABLE_CREDENTIAL)
+ .put(OperationType.PLAN_TABLE_SCAN, Operation.PLAN_TABLE_SCAN)
.put(OperationType.LIST_TABLE, Operation.LIST_TABLE)
- .put(OperationType.RENAME_TABLE, Operation.UNKNOWN_OPERATION)
- .put(OperationType.REGISTER_TABLE, Operation.UNKNOWN_OPERATION)
-
- // Partition operation
- .put(OperationType.ADD_PARTITION, Operation.UNKNOWN_OPERATION)
- .put(OperationType.DROP_PARTITION, Operation.UNKNOWN_OPERATION)
+ .put(OperationType.ALTER_TABLE, Operation.ALTER_TABLE)
+ .put(OperationType.RENAME_TABLE, Operation.RENAME_TABLE)
+ .put(OperationType.REGISTER_TABLE, Operation.REGISTER_TABLE)
+ .put(OperationType.TABLE_EXISTS, Operation.TABLE_EXISTS)
+ .put(OperationType.CREATE_TAG, Operation.CREATE_TAG)
+ .put(OperationType.GET_TAG, Operation.GET_TAG)
+ .put(OperationType.GET_TAG_FOR_METADATA_OBJECT,
Operation.GET_TAG_FOR_METADATA_OBJECT)
+ .put(OperationType.DELETE_TAG, Operation.DELETE_TAG)
+ .put(OperationType.ALTER_TAG, Operation.ALTER_TAG)
+ .put(OperationType.LIST_TAG, Operation.LIST_TAG)
+ .put(
+ OperationType.ASSOCIATE_TAGS_FOR_METADATA_OBJECT,
+ Operation.ASSOCIATE_TAGS_FOR_METADATA_OBJECT)
+ .put(OperationType.LIST_TAGS_FOR_METADATA_OBJECT,
Operation.LIST_TAGS_FOR_METADATA_OBJECT)
+ .put(
+ OperationType.LIST_TAGS_INFO_FOR_METADATA_OBJECT,
+ Operation.LIST_TAGS_INFO_FOR_METADATA_OBJECT)
+ .put(OperationType.LIST_METADATA_OBJECTS_FOR_TAG,
Operation.LIST_METADATA_OBJECTS_FOR_TAG)
+ .put(OperationType.LIST_TAGS_INFO, Operation.LIST_TAGS_INFO)
+ .put(OperationType.DROP_FILESET, Operation.DROP_FILESET)
+ .put(OperationType.ALTER_FILESET, Operation.ALTER_FILESET)
+ .put(OperationType.CREATE_FILESET, Operation.CREATE_FILESET)
+ .put(OperationType.LIST_FILESET, Operation.LIST_FILESET)
+ .put(OperationType.LIST_FILESET_FILES, Operation.LIST_FILESET_FILES)
+ .put(OperationType.LOAD_FILESET, Operation.LOAD_FILESET)
+ .put(OperationType.GET_FILESET_LOCATION, Operation.GET_FILE_LOCATION)
+ .put(OperationType.ADD_PARTITION, Operation.ADD_PARTITION)
+ .put(OperationType.DROP_PARTITION, Operation.DROP_PARTITION)
.put(OperationType.PURGE_PARTITION, Operation.PURGE_PARTITION)
- .put(OperationType.LOAD_PARTITION, Operation.GET_PARTITION)
.put(OperationType.PARTITION_EXISTS, Operation.PARTITION_EXIST)
+ .put(OperationType.LOAD_PARTITION, Operation.GET_PARTITION)
.put(OperationType.LIST_PARTITION, Operation.LIST_PARTITION)
.put(OperationType.LIST_PARTITION_NAMES, Operation.LIST_PARTITION)
-
- // Fileset operation
- .put(OperationType.CREATE_FILESET, Operation.CREATE_FILESET)
- .put(OperationType.ALTER_FILESET, Operation.ALTER_FILESET)
- .put(OperationType.DROP_FILESET, Operation.DROP_FILESET)
- .put(OperationType.LOAD_FILESET, Operation.LOAD_FILESET)
- .put(OperationType.LIST_FILESET, Operation.LIST_FILESET)
- .put(OperationType.GET_FILESET_LOCATION, Operation.GET_FILE_LOCATION)
-
- // Topic operation
.put(OperationType.CREATE_TOPIC, Operation.CREATE_TOPIC)
.put(OperationType.ALTER_TOPIC, Operation.ALTER_TOPIC)
.put(OperationType.DROP_TOPIC, Operation.DROP_TOPIC)
- .put(OperationType.LOAD_TOPIC, Operation.LOAD_TOPIC)
.put(OperationType.LIST_TOPIC, Operation.LIST_TOPIC)
-
- // View operation
- .put(OperationType.CREATE_VIEW, Operation.UNKNOWN_OPERATION)
- .put(OperationType.ALTER_VIEW, Operation.UNKNOWN_OPERATION)
- .put(OperationType.DROP_VIEW, Operation.UNKNOWN_OPERATION)
- .put(OperationType.LOAD_VIEW, Operation.UNKNOWN_OPERATION)
- .put(OperationType.VIEW_EXISTS, Operation.UNKNOWN_OPERATION)
- .put(OperationType.RENAME_VIEW, Operation.UNKNOWN_OPERATION)
- .put(OperationType.LIST_VIEW, Operation.UNKNOWN_OPERATION)
+ .put(OperationType.LOAD_TOPIC, Operation.LOAD_TOPIC)
+ .put(OperationType.CREATE_VIEW, Operation.CREATE_VIEW)
+ .put(OperationType.ALTER_VIEW, Operation.ALTER_VIEW)
+ .put(OperationType.DROP_VIEW, Operation.DROP_VIEW)
+ .put(OperationType.LOAD_VIEW, Operation.LOAD_VIEW)
+ .put(OperationType.VIEW_EXISTS, Operation.VIEW_EXISTS)
+ .put(OperationType.RENAME_VIEW, Operation.RENAME_VIEW)
+ .put(OperationType.LIST_VIEW, Operation.LIST_VIEW)
+ .put(OperationType.REGISTER_MODEL, Operation.REGISTER_MODEL)
+ .put(OperationType.DELETE_MODEL, Operation.DELETE_MODEL)
+ .put(OperationType.GET_MODEL, Operation.GET_MODEL)
+ .put(OperationType.LIST_MODEL, Operation.LIST_MODEL)
+ .put(OperationType.ALTER_MODEL, Operation.ALTER_MODEL)
+ .put(OperationType.LINK_MODEL_VERSION, Operation.LINK_MODEL_VERSION)
+ .put(OperationType.DELETE_MODEL_VERSION,
Operation.DELETE_MODEL_VERSION)
+ .put(OperationType.GET_MODEL_VERSION, Operation.GET_MODEL_VERSION)
+ .put(OperationType.GET_MODEL_VERSION_URI,
Operation.GET_MODEL_VERSION_URI)
+ .put(OperationType.LIST_MODEL_VERSIONS,
Operation.LIST_MODEL_VERSIONS)
+ .put(OperationType.LIST_MODEL_VERSION_INFOS,
Operation.LIST_MODEL_VERSION_INFOS)
+ .put(
+ OperationType.REGISTER_AND_LINK_MODEL_VERSION,
+ Operation.REGISTER_AND_LINK_MODEL_VERSION)
+ .put(OperationType.ALTER_MODEL_VERSION,
Operation.ALTER_MODEL_VERSION)
+ .put(OperationType.ADD_USER, Operation.ADD_USER)
+ .put(OperationType.REMOVE_USER, Operation.REMOVE_USER)
+ .put(OperationType.GET_USER, Operation.GET_USER)
+ .put(OperationType.LIST_USERS, Operation.LIST_USERS)
+ .put(OperationType.LIST_USER_NAMES, Operation.LIST_USER_NAMES)
+ .put(OperationType.GRANT_USER_ROLES, Operation.GRANT_USER_ROLES)
+ .put(OperationType.REVOKE_USER_ROLES, Operation.REVOKE_USER_ROLES)
+ .put(OperationType.ADD_GROUP, Operation.ADD_GROUP)
+ .put(OperationType.REMOVE_GROUP, Operation.REMOVE_GROUP)
+ .put(OperationType.GET_GROUP, Operation.GET_GROUP)
+ .put(OperationType.LIST_GROUPS, Operation.LIST_GROUPS)
+ .put(OperationType.LIST_GROUP_NAMES, Operation.LIST_GROUP_NAMES)
+ .put(OperationType.GRANT_GROUP_ROLES, Operation.GRANT_GROUP_ROLES)
+ .put(OperationType.REVOKE_GROUP_ROLES, Operation.REVOKE_GROUP_ROLES)
+ .put(OperationType.CREATE_ROLE, Operation.CREATE_ROLE)
+ .put(OperationType.DELETE_ROLE, Operation.DELETE_ROLE)
+ .put(OperationType.GET_ROLE, Operation.GET_ROLE)
+ .put(OperationType.LIST_ROLE_NAMES, Operation.LIST_ROLE_NAMES)
+ .put(OperationType.GRANT_PRIVILEGES, Operation.GRANT_PRIVILEGES)
+ .put(OperationType.REVOKE_PRIVILEGES, Operation.REVOKE_PRIVILEGES)
+ .put(OperationType.OVERRIDE_PRIVILEGES,
Operation.OVERRIDE_PRIVILEGES)
+ .put(OperationType.GET_OWNER, Operation.GET_OWNER)
+ .put(OperationType.SET_OWNER, Operation.SET_OWNER)
+ .put(OperationType.LIST_JOB_TEMPLATES, Operation.LIST_JOB_TEMPLATES)
+ .put(OperationType.REGISTER_JOB_TEMPLATE,
Operation.REGISTER_JOB_TEMPLATE)
+ .put(OperationType.GET_JOB_TEMPLATE, Operation.GET_JOB_TEMPLATE)
+ .put(OperationType.ALTER_JOB_TEMPLATE, Operation.ALTER_JOB_TEMPLATE)
+ .put(OperationType.DELETE_JOB_TEMPLATE,
Operation.DELETE_JOB_TEMPLATE)
+ .put(OperationType.LIST_JOBS, Operation.LIST_JOBS)
+ .put(OperationType.RUN_JOB, Operation.RUN_JOB)
+ .put(OperationType.GET_JOB, Operation.GET_JOB)
+ .put(OperationType.CANCEL_JOB, Operation.CANCEL_JOB)
+ .put(OperationType.LIST_STATISTICS, Operation.LIST_STATISTICS)
+ .put(OperationType.LIST_PARTITION_STATISTICS,
Operation.LIST_PARTITION_STATISTICS)
+ .put(OperationType.DROP_STATISTICS, Operation.DROP_STATISTICS)
+ .put(OperationType.DROP_PARTITION_STATISTICS,
Operation.DROP_PARTITION_STATISTICS)
+ .put(OperationType.UPDATE_STATISTICS, Operation.UPDATE_STATISTICS)
+ .put(OperationType.UPDATE_PARTITION_STATISTICS,
Operation.UPDATE_PARTITION_STATISTICS)
+ .put(OperationType.CREATE_POLICY, Operation.CREATE_POLICY)
+ .put(OperationType.GET_POLICY, Operation.GET_POLICY)
+ .put(OperationType.ALTER_POLICY, Operation.ALTER_POLICY)
+ .put(OperationType.DELETE_POLICY, Operation.DELETE_POLICY)
+ .put(OperationType.ENABLE_POLICY, Operation.ENABLE_POLICY)
+ .put(OperationType.DISABLE_POLICY, Operation.DISABLE_POLICY)
+ .put(OperationType.LIST_POLICY, Operation.LIST_POLICY)
+ .put(OperationType.LIST_POLICY_INFO, Operation.LIST_POLICY_INFO)
+ .put(
+ OperationType.LIST_METADATA_OBJECTS_FOR_POLICY,
+ Operation.LIST_METADATA_OBJECTS_FOR_POLICY)
+ .put(
+ OperationType.LIST_POLICY_INFOS_FOR_METADATA_OBJECT,
+ Operation.LIST_POLICY_INFOS_FOR_METADATA_OBJECT)
+ .put(
+ OperationType.ASSOCIATE_POLICIES_FOR_METADATA_OBJECT,
+ Operation.ASSOCIATE_POLICIES_FOR_METADATA_OBJECT)
+ .put(
+ OperationType.GET_POLICY_FOR_METADATA_OBJECT,
+ Operation.GET_POLICY_FOR_METADATA_OBJECT)
+ .put(OperationType.REGISTER_FUNCTION, Operation.REGISTER_FUNCTION)
+ .put(OperationType.GET_FUNCTION, Operation.GET_FUNCTION)
+ .put(OperationType.ALTER_FUNCTION, Operation.ALTER_FUNCTION)
+ .put(OperationType.DROP_FUNCTION, Operation.DROP_FUNCTION)
+ .put(OperationType.LIST_FUNCTION, Operation.LIST_FUNCTION)
+ .put(OperationType.LIST_FUNCTION_INFOS,
Operation.LIST_FUNCTION_INFOS)
+ .put(OperationType.UNKNOWN, Operation.UNKNOWN_OPERATION)
.build();
static Operation toAuditLogOperation(OperationType operationType) {
- return operationTypeMap.getOrDefault(operationType,
Operation.UNKNOWN_OPERATION);
+ if (operationType == null) {
+ return Operation.UNKNOWN_OPERATION;
+ }
+
+ return OPERATION_TYPE_MAP.getOrDefault(operationType,
Operation.UNKNOWN_OPERATION);
}
static Status toAuditLogStatus(OperationStatus operationStatus) {
diff --git
a/core/src/test/java/org/apache/gravitino/audit/v2/TestCompatibilityUtils.java
b/core/src/test/java/org/apache/gravitino/audit/v2/TestCompatibilityUtils.java
index 5ddf3c834d..6d7b778d8c 100644
---
a/core/src/test/java/org/apache/gravitino/audit/v2/TestCompatibilityUtils.java
+++
b/core/src/test/java/org/apache/gravitino/audit/v2/TestCompatibilityUtils.java
@@ -20,7 +20,9 @@
package org.apache.gravitino.audit.v2;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import java.util.EnumSet;
import org.apache.gravitino.audit.AuditLog.Operation;
import org.apache.gravitino.audit.AuditLog.Status;
import org.apache.gravitino.listener.api.event.OperationStatus;
@@ -52,18 +54,37 @@ public class TestCompatibilityUtils {
{OperationType.DROP_SCHEMA, Operation.DROP_SCHEMA},
{OperationType.LOAD_SCHEMA, Operation.LOAD_SCHEMA},
{OperationType.LIST_SCHEMA, Operation.LIST_SCHEMA},
- {OperationType.SCHEMA_EXISTS, Operation.UNKNOWN_OPERATION},
+ {OperationType.SCHEMA_EXISTS, Operation.SCHEMA_EXISTS},
{OperationType.CREATE_TABLE, Operation.CREATE_TABLE},
{OperationType.ALTER_TABLE, Operation.ALTER_TABLE},
{OperationType.DROP_TABLE, Operation.DROP_TABLE},
{OperationType.PURGE_TABLE, Operation.PURGE_TABLE},
{OperationType.LOAD_TABLE, Operation.LOAD_TABLE},
- {OperationType.TABLE_EXISTS, Operation.UNKNOWN_OPERATION},
+ {OperationType.LOAD_TABLE_CREDENTIAL, Operation.LOAD_TABLE_CREDENTIAL},
+ {OperationType.PLAN_TABLE_SCAN, Operation.PLAN_TABLE_SCAN},
+ {OperationType.TABLE_EXISTS, Operation.TABLE_EXISTS},
{OperationType.LIST_TABLE, Operation.LIST_TABLE},
- {OperationType.RENAME_TABLE, Operation.UNKNOWN_OPERATION},
- {OperationType.REGISTER_TABLE, Operation.UNKNOWN_OPERATION},
- {OperationType.ADD_PARTITION, Operation.UNKNOWN_OPERATION},
- {OperationType.DROP_PARTITION, Operation.UNKNOWN_OPERATION},
+ {OperationType.RENAME_TABLE, Operation.RENAME_TABLE},
+ {OperationType.REGISTER_TABLE, Operation.REGISTER_TABLE},
+ {OperationType.CREATE_TAG, Operation.CREATE_TAG},
+ {OperationType.GET_TAG, Operation.GET_TAG},
+ {OperationType.GET_TAG_FOR_METADATA_OBJECT,
Operation.GET_TAG_FOR_METADATA_OBJECT},
+ {OperationType.DELETE_TAG, Operation.DELETE_TAG},
+ {OperationType.ALTER_TAG, Operation.ALTER_TAG},
+ {OperationType.LIST_TAG, Operation.LIST_TAG},
+ {
+ OperationType.ASSOCIATE_TAGS_FOR_METADATA_OBJECT,
+ Operation.ASSOCIATE_TAGS_FOR_METADATA_OBJECT
+ },
+ {OperationType.LIST_TAGS_FOR_METADATA_OBJECT,
Operation.LIST_TAGS_FOR_METADATA_OBJECT},
+ {
+ OperationType.LIST_TAGS_INFO_FOR_METADATA_OBJECT,
+ Operation.LIST_TAGS_INFO_FOR_METADATA_OBJECT
+ },
+ {OperationType.LIST_METADATA_OBJECTS_FOR_TAG,
Operation.LIST_METADATA_OBJECTS_FOR_TAG},
+ {OperationType.LIST_TAGS_INFO, Operation.LIST_TAGS_INFO},
+ {OperationType.ADD_PARTITION, Operation.ADD_PARTITION},
+ {OperationType.DROP_PARTITION, Operation.DROP_PARTITION},
{OperationType.PURGE_PARTITION, Operation.PURGE_PARTITION},
{OperationType.LOAD_PARTITION, Operation.GET_PARTITION},
{OperationType.PARTITION_EXISTS, Operation.PARTITION_EXIST},
@@ -74,19 +95,96 @@ public class TestCompatibilityUtils {
{OperationType.DROP_FILESET, Operation.DROP_FILESET},
{OperationType.LOAD_FILESET, Operation.LOAD_FILESET},
{OperationType.LIST_FILESET, Operation.LIST_FILESET},
+ {OperationType.LIST_FILESET_FILES, Operation.LIST_FILESET_FILES},
{OperationType.GET_FILESET_LOCATION, Operation.GET_FILE_LOCATION},
{OperationType.CREATE_TOPIC, Operation.CREATE_TOPIC},
{OperationType.ALTER_TOPIC, Operation.ALTER_TOPIC},
{OperationType.DROP_TOPIC, Operation.DROP_TOPIC},
{OperationType.LOAD_TOPIC, Operation.LOAD_TOPIC},
{OperationType.LIST_TOPIC, Operation.LIST_TOPIC},
- {OperationType.CREATE_VIEW, Operation.UNKNOWN_OPERATION},
- {OperationType.ALTER_VIEW, Operation.UNKNOWN_OPERATION},
- {OperationType.DROP_VIEW, Operation.UNKNOWN_OPERATION},
- {OperationType.LOAD_VIEW, Operation.UNKNOWN_OPERATION},
- {OperationType.VIEW_EXISTS, Operation.UNKNOWN_OPERATION},
- {OperationType.RENAME_VIEW, Operation.UNKNOWN_OPERATION},
- {OperationType.LIST_VIEW, Operation.UNKNOWN_OPERATION},
+ {OperationType.CREATE_VIEW, Operation.CREATE_VIEW},
+ {OperationType.ALTER_VIEW, Operation.ALTER_VIEW},
+ {OperationType.DROP_VIEW, Operation.DROP_VIEW},
+ {OperationType.LOAD_VIEW, Operation.LOAD_VIEW},
+ {OperationType.VIEW_EXISTS, Operation.VIEW_EXISTS},
+ {OperationType.RENAME_VIEW, Operation.RENAME_VIEW},
+ {OperationType.LIST_VIEW, Operation.LIST_VIEW},
+ {OperationType.REGISTER_MODEL, Operation.REGISTER_MODEL},
+ {OperationType.DELETE_MODEL, Operation.DELETE_MODEL},
+ {OperationType.GET_MODEL, Operation.GET_MODEL},
+ {OperationType.LIST_MODEL, Operation.LIST_MODEL},
+ {OperationType.ALTER_MODEL, Operation.ALTER_MODEL},
+ {OperationType.LINK_MODEL_VERSION, Operation.LINK_MODEL_VERSION},
+ {OperationType.DELETE_MODEL_VERSION, Operation.DELETE_MODEL_VERSION},
+ {OperationType.GET_MODEL_VERSION, Operation.GET_MODEL_VERSION},
+ {OperationType.GET_MODEL_VERSION_URI, Operation.GET_MODEL_VERSION_URI},
+ {OperationType.LIST_MODEL_VERSIONS, Operation.LIST_MODEL_VERSIONS},
+ {OperationType.LIST_MODEL_VERSION_INFOS,
Operation.LIST_MODEL_VERSION_INFOS},
+ {OperationType.REGISTER_AND_LINK_MODEL_VERSION,
Operation.REGISTER_AND_LINK_MODEL_VERSION},
+ {OperationType.ALTER_MODEL_VERSION, Operation.ALTER_MODEL_VERSION},
+ {OperationType.ADD_USER, Operation.ADD_USER},
+ {OperationType.REMOVE_USER, Operation.REMOVE_USER},
+ {OperationType.GET_USER, Operation.GET_USER},
+ {OperationType.LIST_USERS, Operation.LIST_USERS},
+ {OperationType.LIST_USER_NAMES, Operation.LIST_USER_NAMES},
+ {OperationType.GRANT_USER_ROLES, Operation.GRANT_USER_ROLES},
+ {OperationType.REVOKE_USER_ROLES, Operation.REVOKE_USER_ROLES},
+ {OperationType.ADD_GROUP, Operation.ADD_GROUP},
+ {OperationType.REMOVE_GROUP, Operation.REMOVE_GROUP},
+ {OperationType.GET_GROUP, Operation.GET_GROUP},
+ {OperationType.LIST_GROUPS, Operation.LIST_GROUPS},
+ {OperationType.LIST_GROUP_NAMES, Operation.LIST_GROUP_NAMES},
+ {OperationType.GRANT_GROUP_ROLES, Operation.GRANT_GROUP_ROLES},
+ {OperationType.REVOKE_GROUP_ROLES, Operation.REVOKE_GROUP_ROLES},
+ {OperationType.CREATE_ROLE, Operation.CREATE_ROLE},
+ {OperationType.DELETE_ROLE, Operation.DELETE_ROLE},
+ {OperationType.GET_ROLE, Operation.GET_ROLE},
+ {OperationType.LIST_ROLE_NAMES, Operation.LIST_ROLE_NAMES},
+ {OperationType.GRANT_PRIVILEGES, Operation.GRANT_PRIVILEGES},
+ {OperationType.REVOKE_PRIVILEGES, Operation.REVOKE_PRIVILEGES},
+ {OperationType.OVERRIDE_PRIVILEGES, Operation.OVERRIDE_PRIVILEGES},
+ {OperationType.GET_OWNER, Operation.GET_OWNER},
+ {OperationType.SET_OWNER, Operation.SET_OWNER},
+ {OperationType.LIST_JOB_TEMPLATES, Operation.LIST_JOB_TEMPLATES},
+ {OperationType.REGISTER_JOB_TEMPLATE, Operation.REGISTER_JOB_TEMPLATE},
+ {OperationType.GET_JOB_TEMPLATE, Operation.GET_JOB_TEMPLATE},
+ {OperationType.ALTER_JOB_TEMPLATE, Operation.ALTER_JOB_TEMPLATE},
+ {OperationType.DELETE_JOB_TEMPLATE, Operation.DELETE_JOB_TEMPLATE},
+ {OperationType.LIST_JOBS, Operation.LIST_JOBS},
+ {OperationType.RUN_JOB, Operation.RUN_JOB},
+ {OperationType.GET_JOB, Operation.GET_JOB},
+ {OperationType.CANCEL_JOB, Operation.CANCEL_JOB},
+ {OperationType.LIST_STATISTICS, Operation.LIST_STATISTICS},
+ {OperationType.LIST_PARTITION_STATISTICS,
Operation.LIST_PARTITION_STATISTICS},
+ {OperationType.DROP_STATISTICS, Operation.DROP_STATISTICS},
+ {OperationType.DROP_PARTITION_STATISTICS,
Operation.DROP_PARTITION_STATISTICS},
+ {OperationType.UPDATE_STATISTICS, Operation.UPDATE_STATISTICS},
+ {OperationType.UPDATE_PARTITION_STATISTICS,
Operation.UPDATE_PARTITION_STATISTICS},
+ {OperationType.CREATE_POLICY, Operation.CREATE_POLICY},
+ {OperationType.GET_POLICY, Operation.GET_POLICY},
+ {OperationType.ALTER_POLICY, Operation.ALTER_POLICY},
+ {OperationType.DELETE_POLICY, Operation.DELETE_POLICY},
+ {OperationType.ENABLE_POLICY, Operation.ENABLE_POLICY},
+ {OperationType.DISABLE_POLICY, Operation.DISABLE_POLICY},
+ {OperationType.LIST_POLICY, Operation.LIST_POLICY},
+ {OperationType.LIST_POLICY_INFO, Operation.LIST_POLICY_INFO},
+ {OperationType.LIST_METADATA_OBJECTS_FOR_POLICY,
Operation.LIST_METADATA_OBJECTS_FOR_POLICY},
+ {
+ OperationType.LIST_POLICY_INFOS_FOR_METADATA_OBJECT,
+ Operation.LIST_POLICY_INFOS_FOR_METADATA_OBJECT
+ },
+ {
+ OperationType.ASSOCIATE_POLICIES_FOR_METADATA_OBJECT,
+ Operation.ASSOCIATE_POLICIES_FOR_METADATA_OBJECT
+ },
+ {OperationType.GET_POLICY_FOR_METADATA_OBJECT,
Operation.GET_POLICY_FOR_METADATA_OBJECT},
+ {OperationType.REGISTER_FUNCTION, Operation.REGISTER_FUNCTION},
+ {OperationType.GET_FUNCTION, Operation.GET_FUNCTION},
+ {OperationType.ALTER_FUNCTION, Operation.ALTER_FUNCTION},
+ {OperationType.DROP_FUNCTION, Operation.DROP_FUNCTION},
+ {OperationType.LIST_FUNCTION, Operation.LIST_FUNCTION},
+ {OperationType.LIST_FUNCTION_INFOS, Operation.LIST_FUNCTION_INFOS},
+ {OperationType.UNKNOWN, Operation.UNKNOWN_OPERATION},
{null, Operation.UNKNOWN_OPERATION}
};
@@ -98,6 +196,19 @@ public class TestCompatibilityUtils {
}
}
+ @Test
+ public void testAllKnownOperationTypesMapToConcreteAuditOperation() {
+ EnumSet<OperationType> operationTypes = EnumSet.allOf(OperationType.class);
+ operationTypes.remove(OperationType.UNKNOWN);
+
+ for (OperationType operationType : operationTypes) {
+ assertNotEquals(
+ Operation.UNKNOWN_OPERATION,
+ CompatibilityUtils.toAuditLogOperation(operationType),
+ "OperationType should map to a concrete audit operation: " +
operationType);
+ }
+ }
+
@Test
void testOperationStatus() {
Assertions.assertEquals(