diff options
9 files changed, 213 insertions, 120 deletions
@@ -26,7 +26,7 @@ <groupId>org.onap.dcaegen2.services</groupId> <artifactId>pm-mapper</artifactId> - <version>1.1.2-SNAPSHOT</version> + <version>1.1.3-SNAPSHOT</version> <parent> <groupId>org.onap.oparent</groupId> @@ -59,10 +59,13 @@ <xerces.version>2.11.0</xerces.version> <reactor.test>3.1.0.RELEASE</reactor.test> <!-- Plugin Versions --> - <shade.plugin.version>3.2.0</shade.plugin.version> <jacoco.version>0.8.2</jacoco.version> - <dockerfile.version>1.4.10</dockerfile.version> <surefire.version>2.22.0</surefire.version> + <git-commit.version>3.0.0</git-commit.version> + <build-helper.version>3.0.0</build-helper.version> + <docker-maven.version>0.30.0</docker-maven.version> + <maven-jar.version>3.1.2</maven-jar.version> + <dependencies.version>3.1.1</dependencies.version> <!-- Plugin Settings --> <image-name>${docker.push.registry}/onap/${project.groupId}.${project.artifactId}</image-name> <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format> @@ -75,9 +78,11 @@ <sonar.projectVersion>${project.version}</sonar.projectVersion> <compiler.target.version>1.8</compiler.target.version> <compiler.source.version>1.8</compiler.source.version> - <shade.main>org.onap.dcaegen2.services.pmmapper.App</shade.main> - <shade.transformer>org.apache.maven.plugins.shade.resource.ManifestResourceTransformer</shade.transformer> <onap.logging.version>1.2.2</onap.logging.version> + <classpath.separator>@@</classpath.separator> + <pmmapper.main.class>org.onap.dcaegen2.services.pmmapper.App</pmmapper.main.class> + <dep.dir.name>libs</dep.dir.name> + <ext.dep.dir.path>${dep.dir.name}/external</ext.dep.dir.path> </properties> <dependencies> @@ -211,60 +216,127 @@ <build> <plugins> <plugin> - <groupId>com.spotify</groupId> - <artifactId>dockerfile-maven-plugin</artifactId> - <version>${dockerfile.version}</version> + <groupId>pl.project13.maven</groupId> + <artifactId>git-commit-id-plugin</artifactId> + <version>${git-commit.version}</version> <configuration> - <repository>${image-name}</repository> - <dockerfile>${project.build.outputDirectory}/Dockerfile</dockerfile> - <buildArgs> - <JAR>${project.build.finalName}-jar-with-dependencies.jar</JAR> - </buildArgs> + <dateFormat>${maven.build.timestamp.format}</dateFormat> </configuration> <executions> <execution> - <id>tag-version</id> - <phase>none</phase> + <id>get-git-info</id> <goals> - <goal>tag</goal> + <goal>revision</goal> </goals> - <configuration> - <tag>${project.version}-${timestamp}</tag> - </configuration> - </execution> - <execution> - <id>latest-snapshot</id> - <phase>none</phase> - <goals> - <goal>tag</goal> - </goals> - <configuration> - <tag>latest-snapshot</tag> - </configuration> </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <version>${dependencies.version}</version> + <configuration> + <silent>true</silent> + <includeScope>runtime</includeScope> + <pathSeparator>${classpath.separator}</pathSeparator> + </configuration> + <executions> <execution> - <id>push-latest</id> - <phase>none</phase> + <id>copy-external-dependencies</id> + <phase>prepare-package</phase> <goals> - <goal>push</goal> + <goal>copy-dependencies</goal> + <goal>build-classpath</goal> </goals> <configuration> - <tag>latest-snapshot</tag> + <excludeGroupIds>${project.parent.groupId}</excludeGroupIds> + <outputDirectory>${project.build.directory}/${ext.dep.dir.path}</outputDirectory> + <prefix>./${ext.dep.dir.path}</prefix> + <outputProperty>classpath.external</outputProperty> </configuration> </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <version>${build-helper.version}</version> + <executions> <execution> - <id>push-version</id> - <phase>none</phase> + <id>fix-classpath-separator</id> + <phase>prepare-package</phase> <goals> - <goal>push</goal> + <goal>regex-properties</goal> </goals> <configuration> - <tag>${project.version}-${timestamp}</tag> + <regexPropertySettings> + <regexPropertySetting> + <name>classpath.external</name> + <value>${classpath.external}</value> + <regex>${classpath.separator}</regex> + <replacement xml:space="preserve"> </replacement> + </regexPropertySetting> + </regexPropertySettings> </configuration> </execution> </executions> </plugin> <plugin> + <groupId>io.fabric8</groupId> + <artifactId>docker-maven-plugin</artifactId> + <version>${docker-maven.version}</version> + <configuration> + <images> + <image> + <name>${project.groupId}.${project.artifactId}</name> + <registry>${onap.nexus.dockerregistry.daily}</registry> + <build> + <contextDir>${project.basedir}</contextDir> + <dockerFile>${project.build.outputDirectory}/Dockerfile</dockerFile> + <args> + <JAR>${project.build.finalName}.jar</JAR> + </args> + <cleanup>none</cleanup> + <tags> + <tag>${project.version}</tag> + <tag>${project.version}-${maven.build.timestamp}Z</tag> + </tags> + </build> + </image> + </images> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <version>${maven-jar.version}</version> + <configuration> + <archive> + <manifest> + <mainClass>${pmmapper.main.class}</mainClass> + <addDefaultImplementationEntries>true</addDefaultImplementationEntries> + <addBuildEnvironmentEntries>true</addBuildEnvironmentEntries> + <useUniqueVersions>false</useUniqueVersions> <!-- workaround for MJAR-156 --> + </manifest> + <manifestEntries> + <Class-Path>${classpath.external}</Class-Path> + <Git-Branch>${git.branch}</Git-Branch> + <Git-Build-Host>${git.build.host}</Git-Build-Host> + <Git-Build-Time>${git.build.time}</Git-Build-Time> + <Git-Build-User-Email>${git.build.user.email}</Git-Build-User-Email> + <Git-Build-User-Name>${git.build.user.name}</Git-Build-User-Name> + <Git-Build-Version>${git.build.version}</Git-Build-Version> + <Git-Closest-Tag-Name>${git.closest.tag.name}</Git-Closest-Tag-Name> + <Git-Commit-Id>${git.commit.id}</Git-Commit-Id> + <Git-Commit-Message-Short>${git.commit.message.short}</Git-Commit-Message-Short> + <Git-Commit-Time>${git.commit.time}</Git-Commit-Time> + <Git-Commit-User-Email>${git.commit.user.email}</Git-Commit-User-Email> + <Git-Commit-User-Name>${git.commit.user.name}</Git-Commit-User-Name> + </manifestEntries> + </archive> + </configuration> + </plugin> + <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>${surefire.version}</version> @@ -279,28 +351,6 @@ </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-shade-plugin</artifactId> - <version>${shade.plugin.version}</version> - <executions> - <execution> - <goals> - <goal>shade</goal> - </goals> - <configuration> - <shadedArtifactAttached>true</shadedArtifactAttached> - <shadedClassifierName>jar-with-dependencies</shadedClassifierName> - <transformers> - <transformer - implementation="${shade.transformer}"> - <mainClass>${shade.main}</mainClass> - </transformer> - </transformers> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>${maven.compiler.source}</source> diff --git a/src/main/java/org/onap/dcaegen2/services/pmmapper/App.java b/src/main/java/org/onap/dcaegen2/services/pmmapper/App.java index a5eb68d..11a91f8 100644 --- a/src/main/java/org/onap/dcaegen2/services/pmmapper/App.java +++ b/src/main/java/org/onap/dcaegen2/services/pmmapper/App.java @@ -20,6 +20,7 @@ package org.onap.dcaegen2.services.pmmapper; +import ch.qos.logback.classic.util.ContextInitializer; import io.undertow.Handlers; import io.undertow.Undertow; import io.undertow.util.StatusCodes; @@ -60,6 +61,11 @@ import java.util.ArrayList; import java.util.List; public class App { + + static { + System.setProperty(ContextInitializer.CONFIG_FILE_PROPERTY, "/opt/app/pm-mapper/etc/logback.xml"); + } + private static final ONAPLogAdapter logger = new ONAPLogAdapter(LoggerFactory.getLogger(App.class)); private static Path mappingTemplate = Paths.get("/opt/app/pm-mapper/etc/mapping.ftl"); private static Path xmlSchema = Paths.get("/opt/app/pm-mapper/etc/measCollec_plusString.xsd"); diff --git a/src/main/java/org/onap/dcaegen2/services/pmmapper/config/ConfigHandler.java b/src/main/java/org/onap/dcaegen2/services/pmmapper/config/ConfigHandler.java index e98849e..fef1d19 100644 --- a/src/main/java/org/onap/dcaegen2/services/pmmapper/config/ConfigHandler.java +++ b/src/main/java/org/onap/dcaegen2/services/pmmapper/config/ConfigHandler.java @@ -77,7 +77,8 @@ public class ConfigHandler { } catch (Exception exception) { throw new CBSServerError("Error connecting to Configbinding Service: ", exception); } finally { - logger.unwrap().info("Received pm-mapper configuration from ConfigBinding Service:\n{}", mapperConfigJson); + logger.unwrap().info("Received pm-mapper configuration from ConfigBinding Service: \n"); + logger.unwrap().debug(mapperConfigJson); } return convertMapperConfigToObject(mapperConfigJson); diff --git a/src/main/java/org/onap/dcaegen2/services/pmmapper/healthcheck/HealthCheckHandler.java b/src/main/java/org/onap/dcaegen2/services/pmmapper/healthcheck/HealthCheckHandler.java index 756ee7b..70a9596 100644 --- a/src/main/java/org/onap/dcaegen2/services/pmmapper/healthcheck/HealthCheckHandler.java +++ b/src/main/java/org/onap/dcaegen2/services/pmmapper/healthcheck/HealthCheckHandler.java @@ -39,7 +39,7 @@ public class HealthCheckHandler implements HttpHandler { exchange.setStatusCode(StatusCodes.OK) .getResponseSender() .send(StatusCodes.OK_STRING); - + logger.unwrap().info("Healthcheck request successful"); } finally { logger.exiting(); } diff --git a/src/main/java/org/onap/dcaegen2/services/pmmapper/utils/DMaaPAdapter.java b/src/main/java/org/onap/dcaegen2/services/pmmapper/utils/DMaaPAdapter.java index fa01740..cc4413a 100644 --- a/src/main/java/org/onap/dcaegen2/services/pmmapper/utils/DMaaPAdapter.java +++ b/src/main/java/org/onap/dcaegen2/services/pmmapper/utils/DMaaPAdapter.java @@ -26,7 +26,6 @@ import com.google.gson.TypeAdapter; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import java.io.IOException; -import java.util.Optional; import org.onap.dcaegen2.services.pmmapper.model.PublisherConfig; import org.onap.dcaegen2.services.pmmapper.model.SubscriberConfig; diff --git a/src/main/java/org/onap/dcaegen2/services/pmmapper/utils/RequestSender.java b/src/main/java/org/onap/dcaegen2/services/pmmapper/utils/RequestSender.java index ba57387..411196c 100644 --- a/src/main/java/org/onap/dcaegen2/services/pmmapper/utils/RequestSender.java +++ b/src/main/java/org/onap/dcaegen2/services/pmmapper/utils/RequestSender.java @@ -27,7 +27,6 @@ import java.io.OutputStream; import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
-import java.util.Base64;
import java.util.Optional;
import java.util.UUID;
import java.util.stream.Collectors;
diff --git a/src/main/resources/Dockerfile b/src/main/resources/Dockerfile index 95fdfad..bf59524 100644 --- a/src/main/resources/Dockerfile +++ b/src/main/resources/Dockerfile @@ -19,21 +19,40 @@ # FROM openjdk:8u171-jre-alpine -ENTRYPOINT ["/bin/sh", "-c", "nohup sh etc/reconfigure.sh & /usr/bin/java -jar /opt/app/pm-mapper/pm-mapper.jar"] -ARG JAR WORKDIR /opt/app/pm-mapper RUN apk --no-cache add curl RUN mkdir -p /var/log/ONAP -RUN addgroup -S onap \ - && adduser -S pm-mapper -G onap \ - && chown -R pm-mapper:onap /opt/app/pm-mapper \ - && chmod a+rwx /var/log/ONAP -ADD target/${JAR} /opt/app/pm-mapper/pm-mapper.jar -ADD target/classes/mapping.ftl /opt/app/pm-mapper/etc/mapping.ftl -ADD target/classes/measCollec_plusString.xsd /opt/app/pm-mapper/etc/measCollec_plusString.xsd -ADD target/classes/reconfigure.sh /opt/app/pm-mapper/etc/reconfigure.sh +RUN adduser pm-mapper; \ + chmod a+rwx /var/log/ONAP; \ + chown -R pm-mapper /opt/app/pm-mapper USER pm-mapper + +COPY ${project.build.directory}/${ext.dep.dir.path}/ ${ext.dep.dir.path}/ +COPY ${project.build.directory}/${JAR} . + +COPY ${project.build.directory}/classes/mapping.ftl ./etc/mapping.ftl +COPY ${project.build.directory}/classes/measCollec_plusString.xsd ./etc/measCollec_plusString.xsd +COPY ${project.build.directory}/classes/reconfigure.sh ./etc/reconfigure.sh +COPY --chown=pm-mapper ${project.build.directory}/classes/logback.xml ./etc/logback.xml + + +LABEL git.branch="${git.branch}" \ + git.build.host="${git.build.host}" \ + git.build.time="${git.build.time}" \ + git.build.user.email="${git.build.user.email}" \ + git.build.user.name="${git.build.user.name}" \ + git.build.version="${git.build.version}" \ + git.closest.tag.name="${git.closest.tag.name}" \ + git.commit.id="${git.commit.id}" \ + git.commit.message.short="${git.commit.message.short}" \ + git.commit.time="${git.commit.time}" \ + git.commit.user.email="${git.commit.user.email}" \ + git.commit.user.name="${git.commit.user.name}" + + +ENTRYPOINT ["/bin/sh", "-c", "nohup sh etc/reconfigure.sh & /usr/bin/java -jar ${project.artifactId}-${project.version}.jar"] +ARG JAR diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 0701442..94d2151 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -1,46 +1,65 @@ -<configuration>
- <property name="outputFilename" value="pm-mapper_output"/>
- <property name="logPath" value="/var/log/ONAP/dcaegen2/services/pm-mapper"/>
- <property name="archivePath" value="${logPath}/archive"/>
- <property name="maxFileSize" value="50MB"/>
- <property name="maxHistory" value="30"/>
- <property name="totalSizeCap" value="10GB"/>
- <property name="p_tim" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}"/>
- <property name="p_lvl" value="%level"/>
- <property name="p_log" value="%logger"/>
- <property name="p_mdc" value="%replace(%replace(%mdc){'\t','\\\\t'}){'\n', '\\\\n'}"/>
- <property name="p_msg" value="%replace(%replace(%msg){'\t', '\\\\t'}){'\n','\\\\n'}"/>
- <property name="p_exc" value="%replace(%replace(%rootException){'\t', '\\\\t'}){'\n','\\\\n'}"/>
- <property name="p_mak" value="%replace(%replace(%marker){'\t', '\\\\t'}){'\n','\\\\n'}"/>
- <property name="p_thr" value="%thread"/>
- <property name="pattern" value="%nopexception${p_tim}\t${p_thr}\t${p_lvl}\t${p_log}\t${p_mdc}\t${p_msg}\t${p_exc}\t${p_mak}\t%n"/>
-
- <variable name="logLevel" value="${LOG_LEVEL:-DEBUG}"/>
-
- <logger name="org.mockserver" level="${mockserver.logLevel:-OFF}"/>
-
- <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
- <encoder>
- <pattern>${pattern}</pattern>
- </encoder>
- </appender>
-
- <appender name="ROLLING-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <file>${logPath}/${outputFilename}.log</file>
- <encoder>
- <pattern>${pattern}</pattern>
- </encoder>
- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
- <FileNamePattern>${archivePath}/${outputFilename}.%d{yyyy-MM-dd}.%i.log.zip</FileNamePattern>
- <MaxFileSize>${maxFileSize}</MaxFileSize>
- <MaxHistory>${maxHistory}</MaxHistory>
- <TotalSizeCap>${totalSizeCap}</TotalSizeCap>
- </rollingPolicy>
- </appender>
-
- <root level="${logLevel}" additivity="false">
- <appender-ref ref="CONSOLE" />
- <appender-ref ref="ROLLING-FILE" />
- </root>
-
-</configuration>
\ No newline at end of file +<configuration scan="true" scanPeriod="30 seconds" debug="true"> + <property name="outputFilename" value="pm-mapper_output"/> + <property name="outputFilenameReadable" value="pm-mapper_output_readable"/> + <property name="logPath" value="/var/log/ONAP/dcaegen2/services/pm-mapper"/> + <property name="archivePath" value="${logPath}/archive"/> + <property name="maxFileSize" value="50MB"/> + <property name="maxHistory" value="30"/> + <property name="totalSizeCap" value="10GB"/> + <property name="p_tim" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}"/> + <property name="p_lvl" value="%level"/> + <property name="p_log" value="%logger"/> + <property name="p_mdc" value="%replace(%replace(%mdc){'\t','\\\\t'}){'\n', '\\\\n'}"/> + <property name="p_msg" value="%replace(%replace(%msg){'\t', '\\\\t'}){'\n','\\\\n'}"/> + <property name="p_exc" value="%replace(%replace(%rootException){'\t', '\\\\t'}){'\n','\\\\n'}"/> + <property name="p_mak" value="%replace(%replace(%marker){'\t', '\\\\t'}){'\n','\\\\n'}"/> + <property name="p_thr" value="%thread"/> + <property name="pattern" value="%nopexception${p_tim}\t${p_thr}\t${p_lvl}\t${p_log}\t${p_mdc}\t${p_msg}\t${p_exc}\t${p_mak}\t%n"/> + <property name="patternReadable" value="%nopexception${p_tim} | ${p_lvl} | ${p_msg}%n"/> + + + <variable name="logLevel" value="${LOG_LEVEL:-INFO}"/> + + <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender> + + <appender name="ROLLING-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logPath}/${outputFilename}.log</file> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> + <FileNamePattern>${logPath}/${outputFilename}.%d{yyyy-MM-dd}.%i.log.zip</FileNamePattern> + <MaxFileSize>${maxFileSize}</MaxFileSize> + <MaxHistory>${maxHistory}</MaxHistory> + <TotalSizeCap>${totalSizeCap}</TotalSizeCap> + </rollingPolicy> + </appender> + + <appender name="READABLE-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logPath}/${outputFilenameReadable}.log</file> + <encoder> + <pattern>${patternReadable}</pattern> + </encoder> + + <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> + <fileNamePattern>${logPath}/${outputFilenameReadable}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <minIndex>1</minIndex> + <maxIndex>1</maxIndex> + </rollingPolicy> + + <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> + <maxFileSize>${maxFileSize}</maxFileSize> + </triggeringPolicy> + </appender> + + <root level="${logLevel}" additivity="false"> + <appender-ref ref="CONSOLE" /> + <appender-ref ref="ROLLING-FILE" /> + <appender-ref ref="READABLE-FILE" /> + </root> + +</configuration> diff --git a/version.properties b/version.properties index b2fcf61..914ccdc 100644 --- a/version.properties +++ b/version.properties @@ -1,6 +1,6 @@ major=1 minor=1 -patch=2 +patch=3 base_version=${major}.${minor}.${patch} release_version=${base_version} snapshot_version=${base_version}-SNAPSHOT
\ No newline at end of file |