summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortalio <tali.orenbach@amdocs.com>2017-11-12 16:12:35 +0200
committertalio <tali.orenbach@amdocs.com>2017-11-13 10:03:55 +0200
commitce889adae3f91a8296bf41ce5804a51483242b2a (patch)
treea2fffe0fdbb03b8774c40df9ac9d72e6f145b8da
parentdd1a401f81b7c90c340ab69288236763bad19e83 (diff)
forwarder
implement toggling feature on forwarder Issue-Id : SDC-653 Change-Id: I238ae82b6f1fd9fce58ab584acd362a6bafd0dff Signed-off-by: talio <tali.orenbach@amdocs.com>
-rw-r--r--onboarding/pom.xml1
-rw-r--r--openecomp-be/api/openecomp-sdc-rest-webapp/onboarding-rest-war/src/main/webapp/WEB-INF/web.xml6
-rw-r--r--openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/togglz/ToggleableFeature.java15
-rw-r--r--openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/togglz/TogglzConfiguration.java27
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java40
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseFullTranslationTest.java23
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java23
-rw-r--r--openecomp-be/pom.xml26
8 files changed, 149 insertions, 12 deletions
diff --git a/onboarding/pom.xml b/onboarding/pom.xml
index d3023c5049..9a10b0f410 100644
--- a/onboarding/pom.xml
+++ b/onboarding/pom.xml
@@ -97,6 +97,7 @@
<zusammen-state-store.version>0.2.2</zusammen-state-store.version>
<pmd.version>5.8.1</pmd.version>
<build.tools.version>${project.version}</build.tools.version>
+ <togglz.version>2.4.1.Final</togglz.version>
</properties>
<build>
diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/onboarding-rest-war/src/main/webapp/WEB-INF/web.xml b/openecomp-be/api/openecomp-sdc-rest-webapp/onboarding-rest-war/src/main/webapp/WEB-INF/web.xml
index 08e8dd8ec8..35865f988e 100644
--- a/openecomp-be/api/openecomp-sdc-rest-webapp/onboarding-rest-war/src/main/webapp/WEB-INF/web.xml
+++ b/openecomp-be/api/openecomp-sdc-rest-webapp/onboarding-rest-war/src/main/webapp/WEB-INF/web.xml
@@ -11,6 +11,12 @@
<param-value>WEB-INF/beans-services.xml</param-value>
</context-param>
+ <context-param>
+ <param-name>org.togglz.core.manager.TogglzConfig</param-name>
+ <param-value>org.openecomp.sdc.common.togglz.TogglzConfiguration</param-value>
+ </context-param>
+
+
<listener>
<listener-class>org.openecomp.server.listeners.OnboardingAppStartupListener</listener-class>
diff --git a/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/togglz/ToggleableFeature.java b/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/togglz/ToggleableFeature.java
new file mode 100644
index 0000000000..aab9845573
--- /dev/null
+++ b/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/togglz/ToggleableFeature.java
@@ -0,0 +1,15 @@
+package org.openecomp.sdc.common.togglz;
+
+import org.togglz.core.Feature;
+import org.togglz.core.annotation.Label;
+import org.togglz.core.context.FeatureContext;
+
+public enum ToggleableFeature implements Feature {
+
+ @Label ("Forwarder Capability")
+ FORWARDER_CAPABILITY;
+
+ public boolean isActive() {
+ return FeatureContext.getFeatureManager().isActive(this);
+ }
+}
diff --git a/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/togglz/TogglzConfiguration.java b/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/togglz/TogglzConfiguration.java
new file mode 100644
index 0000000000..d743205e5b
--- /dev/null
+++ b/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/togglz/TogglzConfiguration.java
@@ -0,0 +1,27 @@
+package org.openecomp.sdc.common.togglz;
+
+import org.togglz.core.Feature;
+import org.togglz.core.manager.TogglzConfig;
+import org.togglz.core.repository.StateRepository;
+import org.togglz.core.repository.file.FileBasedStateRepository;
+import org.togglz.core.user.SimpleFeatureUser;
+import org.togglz.core.user.UserProvider;
+
+import java.io.File;
+
+public class TogglzConfiguration implements TogglzConfig {
+ @Override
+ public Class<? extends Feature> getFeatureClass() {
+ return ToggleableFeature.class;
+ }
+
+ @Override
+ public StateRepository getStateRepository() {
+ return new FileBasedStateRepository(new File("/tmp/features.properties"));
+ }
+
+ @Override
+ public UserProvider getUserProvider() {
+ return () -> new SimpleFeatureUser("admin", true);
+ }
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java
index d401e4930b..895b3f9670 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java
@@ -27,6 +27,7 @@ import org.openecomp.core.translator.datatypes.TranslatorOutput;
import org.openecomp.core.translator.factory.HeatToToscaTranslatorFactory;
import org.openecomp.core.utilities.file.FileContentHandler;
import org.openecomp.core.utilities.file.FileUtils;
+import org.openecomp.sdc.common.togglz.ToggleableFeature;
import org.openecomp.sdc.tosca.services.YamlUtil;
import org.openecomp.core.validation.util.MessageContainerUtil;
import org.openecomp.sdc.common.errors.CoreException;
@@ -106,6 +107,7 @@ public class HeatToToscaUtil {
protected static Logger logger = (Logger) LoggerFactory.getLogger(HeatToToscaUtil.class);
protected static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
+ private static final String forwarder = "forwarder";
/**
@@ -1277,23 +1279,37 @@ public class HeatToToscaUtil {
NodeType flatNodeType =
getNodeTypeWithFlatHierarchy(type, serviceTemplate, context);
- String capabilityKey;
- List<String> capabilityMapping;
+
if (flatNodeType.getCapabilities() != null) {
- for (Map.Entry<String, CapabilityDefinition> capabilityNodeEntry : flatNodeType
- .getCapabilities()
- .entrySet()) {
- capabilityKey = capabilityNodeEntry.getKey() + "_" + templateName;
- nodeTypeCapabilitiesDefinition.put(capabilityKey, capabilityNodeEntry.getValue().clone());
- capabilityMapping = new ArrayList<>();
- capabilityMapping.add(templateName);
- capabilityMapping.add(capabilityNodeEntry.getKey());
- capabilitySubstitutionMapping.put(capabilityKey, capabilityMapping);
- }
+ flatNodeType.getCapabilities()
+ .entrySet()
+ .stream()
+ .filter(capabilityNodeEntry -> shouldCapabilityNeedsToBeAdded(capabilityNodeEntry.getKey()))
+ .forEach(capabilityNodeEntry ->
+ addCapabilityToSubMapping(
+ templateName, capabilityNodeEntry, nodeTypeCapabilitiesDefinition, capabilitySubstitutionMapping));
}
mdcDataDebugMessage.debugExitMessage(null, null);
}
+ private static boolean shouldCapabilityNeedsToBeAdded(String capabilityKey) {
+ return !capabilityKey.contains(forwarder) || ToggleableFeature.FORWARDER_CAPABILITY.isActive();
+ }
+
+ private static void addCapabilityToSubMapping(String templateName,
+ Map.Entry<String, CapabilityDefinition> capabilityNodeEntry,
+ Map<String, CapabilityDefinition> nodeTypeCapabilitiesDefinition,
+ Map<String, List<String>> capabilitySubstitutionMapping) {
+ String capabilityKey;
+ List<String> capabilityMapping;
+ capabilityKey = capabilityNodeEntry.getKey() + "_" + templateName;
+ nodeTypeCapabilitiesDefinition.put(capabilityKey, capabilityNodeEntry.getValue().clone());
+ capabilityMapping = new ArrayList<>();
+ capabilityMapping.add(templateName);
+ capabilityMapping.add(capabilityNodeEntry.getKey());
+ capabilitySubstitutionMapping.put(capabilityKey, capabilityMapping);
+ }
+
private static List<Map<String, RequirementDefinition>> getNodeTypeReqs(
String type,
String templateName,
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseFullTranslationTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseFullTranslationTest.java
index 59dea8afb9..d0364e793c 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseFullTranslationTest.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseFullTranslationTest.java
@@ -21,7 +21,9 @@
package org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation;
import org.apache.commons.collections4.MapUtils;
+import org.junit.AfterClass;
import org.junit.Assert;
+import org.junit.BeforeClass;
import org.openecomp.core.translator.api.HeatToToscaTranslator;
import org.openecomp.core.translator.datatypes.TranslatorOutput;
import org.openecomp.core.translator.factory.HeatToToscaTranslatorFactory;
@@ -30,6 +32,7 @@ import org.openecomp.core.validation.util.MessageContainerUtil;
import org.openecomp.sdc.common.errors.CoreException;
import org.openecomp.sdc.common.errors.ErrorCategory;
import org.openecomp.sdc.common.errors.ErrorCode;
+import org.openecomp.sdc.common.togglz.ToggleableFeature;
import org.openecomp.sdc.datatypes.error.ErrorLevel;
import org.openecomp.sdc.datatypes.error.ErrorMessage;
import org.openecomp.sdc.logging.context.impl.MdcDataErrorMessage;
@@ -39,6 +42,8 @@ import org.openecomp.sdc.logging.types.LoggerTragetServiceName;
import org.openecomp.sdc.tosca.services.ToscaFileOutputService;
import org.openecomp.sdc.tosca.services.impl.ToscaFileOutputServiceCsarImpl;
import org.openecomp.sdc.translator.TestUtils;
+import org.togglz.testing.TestFeatureManager;
+import org.togglz.testing.TestFeatureManagerProvider;
import java.io.BufferedInputStream;
import java.io.File;
@@ -62,6 +67,24 @@ public class BaseFullTranslationTest {
public static final String IN_POSTFIX = "/in";
public static final String OUT_POSTFIX = "/out";
+ protected static TestFeatureManager manager;
+
+ @BeforeClass
+ public static void enableForwarderFeature(){
+ manager = new TestFeatureManager(ToggleableFeature.class);
+ if (!ToggleableFeature.FORWARDER_CAPABILITY.isActive()) {
+ manager.enable(ToggleableFeature.FORWARDER_CAPABILITY);
+ }
+ }
+
+
+ @AfterClass
+ public static void disableForwarderFeature() {
+ manager.disable(ToggleableFeature.FORWARDER_CAPABILITY);
+ manager = null;
+ TestFeatureManagerProvider.setFeatureManager(null);
+ }
+
protected void testTranslationWithInit(String path) throws IOException {
File translatedZipFile = initTranslatorAndTranslate(path);
testTranslation(path, translatedZipFile);
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java
index 62f3c07411..528db5ee77 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java
@@ -34,8 +34,10 @@ import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidati
import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validateVolumeInConsolidationData;
import org.apache.commons.collections4.MapUtils;
+import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
+import org.junit.BeforeClass;
import org.openecomp.core.translator.datatypes.TranslatorOutput;
import org.openecomp.core.utilities.file.FileUtils;
import org.openecomp.core.utilities.json.JsonUtil;
@@ -43,6 +45,7 @@ import org.openecomp.core.validation.util.MessageContainerUtil;
import org.openecomp.sdc.common.errors.CoreException;
import org.openecomp.sdc.common.errors.ErrorCategory;
import org.openecomp.sdc.common.errors.ErrorCode;
+import org.openecomp.sdc.common.togglz.ToggleableFeature;
import org.openecomp.sdc.common.utils.SdcCommon;
import org.openecomp.sdc.datatypes.error.ErrorLevel;
import org.openecomp.sdc.datatypes.error.ErrorMessage;
@@ -66,6 +69,8 @@ import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolida
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.TypeComputeConsolidationData;
import org.openecomp.sdc.translator.services.heattotosca.TranslationService;
import org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataValidationType;
+import org.togglz.testing.TestFeatureManager;
+import org.togglz.testing.TestFeatureManagerProvider;
import java.io.BufferedInputStream;
import java.io.File;
@@ -98,6 +103,24 @@ public class BaseResourceTranslationTest {
private final String MANIFEST_NAME = SdcCommon.MANIFEST_NAME;
private String validationFilename = "validationOutput.json";
+ protected static TestFeatureManager manager;
+
+ @BeforeClass
+ public static void enableForwarderFeature(){
+ manager = new TestFeatureManager(ToggleableFeature.class);
+ if (!ToggleableFeature.FORWARDER_CAPABILITY.isActive()) {
+ manager.enable(ToggleableFeature.FORWARDER_CAPABILITY);
+ }
+ }
+
+
+ @AfterClass
+ public static void disableForwarderFeature() {
+ manager.disable(ToggleableFeature.FORWARDER_CAPABILITY);
+ manager = null;
+ TestFeatureManagerProvider.setFeatureManager(null);
+ }
+
@Before
public void setUp() throws IOException {
initTranslatorAndTranslate();
diff --git a/openecomp-be/pom.xml b/openecomp-be/pom.xml
index 442b7dec15..3934f411fd 100644
--- a/openecomp-be/pom.xml
+++ b/openecomp-be/pom.xml
@@ -32,6 +32,32 @@
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
+
+ <!-- Feature Toggle support libraries-->
+ <dependency>
+ <groupId>org.togglz</groupId>
+ <artifactId>togglz-core</artifactId>
+ <version>${togglz.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.togglz</groupId>
+ <artifactId>togglz-servlet</artifactId>
+ <version>${togglz.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.togglz</groupId>
+ <artifactId>togglz-console</artifactId>
+ <version>${togglz.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.togglz</groupId>
+ <artifactId>togglz-testing</artifactId>
+ <version>${togglz.version}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>