This is an automated email from the ASF dual-hosted git repository.
jmclean 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 e5007ccbde [#7351] feat(cli): Add MODEL provider support to CLI (#7366)
e5007ccbde is described below
commit e5007ccbdee8a5417f8c4c302f0f3be5850a68cb
Author: Edie <[email protected]>
AuthorDate: Thu Jul 10 17:53:04 2025 -0700
[#7351] feat(cli): Add MODEL provider support to CLI (#7366)
### What changes were proposed in this pull request?
Add support for MODEL provider in CLI catalog creation command by:
- Add MODEL constant definition
- Add MODEL to valid providers set
- Handle MODEL provider in internal() method
- Set catalog type to MODEL for model provider
### Why are the changes needed?
Currently, the CLI throws "Unsupported provider: model" error when
trying to create a model catalog. This prevents users from using the CLI
to manage model catalogs, even though the server supports model
catalogs.
Fix: CLI does not support create model catalog now
### Does this PR introduce *any* user-facing change?
Yes, this PR introduces the following user-facing change:
- Users can now use CLI command `gcli.sh catalog create --metalake
<metalake> --name <name> --provider model` to create model catalogs
- The CLI will no longer throw "Unsupported provider: model" error for
model provider
### How was this patch tested?
- Built the project successfully with `./gradlew build`
- Ran CLI tests with `./gradlew :clients:cli:test` - all tests passed
- **Manual testing**: CLI command `catalog create --metalake yedian
--name model --provider model` now successfully creates model catalog
instead of throwing "Unsupported provider: model" error
- Verified the fix by starting local Gravitino server and testing the
complete workflow
---
.../main/java/org/apache/gravitino/cli/Providers.java | 6 ++++++
.../java/org/apache/gravitino/cli/TestProviders.java | 19 +++++++++++++++++++
2 files changed, 25 insertions(+)
diff --git a/clients/cli/src/main/java/org/apache/gravitino/cli/Providers.java
b/clients/cli/src/main/java/org/apache/gravitino/cli/Providers.java
index 46f875c11b..174d2a2a02 100644
--- a/clients/cli/src/main/java/org/apache/gravitino/cli/Providers.java
+++ b/clients/cli/src/main/java/org/apache/gravitino/cli/Providers.java
@@ -37,6 +37,7 @@ public class Providers {
public static final String PAIMON = "paimon";
public static final String HUDI = "hudi";
public static final String OCEANBASE = "oceanbase";
+ public static final String MODEL = "model";
private static final HashSet<String> VALID_PROVIDERS = new HashSet<>();
@@ -51,6 +52,7 @@ public class Providers {
VALID_PROVIDERS.add(PAIMON);
VALID_PROVIDERS.add(HUDI);
VALID_PROVIDERS.add(OCEANBASE);
+ VALID_PROVIDERS.add(MODEL);
}
/**
@@ -85,6 +87,8 @@ public class Providers {
return "lakehouse-hudi";
case OCEANBASE:
return "jdbc-oceanbase";
+ case MODEL:
+ return "model";
default:
throw new IllegalArgumentException("Unsupported provider: " +
provider);
}
@@ -105,6 +109,8 @@ public class Providers {
return Catalog.Type.RELATIONAL;
case KAFKA:
return Catalog.Type.MESSAGING;
+ case MODEL:
+ return Catalog.Type.MODEL;
default:
throw new IllegalArgumentException("Unsupported provider: " +
provider);
}
diff --git
a/clients/cli/src/test/java/org/apache/gravitino/cli/TestProviders.java
b/clients/cli/src/test/java/org/apache/gravitino/cli/TestProviders.java
index c7302e2884..c59a0ca193 100644
--- a/clients/cli/src/test/java/org/apache/gravitino/cli/TestProviders.java
+++ b/clients/cli/src/test/java/org/apache/gravitino/cli/TestProviders.java
@@ -19,11 +19,13 @@
package org.apache.gravitino.cli;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import org.apache.gravitino.Catalog;
import org.junit.jupiter.api.Test;
public class TestProviders {
@@ -41,6 +43,7 @@ public class TestProviders {
assertTrue(Providers.isValidProvider(Providers.HUDI), "HUDI should be a
valid entity");
assertTrue(
Providers.isValidProvider(Providers.OCEANBASE), "OCEANBASE should be a
valid entity");
+ assertTrue(Providers.isValidProvider(Providers.MODEL), "MODEL should be a
valid entity");
}
@Test
@@ -79,6 +82,7 @@ public class TestProviders {
assertNotNull(Providers.internal(Providers.PAIMON), "Internal string
should not be null");
assertNotNull(Providers.internal(Providers.HUDI), "Internal string should
not be null");
assertNotNull(Providers.internal(Providers.OCEANBASE), "Internal string
should not be null");
+ assertNotNull(Providers.internal(Providers.MODEL), "Internal string should
not be null");
}
@Test
@@ -101,6 +105,7 @@ public class TestProviders {
assertNotNull(Providers.catalogType(Providers.PAIMON), "Catalog type
should not be null");
assertNotNull(Providers.catalogType(Providers.HUDI), "Catalog type should
not be null");
assertNotNull(Providers.catalogType(Providers.OCEANBASE), "Catalog type
should not be null");
+ assertNotNull(Providers.catalogType(Providers.MODEL), "Catalog type should
not be null");
}
@Test
@@ -110,4 +115,18 @@ public class TestProviders {
() -> Providers.catalogType("unknown"),
"Expected an IllegalArgumentException for an unknown provider");
}
+
+ @Test
+ public void modelProviderInternal() {
+ assertEquals(
+ "model", Providers.internal(Providers.MODEL), "MODEL internal should
return 'model'");
+ }
+
+ @Test
+ public void modelProviderCatalogType() {
+ assertEquals(
+ Catalog.Type.MODEL,
+ Providers.catalogType(Providers.MODEL),
+ "MODEL catalog type should be MODEL");
+ }
}