Skip to content

Commit f32d069

Browse files
authored
Merge branch 'master' into bq-multi-partitions
2 parents 15b1434 + 653f9ef commit f32d069

File tree

42 files changed

+4605
-1297
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+4605
-1297
lines changed

.github/workflows/python-build-pages.yml

+6-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ on:
88
- "metadata-ingestion/**"
99
- "metadata-ingestion-modules/**"
1010
- "metadata-models/**"
11-
pull_request:
11+
pull_request_target:
1212
branches:
1313
- "**"
1414
paths:
@@ -38,7 +38,11 @@ jobs:
3838
distribution: "zulu"
3939
java-version: 17
4040
- uses: gradle/actions/setup-gradle@v4
41-
- uses: acryldata/sane-checkout-action@v3
41+
- uses: actions/checkout@v4
42+
# Note: not using acryldata/sane-checkout-action because this is a
43+
# pull_request_target event, and hence requires `ref`.
44+
with:
45+
ref: ${{ github.event.pull_request.base.sha }}
4246
- uses: actions/setup-python@v5
4347
with:
4448
python-version: "3.10"

datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/lineage/UpdateLineageResolver.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -222,16 +222,15 @@ private void checkLineageEdgePrivileges(
222222
if (!isAuthorized(context, upstreamUrn, editLineagePrivileges)) {
223223
throw new AuthorizationException(
224224
String.format(
225-
"Unauthorized to edit %s lineage. Please contact your DataHub administrator.",
226-
upstreamUrn.getEntityType()));
225+
"Unauthorized to edit %s lineage for %s", upstreamUrn, upstreamUrn.getEntityType()));
227226
}
228227

229228
Urn downstreamUrn = UrnUtils.getUrn(lineageEdge.getDownstreamUrn());
230229
if (!isAuthorized(context, downstreamUrn, editLineagePrivileges)) {
231230
throw new AuthorizationException(
232231
String.format(
233-
"Unauthorized to edit %s lineage. Please contact your DataHub administrator.",
234-
downstreamUrn.getEntityType()));
232+
"Unauthorized to edit %s lineage for %s",
233+
downstreamUrn, downstreamUrn.getEntityType()));
235234
}
236235
}
237236

datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/GetGrantedPrivilegesResolver.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,6 @@ public CompletableFuture<Privileges> get(final DataFetchingEnvironment environme
5757
}
5858

5959
private boolean isAuthorized(final QueryContext context, final String actor) {
60-
return actor.equals(context.getActorUrn());
60+
return PolicyAuthUtils.canManagePolicies(context) || actor.equals(context.getActorUrn());
6161
}
6262
}

datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/types/dataplatform/DataPlatformType.java

+50-1
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,38 @@
22

33
import static com.linkedin.metadata.Constants.*;
44

5+
import com.google.common.collect.ImmutableSet;
56
import com.linkedin.common.urn.Urn;
67
import com.linkedin.common.urn.UrnUtils;
78
import com.linkedin.datahub.graphql.QueryContext;
9+
import com.linkedin.datahub.graphql.generated.AutoCompleteResults;
810
import com.linkedin.datahub.graphql.generated.DataPlatform;
911
import com.linkedin.datahub.graphql.generated.Entity;
12+
import com.linkedin.datahub.graphql.generated.FacetFilterInput;
13+
import com.linkedin.datahub.graphql.generated.SearchResults;
14+
import com.linkedin.datahub.graphql.resolvers.ResolverUtils;
1015
import com.linkedin.datahub.graphql.types.EntityType;
16+
import com.linkedin.datahub.graphql.types.SearchableEntityType;
1117
import com.linkedin.datahub.graphql.types.dataplatform.mappers.DataPlatformMapper;
18+
import com.linkedin.datahub.graphql.types.mappers.AutoCompleteResultsMapper;
19+
import com.linkedin.datahub.graphql.types.mappers.UrnSearchResultsMapper;
1220
import com.linkedin.entity.EntityResponse;
1321
import com.linkedin.entity.client.EntityClient;
22+
import com.linkedin.metadata.query.AutoCompleteResult;
23+
import com.linkedin.metadata.query.filter.Filter;
24+
import com.linkedin.metadata.search.SearchResult;
1425
import graphql.execution.DataFetcherResult;
1526
import java.util.ArrayList;
1627
import java.util.HashSet;
1728
import java.util.List;
1829
import java.util.Map;
1930
import java.util.function.Function;
2031
import java.util.stream.Collectors;
32+
import javax.annotation.Nonnull;
33+
import javax.annotation.Nullable;
2134

