From b505658d523507b2aa8eec564b599ce1e2b1956a Mon Sep 17 00:00:00 2001 From: da490c Date: Wed, 28 Mar 2018 14:31:48 -0400 Subject: [PATCH] Adding support for Spring-Boot SSL Issue-ID: AAI-599 Change-Id: I55ea44c3af3631b9ff3ae72e65f663870a199973 Signed-off-by: da490c --- pom.xml | 1 + .../src/main/config/ajsc-override-web.xml | 13 --- .../src/main/config/runner-web.xml | 14 --- .../src/main/docker/Dockerfile | 21 +++-- .../main/java/org/onap/aai/sparky/Application.java | 104 +-------------------- ...tyConfigLoader.java => SparkyConfigLoader.java} | 7 +- .../aai/sparky/config/SparkyHttpConfigLoader.java | 32 +++++++ .../config/SparkySpringXmlConfiguration.java | 19 +--- .../aai/sparky/config/SparkySslConfigLoader.java | 32 +++++++ .../src/main/scripts/start.sh | 57 +---------- version.properties | 13 +++ 11 files changed, 105 insertions(+), 208 deletions(-) delete mode 100644 sparkybe-onap-application/src/main/config/ajsc-override-web.xml delete mode 100644 sparkybe-onap-application/src/main/config/runner-web.xml rename sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/{PropertyConfigLoader.java => SparkyConfigLoader.java} (91%) create mode 100644 sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/SparkyHttpConfigLoader.java create mode 100644 sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/SparkySslConfigLoader.java create mode 100644 version.properties diff --git a/pom.xml b/pom.xml index ced2b31..c869787 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,7 @@ sparky-be 1.2.0-SNAPSHOT pom + aai-sparky-be sparkybe-onap-service/pom.xml diff --git a/sparkybe-onap-application/src/main/config/ajsc-override-web.xml b/sparkybe-onap-application/src/main/config/ajsc-override-web.xml deleted file mode 100644 index b8ff7da..0000000 --- a/sparkybe-onap-application/src/main/config/ajsc-override-web.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - PortalRestAPIProxy - /api/v2/* - - - - \ No newline at end of file diff --git a/sparkybe-onap-application/src/main/config/runner-web.xml b/sparkybe-onap-application/src/main/config/runner-web.xml deleted file mode 100644 index ca0c5e2..0000000 --- a/sparkybe-onap-application/src/main/config/runner-web.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - PortalRestAPIProxy - org.openecomp.portalsdk.core.onboarding.crossapi.PortalRestAPIProxy - - - - - diff --git a/sparkybe-onap-application/src/main/docker/Dockerfile b/sparkybe-onap-application/src/main/docker/Dockerfile index d98110c..f5e620c 100644 --- a/sparkybe-onap-application/src/main/docker/Dockerfile +++ b/sparkybe-onap-application/src/main/docker/Dockerfile @@ -16,15 +16,22 @@ RUN export JAVA_HOME # Build up the deployment folder structure RUN mkdir -p $MICRO_HOME RUN mkdir -p $BIN_HOME +RUN mkdir -p $MICRO_HOME/lib/ +RUN mkdir -p $MICRO_HOME/static/services/aai/webapp/ -# copy swm/package/nix/dist_files/appl/sparky-be/${project.version}/ $MICRO_HOME/ -RUN ls -la $BIN_HOME/ +ADD *.jar $MICRO_HOME/lib/ +ADD scripts/* $MICRO_HOME/bin/ +COPY static/ $MICRO_HOME/static/services/aai/webapp/ + +RUN chmod 755 $MICRO_HOME/bin/* +RUN chmod 755 $MICRO_HOME/lib/* +RUN chmod 755 $MICRO_HOME/static/* + +#RUN ls -la $BIN_HOME/ -#RUN chmod 755 $BIN_HOME/* RUN ln -s /logs $MICRO_HOME/logs EXPOSE 8000 8000 - -CMD tail -F -n0 /etc/hosts -#CMD /opt/app/sparky/bin/start.sh -#CMD top +EXPOSE 9517 9517 + +CMD ["/opt/app/sparky/bin/start.sh"] \ No newline at end of file diff --git a/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/Application.java b/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/Application.java index 548a48b..693617b 100644 --- a/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/Application.java +++ b/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/Application.java @@ -18,92 +18,22 @@ * limitations under the License. * ============LICENSE_END========================================================= */ -/** - * This copy of Woodstox XML processor is licensed under the - * Apache (Software) License, version 2.0 ("the License"). - * See the License for details about distribution rights, and the - * specific rights regarding derivate works. - * - * You may obtain a copy of the License at: - * - * http://www.apache.org/licenses/ - * - * A copy is also included in the downloadable source code package - * containing Woodstox, in file "ASL2.0", under the same directory - * as this file. - */ package org.onap.aai.sparky; -import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.servlet.CamelHttpTransportServlet; -import org.apache.camel.model.rest.RestBindingMode; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.config.AutowireCapableBeanFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletRegistrationBean; -import org.springframework.boot.web.support.SpringBootServletInitializer; -import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; -import org.springframework.stereotype.Component; @SpringBootApplication -public class Application /*extends SpringBootServletInitializer */ { +public class Application { - private @Autowired AutowireCapableBeanFactory beanFactory; - public static void main(String[] args) { - ApplicationContext applicationContext = SpringApplication.run(Application.class, args); - - /*for (String name : applicationContext.getBeanDefinitionNames()) { - System.out.println(name); - }*/ + SpringApplication.run(Application.class, args); } - - /* @Component - class RestApi extends RouteBuilder { - - @Override - public void configure() { - - //restConfiguration().component("restlet").contextPath("/rs").bindingMode(RestBindingMode.json); - - - /*rest("/books").description("Books REST service") - .get("/").description("The list of all the books") - .route().routeId("books-api") - .bean(Database.class, "findBooks") - .endRest() - .get("order/{id}").description("Details of an order by id") - .route().routeId("order-api") - .bean(Database.class, "findOrder(${header.id})");*/ - /* } - }*/ - - - /* - * TODO: we need to figure out the initialization required for our restlets - */ - - /*@Bean - public ServletRegistrationBean restletBootstrapInitialization() { - - SpringServerServlet serverServlet = new SpringServerServlet(); - ServletRegistrationBean regBean = new ServletRegistrationBean( serverServlet, "/rest/*"); - - - Map params = new HashMap(); - - params.put("org.restlet.component", "restletComponent"); - - regBean.setInitParameters(params); - - return regBean; - }*/ - - /* * This initialization code enabled access to aai-ui-proxy-processor @@ -117,36 +47,6 @@ public class Application /*extends SpringBootServletInitializer */ { return servlet; } - /* @Bean - public EmbeddedServletContainerFactory servletContainerFactory() { - return new TomcatEmbeddedServletContainerFactory() { - - /* - * Stackoverflow solution for adding a WAR into our embedded tomcat runtime - * https://stackoverflow.com/questions/31374726/spring-boot-how-to-add-another-war-files-to-the-embedded-tomcat - */ - - - /* @Override - protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(Tomcat tomcat) { - // Ensure that the webapps directory exists - System.out.println("catalina base = " + tomcat.getServer().getCatalinaBase()); - new File(tomcat.getServer().getCatalinaBase(), "webapps").mkdirs(); - - try { - Context context = tomcat.addWebapp("/services/aai/webapp", "X:\\2018_dev\\OSEAAI\\NUC-7257-spring-boot-conversion\\onap_sparky-be\\src\\main\\resources\\extApps\\aai.war"); - - // Allow the webapp to load classes from your fat jar - context.setParentClassLoader(getClass().getClassLoader()); - } catch (ServletException ex) { - throw new IllegalStateException("Failed to add webapp", ex); - } - return super.getTomcatEmbeddedServletContainer(tomcat); - } - - }; - }*/ - /** * bind LoginFilter */ diff --git a/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/PropertyConfigLoader.java b/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/SparkyConfigLoader.java similarity index 91% rename from sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/PropertyConfigLoader.java rename to sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/SparkyConfigLoader.java index dfc4b2b..5124ce7 100644 --- a/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/PropertyConfigLoader.java +++ b/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/SparkyConfigLoader.java @@ -24,7 +24,8 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; @Configuration -@PropertySource("file:${CONFIG_HOME}/config/sparky-application.properties") -public class PropertyConfigLoader { - +@PropertySource("file:${CONFIG_HOME}/sparky-application.properties") +public class SparkyConfigLoader { + + } diff --git a/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/SparkyHttpConfigLoader.java b/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/SparkyHttpConfigLoader.java new file mode 100644 index 0000000..4c1d541 --- /dev/null +++ b/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/SparkyHttpConfigLoader.java @@ -0,0 +1,32 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2018 Amdocs + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ +package org.onap.aai.sparky.config; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; + +@Configuration +@ConditionalOnProperty(value="sparky.ssl.enabled", havingValue = "true") +@PropertySource("file:${CONFIG_HOME}/sparky-ssl-config.properties") +public class SparkyHttpConfigLoader { + +} diff --git a/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/SparkySpringXmlConfiguration.java b/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/SparkySpringXmlConfiguration.java index 79656d5..dbbe61d 100644 --- a/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/SparkySpringXmlConfiguration.java +++ b/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/SparkySpringXmlConfiguration.java @@ -18,25 +18,12 @@ * limitations under the License. * ============LICENSE_END========================================================= */ -/** - * This copy of Woodstox XML processor is licensed under the - * Apache (Software) License, version 2.0 ("the License"). - * See the License for details about distribution rights, and the - * specific rights regarding derivate works. - * - * You may obtain a copy of the License at: - * - * http://www.apache.org/licenses/ - * - * A copy is also included in the downloadable source code package - * containing Woodstox, in file "ASL2.0", under the same directory - * as this file. - */ + package org.onap.aai.sparky.config; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.ImportResource; @Configuration -@ImportResource({"file:${CONFIG_HOME}/dynamic/spring-beans/*.xml"}) -public class SparkySpringXmlConfiguration {} +@ImportResource({"file:${CONFIG_HOME}/spring-beans/*.xml"}) +public class SparkySpringXmlConfiguration {} \ No newline at end of file diff --git a/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/SparkySslConfigLoader.java b/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/SparkySslConfigLoader.java new file mode 100644 index 0000000..c493f64 --- /dev/null +++ b/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/SparkySslConfigLoader.java @@ -0,0 +1,32 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2018 Amdocs + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ +package org.onap.aai.sparky.config; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; + +@Configuration +@ConditionalOnProperty(value="sparky.ssl.enabled", havingValue = "false") +@PropertySource("file:${CONFIG_HOME}/sparky-http-config.properties") +public class SparkySslConfigLoader { + +} diff --git a/sparkybe-onap-application/src/main/scripts/start.sh b/sparkybe-onap-application/src/main/scripts/start.sh index 514d7c5..0db0d37 100644 --- a/sparkybe-onap-application/src/main/scripts/start.sh +++ b/sparkybe-onap-application/src/main/scripts/start.sh @@ -1,59 +1,10 @@ #!/bin/sh -BASEDIR="/opt/app/sparky" -MICRO_HOME="$BASEDIR" -CONFIG_HOME=${MICRO_HOME}/config +APP_HOME="/opt/app/sparky" +CONFIG_HOME=${APP_HOME}/appconfig -if [ -z "$CONFIG_HOME" ]; then - echo "CONFIG_HOME must be set in order to start up process" - exit 1 -fi - -PROPS="-DCONFIG_HOME=${CONFIG_HOME}" - -#echo $CLASSPATH +PROPS="-DAPP_HOME=${APP_HOME} -DCONFIG_HOME=${CONFIG_HOME}" set -x -exec java -Xms1024m -Xmx4096m $PROPS -jar ${MICRO_HOME}/sparky-be.jar --spring.config.name=sparky-be-application - - - - -#if [ -z "$KEY_STORE_PASSWORD" ]; then -# echo "KEY_STORE_PASSWORD must be set in order to start up process" -# exit 1 -#else -# sed -i /"KEY_STORE_PASSWORD"/d $AJSC_CONF_HOME/etc/sysprops/sys-props.properties -# echo "KEY_STORE_PASSWORD=$KEY_STORE_PASSWORD" >> $AJSC_CONF_HOME/etc/sysprops/sys-props.properties -#fi - -#if [ -z "$KEY_MANAGER_PASSWORD" ]; then -# echo "KEY_MANAGER_PASSWORD must be set in order to start up process" -# exit 1 -#else -# sed -i /"KEY_MANAGER_PASSWORD"/d $AJSC_CONF_HOME/etc/sysprops/sys-props.properties -# echo "KEY_MANAGER_PASSWORD=$KEY_MANAGER_PASSWORD" >> $AJSC_CONF_HOME/etc/sysprops/sys-props.properties -#fi - -#CLASSPATH="$AJSC_HOME/lib/ajsc-runner-2.0.0.jar" -#CLASSPATH="$CLASSPATH:$AJSC_HOME/extJars/" -#CLASSPATH="$CLASSPATH:$CONFIG_HOME/portal/" -#PROPS="-DAJSC_HOME=$AJSC_HOME" -#PROPS="$PROPS -DAJSC_CONF_HOME=$BASEDIR/bundleconfig/" -#PROPS="$PROPS -Dlogback.configurationFile=$BASEDIR/bundleconfig/etc/logback.xml" -#PROPS="$PROPS -DAJSC_SHARED_CONFIG=$AJSC_CONF_HOME" -#PROPS="$PROPS -DAJSC_EXTERNAL_LIB_FOLDERS=$AJSC_HOME/commonLibs" -#PROPS="$PROPS -DAJSC_EXTERNAL_PROPERTIES_FOLDERS=$AJSC_HOME/ajsc-shared-config/etc" -#PROPS="$PROPS -DAJSC_SERVICE_NAMESPACE=ajsc-tier-support-ui" -#PROPS="$PROPS -DAJSC_SERVICE_VERSION=v1" -#PROPS="$PROPS -DSOACLOUD_SERVICE_VERSION=0.0.0" -#PROPS="$PROPS -Dserver.port=8000" -#PROPS="$PROPS -DCONFIG_HOME=$CONFIG_HOME" - -#echo $CLASSPATH +java -Xms1024m -Xmx4096m $PROPS -jar ${APP_HOME}/lib/sparkybe-onap-application*.jar --sparky.ssl.enabled=${UI_SSL_ENABLED} -#if [ "$UI_HTTPS_PORT" ]; then -# /usr/lib/jvm/java-8-openjdk-amd64/bin/java -Xms1024m -Xmx4096m $PROPS -classpath $CLASSPATH com.att.ajsc.runner.Runner context=/ sslport=$UI_HTTPS_PORT -#elif [ "$UI_HTTP_PORT" ]; then -# /usr/lib/jvm/java-8-openjdk-amd64/bin/java -Xms1024m -Xmx4096m $PROPS -classpath $CLASSPATH com.att.ajsc.runner.Runner context=/ port=$UI_HTTP_PORT -#fi diff --git a/version.properties b/version.properties new file mode 100644 index 0000000..faf06bb --- /dev/null +++ b/version.properties @@ -0,0 +1,13 @@ +# Versioning variables +# Note that these variables cannot be structured (e.g. : version.release or version.snapshot etc... ) +# because they are used in Jenkins, whose plug-in doesn't support + +major=1 +minor=2 +patch=0 + +base_version=${major}.${minor}.${patch} + +# Release must be completed with git revision # in Jenkins +release_version=${base_version} +snapshot_version=${base_version}-SNAPSHOT -- 2.16.6