mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-11-07 05:53:46 +00:00
* Fixes #6336 - Add API to list of operations per resource to be used for writing policies * Fixing UI build errors * Include only JSON schema file and not JSON data files in python code generation * Fix generate * Update operations list Co-authored-by: Pere Miquel Brull <peremiquelbrull@gmail.com>
This commit is contained in:
parent
7da74d48e5
commit
a23a9c84c1
5
Makefile
5
Makefile
@ -60,7 +60,8 @@ py_format_check: ## Check if Python sources are correctly formatted
|
|||||||
generate: ## Generate the pydantic models from the JSON Schemas to the ingestion module
|
generate: ## Generate the pydantic models from the JSON Schemas to the ingestion module
|
||||||
@echo "Running Datamodel Code Generator"
|
@echo "Running Datamodel Code Generator"
|
||||||
@echo "Make sure to first run the install_dev recipe"
|
@echo "Make sure to first run the install_dev recipe"
|
||||||
datamodel-codegen --input catalog-rest-service/src/main/resources/json --input-file-type jsonschema --output ingestion/src/metadata/generated --set-default-enum-member
|
mkdir -p ingestion/src/metadata/generated
|
||||||
|
datamodel-codegen --input catalog-rest-service/src/main/resources/json/schema --input-file-type jsonschema --output ingestion/src/metadata/generated/schema --set-default-enum-member
|
||||||
$(MAKE) py_antlr
|
$(MAKE) py_antlr
|
||||||
$(MAKE) install
|
$(MAKE) install
|
||||||
|
|
||||||
@ -162,7 +163,7 @@ core_generate: ## Generate the pydantic models from the JSON Schemas to the ing
|
|||||||
$(MAKE) core_install_dev
|
$(MAKE) core_install_dev
|
||||||
mkdir -p ingestion-core/src/metadata/generated; \
|
mkdir -p ingestion-core/src/metadata/generated; \
|
||||||
. ingestion-core/venv/bin/activate; \
|
. ingestion-core/venv/bin/activate; \
|
||||||
datamodel-codegen --input catalog-rest-service/src/main/resources/json --input-file-type jsonschema --output ingestion-core/src/metadata/generated
|
datamodel-codegen --input catalog-rest-service/src/main/resources/json/schema --input-file-type jsonschema --output ingestion-core/src/metadata/generated/schema
|
||||||
$(MAKE) core_py_antlr
|
$(MAKE) core_py_antlr
|
||||||
|
|
||||||
.PHONY: core_bump_version_dev
|
.PHONY: core_bump_version_dev
|
||||||
|
|||||||
@ -51,7 +51,7 @@ public final class Entity {
|
|||||||
// Canonical entity name to corresponding EntityRepository map
|
// Canonical entity name to corresponding EntityRepository map
|
||||||
private static final Map<String, EntityRepository<?>> ENTITY_REPOSITORY_MAP = new HashMap<>();
|
private static final Map<String, EntityRepository<?>> ENTITY_REPOSITORY_MAP = new HashMap<>();
|
||||||
|
|
||||||
// List of entities
|
// List of all the entities
|
||||||
private static final List<String> ENTITY_LIST = new ArrayList<>();
|
private static final List<String> ENTITY_LIST = new ArrayList<>();
|
||||||
|
|
||||||
// Common field names
|
// Common field names
|
||||||
@ -152,7 +152,7 @@ public final class Entity {
|
|||||||
entityRepository.getClass().getSimpleName());
|
entityRepository.getClass().getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<String> listEntities() {
|
public static List<String> getEntityList() {
|
||||||
return Collections.unmodifiableList(ENTITY_LIST);
|
return Collections.unmodifiableList(ENTITY_LIST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,23 @@
|
|||||||
|
package org.openmetadata.catalog;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
import org.openmetadata.catalog.type.ResourceDescriptor;
|
||||||
|
|
||||||
|
public class ResourceRegistry {
|
||||||
|
private static final ResourceRegistry registry = new ResourceRegistry();
|
||||||
|
private static final List<ResourceDescriptor> RESOURCE_DESCRIPTORS = new ArrayList<>();
|
||||||
|
|
||||||
|
private ResourceRegistry() {}
|
||||||
|
|
||||||
|
public static void add(List<ResourceDescriptor> resourceDescriptors) {
|
||||||
|
RESOURCE_DESCRIPTORS.addAll(resourceDescriptors);
|
||||||
|
RESOURCE_DESCRIPTORS.sort(Comparator.comparing(ResourceDescriptor::getName));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<ResourceDescriptor> listResourceDescriptors() {
|
||||||
|
return Collections.unmodifiableList(RESOURCE_DESCRIPTORS);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -13,6 +13,8 @@
|
|||||||
|
|
||||||
package org.openmetadata.catalog.resources.databases;
|
package org.openmetadata.catalog.resources.databases;
|
||||||
|
|
||||||
|
import static org.openmetadata.catalog.type.MetadataOperation.*;
|
||||||
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.v3.oas.annotations.ExternalDocumentation;
|
import io.swagger.v3.oas.annotations.ExternalDocumentation;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
|||||||
@ -23,8 +23,6 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
|||||||
import io.swagger.v3.oas.annotations.parameters.RequestBody;
|
import io.swagger.v3.oas.annotations.parameters.RequestBody;
|
||||||
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.json.JsonPatch;
|
import javax.json.JsonPatch;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
@ -47,8 +45,10 @@ import javax.ws.rs.core.Response;
|
|||||||
import javax.ws.rs.core.SecurityContext;
|
import javax.ws.rs.core.SecurityContext;
|
||||||
import javax.ws.rs.core.UriInfo;
|
import javax.ws.rs.core.UriInfo;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.maven.shared.utils.io.IOUtil;
|
||||||
import org.openmetadata.catalog.CatalogApplicationConfig;
|
import org.openmetadata.catalog.CatalogApplicationConfig;
|
||||||
import org.openmetadata.catalog.Entity;
|
import org.openmetadata.catalog.Entity;
|
||||||
|
import org.openmetadata.catalog.ResourceRegistry;
|
||||||
import org.openmetadata.catalog.api.policies.CreatePolicy;
|
import org.openmetadata.catalog.api.policies.CreatePolicy;
|
||||||
import org.openmetadata.catalog.entity.policies.Policy;
|
import org.openmetadata.catalog.entity.policies.Policy;
|
||||||
import org.openmetadata.catalog.jdbi3.CollectionDAO;
|
import org.openmetadata.catalog.jdbi3.CollectionDAO;
|
||||||
@ -61,6 +61,9 @@ import org.openmetadata.catalog.security.policyevaluator.PolicyEvaluator;
|
|||||||
import org.openmetadata.catalog.type.EntityHistory;
|
import org.openmetadata.catalog.type.EntityHistory;
|
||||||
import org.openmetadata.catalog.type.EntityReference;
|
import org.openmetadata.catalog.type.EntityReference;
|
||||||
import org.openmetadata.catalog.type.Include;
|
import org.openmetadata.catalog.type.Include;
|
||||||
|
import org.openmetadata.catalog.type.ResourceDescriptor;
|
||||||
|
import org.openmetadata.catalog.util.EntityUtil;
|
||||||
|
import org.openmetadata.catalog.util.JsonUtils;
|
||||||
import org.openmetadata.catalog.util.ResultList;
|
import org.openmetadata.catalog.util.ResultList;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@ -71,7 +74,6 @@ import org.openmetadata.catalog.util.ResultList;
|
|||||||
@Collection(name = "policies")
|
@Collection(name = "policies")
|
||||||
public class PolicyResource extends EntityResource<Policy, PolicyRepository> {
|
public class PolicyResource extends EntityResource<Policy, PolicyRepository> {
|
||||||
public static final String COLLECTION_PATH = "v1/policies/";
|
public static final String COLLECTION_PATH = "v1/policies/";
|
||||||
public static final List<String> RESOURCES = new ArrayList<>();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Policy addHref(UriInfo uriInfo, Policy policy) {
|
public Policy addHref(UriInfo uriInfo, Policy policy) {
|
||||||
@ -92,6 +94,24 @@ public class PolicyResource extends EntityResource<Policy, PolicyRepository> {
|
|||||||
// Load any existing rules from database, before loading seed data.
|
// Load any existing rules from database, before loading seed data.
|
||||||
policyEvaluator.load();
|
policyEvaluator.load();
|
||||||
dao.initSeedDataFromResources();
|
dao.initSeedDataFromResources();
|
||||||
|
initResourceDescriptors();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Initialize list of resources and the corresponding operations */
|
||||||
|
private void initResourceDescriptors() throws IOException {
|
||||||
|
List<String> jsonDataFiles = EntityUtil.getJsonDataResources(".*json/data/ResourceDescriptors.json$");
|
||||||
|
if (jsonDataFiles.size() != 1) {
|
||||||
|
LOG.warn("Invalid number of jsonDataFiles {}. Only one expected.", jsonDataFiles.size());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String jsonDataFile = jsonDataFiles.get(0);
|
||||||
|
try {
|
||||||
|
String json = IOUtil.toString(getClass().getClassLoader().getResourceAsStream(jsonDataFile));
|
||||||
|
List<ResourceDescriptor> resourceDetails = JsonUtils.readObjects(json, ResourceDescriptor.class);
|
||||||
|
ResourceRegistry.add(resourceDetails);
|
||||||
|
} catch (Exception e) {
|
||||||
|
LOG.warn("Failed to initialize the {} from file {}", entityType, jsonDataFile, e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class PolicyList extends ResultList<Policy> {
|
public static class PolicyList extends ResultList<Policy> {
|
||||||
@ -105,6 +125,17 @@ public class PolicyResource extends EntityResource<Policy, PolicyRepository> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class ResourceDescriptorList extends ResultList<ResourceDescriptor> {
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
ResourceDescriptorList() {
|
||||||
|
// Empty constructor needed for deserialization
|
||||||
|
}
|
||||||
|
|
||||||
|
public ResourceDescriptorList(List<ResourceDescriptor> data) {
|
||||||
|
super(data, null, null, data.size());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static final String FIELDS = "owner,location";
|
public static final String FIELDS = "owner,location";
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@ -283,16 +314,9 @@ public class PolicyResource extends EntityResource<Policy, PolicyRepository> {
|
|||||||
responseCode = "404",
|
responseCode = "404",
|
||||||
description = "Policy for instance {id} and version {version} is" + " " + "not found")
|
description = "Policy for instance {id} and version {version} is" + " " + "not found")
|
||||||
})
|
})
|
||||||
public List<String> listPolicyResources(@Context UriInfo uriInfo, @Context SecurityContext securityContext)
|
public ResultList<ResourceDescriptor> listPolicyResources(
|
||||||
throws IOException {
|
@Context UriInfo uriInfo, @Context SecurityContext securityContext) throws IOException {
|
||||||
if (RESOURCES.isEmpty()) {
|
return new ResourceDescriptorList(ResourceRegistry.listResourceDescriptors());
|
||||||
// Load set of resource types
|
|
||||||
RESOURCES.addAll(Entity.listEntities());
|
|
||||||
RESOURCES.add("lineage");
|
|
||||||
RESOURCES.add("feed");
|
|
||||||
Collections.sort(RESOURCES);
|
|
||||||
}
|
|
||||||
return RESOURCES;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@POST
|
@POST
|
||||||
|
|||||||
@ -15,6 +15,7 @@ package org.openmetadata.catalog.security.policyevaluator;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
@ -55,7 +56,7 @@ import org.openmetadata.catalog.util.JsonUtils;
|
|||||||
public class PolicyEvaluator {
|
public class PolicyEvaluator {
|
||||||
|
|
||||||
private PolicyRepository policyRepository;
|
private PolicyRepository policyRepository;
|
||||||
private final ConcurrentHashMap<UUID, Rules> policyToRules = new ConcurrentHashMap<>();
|
private final Map<UUID, Rules> policyToRules = new ConcurrentHashMap<>();
|
||||||
private final RulesEngine checkPermissionRulesEngine;
|
private final RulesEngine checkPermissionRulesEngine;
|
||||||
private final RulesEngine allowedOperationsRulesEngine;
|
private final RulesEngine allowedOperationsRulesEngine;
|
||||||
|
|
||||||
|
|||||||
@ -34,7 +34,7 @@ public class JsonPatchUtils {
|
|||||||
return MetadataOperation.EDIT_OWNER;
|
return MetadataOperation.EDIT_OWNER;
|
||||||
}
|
}
|
||||||
if (path.startsWith("/users")) { // Ability to update users within a team.
|
if (path.startsWith("/users")) { // Ability to update users within a team.
|
||||||
return MetadataOperation.TEAM_EDIT_USERS;
|
return MetadataOperation.EDIT_USERS;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,361 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"name" : "bot",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "chart",
|
||||||
|
"operations": [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"ViewUsage",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditTags",
|
||||||
|
"EditOwner",
|
||||||
|
"EditTier",
|
||||||
|
"EditCustomFields",
|
||||||
|
"EditLineage"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "dashboard",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"ViewUsage",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditTags",
|
||||||
|
"EditOwner",
|
||||||
|
"EditTier",
|
||||||
|
"EditCustomFields",
|
||||||
|
"EditLineage"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "dashboardService",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "database",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "databaseSchema",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "databaseService",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "glossary",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "glossaryTerm",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "ingestionPipeline",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "location",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "messagingService",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "metrics",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "mlmodel",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"ViewUsage",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "mlmodelService",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "pipeline",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields",
|
||||||
|
"EditLineage"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "pipelineService",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "policy",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "report",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "role",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "storageService",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "table",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"ViewUsage",
|
||||||
|
"ViewTests",
|
||||||
|
"ViewQueries",
|
||||||
|
"ViewDataProfile",
|
||||||
|
"ViewSampleData",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditTags",
|
||||||
|
"EditOwner",
|
||||||
|
"EditTier",
|
||||||
|
"EditCustomFields",
|
||||||
|
"EditTests",
|
||||||
|
"EditQueries",
|
||||||
|
"EditDataProfile",
|
||||||
|
"EditSampleData",
|
||||||
|
"EditLineage"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "tag",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "tagCategory",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "team",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields",
|
||||||
|
"EditUsers"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "topic",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "type",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "user",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "webhook",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditCustomFields"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "events",
|
||||||
|
"operations" : [
|
||||||
|
"ViewAll"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "feed",
|
||||||
|
"operations" : [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"$id": "https://open-metadata.org/schema/entity/data/policies/accessControl/resourceDescriptor.json",
|
||||||
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
|
"title": "ResourceDescriptor",
|
||||||
|
"description": "Resource descriptor",
|
||||||
|
"type": "object",
|
||||||
|
"javaType": "org.openmetadata.catalog.type.ResourceDescriptor",
|
||||||
|
"definitions": {
|
||||||
|
"operation": {
|
||||||
|
"javaType": "org.openmetadata.catalog.type.MetadataOperation",
|
||||||
|
"description": "This schema defines all possible operations on metadata of entities in OpenMetadata.",
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"Create",
|
||||||
|
"Delete",
|
||||||
|
"ViewAll",
|
||||||
|
"ViewUsage",
|
||||||
|
"ViewTests",
|
||||||
|
"ViewQueries",
|
||||||
|
"ViewDataProfile",
|
||||||
|
"ViewSampleData",
|
||||||
|
"EditAll",
|
||||||
|
"EditDescription",
|
||||||
|
"EditTags",
|
||||||
|
"EditOwner",
|
||||||
|
"EditTier",
|
||||||
|
"EditCustomFields",
|
||||||
|
"EditLineage",
|
||||||
|
"EditReviewers",
|
||||||
|
"EditTests",
|
||||||
|
"EditQueries",
|
||||||
|
"EditDataProfile",
|
||||||
|
"EditSampleData",
|
||||||
|
"EditUsers"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"description": "Name of the resource. For entity related resources, resource name is same as the entity name. Some resources such as lineage are not entities but are resources.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"operations": {
|
||||||
|
"description": "List of operations supported by the resource.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/operation"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -5,36 +5,6 @@
|
|||||||
"description": "Describes an Access Control Rule for OpenMetadata Metadata Operations. All non-null user (subject) and entity (object) attributes are evaluated with logical AND.",
|
"description": "Describes an Access Control Rule for OpenMetadata Metadata Operations. All non-null user (subject) and entity (object) attributes are evaluated with logical AND.",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"javaType": "org.openmetadata.catalog.entity.policies.accessControl.Rule",
|
"javaType": "org.openmetadata.catalog.entity.policies.accessControl.Rule",
|
||||||
"definitions": {
|
|
||||||
"operation": {
|
|
||||||
"javaType": "org.openmetadata.catalog.type.MetadataOperation",
|
|
||||||
"description": "This schema defines all possible operations on metadata of data entities.",
|
|
||||||
"type": "string",
|
|
||||||
"enum": [
|
|
||||||
"Create",
|
|
||||||
"Delete",
|
|
||||||
"ViewAll",
|
|
||||||
"ViewUsage",
|
|
||||||
"ViewTests",
|
|
||||||
"TableViewQueries",
|
|
||||||
"TableViewDataProfile",
|
|
||||||
"TableViewSampleData",
|
|
||||||
"EditAll",
|
|
||||||
"EditDescription",
|
|
||||||
"EditTags",
|
|
||||||
"EditOwner",
|
|
||||||
"EditTier",
|
|
||||||
"EditCustomFields",
|
|
||||||
"EditLineage",
|
|
||||||
"EditReviewers",
|
|
||||||
"EditTests",
|
|
||||||
"TableEditQueries",
|
|
||||||
"TableEditDataProfile",
|
|
||||||
"TableEditSampleData",
|
|
||||||
"TeamEditUsers"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"properties": {
|
"properties": {
|
||||||
"name": {
|
"name": {
|
||||||
"description": "Name for this Rule.",
|
"description": "Name for this Rule.",
|
||||||
@ -56,7 +26,7 @@
|
|||||||
},
|
},
|
||||||
"operation": {
|
"operation": {
|
||||||
"description": "Operation on the entity.",
|
"description": "Operation on the entity.",
|
||||||
"$ref": "#/definitions/operation",
|
"$ref": "resourceDescriptor.json#/definitions/operation",
|
||||||
"default": null
|
"default": null
|
||||||
},
|
},
|
||||||
"allow": {
|
"allow": {
|
||||||
|
|||||||
@ -65,7 +65,7 @@
|
|||||||
},
|
},
|
||||||
"queryTag": {
|
"queryTag": {
|
||||||
"title": "Query Tag",
|
"title": "Query Tag",
|
||||||
"description": "Session query tag used to monitor usage on snoflake. To use a query tag snowflake user should have enough privileges to alter the session.",
|
"description": "Session query tag used to monitor usage on snowflake. To use a query tag snowflake user should have enough privileges to alter the session.",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"privateKey": {
|
"privateKey": {
|
||||||
|
|||||||
@ -11,7 +11,7 @@
|
|||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"ordered": {
|
"ordered": {
|
||||||
"description": "Wether or not to considered the order of the list when performing the match",
|
"description": "Whether or not to considered the order of the list when performing the match",
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": false
|
"default": false
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"$id": "https://open-metadata.org/schema/entity/data/usageRequest.json",
|
"$id": "https://open-metadata.org/schema/entity/data/usageRequest.json",
|
||||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
"title": "Usage Request",
|
"title": "Usage Request",
|
||||||
"description": "This schema defines type of table usage request used to publish the usage count on a perticular date",
|
"description": "This schema defines type of table usage request used to publish the usage count on a particular date",
|
||||||
"javaType": "org.openmetadata.catalog.type.UsageRequest",
|
"javaType": "org.openmetadata.catalog.type.UsageRequest",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|||||||
@ -94,14 +94,14 @@ class PermissionsResourceTest extends CatalogApplicationTest {
|
|||||||
dataStewardPermissions.put(MetadataOperation.EDIT_OWNER, Boolean.TRUE);
|
dataStewardPermissions.put(MetadataOperation.EDIT_OWNER, Boolean.TRUE);
|
||||||
dataStewardPermissions.put(MetadataOperation.EDIT_TAGS, Boolean.TRUE);
|
dataStewardPermissions.put(MetadataOperation.EDIT_TAGS, Boolean.TRUE);
|
||||||
// put(MetadataOperation.DecryptTokens, Boolean.FALSE);
|
// put(MetadataOperation.DecryptTokens, Boolean.FALSE);
|
||||||
dataStewardPermissions.put(MetadataOperation.TEAM_EDIT_USERS, Boolean.FALSE);
|
dataStewardPermissions.put(MetadataOperation.EDIT_USERS, Boolean.FALSE);
|
||||||
|
|
||||||
dataConsumerPermissions.put(MetadataOperation.EDIT_DESCRIPTION, Boolean.TRUE);
|
dataConsumerPermissions.put(MetadataOperation.EDIT_DESCRIPTION, Boolean.TRUE);
|
||||||
dataConsumerPermissions.put(MetadataOperation.EDIT_LINEAGE, Boolean.FALSE);
|
dataConsumerPermissions.put(MetadataOperation.EDIT_LINEAGE, Boolean.FALSE);
|
||||||
dataConsumerPermissions.put(MetadataOperation.EDIT_OWNER, Boolean.TRUE);
|
dataConsumerPermissions.put(MetadataOperation.EDIT_OWNER, Boolean.TRUE);
|
||||||
dataConsumerPermissions.put(MetadataOperation.EDIT_TAGS, Boolean.TRUE);
|
dataConsumerPermissions.put(MetadataOperation.EDIT_TAGS, Boolean.TRUE);
|
||||||
// put(MetadataOperation.DecryptTokens, Boolean.FALSE);
|
// put(MetadataOperation.DecryptTokens, Boolean.FALSE);
|
||||||
dataConsumerPermissions.put(MetadataOperation.TEAM_EDIT_USERS, Boolean.FALSE);
|
dataConsumerPermissions.put(MetadataOperation.EDIT_USERS, Boolean.FALSE);
|
||||||
|
|
||||||
return Stream.of(
|
return Stream.of(
|
||||||
Arguments.of(TestUtils.ADMIN_USER_NAME, adminPermissions),
|
Arguments.of(TestUtils.ADMIN_USER_NAME, adminPermissions),
|
||||||
|
|||||||
@ -15,7 +15,7 @@ package org.openmetadata.catalog.resources.policies;
|
|||||||
|
|
||||||
import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
|
import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
import static org.openmetadata.catalog.util.TestUtils.ADMIN_AUTH_HEADERS;
|
import static org.openmetadata.catalog.util.TestUtils.ADMIN_AUTH_HEADERS;
|
||||||
import static org.openmetadata.catalog.util.TestUtils.UpdateType.MINOR_UPDATE;
|
import static org.openmetadata.catalog.util.TestUtils.UpdateType.MINOR_UPDATE;
|
||||||
import static org.openmetadata.catalog.util.TestUtils.assertListNotNull;
|
import static org.openmetadata.catalog.util.TestUtils.assertListNotNull;
|
||||||
@ -47,11 +47,13 @@ import org.openmetadata.catalog.exception.CatalogExceptionMessage;
|
|||||||
import org.openmetadata.catalog.resources.EntityResourceTest;
|
import org.openmetadata.catalog.resources.EntityResourceTest;
|
||||||
import org.openmetadata.catalog.resources.locations.LocationResourceTest;
|
import org.openmetadata.catalog.resources.locations.LocationResourceTest;
|
||||||
import org.openmetadata.catalog.resources.policies.PolicyResource.PolicyList;
|
import org.openmetadata.catalog.resources.policies.PolicyResource.PolicyList;
|
||||||
|
import org.openmetadata.catalog.resources.policies.PolicyResource.ResourceDescriptorList;
|
||||||
import org.openmetadata.catalog.type.ChangeDescription;
|
import org.openmetadata.catalog.type.ChangeDescription;
|
||||||
import org.openmetadata.catalog.type.EntityReference;
|
import org.openmetadata.catalog.type.EntityReference;
|
||||||
import org.openmetadata.catalog.type.FieldChange;
|
import org.openmetadata.catalog.type.FieldChange;
|
||||||
import org.openmetadata.catalog.type.MetadataOperation;
|
import org.openmetadata.catalog.type.MetadataOperation;
|
||||||
import org.openmetadata.catalog.type.PolicyType;
|
import org.openmetadata.catalog.type.PolicyType;
|
||||||
|
import org.openmetadata.catalog.type.ResourceDescriptor;
|
||||||
import org.openmetadata.catalog.util.EntityUtil;
|
import org.openmetadata.catalog.util.EntityUtil;
|
||||||
import org.openmetadata.catalog.util.JsonUtils;
|
import org.openmetadata.catalog.util.JsonUtils;
|
||||||
import org.openmetadata.catalog.util.PolicyUtils;
|
import org.openmetadata.catalog.util.PolicyUtils;
|
||||||
@ -189,10 +191,17 @@ public class PolicyResourceTest extends EntityResourceTest<Policy, CreatePolicy>
|
|||||||
@Test
|
@Test
|
||||||
void get_policyResources() throws HttpResponseException {
|
void get_policyResources() throws HttpResponseException {
|
||||||
// Get list of policy resources and make sure it has all the entities and other resources
|
// Get list of policy resources and make sure it has all the entities and other resources
|
||||||
List<String> resources = getPolicyResources(ADMIN_AUTH_HEADERS);
|
ResourceDescriptorList actualResourceDescriptors = getPolicyResources(ADMIN_AUTH_HEADERS);
|
||||||
List<String> entities = Entity.listEntities();
|
assertNotNull(actualResourceDescriptors.getData());
|
||||||
assertTrue(resources.containsAll(entities));
|
System.out.println(actualResourceDescriptors.getData());
|
||||||
assertTrue(resources.contains("lineage"));
|
|
||||||
|
// Ensure all entities are captured in resource descriptor list
|
||||||
|
List<String> entities = Entity.getEntityList();
|
||||||
|
for (String entity : entities) {
|
||||||
|
ResourceDescriptor resourceDescriptor =
|
||||||
|
actualResourceDescriptors.getData().stream().filter(rd -> rd.getName().equals(entity)).findFirst().get();
|
||||||
|
assertNotNull(resourceDescriptor);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -231,8 +240,8 @@ public class PolicyResourceTest extends EntityResourceTest<Policy, CreatePolicy>
|
|||||||
return TestUtils.post(getResource("locations"), createLocation, Location.class, ADMIN_AUTH_HEADERS);
|
return TestUtils.post(getResource("locations"), createLocation, Location.class, ADMIN_AUTH_HEADERS);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final List<String> getPolicyResources(Map<String, String> authHeaders) throws HttpResponseException {
|
public final ResourceDescriptorList getPolicyResources(Map<String, String> authHeaders) throws HttpResponseException {
|
||||||
WebTarget target = getResource(collectionName + "/resources");
|
WebTarget target = getResource(collectionName + "/resources");
|
||||||
return (List<String>) TestUtils.get(target, List.class, authHeaders);
|
return TestUtils.get(target, ResourceDescriptorList.class, authHeaders);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -215,7 +215,7 @@ public class TeamResourceTest extends EntityResourceTest<Team, CreateTeam> {
|
|||||||
patchEntity(
|
patchEntity(
|
||||||
team.getId(), originalJson, team, SecurityUtil.authHeaders(randomUserName + "@open-metadata.org")),
|
team.getId(), originalJson, team, SecurityUtil.authHeaders(randomUserName + "@open-metadata.org")),
|
||||||
FORBIDDEN,
|
FORBIDDEN,
|
||||||
CatalogExceptionMessage.noPermission(randomUserName, "TeamEditUsers"));
|
CatalogExceptionMessage.noPermission(randomUserName, "EditUsers"));
|
||||||
|
|
||||||
// Ensure user with UpdateTeam permission can add users to a team.
|
// Ensure user with UpdateTeam permission can add users to a team.
|
||||||
User teamManagerUser = createTeamManager(test);
|
User teamManagerUser = createTeamManager(test);
|
||||||
@ -459,10 +459,7 @@ public class TeamResourceTest extends EntityResourceTest<Team, CreateTeam> {
|
|||||||
private User createTeamManager(TestInfo testInfo) throws HttpResponseException {
|
private User createTeamManager(TestInfo testInfo) throws HttpResponseException {
|
||||||
// Create a rule that can update team
|
// Create a rule that can update team
|
||||||
Rule rule =
|
Rule rule =
|
||||||
new Rule()
|
new Rule().withName("TeamManagerPolicy-UpdateTeam").withAllow(true).withOperation(MetadataOperation.EDIT_USERS);
|
||||||
.withName("TeamManagerPolicy-UpdateTeam")
|
|
||||||
.withAllow(true)
|
|
||||||
.withOperation(MetadataOperation.TEAM_EDIT_USERS);
|
|
||||||
|
|
||||||
// Create a policy with the rule
|
// Create a policy with the rule
|
||||||
PolicyResourceTest policyResourceTest = new PolicyResourceTest();
|
PolicyResourceTest policyResourceTest = new PolicyResourceTest();
|
||||||
|
|||||||
@ -7,5 +7,5 @@ Provides metadata version information.
|
|||||||
|
|
||||||
from incremental import Version
|
from incremental import Version
|
||||||
|
|
||||||
__version__ = Version("metadata", 0, 12, 0, dev=2)
|
__version__ = Version("metadata", 0, 12, 0, dev=3)
|
||||||
__all__ = ["__version__"]
|
__all__ = ["__version__"]
|
||||||
|
|||||||
@ -24,7 +24,6 @@ from metadata.cli.backup import run_backup
|
|||||||
from metadata.cli.docker import run_docker
|
from metadata.cli.docker import run_docker
|
||||||
from metadata.cli.ingest import run_ingest
|
from metadata.cli.ingest import run_ingest
|
||||||
from metadata.config.common import load_config_file
|
from metadata.config.common import load_config_file
|
||||||
from metadata.ingestion.api.workflow import Workflow
|
|
||||||
from metadata.orm_profiler.api.workflow import ProfilerWorkflow
|
from metadata.orm_profiler.api.workflow import ProfilerWorkflow
|
||||||
from metadata.utils.logger import cli_logger, set_loggers_level
|
from metadata.utils.logger import cli_logger, set_loggers_level
|
||||||
|
|
||||||
|
|||||||
@ -19,14 +19,6 @@ from metadata.config.workflow import get_source_dir
|
|||||||
from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import (
|
from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import (
|
||||||
OpenMetadataConnection,
|
OpenMetadataConnection,
|
||||||
)
|
)
|
||||||
from metadata.generated.schema.entity.services.dashboardService import (
|
|
||||||
DashboardConnection,
|
|
||||||
)
|
|
||||||
from metadata.generated.schema.entity.services.databaseService import DatabaseConnection
|
|
||||||
from metadata.generated.schema.entity.services.messagingService import (
|
|
||||||
MessagingConnection,
|
|
||||||
)
|
|
||||||
from metadata.generated.schema.entity.services.metadataService import MetadataConnection
|
|
||||||
from metadata.generated.schema.metadataIngestion.workflow import (
|
from metadata.generated.schema.metadataIngestion.workflow import (
|
||||||
OpenMetadataWorkflowConfig,
|
OpenMetadataWorkflowConfig,
|
||||||
)
|
)
|
||||||
|
|||||||
@ -14,7 +14,6 @@ from typing import List, Optional
|
|||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
from metadata.generated.schema.entity.data.chart import Chart
|
|
||||||
from metadata.generated.schema.entity.data.mlmodel import (
|
from metadata.generated.schema.entity.data.mlmodel import (
|
||||||
MlFeature,
|
MlFeature,
|
||||||
MlHyperParameter,
|
MlHyperParameter,
|
||||||
|
|||||||
@ -19,7 +19,6 @@ from typing import Any, Dict, Generic, Optional, Type, TypeVar, Union
|
|||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
|
from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
|
||||||
from metadata.generated.schema.entity.data.table import Table
|
|
||||||
from metadata.ingestion.ometa.client import REST, APIError
|
from metadata.ingestion.ometa.client import REST, APIError
|
||||||
from metadata.ingestion.ometa.utils import get_entity_type, ometa_logger
|
from metadata.ingestion.ometa.utils import get_entity_type, ometa_logger
|
||||||
|
|
||||||
|
|||||||
@ -20,13 +20,12 @@ from elasticsearch import Elasticsearch
|
|||||||
from elasticsearch.connection import create_ssl_context
|
from elasticsearch.connection import create_ssl_context
|
||||||
|
|
||||||
from metadata.config.common import ConfigModel
|
from metadata.config.common import ConfigModel
|
||||||
from metadata.generated.schema.entity.data.chart import Chart
|
|
||||||
from metadata.generated.schema.entity.data.dashboard import Dashboard
|
from metadata.generated.schema.entity.data.dashboard import Dashboard
|
||||||
from metadata.generated.schema.entity.data.database import Database
|
from metadata.generated.schema.entity.data.database import Database
|
||||||
from metadata.generated.schema.entity.data.databaseSchema import DatabaseSchema
|
from metadata.generated.schema.entity.data.databaseSchema import DatabaseSchema
|
||||||
from metadata.generated.schema.entity.data.glossaryTerm import GlossaryTerm
|
from metadata.generated.schema.entity.data.glossaryTerm import GlossaryTerm
|
||||||
from metadata.generated.schema.entity.data.mlmodel import MlModel
|
from metadata.generated.schema.entity.data.mlmodel import MlModel
|
||||||
from metadata.generated.schema.entity.data.pipeline import Pipeline, Task
|
from metadata.generated.schema.entity.data.pipeline import Pipeline
|
||||||
from metadata.generated.schema.entity.data.table import Column, Table
|
from metadata.generated.schema.entity.data.table import Column, Table
|
||||||
from metadata.generated.schema.entity.data.topic import Topic
|
from metadata.generated.schema.entity.data.topic import Topic
|
||||||
from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import (
|
from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import (
|
||||||
|
|||||||
@ -41,17 +41,12 @@ from metadata.generated.schema.metadataIngestion.workflow import (
|
|||||||
from metadata.generated.schema.type.entityLineage import EntitiesEdge
|
from metadata.generated.schema.type.entityLineage import EntitiesEdge
|
||||||
from metadata.generated.schema.type.entityReference import EntityReference
|
from metadata.generated.schema.type.entityReference import EntityReference
|
||||||
from metadata.ingestion.api.source import InvalidSourceException
|
from metadata.ingestion.api.source import InvalidSourceException
|
||||||
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
||||||
from metadata.ingestion.source.dashboard.dashboard_service import DashboardServiceSource
|
from metadata.ingestion.source.dashboard.dashboard_service import DashboardServiceSource
|
||||||
from metadata.ingestion.source.database.common_db_source import SQLSourceStatus
|
from metadata.ingestion.source.database.common_db_source import SQLSourceStatus
|
||||||
from metadata.utils import fqn
|
from metadata.utils import fqn
|
||||||
from metadata.utils.connections import get_connection
|
from metadata.utils.connections import get_connection
|
||||||
from metadata.utils.filters import filter_by_chart
|
from metadata.utils.filters import filter_by_chart
|
||||||
from metadata.utils.helpers import (
|
from metadata.utils.helpers import get_standard_chart_type, replace_special_with
|
||||||
get_chart_entities_from_id,
|
|
||||||
get_standard_chart_type,
|
|
||||||
replace_special_with,
|
|
||||||
)
|
|
||||||
from metadata.utils.logger import ingestion_logger
|
from metadata.utils.logger import ingestion_logger
|
||||||
from metadata.utils.sql_lineage import search_table_entities
|
from metadata.utils.sql_lineage import search_table_entities
|
||||||
|
|
||||||
|
|||||||
@ -42,7 +42,7 @@ from metadata.generated.schema.type.entityReference import EntityReference
|
|||||||
from metadata.ingestion.api.source import InvalidSourceException, SourceStatus
|
from metadata.ingestion.api.source import InvalidSourceException, SourceStatus
|
||||||
from metadata.ingestion.source.dashboard.dashboard_service import DashboardServiceSource
|
from metadata.ingestion.source.dashboard.dashboard_service import DashboardServiceSource
|
||||||
from metadata.utils import fqn
|
from metadata.utils import fqn
|
||||||
from metadata.utils.helpers import get_chart_entities_from_id, get_standard_chart_type
|
from metadata.utils.helpers import get_standard_chart_type
|
||||||
from metadata.utils.logger import ingestion_logger
|
from metadata.utils.logger import ingestion_logger
|
||||||
|
|
||||||
logger = ingestion_logger()
|
logger = ingestion_logger()
|
||||||
|
|||||||
@ -40,7 +40,6 @@ from metadata.generated.schema.entity.services.connections.metadata.openMetadata
|
|||||||
OpenMetadataConnection,
|
OpenMetadataConnection,
|
||||||
)
|
)
|
||||||
from metadata.generated.schema.entity.tags.tagCategory import Tag
|
from metadata.generated.schema.entity.tags.tagCategory import Tag
|
||||||
from metadata.generated.schema.entity.teams.user import User
|
|
||||||
from metadata.generated.schema.metadataIngestion.workflow import (
|
from metadata.generated.schema.metadataIngestion.workflow import (
|
||||||
Source as WorkflowSource,
|
Source as WorkflowSource,
|
||||||
)
|
)
|
||||||
@ -52,7 +51,7 @@ from metadata.ingestion.models.ometa_tag_category import OMetaTagAndCategory
|
|||||||
from metadata.ingestion.source.dashboard.dashboard_service import DashboardServiceSource
|
from metadata.ingestion.source.dashboard.dashboard_service import DashboardServiceSource
|
||||||
from metadata.utils import fqn
|
from metadata.utils import fqn
|
||||||
from metadata.utils.filters import filter_by_chart
|
from metadata.utils.filters import filter_by_chart
|
||||||
from metadata.utils.helpers import get_chart_entities_from_id, get_standard_chart_type
|
from metadata.utils.helpers import get_standard_chart_type
|
||||||
from metadata.utils.logger import ingestion_logger
|
from metadata.utils.logger import ingestion_logger
|
||||||
|
|
||||||
logger = ingestion_logger()
|
logger = ingestion_logger()
|
||||||
|
|||||||
@ -33,7 +33,6 @@ from metadata.generated.schema.entity.data.table import Table, TableType
|
|||||||
from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import (
|
from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import (
|
||||||
OpenMetadataConnection,
|
OpenMetadataConnection,
|
||||||
)
|
)
|
||||||
from metadata.generated.schema.entity.tags.tagCategory import Tag
|
|
||||||
from metadata.generated.schema.metadataIngestion.databaseServiceMetadataPipeline import (
|
from metadata.generated.schema.metadataIngestion.databaseServiceMetadataPipeline import (
|
||||||
DatabaseServiceMetadataPipeline,
|
DatabaseServiceMetadataPipeline,
|
||||||
)
|
)
|
||||||
@ -41,12 +40,6 @@ from metadata.generated.schema.metadataIngestion.workflow import (
|
|||||||
Source as WorkflowSource,
|
Source as WorkflowSource,
|
||||||
)
|
)
|
||||||
from metadata.generated.schema.type.entityReference import EntityReference
|
from metadata.generated.schema.type.entityReference import EntityReference
|
||||||
from metadata.generated.schema.type.tagLabel import (
|
|
||||||
LabelType,
|
|
||||||
State,
|
|
||||||
TagLabel,
|
|
||||||
TagSource,
|
|
||||||
)
|
|
||||||
from metadata.ingestion.models.ometa_tag_category import OMetaTagAndCategory
|
from metadata.ingestion.models.ometa_tag_category import OMetaTagAndCategory
|
||||||
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
||||||
from metadata.ingestion.source.database.database_service import (
|
from metadata.ingestion.source.database.database_service import (
|
||||||
@ -57,7 +50,7 @@ from metadata.ingestion.source.database.sql_column_handler import SqlColumnHandl
|
|||||||
from metadata.ingestion.source.database.sqlalchemy_source import SqlAlchemySource
|
from metadata.ingestion.source.database.sqlalchemy_source import SqlAlchemySource
|
||||||
from metadata.utils import fqn
|
from metadata.utils import fqn
|
||||||
from metadata.utils.connections import get_connection, test_connection
|
from metadata.utils.connections import get_connection, test_connection
|
||||||
from metadata.utils.filters import filter_by_database, filter_by_schema, filter_by_table
|
from metadata.utils.filters import filter_by_schema, filter_by_table
|
||||||
from metadata.utils.logger import ingestion_logger
|
from metadata.utils.logger import ingestion_logger
|
||||||
from metadata.utils.sql_lineage import (
|
from metadata.utils.sql_lineage import (
|
||||||
get_lineage_by_query,
|
get_lineage_by_query,
|
||||||
|
|||||||
@ -44,7 +44,7 @@ from metadata.generated.schema.metadataIngestion.workflow import (
|
|||||||
Source as WorkflowSource,
|
Source as WorkflowSource,
|
||||||
)
|
)
|
||||||
from metadata.generated.schema.type import basic
|
from metadata.generated.schema.type import basic
|
||||||
from metadata.generated.schema.type.basic import EntityName, FullyQualifiedEntityName
|
from metadata.generated.schema.type.basic import FullyQualifiedEntityName
|
||||||
from metadata.generated.schema.type.tagLabel import (
|
from metadata.generated.schema.type.tagLabel import (
|
||||||
LabelType,
|
LabelType,
|
||||||
State,
|
State,
|
||||||
|
|||||||
@ -43,7 +43,6 @@ from metadata.generated.schema.metadataIngestion.workflow import (
|
|||||||
Source as WorkflowSource,
|
Source as WorkflowSource,
|
||||||
)
|
)
|
||||||
from metadata.generated.schema.type.entityReference import EntityReference
|
from metadata.generated.schema.type.entityReference import EntityReference
|
||||||
from metadata.ingestion.api.common import Entity
|
|
||||||
from metadata.ingestion.api.source import InvalidSourceException, SourceStatus
|
from metadata.ingestion.api.source import InvalidSourceException, SourceStatus
|
||||||
from metadata.ingestion.models.ometa_tag_category import OMetaTagAndCategory
|
from metadata.ingestion.models.ometa_tag_category import OMetaTagAndCategory
|
||||||
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
||||||
|
|||||||
@ -16,7 +16,6 @@ from typing import Iterable, List, Optional
|
|||||||
from metadata.generated.schema.entity.data.database import Database
|
from metadata.generated.schema.entity.data.database import Database
|
||||||
from metadata.generated.schema.entity.data.databaseSchema import DatabaseSchema
|
from metadata.generated.schema.entity.data.databaseSchema import DatabaseSchema
|
||||||
from metadata.generated.schema.entity.data.location import Location, LocationType
|
from metadata.generated.schema.entity.data.location import Location, LocationType
|
||||||
from metadata.generated.schema.entity.data.pipeline import Task
|
|
||||||
from metadata.generated.schema.entity.data.table import Column, Table, TableType
|
from metadata.generated.schema.entity.data.table import Column, Table, TableType
|
||||||
from metadata.generated.schema.entity.services.connections.database.glueConnection import (
|
from metadata.generated.schema.entity.services.connections.database.glueConnection import (
|
||||||
GlueConnection,
|
GlueConnection,
|
||||||
|
|||||||
@ -25,7 +25,6 @@ from metadata.generated.schema.metadataIngestion.workflow import (
|
|||||||
)
|
)
|
||||||
from metadata.ingestion.api.source import InvalidSourceException
|
from metadata.ingestion.api.source import InvalidSourceException
|
||||||
from metadata.ingestion.source.database.common_db_source import CommonDbSourceService
|
from metadata.ingestion.source.database.common_db_source import CommonDbSourceService
|
||||||
from metadata.utils.connections import get_connection
|
|
||||||
from metadata.utils.filters import filter_by_database
|
from metadata.utils.filters import filter_by_database
|
||||||
from metadata.utils.logger import ingestion_logger
|
from metadata.utils.logger import ingestion_logger
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,6 @@
|
|||||||
|
|
||||||
from sqlalchemy.engine.reflection import Inspector
|
from sqlalchemy.engine.reflection import Inspector
|
||||||
|
|
||||||
from metadata.generated.schema.entity.data.database import Database
|
|
||||||
from metadata.generated.schema.entity.services.connections.database.oracleConnection import (
|
from metadata.generated.schema.entity.services.connections.database.oracleConnection import (
|
||||||
OracleConnection,
|
OracleConnection,
|
||||||
)
|
)
|
||||||
@ -23,7 +22,6 @@ from metadata.generated.schema.entity.services.connections.metadata.openMetadata
|
|||||||
from metadata.generated.schema.metadataIngestion.workflow import (
|
from metadata.generated.schema.metadataIngestion.workflow import (
|
||||||
Source as WorkflowSource,
|
Source as WorkflowSource,
|
||||||
)
|
)
|
||||||
from metadata.generated.schema.type.entityReference import EntityReference
|
|
||||||
from metadata.ingestion.api.source import InvalidSourceException
|
from metadata.ingestion.api.source import InvalidSourceException
|
||||||
from metadata.ingestion.source.database.common_db_source import CommonDbSourceService
|
from metadata.ingestion.source.database.common_db_source import CommonDbSourceService
|
||||||
|
|
||||||
|
|||||||
@ -15,7 +15,6 @@ from typing import Iterable
|
|||||||
from sqlalchemy.engine.reflection import Inspector
|
from sqlalchemy.engine.reflection import Inspector
|
||||||
from sqlalchemy.inspection import inspect
|
from sqlalchemy.inspection import inspect
|
||||||
|
|
||||||
from metadata.generated.schema.entity.data.database import Database
|
|
||||||
from metadata.generated.schema.entity.services.connections.database.postgresConnection import (
|
from metadata.generated.schema.entity.services.connections.database.postgresConnection import (
|
||||||
PostgresConnection,
|
PostgresConnection,
|
||||||
)
|
)
|
||||||
@ -27,10 +26,8 @@ from metadata.generated.schema.entity.services.connections.metadata.openMetadata
|
|||||||
from metadata.generated.schema.metadataIngestion.workflow import (
|
from metadata.generated.schema.metadataIngestion.workflow import (
|
||||||
Source as WorkflowSource,
|
Source as WorkflowSource,
|
||||||
)
|
)
|
||||||
from metadata.generated.schema.type.entityReference import EntityReference
|
from metadata.ingestion.api.source import InvalidSourceException
|
||||||
from metadata.ingestion.api.source import InvalidSourceException, SourceStatus
|
|
||||||
from metadata.ingestion.source.database.common_db_source import CommonDbSourceService
|
from metadata.ingestion.source.database.common_db_source import CommonDbSourceService
|
||||||
from metadata.utils.connections import get_connection
|
|
||||||
from metadata.utils.filters import filter_by_database
|
from metadata.utils.filters import filter_by_database
|
||||||
from metadata.utils.logger import ingestion_logger
|
from metadata.utils.logger import ingestion_logger
|
||||||
|
|
||||||
|
|||||||
@ -18,9 +18,6 @@ from typing import Iterator, Union
|
|||||||
from metadata.generated.schema.entity.services.connections.database.redshiftConnection import (
|
from metadata.generated.schema.entity.services.connections.database.redshiftConnection import (
|
||||||
RedshiftConnection,
|
RedshiftConnection,
|
||||||
)
|
)
|
||||||
from metadata.generated.schema.entity.services.databaseService import (
|
|
||||||
DatabaseServiceType,
|
|
||||||
)
|
|
||||||
from metadata.generated.schema.metadataIngestion.workflow import (
|
from metadata.generated.schema.metadataIngestion.workflow import (
|
||||||
Source as WorkflowSource,
|
Source as WorkflowSource,
|
||||||
)
|
)
|
||||||
|
|||||||
@ -26,7 +26,6 @@ from metadata.generated.schema.entity.services.databaseService import (
|
|||||||
from metadata.generated.schema.metadataIngestion.workflow import (
|
from metadata.generated.schema.metadataIngestion.workflow import (
|
||||||
Source as WorkflowSource,
|
Source as WorkflowSource,
|
||||||
)
|
)
|
||||||
from metadata.generated.schema.metadataIngestion.workflow import WorkflowConfig
|
|
||||||
from metadata.generated.schema.type.tableQuery import TableQuery
|
from metadata.generated.schema.type.tableQuery import TableQuery
|
||||||
from metadata.ingestion.api.source import InvalidSourceException
|
from metadata.ingestion.api.source import InvalidSourceException
|
||||||
|
|
||||||
|
|||||||
@ -17,14 +17,13 @@ from typing import List, Optional, Set, Tuple
|
|||||||
from sqlalchemy.engine import Engine
|
from sqlalchemy.engine import Engine
|
||||||
from sqlalchemy.engine.reflection import Inspector
|
from sqlalchemy.engine.reflection import Inspector
|
||||||
|
|
||||||
from metadata.generated.schema.entity.data.table import Column, DataModel, Table
|
from metadata.generated.schema.entity.data.table import Column, DataModel
|
||||||
from metadata.generated.schema.metadataIngestion.databaseServiceMetadataPipeline import (
|
from metadata.generated.schema.metadataIngestion.databaseServiceMetadataPipeline import (
|
||||||
DatabaseServiceMetadataPipeline,
|
DatabaseServiceMetadataPipeline,
|
||||||
)
|
)
|
||||||
from metadata.generated.schema.metadataIngestion.workflow import (
|
from metadata.generated.schema.metadataIngestion.workflow import (
|
||||||
Source as WorkflowSource,
|
Source as WorkflowSource,
|
||||||
)
|
)
|
||||||
from metadata.generated.schema.type.tagLabel import TagLabel
|
|
||||||
from metadata.ingestion.models.topology import TopologyContext
|
from metadata.ingestion.models.topology import TopologyContext
|
||||||
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
||||||
from metadata.ingestion.source.database.database_service import SQLSourceStatus
|
from metadata.ingestion.source.database.database_service import SQLSourceStatus
|
||||||
|
|||||||
@ -18,13 +18,8 @@ from typing import Any, Iterable, List, Optional
|
|||||||
|
|
||||||
from confluent_kafka.admin import AdminClient, ConfigResource
|
from confluent_kafka.admin import AdminClient, ConfigResource
|
||||||
|
|
||||||
from metadata.generated.schema.api.data.createPipeline import CreatePipelineRequest
|
|
||||||
from metadata.generated.schema.api.data.createTopic import CreateTopicRequest
|
from metadata.generated.schema.api.data.createTopic import CreateTopicRequest
|
||||||
from metadata.generated.schema.entity.data.topic import (
|
from metadata.generated.schema.entity.data.topic import Topic
|
||||||
SchemaType,
|
|
||||||
Topic,
|
|
||||||
TopicSampleData,
|
|
||||||
)
|
|
||||||
from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import (
|
from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import (
|
||||||
OpenMetadataConnection,
|
OpenMetadataConnection,
|
||||||
)
|
)
|
||||||
@ -38,7 +33,7 @@ from metadata.generated.schema.metadataIngestion.messagingServiceMetadataPipelin
|
|||||||
from metadata.generated.schema.metadataIngestion.workflow import (
|
from metadata.generated.schema.metadataIngestion.workflow import (
|
||||||
Source as WorkflowSource,
|
Source as WorkflowSource,
|
||||||
)
|
)
|
||||||
from metadata.ingestion.api.source import InvalidSourceException, Source, SourceStatus
|
from metadata.ingestion.api.source import Source, SourceStatus
|
||||||
from metadata.ingestion.api.topology_runner import TopologyRunnerMixin
|
from metadata.ingestion.api.topology_runner import TopologyRunnerMixin
|
||||||
from metadata.ingestion.models.topology import (
|
from metadata.ingestion.models.topology import (
|
||||||
NodeStage,
|
NodeStage,
|
||||||
|
|||||||
@ -50,15 +50,10 @@ from metadata.ingestion.api.source import InvalidSourceException, Source, Source
|
|||||||
from metadata.ingestion.models.ometa_table_db import OMetaDatabaseAndTable
|
from metadata.ingestion.models.ometa_table_db import OMetaDatabaseAndTable
|
||||||
from metadata.ingestion.models.ometa_tag_category import OMetaTagAndCategory
|
from metadata.ingestion.models.ometa_tag_category import OMetaTagAndCategory
|
||||||
from metadata.ingestion.models.user import OMetaUserProfile
|
from metadata.ingestion.models.user import OMetaUserProfile
|
||||||
from metadata.ingestion.ometa.client import APIError
|
|
||||||
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
||||||
from metadata.utils import fqn
|
from metadata.utils import fqn
|
||||||
from metadata.utils.column_type_parser import ColumnTypeParser
|
from metadata.utils.column_type_parser import ColumnTypeParser
|
||||||
from metadata.utils.helpers import (
|
from metadata.utils.helpers import get_chart_entities_from_id, get_standard_chart_type
|
||||||
get_chart_entities_from_id,
|
|
||||||
get_dashboard_service_or_create,
|
|
||||||
get_standard_chart_type,
|
|
||||||
)
|
|
||||||
from metadata.utils.logger import ingestion_logger
|
from metadata.utils.logger import ingestion_logger
|
||||||
from metadata.utils.neo4j_helper import Neo4JConfig, Neo4jHelper
|
from metadata.utils.neo4j_helper import Neo4JConfig, Neo4jHelper
|
||||||
from metadata.utils.sql_queries import (
|
from metadata.utils.sql_queries import (
|
||||||
|
|||||||
@ -8,12 +8,8 @@ from typing import Any, Dict, Iterable, List
|
|||||||
import yaml
|
import yaml
|
||||||
from importlib_metadata import SelectableGroups
|
from importlib_metadata import SelectableGroups
|
||||||
|
|
||||||
from metadata.generated.schema.api.data.createDatabase import CreateDatabaseRequest
|
|
||||||
from metadata.generated.schema.api.data.createTopic import CreateTopicRequest
|
from metadata.generated.schema.api.data.createTopic import CreateTopicRequest
|
||||||
from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
|
from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
|
||||||
from metadata.generated.schema.api.services.createDatabaseService import (
|
|
||||||
CreateDatabaseServiceRequest,
|
|
||||||
)
|
|
||||||
from metadata.generated.schema.entity.data.database import Database
|
from metadata.generated.schema.entity.data.database import Database
|
||||||
from metadata.generated.schema.entity.data.databaseSchema import DatabaseSchema
|
from metadata.generated.schema.entity.data.databaseSchema import DatabaseSchema
|
||||||
from metadata.generated.schema.entity.data.pipeline import Pipeline
|
from metadata.generated.schema.entity.data.pipeline import Pipeline
|
||||||
@ -24,12 +20,8 @@ from metadata.generated.schema.entity.services.connections.metadata.atlasConnect
|
|||||||
from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import (
|
from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import (
|
||||||
OpenMetadataConnection,
|
OpenMetadataConnection,
|
||||||
)
|
)
|
||||||
from metadata.generated.schema.entity.services.databaseService import (
|
from metadata.generated.schema.entity.services.databaseService import DatabaseService
|
||||||
DatabaseService,
|
|
||||||
DatabaseServiceType,
|
|
||||||
)
|
|
||||||
from metadata.generated.schema.entity.services.messagingService import MessagingService
|
from metadata.generated.schema.entity.services.messagingService import MessagingService
|
||||||
from metadata.generated.schema.entity.services.metadataService import MetadataService
|
|
||||||
from metadata.generated.schema.metadataIngestion.workflow import (
|
from metadata.generated.schema.metadataIngestion.workflow import (
|
||||||
Source as WorkflowSource,
|
Source as WorkflowSource,
|
||||||
)
|
)
|
||||||
|
|||||||
@ -17,7 +17,6 @@ from metadata.generated.schema.entity.data.dashboard import Dashboard
|
|||||||
from metadata.generated.schema.entity.data.glossary import Glossary
|
from metadata.generated.schema.entity.data.glossary import Glossary
|
||||||
from metadata.generated.schema.entity.data.glossaryTerm import GlossaryTerm
|
from metadata.generated.schema.entity.data.glossaryTerm import GlossaryTerm
|
||||||
from metadata.generated.schema.entity.data.pipeline import Pipeline
|
from metadata.generated.schema.entity.data.pipeline import Pipeline
|
||||||
from metadata.generated.schema.entity.data.table import Table
|
|
||||||
from metadata.generated.schema.entity.data.topic import Topic
|
from metadata.generated.schema.entity.data.topic import Topic
|
||||||
from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import (
|
from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import (
|
||||||
OpenMetadataConnection,
|
OpenMetadataConnection,
|
||||||
|
|||||||
@ -24,7 +24,6 @@ from sqlalchemy.orm import Session
|
|||||||
from metadata.generated.schema.api.data.createPipeline import CreatePipelineRequest
|
from metadata.generated.schema.api.data.createPipeline import CreatePipelineRequest
|
||||||
from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
|
from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
|
||||||
from metadata.generated.schema.entity.data.pipeline import (
|
from metadata.generated.schema.entity.data.pipeline import (
|
||||||
Pipeline,
|
|
||||||
PipelineStatus,
|
PipelineStatus,
|
||||||
StatusType,
|
StatusType,
|
||||||
Task,
|
Task,
|
||||||
|
|||||||
@ -17,7 +17,6 @@ from metadata.config.common import ConfigModel
|
|||||||
from metadata.generated.schema.entity.data.glossary import Glossary
|
from metadata.generated.schema.entity.data.glossary import Glossary
|
||||||
from metadata.generated.schema.entity.data.glossaryTerm import GlossaryTerm
|
from metadata.generated.schema.entity.data.glossaryTerm import GlossaryTerm
|
||||||
from metadata.generated.schema.entity.data.pipeline import Pipeline
|
from metadata.generated.schema.entity.data.pipeline import Pipeline
|
||||||
from metadata.generated.schema.entity.data.table import Table
|
|
||||||
from metadata.generated.schema.entity.data.topic import Topic
|
from metadata.generated.schema.entity.data.topic import Topic
|
||||||
from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import (
|
from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import (
|
||||||
OpenMetadataConnection,
|
OpenMetadataConnection,
|
||||||
|
|||||||
@ -38,7 +38,6 @@ from metadata.ingestion.api.processor import Processor, ProcessorStatus
|
|||||||
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
||||||
from metadata.orm_profiler.api.models import ProfilerProcessorConfig, ProfilerResponse
|
from metadata.orm_profiler.api.models import ProfilerProcessorConfig, ProfilerResponse
|
||||||
from metadata.orm_profiler.interfaces.interface_protocol import InterfaceProtocol
|
from metadata.orm_profiler.interfaces.interface_protocol import InterfaceProtocol
|
||||||
from metadata.orm_profiler.interfaces.sqa_profiler_interface import SQAProfilerInterface
|
|
||||||
from metadata.orm_profiler.metrics.registry import Metrics
|
from metadata.orm_profiler.metrics.registry import Metrics
|
||||||
from metadata.orm_profiler.orm.converter import ometa_to_orm
|
from metadata.orm_profiler.orm.converter import ometa_to_orm
|
||||||
from metadata.orm_profiler.profiler.core import Profiler
|
from metadata.orm_profiler.profiler.core import Profiler
|
||||||
@ -47,8 +46,6 @@ from metadata.orm_profiler.profiler.handle_partition import (
|
|||||||
get_partition_cols,
|
get_partition_cols,
|
||||||
is_partitioned,
|
is_partitioned,
|
||||||
)
|
)
|
||||||
from metadata.orm_profiler.profiler.sampler import Sampler
|
|
||||||
from metadata.orm_profiler.validations.core import validation_enum_registry
|
|
||||||
from metadata.orm_profiler.validations.models import TestDef
|
from metadata.orm_profiler.validations.models import TestDef
|
||||||
from metadata.utils.helpers import get_start_and_end
|
from metadata.utils.helpers import get_start_and_end
|
||||||
|
|
||||||
|
|||||||
@ -19,7 +19,6 @@ from datetime import datetime
|
|||||||
from sqlalchemy import text
|
from sqlalchemy import text
|
||||||
from sqlalchemy.orm import DeclarativeMeta, Session
|
from sqlalchemy.orm import DeclarativeMeta, Session
|
||||||
|
|
||||||
from metadata.generated.schema.entity.data.table import TableProfile
|
|
||||||
from metadata.generated.schema.tests.basic import TestCaseResult, TestCaseStatus
|
from metadata.generated.schema.tests.basic import TestCaseResult, TestCaseStatus
|
||||||
from metadata.generated.schema.tests.table.tableCustomSQLQuery import (
|
from metadata.generated.schema.tests.table.tableCustomSQLQuery import (
|
||||||
TableCustomSQLQuery,
|
TableCustomSQLQuery,
|
||||||
|
|||||||
@ -23,10 +23,8 @@ from metadata.generated.schema.type.entityLineage import (
|
|||||||
LineageDetails,
|
LineageDetails,
|
||||||
)
|
)
|
||||||
from metadata.generated.schema.type.entityReference import EntityReference
|
from metadata.generated.schema.type.entityReference import EntityReference
|
||||||
from metadata.ingestion.ometa.client import APIError
|
|
||||||
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
||||||
from metadata.utils import fqn
|
from metadata.utils import fqn
|
||||||
from metadata.utils.helpers import get_formatted_entity_name
|
|
||||||
from metadata.utils.logger import utils_logger
|
from metadata.utils.logger import utils_logger
|
||||||
from metadata.utils.lru_cache import LRUCache
|
from metadata.utils.lru_cache import LRUCache
|
||||||
|
|
||||||
|
|||||||
@ -281,7 +281,7 @@ const ManageTab: FunctionComponent<ManageProps> = ({
|
|||||||
return (
|
return (
|
||||||
isAdminUser ||
|
isAdminUser ||
|
||||||
isAuthDisabled ||
|
isAuthDisabled ||
|
||||||
userPermissions[Operation.TeamEditUsers] ||
|
userPermissions[Operation.EditUsers] ||
|
||||||
!hasEditAccess
|
!hasEditAccess
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -109,9 +109,7 @@ const AddRuleModal: FC<AddRuleProps> = ({
|
|||||||
<option value={Operation.EditLineage}>Edit Lineage</option>
|
<option value={Operation.EditLineage}>Edit Lineage</option>
|
||||||
<option value={Operation.EditOwner}>Edit Owner</option>
|
<option value={Operation.EditOwner}>Edit Owner</option>
|
||||||
<option value={Operation.EditTags}>Edit Tags</option>
|
<option value={Operation.EditTags}>Edit Tags</option>
|
||||||
<option value={Operation.TeamEditUsers}>
|
<option value={Operation.EditUsers}>Edit Team Users</option>
|
||||||
Edit Team Users
|
|
||||||
</option>
|
|
||||||
</select>
|
</select>
|
||||||
{errorData?.operation && errorMsg(errorData.operation)}
|
{errorData?.operation && errorMsg(errorData.operation)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -343,7 +343,7 @@ const TeamDetails = ({
|
|||||||
? `as ${teamUsersSearchText}.`
|
? `as ${teamUsersSearchText}.`
|
||||||
: `added yet.`}
|
: `added yet.`}
|
||||||
</p>
|
</p>
|
||||||
{isActionAllowed(userPermissions[Operation.TeamEditUsers]) ? (
|
{isActionAllowed(userPermissions[Operation.EditUsers]) ? (
|
||||||
<>
|
<>
|
||||||
<p>Would like to start adding some?</p>
|
<p>Would like to start adding some?</p>
|
||||||
<Button
|
<Button
|
||||||
|
|||||||
@ -574,7 +574,7 @@ declare module 'Models' {
|
|||||||
EditDescription: boolean;
|
EditDescription: boolean;
|
||||||
EditLineage: boolean;
|
EditLineage: boolean;
|
||||||
EditTags: boolean;
|
EditTags: boolean;
|
||||||
TeamEditUsers: boolean;
|
EditUsers: boolean;
|
||||||
}
|
}
|
||||||
export interface EditorContentRef {
|
export interface EditorContentRef {
|
||||||
getEditorContent: () => string;
|
getEditorContent: () => string;
|
||||||
|
|||||||
@ -230,7 +230,7 @@ const UserCard = ({
|
|||||||
<NonAdminAction
|
<NonAdminAction
|
||||||
html={<>You do not have permission to update the team.</>}
|
html={<>You do not have permission to update the team.</>}
|
||||||
isOwner={isOwner}
|
isOwner={isOwner}
|
||||||
permission={Operation.TeamEditUsers}
|
permission={Operation.EditUsers}
|
||||||
position="bottom">
|
position="bottom">
|
||||||
<span
|
<span
|
||||||
className={classNames('tw-h-8 tw-rounded tw-mb-3', {
|
className={classNames('tw-h-8 tw-rounded tw-mb-3', {
|
||||||
@ -238,7 +238,7 @@ const UserCard = ({
|
|||||||
!isAdminUser &&
|
!isAdminUser &&
|
||||||
!isAuthDisabled &&
|
!isAuthDisabled &&
|
||||||
!isOwner &&
|
!isOwner &&
|
||||||
!userPermissions[Operation.TeamEditUsers],
|
!userPermissions[Operation.EditUsers],
|
||||||
})}
|
})}
|
||||||
data-testid="remove"
|
data-testid="remove"
|
||||||
onClick={() => onRemove?.(item.id as string)}>
|
onClick={() => onRemove?.(item.id as string)}>
|
||||||
|
|||||||
@ -445,7 +445,7 @@ const TeamsPage = () => {
|
|||||||
{isAdminUser ||
|
{isAdminUser ||
|
||||||
isAuthDisabled ||
|
isAuthDisabled ||
|
||||||
isOwner() ||
|
isOwner() ||
|
||||||
userPermissions[Operation.TeamEditUsers] ? (
|
userPermissions[Operation.EditUsers] ? (
|
||||||
<>
|
<>
|
||||||
<p>Would like to start adding some?</p>
|
<p>Would like to start adding some?</p>
|
||||||
<Button
|
<Button
|
||||||
@ -780,7 +780,7 @@ const TeamsPage = () => {
|
|||||||
</Fragment>
|
</Fragment>
|
||||||
}
|
}
|
||||||
isOwner={isOwner()}
|
isOwner={isOwner()}
|
||||||
permission={Operation.TeamEditUsers}
|
permission={Operation.EditUsers}
|
||||||
position="bottom">
|
position="bottom">
|
||||||
<Button
|
<Button
|
||||||
className={classNames(
|
className={classNames(
|
||||||
@ -789,7 +789,7 @@ const TeamsPage = () => {
|
|||||||
'tw-opacity-40':
|
'tw-opacity-40':
|
||||||
!isAdminUser &&
|
!isAdminUser &&
|
||||||
!isAuthDisabled &&
|
!isAuthDisabled &&
|
||||||
!userPermissions[Operation.TeamEditUsers] &&
|
!userPermissions[Operation.EditUsers] &&
|
||||||
!isOwner(),
|
!isOwner(),
|
||||||
}
|
}
|
||||||
)}
|
)}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user