22-
public class DataPlatformType implements EntityType<DataPlatform, String> {
35+
public class DataPlatformType
36+
implements SearchableEntityType<DataPlatform, String>, EntityType<DataPlatform, String> {
2337

2438
private final EntityClient _entityClient;
2539

@@ -75,4 +89,39 @@ public com.linkedin.datahub.graphql.generated.EntityType type() {
7589
public Function<Entity, String> getKeyProvider() {
7690
return Entity::getUrn;
7791
}
92+
93+
@Override
94+
public SearchResults search(
95+
@Nonnull String query,
96+
@Nullable List<FacetFilterInput> filters,
97+
int start,
98+
int count,
99+
@Nonnull final QueryContext context)
100+
throws Exception {
101+
final Map<String, String> facetFilters =
102+
ResolverUtils.buildFacetFilters(filters, ImmutableSet.of());
103+
final SearchResult searchResult =
104+
_entityClient.search(
105+
context.getOperationContext().withSearchFlags(flags -> flags.setFulltext(true)),
106+
DATA_PLATFORM_ENTITY_NAME,
107+
query,
108+
facetFilters,
109+
start,
110+
count);
111+
return UrnSearchResultsMapper.map(context, searchResult);
112+
}
113+
114+
@Override
115+
public AutoCompleteResults autoComplete(
116+
@Nonnull String query,
117+
@Nullable String field,
118+
@Nullable Filter filters,
119+
int limit,
120+
@Nonnull final QueryContext context)
121+
throws Exception {
122+
final AutoCompleteResult result =
123+
_entityClient.autoComplete(
124+
context.getOperationContext(), DATA_PLATFORM_ENTITY_NAME, query, filters, limit);
125+
return AutoCompleteResultsMapper.map(context, result);
126+
}
78127
}

datahub-web-react/src/app/lineage/manage/ManageLineageModal.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ export default function ManageLineageModal({
107107
});
108108
}
109109
})
110-
.catch(() => {
111-
message.error('Error updating lineage');
110+
.catch((error) => {
111+
message.error(error.message || 'Error updating lineage');
112112
});
113113
}
114114

datahub-web-react/src/app/lineageV2/manualLineage/ManageLineageModal.tsx

+2-3
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,8 @@ export default function ManageLineageModal({ node, direction, closeModal, refetc
8585
});
8686
}
8787
})
88-
.catch((e) => {
89-
message.error('Error updating lineage');
90-
console.warn(e);
88+
.catch((error) => {
89+
message.error(error.message || 'Error updating lineage');
9190
});
9291
}
9392

docker/datahub-gms/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@ COPY --from=binary /go/bin/dockerize /usr/local/bin
4949
ENV LD_LIBRARY_PATH="/lib:/lib64"
5050

5151
FROM base AS prod-install
52-
COPY war.war /datahub/datahub-gms/bin/war.war
5352
COPY metadata-models/src/main/resources/entity-registry.yml /datahub/datahub-gms/resources/entity-registry.yml
5453
COPY docker/datahub-gms/start.sh /datahub/datahub-gms/scripts/start.sh
5554
COPY docker/monitoring/client-prometheus-config.yaml /datahub/datahub-gms/scripts/prometheus-config.yaml
5655
RUN chmod +x /datahub/datahub-gms/scripts/start.sh
56+
COPY war.war /datahub/datahub-gms/bin/war.war
5757

5858
FROM base AS dev-install
5959
# Dummy stage for development. Assumes code is built on your machine and mounted to this image.

docs-website/sidebars.js

+5
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,11 @@ module.exports = {
9292
},
9393
],
9494
},
95+
{
96+
label: "Access Management",
97+
type: "doc",
98+
id: "docs/features/feature-guides/access-management",
99+
},
95100
{
96101
label: "Automations",
97102
type: "category",

0 commit comments

Comments
 (0)