From ba31685194c77ef140411531299696ae701385d4 Mon Sep 17 00:00:00 2001 From: da490c Date: Thu, 22 Mar 2018 00:32:52 -0400 Subject: Convert Sparky to Spring-Boot Issue-ID: AAI-599 Change-Id: If474dd02794f442fdddcd90f62fb75e0d6b907e7 Signed-off-by: da490c --- .../src/main/config/ajsc-override-web.xml | 13 ++ .../src/main/config/runner-web.xml | 14 ++ .../src/main/docker/Dockerfile | 30 ++++ .../main/java/org/onap/aai/sparky/Application.java | 171 +++++++++++++++++++++ .../aai/sparky/config/PropertyConfigLoader.java | 34 ++++ .../config/SparkySpringXmlConfiguration.java | 46 ++++++ .../src/main/resources/banner.txt | 8 + .../src/main/scripts/start.sh | 59 +++++++ 8 files changed, 375 insertions(+) create mode 100644 sparkybe-onap-application/src/main/config/ajsc-override-web.xml create mode 100644 sparkybe-onap-application/src/main/config/runner-web.xml create mode 100644 sparkybe-onap-application/src/main/docker/Dockerfile create mode 100644 sparkybe-onap-application/src/main/java/org/onap/aai/sparky/Application.java create mode 100644 sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/PropertyConfigLoader.java create mode 100644 sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/SparkySpringXmlConfiguration.java create mode 100644 sparkybe-onap-application/src/main/resources/banner.txt create mode 100644 sparkybe-onap-application/src/main/scripts/start.sh (limited to 'sparkybe-onap-application/src/main') diff --git a/sparkybe-onap-application/src/main/config/ajsc-override-web.xml b/sparkybe-onap-application/src/main/config/ajsc-override-web.xml new file mode 100644 index 0000000..b8ff7da --- /dev/null +++ b/sparkybe-onap-application/src/main/config/ajsc-override-web.xml @@ -0,0 +1,13 @@ + + + + + + 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 new file mode 100644 index 0000000..ca0c5e2 --- /dev/null +++ b/sparkybe-onap-application/src/main/config/runner-web.xml @@ -0,0 +1,14 @@ + + + + + + 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 new file mode 100644 index 0000000..d98110c --- /dev/null +++ b/sparkybe-onap-application/src/main/docker/Dockerfile @@ -0,0 +1,30 @@ +FROM ubuntu:14.04 + +ARG MICRO_HOME=/opt/app/sparky +ARG BIN_HOME=$MICRO_HOME/bin + +RUN apt-get update + +# Install and setup java8 +RUN apt-get update && apt-get install -y software-properties-common +## sudo -E is required to preserve the environment. If you remove that line, it will most like freeze at this step +RUN sudo -E add-apt-repository ppa:openjdk-r/ppa && apt-get update && apt-get install -y openjdk-8-jdk +## Setup JAVA_HOME, this is useful for docker commandline +ENV JAVA_HOME usr/lib/jvm/java-8-openjdk-amd64 +RUN export JAVA_HOME + +# Build up the deployment folder structure +RUN mkdir -p $MICRO_HOME +RUN mkdir -p $BIN_HOME + +# copy swm/package/nix/dist_files/appl/sparky-be/${project.version}/ $MICRO_HOME/ +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 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 new file mode 100644 index 0000000..d6721b2 --- /dev/null +++ b/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/Application.java @@ -0,0 +1,171 @@ +/** + * ============LICENSE_START=================================================== + * SPARKY (AAI UI service) + * ============================================================================ + * Copyright © 2017 AT&T Intellectual Property. + * Copyright © 2017 Amdocs + * 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. + * ============LICENSE_END===================================================== + * + * ECOMP and OpenECOMP are trademarks + * and service marks of AT&T Intellectual Property. + */ +/** + * 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 */ { + + 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); + }*/ + + } + + /* @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 + */ + + @Bean + ServletRegistrationBean servletRegistrationBean() { + final ServletRegistrationBean servlet = + new ServletRegistrationBean(new CamelHttpTransportServlet(), "/rest/*"); + servlet.setName("CamelServlet"); + 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 + */ + + /*@Bean + public FilterRegistrationBean myFilter() { + FilterRegistrationBean registration = new FilterRegistrationBean(); + Filter myFilter = new LoginFilter(); + beanFactory.autowireBean(myFilter); + registration.setFilter(myFilter); + registration.addUrlPatterns("/*"); + return registration; + }*/ + + + + +} 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/PropertyConfigLoader.java new file mode 100644 index 0000000..ddb697f --- /dev/null +++ b/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/PropertyConfigLoader.java @@ -0,0 +1,34 @@ +/** + * ============LICENSE_START=================================================== + * SPARKY (AAI UI service) + * ============================================================================ + * Copyright © 2017 AT&T Intellectual Property. + * Copyright © 2017 Amdocs + * 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. + * ============LICENSE_END===================================================== + * + * ECOMP and OpenECOMP are trademarks + * and service marks of AT&T Intellectual Property. + */ +package org.onap.aai.sparky.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; + +@Configuration +@PropertySource("file:${CONFIG_HOME}/config/sparky-application.properties") +public class PropertyConfigLoader { + +} 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 new file mode 100644 index 0000000..e12e72d --- /dev/null +++ b/sparkybe-onap-application/src/main/java/org/onap/aai/sparky/config/SparkySpringXmlConfiguration.java @@ -0,0 +1,46 @@ +/** + * ============LICENSE_START=================================================== + * SPARKY (AAI UI service) + * ============================================================================ + * Copyright © 2017 AT&T Intellectual Property. + * Copyright © 2017 Amdocs + * 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. + * ============LICENSE_END===================================================== + * + * ECOMP and OpenECOMP are trademarks + * and service marks of AT&T Intellectual Property. + */ +/** + * 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 {} diff --git a/sparkybe-onap-application/src/main/resources/banner.txt b/sparkybe-onap-application/src/main/resources/banner.txt new file mode 100644 index 0000000..c6081b2 --- /dev/null +++ b/sparkybe-onap-application/src/main/resources/banner.txt @@ -0,0 +1,8 @@ + _____ _ ____ ______ ____ _ _ _____ + / ____| | | | _ \| ____|_ / __ \| \ | | /\ | __ \ + | (___ _ __ __ _ _ __| | ___ _ ______| |_) | |__ (_) | | | | \| | / \ | |__) | + \___ \| '_ \ / _` | '__| |/ / | | |______| _ <| __| | | | | . ` | / /\ \ | ___/ + ____) | |_) | (_| | | | <| |_| | | |_) | |____ _ | |__| | |\ |/ ____ \| | + |_____/| .__/ \__,_|_| |_|\_\\__, | |____/|______(_) \____/|_| \_/_/ \_\_| + | | __/ | + |_| |___/ \ No newline at end of file diff --git a/sparkybe-onap-application/src/main/scripts/start.sh b/sparkybe-onap-application/src/main/scripts/start.sh new file mode 100644 index 0000000..514d7c5 --- /dev/null +++ b/sparkybe-onap-application/src/main/scripts/start.sh @@ -0,0 +1,59 @@ +#!/bin/sh + +BASEDIR="/opt/app/sparky" +MICRO_HOME="$BASEDIR" +CONFIG_HOME=${MICRO_HOME}/config + +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 + +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 + +#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 -- cgit 1.2.3-korg