mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-09-26 09:22:14 +00:00
Disable tags when the classification is disabled (#13532)
* Disable tags when the classification is disabled * remove unnecessary constants --------- Co-authored-by: 07Himank <112613760+07Himank@users.noreply.github.com>
This commit is contained in:
parent
932083f931
commit
fcb06383c1
@ -108,6 +108,8 @@ public final class Entity {
|
|||||||
|
|
||||||
public static final String FIELD_LIFE_CYCLE = "lifeCycle";
|
public static final String FIELD_LIFE_CYCLE = "lifeCycle";
|
||||||
|
|
||||||
|
public static final String FIELD_DISABLED = "disabled";
|
||||||
|
|
||||||
//
|
//
|
||||||
// Service entities
|
// Service entities
|
||||||
//
|
//
|
||||||
|
@ -13,7 +13,6 @@ import javax.ws.rs.core.Response;
|
|||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
import org.openmetadata.schema.dataInsight.DataInsightChartResult;
|
import org.openmetadata.schema.dataInsight.DataInsightChartResult;
|
||||||
import org.openmetadata.schema.service.configuration.elasticsearch.ElasticSearchConfiguration;
|
import org.openmetadata.schema.service.configuration.elasticsearch.ElasticSearchConfiguration;
|
||||||
import org.openmetadata.schema.type.EntityReference;
|
|
||||||
import org.openmetadata.service.exception.CustomExceptionMessage;
|
import org.openmetadata.service.exception.CustomExceptionMessage;
|
||||||
import org.openmetadata.service.search.models.IndexMapping;
|
import org.openmetadata.service.search.models.IndexMapping;
|
||||||
import org.openmetadata.service.util.SSLUtil;
|
import org.openmetadata.service.util.SSLUtil;
|
||||||
@ -29,14 +28,16 @@ public interface SearchClient {
|
|||||||
|
|
||||||
String DELETE = "delete";
|
String DELETE = "delete";
|
||||||
String GLOBAL_SEARCH_ALIAS = "AllEntities";
|
String GLOBAL_SEARCH_ALIAS = "AllEntities";
|
||||||
|
|
||||||
String DEFAULT_UPDATE_SCRIPT = "for (k in params.keySet()) { ctx._source.put(k, params.get(k)) }";
|
String DEFAULT_UPDATE_SCRIPT = "for (k in params.keySet()) { ctx._source.put(k, params.get(k)) }";
|
||||||
String CLASSIFICATION_DISABLE_SCRIPT = "ctx._source.disabled=%s";
|
|
||||||
String REMOVE_DOMAINS_CHILDREN_SCRIPT = "ctx._source.remove('domain')";
|
String REMOVE_DOMAINS_CHILDREN_SCRIPT = "ctx._source.remove('domain')";
|
||||||
String PROPAGATE_FIELD_SCRIPT = "if(ctx._source.%s == null){ ctx._source.put('%s', params)}";
|
String PROPAGATE_ENTITY_REFERENCE_FIELD_SCRIPT = "if(ctx._source.%s == null){ ctx._source.put('%s', params)}";
|
||||||
String REMOVE_PROPAGATED_FIELD_SCRIPT =
|
|
||||||
|
String PROPAGATE_FIELD_SCRIPT = "ctx._source.put('%s', '%s')";
|
||||||
|
|
||||||
|
String REMOVE_PROPAGATED_ENTITY_REFERENCE_FIELD_SCRIPT =
|
||||||
"if((ctx._source.%s != null) && (ctx._source.%s.id == '%s')){ ctx._source.remove('%s')}";
|
"if((ctx._source.%s != null) && (ctx._source.%s.id == '%s')){ ctx._source.remove('%s')}";
|
||||||
String UPDATE_PROPAGATED_FIELD_SCRIPT =
|
String REMOVE_PROPAGATED_FIELD_SCRIPT = "ctx._source.remove('%s')";
|
||||||
|
String UPDATE_PROPAGATED_ENTITY_REFERENCE_FIELD_SCRIPT =
|
||||||
"if((ctx._source.%s == null) || (ctx._source.%s.id == '%s')) { ctx._source.put('%s', params)}";
|
"if((ctx._source.%s == null) || (ctx._source.%s.id == '%s')) { ctx._source.put('%s', params)}";
|
||||||
String SOFT_DELETE_RESTORE_SCRIPT = "ctx._source.put('deleted', '%s')";
|
String SOFT_DELETE_RESTORE_SCRIPT = "ctx._source.put('deleted', '%s')";
|
||||||
String REMOVE_TAGS_CHILDREN_SCRIPT =
|
String REMOVE_TAGS_CHILDREN_SCRIPT =
|
||||||
@ -84,7 +85,7 @@ public interface SearchClient {
|
|||||||
|
|
||||||
void softDeleteOrRestoreChildren(String indexName, String scriptTxt, List<Pair<String, String>> fieldAndValue);
|
void softDeleteOrRestoreChildren(String indexName, String scriptTxt, List<Pair<String, String>> fieldAndValue);
|
||||||
|
|
||||||
void updateChildren(String indexName, Pair<String, String> fieldAndValue, Pair<String, EntityReference> updates);
|
void updateChildren(String indexName, Pair<String, String> fieldAndValue, Pair<String, Map<String, Object>> updates);
|
||||||
|
|
||||||
TreeMap<Long, List<Object>> getSortedDate(
|
TreeMap<Long, List<Object>> getSortedDate(
|
||||||
String team,
|
String team,
|
||||||
|
@ -5,13 +5,15 @@ import static org.openmetadata.service.Entity.FIELD_USAGE_SUMMARY;
|
|||||||
import static org.openmetadata.service.Entity.QUERY;
|
import static org.openmetadata.service.Entity.QUERY;
|
||||||
import static org.openmetadata.service.search.SearchClient.DEFAULT_UPDATE_SCRIPT;
|
import static org.openmetadata.service.search.SearchClient.DEFAULT_UPDATE_SCRIPT;
|
||||||
import static org.openmetadata.service.search.SearchClient.GLOBAL_SEARCH_ALIAS;
|
import static org.openmetadata.service.search.SearchClient.GLOBAL_SEARCH_ALIAS;
|
||||||
|
import static org.openmetadata.service.search.SearchClient.PROPAGATE_ENTITY_REFERENCE_FIELD_SCRIPT;
|
||||||
import static org.openmetadata.service.search.SearchClient.PROPAGATE_FIELD_SCRIPT;
|
import static org.openmetadata.service.search.SearchClient.PROPAGATE_FIELD_SCRIPT;
|
||||||
import static org.openmetadata.service.search.SearchClient.REMOVE_DOMAINS_CHILDREN_SCRIPT;
|
import static org.openmetadata.service.search.SearchClient.REMOVE_DOMAINS_CHILDREN_SCRIPT;
|
||||||
|
import static org.openmetadata.service.search.SearchClient.REMOVE_PROPAGATED_ENTITY_REFERENCE_FIELD_SCRIPT;
|
||||||
import static org.openmetadata.service.search.SearchClient.REMOVE_PROPAGATED_FIELD_SCRIPT;
|
import static org.openmetadata.service.search.SearchClient.REMOVE_PROPAGATED_FIELD_SCRIPT;
|
||||||
import static org.openmetadata.service.search.SearchClient.REMOVE_TAGS_CHILDREN_SCRIPT;
|
import static org.openmetadata.service.search.SearchClient.REMOVE_TAGS_CHILDREN_SCRIPT;
|
||||||
import static org.openmetadata.service.search.SearchClient.REMOVE_TEST_SUITE_CHILDREN_SCRIPT;
|
import static org.openmetadata.service.search.SearchClient.REMOVE_TEST_SUITE_CHILDREN_SCRIPT;
|
||||||
import static org.openmetadata.service.search.SearchClient.SOFT_DELETE_RESTORE_SCRIPT;
|
import static org.openmetadata.service.search.SearchClient.SOFT_DELETE_RESTORE_SCRIPT;
|
||||||
import static org.openmetadata.service.search.SearchClient.UPDATE_PROPAGATED_FIELD_SCRIPT;
|
import static org.openmetadata.service.search.SearchClient.UPDATE_PROPAGATED_ENTITY_REFERENCE_FIELD_SCRIPT;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -43,6 +45,7 @@ import org.openmetadata.schema.type.EntityReference;
|
|||||||
import org.openmetadata.schema.type.FieldChange;
|
import org.openmetadata.schema.type.FieldChange;
|
||||||
import org.openmetadata.schema.type.UsageDetails;
|
import org.openmetadata.schema.type.UsageDetails;
|
||||||
import org.openmetadata.service.Entity;
|
import org.openmetadata.service.Entity;
|
||||||
|
import org.openmetadata.service.exception.UnhandledServerException;
|
||||||
import org.openmetadata.service.search.elasticsearch.ElasticSearchClient;
|
import org.openmetadata.service.search.elasticsearch.ElasticSearchClient;
|
||||||
import org.openmetadata.service.search.indexes.SearchIndex;
|
import org.openmetadata.service.search.indexes.SearchIndex;
|
||||||
import org.openmetadata.service.search.models.IndexMapping;
|
import org.openmetadata.service.search.models.IndexMapping;
|
||||||
@ -58,7 +61,8 @@ public class SearchRepository {
|
|||||||
|
|
||||||
private final String language;
|
private final String language;
|
||||||
|
|
||||||
private final List<String> inheritableFields = List.of(Entity.FIELD_OWNER, Entity.FIELD_DOMAIN);
|
private final List<String> inheritableFields =
|
||||||
|
List.of(Entity.FIELD_OWNER, Entity.FIELD_DOMAIN, Entity.FIELD_DISABLED);
|
||||||
|
|
||||||
public final List<String> dataInsightReports =
|
public final List<String> dataInsightReports =
|
||||||
List.of(
|
List.of(
|
||||||
@ -252,7 +256,7 @@ public class SearchRepository {
|
|||||||
public void propagateInheritedFieldsToChildren(
|
public void propagateInheritedFieldsToChildren(
|
||||||
String entityType, String entityId, ChangeDescription changeDescription, IndexMapping indexMapping) {
|
String entityType, String entityId, ChangeDescription changeDescription, IndexMapping indexMapping) {
|
||||||
if (changeDescription != null) {
|
if (changeDescription != null) {
|
||||||
Pair<String, EntityReference> updates = getInheritedFieldChanges(changeDescription);
|
Pair<String, Map<String, Object>> updates = getInheritedFieldChanges(changeDescription);
|
||||||
Pair<String, String> parentMatch = new ImmutablePair<>(entityType + ".id", entityId);
|
Pair<String, String> parentMatch = new ImmutablePair<>(entityType + ".id", entityId);
|
||||||
if (updates.getKey() != null && !updates.getKey().isEmpty()) {
|
if (updates.getKey() != null && !updates.getKey().isEmpty()) {
|
||||||
searchClient.updateChildren(indexMapping.getAlias(), parentMatch, updates);
|
searchClient.updateChildren(indexMapping.getAlias(), parentMatch, updates);
|
||||||
@ -260,40 +264,58 @@ public class SearchRepository {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Pair<String, EntityReference> getInheritedFieldChanges(ChangeDescription changeDescription) {
|
private Pair<String, Map<String, Object>> getInheritedFieldChanges(ChangeDescription changeDescription) {
|
||||||
StringBuilder scriptTxt = new StringBuilder();
|
StringBuilder scriptTxt = new StringBuilder();
|
||||||
EntityReference fieldData = null;
|
Map<String, Object> fieldData = new HashMap<>();
|
||||||
if (changeDescription != null) {
|
if (changeDescription != null) {
|
||||||
for (FieldChange field : changeDescription.getFieldsAdded()) {
|
for (FieldChange field : changeDescription.getFieldsAdded()) {
|
||||||
if (inheritableFields.contains(field.getName())) {
|
if (inheritableFields.contains(field.getName())) {
|
||||||
scriptTxt.append(String.format(PROPAGATE_FIELD_SCRIPT, field.getName(), field.getName()));
|
try {
|
||||||
fieldData = JsonUtils.readValue(field.getNewValue().toString(), EntityReference.class);
|
EntityReference entityReference =
|
||||||
|
JsonUtils.readValue(field.getNewValue().toString(), EntityReference.class);
|
||||||
|
scriptTxt.append(String.format(PROPAGATE_ENTITY_REFERENCE_FIELD_SCRIPT, field.getName(), field.getName()));
|
||||||
|
fieldData = JsonUtils.getMap(entityReference);
|
||||||
|
} catch (UnhandledServerException e) {
|
||||||
|
scriptTxt.append(String.format(PROPAGATE_FIELD_SCRIPT, field.getName(), field.getNewValue()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (FieldChange field : changeDescription.getFieldsUpdated()) {
|
for (FieldChange field : changeDescription.getFieldsUpdated()) {
|
||||||
if (inheritableFields.contains(field.getName())) {
|
if (inheritableFields.contains(field.getName())) {
|
||||||
EntityReference entityReference = JsonUtils.readValue(field.getOldValue().toString(), EntityReference.class);
|
try {
|
||||||
scriptTxt.append(
|
EntityReference oldEntityReference =
|
||||||
String.format(
|
JsonUtils.readValue(field.getOldValue().toString(), EntityReference.class);
|
||||||
UPDATE_PROPAGATED_FIELD_SCRIPT,
|
EntityReference newEntityReference =
|
||||||
field.getName(),
|
JsonUtils.readValue(field.getNewValue().toString(), EntityReference.class);
|
||||||
field.getName(),
|
scriptTxt.append(
|
||||||
entityReference.getId().toString(),
|
String.format(
|
||||||
field.getName()));
|
UPDATE_PROPAGATED_ENTITY_REFERENCE_FIELD_SCRIPT,
|
||||||
fieldData = JsonUtils.readValue(field.getNewValue().toString(), EntityReference.class);
|
field.getName(),
|
||||||
|
field.getName(),
|
||||||
|
oldEntityReference.getId().toString(),
|
||||||
|
field.getName()));
|
||||||
|
fieldData = JsonUtils.getMap(newEntityReference);
|
||||||
|
} catch (UnhandledServerException e) {
|
||||||
|
scriptTxt.append(String.format(PROPAGATE_FIELD_SCRIPT, field.getName(), field.getNewValue()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (FieldChange field : changeDescription.getFieldsDeleted()) {
|
for (FieldChange field : changeDescription.getFieldsDeleted()) {
|
||||||
if (inheritableFields.contains(field.getName())) {
|
if (inheritableFields.contains(field.getName())) {
|
||||||
EntityReference entityReference = JsonUtils.readValue(field.getOldValue().toString(), EntityReference.class);
|
try {
|
||||||
scriptTxt.append(
|
EntityReference entityReference =
|
||||||
String.format(
|
JsonUtils.readValue(field.getOldValue().toString(), EntityReference.class);
|
||||||
REMOVE_PROPAGATED_FIELD_SCRIPT,
|
scriptTxt.append(
|
||||||
field.getName(),
|
String.format(
|
||||||
field.getName(),
|
REMOVE_PROPAGATED_ENTITY_REFERENCE_FIELD_SCRIPT,
|
||||||
entityReference.getId().toString(),
|
field.getName(),
|
||||||
field.getName()));
|
field.getName(),
|
||||||
fieldData = (EntityReference) field.getNewValue();
|
entityReference.getId().toString(),
|
||||||
|
field.getName()));
|
||||||
|
fieldData = JsonUtils.getMap(entityReference);
|
||||||
|
} catch (UnhandledServerException e) {
|
||||||
|
scriptTxt.append(String.format(REMOVE_PROPAGATED_FIELD_SCRIPT, field.getName()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -111,7 +111,6 @@ import org.apache.http.impl.client.BasicCredentialsProvider;
|
|||||||
import org.openmetadata.schema.DataInsightInterface;
|
import org.openmetadata.schema.DataInsightInterface;
|
||||||
import org.openmetadata.schema.dataInsight.DataInsightChartResult;
|
import org.openmetadata.schema.dataInsight.DataInsightChartResult;
|
||||||
import org.openmetadata.schema.service.configuration.elasticsearch.ElasticSearchConfiguration;
|
import org.openmetadata.schema.service.configuration.elasticsearch.ElasticSearchConfiguration;
|
||||||
import org.openmetadata.schema.type.EntityReference;
|
|
||||||
import org.openmetadata.service.dataInsight.DataInsightAggregatorInterface;
|
import org.openmetadata.service.dataInsight.DataInsightAggregatorInterface;
|
||||||
import org.openmetadata.service.jdbi3.DataInsightChartRepository;
|
import org.openmetadata.service.jdbi3.DataInsightChartRepository;
|
||||||
import org.openmetadata.service.search.SearchClient;
|
import org.openmetadata.service.search.SearchClient;
|
||||||
@ -981,7 +980,7 @@ public class ElasticSearchClient implements SearchClient {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateChildren(
|
public void updateChildren(
|
||||||
String indexName, Pair<String, String> fieldAndValue, Pair<String, EntityReference> updates) {
|
String indexName, Pair<String, String> fieldAndValue, Pair<String, Map<String, Object>> updates) {
|
||||||
if (isClientAvailable) {
|
if (isClientAvailable) {
|
||||||
UpdateByQueryRequest updateByQueryRequest = new UpdateByQueryRequest(indexName);
|
UpdateByQueryRequest updateByQueryRequest = new UpdateByQueryRequest(indexName);
|
||||||
updateByQueryRequest.setQuery(
|
updateByQueryRequest.setQuery(
|
||||||
@ -991,7 +990,7 @@ public class ElasticSearchClient implements SearchClient {
|
|||||||
ScriptType.INLINE,
|
ScriptType.INLINE,
|
||||||
Script.DEFAULT_SCRIPT_LANG,
|
Script.DEFAULT_SCRIPT_LANG,
|
||||||
updates.getKey(),
|
updates.getKey(),
|
||||||
JsonUtils.getMap(updates.getValue() == null ? new HashMap<>() : JsonUtils.getMap(updates.getValue())));
|
JsonUtils.getMap(updates.getValue() == null ? new HashMap<>() : updates.getValue()));
|
||||||
updateByQueryRequest.setScript(script);
|
updateByQueryRequest.setScript(script);
|
||||||
updateElasticSearchByQuery(updateByQueryRequest);
|
updateElasticSearchByQuery(updateByQueryRequest);
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,6 @@ import org.apache.http.impl.client.BasicCredentialsProvider;
|
|||||||
import org.openmetadata.schema.DataInsightInterface;
|
import org.openmetadata.schema.DataInsightInterface;
|
||||||
import org.openmetadata.schema.dataInsight.DataInsightChartResult;
|
import org.openmetadata.schema.dataInsight.DataInsightChartResult;
|
||||||
import org.openmetadata.schema.service.configuration.elasticsearch.ElasticSearchConfiguration;
|
import org.openmetadata.schema.service.configuration.elasticsearch.ElasticSearchConfiguration;
|
||||||
import org.openmetadata.schema.type.EntityReference;
|
|
||||||
import org.openmetadata.service.dataInsight.DataInsightAggregatorInterface;
|
import org.openmetadata.service.dataInsight.DataInsightAggregatorInterface;
|
||||||
import org.openmetadata.service.jdbi3.DataInsightChartRepository;
|
import org.openmetadata.service.jdbi3.DataInsightChartRepository;
|
||||||
import org.openmetadata.service.search.SearchClient;
|
import org.openmetadata.service.search.SearchClient;
|
||||||
@ -988,7 +987,7 @@ public class OpenSearchClient implements SearchClient {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateChildren(
|
public void updateChildren(
|
||||||
String indexName, Pair<String, String> fieldAndValue, Pair<String, EntityReference> updates) {
|
String indexName, Pair<String, String> fieldAndValue, Pair<String, Map<String, Object>> updates) {
|
||||||
if (isClientAvailable) {
|
if (isClientAvailable) {
|
||||||
UpdateByQueryRequest updateByQueryRequest = new UpdateByQueryRequest(indexName);
|
UpdateByQueryRequest updateByQueryRequest = new UpdateByQueryRequest(indexName);
|
||||||
updateByQueryRequest.setQuery(new MatchQueryBuilder(fieldAndValue.getKey(), fieldAndValue.getValue()));
|
updateByQueryRequest.setQuery(new MatchQueryBuilder(fieldAndValue.getKey(), fieldAndValue.getValue()));
|
||||||
@ -997,7 +996,7 @@ public class OpenSearchClient implements SearchClient {
|
|||||||
ScriptType.INLINE,
|
ScriptType.INLINE,
|
||||||
Script.DEFAULT_SCRIPT_LANG,
|
Script.DEFAULT_SCRIPT_LANG,
|
||||||
updates.getKey(),
|
updates.getKey(),
|
||||||
JsonUtils.getMap(updates.getValue() == null ? new HashMap<>() : updates.getValue()));
|
updates.getValue() == null ? new HashMap<>() : updates.getValue());
|
||||||
updateByQueryRequest.setScript(script);
|
updateByQueryRequest.setScript(script);
|
||||||
updateOpenSearchByQuery(updateByQueryRequest);
|
updateOpenSearchByQuery(updateByQueryRequest);
|
||||||
}
|
}
|
||||||
|
@ -111,7 +111,7 @@
|
|||||||
"indexName": "tag_search_index",
|
"indexName": "tag_search_index",
|
||||||
"indexMappingFile": "/elasticsearch/%s/tag_index_mapping.json",
|
"indexMappingFile": "/elasticsearch/%s/tag_index_mapping.json",
|
||||||
"alias": "tag",
|
"alias": "tag",
|
||||||
"parentAliases": ["all"]
|
"parentAliases": ["classification","all"]
|
||||||
},
|
},
|
||||||
"classification": {
|
"classification": {
|
||||||
"indexName": "classification_search_index",
|
"indexName": "classification_search_index",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user