summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorJon Marius Venstad <jonmv@users.noreply.github.com>2018-04-27 18:46:52 +0200
committerGitHub <noreply@github.com>2018-04-27 18:46:52 +0200
commit511b049e5e265777b75bfb489c42bb5e3bbf4fea (patch)
tree2481d68e9ae9449aa38c9f70bb6f85be3ba7f276 /config-model
parentd4b439db293bc08f6b7d323dec4d1b8698af93fc (diff)
Revert "Validate content type removal"
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java1
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidator.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidator.java42
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationTester.java5
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidatorTest.java7
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidatorTest.java64
7 files changed, 7 insertions, 117 deletions
diff --git a/config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java b/config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java
index 06bb32213f9..a93cbe0c1ff 100644
--- a/config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java
+++ b/config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java
@@ -392,5 +392,4 @@ public final class NewDocumentType extends StructuredDataType implements DataTyp
public Set<Name> getDocumentReferences() {
return documentReferences;
}
-
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java
index 50e93789159..6407f581a62 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java
@@ -12,7 +12,6 @@ import com.yahoo.vespa.model.application.validation.change.ClusterSizeReductionV
import com.yahoo.vespa.model.application.validation.change.ConfigValueChangeValidator;
import com.yahoo.vespa.model.application.validation.change.ContainerRestartValidator;
import com.yahoo.vespa.model.application.validation.change.ContentClusterRemovalValidator;
-import com.yahoo.vespa.model.application.validation.change.ContentTypeRemovalValidator;
import com.yahoo.vespa.model.application.validation.change.IndexedSearchClusterChangeValidator;
import com.yahoo.vespa.model.application.validation.change.IndexingModeChangeValidator;
import com.yahoo.vespa.model.application.validation.change.StartupCommandChangeValidator;
@@ -76,7 +75,6 @@ public class Validation {
new StreamingSearchClusterChangeValidator(),
new ConfigValueChangeValidator(logger),
new StartupCommandChangeValidator(),
- new ContentTypeRemovalValidator(),
new ContentClusterRemovalValidator(),
new ClusterSizeReductionValidator(),
new ContainerRestartValidator(),
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidator.java
index a2275b17233..52253411419 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidator.java
@@ -2,7 +2,6 @@
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.model.api.ConfigChangeAction;
-import com.yahoo.documentmodel.NewDocumentType;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.config.application.api.ValidationId;
import com.yahoo.config.application.api.ValidationOverrides;
@@ -27,7 +26,7 @@ public class ContentClusterRemovalValidator implements ChangeValidator {
if (nextCluster == null)
overrides.invalid(ValidationId.contentClusterRemoval,
"Content cluster '" + currentClusterId + "' is removed. " +
- "This will cause loss of all data in this cluster",
+ "This will cause loss of all data in this cluster",
now);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidator.java
deleted file mode 100644
index a691c8bb5c4..00000000000
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidator.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.model.application.validation.change;
-
-import com.yahoo.config.application.api.ValidationId;
-import com.yahoo.config.application.api.ValidationOverrides;
-import com.yahoo.config.model.api.ConfigChangeAction;
-import com.yahoo.documentmodel.NewDocumentType;
-import com.yahoo.vespa.model.VespaModel;
-import com.yahoo.vespa.model.content.cluster.ContentCluster;
-
-import java.time.Instant;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Checks that this does not remove a data type in a cluster, as that causes deletion
- * of all data of that type.
- *
- * @author bratseth
- */
-public class ContentTypeRemovalValidator implements ChangeValidator {
-
- @Override
- public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, ValidationOverrides overrides, Instant now) {
- for (ContentCluster currentCluster : current.getContentClusters().values()) {
- ContentCluster nextCluster = next.getContentClusters().get(currentCluster.getSubId());
- if (nextCluster == null) continue; // validated elsewhere
-
- for (NewDocumentType type : currentCluster.getDocumentDefinitions().values()) {
- if ( ! nextCluster.getDocumentDefinitions().containsKey(type.getName())) {
- overrides.invalid(ValidationId.contentTypeRemoval,
- "Type '" + type.getName() + "' is removed " +
- " in content cluster '" + currentCluster.getName() + "'. " +
- "This will cause loss of all data of this type",
- now);
- }
- }
- }
- return Collections.emptyList();
- }
-
-}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationTester.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationTester.java
index 7082dec2c78..4ca100e5c52 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationTester.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationTester.java
@@ -1,7 +1,6 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
-import com.google.common.collect.ImmutableList;
import com.yahoo.collections.Pair;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.api.ConfigChangeAction;
@@ -11,8 +10,6 @@ import com.yahoo.config.model.provision.InMemoryProvisioner;
import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithMockPkg;
-import static com.yahoo.config.model.test.MockApplicationPackage.MUSIC_SEARCHDEFINITION;
-import static com.yahoo.config.model.test.MockApplicationPackage.BOOK_SEARCHDEFINITION;
import java.time.Instant;
import java.time.LocalDate;
@@ -49,7 +46,7 @@ public class ValidationTester {
Instant now = LocalDate.parse("2000-01-01", DateTimeFormatter.ISO_DATE).atStartOfDay().atZone(ZoneOffset.UTC).toInstant();
ApplicationPackage newApp = new MockApplicationPackage.Builder()
.withServices(services)
- .withSearchDefinitions(ImmutableList.of(MUSIC_SEARCHDEFINITION, BOOK_SEARCHDEFINITION))
+ .withSearchDefinition(MockApplicationPackage.MUSIC_SEARCHDEFINITION)
.withValidationOverrides(validationOverrides)
.build();
VespaModelCreatorWithMockPkg newModelCreator = new VespaModelCreatorWithMockPkg(newApp);
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidatorTest.java
index 25ad6dbc620..d2c067ef9cb 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidatorTest.java
@@ -5,6 +5,9 @@ import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.application.validation.ValidationTester;
import com.yahoo.yolean.Exceptions;
import org.junit.Test;
+import org.xml.sax.SAXException;
+
+import java.io.IOException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
@@ -15,7 +18,7 @@ import static org.junit.Assert.fail;
public class ContentClusterRemovalValidatorTest {
@Test
- public void testContentRemovalValidation() {
+ public void testContentRemovalValidation() throws IOException, SAXException {
ValidationTester tester = new ValidationTester();
VespaModel previous = tester.deploy(null, getServices("contentClusterId"), null).getFirst();
@@ -30,7 +33,7 @@ public class ContentClusterRemovalValidatorTest {
}
@Test
- public void testOverridingContentRemovalValidation() {
+ public void testOverridingContentRemovalValidation() throws IOException, SAXException {
ValidationTester tester = new ValidationTester();
VespaModel previous = tester.deploy(null, getServices("contentClusterId"), null).getFirst();
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidatorTest.java
deleted file mode 100644
index a52c6d7c7a2..00000000000
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidatorTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.model.application.validation.change;
-
-import com.yahoo.vespa.model.VespaModel;
-import com.yahoo.vespa.model.application.validation.ValidationTester;
-import com.yahoo.yolean.Exceptions;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-/**
- * Tests validation of removal of a document type.
- * Uses the types "music" and "book" as those are supported by the ValidationTester.
- *
- * @author bratseth
- */
-public class ContentTypeRemovalValidatorTest {
-
- @Test
- public void testContentTypeRemovalValidation() {
- ValidationTester tester = new ValidationTester();
-
- VespaModel previous = tester.deploy(null, getServices("music"), null).getFirst();
- try {
- tester.deploy(previous, getServices("book"), null);
- fail("Expected exception due to removal of context type 'music");
- }
- catch (IllegalArgumentException expected) {
- assertEquals("content-type-removal: Type 'music' is removed in content cluster 'test'. " +
- "This will cause loss of all data of this type",
- Exceptions.toMessageString(expected));
- }
- }
-
- @Test
- public void testOverridingContentTypeRemovalValidation() {
- ValidationTester tester = new ValidationTester();
-
- VespaModel previous = tester.deploy(null, getServices("music"), null).getFirst();
- tester.deploy(previous, getServices("book"), removalOverride); // Allowed due to override
- }
-
- private static String getServices(String documentType) {
- return "<services version='1.0'>" +
- " <content id='test' version='1.0'>" +
- " <redundancy>1</redundancy>" +
- " <engine>" +
- " <proton/>" +
- " </engine>" +
- " <documents>" +
- " <document type='" + documentType + "' mode='index'/>" +
- " </documents>" +
- " <nodes count='1'/>" +
- " </content>" +
- "</services>";
- }
-
- private static final String removalOverride =
- "<validation-overrides>\n" +
- " <allow until='2000-01-03'>content-type-removal</allow>\n" +
- "</validation-overrides>\n";
-
-}