summaryrefslogtreecommitdiffstats
path: root/dcae-analytics/dcae-analytics-tca-web/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'dcae-analytics/dcae-analytics-tca-web/src/main/java/org')
-rw-r--r--dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/controller/TcaRestController.java9
-rw-r--r--dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/domain/TcaPolicyWrapper.java20
-rw-r--r--dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/service/TcaProcessingServiceImpl.java5
-rw-r--r--dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/validation/TcaPolicyValidator.java101
4 files changed, 76 insertions, 59 deletions
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 402d475..91181ed 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
@@ -1,6 +1,7 @@
/*
- * ================================================================================
+ * =============LICENSE_START======================================================
* Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (c) 2022 Wipro Limited 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.
@@ -64,14 +65,14 @@ public class TcaRestController {
@GetMapping(value = TcaModelConstants.TCA_POLICY_ENDPOINT, produces = MediaType.APPLICATION_JSON_VALUE)
@ApiOperation(value = "Provides current TCA Policy")
- public ResponseEntity<TcaPolicy> getTcaPolicy() {
+ public ResponseEntity<List<TcaPolicy>> getTcaPolicy() {
return getTcaPolicyResponse(tcaPolicyWrapper);
}
@PostMapping(value = TcaModelConstants.TCA_POLICY_ENDPOINT, produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE)
@ApiOperation(value = "Sets new value for TCA Policy and returns current Policy")
- public ResponseEntity<TcaPolicy> setTcaPolicy(@RequestBody final TcaPolicy tcaPolicy) {
+ public ResponseEntity<List<TcaPolicy>> setTcaPolicy(@RequestBody final List<TcaPolicy> tcaPolicy) {
tcaPolicyWrapper.setTcaPolicy(tcaPolicy, ConfigSource.REST_API);
return getTcaPolicyResponse(tcaPolicyWrapper);
}
@@ -103,7 +104,7 @@ public class TcaRestController {
}
- private static ResponseEntity<TcaPolicy> getTcaPolicyResponse(final TcaPolicyWrapper tcaPolicyWrapper) {
+ private static ResponseEntity<List<TcaPolicy>> getTcaPolicyResponse(final TcaPolicyWrapper tcaPolicyWrapper) {
return ResponseEntity.ok()
.header(TcaModelConstants.TCA_POLICY_SOURCE_HEADER_KEY, tcaPolicyWrapper.getConfigSource().name())
.header(TcaModelConstants.TCA_POLICY_CREATION_HEADER_KEY,
diff --git a/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/domain/TcaPolicyWrapper.java b/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/domain/TcaPolicyWrapper.java
index fcfc3fe..1873c3c 100644
--- a/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/domain/TcaPolicyWrapper.java
+++ b/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/domain/TcaPolicyWrapper.java
@@ -1,6 +1,7 @@
/*
- * ================================================================================
+ * ===========LICENSE_START=====================================================================
* Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (c) 2022 Wipro Limited 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,9 +24,11 @@ import static org.onap.dcae.analytics.tca.model.util.json.TcaModelJsonConversion
import java.time.ZonedDateTime;
import java.util.concurrent.atomic.AtomicInteger;
+import java.util.List;
import org.onap.dcae.analytics.model.common.ConfigSource;
import org.onap.dcae.analytics.tca.core.exception.AnalyticsParsingException;
+import org.onap.dcae.analytics.tca.core.exception.TcaProcessingException;
import org.onap.dcae.analytics.tca.model.policy.TcaPolicy;
import org.onap.dcae.analytics.tca.model.policy.TcaPolicyModel;
import org.onap.dcae.analytics.tca.web.TcaAppProperties;
@@ -57,7 +60,7 @@ public class TcaPolicyWrapper implements TcaPolicyModel {
this.policyVersion = getPolicyVersion(new AtomicInteger(0));
}
- public TcaPolicy getTcaPolicy() {
+ public List<TcaPolicy> getTcaPolicy() {
String tcaPolicyString = tcaAppProperties.getTca().getPolicy();
boolean isConfigBindingServiceProfileActive = tcaAppProperties.isConfigBindingServiceProfileActive();
if (isConfigBindingServiceProfileActive) {
@@ -75,15 +78,22 @@ public class TcaPolicyWrapper implements TcaPolicyModel {
tcaPolicy, configSource.name(), policyVersion);
}
- return convertTcaPolicy(tcaPolicyString);
+ List<TcaPolicy> tcaPolicyList = convertTcaPolicy(tcaPolicyString);
+ if( tcaPolicyList.size() > 2)
+ {
+ throw new TcaProcessingException(" TCA Policy size exceeding limit of 2");
+ }
+ else
+ return tcaPolicyList;
+
}
- public void setTcaPolicy(TcaPolicy tcaPolicy, ConfigSource configSource) {
+ public void setTcaPolicy(List<TcaPolicy> tcaPolicy, ConfigSource configSource) {
this.tcaPolicy = tcaPolicy.toString();
this.configSource = configSource;
}
- public TcaPolicy convertTcaPolicy(String tcaPolicyString) {
+ public List<TcaPolicy> convertTcaPolicy(String tcaPolicyString) {
return TCA_POLICY_JSON_FUNCTION.apply(tcaPolicyString).orElseThrow(
() -> new AnalyticsParsingException("Unable to parse Tca Policy String: " + tcaPolicyString,
new IllegalArgumentException()));
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 7f6891d..12cbcf8 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
@@ -1,6 +1,7 @@
/*
- * ================================================================================
+ * ==============LICENSE_START=====================================================
* Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (c) 2022 Wipro Limited 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.
@@ -59,7 +60,7 @@ public class TcaProcessingServiceImpl implements TcaProcessingService {
final TcaPolicyWrapper tcaPolicyWrapper,
final List<String> cefMessages) {
// create tca policy deep copy as it should be same for current execution
- final TcaPolicy tcaPolicyDeepCopy = TcaUtils.getTcaPolicyDeepCopy(tcaPolicyWrapper.getTcaPolicy());
+ final List<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/main/java/org/onap/dcae/analytics/tca/web/validation/TcaPolicyValidator.java b/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/validation/TcaPolicyValidator.java
index f380699..3f9dfc0 100644
--- a/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/validation/TcaPolicyValidator.java
+++ b/dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/validation/TcaPolicyValidator.java
@@ -1,6 +1,7 @@
/*
- * ================================================================================
+ * ==========LICENSE_START======================================================================
* Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (c) 2022 Wipro Limited 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.
@@ -42,71 +43,75 @@ import org.springframework.validation.Errors;
*
* @author Rajiv Singla
*/
-public class TcaPolicyValidator implements AnalyticsValidator<TcaPolicy, GenericValidationResponse> {
+public class TcaPolicyValidator implements AnalyticsValidator<List<TcaPolicy>, GenericValidationResponse> {
private static final long serialVersionUID = 1L;
@Override
- public GenericValidationResponse apply(final TcaPolicy tcaPolicy) {
+ public GenericValidationResponse apply(final List<TcaPolicy> tcaPol) {
final GenericValidationResponse validationResponse = new GenericValidationResponse();
-
- // validate TCA Policy must domain present
- final String domain = tcaPolicy.getDomain();
- if (isEmpty(domain)) {
- validationResponse.addErrorMessage("domain", "TCA Policy must have only one domain present");
- }
-
- // validate TCA Policy must have at lease one metrics per event name
- final List<MetricsPerEventName> metricsPerEventNames = tcaPolicy.getMetricsPerEventName();
- if (metricsPerEventNames == null || metricsPerEventNames.isEmpty()) {
- validationResponse
+
+ for( TcaPolicy tcaPolicy : tcaPol) {
+
+ // validate TCA Policy must domain present
+ final String domain = tcaPolicy.getDomain();
+ if (isEmpty(domain)) {
+ validationResponse.addErrorMessage("domain", "TCA Policy must have only one domain present");
+ }
+
+ // validate TCA Policy must have at lease one metrics per event name
+ final List<MetricsPerEventName> metricsPerEventNames = tcaPolicy.getMetricsPerEventName();
+ if (metricsPerEventNames == null || metricsPerEventNames.isEmpty()) {
+ validationResponse
.addErrorMessage("metricsPerEventName", "TCA Policy metricsPerEventName is empty");
- return validationResponse;
- }
+ return validationResponse;
+ }
- // validate Metrics Per Event Name
- for (MetricsPerEventName metricsPerEventName : metricsPerEventNames) {
+ // validate Metrics Per Event Name
+ for (MetricsPerEventName metricsPerEventName : metricsPerEventNames) {
- // event name must be present
- final String eventName = metricsPerEventName.getEventName();
- if (isEmpty(eventName)) {
- validationResponse.addErrorMessage("eventName",
+ // event name must be present
+ final String eventName = metricsPerEventName.getEventName();
+ if (isEmpty(eventName)) {
+ validationResponse.addErrorMessage("eventName",
"TCA Policy eventName is not present for metricsPerEventNames:" + metricsPerEventName);
- }
+ }
- // control Loop Schema type must be present
- final ControlLoopSchemaType controlLoopSchemaType = metricsPerEventName.getControlLoopSchemaType();
- if (controlLoopSchemaType == null) {
- validationResponse.addErrorMessage("controlLoopEventType",
- "TCA Policy controlLoopSchemaType is not present for metricsPerEventNames:"
+ // control Loop Schema type must be present
+ final ControlLoopSchemaType controlLoopSchemaType = metricsPerEventName.getControlLoopSchemaType();
+ if (controlLoopSchemaType == null) {
+ validationResponse.addErrorMessage("controlLoopEventType",
+ "TCA Policy controlLoopSchemaType is not present for metricsPerEventNames:"
+ metricsPerEventName);
- }
+ }
- // must have at least 1 threshold defined
- final List<Threshold> thresholds = metricsPerEventName.getThresholds();
- if (thresholds == null || thresholds.isEmpty()) {
- validationResponse.addErrorMessage("thresholds",
+ // must have at least 1 threshold defined
+ final List<Threshold> thresholds = metricsPerEventName.getThresholds();
+ if (thresholds == null || thresholds.isEmpty()) {
+ validationResponse.addErrorMessage("thresholds",
"TCA Policy event Name must have at least one threshold. " +
"Event Name causing this validation error:" + metricsPerEventName);
- } else {
- // validate each threshold must have non null - fieldPath, thresholdValue, direction and severity
- for (Threshold eventNameThreshold : thresholds) {
- final String fieldPath = eventNameThreshold.getFieldPath();
- final Long thresholdValue = eventNameThreshold.getThresholdValue();
- final Direction direction = eventNameThreshold.getDirection();
- final EventSeverity severity = eventNameThreshold.getSeverity();
- final ClosedLoopEventStatus closedLoopEventStatus = eventNameThreshold.getClosedLoopEventStatus();
- if (isEmpty(fieldPath) || thresholdValue == null || direction == null || severity == null ||
+ } else {
+ // validate each threshold must have non null - fieldPath, thresholdValue, direction and severity
+ for (Threshold eventNameThreshold : thresholds) {
+ final String fieldPath = eventNameThreshold.getFieldPath();
+ final Long thresholdValue = eventNameThreshold.getThresholdValue();
+ final Direction direction = eventNameThreshold.getDirection();
+ final EventSeverity severity = eventNameThreshold.getSeverity();
+ final ClosedLoopEventStatus closedLoopEventStatus = eventNameThreshold.getClosedLoopEventStatus();
+ if (isEmpty(fieldPath) || thresholdValue == null || direction == null || severity == null ||
closedLoopEventStatus == null) {
- validationResponse.addErrorMessage("threshold",
+ validationResponse.addErrorMessage("threshold",
"TCA Policy threshold must have fieldPath,thresholdValue,direction, " +
"closedLoopEventStatus and severity defined." +
"Threshold causing this validation error:" + eventNameThreshold);
- }
- }
- }
- }
+ }
+ }
+ }
+
+ }
+ }
return validationResponse;
}
@@ -124,7 +129,7 @@ public class TcaPolicyValidator implements AnalyticsValidator<TcaPolicy, Generic
return;
}
- final TcaPolicy tcaPolicy = (TcaPolicy) target;
+ final List<TcaPolicy> tcaPolicy = (List<TcaPolicy>) target;
final GenericValidationResponse validationResponse = apply(tcaPolicy);
if (validationResponse.hasErrors()) {
errors.rejectValue("tca policy", validationResponse.getAllErrorMessage());