diff options
-rw-r--r-- | pom.xml | 829 | ||||
-rw-r--r-- | src/main/assembly/descriptor.xml | 36 | ||||
-rw-r--r-- | src/main/bin/start.sh | 21 | ||||
-rw-r--r-- | src/main/docker/Dockerfile | 23 | ||||
-rw-r--r-- | src/main/resources/logback.xml | 199 |
5 files changed, 717 insertions, 391 deletions
@@ -22,381 +22,476 @@ --> <project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.onap.oparent</groupId> - <artifactId>oparent</artifactId> - <version>2.0.0</version> - <relativePath /> - </parent> + <parent> + <groupId>org.onap.oparent</groupId> + <artifactId>oparent</artifactId> + <version>2.0.0</version> + <relativePath/> + </parent> - <groupId>org.onap.aai</groupId> - <artifactId>babel</artifactId> - <version>1.5.1-SNAPSHOT</version> - <packaging>jar</packaging> + <groupId>org.onap.aai</groupId> + <artifactId>babel</artifactId> + <version>1.5.1-SNAPSHOT</version> + <packaging>jar</packaging> - <name>aai-babel</name> - <description>ONAP AAI Babel Microservice</description> + <name>aai-babel</name> + <description>ONAP AAI Babel Microservice</description> - <properties> - <!-- Spring boot version --> - <spring.boot.version>2.1.6.RELEASE</spring.boot.version> + <properties> + <!-- Spring boot version --> + <spring.boot.version>2.1.6.RELEASE</spring.boot.version> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> - <java.version>1.8</java.version> - <docker.location>${basedir}/target</docker.location> - <aai.schema.source.folder>onap/aai_schema</aai.schema.source.folder> - <aai.schema.target.folder>${project.build.directory}/aai-schema</aai.schema.target.folder> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> + <java.version>1.8</java.version> + <aai.schema.source.folder>onap/aai_schema</aai.schema.source.folder> + <aai.schema.target.folder>${project.build.directory}/aai-schema</aai.schema.target.folder> - <!-- Dependency Versions --> - <common.logging.version>1.2.2</common.logging.version> - <sdc.tosca.version>1.5.1</sdc.tosca.version> - <commons.compress.version>1.18</commons.compress.version> - <javax.ws.rs.version>2.1</javax.ws.rs.version> - <mvn.jaxb2.version>0.13.2</mvn.jaxb2.version> - <aai-schema.group.id>org.onap.aai.schema-service</aai-schema.group.id> - <aai-schema.version>1.5.0</aai-schema.version> - <apache.lang3.version>3.7</apache.lang3.version> - <aai.rest.client.version>1.2.1</aai.rest.client.version> - <sdc.distribution.client.version>1.3.0</sdc.distribution.client.version> - <xmlunit.version>1.6</xmlunit.version> - <logback.version>1.2.3</logback.version> - <antrun.version>1.8</antrun.version> - </properties> + <!-- docker related properties --> + <docker.fabric.version>0.28.0</docker.fabric.version> + <aai.docker.version>1.0.0</aai.docker.version> + <aai.build.directory>${project.build.directory}/${project.artifactId}-${project.version}-build/ + </aai.build.directory> + <aai.docker.namespace>onap</aai.docker.namespace> + <aai.base.image>alpine</aai.base.image> + <aai.base.image.version>1.6.0</aai.base.image.version> - <dependencyManagement> - <dependencies> - <dependency> - <!-- Import dependency management from Spring Boot --> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-dependencies</artifactId> - <version>${spring.boot.version}</version> - <type>pom</type> - <scope>import</scope> - </dependency> - </dependencies> - </dependencyManagement> + <!-- Dependency Versions --> + <common.logging.version>1.2.2</common.logging.version> + <sdc.tosca.version>1.5.1</sdc.tosca.version> + <commons.compress.version>1.18</commons.compress.version> + <javax.ws.rs.version>2.1</javax.ws.rs.version> + <mvn.jaxb2.version>0.13.2</mvn.jaxb2.version> + <aai-schema.group.id>org.onap.aai.schema-service</aai-schema.group.id> + <aai-schema.version>1.5.0</aai-schema.version> + <apache.lang3.version>3.7</apache.lang3.version> + <aai.rest.client.version>1.2.1</aai.rest.client.version> + <sdc.distribution.client.version>1.3.0</sdc.distribution.client.version> + <xmlunit.version>1.6</xmlunit.version> + <logback.version>1.2.3</logback.version> + <antrun.version>1.8</antrun.version> + <!-- This will be used for the docker images as the default format of maven build has issues --> + <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format> + </properties> - <dependencies> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-jetty</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-jersey</artifactId> - <exclusions> - <exclusion> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-tomcat</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.onap.aai.logging-service</groupId> - <artifactId>common-logging</artifactId> - <version>${common.logging.version}</version> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - <version>${logback.version}</version><!--$NO-MVN-MAN-VER$--> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-core</artifactId> - <version>${logback.version}</version><!--$NO-MVN-MAN-VER$--> - </dependency> - <dependency> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - </dependency> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-compress</artifactId> - <version>${commons.compress.version}</version> - </dependency> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-lang3</artifactId> - </dependency> - <dependency> - <groupId>javax.ws.rs</groupId> - <artifactId>javax.ws.rs-api</artifactId> - <version>${javax.ws.rs.version}</version> - </dependency> - <dependency> - <groupId>org.codehaus.groovy</groupId> - <artifactId>groovy</artifactId> - </dependency> - <dependency> - <groupId>org.onap.sdc.sdc-tosca</groupId> - <artifactId>sdc-tosca</artifactId> - <version>${sdc.tosca.version}</version> - </dependency> - <dependency> - <groupId>org.onap.aai</groupId> - <artifactId>rest-client</artifactId> - <version>${aai.rest.client.version}</version> - </dependency> - - <!-- Testing --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-test</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.onap.sdc.sdc-distribution-client</groupId> - <artifactId>sdc-distribution-client</artifactId> - <version>${sdc.distribution.client.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>xmlunit</groupId> - <artifactId>xmlunit</artifactId> - <version>${xmlunit.version}</version> - <scope>test</scope> - </dependency> - </dependencies> + <dependencyManagement> + <dependencies> + <dependency> + <!-- Import dependency management from Spring Boot --> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-dependencies</artifactId> + <version>${spring.boot.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + </dependencies> + </dependencyManagement> - <build> - <finalName>babel</finalName> - <plugins> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - <version>${spring.boot.version}</version> - <configuration> - <jvmArguments> - -DCONFIG_HOME=./appconfig-local - -DAPP_HOME=. - -Dtosca.mappings.config=./appconfig-local/tosca-mappings.json - -DKEY_STORE_PASSWORD=${KEY_STORE_PASSWORD} - </jvmArguments> - </configuration> - <executions> - <execution> - <goals> - <goal>repackage</goal> - </goals> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <id>unpack</id> - <phase>initialize</phase> - <goals> - <goal>unpack</goal> - </goals> - <configuration> - <artifactItems> - <artifactItem> - <groupId>${aai-schema.group.id}</groupId> - <artifactId>aai-schema</artifactId> - <version>${aai-schema.version}</version> - <type>jar</type> - <includes>${aai.schema.source.folder}/aai_schema_v**.xsd</includes> - <outputDirectory>${project.build.directory}/tmp</outputDirectory> - </artifactItem> - </artifactItems> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-antrun-plugin</artifactId> - <version>${antrun.version}</version> - <executions> - <execution> - <id>Flatten XSDs</id> - <phase>initialize</phase> - <goals> - <goal>run</goal> - </goals> - <configuration> - <target> - <copy todir="${aai.schema.target.folder}" flatten="true"> - <fileset dir="${project.build.directory}/tmp"> - <include name="**/*.xsd" /> - </fileset> - </copy> - </target> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.jvnet.jaxb2.maven2</groupId> - <artifactId>maven-jaxb2-plugin</artifactId> - <version>${mvn.jaxb2.version}</version> - <executions> - <execution> - <phase>process-sources</phase> - <goals> - <goal>generate</goal> - </goals> - </execution> - </executions> - <configuration> - <schemaDirectory>${aai.schema.target.folder}</schemaDirectory> - <generatePackage>org.onap.aai.babel.xml.generator.xsd</generatePackage> - <generateDirectory>${project.build.directory}/generated-sources</generateDirectory> - <schemaIncludes> - <include>aai_schema_latest.xsd</include> - </schemaIncludes> - <extension>true</extension> - <args> - <arg>-Xannotate</arg> - </args> - <plugins> - <plugin> - <groupId>org.jvnet.jaxb2_commons</groupId> - <artifactId>jaxb2-basics-annotate</artifactId> - <version>0.6.4</version> - </plugin> - <!-- Add the dependencies with your annotations as 'plugins' below --> - <plugin> - <groupId>org.jvnet.jaxb2_commons</groupId> - <artifactId>jaxb2-annotate-plugin-test-annox-annotations</artifactId> - <version>1.0.0</version> - </plugin> - </plugins> - </configuration> - </plugin> - <plugin> - <artifactId>exec-maven-plugin</artifactId> - <groupId>org.codehaus.mojo</groupId> - <version>1.5.0</version> - <executions> - <execution><!-- Run our script to get latest xsd version --> - <id>Get latest xsd version</id> - <phase>generate-sources</phase> - <goals> - <goal>exec</goal> - </goals> - <configuration> - <workingDirectory>${basedir}/scripts</workingDirectory> - <executable>bash</executable> - <commandlineArgs>get-latest-xsd-version.sh ${basedir}</commandlineArgs> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>com.mycila</groupId> - <artifactId>license-maven-plugin</artifactId> - <version>3.0</version> - <configuration> - <header>License.txt</header> - <includes> - <include>src/main/java/**</include> - <include>src/test/java/**</include> - <include>pom.xml</include> - </includes> - <skipExistingHeaders>true</skipExistingHeaders> - </configuration> - <executions> - <execution> - <goals> - <!-- Set goal from "check" to "format" to auto update license headers --> - <goal>check</goal> - </goals> - <phase>validate</phase> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - <configuration> - <reuseForks>false</reuseForks> - <forkCount>1</forkCount> - <environmentVariables> - <APP_HOME>.</APP_HOME> - <CONFIG_HOME>src/test/resources</CONFIG_HOME> - </environmentVariables> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-resources-plugin</artifactId> - <version>3.0.2</version> - <executions> - <execution> - <id>copy-docker-file</id> - <phase>package</phase> - <goals> - <goal>copy-resources</goal> - </goals> - <configuration> - <outputDirectory>target</outputDirectory> - <overwrite>true</overwrite> - <resources> - <resource> - <directory>${basedir}/src/main/docker</directory> - <filtering>true</filtering> - </resource> - <resource> - <directory>${basedir}/src/main/bin/</directory> - <filtering>true</filtering> - </resource> - </resources> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <version>3.0.2</version> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>jar</goal> - </goals> - <configuration> - <classifier>client</classifier> - <includes> - <include>**/babel/service/data/*</include> - </includes> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-deploy-plugin</artifactId> - <configuration> - <classifier>client</classifier> - </configuration> - </plugin> - <plugin> - <groupId>com.spotify</groupId> - <artifactId>docker-maven-plugin</artifactId> - <version>0.4.11</version> - <configuration> - <verbose>true</verbose> - <serverId>docker-hub</serverId> - <imageName>${docker.push.registry}/onap/${project.artifactId}</imageName> - <dockerDirectory>${docker.location}</dockerDirectory> - <imageTags> - <imageTag>latest</imageTag> - </imageTags> - <forceTags>true</forceTags> - </configuration> - </plugin> - </plugins> - </build> + <profiles> + <!-- Docker profile to be used for building docker image and pushing to nexus --> + <profile> + <id>docker</id> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <version>3.0.0</version> + <executions> + <execution> + <phase>pre-clean</phase> + <id>parse-version</id> + <goals> + <goal>parse-version</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.groovy.maven</groupId> + <artifactId>gmaven-plugin</artifactId> + <version>1.0</version> + <executions> + <execution> + <phase>pre-clean</phase> + <goals> + <goal>execute</goal> + </goals> + <configuration> + <source> + def userAaiBaseImage = session.userProperties['aai.base.image']; + def userAaiCommonVersion = session.userProperties['aai.base.image.version']; + if (userAaiCommonVersion != null) { + project.properties['aai.base.image.version'] = userAaiCommonVersion; + } + if (userAaiBaseImage != null) { + project.properties['aai.base.image'] = userAaiBaseImage; + } + log.info 'Base image flavour: ' + project.properties['aai.base.image']; + log.info 'Base image version: ' + project.properties['aai.base.image.version']; + </source> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>io.fabric8</groupId> + <artifactId>docker-maven-plugin</artifactId> + <version>${docker.fabric.version}</version> + <configuration> + <verbose>true</verbose> + <apiVersion>1.23</apiVersion> + <images> + <image> + <name>${docker.push.registry}/${aai.docker.namespace}/${project.artifactId}:%l + </name> + <build> + <filter>@</filter> + <tags> + <tag>latest</tag> + <tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}-STAGING-latest</tag> + <tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}-STAGING-${maven.build.timestamp}</tag> + </tags> + <cleanup>try</cleanup> + <dockerFileDir>${project.basedir}/src/main/docker</dockerFileDir> + <assembly> + <inline> + <fileSets> + <fileSet> + <directory>${aai.build.directory}</directory> + <outputDirectory>/${project.artifactId}</outputDirectory> + </fileSet> + </fileSets> + </inline> + </assembly> + </build> + </image> + </images> + </configuration> + <executions> + <execution> + <id>clean-images</id> + <phase>pre-clean</phase> + <goals> + <goal>remove</goal> + </goals> + <configuration> + <removeAll>true</removeAll> + </configuration> + </execution> + <execution> + <id>generate-images</id> + <phase>package</phase> + <goals> + <goal>build</goal> + </goals> + </execution> + <execution> + <id>push-images</id> + <phase>deploy</phase> + <goals> + <goal>push</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <dependencies> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-jetty</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-jersey</artifactId> + <exclusions> + <exclusion> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-tomcat</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.onap.aai.logging-service</groupId> + <artifactId>common-logging</artifactId> + <version>${common.logging.version}</version> + </dependency> + <dependency> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-classic</artifactId> + <version>${logback.version}</version><!--$NO-MVN-MAN-VER$--> + </dependency> + <dependency> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-core</artifactId> + <version>${logback.version}</version><!--$NO-MVN-MAN-VER$--> + </dependency> + <dependency> + <groupId>commons-codec</groupId> + <artifactId>commons-codec</artifactId> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-compress</artifactId> + <version>${commons.compress.version}</version> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + </dependency> + <dependency> + <groupId>javax.ws.rs</groupId> + <artifactId>javax.ws.rs-api</artifactId> + <version>${javax.ws.rs.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.groovy</groupId> + <artifactId>groovy</artifactId> + </dependency> + <dependency> + <groupId>org.onap.sdc.sdc-tosca</groupId> + <artifactId>sdc-tosca</artifactId> + <version>${sdc.tosca.version}</version> + </dependency> + <dependency> + <groupId>org.onap.aai</groupId> + <artifactId>rest-client</artifactId> + <version>${aai.rest.client.version}</version> + </dependency> + + <!-- Testing --> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-test</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.onap.sdc.sdc-distribution-client</groupId> + <artifactId>sdc-distribution-client</artifactId> + <version>${sdc.distribution.client.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>xmlunit</groupId> + <artifactId>xmlunit</artifactId> + <version>${xmlunit.version}</version> + <scope>test</scope> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <version>${spring.boot.version}</version> + <configuration> + <jvmArguments> + -DCONFIG_HOME=./appconfig-local + -DAPP_HOME=. + -Dtosca.mappings.config=./appconfig-local/tosca-mappings.json + -DKEY_STORE_PASSWORD=${KEY_STORE_PASSWORD} + </jvmArguments> + </configuration> + <executions> + <execution> + <goals> + <goal>repackage</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <id>unpack</id> + <phase>initialize</phase> + <goals> + <goal>unpack</goal> + </goals> + <configuration> + <artifactItems> + <artifactItem> + <groupId>${aai-schema.group.id}</groupId> + <artifactId>aai-schema</artifactId> + <version>${aai-schema.version}</version> + <type>jar</type> + <includes>${aai.schema.source.folder}/aai_schema_v**.xsd</includes> + <outputDirectory>${project.build.directory}/tmp</outputDirectory> + </artifactItem> + </artifactItems> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <version>${antrun.version}</version> + <executions> + <execution> + <id>Flatten XSDs</id> + <phase>initialize</phase> + <goals> + <goal>run</goal> + </goals> + <configuration> + <target> + <copy todir="${aai.schema.target.folder}" flatten="true"> + <fileset dir="${project.build.directory}/tmp"> + <include name="**/*.xsd"/> + </fileset> + </copy> + </target> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.jvnet.jaxb2.maven2</groupId> + <artifactId>maven-jaxb2-plugin</artifactId> + <version>${mvn.jaxb2.version}</version> + <executions> + <execution> + <phase>process-sources</phase> + <goals> + <goal>generate</goal> + </goals> + </execution> + </executions> + <configuration> + <schemaDirectory>${aai.schema.target.folder}</schemaDirectory> + <generatePackage>org.onap.aai.babel.xml.generator.xsd</generatePackage> + <generateDirectory>${project.build.directory}/generated-sources</generateDirectory> + <schemaIncludes> + <include>aai_schema_latest.xsd</include> + </schemaIncludes> + <extension>true</extension> + <args> + <arg>-Xannotate</arg> + </args> + <plugins> + <plugin> + <groupId>org.jvnet.jaxb2_commons</groupId> + <artifactId>jaxb2-basics-annotate</artifactId> + <version>0.6.4</version> + </plugin> + <!-- Add the dependencies with your annotations as 'plugins' below --> + <plugin> + <groupId>org.jvnet.jaxb2_commons</groupId> + <artifactId>jaxb2-annotate-plugin-test-annox-annotations</artifactId> + <version>1.0.0</version> + </plugin> + </plugins> + </configuration> + </plugin> + <plugin> + <artifactId>exec-maven-plugin</artifactId> + <groupId>org.codehaus.mojo</groupId> + <version>1.5.0</version> + <executions> + <execution><!-- Run our script to get latest xsd version --> + <id>Get latest xsd version</id> + <phase>generate-sources</phase> + <goals> + <goal>exec</goal> + </goals> + <configuration> + <workingDirectory>${basedir}/scripts</workingDirectory> + <executable>bash</executable> + <commandlineArgs>get-latest-xsd-version.sh ${basedir}</commandlineArgs> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <configuration> + <descriptors> + <descriptor>src/main/assembly/descriptor.xml</descriptor> + </descriptors> + </configuration> + <executions> + <execution> + <id>make-assembly</id> + <phase>package</phase> + <goals> + <goal>single</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>com.mycila</groupId> + <artifactId>license-maven-plugin</artifactId> + <version>3.0</version> + <configuration> + <header>License.txt</header> + <includes> + <include>src/main/java/**</include> + <include>src/test/java/**</include> + <include>pom.xml</include> + </includes> + <skipExistingHeaders>true</skipExistingHeaders> + </configuration> + <executions> + <execution> + <goals> + <!-- Set goal from "check" to "format" to auto update license headers --> + <goal>check</goal> + </goals> + <phase>validate</phase> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <reuseForks>false</reuseForks> + <forkCount>1</forkCount> + <environmentVariables> + <APP_HOME>.</APP_HOME> + <CONFIG_HOME>src/test/resources</CONFIG_HOME> + </environmentVariables> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <version>3.0.2</version> + <executions> + <execution> + <phase>package</phase> + <goals> + <goal>jar</goal> + </goals> + <configuration> + <classifier>client</classifier> + <includes> + <include>**/babel/service/data/*</include> + </includes> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <configuration> + <classifier>client</classifier> + </configuration> + </plugin> + </plugins> + </build> </project> diff --git a/src/main/assembly/descriptor.xml b/src/main/assembly/descriptor.xml new file mode 100644 index 0000000..3fcef5b --- /dev/null +++ b/src/main/assembly/descriptor.xml @@ -0,0 +1,36 @@ +<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> + <id>build</id> + <includeBaseDirectory>false</includeBaseDirectory> + <formats> + <format>dir</format> + </formats> + <fileSets> + <fileSet> + <directory>${project.basedir}/src/main/resources</directory> + <outputDirectory>/</outputDirectory> + <includes> + <include>logback.xml</include> + </includes> + </fileSet> + <fileSet> + <directory>${project.basedir}/src/main/bin</directory> + <outputDirectory>/bin</outputDirectory> + <includes> + <include>**/*</include> + </includes> + </fileSet> + <fileSet> + <directory>${project.build.directory}</directory> + <outputDirectory>/</outputDirectory> + <includes> + <include>${project.artifactId}-${project.version}.jar</include> + </includes> + <excludes> + <exclude>Dockerfile</exclude> + <exclude>*.sh</exclude> + </excludes> + </fileSet> + </fileSets> +</assembly> diff --git a/src/main/bin/start.sh b/src/main/bin/start.sh index 8c4cdf5..f4707ad 100644 --- a/src/main/bin/start.sh +++ b/src/main/bin/start.sh @@ -19,16 +19,23 @@ # limitations under the License. # ============LICENSE_END========================================================= +# jre-alpine image has $JAVA_HOME set and added to $PATH +# ubuntu image requires to set $JAVA_HOME and add java to $PATH manually +if ( uname -v | grep -i "ubuntu" ); then + export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-`dpkg --print-architecture | awk -F- '{ print $NF }'` + export PATH=${JAVA_HOME}:$PATH +fi + APP_HOME="${APP_HOME:-/opt/app/babel}" if [ -z "${CONFIG_HOME}" ]; then - echo "CONFIG_HOME must be set in order to start the process" - exit 1 + echo "CONFIG_HOME must be set in order to start the process" + exit 1 fi if [ -z "${KEY_STORE_PASSWORD}" ]; then - echo "KEY_STORE_PASSWORD must be set in order to start the process" - exit 1 + echo "KEY_STORE_PASSWORD must be set in order to start the process" + exit 1 fi PROPS="-DAPP_HOME=${APP_HOME}" @@ -36,9 +43,11 @@ PROPS="${PROPS} -DCONFIG_HOME=${CONFIG_HOME}" PROPS="${PROPS} -Dtosca.mappings.config=${CONFIG_HOME}/tosca-mappings.json" PROPS="${PROPS} -DKEY_STORE_PASSWORD=${KEY_STORE_PASSWORD}" if [ ! -z "$REQUIRE_CLIENT_AUTH" ]; then - PROPS="$PROPS -Dserver.ssl.client-auth=${REQUIRE_CLIENT_AUTH}" + PROPS="$PROPS -Dserver.ssl.client-auth=${REQUIRE_CLIENT_AUTH}" fi JVM_MAX_HEAP=${MAX_HEAP:-1024} -exec java -Xmx${JVM_MAX_HEAP}m ${PROPS} -jar ${APP_HOME}/babel.jar +JARFILE=$(ls ./babel*.jar); + +exec java -Xmx${JVM_MAX_HEAP}m ${PROPS} -jar ${APP_HOME}/${JARFILE} diff --git a/src/main/docker/Dockerfile b/src/main/docker/Dockerfile index 70088ae..03917f7 100644 --- a/src/main/docker/Dockerfile +++ b/src/main/docker/Dockerfile @@ -1,25 +1,12 @@ -FROM ubuntu:14.04 +FROM @aai.docker.namespace@/aai-common-@aai.base.image@:@aai.base.image.version@ ARG MICRO_HOME=/opt/app/babel -ARG BIN_HOME=$MICRO_HOME/bin -ARG JAR_FILE=babel.jar - -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 -COPY ${JAR_FILE} $MICRO_HOME -RUN mkdir -p $BIN_HOME -COPY *.sh $BIN_HOME -RUN chmod 755 $BIN_HOME/* -RUN ln -s /logs $MICRO_HOME/logs +WORKDIR $MICRO_HOME +COPY /maven/babel/ . +RUN chmod 755 bin/* \ + && ln -s /logs $MICRO_HOME/logs CMD ["/opt/app/babel/bin/start.sh"] diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml new file mode 100644 index 0000000..f494b08 --- /dev/null +++ b/src/main/resources/logback.xml @@ -0,0 +1,199 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +# Copyright © 2018 Amdocs, Bell Canada, AT&T +# +# 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. +--> +<!DOCTYPE xml> +<!-- +This is default logging config which will be used before Spring Boot is initialized +To find main logging config please check `logging.config` in the application.properties +--> +<configuration scan="true" scanPeriod="30 seconds" debug="true"> + <include resource="org/springframework/boot/logging/logback/base.xml" /> + + <property name="componentName" value="AAI-BAS" /> + <property name="logDirectory" value="/var/log/onap/${componentName}" /> + + <!-- default EELF log file names --> + <property name="generalLogName" value="error" /> + <property name="metricsLogName" value="metrics" /> + <property name="auditLogName" value="audit" /> + <property name="debugLogName" value="debug" /> + + <property name="errorLogPattern" + value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%mdc{RequestId}|%thread|%mdc{ServiceName}|%mdc{PartnerName}|%mdc{TargetEntity}|%mdc{TargetServiceName}|%.-5level|%logger|%mdc{ClassName}|%msg%n" /> + + <property name="auditLogPattern" + value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%mdc{BeginTimestamp}|%mdc{EndTimestamp}|%mdc{RequestId}|%mdc{ServiceInstanceId}|%thread|%mdc{ServerFQDN}|%mdc{ServiceName}|%mdc{PartnerName}|%mdc{StatusCode}|%mdc{ResponseCode}|%mdc{ResponseDescription}|%logger|%.-5level|||%mdc{ElapsedTime}|%mdc{RemoteHost}|%mdc{ClientAddress}|%mdc{ClassName}|||%msg%n" /> + + <property name="metricsLogPattern" + value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%mdc{BeginTimestamp}|%mdc{EndTimestamp}|%mdc{RequestId}|%mdc{ServiceInstanceId}|%thread|%mdc{ServerFQDN}|%mdc{ServiceName}|%mdc{PartnerName}|%mdc{TargetEntity}|%mdc{TargetServiceName}|%mdc{StatusCode}|%mdc{ResponseCode}|%mdc{ResponseDescription}|%logger|%.-5level|||%mdc{ElapsedTime}|%mdc{RemoteHost}|%mdc{ClientAddress}|%mdc{ClassName}|||%msg%n" /> + + <!-- ============================================================================ --> + <!-- EELF Appenders --> + <!-- ============================================================================ --> + + <appender name="EELF" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logDirectory}/${generalLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/${generalLogName}.%d{yyyy-MM-dd}.log.zip + </fileNamePattern> + <maxHistory>60</maxHistory> + </rollingPolicy> + <encoder> + <pattern>${errorLogPattern}</pattern> + </encoder> + </appender> + <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender"> + <!-- deny all events with a level below INFO, that is TRACE and DEBUG --> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> + <level>INFO</level> + </filter> + <queueSize>256</queueSize> + <appender-ref ref="EELF" /> + </appender> + + <!-- EELF Audit Appender. This appender is used to record audit engine related logging events. The audit logger and appender + are specializations of the EELF application root logger and appender. This can be used to segregate Policy engine events + from other components, or it can be eliminated to record these events as part of the application root log. --> + + <appender name="EELFAudit" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logDirectory}/${auditLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.log.zip + </fileNamePattern> + <maxHistory>60</maxHistory> + </rollingPolicy> + <encoder> + <pattern>${auditLogPattern}</pattern> + </encoder> + </appender> + <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>256</queueSize> + <appender-ref ref="EELFAudit" /> + </appender> + + <appender name="EELFMetrics" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logDirectory}/${metricsLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.log.zip + </fileNamePattern> + <maxHistory>60</maxHistory> + </rollingPolicy> + <encoder> + <pattern>${metricsLogPattern}</pattern> + </encoder> + </appender> + + <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>256</queueSize> + <appender-ref ref="EELFMetrics" /> + </appender> + + <appender name="EELFDebug" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file> + ${logDirectory}/${debugLogName}.log + </file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.log.zip + </fileNamePattern> + <maxHistory>60</maxHistory> + </rollingPolicy> + <encoder> + <pattern>${errorLogPattern}</pattern> + </encoder> + </appender> + + <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender"> + <!-- allow only events with a level below INFO, that is TRACE and DEBUG --> + <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> + <evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator"> + <expression> + e.level.toInt() < INFO.toInt() + </expression> + </evaluator> + <OnMismatch>DENY</OnMismatch> + <OnMatch>NEUTRAL</OnMatch> + </filter> + <queueSize>256</queueSize> + <appender-ref ref="EELFDebug" /> + <includeCallerData>false</includeCallerData> + </appender> + + <!-- ============================================================================ --> + <!-- Default / root appenders --> + <!-- This determines the logging level for 3rd party code --> + <!-- ============================================================================ --> + + <root level="INFO"> + <appender-ref ref="asyncEELF" /> + <appender-ref ref="asyncEELFDebug" /> +</root> + + <!-- ============================================================================ --> + <!-- EELF loggers --> + <!-- ============================================================================ --> + + <logger name="com.att.eelf" level="INFO" additivity="false"> + <appender-ref ref="asyncEELF" /> +</logger> + + <!-- The level of this logger determines the contents of the debug log --> + <logger name="com.att.eelf.debug" level="INFO" additivity="false"> + <appender-ref ref="asyncEELFDebug" /> +</logger> + + <logger name="com.att.eelf.audit" level="INFO" additivity="false"> + <appender-ref ref="asyncEELFAudit" /> +</logger> + + <logger name="com.att.eelf.metrics" level="INFO" additivity="false"> + <appender-ref ref="asyncEELFMetrics" /> +</logger> + + <!-- ============================================================================ --> + <!-- Non-EELF loggers --> + <!-- ============================================================================ --> + + <!-- ATT packages including DMAAP message routing --> + <logger name="com.att" level="INFO" /> + + <!-- Spring related loggers --> + <logger name="org.springframework" level="WARN" /> + <logger name="org.springframework.beans" level="WARN" /> + <logger name="org.springframework.web" level="WARN" /> + + <!-- Other Loggers that may help troubleshoot --> + <logger name="org.apache" level="WARN" /> + <logger name="org.apache.commons" level="WARN" /> + + <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging. May aid in troubleshooting) --> + <logger name="org.apache.camel" level="WARN" /> + <logger name="org.apache.cxf" level="WARN" /> + <logger name="org.apache.camel.processor.interceptor" level="WARN" /> + <logger name="org.apache.cxf.jaxrs.interceptor" level="WARN" /> + <logger name="org.apache.cxf.service" level="WARN" /> + <logger name="org.restlet" level="WARN" /> + <logger name="org.apache.camel.component.restlet" level="WARN" /> + + <!-- logback internals logging --> + <logger name="ch.qos.logback.classic" level="WARN" /> + <logger name="ch.qos.logback.core" level="WARN" /> + +</configuration> + |