Skip to content

Commit

Permalink
Merge branch 'main' into spark-connector-1
Browse files Browse the repository at this point in the history
  • Loading branch information
liangyouze authored Jan 7, 2025
2 parents ac3bb93 + 6ad3d3b commit 8da7c5f
Show file tree
Hide file tree
Showing 265 changed files with 15,857 additions and 1,341 deletions.
83 changes: 0 additions & 83 deletions .github/CONTRIBUTING

This file was deleted.

40 changes: 11 additions & 29 deletions .github/workflows/auto-cherry-pick.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,60 +7,42 @@ on:
types: ["closed"]

jobs:
cherry_pick_branch_0_5:
runs-on: ubuntu-latest
name: Cherry pick into branch_0.5
if: ${{ contains(github.event.pull_request.labels.*.name, 'branch-0.5') && github.event.pull_request.merged == true }}
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Cherry pick into branch-0.5
uses: carloscastrojumo/[email protected]
with:
branch: branch-0.5
labels: |
cherry-pick
reviewers: |
jerryshao
cherry_pick_branch_0_6:
cherry_pick_branch_0_7:
runs-on: ubuntu-latest
name: Cherry pick into branch_0.6
if: ${{ contains(github.event.pull_request.labels.*.name, 'branch-0.6') && github.event.pull_request.merged == true }}
name: Cherry pick into branch_0.7
if: ${{ contains(github.event.pull_request.labels.*.name, 'branch-0.7') && github.event.pull_request.merged == true }}
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Cherry pick into branch-0.6
- name: Cherry pick into branch-0.7
uses: carloscastrojumo/[email protected]
with:
branch: branch-0.6
branch: branch-0.7
labels: |
cherry-pick
reviewers: |
jerryshao
cherry_pick_branch_0_7:
cherry_pick_branch_0_8:
runs-on: ubuntu-latest
name: Cherry pick into branch_0.7
if: ${{ contains(github.event.pull_request.labels.*.name, 'branch-0.7') && github.event.pull_request.merged == true }}
name: Cherry pick into branch_0.8
if: ${{ contains(github.event.pull_request.labels.*.name, 'branch-0.8') && github.event.pull_request.merged == true }}
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Cherry pick into branch-0.7
- name: Cherry pick into branch-0.8
uses: carloscastrojumo/[email protected]
with:
branch: branch-0.7
branch: branch-0.8
labels: |
cherry-pick
reviewers: |
jerryshao
FANNG1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
1 change: 1 addition & 0 deletions .github/workflows/backend-integration-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ jobs:
- meta/**
- scripts/**
- server/**
- bundles/**
- server-common/**
- build.gradle.kts
- gradle.properties
Expand Down
89 changes: 89 additions & 0 deletions .github/workflows/gvfs-fuse-build-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
name: Build gvfs-fuse and testing

# Controls when the workflow will run
on:
push:
branches: [ "main", "branch-*" ]
pull_request:
branches: [ "main", "branch-*" ]
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
changes:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dorny/paths-filter@v2
id: filter
with:
filters: |
source_changes:
- .github/**
- api/**
- bin/**
- catalogs/hadoop/**
- clients/filesystem-fuse/**
- common/**
- conf/**
- core/**
- dev/**
- gradle/**
- meta/**
- scripts/**
- server/**
- server-common/**
- build.gradle.kts
- gradle.properties
- gradlew
- setting.gradle.kts
outputs:
source_changes: ${{ steps.filter.outputs.source_changes }}

# Build for AMD64 architecture
Gvfs-Build:
needs: changes
if: needs.changes.outputs.source_changes == 'true'
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
architecture: [linux/amd64]
java-version: [ 17 ]
env:
PLATFORM: ${{ matrix.architecture }}
steps:
- uses: actions/checkout@v3

- uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java-version }}
distribution: 'temurin'
cache: 'gradle'

- name: Set up QEMU
uses: docker/setup-qemu-action@v2

- name: Check required command
run: |
dev/ci/check_commands.sh
- name: Build and test Gravitino
run: |
./gradlew :clients:filesystem-fuse:build -PenableFuse=true
- name: Free up disk space
run: |
dev/ci/util_free_space.sh
- name: Upload tests reports
uses: actions/upload-artifact@v3
if: ${{ (failure() && steps.integrationTest.outcome == 'failure') || contains(github.event.pull_request.labels.*.name, 'upload log') }}
with:
name: Gvfs-fuse integrate-test-reports-${{ matrix.java-version }}
path: |
clients/filesystem-fuse/build/test/log/*.log
4 changes: 4 additions & 0 deletions api/src/main/java/org/apache/gravitino/MetadataObjects.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.common.base.Splitter;
import java.util.Collections;
import java.util.List;
import javax.annotation.Nullable;
import org.apache.commons.lang3.StringUtils;
Expand Down Expand Up @@ -151,6 +152,9 @@ public static MetadataObject parse(String fullName, MetadataObject.Type type) {
StringUtils.isNotBlank(fullName), "Metadata object full name cannot be blank");

List<String> parts = DOT_SPLITTER.splitToList(fullName);
if (type == MetadataObject.Type.ROLE) {
return MetadataObjects.of(Collections.singletonList(fullName), MetadataObject.Type.ROLE);
}

return MetadataObjects.of(parts, type);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public interface SupportsCredentials {
* org.apache.gravitino.file.Fileset}, {@link org.apache.gravitino.rel.Table}. There will be
* at most one credential for one credential type.
*/
Credential[] getCredentials() throws NoSuchCredentialException;
Credential[] getCredentials();

