return scheduler;
}
- @SuppressWarnings("checkstyle:IllegalCatch")
private static SfcServiceFunctionSchedulerAPI getDefaultServiceFunctionScheduler() {
Class<? extends ServiceFunctionSchedulerTypeIdentity> serviceFunctionSchedulerType;
-
- try {
- serviceFunctionSchedulerType = SfcProviderScheduleTypeAPI.readEnabledServiceFunctionScheduleTypeEntry()
- .getType();
- } catch (RuntimeException e) {
- LOG.debug("readEnabledServiceFunctionScheduleTypeEntry failed", e);
+ serviceFunctionSchedulerType = SfcProviderScheduleTypeAPI.readEnabledServiceFunctionScheduleTypeEntry();
+ if (serviceFunctionSchedulerType == null) {
+ LOG.debug("No enabled service function scheduler type found, default to random");
serviceFunctionSchedulerType = Random.class;
}
import static org.opendaylight.sfc.provider.SfcProviderDebug.printTraceStart;
import static org.opendaylight.sfc.provider.SfcProviderDebug.printTraceStop;
-import java.util.List;
+import java.util.Collections;
+import java.util.Optional;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.yang.gen.v1.urn.intel.params.xml.ns.yang.sfc.sfst.rev150312.ServiceFunctionSchedulerTypeIdentity;
import org.opendaylight.yang.gen.v1.urn.intel.params.xml.ns.yang.sfc.sfst.rev150312.ServiceFunctionSchedulerTypes;
private SfcProviderScheduleTypeAPI() {
}
- public static ServiceFunctionSchedulerType readEnabledServiceFunctionScheduleTypeEntry() {
- ServiceFunctionSchedulerType ret = null;
- printTraceStart(LOG);
- ServiceFunctionSchedulerTypes serviceFunctionSchedulerTypes = SfcProviderScheduleTypeAPI
- .readAllServiceFunctionScheduleTypes();
- List<ServiceFunctionSchedulerType> sfScheduleTypeList = serviceFunctionSchedulerTypes
- .getServiceFunctionSchedulerType();
- for (ServiceFunctionSchedulerType serviceFunctionSchedulerType : sfScheduleTypeList) {
- if (serviceFunctionSchedulerType.isEnabled()) {
- ret = serviceFunctionSchedulerType;
- break;
- }
- }
- printTraceStop(LOG);
- return ret;
+ public static Class<? extends ServiceFunctionSchedulerTypeIdentity> readEnabledServiceFunctionScheduleTypeEntry() {
+ return Optional.ofNullable(SfcProviderScheduleTypeAPI.readAllServiceFunctionScheduleTypes())
+ .map(ServiceFunctionSchedulerTypes::getServiceFunctionSchedulerType)
+ .orElse(Collections.emptyList())
+ .stream()
+ .filter(ServiceFunctionSchedulerType::isEnabled)
+ .findFirst()
+ .map(ServiceFunctionSchedulerType::getType)
+ .orElse(null);
}
public static boolean putServiceFunctionScheduleType(ServiceFunctionSchedulerType serviceFunctionSchedulerType) {
SfcProviderScheduleTypeAPI.putServiceFunctionScheduleType(sfstBuilder1.build());
SfcProviderScheduleTypeAPI.putServiceFunctionScheduleType(sfstBuilder2.build());
- Object result = SfcProviderScheduleTypeAPI.readEnabledServiceFunctionScheduleTypeEntry();
- ServiceFunctionSchedulerType sfst = (ServiceFunctionSchedulerType) result;
+ Class<? extends ServiceFunctionSchedulerTypeIdentity> scheduleTypeEntry;
+ scheduleTypeEntry = SfcProviderScheduleTypeAPI.readEnabledServiceFunctionScheduleTypeEntry();
- assertNotNull("Must be not null", sfst);
- assertEquals("Must be equal", sfst.getName(), name1);
- assertEquals("Must be equal", sfst.getType(), type1);
- assertEquals("Must be equal", sfst.isEnabled(), true);
+ assertEquals("Must be equal", scheduleTypeEntry, type1);
}
@Test