From: Stavros Kanarakis Date: Thu, 4 Apr 2019 09:05:02 +0000 (+0300) Subject: Handle CLM findings X-Git-Tag: 1.0.0~33 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=3601ddf5c10e2a0dfcbbf854fd40cfbbc14074f0;p=dcaegen2%2Fservices.git Handle CLM findings Along with CLM scan findings resolution, some minor SONAR fixes are included and a README.md file about BBS-ep service. Change-Id: Ifaeb9db0156aa459f5e5ee5fe2ae09c5f5669ece Issue-ID: DCAEGEN2-1388 Signed-off-by: Stavros Kanarakis --- diff --git a/components/bbs-event-processor/README.md b/components/bbs-event-processor/README.md index e69de29b..14ecc8ce 100644 --- a/components/bbs-event-processor/README.md +++ b/components/bbs-event-processor/README.md @@ -0,0 +1,76 @@ +# BBS use case event processor + +--- + +## Overview + +BBE-ep is responsible for handling two types of events for the BBS use case. + +First are PNF re-registration internal events published by PRH (in **unauthenticated.PNF_UPDATE** DMaaP topic). +BBS-ep must process these internal events to understand if they actually constitute ONT(CPE) relocation events. +In the relocation case, it publishes an event towards **unauthenticated.DCAE_CL_OUTPUT** DMaaP topic to trigger +further Policy actions related to BBS use case. + +Second type of events are CPE authentication events originally published by the Edge SDN M&C component of BBS +use case architecture. Through RestConf-Collector or VES-Collector, these events are consumed by BBS-ep +(in **unauthenticated.CPE_AUTHENTICATION** DMaaP topic) and they are forwarded towards **unauthenticated.DCAE_CL_OUTPUT** +DMaaP topic to trigger further Policy actions related to BBS use case. + +BBE-ep periodically polls for the two events. Polling interval is configurable and can be changed dynamically from Consul. I +Its implementation is based on Reactive Streams (Reactor library), so it is fully asynchronous and non-blocking. + +## Installation and Removal + +BBS-ep is delivered as a Spring-Boot application ready to be deployed in Docker (via docker-compose). + +For Dublin release, it will be a DCAE component that can dynamically be deployed via Cloudify blueprint installation. +Steps to deploy are shown below + +- Transfer blueprint component file in DCAE bootstrap POD under /blueprints directory. Blueprint can be found in + +- Transfer blueprint component inputs file in DCAE bootstrap POD under / directory. Blueprint inputs file can be found in + +- Enter the Bootstrap POD +- Validate blueprint + cfy blueprints validate /blueprints/k8s-bbs-event-processor.yaml-template +- Upload validated blueprint + cfy blueprints upload -b bbs-ep /blueprints/k8s-bbs-event-processor.yaml-template +- Create deployment + cfy deployments create -b bbs-ep -i /bbs-event-processor-input.yaml bbs-ep +- Deploy blueprint + cfy executions start -d bbs-ep install + +To un-deploy BBS-ep, steps are shown below + +- Validate blueprint by running command + cfy uninstall bbs-ep +- Validate blueprint by running command + cfy blueprints delete bbs-ep + +## Functionality + +For more details about the exact flows and where BBS-EP fits in the overall BBS flows, visit [use case official documentation](https://wiki.onap.org/display/DW/BBS+Notifications) + +## Compiling BBS-ep + +BBS-ep is a sub-project of dcaegen2/services (inside components directory). +To build just the BBS-ep component, run the following maven command from within **components/bbs-event-processor** directory + +`mvn clean install` + +## Main API Endpoints + +Running with dev-mode of BBS-ep + + - **Heartbeat** + - GET http://:8100/heartbeat + - **Start Polling for events** + - POST http://:8100/start-tasks + - **Stop Polling for events** + - POST http://:8100/cancel-tasks + - **Execute just one polling for PNF re-registration internal events** + - POST http://:8100/poll-reregistration-events + - **Execute just one polling for CPE authentication events** + - POST http://:8100/poll-cpe-authentication-events + - **Change application logging level** + - POST http://:8100/logging/{level} \ No newline at end of file diff --git a/components/bbs-event-processor/dpo/blueprints/bbs-event-processor-input.yaml b/components/bbs-event-processor/dpo/blueprints/bbs-event-processor-input.yaml index 420b5018..a7adbbb2 100644 --- a/components/bbs-event-processor/dpo/blueprints/bbs-event-processor-input.yaml +++ b/components/bbs-event-processor/dpo/blueprints/bbs-event-processor-input.yaml @@ -16,7 +16,7 @@ # ============LICENSE_END========================================================= -tag_version: nexus3.onap.org:10003/onap/org.onap.dcaegen2.services.components.bbs-event-processor:1.0.0-SNAPSHOT +tag_version: nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.components.bbs-event-processor:1.0.0-SNAPSHOT pnf_reregistration_url: http:message-router:3904/events/unauthenticated.PNF_UPDATE cpe_authentication_url: http:message-router:3904/events/unauthenticated.CPE_AUTHENTICATION close_loop_url: http:message-router:3904/events/unauthenticated.DCAE_CL_OUTPUT @@ -26,4 +26,4 @@ application_cpeAuth_policy_scope: policyScopeCpeAuth application_cpeAuth_cl_control_name: clControlNameCpeAuth application_cbs_polling_interval_sec: 120 dmaap_consumer_id: c12 -dmaap_consumer_group: OpenDcae-c12 +dmaap_consumer_group: OpenDcae-c12 \ No newline at end of file diff --git a/components/bbs-event-processor/pom.xml b/components/bbs-event-processor/pom.xml index ae9583ec..7ebe18ec 100644 --- a/components/bbs-event-processor/pom.xml +++ b/components/bbs-event-processor/pom.xml @@ -5,9 +5,9 @@ 4.0.0 - org.onap.oparent - oparent - 1.2.3 + org.onap.oparent + oparent + 1.2.3 org.onap.dcaegen2.services.components @@ -28,8 +28,7 @@ 8 2.7.5 - 5.1.2.RELEASE - 2.1.0.RELEASE + 2.1.3.RELEASE 8.5.32 1.7.25 1.1.0 @@ -37,7 +36,6 @@ 1.1.2-SNAPSHOT 1.1.3 1.1.3 - 5.2.4.Final 2.21.0 2.8.0 yyyyMMdd'T'HHmmss @@ -91,11 +89,6 @@ gson ${immutables.version} - - org.hibernate - hibernate-validator - ${hibernate-validator.version} - org.springframework.boot spring-boot-dependencies @@ -193,13 +186,28 @@ lombok - org.hibernate - hibernate-validator + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + test com.github.tomakehurst wiremock-jre8 test + + + com.fasterxml.jackson.core + jackson-core + + + com.fasterxml.jackson.core + jackson-annotations + + + com.fasterxml.jackson.core + jackson-databind + + diff --git a/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/controllers/BbsEventProcessorController.java b/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/controllers/BbsEventProcessorController.java index 135b41d4..fda553fa 100644 --- a/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/controllers/BbsEventProcessorController.java +++ b/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/controllers/BbsEventProcessorController.java @@ -47,6 +47,8 @@ import reactor.core.publisher.Mono; @Api(value = "BbsEventProcessorController", description = "Manage bbs-event-processor microService") public class BbsEventProcessorController { + private static final Logger LOGGER = LoggerFactory.getLogger(BbsEventProcessorController.class); + private ReRegistrationPipeline reRegistrationPipeline; private CpeAuthenticationPipeline cpeAuthenticationPipeline; private Scheduler scheduler; @@ -66,8 +68,6 @@ public class BbsEventProcessorController { this.scheduler = scheduler; } - private static final Logger LOGGER = LoggerFactory.getLogger(BbsEventProcessorController.class); - /** * Responds to health-check heartbeats. * @return Proper HTTP response based on application health @@ -180,6 +180,13 @@ public class BbsEventProcessorController { * @return Proper HTTP response based on change logging level result */ @PostMapping("logging/{level}") + @ApiOperation(value = "Returns result of request to change application logging level") + @ApiResponses(value = { + @ApiResponse(code = 200, message = "Application logging level was successfully changed"), + @ApiResponse(code = 401, message = "Not authorized to view the resource"), + @ApiResponse(code = 403, message = "Resource access is forbidden"), + @ApiResponse(code = 404, message = "Resource is not found"), + @ApiResponse(code = 406, message = "Application logging level change failure. Check logs")}) public Mono> changeLoggingLevel(@PathVariable String level) { return Mono.defer(() -> { if (LoggingUtil.changeLoggingLevel(level)) { diff --git a/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/model/AuthenticationState.java b/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/model/AuthenticationState.java index cef24b5f..fd170231 100644 --- a/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/model/AuthenticationState.java +++ b/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/model/AuthenticationState.java @@ -28,12 +28,12 @@ public enum AuthenticationState { IN_SERVICE(IN_SERVICE_NAME_IN_ONAP), OUT_OF_SERVICE(OUT_OF_SERVICE_NAME_IN_ONAP); + private String nameInOnap; + AuthenticationState(String nameInOnap) { this.nameInOnap = nameInOnap; } - private String nameInOnap; - public String getNameInOnap() { return nameInOnap; } diff --git a/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/pipelines/CpeAuthenticationPipeline.java b/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/pipelines/CpeAuthenticationPipeline.java index d4688594..711ab185 100644 --- a/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/pipelines/CpeAuthenticationPipeline.java +++ b/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/pipelines/CpeAuthenticationPipeline.java @@ -140,6 +140,7 @@ public class CpeAuthenticationPipeline { LOGGER.info("Nothing to consume from DMaaP"); } else { LOGGER.error("DMaaP Consumer error: {}", e.getMessage()); + LOGGER.debug("Error\n", e); } }) .onErrorResume( diff --git a/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/pipelines/ReRegistrationPipeline.java b/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/pipelines/ReRegistrationPipeline.java index 0f28d7c5..9a42ed21 100644 --- a/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/pipelines/ReRegistrationPipeline.java +++ b/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/pipelines/ReRegistrationPipeline.java @@ -139,6 +139,7 @@ public class ReRegistrationPipeline { LOGGER.info("Nothing to consume from DMaaP"); } else { LOGGER.error("DMaaP Consumer error: {}", e.getMessage()); + LOGGER.debug("Error\n", e); } }) .onErrorResume( diff --git a/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/tasks/DmaapCpeAuthenticationConsumerTaskImpl.java b/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/tasks/DmaapCpeAuthenticationConsumerTaskImpl.java index 4c5122d5..e6bef523 100644 --- a/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/tasks/DmaapCpeAuthenticationConsumerTaskImpl.java +++ b/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/tasks/DmaapCpeAuthenticationConsumerTaskImpl.java @@ -87,7 +87,8 @@ public class DmaapCpeAuthenticationConsumerTaskImpl LOGGER.info("DMaaP CPE authentication consumer update due to new application configuration"); httpClient = httpClientFactory.create(this.configuration.getDmaapCpeAuthenticationConsumerConfiguration()); } catch (SSLException e) { - LOGGER.error("Error while updating HTTP Client after a config update: SSL exception"); + LOGGER.error("SSL error while updating HTTP Client after a config update"); + LOGGER.debug("SSL exception\n", e); } } @@ -101,6 +102,7 @@ public class DmaapCpeAuthenticationConsumerTaskImpl .doOnError(e -> { if (!(e instanceof EmptyDmaapResponseException)) { LOGGER.error("DMaaP Consumption Exception: {}", e.getMessage()); + LOGGER.debug("Exception\n", e); } }); } diff --git a/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/tasks/DmaapReRegistrationConsumerTaskImpl.java b/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/tasks/DmaapReRegistrationConsumerTaskImpl.java index 6985396c..92f5a86f 100644 --- a/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/tasks/DmaapReRegistrationConsumerTaskImpl.java +++ b/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/tasks/DmaapReRegistrationConsumerTaskImpl.java @@ -87,7 +87,8 @@ public class DmaapReRegistrationConsumerTaskImpl implements DmaapReRegistrationC LOGGER.info("DMaaP PNF reregistration consumer update due to new application configuration"); httpClient = httpClientFactory.create(this.configuration.getDmaapReRegistrationConsumerConfiguration()); } catch (SSLException e) { - LOGGER.error("Error while updating HTTP Client after a config update: SSL exception"); + LOGGER.error("SSL error while updating HTTP Client after a config update"); + LOGGER.debug("SSL exception\n", e); } } @@ -101,6 +102,7 @@ public class DmaapReRegistrationConsumerTaskImpl implements DmaapReRegistrationC .doOnError(e -> { if (!(e instanceof EmptyDmaapResponseException)) { LOGGER.error("DMaaP Consumption Exception: {}", e.getMessage()); + LOGGER.debug("Exception\n", e); } }); } diff --git a/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/utilities/AaiReactiveClient.java b/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/utilities/AaiReactiveClient.java index e07de4bb..19b81a80 100644 --- a/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/utilities/AaiReactiveClient.java +++ b/components/bbs-event-processor/src/main/java/org/onap/bbs/event/processor/utilities/AaiReactiveClient.java @@ -95,7 +95,8 @@ public class AaiReactiveClient implements ConfigurationChangeObserver { try { setupWebClient(); } catch (SSLException e) { - LOGGER.error("AAI Reactive client error while re-configuring WebClient"); + LOGGER.error("AAI Reactive client SSL error while re-configuring WebClient"); + LOGGER.debug("SSL Exception\n", e); } } }