From: Kai Date: Mon, 18 May 2020 01:59:28 +0000 (+0800) Subject: for policy update work X-Git-Tag: 1.2.0~5 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=ddb9b0f7e578aefd06ee9e3f01d810b0b9034f3a;p=dcaegen2%2Fanalytics%2Ftca-gen2.git for policy update work Issue-ID: DCAEGEN2-2198 Signed-off-by: Kai Lu Change-Id: I8e1fec6f180ea3f44fa6df707048b5396b8d5a39 --- diff --git a/dcae-analytics/dcae-analytics-tca-model/src/main/java/org/onap/dcae/analytics/tca/model/restapi/TcaExecutionRequest.java b/dcae-analytics/dcae-analytics-tca-model/src/main/java/org/onap/dcae/analytics/tca/model/restapi/TcaExecutionRequest.java index 5da6985..27b3489 100644 --- a/dcae-analytics/dcae-analytics-tca-model/src/main/java/org/onap/dcae/analytics/tca/model/restapi/TcaExecutionRequest.java +++ b/dcae-analytics/dcae-analytics-tca-model/src/main/java/org/onap/dcae/analytics/tca/model/restapi/TcaExecutionRequest.java @@ -32,8 +32,6 @@ import org.onap.dcae.analytics.tca.model.policy.TcaPolicy; @Data public class TcaExecutionRequest implements TcaRestApiModel { - private static final long serialVersionUID = 1L; - private String requestId; private String transactionId; private TcaPolicy tcaPolicy; 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 e330914..3579d3e 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 @@ -86,7 +86,7 @@ public class TcaMrConfig { tcaProcessingService.getTcaExecutionResults( headers.getOrDefault(REQUEST_ID_HEADER_KEY, headers.get(MessageHeaders.ID)).toString(), headers.getOrDefault(REQUEST_TRANSACTION_ID_HEADER_KEY, "").toString(), - tcaPolicyWrapper.getTcaPolicy(), 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/controller/TcaRestController.java b/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/controller/TcaRestController.java index 0d34f90..402d475 100644 --- a/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/controller/TcaRestController.java +++ b/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/controller/TcaRestController.java @@ -82,10 +82,11 @@ public class TcaRestController { @ApiOperation(value = "Applies TCA to provided execution request and generated TCA execution response") public ResponseEntity> execute(@RequestBody final TcaExecutionRequest tcaExecutionRequest) { + // process tca execution request final List executionContexts = tcaProcessingService.getTcaExecutionResults( tcaExecutionRequest.getRequestId(), tcaExecutionRequest.getTransactionId(), - tcaExecutionRequest.getTcaPolicy(), TcaUtils.getCefMessagesFromEventListeners + tcaPolicyWrapper, TcaUtils.getCefMessagesFromEventListeners (tcaExecutionRequest.getEventListeners())); // create execution response final List tcaExecutionResponses = executionContexts.stream().map(tcaExecutionContext -> { diff --git a/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/service/TcaProcessingService.java b/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/service/TcaProcessingService.java index 39a985c..5b9f5a8 100644 --- a/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/service/TcaProcessingService.java +++ b/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/service/TcaProcessingService.java @@ -22,7 +22,7 @@ package org.onap.dcae.analytics.tca.web.service; import java.util.List; import org.onap.dcae.analytics.tca.core.service.TcaExecutionContext; -import org.onap.dcae.analytics.tca.model.policy.TcaPolicy; +import org.onap.dcae.analytics.tca.web.domain.TcaPolicyWrapper; /** * Provides TCA functionality @@ -36,13 +36,13 @@ public interface TcaProcessingService { * * @param requestId request id associated with tca execution request * @param transactionId transaction id associated with the tca execution request - * @param tcaPolicy tca policy that needs to be applied to CEF messages + * @param tcaPolicyWrapper tca policy that needs to be applied to CEF messages * @param cefMessages list of CEF messages that needs to be processed by TCA * * @return results of TCA Processing */ List getTcaExecutionResults(String requestId, String transactionId, - TcaPolicy tcaPolicy, + TcaPolicyWrapper tcaPolicyWrapper, List cefMessages); diff --git a/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/service/TcaProcessingServiceImpl.java b/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/service/TcaProcessingServiceImpl.java index f5aec0b..e05026c 100644 --- a/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/service/TcaProcessingServiceImpl.java +++ b/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/service/TcaProcessingServiceImpl.java @@ -37,6 +37,7 @@ import org.onap.dcae.analytics.tca.core.service.TcaExecutionContext; import org.onap.dcae.analytics.tca.core.util.TcaUtils; import org.onap.dcae.analytics.tca.core.util.function.calculation.TcaCalculator; import org.onap.dcae.analytics.tca.model.policy.TcaPolicy; +import org.onap.dcae.analytics.tca.web.domain.TcaPolicyWrapper; /** * @author Rajiv Singla @@ -56,10 +57,10 @@ public class TcaProcessingServiceImpl implements TcaProcessingService { @Override public List getTcaExecutionResults(final String requestId, final String transactionId, - final TcaPolicy tcaPolicy, + final TcaPolicyWrapper tcaPolicyWrapper, final List cefMessages) { // create tca policy deep copy as it should be same for current execution - final TcaPolicy tcaPolicyDeepCopy = TcaUtils.getTcaPolicyDeepCopy(tcaPolicy); + final TcaPolicy tcaPolicyDeepCopy = TcaUtils.getTcaPolicyDeepCopy(tcaPolicyWrapper.getTcaPolicy()); // create new request id if not present final String executionRequestId = isPresent(requestId) ? requestId : REQUEST_ID_SUPPLIER.get(); // create transaction id if not present diff --git a/dcae-analytics/dcae-analytics-tca-web/src/test/java/org/onap/dcae/analytics/tca/web/controller/TcaRestControllerTest.java b/dcae-analytics/dcae-analytics-tca-web/src/test/java/org/onap/dcae/analytics/tca/web/controller/TcaRestControllerTest.java index 04146a3..001af0f 100644 --- a/dcae-analytics/dcae-analytics-tca-web/src/test/java/org/onap/dcae/analytics/tca/web/controller/TcaRestControllerTest.java +++ b/dcae-analytics/dcae-analytics-tca-web/src/test/java/org/onap/dcae/analytics/tca/web/controller/TcaRestControllerTest.java @@ -54,9 +54,8 @@ public class TcaRestControllerTest { TcaProcessingService tcaProcessingService = Mockito.mock(TcaProcessingService.class); TcaExecutionContext tcaExecutionContext = Mockito.mock(TcaExecutionContext.class); List cefMessages = Arrays.asList("Test1", "Test2"); - TcaPolicy tcaPolicy = Mockito.mock(TcaPolicy.class); List executionContexts = Arrays.asList(tcaExecutionContext, tcaExecutionContext); - Mockito.when(tcaProcessingService.getTcaExecutionResults("requestId", "transactioId", tcaPolicy, cefMessages)) + Mockito.when(tcaProcessingService.getTcaExecutionResults("requestId", "transactioId", tcaPolicyWrapper, cefMessages)) .thenReturn(executionContexts); TcaRestController restcontroller = new TcaRestController(tcaProcessingService, tcaPolicyWrapper); restcontroller.execute(tcaExecutionRequest); diff --git a/dcae-analytics/dcae-analytics-tca-web/src/test/java/org/onap/dcae/analytics/tca/web/service/TcaProcessingServiceImplTest.java b/dcae-analytics/dcae-analytics-tca-web/src/test/java/org/onap/dcae/analytics/tca/web/service/TcaProcessingServiceImplTest.java index 9347d53..5e9957e 100644 --- a/dcae-analytics/dcae-analytics-tca-web/src/test/java/org/onap/dcae/analytics/tca/web/service/TcaProcessingServiceImplTest.java +++ b/dcae-analytics/dcae-analytics-tca-web/src/test/java/org/onap/dcae/analytics/tca/web/service/TcaProcessingServiceImplTest.java @@ -25,12 +25,14 @@ import java.util.Arrays; import java.util.List; import org.junit.jupiter.api.Test; +import org.mockito.Mockito; import org.onap.dcae.analytics.tca.core.exception.AnalyticsParsingException; import org.onap.dcae.analytics.tca.core.service.TcaAaiEnrichmentContext; import org.onap.dcae.analytics.tca.core.service.TcaAbatementContext; import org.onap.dcae.analytics.tca.core.service.TcaExecutionContext; import org.onap.dcae.analytics.tca.model.facade.TcaAlert; import org.onap.dcae.analytics.tca.model.policy.TcaPolicy; +import org.onap.dcae.analytics.tca.web.domain.TcaPolicyWrapper; import com.fasterxml.jackson.databind.ObjectMapper; @@ -53,10 +55,12 @@ class TcaProcessingServiceImplTest { TcaAbatementContext tcaAbatementContext = new TestTcaAbatementContext(); TcaAaiEnrichmentContext tcaAaiEnrichmentContext = new TestTcaAaiEnrichmentContext(); + TcaPolicyWrapper tcaPolicyWrapper = Mockito.mock(TcaPolicyWrapper.class); // TcaAppProperties tcaAppProperties = new TcaAppProperties(environment); String policy = "{\"domain\":\"measurementsForVfScaling\",\"metricsPerEventName\":[{\"eventName\":\"Mfvs_eNodeB_RANKPI\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"resource=vFirewall;type=configuration\",\"policyName\":\"configuration.dcae.microservice.tca.xml\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":4000,\"direction\":\"LESS_OR_EQUAL\",\"severity\":\"MAJOR\"},{\"closedLoopControlName\":\"CL-FRWL-HIGH-TRAFFIC-SIG-EA36FE84-9342-5E13-A656-EC5F21309A09\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":20000,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\"},{\"closedLoopControlName\":\"CL-FRWL-HIGH-TRAFFIC-SIG-EA36FE84-9342-5E13-A656-EC5F21309A09\",\"closedLoopEventStatus\":\"ABATED\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":0,\"direction\":\"EQUAL\",\"severity\":\"CRITICAL\"}]},{\"eventName\":\"vLoadBalancer\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"resource=vLoadBalancer;type=configuration\",\"policyName\":\"configuration.dcae.microservice.tca.xml\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":500,\"direction\":\"LESS_OR_EQUAL\",\"severity\":\"MAJOR\"},{\"closedLoopControlName\":\"CL-LBAL-LOW-TRAFFIC-SIG-0C5920A6-B564-8035-C878-0E814352BC2B\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":5000,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\"}]},{\"eventName\":\"virtualVMEventName\",\"controlLoopSchemaType\":\"VM\",\"policyScope\":\"resource=virtualVM;type=configuration\",\"policyName\":\"configuration.dcae.microservice.tca.xml\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":500,\"direction\":\"LESS_OR_EQUAL\",\"severity\":\"MAJOR\"}]}]}"; // TcaPolicyWrapper tcaPolicyWrapper = new TcaPolicyWrapper(tcaAppProperties); TcaPolicy tcaPolicy = convertTcaPolicy(policy); + Mockito.when(tcaPolicyWrapper.getTcaPolicy()).thenReturn(tcaPolicy); TcaProcessingService tcaProcessingService = new TcaProcessingServiceImpl(tcaAbatementContext, tcaAaiEnrichmentContext); String cefMessage = "{\r\n" + @@ -373,7 +377,7 @@ class TcaProcessingServiceImplTest { ObjectMapper objectMapper = new ObjectMapper(); final List tcaExecutionResults = tcaProcessingService.getTcaExecutionResults( - "testRequestId", "testTransactionId", tcaPolicy, + "testRequestId", "testTransactionId", tcaPolicyWrapper, Arrays.asList(cefMessage, cefViolationMessage, cefAbatementMessage, cefInapplicableMessage));