Loading src/policy/src/main/java/org/etsi/tfs/policy/PolicyServiceImpl.java +226 −158 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import org.etsi.tfs.policy.context.model.Constraint; import org.etsi.tfs.policy.context.model.ConstraintCustom; 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; Loading Loading @@ -144,12 +145,21 @@ public class PolicyServiceImpl implements PolicyService { return isServiceValid .onItem() .transform( isService -> { isService -> constructPolicyStateBasedOnCriteria( isService, serviceId, policyRuleService, policyRuleBasic)); } private PolicyRuleState constructPolicyStateBasedOnCriteria( Boolean isService, ServiceId serviceId, PolicyRuleService policyRuleService, PolicyRuleBasic policyRuleBasic) { if (!isService) { var policyRuleState = new PolicyRuleState( PolicyRuleStateEnum.POLICY_FAILED, String.format(INVALID_MESSAGE, serviceId)); PolicyRuleStateEnum.POLICY_FAILED, String.format(INVALID_MESSAGE, serviceId)); return policyRuleState; } Loading @@ -166,48 +176,41 @@ public class PolicyServiceImpl implements PolicyService { "Invalid PolicyRuleConditions in PolicyRule with ID: %s", policyRuleBasic.getPolicyRuleId())); return policyRuleState; } else { } return setPolicyRuleOnContextAndReturnState(policyRule, policyRuleService, alarmDescriptorList); } private PolicyRuleState setPolicyRuleOnContextAndReturnState( PolicyRule policyRule, PolicyRuleService policyRuleService, List<AlarmDescriptor> alarmDescriptorList) { contextService .setPolicyRule(policyRule) .subscribe() .with( policyId -> { setPolicyRuleServiceToContext( policyRuleService, VALIDATED_POLICYRULE_STATE); policyId -> startMonitoringBasedOnAlarmDescriptors( policyId, policyRuleService, alarmDescriptorList)); return VALIDATED_POLICYRULE_STATE; } private void startMonitoringBasedOnAlarmDescriptors( String policyId, PolicyRuleService policyRuleService, List<AlarmDescriptor> alarmDescriptorList) { setPolicyRuleServiceToContext(policyRuleService, VALIDATED_POLICYRULE_STATE); noAlarms = 0; // Create an alarmIds list that contains the promised ids returned from // setKpiAlarm List<Uni<String>> alarmIds = new ArrayList<Uni<String>>(); for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) { LOGGER.infof("alarmDescriptor:"); LOGGER.infof(alarmDescriptor.toString()); alarmIds.add(monitoringService.setKpiAlarm(alarmDescriptor)); } // Transform the alarmIds into promised alarms returned from the // getAlarmResponseStream List<Multi<AlarmResponse>> alarmResponseStreamList = new ArrayList<>(); for (Uni<String> alarmId : alarmIds) { alarmResponseStreamList.add( alarmId .onItem() .transformToMulti( id -> { alarmPolicyRuleServiceMap.put(id, policyRuleService); List<Uni<String>> alarmIds = createAlarmList(alarmDescriptorList); // setAllarmtomonitoring get back alarmid // TODO: Create infinite subscription var alarmSubscription = new AlarmSubscription(id, 259200, 5000); return monitoringService.getAlarmResponseStream( alarmSubscription); })); } List<Multi<AlarmResponse>> alarmResponseStreamList = transformAlarmIds(alarmIds, policyRuleService); // Merge the promised alarms into one stream (Multi Object) final var multi = Multi.createBy().merging().streams(alarmResponseStreamList); setPolicyRuleServiceToContext( policyRuleService, PROVISIONED_POLICYRULE_STATE); final var multi = Multi.createBy().merging().streams(alarmResponseStreamList); setPolicyRuleServiceToContext(policyRuleService, PROVISIONED_POLICYRULE_STATE); subscriptionList.put(policyId, monitorAlarmResponseForService(multi)); Loading @@ -215,10 +218,49 @@ public class PolicyServiceImpl implements PolicyService { // TODO: Redesign evaluation of action // evaluateAction(policyRule, alarmDescriptorList, multi); }); return VALIDATED_POLICYRULE_STATE; } }); /** * Transform the alarmIds into promised alarms returned from the getAlarmResponseStream * * @param alarmIds the list of alarm ids * @param policyRuleService the policy rule service * @return */ private List<Multi<AlarmResponse>> transformAlarmIds( List<Uni<String>> alarmIds, PolicyRuleService policyRuleService) { List<Multi<AlarmResponse>> alarmResponseStreamList = new ArrayList<>(); for (Uni<String> alarmId : alarmIds) { Multi<AlarmResponse> alarmResponseStream = alarmId.onItem().transformToMulti(id -> setPolicyMonitor(policyRuleService, id)); alarmResponseStreamList.add(alarmResponseStream); } return alarmResponseStreamList; } private Multi<AlarmResponse> setPolicyMonitor(PolicyRuleService policyRuleService, String id) { alarmPolicyRuleServiceMap.put(id, policyRuleService); // TODO: Create infinite subscription var alarmSubscription = new AlarmSubscription(id, 259200, 5000); return monitoringService.getAlarmResponseStream(alarmSubscription); } /** * Create an alarmIds list that contains the promised ids returned from setKpiAlarm * * @param alarmDescriptorList the list of alarm descriptors * @return the list of alarm descriptors */ public List<Uni<String>> createAlarmList(List<AlarmDescriptor> alarmDescriptorList) { List<Uni<String>> alarmIds = new ArrayList<Uni<String>>(); for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) { LOGGER.infof("alarmDescriptor:"); LOGGER.infof(alarmDescriptor.toString()); alarmIds.add(monitoringService.setKpiAlarm(alarmDescriptor)); } return alarmIds; } @Override Loading Loading @@ -248,15 +290,19 @@ public class PolicyServiceImpl implements PolicyService { return areDevicesValid .onItem() .transform( areDevices -> { .transform(areDevices -> areDeviceOnContext(areDevices, policyRuleDevice, policyRuleBasic)); } private PolicyRuleState areDeviceOnContext( List<Boolean> areDevices, PolicyRuleDevice policyRuleDevice, PolicyRuleBasic policyRuleBasic) { if (areDevices.contains(false)) { var policyRuleState = new PolicyRuleState( PolicyRuleStateEnum.POLICY_FAILED, String.format( INVALID_MESSAGE, policyRuleDevice.getPolicyRuleBasic().getPolicyRuleId())); INVALID_MESSAGE, policyRuleDevice.getPolicyRuleBasic().getPolicyRuleId())); return policyRuleState; } Loading @@ -275,47 +321,71 @@ public class PolicyServiceImpl implements PolicyService { return policyRuleState; } contextService.setPolicyRule(policyRule).subscribe().with(x -> {}); contextService .setPolicyRule(policyRule) .subscribe() .with( policyId -> { startMonitoringBasedOnAlarmDescriptors( policyId, policyRuleDevice, alarmDescriptorList); }); return VALIDATED_POLICYRULE_STATE; } private void startMonitoringBasedOnAlarmDescriptors( String policyId, PolicyRuleDevice policyRuleDevice, List<AlarmDescriptor> alarmDescriptorList) { setPolicyRuleDeviceToContext(policyRuleDevice, VALIDATED_POLICYRULE_STATE); noAlarms = 0; List<Uni<String>> alarmIds = new ArrayList<Uni<String>>(); for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) { LOGGER.infof("alarmDescriptor:"); LOGGER.infof(alarmDescriptor.toString()); alarmIds.add(monitoringService.setKpiAlarm(alarmDescriptor)); List<Uni<String>> alarmIds = getAlarmIds(alarmDescriptorList); List<Multi<AlarmResponse>> alarmResponseStreamList = getAlarmResponse(alarmIds, policyRuleDevice); // Merge the promised alarms into one stream (Multi Object) final var multi = Multi.createBy().merging().streams(alarmResponseStreamList); setPolicyRuleDeviceToContext(policyRuleDevice, PROVISIONED_POLICYRULE_STATE); subscriptionList.put(policyId, monitorAlarmResponseForDevice(multi)); // TODO: Resubscribe to the stream, if it has ended // TODO: Redesign evaluation of action // evaluateAction(policyRule, alarmDescriptorList, multi); } private List<Multi<AlarmResponse>> getAlarmResponse( List<Uni<String>> alarmIds, PolicyRuleDevice policyRuleDevice) { // Transform the alarmIds into promised alarms returned from the // getAlarmResponseStream List<Multi<AlarmResponse>> alarmResponseStreamList = new ArrayList<>(); for (Uni<String> alarmId : alarmIds) { alarmResponseStreamList.add( alarmId .onItem() .transformToMulti( id -> { alarmId.onItem().transformToMulti(id -> setPolicyMonitoringDevice(policyRuleDevice, id))); } return alarmResponseStreamList; } private Multi<AlarmResponse> setPolicyMonitoringDevice( PolicyRuleDevice policyRuleDevice, String id) { alarmPolicyRuleDeviceMap.put(id, policyRuleDevice); // TODO: Create infinite subscription var alarmSubscription = new AlarmSubscription(id, 259200, 5000); return monitoringService.getAlarmResponseStream(alarmSubscription); })); } // Merge the promised alarms into one stream (Multi Object) final var multi = Multi.createBy().merging().streams(alarmResponseStreamList); setPolicyRuleDeviceToContext(policyRuleDevice, PROVISIONED_POLICYRULE_STATE); monitorAlarmResponseForDevice(multi); // TODO: Resubscribe to the stream, if it has ended // TODO: Redesign evaluation of action // evaluateAction(policyRule, alarmDescriptorList, multi); return VALIDATED_POLICYRULE_STATE; }); private List<Uni<String>> getAlarmIds(List<AlarmDescriptor> alarmDescriptorList) { List<Uni<String>> alarmIds = new ArrayList<Uni<String>>(); for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) { LOGGER.infof("alarmDescriptor:"); LOGGER.infof(alarmDescriptor.toString()); alarmIds.add(monitoringService.setKpiAlarm(alarmDescriptor)); } return alarmIds; } @Override Loading Loading @@ -403,10 +473,10 @@ public class PolicyServiceImpl implements PolicyService { final var getPolicyRule = contextService.getPolicyRule(policyRuleId); return getPolicyRule .onItem() .transform( policyRule -> { return getPolicyRule.onItem().transform(policyRule -> removePolicyFromContext(policyRule)); } private PolicyRuleState removePolicyFromContext(PolicyRule policyRule) { var policyRuleBasic = policyRule.getPolicyRuleType().getPolicyRuleBasic(); String policyId = policyRuleBasic.getPolicyRuleId(); Loading @@ -421,8 +491,7 @@ public class PolicyServiceImpl implements PolicyService { .with( tmp -> LOGGER.infof( "DeletePolicy with id: " + VALID_MESSAGE, policyRuleBasic.getPolicyRuleId())); "DeletePolicy with id: " + VALID_MESSAGE, policyRuleBasic.getPolicyRuleId())); contextService.removePolicyRule(policyId).subscribe().with(x -> {}); Loading @@ -430,7 +499,6 @@ public class PolicyServiceImpl implements PolicyService { if (subscriptionList.contains(policyId)) subscriptionList.get(policyId).cancel(); return policyRuleBasic.getPolicyRuleState(); }); } private Uni<List<Boolean>> returnInvalidDeviceIds(List<String> deviceIds) { Loading Loading @@ -484,8 +552,8 @@ public class PolicyServiceImpl implements PolicyService { }); } private void monitorAlarmResponseForDevice(Multi<AlarmResponse> multi) { multi private Cancellable monitorAlarmResponseForDevice(Multi<AlarmResponse> multi) { return multi .subscribe() .with( alarmResponse -> { Loading src/policy/src/test/java/org/etsi/tfs/policy/PolicyAddDeviceTest.java +2 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import org.etsi.tfs.policy.model.PolicyRuleCondition; import org.etsi.tfs.policy.model.PolicyRuleDevice; import org.etsi.tfs.policy.model.PolicyRuleState; import org.etsi.tfs.policy.model.PolicyRuleStateEnum; import org.etsi.tfs.policy.monitoring.MonitoringService; import org.etsi.tfs.policy.monitoring.model.IntegerKpiValue; import org.etsi.tfs.policy.monitoring.model.KpiValue; import org.junit.jupiter.api.BeforeAll; Loading @@ -57,6 +58,7 @@ class PolicyAddDeviceTest { @InjectMock ContextService contextService; @InjectMock MonitoringService monitoringService; static PolicyRuleBasic policyRuleBasic; static PolicyRuleDevice policyRuleDevice; Loading src/policy/src/test/java/org/etsi/tfs/policy/PolicyDeleteServiceTest.java +3 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import org.etsi.tfs.policy.model.PolicyRuleState; import org.etsi.tfs.policy.model.PolicyRuleStateEnum; import org.etsi.tfs.policy.model.PolicyRuleType; import org.etsi.tfs.policy.model.PolicyRuleTypeService; import org.etsi.tfs.policy.monitoring.MonitoringService; import org.etsi.tfs.policy.monitoring.model.IntegerKpiValue; import org.etsi.tfs.policy.monitoring.model.KpiValue; import org.junit.jupiter.api.BeforeAll; Loading @@ -58,6 +59,8 @@ class PolicyDeleteServiceTest { @Inject PolicyServiceImpl policyService; @InjectMock ContextService contextService; @InjectMock MonitoringService monitoringService; static PolicyRuleBasic policyRuleBasic; static PolicyRuleService policyRuleService; Loading src/policy/src/test/java/org/etsi/tfs/policy/PolicyUpdateDeviceTest.java +3 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import org.etsi.tfs.policy.model.PolicyRuleCondition; import org.etsi.tfs.policy.model.PolicyRuleDevice; import org.etsi.tfs.policy.model.PolicyRuleState; import org.etsi.tfs.policy.model.PolicyRuleStateEnum; import org.etsi.tfs.policy.monitoring.MonitoringService; import org.etsi.tfs.policy.monitoring.model.IntegerKpiValue; import org.etsi.tfs.policy.monitoring.model.KpiValue; import org.junit.jupiter.api.BeforeAll; Loading @@ -54,6 +55,8 @@ class PolicyUpdateDeviceTest { @InjectMock PolicyRuleConditionValidator policyRuleConditionValidator; @InjectMock MonitoringService monitoringService; static PolicyRuleBasic policyRuleBasic; static PolicyRuleDevice policyRuleDevice; Loading Loading
src/policy/src/main/java/org/etsi/tfs/policy/PolicyServiceImpl.java +226 −158 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import org.etsi.tfs.policy.context.model.Constraint; import org.etsi.tfs.policy.context.model.ConstraintCustom; 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; Loading Loading @@ -144,12 +145,21 @@ public class PolicyServiceImpl implements PolicyService { return isServiceValid .onItem() .transform( isService -> { isService -> constructPolicyStateBasedOnCriteria( isService, serviceId, policyRuleService, policyRuleBasic)); } private PolicyRuleState constructPolicyStateBasedOnCriteria( Boolean isService, ServiceId serviceId, PolicyRuleService policyRuleService, PolicyRuleBasic policyRuleBasic) { if (!isService) { var policyRuleState = new PolicyRuleState( PolicyRuleStateEnum.POLICY_FAILED, String.format(INVALID_MESSAGE, serviceId)); PolicyRuleStateEnum.POLICY_FAILED, String.format(INVALID_MESSAGE, serviceId)); return policyRuleState; } Loading @@ -166,48 +176,41 @@ public class PolicyServiceImpl implements PolicyService { "Invalid PolicyRuleConditions in PolicyRule with ID: %s", policyRuleBasic.getPolicyRuleId())); return policyRuleState; } else { } return setPolicyRuleOnContextAndReturnState(policyRule, policyRuleService, alarmDescriptorList); } private PolicyRuleState setPolicyRuleOnContextAndReturnState( PolicyRule policyRule, PolicyRuleService policyRuleService, List<AlarmDescriptor> alarmDescriptorList) { contextService .setPolicyRule(policyRule) .subscribe() .with( policyId -> { setPolicyRuleServiceToContext( policyRuleService, VALIDATED_POLICYRULE_STATE); policyId -> startMonitoringBasedOnAlarmDescriptors( policyId, policyRuleService, alarmDescriptorList)); return VALIDATED_POLICYRULE_STATE; } private void startMonitoringBasedOnAlarmDescriptors( String policyId, PolicyRuleService policyRuleService, List<AlarmDescriptor> alarmDescriptorList) { setPolicyRuleServiceToContext(policyRuleService, VALIDATED_POLICYRULE_STATE); noAlarms = 0; // Create an alarmIds list that contains the promised ids returned from // setKpiAlarm List<Uni<String>> alarmIds = new ArrayList<Uni<String>>(); for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) { LOGGER.infof("alarmDescriptor:"); LOGGER.infof(alarmDescriptor.toString()); alarmIds.add(monitoringService.setKpiAlarm(alarmDescriptor)); } // Transform the alarmIds into promised alarms returned from the // getAlarmResponseStream List<Multi<AlarmResponse>> alarmResponseStreamList = new ArrayList<>(); for (Uni<String> alarmId : alarmIds) { alarmResponseStreamList.add( alarmId .onItem() .transformToMulti( id -> { alarmPolicyRuleServiceMap.put(id, policyRuleService); List<Uni<String>> alarmIds = createAlarmList(alarmDescriptorList); // setAllarmtomonitoring get back alarmid // TODO: Create infinite subscription var alarmSubscription = new AlarmSubscription(id, 259200, 5000); return monitoringService.getAlarmResponseStream( alarmSubscription); })); } List<Multi<AlarmResponse>> alarmResponseStreamList = transformAlarmIds(alarmIds, policyRuleService); // Merge the promised alarms into one stream (Multi Object) final var multi = Multi.createBy().merging().streams(alarmResponseStreamList); setPolicyRuleServiceToContext( policyRuleService, PROVISIONED_POLICYRULE_STATE); final var multi = Multi.createBy().merging().streams(alarmResponseStreamList); setPolicyRuleServiceToContext(policyRuleService, PROVISIONED_POLICYRULE_STATE); subscriptionList.put(policyId, monitorAlarmResponseForService(multi)); Loading @@ -215,10 +218,49 @@ public class PolicyServiceImpl implements PolicyService { // TODO: Redesign evaluation of action // evaluateAction(policyRule, alarmDescriptorList, multi); }); return VALIDATED_POLICYRULE_STATE; } }); /** * Transform the alarmIds into promised alarms returned from the getAlarmResponseStream * * @param alarmIds the list of alarm ids * @param policyRuleService the policy rule service * @return */ private List<Multi<AlarmResponse>> transformAlarmIds( List<Uni<String>> alarmIds, PolicyRuleService policyRuleService) { List<Multi<AlarmResponse>> alarmResponseStreamList = new ArrayList<>(); for (Uni<String> alarmId : alarmIds) { Multi<AlarmResponse> alarmResponseStream = alarmId.onItem().transformToMulti(id -> setPolicyMonitor(policyRuleService, id)); alarmResponseStreamList.add(alarmResponseStream); } return alarmResponseStreamList; } private Multi<AlarmResponse> setPolicyMonitor(PolicyRuleService policyRuleService, String id) { alarmPolicyRuleServiceMap.put(id, policyRuleService); // TODO: Create infinite subscription var alarmSubscription = new AlarmSubscription(id, 259200, 5000); return monitoringService.getAlarmResponseStream(alarmSubscription); } /** * Create an alarmIds list that contains the promised ids returned from setKpiAlarm * * @param alarmDescriptorList the list of alarm descriptors * @return the list of alarm descriptors */ public List<Uni<String>> createAlarmList(List<AlarmDescriptor> alarmDescriptorList) { List<Uni<String>> alarmIds = new ArrayList<Uni<String>>(); for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) { LOGGER.infof("alarmDescriptor:"); LOGGER.infof(alarmDescriptor.toString()); alarmIds.add(monitoringService.setKpiAlarm(alarmDescriptor)); } return alarmIds; } @Override Loading Loading @@ -248,15 +290,19 @@ public class PolicyServiceImpl implements PolicyService { return areDevicesValid .onItem() .transform( areDevices -> { .transform(areDevices -> areDeviceOnContext(areDevices, policyRuleDevice, policyRuleBasic)); } private PolicyRuleState areDeviceOnContext( List<Boolean> areDevices, PolicyRuleDevice policyRuleDevice, PolicyRuleBasic policyRuleBasic) { if (areDevices.contains(false)) { var policyRuleState = new PolicyRuleState( PolicyRuleStateEnum.POLICY_FAILED, String.format( INVALID_MESSAGE, policyRuleDevice.getPolicyRuleBasic().getPolicyRuleId())); INVALID_MESSAGE, policyRuleDevice.getPolicyRuleBasic().getPolicyRuleId())); return policyRuleState; } Loading @@ -275,47 +321,71 @@ public class PolicyServiceImpl implements PolicyService { return policyRuleState; } contextService.setPolicyRule(policyRule).subscribe().with(x -> {}); contextService .setPolicyRule(policyRule) .subscribe() .with( policyId -> { startMonitoringBasedOnAlarmDescriptors( policyId, policyRuleDevice, alarmDescriptorList); }); return VALIDATED_POLICYRULE_STATE; } private void startMonitoringBasedOnAlarmDescriptors( String policyId, PolicyRuleDevice policyRuleDevice, List<AlarmDescriptor> alarmDescriptorList) { setPolicyRuleDeviceToContext(policyRuleDevice, VALIDATED_POLICYRULE_STATE); noAlarms = 0; List<Uni<String>> alarmIds = new ArrayList<Uni<String>>(); for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) { LOGGER.infof("alarmDescriptor:"); LOGGER.infof(alarmDescriptor.toString()); alarmIds.add(monitoringService.setKpiAlarm(alarmDescriptor)); List<Uni<String>> alarmIds = getAlarmIds(alarmDescriptorList); List<Multi<AlarmResponse>> alarmResponseStreamList = getAlarmResponse(alarmIds, policyRuleDevice); // Merge the promised alarms into one stream (Multi Object) final var multi = Multi.createBy().merging().streams(alarmResponseStreamList); setPolicyRuleDeviceToContext(policyRuleDevice, PROVISIONED_POLICYRULE_STATE); subscriptionList.put(policyId, monitorAlarmResponseForDevice(multi)); // TODO: Resubscribe to the stream, if it has ended // TODO: Redesign evaluation of action // evaluateAction(policyRule, alarmDescriptorList, multi); } private List<Multi<AlarmResponse>> getAlarmResponse( List<Uni<String>> alarmIds, PolicyRuleDevice policyRuleDevice) { // Transform the alarmIds into promised alarms returned from the // getAlarmResponseStream List<Multi<AlarmResponse>> alarmResponseStreamList = new ArrayList<>(); for (Uni<String> alarmId : alarmIds) { alarmResponseStreamList.add( alarmId .onItem() .transformToMulti( id -> { alarmId.onItem().transformToMulti(id -> setPolicyMonitoringDevice(policyRuleDevice, id))); } return alarmResponseStreamList; } private Multi<AlarmResponse> setPolicyMonitoringDevice( PolicyRuleDevice policyRuleDevice, String id) { alarmPolicyRuleDeviceMap.put(id, policyRuleDevice); // TODO: Create infinite subscription var alarmSubscription = new AlarmSubscription(id, 259200, 5000); return monitoringService.getAlarmResponseStream(alarmSubscription); })); } // Merge the promised alarms into one stream (Multi Object) final var multi = Multi.createBy().merging().streams(alarmResponseStreamList); setPolicyRuleDeviceToContext(policyRuleDevice, PROVISIONED_POLICYRULE_STATE); monitorAlarmResponseForDevice(multi); // TODO: Resubscribe to the stream, if it has ended // TODO: Redesign evaluation of action // evaluateAction(policyRule, alarmDescriptorList, multi); return VALIDATED_POLICYRULE_STATE; }); private List<Uni<String>> getAlarmIds(List<AlarmDescriptor> alarmDescriptorList) { List<Uni<String>> alarmIds = new ArrayList<Uni<String>>(); for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) { LOGGER.infof("alarmDescriptor:"); LOGGER.infof(alarmDescriptor.toString()); alarmIds.add(monitoringService.setKpiAlarm(alarmDescriptor)); } return alarmIds; } @Override Loading Loading @@ -403,10 +473,10 @@ public class PolicyServiceImpl implements PolicyService { final var getPolicyRule = contextService.getPolicyRule(policyRuleId); return getPolicyRule .onItem() .transform( policyRule -> { return getPolicyRule.onItem().transform(policyRule -> removePolicyFromContext(policyRule)); } private PolicyRuleState removePolicyFromContext(PolicyRule policyRule) { var policyRuleBasic = policyRule.getPolicyRuleType().getPolicyRuleBasic(); String policyId = policyRuleBasic.getPolicyRuleId(); Loading @@ -421,8 +491,7 @@ public class PolicyServiceImpl implements PolicyService { .with( tmp -> LOGGER.infof( "DeletePolicy with id: " + VALID_MESSAGE, policyRuleBasic.getPolicyRuleId())); "DeletePolicy with id: " + VALID_MESSAGE, policyRuleBasic.getPolicyRuleId())); contextService.removePolicyRule(policyId).subscribe().with(x -> {}); Loading @@ -430,7 +499,6 @@ public class PolicyServiceImpl implements PolicyService { if (subscriptionList.contains(policyId)) subscriptionList.get(policyId).cancel(); return policyRuleBasic.getPolicyRuleState(); }); } private Uni<List<Boolean>> returnInvalidDeviceIds(List<String> deviceIds) { Loading Loading @@ -484,8 +552,8 @@ public class PolicyServiceImpl implements PolicyService { }); } private void monitorAlarmResponseForDevice(Multi<AlarmResponse> multi) { multi private Cancellable monitorAlarmResponseForDevice(Multi<AlarmResponse> multi) { return multi .subscribe() .with( alarmResponse -> { Loading
src/policy/src/test/java/org/etsi/tfs/policy/PolicyAddDeviceTest.java +2 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import org.etsi.tfs.policy.model.PolicyRuleCondition; import org.etsi.tfs.policy.model.PolicyRuleDevice; import org.etsi.tfs.policy.model.PolicyRuleState; import org.etsi.tfs.policy.model.PolicyRuleStateEnum; import org.etsi.tfs.policy.monitoring.MonitoringService; import org.etsi.tfs.policy.monitoring.model.IntegerKpiValue; import org.etsi.tfs.policy.monitoring.model.KpiValue; import org.junit.jupiter.api.BeforeAll; Loading @@ -57,6 +58,7 @@ class PolicyAddDeviceTest { @InjectMock ContextService contextService; @InjectMock MonitoringService monitoringService; static PolicyRuleBasic policyRuleBasic; static PolicyRuleDevice policyRuleDevice; Loading
src/policy/src/test/java/org/etsi/tfs/policy/PolicyDeleteServiceTest.java +3 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import org.etsi.tfs.policy.model.PolicyRuleState; import org.etsi.tfs.policy.model.PolicyRuleStateEnum; import org.etsi.tfs.policy.model.PolicyRuleType; import org.etsi.tfs.policy.model.PolicyRuleTypeService; import org.etsi.tfs.policy.monitoring.MonitoringService; import org.etsi.tfs.policy.monitoring.model.IntegerKpiValue; import org.etsi.tfs.policy.monitoring.model.KpiValue; import org.junit.jupiter.api.BeforeAll; Loading @@ -58,6 +59,8 @@ class PolicyDeleteServiceTest { @Inject PolicyServiceImpl policyService; @InjectMock ContextService contextService; @InjectMock MonitoringService monitoringService; static PolicyRuleBasic policyRuleBasic; static PolicyRuleService policyRuleService; Loading
src/policy/src/test/java/org/etsi/tfs/policy/PolicyUpdateDeviceTest.java +3 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import org.etsi.tfs.policy.model.PolicyRuleCondition; import org.etsi.tfs.policy.model.PolicyRuleDevice; import org.etsi.tfs.policy.model.PolicyRuleState; import org.etsi.tfs.policy.model.PolicyRuleStateEnum; import org.etsi.tfs.policy.monitoring.MonitoringService; import org.etsi.tfs.policy.monitoring.model.IntegerKpiValue; import org.etsi.tfs.policy.monitoring.model.KpiValue; import org.junit.jupiter.api.BeforeAll; Loading @@ -54,6 +55,8 @@ class PolicyUpdateDeviceTest { @InjectMock PolicyRuleConditionValidator policyRuleConditionValidator; @InjectMock MonitoringService monitoringService; static PolicyRuleBasic policyRuleBasic; static PolicyRuleDevice policyRuleDevice; Loading