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_DISABLED = "disabled";
|
||||
|
||||
//
|
||||
// Service entities
|
||||
//
|
||||
|
@ -13,7 +13,6 @@ import javax.ws.rs.core.Response;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
import org.openmetadata.schema.dataInsight.DataInsightChartResult;
|
||||
import org.openmetadata.schema.service.configuration.elasticsearch.ElasticSearchConfiguration;
|
||||
import org.openmetadata.schema.type.EntityReference;
|
||||
import org.openmetadata.service.exception.CustomExceptionMessage;
|
||||
import org.openmetadata.service.search.models.IndexMapping;
|
||||
import org.openmetadata.service.util.SSLUtil;
|
||||
@ -29,14 +28,16 @@ public interface SearchClient {
|
||||
|
||||
String DELETE = "delete";
|
||||
String GLOBAL_SEARCH_ALIAS = "AllEntities";
|
||||
|
||||
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 PROPAGATE_FIELD_SCRIPT = "if(ctx._source.%s == null){ ctx._source.put('%s', params)}";
|
||||
String REMOVE_PROPAGATED_FIELD_SCRIPT =
|
||||
String PROPAGATE_ENTITY_REFERENCE_FIELD_SCRIPT = "if(ctx._source.%s == null){ ctx._source.put('%s', params)}";
|
||||
|
||||
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')}";
|
||||
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)}";
|
||||
String SOFT_DELETE_RESTORE_SCRIPT = "ctx._source.put('deleted', '%s')";
|
||||
String REMOVE_TAGS_CHILDREN_SCRIPT =
|
||||
@ -84,7 +85,7 @@ public interface SearchClient {
|
||||
|
||||
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(
|
||||
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.search.SearchClient.DEFAULT_UPDATE_SCRIPT;
|
||||
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.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_TAGS_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.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 java.io.IOException;
|
||||
@ -43,6 +45,7 @@ import org.openmetadata.schema.type.EntityReference;
|
||||
import org.openmetadata.schema.type.FieldChange;
|
||||
import org.openmetadata.schema.type.UsageDetails;
|
||||
import org.openmetadata.service.Entity;
|
||||
import org.openmetadata.service.exception.UnhandledServerException;
|
||||
import org.openmetadata.service.search.elasticsearch.ElasticSearchClient;
|
||||
import org.openmetadata.service.search.indexes.SearchIndex;
|
||||
import org.openmetadata.service.search.models.IndexMapping;
|
||||
@ -58,7 +61,8 @@ public class SearchRepository {
|
||||
|
||||
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 =
|
||||
List.of(
|
||||
@ -252,7 +256,7 @@ public class SearchRepository {
|
||||
public void propagateInheritedFieldsToChildren(
|
||||
String entityType, String entityId, ChangeDescription changeDescription, IndexMapping indexMapping) {
|
||||
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);
|
||||
if (updates.getKey() != null && !updates.getKey().isEmpty()) {
|
||||
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();
|
||||
EntityReference fieldData = null;
|
||||
Map<String, Object> fieldData = new HashMap<>();
|
||||
if (changeDescription != null) {
|
||||
for (FieldChange field : changeDescription.getFieldsAdded()) {
|
||||
if (inheritableFields.contains(field.getName())) {
|
||||
scriptTxt.append(String.format(PROPAGATE_FIELD_SCRIPT, field.getName(), field.getName()));
|
||||
fieldData = JsonUtils.readValue(field.getNewValue().toString(), EntityReference.class);
|
||||
try {
|
||||
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()) {
|
||||
if (inheritableFields.contains(field.getName())) {
|
||||
EntityReference entityReference = JsonUtils.readValue(field.getOldValue().toString(), EntityReference.class);
|
||||
try {
|
||||
EntityReference oldEntityReference =
|
||||
JsonUtils.readValue(field.getOldValue().toString(), EntityReference.class);
|
||||
EntityReference newEntityReference =
|
||||
JsonUtils.readValue(field.getNewValue().toString(), EntityReference.class);
|
||||
scriptTxt.append(
|
||||
String.format(
|
||||
UPDATE_PROPAGATED_FIELD_SCRIPT,
|
||||
UPDATE_PROPAGATED_ENTITY_REFERENCE_FIELD_SCRIPT,
|
||||
field.getName(),
|
||||
field.getName(),
|
||||
entityReference.getId().toString(),
|
||||
oldEntityReference.getId().toString(),
|
||||
field.getName()));
|
||||
fieldData = JsonUtils.readValue(field.getNewValue().toString(), EntityReference.class);
|
||||
fieldData = JsonUtils.getMap(newEntityReference);
|
||||
} catch (UnhandledServerException e) {
|
||||
scriptTxt.append(String.format(PROPAGATE_FIELD_SCRIPT, field.getName(), field.getNewValue()));
|
||||
}
|
||||
}
|
||||
}
|
||||
for (FieldChange field : changeDescription.getFieldsDeleted()) {
|
||||
if (inheritableFields.contains(field.getName())) {
|
||||
EntityReference entityReference = JsonUtils.readValue(field.getOldValue().toString(), EntityReference.class);
|
||||
try {
|
||||
EntityReference entityReference =
|
||||
JsonUtils.readValue(field.getOldValue().toString(), EntityReference.class);
|
||||
scriptTxt.append(
|
||||
String.format(
|
||||
REMOVE_PROPAGATED_FIELD_SCRIPT,
|
||||
REMOVE_PROPAGATED_ENTITY_REFERENCE_FIELD_SCRIPT,
|
||||
field.getName(),
|
||||
field.getName(),
|
||||
entityReference.getId().toString(),
|
||||
field.getName()));
|
||||
fieldData = (EntityReference) field.getNewValue();
|
||||
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.dataInsight.DataInsightChartResult;
|
||||
import org.openmetadata.schema.service.configuration.elasticsearch.ElasticSearchConfiguration;
|
||||
import org.openmetadata.schema.type.EntityReference;
|
||||
import org.openmetadata.service.dataInsight.DataInsightAggregatorInterface;
|
||||
import org.openmetadata.service.jdbi3.DataInsightChartRepository;
|
||||
import org.openmetadata.service.search.SearchClient;
|
||||
@ -981,7 +980,7 @@ public class ElasticSearchClient implements SearchClient {
|
||||
|
||||
@Override
|
||||
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) {
|
||||
UpdateByQueryRequest updateByQueryRequest = new UpdateByQueryRequest(indexName);
|
||||
updateByQueryRequest.setQuery(
|
||||
@ -991,7 +990,7 @@ public class ElasticSearchClient implements SearchClient {
|
||||
ScriptType.INLINE,
|
||||
Script.DEFAULT_SCRIPT_LANG,
|
||||
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);
|
||||
updateElasticSearchByQuery(updateByQueryRequest);
|
||||
}
|
||||
|
@ -42,7 +42,6 @@ import org.apache.http.impl.client.BasicCredentialsProvider;
|
||||
import org.openmetadata.schema.DataInsightInterface;
|
||||
import org.openmetadata.schema.dataInsight.DataInsightChartResult;
|
||||
import org.openmetadata.schema.service.configuration.elasticsearch.ElasticSearchConfiguration;
|
||||
import org.openmetadata.schema.type.EntityReference;
|
||||
import org.openmetadata.service.dataInsight.DataInsightAggregatorInterface;
|
||||
import org.openmetadata.service.jdbi3.DataInsightChartRepository;
|
||||
import org.openmetadata.service.search.SearchClient;
|
||||
@ -988,7 +987,7 @@ public class OpenSearchClient implements SearchClient {
|
||||
|
||||
@Override
|
||||
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) {
|
||||
UpdateByQueryRequest updateByQueryRequest = new UpdateByQueryRequest(indexName);
|
||||
updateByQueryRequest.setQuery(new MatchQueryBuilder(fieldAndValue.getKey(), fieldAndValue.getValue()));
|
||||
@ -997,7 +996,7 @@ public class OpenSearchClient implements SearchClient {
|
||||
ScriptType.INLINE,
|
||||
Script.DEFAULT_SCRIPT_LANG,
|
||||
updates.getKey(),
|
||||
JsonUtils.getMap(updates.getValue() == null ? new HashMap<>() : updates.getValue()));
|
||||
updates.getValue() == null ? new HashMap<>() : updates.getValue());
|
||||
updateByQueryRequest.setScript(script);
|
||||
updateOpenSearchByQuery(updateByQueryRequest);
|
||||
}
|
||||
|
@ -111,7 +111,7 @@
|
||||
"indexName": "tag_search_index",
|
||||
"indexMappingFile": "/elasticsearch/%s/tag_index_mapping.json",
|
||||
"alias": "tag",
|
||||
"parentAliases": ["all"]
|
||||
"parentAliases": ["classification","all"]
|
||||
},
|
||||
"classification": {
|
||||
"indexName": "classification_search_index",
|
||||
|
Loading…
x
Reference in New Issue
Block a user