/**
* Retrieves an {@link Credential} object based on the specified credential type.
Expand Down
15 changes: 15 additions & 0 deletions api/src/test/java/org/apache/gravitino/TestMetadataObjects.java
Original file line number Diff line number Diff line change
Expand Up @@ -84,4 +84,19 @@ public void testColumnObject() {
MetadataObjects.of(
Lists.newArrayList("catalog", "schema", "table"), MetadataObject.Type.COLUMN));
}

@Test
public void testRoleObject() {
MetadataObject roleObject = MetadataObjects.of(null, "role.test", MetadataObject.Type.ROLE);
Assertions.assertEquals("role.test", roleObject.fullName());

MetadataObject roleObject1 = MetadataObjects.of(null, "role", MetadataObject.Type.ROLE);
Assertions.assertEquals("role", roleObject1.fullName());

MetadataObject roleObject2 = MetadataObjects.parse("role.test", MetadataObject.Type.ROLE);
Assertions.assertEquals("role.test", roleObject2.fullName());

MetadataObject roleObject3 = MetadataObjects.parse("role", MetadataObject.Type.ROLE);
Assertions.assertEquals("role", roleObject3.fullName());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/

package org.apache.gravitino.authorization.common;

import java.util.Map;

/**
* The AuthorizationUserGroupMappingProvider interface defines the public API for mapping Gravitino
* users and groups to the that in underlying data source system.
*
* <p>Typically, the users and group names in Gravitino are the same as the underlying data source.
* However, in some cases, the user and group names in Gravitino may be different from the
* underlying data source. For instance, in GCP IAM, the username is the email address or the
* service account. So the user group mapping provider can be used to map the Gravitino username to
* the email address or service account.
*/
public interface AuthorizationUserGroupMappingProvider {

/**
* Initialize the user group mapping provider with the configuration.
*
* @param config The configuration map for the user group mapping provider.
*/
default void initialize(Map<String, String> config) {}

/**
* Get the username from the underlying data source based on the Gravitino username For instance,
* in GCP IAM, the username is the email address or the service account.
*
* @param gravitinoUserName The Gravitino username.
* @return The username from the underlying data source.
*/
default String getUserName(String gravitinoUserName) {
return gravitinoUserName;
}

/**
* Get the group name from the underlying data source based on the Gravitino group name.
*
* @param gravitinoGroupName The Gravitino group name.
* @return The group name from the underlying data source.
*/
default String getGroupName(String gravitinoGroupName) {
return gravitinoGroupName;
}
}
3 changes: 3 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -501,6 +501,9 @@ subprojects {
exclude("test/**")
}
}
tasks.named("compileJava").configure {
dependsOn("spotlessCheck")
}
}

tasks.rat {
Expand Down
Loading

0 comments on commit 8da7c5f

Please sign in to comment.