@Override public List<ConfigChangeAction> validate(VespaModel currentModel, VespaModel nextModel, ValidationOverrides overrides, Instant now) { if (!overrides.allows(ValidationId.globalDocumentChange.value(), now)) { for (Map.Entry<String, ContentCluster> currentEntry : currentModel.getContentClusters().entrySet()) { ContentCluster nextCluster = nextModel.getContentClusters().get(currentEntry.getKey()); if (nextCluster == null) continue; validateContentCluster(currentEntry.getValue(), nextCluster); } } return Collections.emptyList(); }
private Optional<ConfigChangeAction> validateContentCluster(ContentCluster currentCluster, ContentCluster nextCluster, ValidationOverrides overrides, Instant now) { boolean currentClusterIsIndexed = currentCluster.getSearch().hasIndexedCluster(); boolean nextClusterIsIndexed = nextCluster.getSearch().hasIndexedCluster(); if (currentClusterIsIndexed == nextClusterIsIndexed) return Optional.empty(); return Optional.of(VespaRefeedAction.of(ValidationId.indexModeChange.value(), overrides, "Cluster '" + currentCluster.getName() + "' changed indexing mode from '" + indexingMode(currentClusterIsIndexed) + "' to '" + indexingMode(nextClusterIsIndexed) + "'", now)); }
private Optional<VespaConfigChangeAction> validateScripts(SDField currentField, SDField nextField, ValidationOverrides overrides, Instant now) { ScriptExpression currentScript = currentField.getIndexingScript(); ScriptExpression nextScript = nextField.getIndexingScript(); if ( ! equalScripts(currentScript, nextScript)) { ChangeMessageBuilder messageBuilder = new ChangeMessageBuilder(nextField.getName()); new IndexingScriptChangeMessageBuilder(currentSearch, currentField, nextSearch, nextField).populate(messageBuilder); messageBuilder.addChange("indexing script", currentScript.toString(), nextScript.toString()); return Optional.of(VespaRefeedAction.of(ValidationId.indexingChange.value(), overrides, messageBuilder.build(), now)); } return Optional.empty(); }