diff options
author | Stavros Kanarakis <stavros.kanarakis@nokia.com> | 2019-04-04 12:05:02 +0300 |
---|---|---|
committer | Stavros Kanarakis <stavros.kanarakis@nokia.com> | 2019-04-08 11:20:06 +0300 |
commit | 3601ddf5c10e2a0dfcbbf854fd40cfbbc14074f0 (patch) | |
tree | c55328e9031584a4b3495b05f6c3844d6705d325 /components/bbs-event-processor | |
parent | a224d68ec23c2985daab026014c58227f7ab8c1a (diff) |
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 <stavros.kanarakis@nokia.com>
Diffstat (limited to 'components/bbs-event-processor')
10 files changed, 120 insertions, 22 deletions
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 + <https://gerrit.onap.org/r/gitweb?p=dcaegen2/services.git;a=blob_plain;f=components/bbs-event-processor/dpo/blueprints/k8s-bbs-event-processor.yaml-template;hb=refs/heads/master> +- Transfer blueprint component inputs file in DCAE bootstrap POD under / directory. Blueprint inputs file can be found in + <https://gerrit.onap.org/r/gitweb?p=dcaegen2/services.git;a=blob_plain;f=components/bbs-event-processor/dpo/blueprints/bbs-event-processor-input.yaml;h=36e69cf64bee3b46ee2e1b95f1a16380b7046482;hb=refs/heads/master> +- 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://<container_address>:8100/heartbeat + - **Start Polling for events** + - POST http://<container_address>:8100/start-tasks + - **Stop Polling for events** + - POST http://<container_address>:8100/cancel-tasks + - **Execute just one polling for PNF re-registration internal events** + - POST http://<container_address>:8100/poll-reregistration-events + - **Execute just one polling for CPE authentication events** + - POST http://<container_address>:8100/poll-cpe-authentication-events + - **Change application logging level** + - POST http://<container_address>: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 @@ <modelVersion>4.0.0</modelVersion> <parent> - <groupId>org.onap.oparent</groupId> - <artifactId>oparent</artifactId> - <version>1.2.3</version> + <groupId>org.onap.oparent</groupId> + <artifactId>oparent</artifactId> + <version>1.2.3</version> </parent> <groupId>org.onap.dcaegen2.services.components</groupId> @@ -28,8 +28,7 @@ <properties> <java.version>8</java.version> <immutables.version>2.7.5</immutables.version> - <spring.version>5.1.2.RELEASE</spring.version> - <spring-boot.version>2.1.0.RELEASE</spring-boot.version> + <spring-boot.version>2.1.3.RELEASE</spring-boot.version> <tomcat.version>8.5.32</tomcat.version> <slf4j.version>1.7.25</slf4j.version> <junit-platform.version>1.1.0</junit-platform.version> @@ -37,7 +36,6 @@ <sdk.version>1.1.2-SNAPSHOT</sdk.version> <common.sdk.version>1.1.3</common.sdk.version> <cbs.version>1.1.3</cbs.version> - <hibernate-validator.version>5.2.4.Final</hibernate-validator.version> <wiremock.version>2.21.0</wiremock.version> <springfox-swagger.version>2.8.0</springfox-swagger.version> <maven.build.timestamp.format>yyyyMMdd'T'HHmmss</maven.build.timestamp.format> @@ -92,11 +90,6 @@ <version>${immutables.version}</version> </dependency> <dependency> - <groupId>org.hibernate</groupId> - <artifactId>hibernate-validator</artifactId> - <version>${hibernate-validator.version}</version> - </dependency> - <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> @@ -193,13 +186,28 @@ <artifactId>lombok</artifactId> </dependency> <dependency> - <groupId>org.hibernate</groupId> - <artifactId>hibernate-validator</artifactId> + <groupId>com.fasterxml.jackson.datatype</groupId> + <artifactId>jackson-datatype-jsr310</artifactId> + <scope>test</scope> </dependency> <dependency> <groupId>com.github.tomakehurst</groupId> <artifactId>wiremock-jre8</artifactId> <scope>test</scope> + <exclusions> + <exclusion> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-core</artifactId> + </exclusion> + <exclusion> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-annotations</artifactId> + </exclusion> + <exclusion> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-databind</artifactId> + </exclusion> + </exclusions> </dependency> </dependencies> 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<ResponseEntity<String>> 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); } } } |