Commits (14)
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.2/apache-maven-3.8.2-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
......@@ -56,9 +56,10 @@
<sonarsource-scanner-plugin.version>3.8.0.2131</sonarsource-scanner-plugin.version>
<spotless-plugin.version>2.10.3</spotless-plugin.version>
<versions-maven-plugin.version>2.8.1</versions-maven-plugin.version>
<quarkus-maven-plugin.version>${quarkus.platform.version}</quarkus-maven-plugin.version>
<quarkus-maven-plugin.version>3.1.3.Final</quarkus-maven-plugin.version>
<quarkus-bootstrap-maven-version>2.16.12.Final</quarkus-bootstrap-maven-version>
<!-- Third-party Dependencies -->
<quarkus.platform.version>2.2.2.Final</quarkus.platform.version>
<quarkus.platform.version>3.1.3.Final</quarkus.platform.version>
</properties>
<distributionManagement>
......@@ -151,6 +152,13 @@
<artifactId>quarkus-config-yaml</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
<!-- Testing -->
<dependency>
<groupId>org.assertj</groupId>
......@@ -277,7 +285,7 @@
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-bootstrap-maven-plugin</artifactId>
<version>${quarkus-maven-plugin.version}</version>
<version>${quarkus-bootstrap-maven-version}</version>
</plugin>
<plugin>
......
......@@ -25,10 +25,10 @@ import context.ContextOuterClass.DeviceId;
import context.ContextOuterClass.DeviceOperationalStatusEnum;
import context.ContextOuterClass.Location.LocationCase;
import context.ContextOuterClass.Uuid;
import jakarta.inject.Singleton;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import javax.inject.Singleton;
import kpi_sample_types.KpiSampleTypes;
import monitoring.Monitoring;
import monitoring.Monitoring.AlarmID;
......@@ -85,7 +85,6 @@ import org.etsi.tfs.policy.context.model.ServiceTypeEnum;
import org.etsi.tfs.policy.context.model.SliceId;
import org.etsi.tfs.policy.context.model.TopologyId;
import org.etsi.tfs.policy.kpi_sample_types.model.KpiSampleType;
import org.etsi.tfs.policy.model.*;
import org.etsi.tfs.policy.monitoring.model.AlarmDescriptor;
import org.etsi.tfs.policy.monitoring.model.AlarmResponse;
import org.etsi.tfs.policy.monitoring.model.AlarmSubscription;
......@@ -101,6 +100,21 @@ import org.etsi.tfs.policy.monitoring.model.MonitorKpiRequest;
import org.etsi.tfs.policy.monitoring.model.StringKpiValue;
import org.etsi.tfs.policy.monitoring.model.SubsDescriptor;
import org.etsi.tfs.policy.monitoring.model.SubsResponse;
import org.etsi.tfs.policy.policy.model.*;
import org.etsi.tfs.policy.policy.model.BooleanOperator;
import org.etsi.tfs.policy.policy.model.NumericalOperator;
import org.etsi.tfs.policy.policy.model.PolicyRule;
import org.etsi.tfs.policy.policy.model.PolicyRuleAction;
import org.etsi.tfs.policy.policy.model.PolicyRuleActionConfig;
import org.etsi.tfs.policy.policy.model.PolicyRuleActionEnum;
import org.etsi.tfs.policy.policy.model.PolicyRuleBasic;
import org.etsi.tfs.policy.policy.model.PolicyRuleCondition;
import org.etsi.tfs.policy.policy.model.PolicyRuleDevice;
import org.etsi.tfs.policy.policy.model.PolicyRuleService;
import org.etsi.tfs.policy.policy.model.PolicyRuleState;
import org.etsi.tfs.policy.policy.model.PolicyRuleStateEnum;
import org.etsi.tfs.policy.policy.model.PolicyRuleTypeDevice;
import org.etsi.tfs.policy.policy.model.PolicyRuleTypeService;
import policy.Policy;
import policy.Policy.PolicyRuleId;
import policy.PolicyAction;
......
......@@ -16,7 +16,7 @@
package org.etsi.tfs.policy;
import javax.enterprise.context.ApplicationScoped;
import jakarta.enterprise.context.ApplicationScoped;
import org.eclipse.microprofile.health.HealthCheck;
import org.eclipse.microprofile.health.HealthCheckResponse;
import org.eclipse.microprofile.health.Liveness;
......
......@@ -16,7 +16,7 @@
package org.etsi.tfs.policy;
import javax.enterprise.context.ApplicationScoped;
import jakarta.enterprise.context.ApplicationScoped;
import org.eclipse.microprofile.health.HealthCheck;
import org.eclipse.microprofile.health.HealthCheckResponse;
import org.eclipse.microprofile.health.Readiness;
......
......@@ -16,8 +16,8 @@
package org.etsi.tfs.policy.common;
import org.etsi.tfs.policy.model.PolicyRuleState;
import org.etsi.tfs.policy.model.PolicyRuleStateEnum;
import org.etsi.tfs.policy.policy.model.PolicyRuleState;
import org.etsi.tfs.policy.policy.model.PolicyRuleStateEnum;
public class ApplicationProperties {
......
......@@ -21,7 +21,7 @@ import org.etsi.tfs.policy.context.model.Device;
import org.etsi.tfs.policy.context.model.Empty;
import org.etsi.tfs.policy.context.model.Service;
import org.etsi.tfs.policy.context.model.ServiceId;
import org.etsi.tfs.policy.model.PolicyRule;
import org.etsi.tfs.policy.policy.model.PolicyRule;
public interface ContextGateway {
......
......@@ -20,14 +20,14 @@ import context.MutinyContextServiceGrpc.MutinyContextServiceStub;
import context_policy.MutinyContextPolicyServiceGrpc.MutinyContextPolicyServiceStub;
import io.quarkus.grpc.GrpcClient;
import io.smallrye.mutiny.Uni;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import org.etsi.tfs.policy.Serializer;
import org.etsi.tfs.policy.context.model.Device;
import org.etsi.tfs.policy.context.model.Empty;
import org.etsi.tfs.policy.context.model.Service;
import org.etsi.tfs.policy.context.model.ServiceId;
import org.etsi.tfs.policy.model.PolicyRule;
import org.etsi.tfs.policy.policy.model.PolicyRule;
@ApplicationScoped
public class ContextGatewayImpl implements ContextGateway {
......
......@@ -21,7 +21,7 @@ import org.etsi.tfs.policy.context.model.Device;
import org.etsi.tfs.policy.context.model.Empty;
import org.etsi.tfs.policy.context.model.Service;
import org.etsi.tfs.policy.context.model.ServiceId;
import org.etsi.tfs.policy.model.PolicyRule;
import org.etsi.tfs.policy.policy.model.PolicyRule;
public interface ContextService {
......
......@@ -17,13 +17,13 @@
package org.etsi.tfs.policy.context;
import io.smallrye.mutiny.Uni;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import org.etsi.tfs.policy.context.model.Device;
import org.etsi.tfs.policy.context.model.Empty;
import org.etsi.tfs.policy.context.model.Service;
import org.etsi.tfs.policy.context.model.ServiceId;
import org.etsi.tfs.policy.model.PolicyRule;
import org.etsi.tfs.policy.policy.model.PolicyRule;
@ApplicationScoped
public class ContextServiceImpl implements ContextService {
......
......@@ -19,8 +19,8 @@ package org.etsi.tfs.policy.device;
import device.DeviceService;
import io.quarkus.grpc.GrpcClient;
import io.smallrye.mutiny.Uni;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import org.etsi.tfs.policy.Serializer;
import org.etsi.tfs.policy.context.model.Device;
import org.etsi.tfs.policy.context.model.DeviceConfig;
......
......@@ -17,8 +17,8 @@
package org.etsi.tfs.policy.device;
import io.smallrye.mutiny.Uni;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import org.etsi.tfs.policy.context.model.Device;
import org.etsi.tfs.policy.context.model.DeviceConfig;
import org.etsi.tfs.policy.context.model.Empty;
......
/*
* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.etsi.tfs.policy.exception;
public class ExternalServiceFailureException extends RuntimeException {
public ExternalServiceFailureException(String message, Exception e) {
super(message, e);
}
public ExternalServiceFailureException(String message) {
super(message);
}
}
/*
* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.etsi.tfs.policy.exception;
import io.grpc.Metadata;
import io.grpc.ServerCall;
import io.grpc.Status;
import io.grpc.StatusRuntimeException;
import io.quarkus.grpc.ExceptionHandler;
import io.quarkus.grpc.ExceptionHandlerProvider;
import jakarta.enterprise.context.ApplicationScoped;
@ApplicationScoped
public class GeneralExceptionHandler implements ExceptionHandlerProvider {
@Override
public <ReqT, RespT> ExceptionHandler<ReqT, RespT> createHandler(
ServerCall.Listener<ReqT> listener, ServerCall<ReqT, RespT> serverCall, Metadata metadata) {
return new HelloExceptionHandler<>(listener, serverCall, metadata);
}
@Override
public Throwable transform(Throwable t) {
if (t instanceof ExternalServiceFailureException) {
return new StatusRuntimeException(Status.INTERNAL.withDescription(t.getMessage()));
} else {
return ExceptionHandlerProvider.toStatusException(t, true);
}
}
private static class HelloExceptionHandler<A, B> extends ExceptionHandler<A, B> {
public HelloExceptionHandler(
ServerCall.Listener<A> listener, ServerCall<A, B> call, Metadata metadata) {
super(listener, call, metadata);
}
@Override
protected void handleException(Throwable t, ServerCall<A, B> call, Metadata metadata) {
StatusRuntimeException sre =
(StatusRuntimeException) ExceptionHandlerProvider.toStatusException(t, true);
Metadata trailers = sre.getTrailers() != null ? sre.getTrailers() : metadata;
call.close(sre.getStatus(), trailers);
}
}
}
......@@ -19,8 +19,8 @@ package org.etsi.tfs.policy.monitoring;
import io.quarkus.grpc.GrpcClient;
import io.smallrye.mutiny.Multi;
import io.smallrye.mutiny.Uni;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import monitoring.MutinyMonitoringServiceGrpc.MutinyMonitoringServiceStub;
import org.etsi.tfs.policy.Serializer;
import org.etsi.tfs.policy.context.model.Empty;
......
......@@ -18,8 +18,8 @@ package org.etsi.tfs.policy.monitoring;
import io.smallrye.mutiny.Multi;
import io.smallrye.mutiny.Uni;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import org.etsi.tfs.policy.context.model.Empty;
import org.etsi.tfs.policy.monitoring.model.AlarmDescriptor;
import org.etsi.tfs.policy.monitoring.model.AlarmResponse;
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.etsi.tfs.policy;
package org.etsi.tfs.policy.policy;
import policy.PolicyService;
......
......@@ -14,15 +14,16 @@
* limitations under the License.
*/
package org.etsi.tfs.policy;
package org.etsi.tfs.policy.policy;
import context.ContextOuterClass.ServiceId;
import io.quarkus.grpc.GrpcService;
import io.smallrye.mutiny.Uni;
import javax.inject.Inject;
import jakarta.inject.Inject;
import org.eclipse.microprofile.metrics.MetricUnits;
import org.eclipse.microprofile.metrics.annotation.Counted;
import org.eclipse.microprofile.metrics.annotation.Timed;
import org.etsi.tfs.policy.Serializer;
import policy.Policy;
import policy.Policy.PolicyRuleBasic;
import policy.Policy.PolicyRuleDevice;
......
......@@ -14,12 +14,12 @@
* limitations under the License.
*/
package org.etsi.tfs.policy;
package org.etsi.tfs.policy.policy;
import io.smallrye.mutiny.Uni;
import org.etsi.tfs.policy.model.PolicyRuleDevice;
import org.etsi.tfs.policy.model.PolicyRuleService;
import org.etsi.tfs.policy.model.PolicyRuleState;
import org.etsi.tfs.policy.policy.model.PolicyRuleDevice;
import org.etsi.tfs.policy.policy.model.PolicyRuleService;
import org.etsi.tfs.policy.policy.model.PolicyRuleState;
public interface PolicyService {
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.etsi.tfs.policy;
package org.etsi.tfs.policy.policy;
import static org.etsi.tfs.policy.common.ApplicationProperties.*;
......@@ -22,6 +22,8 @@ import io.smallrye.mutiny.Multi;
import io.smallrye.mutiny.Uni;
import io.smallrye.mutiny.groups.UniJoin;
import io.smallrye.mutiny.subscription.Cancellable;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Arrays;
......@@ -29,8 +31,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Random;
import java.util.concurrent.ConcurrentHashMap;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import java.util.function.Function;
import org.etsi.tfs.policy.context.ContextService;
import org.etsi.tfs.policy.context.model.ConfigActionEnum;
import org.etsi.tfs.policy.context.model.ConfigRule;
......@@ -42,24 +43,27 @@ import org.etsi.tfs.policy.context.model.ConstraintTypeCustom;
import org.etsi.tfs.policy.context.model.ServiceConfig;
import org.etsi.tfs.policy.context.model.ServiceId;
import org.etsi.tfs.policy.device.DeviceService;
import org.etsi.tfs.policy.model.BooleanOperator;
import org.etsi.tfs.policy.model.PolicyRule;
import org.etsi.tfs.policy.model.PolicyRuleAction;
import org.etsi.tfs.policy.model.PolicyRuleActionConfig;
import org.etsi.tfs.policy.model.PolicyRuleActionEnum;
import org.etsi.tfs.policy.model.PolicyRuleBasic;
import org.etsi.tfs.policy.model.PolicyRuleCondition;
import org.etsi.tfs.policy.model.PolicyRuleDevice;
import org.etsi.tfs.policy.model.PolicyRuleService;
import org.etsi.tfs.policy.model.PolicyRuleState;
import org.etsi.tfs.policy.model.PolicyRuleStateEnum;
import org.etsi.tfs.policy.model.PolicyRuleTypeDevice;
import org.etsi.tfs.policy.model.PolicyRuleTypeService;
import org.etsi.tfs.policy.exception.ExternalServiceFailureException;
import org.etsi.tfs.policy.monitoring.MonitoringService;
import org.etsi.tfs.policy.monitoring.model.AlarmDescriptor;
import org.etsi.tfs.policy.monitoring.model.AlarmResponse;
import org.etsi.tfs.policy.monitoring.model.AlarmSubscription;
import org.etsi.tfs.policy.monitoring.model.KpiValueRange;
import org.etsi.tfs.policy.policy.model.BooleanOperator;
import org.etsi.tfs.policy.policy.model.PolicyRule;
import org.etsi.tfs.policy.policy.model.PolicyRuleAction;
import org.etsi.tfs.policy.policy.model.PolicyRuleActionConfig;
import org.etsi.tfs.policy.policy.model.PolicyRuleActionEnum;
import org.etsi.tfs.policy.policy.model.PolicyRuleBasic;
import org.etsi.tfs.policy.policy.model.PolicyRuleCondition;
import org.etsi.tfs.policy.policy.model.PolicyRuleDevice;
import org.etsi.tfs.policy.policy.model.PolicyRuleService;
import org.etsi.tfs.policy.policy.model.PolicyRuleState;
import org.etsi.tfs.policy.policy.model.PolicyRuleStateEnum;
import org.etsi.tfs.policy.policy.model.PolicyRuleTypeDevice;
import org.etsi.tfs.policy.policy.model.PolicyRuleTypeService;
import org.etsi.tfs.policy.policy.service.PolicyRuleConditionFieldsGetter;
import org.etsi.tfs.policy.policy.service.PolicyRuleConditionValidator;
import org.etsi.tfs.policy.service.ServiceService;
import org.jboss.logging.Logger;
......@@ -121,20 +125,20 @@ public class PolicyServiceImpl implements PolicyService {
LOGGER.infof("Received %s", policyRuleService);
if (!policyRuleService.areArgumentsValid()) {
LOGGER.error(policyRuleService.getExeceptionMessage());
LOGGER.error(policyRuleService.getExceptionMessage());
final var policyRuleState =
new PolicyRuleState(
PolicyRuleStateEnum.POLICY_FAILED, policyRuleService.getExeceptionMessage());
PolicyRuleStateEnum.POLICY_FAILED, policyRuleService.getExceptionMessage());
return Uni.createFrom().item(policyRuleState);
}
final var policyRuleBasic = policyRuleService.getPolicyRuleBasic();
if (!policyRuleBasic.areArgumentsValid()) {
LOGGER.error(policyRuleService.getExeceptionMessage());
LOGGER.error(policyRuleService.getExceptionMessage());
final var policyRuleState =
new PolicyRuleState(
PolicyRuleStateEnum.POLICY_FAILED, policyRuleBasic.getExeceptionMessage());
PolicyRuleStateEnum.POLICY_FAILED, policyRuleBasic.getExceptionMessage());
return Uni.createFrom().item(policyRuleState);
}
......@@ -143,14 +147,17 @@ public class PolicyServiceImpl implements PolicyService {
final var isServiceValid = policyRuleConditionValidator.isServiceIdValid(serviceId, deviceIds);
return isServiceValid
.onFailure()
.transform(failure -> new ExternalServiceFailureException(failure.getMessage()))
.onItem()
.transform(
isService ->
constructPolicyStateBasedOnCriteria(
isService, serviceId, policyRuleService, policyRuleBasic));
isService, serviceId, policyRuleService, policyRuleBasic))
.flatMap(Function.identity());
}
private PolicyRuleState constructPolicyStateBasedOnCriteria(
private Uni<PolicyRuleState> constructPolicyStateBasedOnCriteria(
Boolean isService,
ServiceId serviceId,
PolicyRuleService policyRuleService,
......@@ -161,7 +168,7 @@ public class PolicyServiceImpl implements PolicyService {
new PolicyRuleState(
PolicyRuleStateEnum.POLICY_FAILED, String.format(INVALID_MESSAGE, serviceId));
return policyRuleState;
return Uni.createFrom().item(policyRuleState);
}
final var policyRuleTypeService = new PolicyRuleTypeService(policyRuleService);
......@@ -175,24 +182,28 @@ public class PolicyServiceImpl implements PolicyService {
String.format(
"Invalid PolicyRuleConditions in PolicyRule with ID: %s",
policyRuleBasic.getPolicyRuleId()));
return policyRuleState;
return Uni.createFrom().item(policyRuleState);
}
return setPolicyRuleOnContextAndReturnState(policyRule, policyRuleService, alarmDescriptorList);
}
private PolicyRuleState setPolicyRuleOnContextAndReturnState(
private Uni<PolicyRuleState> setPolicyRuleOnContextAndReturnState(
PolicyRule policyRule,
PolicyRuleService policyRuleService,
List<AlarmDescriptor> alarmDescriptorList) {
contextService
return contextService
.setPolicyRule(policyRule)
.subscribe()
.with(
policyId ->
startMonitoringBasedOnAlarmDescriptors(
policyId, policyRuleService, alarmDescriptorList));
return VALIDATED_POLICYRULE_STATE;
.onFailure()
.transform(failure -> new ExternalServiceFailureException(failure.getMessage()))
.onItem()
.transform(
policyId -> {
startMonitoringBasedOnAlarmDescriptors(
policyId, policyRuleService, alarmDescriptorList);
return VALIDATED_POLICYRULE_STATE;
});
}
private void startMonitoringBasedOnAlarmDescriptors(
......@@ -268,20 +279,20 @@ public class PolicyServiceImpl implements PolicyService {
LOGGER.infof("Received %s", policyRuleDevice);
if (!policyRuleDevice.areArgumentsValid()) {
LOGGER.error(policyRuleDevice.getExeceptionMessage());
LOGGER.error(policyRuleDevice.getExceptionMessage());
final var policyRuleState =
new PolicyRuleState(
PolicyRuleStateEnum.POLICY_FAILED, policyRuleDevice.getExeceptionMessage());
PolicyRuleStateEnum.POLICY_FAILED, policyRuleDevice.getExceptionMessage());
return Uni.createFrom().item(policyRuleState);
}
final var policyRuleBasic = policyRuleDevice.getPolicyRuleBasic();
if (!policyRuleBasic.areArgumentsValid()) {
LOGGER.error(policyRuleDevice.getExeceptionMessage());
LOGGER.error(policyRuleDevice.getExceptionMessage());
final var policyRuleState =
new PolicyRuleState(
PolicyRuleStateEnum.POLICY_FAILED, policyRuleBasic.getExeceptionMessage());
PolicyRuleStateEnum.POLICY_FAILED, policyRuleBasic.getExceptionMessage());
return Uni.createFrom().item(policyRuleState);
}
......@@ -289,11 +300,14 @@ public class PolicyServiceImpl implements PolicyService {
final var areDevicesValid = returnInvalidDeviceIds(deviceIds);
return areDevicesValid
.onFailure()
.transform(failure -> new ExternalServiceFailureException(failure.getMessage()))
.onItem()
.transform(areDevices -> areDeviceOnContext(areDevices, policyRuleDevice, policyRuleBasic));
.transform(areDevices -> areDeviceOnContext(areDevices, policyRuleDevice, policyRuleBasic))
.flatMap(Function.identity());
}
private PolicyRuleState areDeviceOnContext(
private Uni<PolicyRuleState> areDeviceOnContext(
List<Boolean> areDevices,
PolicyRuleDevice policyRuleDevice,
PolicyRuleBasic policyRuleBasic) {
......@@ -304,7 +318,7 @@ public class PolicyServiceImpl implements PolicyService {
String.format(
INVALID_MESSAGE, policyRuleDevice.getPolicyRuleBasic().getPolicyRuleId()));
return policyRuleState;
return Uni.createFrom().item(policyRuleState);
}
final var policyRuleTypeDevice = new PolicyRuleTypeDevice(policyRuleDevice);
......@@ -318,19 +332,20 @@ public class PolicyServiceImpl implements PolicyService {
String.format(
"Invalid PolicyRuleConditions in PolicyRule with ID: %s",
policyRuleBasic.getPolicyRuleId()));
return policyRuleState;
return Uni.createFrom().item(policyRuleState);
}
contextService
return contextService
.setPolicyRule(policyRule)
.subscribe()
.with(
.onFailure()
.transform(failure -> new ExternalServiceFailureException(failure.getMessage()))
.onItem()
.transform(
policyId -> {
startMonitoringBasedOnAlarmDescriptors(
policyId, policyRuleDevice, alarmDescriptorList);
return VALIDATED_POLICYRULE_STATE;
});
return VALIDATED_POLICYRULE_STATE;
}
private void startMonitoringBasedOnAlarmDescriptors(
......@@ -393,20 +408,20 @@ public class PolicyServiceImpl implements PolicyService {
LOGGER.infof("Received %s", policyRuleService);
if (!policyRuleService.areArgumentsValid()) {
LOGGER.error(policyRuleService.getExeceptionMessage());
LOGGER.error(policyRuleService.getExceptionMessage());
final var policyRuleState =
new PolicyRuleState(
PolicyRuleStateEnum.POLICY_FAILED, policyRuleService.getExeceptionMessage());
PolicyRuleStateEnum.POLICY_FAILED, policyRuleService.getExceptionMessage());
return Uni.createFrom().item(policyRuleState);
}
final var policyRuleBasic = policyRuleService.getPolicyRuleBasic();
if (!policyRuleBasic.areArgumentsValid()) {
LOGGER.error(policyRuleService.getExeceptionMessage());
LOGGER.error(policyRuleService.getExceptionMessage());
final var policyRuleState =
new PolicyRuleState(
PolicyRuleStateEnum.POLICY_FAILED, policyRuleBasic.getExeceptionMessage());
PolicyRuleStateEnum.POLICY_FAILED, policyRuleBasic.getExceptionMessage());
return Uni.createFrom().item(policyRuleState);
}
......@@ -416,6 +431,8 @@ public class PolicyServiceImpl implements PolicyService {
policyRuleConditionValidator.isPolicyRuleServiceValid(policyRuleId, serviceId);
return isPolicyRuleServiceValid
.onFailure()
.transform(failure -> new ExternalServiceFailureException(failure.getMessage()))
.onItem()
.transform(
isPolicyRuleService -> {
......@@ -433,10 +450,10 @@ public class PolicyServiceImpl implements PolicyService {
LOGGER.infof("Received %s", policyRuleDevice);
if (!policyRuleDevice.areArgumentsValid()) {
LOGGER.error(policyRuleDevice.getExeceptionMessage());
LOGGER.error(policyRuleDevice.getExceptionMessage());
final var policyRuleState =
new PolicyRuleState(
PolicyRuleStateEnum.POLICY_FAILED, policyRuleDevice.getExeceptionMessage());
PolicyRuleStateEnum.POLICY_FAILED, policyRuleDevice.getExceptionMessage());
return Uni.createFrom().item(policyRuleState);
}
......@@ -445,7 +462,7 @@ public class PolicyServiceImpl implements PolicyService {
if (!policyRuleBasic.areArgumentsValid()) {
final var policyRuleState =
new PolicyRuleState(
PolicyRuleStateEnum.POLICY_FAILED, policyRuleBasic.getExeceptionMessage());
PolicyRuleStateEnum.POLICY_FAILED, policyRuleBasic.getExceptionMessage());
return Uni.createFrom().item(policyRuleState);
}
......