Skip to content

Commit 0327979

Browse files
authored
[#5560] Add support for extra catalogs in the Gravitino CLI (#5752)
### What changes were proposed in this pull request? Expand Gravitino CLI support. ### Why are the changes needed? Add support for all current catalogs. Fix: #5560 ### Does this PR introduce _any_ user-facing change? No ### How was this patch tested? Tested locally.
1 parent 4d8f9fa commit 0327979

File tree

3 files changed

+57
-0
lines changed

3 files changed

+57
-0
lines changed

clients/cli/src/main/java/org/apache/gravitino/cli/Providers.java

+20
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ public class Providers {
3333
public static final String MYSQL = "mysql";
3434
public static final String POSTGRES = "postgres";
3535
public static final String KAFKA = "kafka";
36+
public static final String DORIS = "doris";
37+
public static final String PAIMON = "paimon";
38+
public static final String HUDI = "hudi";
39+
public static final String OCEANBASE = "oceanbase";
3640

3741
private static final HashSet<String> VALID_PROVIDERS = new HashSet<>();
3842

@@ -43,6 +47,10 @@ public class Providers {
4347
VALID_PROVIDERS.add(MYSQL);
4448
VALID_PROVIDERS.add(POSTGRES);
4549
VALID_PROVIDERS.add(KAFKA);
50+
VALID_PROVIDERS.add(DORIS);
51+
VALID_PROVIDERS.add(PAIMON);
52+
VALID_PROVIDERS.add(HUDI);
53+
VALID_PROVIDERS.add(OCEANBASE);
4654
}
4755

4856
/**
@@ -69,6 +77,14 @@ public static String internal(String provider) {
6977
return "lakehouse-iceberg";
7078
case KAFKA:
7179
return "kafka";
80+
case DORIS:
81+
return "jdbc-doris";
82+
case PAIMON:
83+
return "lakehouse-paimon";
84+
case HUDI:
85+
return "lakehouse-hudi";
86+
case OCEANBASE:
87+
return "jdbc-oceanbase";
7288
default:
7389
throw new IllegalArgumentException("Unsupported provider: " + provider);
7490
}
@@ -82,6 +98,10 @@ public static Catalog.Type catalogType(String provider) {
8298
case MYSQL:
8399
case POSTGRES:
84100
case ICEBERG:
101+
case DORIS:
102+
case PAIMON:
103+
case HUDI:
104+
case OCEANBASE:
85105
return Catalog.Type.RELATIONAL;
86106
case KAFKA:
87107
return Catalog.Type.MESSAGING;

clients/cli/src/test/java/org/apache/gravitino/cli/TestProviders.java

+13
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ public void validProviders() {
3636
assertTrue(Providers.isValidProvider(Providers.MYSQL), "MYSQL should be a valid entity");
3737
assertTrue(Providers.isValidProvider(Providers.POSTGRES), "POSTGRES should be a valid entity");
3838
assertTrue(Providers.isValidProvider(Providers.KAFKA), "KAFKA should be a valid entity");
39+
assertTrue(Providers.isValidProvider(Providers.DORIS), "DORIS should be a valid entity");
40+
assertTrue(Providers.isValidProvider(Providers.PAIMON), "PAIMON should be a valid entity");
41+
assertTrue(Providers.isValidProvider(Providers.HUDI), "HUDI should be a valid entity");
42+
assertTrue(
43+
Providers.isValidProvider(Providers.OCEANBASE), "OCEANBASE should be a valid entity");
3944
}
4045

4146
@Test
@@ -70,6 +75,10 @@ public void internalNotNull() {
7075
assertNotNull(Providers.internal(Providers.MYSQL), "Internal string should not be null");
7176
assertNotNull(Providers.internal(Providers.POSTGRES), "Internal string should not be null");
7277
assertNotNull(Providers.internal(Providers.KAFKA), "Internal string should not be null");
78+
assertNotNull(Providers.internal(Providers.DORIS), "Internal string should not be null");
79+
assertNotNull(Providers.internal(Providers.PAIMON), "Internal string should not be null");
80+
assertNotNull(Providers.internal(Providers.HUDI), "Internal string should not be null");
81+
assertNotNull(Providers.internal(Providers.OCEANBASE), "Internal string should not be null");
7382
}
7483

7584
@Test
@@ -88,6 +97,10 @@ public void catalogTypeNotNull() {
8897
assertNotNull(Providers.catalogType(Providers.MYSQL), "Catalog type should not be null");
8998
assertNotNull(Providers.catalogType(Providers.POSTGRES), "Catalog type should not be null");
9099
assertNotNull(Providers.catalogType(Providers.KAFKA), "Catalog type should not be null");
100+
assertNotNull(Providers.catalogType(Providers.DORIS), "Catalog type should not be null");
101+
assertNotNull(Providers.catalogType(Providers.PAIMON), "Catalog type should not be null");
102+
assertNotNull(Providers.catalogType(Providers.HUDI), "Catalog type should not be null");
103+
assertNotNull(Providers.catalogType(Providers.OCEANBASE), "Catalog type should not be null");
91104
}
92105

93106
@Test

docs/cli.md

+24
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,30 @@ gcli catalog create -name postgres --provider postgres --properties jdbc-url=jd
296296
gcli catalog create --name kafka --provider kafka --properties bootstrap.servers=127.0.0.1:9092,127.0.0.2:9092
297297
```
298298

299+
##### Create a Doris catalog
300+
301+
```bash
302+
gcli catalog create --name doris --provider doris --properties jdbc-url=jdbc:mysql://localhost:9030,jdbc-driver=com.mysql.jdbc.Driver,jdbc-user=admin,jdbc-password=password
303+
```
304+
305+
##### Create a Paimon catalog
306+
307+
```bash
308+
gcli catalog create --name paimon --provider paimon --properties catalog-backend=jdbc,uri=jdbc:mysql://127.0.0.1:3306/metastore_db,authentication.type=simple
309+
```
310+
311+
#### Create a Hudi catalog
312+
313+
```bash
314+
gcli catalog create --name hudi --provider hudi --properties catalog-backend=hms,uri=thrift://127.0.0.1:9083
315+
```
316+
317+
#### Create an Oceanbase catalog
318+
319+
```bash
320+
gcli catalog create --name oceanbase --provider oceanbase --properties jdbc-url=jdbc:mysql://localhost:2881,jdbc-driver=com.mysql.jdbc.Driver,jdbc-user=admin,jdbc-password=password
321+
```
322+
299323
#### Delete a catalog
300324

301325
```bash

0 commit comments

Comments
 (0)