Loading proto/policy_action.proto +3 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ enum PolicyRuleActionEnum { POLICYRULE_ACTION_SET_DEVICE_STATUS = 1; POLICYRULE_ACTION_ADD_SERVICE_CONFIGRULE = 2; POLICYRULE_ACTION_ADD_SERVICE_CONSTRAINT = 3; POLICY_RULE_ACTION_CALL_SERVICE_RPC = 4; POLICY_RULE_ACTION_RECALCULATE_PATH = 5; } // Action configuration Loading src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionValidator.java +48 −58 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import eu.teraflow.policy.context.model.Device; import eu.teraflow.policy.context.model.EndPointId; import eu.teraflow.policy.context.model.Service; import eu.teraflow.policy.context.model.ServiceId; import eu.teraflow.policy.model.PolicyRuleService; import io.smallrye.mutiny.Uni; import java.util.ArrayList; import java.util.List; Loading @@ -42,73 +43,44 @@ public class PolicyRuleConditionValidator { this.contextService = contextService; } public Uni<Boolean> validateDeviceId(String deviceId) { final var isDeviceIdValid = isDeviceIdValid(deviceId); isDeviceIdValid .subscribe() .with( deviceIdIdBooleanValue -> { if (Boolean.FALSE.equals(deviceIdIdBooleanValue)) { LOGGER.errorf(INVALID_MESSAGE, deviceId); } LOGGER.infof(VALID_MESSAGE, deviceId); }); return isDeviceIdValid; } public Uni<Boolean> validateServiceId(ServiceId serviceId) { final var isServiceIdValid = isServiceIdValid(serviceId); isServiceIdValid .subscribe() .with( serviceIdBooleanValue -> { if (Boolean.FALSE.equals(serviceIdBooleanValue)) { LOGGER.errorf(INVALID_MESSAGE, serviceId); } }); return isServiceIdValid; } public Uni<Boolean> validateUpdatedPolicyRuleId(String updatedPolicyRuleId) { final var isUpdatedPolicyRuleIdValid = isUpdatedPolicyRuleIdValid(updatedPolicyRuleId); isUpdatedPolicyRuleIdValid .subscribe() .with( serviceIdBooleanValue -> { if (Boolean.FALSE.equals(serviceIdBooleanValue)) { LOGGER.errorf(INVALID_MESSAGE, updatedPolicyRuleId); } }); return isUpdatedPolicyRuleIdValid; } private Uni<Boolean> isDeviceIdValid(String deviceId) { public Uni<Boolean> isDeviceIdValid(String deviceId) { return contextService .getDevice(deviceId) .onFailure() .recoverWithItem((Device) null) .onItem() .transform(device -> checkIfDeviceIdExists(device, deviceId)); } private boolean checkIfDeviceIdExists(Device device, String deviceId) { final var deviceDeviceId = device.getDeviceId(); if (device == null) { return false; } final var deviceDeviceId = device.getDeviceId(); return deviceDeviceId.equals(deviceId); } private Uni<Boolean> isServiceIdValid(ServiceId serviceId) { public Uni<Boolean> isServiceIdValid(ServiceId serviceId, List<String> deviceIds) { return contextService .getService(serviceId) .onFailure() .recoverWithItem((Service) null) .onItem() .transform(service -> checkIfServiceIdExists(service, serviceId)); .transform(service -> checkIfServiceIsValid(service, serviceId, deviceIds)); } private boolean checkIfServiceIsValid( Service service, ServiceId serviceId, List<String> deviceIds) { return (checkIfServiceIdExists(service, serviceId) && checkIfServicesDeviceIdsExist(service, deviceIds)); } private boolean checkIfServiceIdExists(Service service, ServiceId serviceId) { if (service == null) { return false; } final var serviceServiceIdServiceId = service.getServiceId(); final var serviceServiceIdContextId = serviceServiceIdServiceId.getContextId(); final var serviceServiceIdId = serviceServiceIdServiceId.getId(); Loading @@ -117,14 +89,11 @@ public class PolicyRuleConditionValidator { && serviceServiceIdId.equals(serviceId.getId()); } public Uni<Boolean> isServicesDeviceIdsValid(ServiceId serviceId, List<String> deviceIds) { return contextService .getService(serviceId) .onItem() .transform(service -> checkIfServicesDeviceIdsExist(service, deviceIds)); private boolean checkIfServicesDeviceIdsExist(Service service, List<String> deviceIds) { if (deviceIds.isEmpty()) { return true; } private boolean checkIfServicesDeviceIdsExist(Service service, List<String> deviceIds) { List<String> serviceDeviceIds = new ArrayList<>(); for (EndPointId serviceEndPointId : service.getServiceEndPointIds()) { serviceDeviceIds.add(serviceEndPointId.getDeviceId()); Loading @@ -133,7 +102,7 @@ public class PolicyRuleConditionValidator { return deviceIds.containsAll(serviceDeviceIds); } private Uni<Boolean> isUpdatedPolicyRuleIdValid(String updatedPolicyRuleId) { public Uni<Boolean> isUpdatedPolicyRuleIdValid(String updatedPolicyRuleId) { return contextService .getPolicyRule(updatedPolicyRuleId) .onItem() Loading @@ -146,4 +115,25 @@ public class PolicyRuleConditionValidator { .ifNull() .continueWith(false); } public Uni<Boolean> isPolicyRuleServiceValid(String updatedPolicyRuleId, ServiceId serviceId) { return contextService .getPolicyRule(updatedPolicyRuleId) .onItem() .ifNotNull() .transform( policyRule -> { var policyRuleService = (PolicyRuleService) policyRule.getPolicyRuleType().getPolicyRuleType(); if (policyRuleService.getServiceId().getId().equals(serviceId.getId())) { return true; } return false; }) .onItem() .ifNull() .continueWith(false) .onFailure() .recoverWithItem(false); } } src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java +343 −377 File changed.Preview size limit exceeded, changes collapsed. Show changes src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceStatusEnum.java +3 −1 Original line number Diff line number Diff line Loading @@ -20,5 +20,7 @@ public enum ServiceStatusEnum { UNDEFINED, PLANNED, ACTIVE, PENDING_REMOVAL PENDING_REMOVAL, SLA_VIOLATED, UPDATING } src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleActionEnum.java +4 −1 Original line number Diff line number Diff line Loading @@ -20,5 +20,8 @@ public enum PolicyRuleActionEnum { POLICY_RULE_ACTION_NO_ACTION, POLICY_RULE_ACTION_SET_DEVICE_STATUS, POLICY_RULE_ACTION_ADD_SERVICE_CONFIGRULE, POLICY_RULE_ACTION_ADD_SERVICE_CONSTRAINT POLICY_RULE_ACTION_ADD_SERVICE_CONSTRAINT, POLICY_RULE_ACTION_CALL_SERVICE_RPC, // This is temporary POLICY_RULE_ACTION_RECALCULATE_PATH } Loading
proto/policy_action.proto +3 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ enum PolicyRuleActionEnum { POLICYRULE_ACTION_SET_DEVICE_STATUS = 1; POLICYRULE_ACTION_ADD_SERVICE_CONFIGRULE = 2; POLICYRULE_ACTION_ADD_SERVICE_CONSTRAINT = 3; POLICY_RULE_ACTION_CALL_SERVICE_RPC = 4; POLICY_RULE_ACTION_RECALCULATE_PATH = 5; } // Action configuration Loading
src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionValidator.java +48 −58 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import eu.teraflow.policy.context.model.Device; import eu.teraflow.policy.context.model.EndPointId; import eu.teraflow.policy.context.model.Service; import eu.teraflow.policy.context.model.ServiceId; import eu.teraflow.policy.model.PolicyRuleService; import io.smallrye.mutiny.Uni; import java.util.ArrayList; import java.util.List; Loading @@ -42,73 +43,44 @@ public class PolicyRuleConditionValidator { this.contextService = contextService; } public Uni<Boolean> validateDeviceId(String deviceId) { final var isDeviceIdValid = isDeviceIdValid(deviceId); isDeviceIdValid .subscribe() .with( deviceIdIdBooleanValue -> { if (Boolean.FALSE.equals(deviceIdIdBooleanValue)) { LOGGER.errorf(INVALID_MESSAGE, deviceId); } LOGGER.infof(VALID_MESSAGE, deviceId); }); return isDeviceIdValid; } public Uni<Boolean> validateServiceId(ServiceId serviceId) { final var isServiceIdValid = isServiceIdValid(serviceId); isServiceIdValid .subscribe() .with( serviceIdBooleanValue -> { if (Boolean.FALSE.equals(serviceIdBooleanValue)) { LOGGER.errorf(INVALID_MESSAGE, serviceId); } }); return isServiceIdValid; } public Uni<Boolean> validateUpdatedPolicyRuleId(String updatedPolicyRuleId) { final var isUpdatedPolicyRuleIdValid = isUpdatedPolicyRuleIdValid(updatedPolicyRuleId); isUpdatedPolicyRuleIdValid .subscribe() .with( serviceIdBooleanValue -> { if (Boolean.FALSE.equals(serviceIdBooleanValue)) { LOGGER.errorf(INVALID_MESSAGE, updatedPolicyRuleId); } }); return isUpdatedPolicyRuleIdValid; } private Uni<Boolean> isDeviceIdValid(String deviceId) { public Uni<Boolean> isDeviceIdValid(String deviceId) { return contextService .getDevice(deviceId) .onFailure() .recoverWithItem((Device) null) .onItem() .transform(device -> checkIfDeviceIdExists(device, deviceId)); } private boolean checkIfDeviceIdExists(Device device, String deviceId) { final var deviceDeviceId = device.getDeviceId(); if (device == null) { return false; } final var deviceDeviceId = device.getDeviceId(); return deviceDeviceId.equals(deviceId); } private Uni<Boolean> isServiceIdValid(ServiceId serviceId) { public Uni<Boolean> isServiceIdValid(ServiceId serviceId, List<String> deviceIds) { return contextService .getService(serviceId) .onFailure() .recoverWithItem((Service) null) .onItem() .transform(service -> checkIfServiceIdExists(service, serviceId)); .transform(service -> checkIfServiceIsValid(service, serviceId, deviceIds)); } private boolean checkIfServiceIsValid( Service service, ServiceId serviceId, List<String> deviceIds) { return (checkIfServiceIdExists(service, serviceId) && checkIfServicesDeviceIdsExist(service, deviceIds)); } private boolean checkIfServiceIdExists(Service service, ServiceId serviceId) { if (service == null) { return false; } final var serviceServiceIdServiceId = service.getServiceId(); final var serviceServiceIdContextId = serviceServiceIdServiceId.getContextId(); final var serviceServiceIdId = serviceServiceIdServiceId.getId(); Loading @@ -117,14 +89,11 @@ public class PolicyRuleConditionValidator { && serviceServiceIdId.equals(serviceId.getId()); } public Uni<Boolean> isServicesDeviceIdsValid(ServiceId serviceId, List<String> deviceIds) { return contextService .getService(serviceId) .onItem() .transform(service -> checkIfServicesDeviceIdsExist(service, deviceIds)); private boolean checkIfServicesDeviceIdsExist(Service service, List<String> deviceIds) { if (deviceIds.isEmpty()) { return true; } private boolean checkIfServicesDeviceIdsExist(Service service, List<String> deviceIds) { List<String> serviceDeviceIds = new ArrayList<>(); for (EndPointId serviceEndPointId : service.getServiceEndPointIds()) { serviceDeviceIds.add(serviceEndPointId.getDeviceId()); Loading @@ -133,7 +102,7 @@ public class PolicyRuleConditionValidator { return deviceIds.containsAll(serviceDeviceIds); } private Uni<Boolean> isUpdatedPolicyRuleIdValid(String updatedPolicyRuleId) { public Uni<Boolean> isUpdatedPolicyRuleIdValid(String updatedPolicyRuleId) { return contextService .getPolicyRule(updatedPolicyRuleId) .onItem() Loading @@ -146,4 +115,25 @@ public class PolicyRuleConditionValidator { .ifNull() .continueWith(false); } public Uni<Boolean> isPolicyRuleServiceValid(String updatedPolicyRuleId, ServiceId serviceId) { return contextService .getPolicyRule(updatedPolicyRuleId) .onItem() .ifNotNull() .transform( policyRule -> { var policyRuleService = (PolicyRuleService) policyRule.getPolicyRuleType().getPolicyRuleType(); if (policyRuleService.getServiceId().getId().equals(serviceId.getId())) { return true; } return false; }) .onItem() .ifNull() .continueWith(false) .onFailure() .recoverWithItem(false); } }
src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java +343 −377 File changed.Preview size limit exceeded, changes collapsed. Show changes
src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceStatusEnum.java +3 −1 Original line number Diff line number Diff line Loading @@ -20,5 +20,7 @@ public enum ServiceStatusEnum { UNDEFINED, PLANNED, ACTIVE, PENDING_REMOVAL PENDING_REMOVAL, SLA_VIOLATED, UPDATING }
src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleActionEnum.java +4 −1 Original line number Diff line number Diff line Loading @@ -20,5 +20,8 @@ public enum PolicyRuleActionEnum { POLICY_RULE_ACTION_NO_ACTION, POLICY_RULE_ACTION_SET_DEVICE_STATUS, POLICY_RULE_ACTION_ADD_SERVICE_CONFIGRULE, POLICY_RULE_ACTION_ADD_SERVICE_CONSTRAINT POLICY_RULE_ACTION_ADD_SERVICE_CONSTRAINT, POLICY_RULE_ACTION_CALL_SERVICE_RPC, // This is temporary POLICY_RULE_ACTION_RECALCULATE_PATH }