summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichaelMorris <michael.morris@est.tech>2020-02-08 22:55:49 +0000
committerOfir Sonsino <ofir.sonsino@intl.att.com>2020-02-18 16:06:37 +0000
commit580e536e8b86a50789031f56a0e20a4985d738a0 (patch)
tree9f47a6e10f55482ca590e1ff7b963dc0245421bc
parent4aa20bc42b7bd98dde15f7594084669eb92412c2 (diff)
Backend extensibility
Issue-ID: SDC-2761 Change-Id: I9287e0255fdda8da61cafc4b761190c8992b9aff Signed-off-by: MichaelMorris <michael.morris@est.tech>
-rw-r--r--.gitignore1
-rw-r--r--catalog-be/pom.xml35
-rw-r--r--catalog-be/sdc-backend/Dockerfile3
-rw-r--r--catalog-be/sdc-backend/context.xml.template14
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/plugins/CsarEntryGenerator.java39
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/tosca/CsarUtils.java14
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/config/CatalogBESpringConfig.java1
7 files changed, 105 insertions, 2 deletions
diff --git a/.gitignore b/.gitignore
index 2d5041ffe0..33ad652efd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -186,6 +186,7 @@ sdc-os-chef/.idea/*
catalog-be/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/files/default/ecomp-error-configuration.yaml
catalog-be/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/files/default/error-configuration.yaml
catalog-be/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/files/default/logback.xml
+catalog-be/sdc-backend/context.xml
test-apis-ci/sdc-api-tests/chef-repo/cookbooks/sdc-api-tests/files/default/testSuites/*
diff --git a/catalog-be/pom.xml b/catalog-be/pom.xml
index fe52c626ab..cbfe98b343 100644
--- a/catalog-be/pom.xml
+++ b/catalog-be/pom.xml
@@ -974,6 +974,39 @@
<build>
<plugins>
<plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <version>1.8</version>
+ <executions>
+ <execution>
+ <id>copy-context-file</id>
+ <phase>validate</phase>
+ <configuration>
+ <target>
+ <copy file="sdc-backend/context.xml.template" tofile="sdc-backend/context.xml"/>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>set-version-in-context-file</id>
+ <phase>generate-resources</phase>
+ <configuration>
+ <target>
+ <replace file="sdc-backend/context.xml">
+ <replacetoken>projectversion</replacetoken>
+ <replacevalue>${project.version}</replacevalue>
+ </replace>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
@@ -1129,4 +1162,4 @@
</build>
</profile>
</profiles>
-</project> \ No newline at end of file
+</project>
diff --git a/catalog-be/sdc-backend/Dockerfile b/catalog-be/sdc-backend/Dockerfile
index fc0c9cffa2..2e23d41910 100644
--- a/catalog-be/sdc-backend/Dockerfile
+++ b/catalog-be/sdc-backend/Dockerfile
@@ -4,7 +4,8 @@ COPY chef-solo /root/chef-solo/
COPY chef-repo/cookbooks/. /root/chef-solo/cookbooks/
-ADD --chown=jetty:jetty catalog-be-*.war ${JETTY_BASE}/webapps/
+ADD --chown=jetty:jetty catalog-be-*.war ${JETTY_BASE}/webappwar/
+ADD --chown=jetty:jetty context.xml ${JETTY_BASE}/webapps/
USER root
diff --git a/catalog-be/sdc-backend/context.xml.template b/catalog-be/sdc-backend/context.xml.template
new file mode 100644
index 0000000000..1f1741f241
--- /dev/null
+++ b/catalog-be/sdc-backend/context.xml.template
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE Configure PUBLIC
+ "-//Mort Bay Consulting//DTD Configure//EN"
+ "http://www.eclipse.org/jetty/configure_9_0.dtd">
+
+<Configure class="org.eclipse.jetty.webapp.WebAppContext">
+ <Set name="contextPath">/</Set>
+ <Set name="war">
+ <SystemProperty name="jetty.base"/>/webappwar/catalog-be-projectversion.war
+ </Set>
+ <Set name="extraClasspath">
+ <SystemProperty name="jetty.base"/>/plugins/*
+ </Set>
+</Configure>
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/plugins/CsarEntryGenerator.java b/catalog-be/src/main/java/org/openecomp/sdc/be/plugins/CsarEntryGenerator.java
new file mode 100644
index 0000000000..856d53f7cd
--- /dev/null
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/plugins/CsarEntryGenerator.java
@@ -0,0 +1,39 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2020 Nordix Foundation. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.openecomp.sdc.be.plugins;
+
+import java.util.Map;
+
+import org.openecomp.sdc.be.model.Component;
+
+/**
+ * Implementations of this interface shall generate entries to be included in a csar.
+ */
+public interface CsarEntryGenerator {
+
+ /**
+ * Generate entries to be included in a csar.
+ *
+ * @param component the component the csar is based on
+ * @return Map of name to contents for entries to be included in the csar
+ */
+ Map<String, byte[]> generateCsarEntries(final Component component);
+
+}
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/CsarUtils.java b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/CsarUtils.java
index 80bee80d06..2721fda2c5 100644
--- a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/CsarUtils.java
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/CsarUtils.java
@@ -51,6 +51,7 @@ import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade
import org.openecomp.sdc.be.model.jsonjanusgraph.utils.ModelConverter;
import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
import org.openecomp.sdc.be.model.operations.impl.DaoStatusConverter;
+import org.openecomp.sdc.be.plugins.CsarEntryGenerator;
import org.openecomp.sdc.be.resources.data.DAOArtifactData;
import org.openecomp.sdc.be.resources.data.SdcSchemaFilesData;
import org.openecomp.sdc.be.tosca.model.ToscaTemplate;
@@ -108,6 +109,9 @@ public class CsarUtils {
private ToscaExportHandler toscaExportUtils;
@Autowired
protected ToscaOperationFacade toscaOperationFacade;
+
+ @Autowired(required = false)
+ private List<CsarEntryGenerator> generators;
private static final String CONFORMANCE_LEVEL = ConfigurationManager.getConfigurationManager().getConfiguration().getToscaConformanceLevel();
private static final String SDC_VERSION = ExternalConfiguration.getAppVersion();
@@ -303,6 +307,16 @@ public class CsarUtils {
return Either.right(collectedComponentCsarDefinition.right().value());
}
+ if (generators != null) {
+ for (CsarEntryGenerator generator: generators) {
+ log.debug("Invoking CsarEntryGenerator: {}", generator.getClass().getName());
+ for (Entry<String, byte[]> pluginGeneratedFile : generator.generateCsarEntries(component).entrySet()) {
+ zip.putNextEntry(new ZipEntry(pluginGeneratedFile.getKey()));
+ zip.write(pluginGeneratedFile.getValue());
+ }
+ }
+ }
+
return writeAllFilesToCsar(component, collectedComponentCsarDefinition.left().value(), zip, isInCertificationRequest);
}
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/config/CatalogBESpringConfig.java b/catalog-be/src/main/java/org/openecomp/sdc/config/CatalogBESpringConfig.java
index 7e5535d688..2f72b771e1 100644
--- a/catalog-be/src/main/java/org/openecomp/sdc/config/CatalogBESpringConfig.java
+++ b/catalog-be/src/main/java/org/openecomp/sdc/config/CatalogBESpringConfig.java
@@ -60,6 +60,7 @@ import org.springframework.core.annotation.Order;
"org.openecomp.sdc.be.externalapi.servlet",
"org.openecomp.sdc.be.servlets",
"org.openecomp.sdc.be.filters",
+ "org.openecomp.sdc.be.plugins",
"org.openecomp.sdc.be.togglz"
})
public class CatalogBESpringConfig {