From 9bb841d5faa995c2170057f93cd65303fba7979c Mon Sep 17 00:00:00 2001 From: Kai Date: Mon, 29 Mar 2021 11:48:10 +0800 Subject: Fix mongodb errors on application startup Revert Dockerfile refactor due to permissions issues Issue-ID: DCAEGEN2-2747 Issue-ID: DCAEGEN2-2590 Signed-off-by: Kai Lu Change-Id: I84075575cc75090876416cb13e0ac197a8e0f6e3 Signed-off-by: Remigiusz Janeczek --- dcae-analytics/dcae-analytics-tca-web/Dockerfile | 28 +++--- dcae-analytics/dcae-analytics-tca-web/pom.xml | 102 +++++++++------------ .../dcae/analytics/tca/web/config/TcaMrConfig.java | 15 ++- .../tca/web/integration/TcaAlertTransformer.java | 4 +- .../integration/TcaPublisherResponseHandler.java | 5 +- .../TcaPublisherResponseHandlerTest.java | 12 ++- 6 files changed, 81 insertions(+), 85 deletions(-) (limited to 'dcae-analytics/dcae-analytics-tca-web') diff --git a/dcae-analytics/dcae-analytics-tca-web/Dockerfile b/dcae-analytics/dcae-analytics-tca-web/Dockerfile index 2791e03..a2c59c4 100644 --- a/dcae-analytics/dcae-analytics-tca-web/Dockerfile +++ b/dcae-analytics/dcae-analytics-tca-web/Dockerfile @@ -9,23 +9,23 @@ ARG DOCKER_ARTIFACT_DIR ARG user=tca-gen2 ARG group=tca-gen2 -WORKDIR ${DOCKER_ARTIFACT_DIR} -#Copy dependencies and executable jar -COPY ${PROJECT_BUILD_DIR_NAME}/${FINAL_JAR} . - USER root -#Symlink to overcome Docker limitation to put ARG inside ENTRYPOINT -RUN mkdir -p /var/log/ONAP/dcaegen2/analytics/tca-gen2 && \ - addgroup $group && adduser --system --disabled-password --no-create-home --ingroup $group $user && \ - chmod g+rwx /opt; \ - chmod u+rw /var/log/ONAP/dcaegen2/analytics/tca-gen2 && \ - chown -R $user /opt && \ - chown -R $user /var/log/ONAP/dcaegen2/analytics/tca-gen2 && \ - ln -s ${FINAL_JAR} tca-gen2.jar && \ - chown $user ${FINAL_JAR} tca-gen2.jar +RUN mkdir -p /var/log/ONAP/dcaegen2/analytics/tca-gen2 +#Add a new user and group to allow container to be run as non-root +RUN addgroup $group && adduser --system --disabled-password --no-create-home --ingroup $group $user && \ + chmod 775 /opt && \ + chmod 775 /var/log/ONAP/dcaegen2/analytics/tca-gen2 && \ + chown -R $user:$group /opt && \ + chown -R $user:$group /var/log/ONAP/dcaegen2/analytics/tca-gen2 + +#Copy dependencies and executable jar +WORKDIR ${DOCKER_ARTIFACT_DIR} +COPY ${PROJECT_BUILD_DIR_NAME}/${FINAL_JAR} . +#Overcome Docker limitation to put ARG inside ENTRYPOINT +RUN ln -s ${FINAL_JAR} tca-gen2.jar EXPOSE 8100 -USER $user +USER $user:$group ENTRYPOINT ["java", "-Dspring.profiles.active=configBindingService,dmaap,mongo", "-jar", "tca-gen2.jar"] diff --git a/dcae-analytics/dcae-analytics-tca-web/pom.xml b/dcae-analytics/dcae-analytics-tca-web/pom.xml index 86d332f..7c81f4f 100644 --- a/dcae-analytics/dcae-analytics-tca-web/pom.xml +++ b/dcae-analytics/dcae-analytics-tca-web/pom.xml @@ -3,6 +3,7 @@ ~ ================================================================================ ~ Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved. ~ Copyright (c) 2021 Samsung Electronics. All rights reserved. + ~ Copyright (c) 2021 Nokia Intellectual Property. All rights reserved. ~ ================================================================================ ~ Modifications Copyright (C) 2019 IBM ~ ================================================================================ @@ -43,7 +44,7 @@ ${project.parent.basedir} onap/${project.groupId}.${project.artifactId} - yyyyMMdd'T'HHmmss + yyyyMMdd'T'HHmmss @@ -69,7 +70,6 @@ undertow-core - io.micrometer @@ -106,6 +106,10 @@ io.springfox springfox-swagger2 + + org.springframework.plugin + spring-plugin-core + io.springfox springfox-swagger-ui @@ -117,33 +121,13 @@ dcae-analytics-test - - io.undertow - undertow-core - - io.netty - netty-handler - 4.1.54.Final - - - io.netty - netty-handler-proxy - 4.1.54.Final + io.undertow + undertow-core - - - - org.springframework - spring-core - 5.1.12.RELEASE - - - - @@ -165,39 +149,39 @@ - com.spotify - dockerfile-maven-plugin - 1.4.10 - - ${project.basedir} - ${docker.repository}/${docker.image.name} - true - - target - ${dependency.dir.name} - /opt - ${project.build.finalName}.jar - - - - - build-image - install - - build - - - - tag-version - install - - tag - push - - - ${project.version} - - + com.spotify + dockerfile-maven-plugin + 1.4.10 + + ${project.basedir} + ${docker.repository}/${docker.image.name} + true + + target + ${dependency.dir.name} + /opt + ${project.build.finalName}.jar + + + + + build-image + install + + build + + + + tag-version + install + + tag + push + + + ${project.version} + + tag-version-ts install @@ -206,10 +190,10 @@ push - ${project.version}-${maven.build.timestamp}Z + ${project.version}-${maven.build.timestamp}Z - + diff --git a/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/config/TcaMrConfig.java b/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/config/TcaMrConfig.java index 3579d3e..ed8e7ea 100644 --- a/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/config/TcaMrConfig.java +++ b/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/config/TcaMrConfig.java @@ -1,6 +1,8 @@ /* * ================================================================================ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2021 China Mobile Property. All rights reserved. + * Copyright (c) 2021 Nokia Intellectual Property. 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. @@ -23,8 +25,6 @@ import static org.onap.dcae.analytics.model.AnalyticsHttpConstants.REQUEST_ID_HE import static org.onap.dcae.analytics.model.AnalyticsHttpConstants.REQUEST_TRANSACTION_ID_HEADER_KEY; import java.util.List; -import java.util.Map; - import org.onap.dcae.analytics.model.AnalyticsProfile; import org.onap.dcae.analytics.model.DmaapMrConstants; import org.onap.dcae.analytics.tca.web.TcaAppProperties; @@ -44,6 +44,7 @@ import org.springframework.integration.channel.NullChannel; import org.springframework.integration.channel.QueueChannel; import org.springframework.integration.dsl.IntegrationFlow; import org.springframework.integration.dsl.IntegrationFlows; +import org.springframework.integration.handler.GenericHandler; import org.springframework.messaging.MessageHeaders; /** @@ -82,11 +83,15 @@ public class TcaMrConfig { // get messages from dmaap subscriber channel return IntegrationFlows.from(mrSubscriberOutputChannel) // handle incoming message from dmaap - .handle((List cefMessages, Map headers) -> - tcaProcessingService.getTcaExecutionResults( + .handle(new GenericHandler>() { + @Override + public Object handle(List cefMessages, MessageHeaders headers) { + return tcaProcessingService.getTcaExecutionResults( headers.getOrDefault(REQUEST_ID_HEADER_KEY, headers.get(MessageHeaders.ID)).toString(), headers.getOrDefault(REQUEST_TRANSACTION_ID_HEADER_KEY, "").toString(), - tcaPolicyWrapper, cefMessages)) + tcaPolicyWrapper, cefMessages); + } + }) // transform tca execution results to alerts - if not alerts are detected terminate further processing .transform(tcaAlertTransformer, c -> c.requiresReply(false)) // post messages to dmaap publisher input channel diff --git a/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/integration/TcaAlertTransformer.java b/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/integration/TcaAlertTransformer.java index 9bade85..ff086ed 100644 --- a/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/integration/TcaAlertTransformer.java +++ b/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/integration/TcaAlertTransformer.java @@ -1,6 +1,7 @@ /* * ================================================================================ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2021 China Mobile Property. 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. @@ -71,7 +72,7 @@ public class TcaAlertTransformer extends AbstractTransformer { @Override @SuppressWarnings("unchecked") - protected Object doTransform(final Message message) throws Exception { + protected Object doTransform(final Message message) { final Object messagePayload = message.getPayload(); @@ -158,3 +159,4 @@ public class TcaAlertTransformer extends AbstractTransformer { Integer.toString(abatedExecutionContexts.size()), Integer.toString(tcaAlerts.size())); } } + diff --git a/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/integration/TcaPublisherResponseHandler.java b/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/integration/TcaPublisherResponseHandler.java index 7cd542c..024e4bf 100644 --- a/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/integration/TcaPublisherResponseHandler.java +++ b/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/integration/TcaPublisherResponseHandler.java @@ -1,6 +1,7 @@ /* * ================================================================================ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2021 China Mobile Property. 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. @@ -24,7 +25,6 @@ import static org.onap.dcae.analytics.model.AnalyticsHttpConstants.REQUEST_BEGIN import static org.onap.dcae.analytics.model.AnalyticsHttpConstants.REQUEST_END_TS_HEADER_KEY; import java.util.Date; -import java.util.Map; import org.onap.dcae.analytics.model.ecomplogger.AnalyticsErrorType; import org.onap.dcae.analytics.tca.core.util.TcaUtils; @@ -60,7 +60,7 @@ public class TcaPublisherResponseHandler implements GenericHandler { } @Override - public Object handle(final String payload, final Map headers) { + public Object handle(final String payload, MessageHeaders headers) { final MessageHeaders messageHeaders = new MessageHeaders(headers); final String requestId = AnalyticsHttpUtils.getRequestId(messageHeaders); @@ -99,3 +99,4 @@ public class TcaPublisherResponseHandler implements GenericHandler { } } + diff --git a/dcae-analytics/dcae-analytics-tca-web/src/test/java/org/onap/dcae/analytics/tca/web/integration/TcaPublisherResponseHandlerTest.java b/dcae-analytics/dcae-analytics-tca-web/src/test/java/org/onap/dcae/analytics/tca/web/integration/TcaPublisherResponseHandlerTest.java index 66043aa..2637a39 100644 --- a/dcae-analytics/dcae-analytics-tca-web/src/test/java/org/onap/dcae/analytics/tca/web/integration/TcaPublisherResponseHandlerTest.java +++ b/dcae-analytics/dcae-analytics-tca-web/src/test/java/org/onap/dcae/analytics/tca/web/integration/TcaPublisherResponseHandlerTest.java @@ -1,6 +1,7 @@ /* * ================================================================================ * Copyright (c) 2019 IBM Intellectual Property. All rights reserved. + * Copyright (c) 2021 China Mobile Property. 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. @@ -26,17 +27,19 @@ import org.junit.jupiter.api.Test; import org.mockito.Mockito; import org.onap.dcae.analytics.tca.web.TcaAppProperties; import org.onap.dcae.analytics.tca.web.TcaAppProperties.Tca; +import org.springframework.messaging.MessageHeaders; public class TcaPublisherResponseHandlerTest { - static Map headers; + static MessageHeaders messageHeaders; @BeforeAll static void initialize() { - headers = new HashMap<>(); + Map headers = new HashMap<>(); headers.put("X-ECOMP-RequestID", "TestRequestID"); headers.put("X-ECOMP-TransactionID", "TestTransactionID"); headers.put("X-ECOMP-FromAppID", "TestFromAppID"); + messageHeaders = new MessageHeaders(headers); } @@ -49,7 +52,7 @@ public class TcaPublisherResponseHandlerTest { Mockito.when(tcaAppProperties.getTca().getEnableEcompLogging()).thenReturn(true); TcaPublisherResponseHandler responseHandler = new TcaPublisherResponseHandler(tcaAppProperties); - responseHandler.handle("testpayload", headers); + responseHandler.handle("testpayload", messageHeaders); } @@ -62,8 +65,9 @@ public class TcaPublisherResponseHandlerTest { Mockito.when(tcaAppProperties.getTca().getEnableEcompLogging()).thenReturn(false); TcaPublisherResponseHandler responseHandler = new TcaPublisherResponseHandler(tcaAppProperties); - responseHandler.handle("testpayload", headers); + responseHandler.handle("testpayload", messageHeaders); } } + -- cgit 1.2.3-korg