From 02f86c84a0ed3be5b718663a63219a999a421b61 Mon Sep 17 00:00:00 2001 From: Andrea Campanella Date: Mon, 18 Mar 2019 16:57:27 -0700 Subject: [PATCH] Fix for propeties that need to have the same name as the used variable. Enabling rest reply timout to be configured Change-Id: I4435c1d359a47b64d861c9a1be7ec1008371ba2b --- .../device/impl/NetconfDeviceProvider.java | 2 +- .../device/impl/OpenFlowDeviceProvider.java | 36 +++++++++---------- .../device/impl/OsgiPropertyConstants.java | 3 ++ .../rest/device/impl/RestDeviceProvider.java | 19 ++++++---- 4 files changed, 35 insertions(+), 25 deletions(-) diff --git a/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java b/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java index d5ad8f4e21..24ec52976b 100644 --- a/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java +++ b/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java @@ -109,7 +109,7 @@ import static org.slf4j.LoggerFactory.getLogger; */ @Component(immediate = true, property = { - POLL_FREQUENCY_SECONDS_DEFAULT + ":Integer=" + POLL_FREQUENCY_SECONDS_DEFAULT, + POLL_FREQUENCY_SECONDS + ":Integer=" + POLL_FREQUENCY_SECONDS_DEFAULT, MAX_RETRIES + ":Integer=" + MAX_RETRIES_DEFAULT, }) public class NetconfDeviceProvider extends AbstractProvider diff --git a/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java b/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java index 95c4f47074..cb389e34ba 100644 --- a/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java +++ b/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java @@ -457,7 +457,7 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr private int portStatsPollFrequency = POLL_FREQ_DEFAULT; /** It indicates frequency must be used instead of wavelength for port tuning. */ - private static boolean propFreq = PROP_FREQ_DEFAULT; + private static boolean propertyFrequency = PROP_FREQ_DEFAULT; private final Timer timer = new Timer("onos-openflow-portstats-collector"); @@ -655,12 +655,12 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr private static String freqLmdaToAnnotation(long freqLmda, boolean useFreq) { if (useFreq) { - if (propFreq) { + if (propertyFrequency) { mhzToAnnotation(freqLmda); } else { mhzToAnnotationNm(freqLmda); } - } else if (propFreq) { + } else if (propertyFrequency) { lambdaToAnnotationHz(freqLmda); } return Double.toString(freqLmda / 100.0); @@ -709,11 +709,11 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr long txOffset = optical.get().getTxOffset(); long txGridSpan = optical.get().getTxGridSpan(); annotations.set(AK_TX_TUNE_FEATURE, ((flags & txTune) != 0) ? "enabled" : "disabled"); - annotations.set(propFreq ? AK_TX_FREQ_HZ : AK_TX_LMDA_NM, + annotations.set(propertyFrequency ? AK_TX_FREQ_HZ : AK_TX_LMDA_NM, freqLmdaToAnnotation(txFreq, useFreq)); - annotations.set(propFreq ? AK_TX_OFFSET_HZ : AK_TX_OFFSET_LMDA_NM, + annotations.set(propertyFrequency ? AK_TX_OFFSET_HZ : AK_TX_OFFSET_LMDA_NM, freqLmdaToAnnotation(txOffset, useFreq)); - annotations.set(propFreq ? AK_TX_GRID_SPAN_HZ : AK_TX_GRID_SPAN_LMDA_NM, + annotations.set(propertyFrequency ? AK_TX_GRID_SPAN_HZ : AK_TX_GRID_SPAN_LMDA_NM, freqLmdaToAnnotation(txGridSpan, useFreq)); int rxTune = OFPortStatsOpticalFlagsSerializerVer14.RX_TUNE_VAL; @@ -721,11 +721,11 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr long rxOffset = optical.get().getRxOffset(); long rxGridSpan = optical.get().getRxGridSpan(); annotations.set(AK_RX_TUNE_FEATURE, ((flags & rxTune) != 0) ? "enabled" : "disabled"); - annotations.set(propFreq ? AK_RX_FREQ_HZ : AK_RX_LMDA_NM, + annotations.set(propertyFrequency ? AK_RX_FREQ_HZ : AK_RX_LMDA_NM, freqLmdaToAnnotation(rxFreq, useFreq)); - annotations.set(propFreq ? AK_RX_OFFSET_HZ : AK_RX_OFFSET_LMDA_NM, + annotations.set(propertyFrequency ? AK_RX_OFFSET_HZ : AK_RX_OFFSET_LMDA_NM, freqLmdaToAnnotation(rxOffset, useFreq)); - annotations.set(propFreq ? AK_RX_GRID_SPAN_HZ : AK_RX_GRID_SPAN_LMDA_NM, + annotations.set(propertyFrequency ? AK_RX_GRID_SPAN_HZ : AK_RX_GRID_SPAN_LMDA_NM, freqLmdaToAnnotation(rxGridSpan, useFreq)); int txPwrVal = OFPortStatsOpticalFlagsSerializerVer14.TX_PWR_VAL; @@ -1234,32 +1234,32 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr boolean useFreq = (supported & OFOpticalPortFeaturesSerializerVer14.USE_FREQ_VAL) != 0; annotations.set(AK_USE_FREQ_FEATURE, useFreq ? "enabled" : "disabled"); - annotations.set(propFreq ? AK_RX_MIN_FREQ_HZ : AK_RX_MIN_LMDA_NM, + annotations.set(propertyFrequency ? AK_RX_MIN_FREQ_HZ : AK_RX_MIN_LMDA_NM, freqLmdaToAnnotation(rxMin, useFreq)); - annotations.set(propFreq ? AK_RX_MAX_FREQ_HZ : AK_RX_MAX_LMDA_NM, + annotations.set(propertyFrequency ? AK_RX_MAX_FREQ_HZ : AK_RX_MAX_LMDA_NM, freqLmdaToAnnotation(rxMax, useFreq)); - annotations.set(propFreq ? AK_RX_GRID_HZ : AK_RX_GRID_LMDA_NM, + annotations.set(propertyFrequency ? AK_RX_GRID_HZ : AK_RX_GRID_LMDA_NM, freqLmdaToAnnotation(rxGrid, useFreq)); - annotations.set(propFreq ? AK_TX_MIN_FREQ_HZ : AK_TX_MIN_LMDA_NM, + annotations.set(propertyFrequency ? AK_TX_MIN_FREQ_HZ : AK_TX_MIN_LMDA_NM, freqLmdaToAnnotation(txMin, useFreq)); - annotations.set(propFreq ? AK_TX_MAX_FREQ_HZ : AK_TX_MAX_LMDA_NM, + annotations.set(propertyFrequency ? AK_TX_MAX_FREQ_HZ : AK_TX_MAX_LMDA_NM, freqLmdaToAnnotation(txMax, useFreq)); - annotations.set(propFreq ? AK_TX_GRID_HZ : AK_TX_GRID_LMDA_NM, + annotations.set(propertyFrequency ? AK_TX_GRID_HZ : AK_TX_GRID_LMDA_NM, freqLmdaToAnnotation(txGrid, useFreq)); // FIXME pretty confident this is not going to happen // unless Device models Tx/Rx ports as separate port if (rxMin == txMin) { - annotations.set(propFreq ? AK_MIN_FREQ_HZ : AK_MIN_LMDA_NM, + annotations.set(propertyFrequency ? AK_MIN_FREQ_HZ : AK_MIN_LMDA_NM, freqLmdaToAnnotation(rxMin, useFreq)); } if (rxMax == txMax) { - annotations.set(propFreq ? AK_MAX_FREQ_HZ : AK_MAX_LMDA_NM, + annotations.set(propertyFrequency ? AK_MAX_FREQ_HZ : AK_MAX_LMDA_NM, freqLmdaToAnnotation(rxMax, useFreq)); } if (rxGrid == txGrid) { - annotations.set(propFreq ? AK_GRID_HZ : AK_GRID_LMDA_NM, + annotations.set(propertyFrequency ? AK_GRID_HZ : AK_GRID_LMDA_NM, freqLmdaToAnnotation(rxGrid, useFreq)); } diff --git a/providers/rest/device/src/main/java/org/onosproject/provider/rest/device/impl/OsgiPropertyConstants.java b/providers/rest/device/src/main/java/org/onosproject/provider/rest/device/impl/OsgiPropertyConstants.java index 41e65baa9b..c7ceb6aa06 100644 --- a/providers/rest/device/src/main/java/org/onosproject/provider/rest/device/impl/OsgiPropertyConstants.java +++ b/providers/rest/device/src/main/java/org/onosproject/provider/rest/device/impl/OsgiPropertyConstants.java @@ -26,4 +26,7 @@ public final class OsgiPropertyConstants { public static final String POLL_FREQUENCY = "pollFrequency"; public static final int POLL_FREQUENCY_DEFAULT = 30; + public static final String TIMEOUT = "replyTimeout"; + public static final int TIMEOUT_DEFAULT = 5; + } diff --git a/providers/rest/device/src/main/java/org/onosproject/provider/rest/device/impl/RestDeviceProvider.java b/providers/rest/device/src/main/java/org/onosproject/provider/rest/device/impl/RestDeviceProvider.java index c89e59bc93..3dc2a8d2fa 100644 --- a/providers/rest/device/src/main/java/org/onosproject/provider/rest/device/impl/RestDeviceProvider.java +++ b/providers/rest/device/src/main/java/org/onosproject/provider/rest/device/impl/RestDeviceProvider.java @@ -95,14 +95,17 @@ import static org.onosproject.net.config.NetworkConfigEvent.Type.CONFIG_REMOVED; import static org.onosproject.net.config.NetworkConfigEvent.Type.CONFIG_UPDATED; import static org.onosproject.provider.rest.device.impl.OsgiPropertyConstants.POLL_FREQUENCY; import static org.onosproject.provider.rest.device.impl.OsgiPropertyConstants.POLL_FREQUENCY_DEFAULT; +import static org.onosproject.provider.rest.device.impl.OsgiPropertyConstants.TIMEOUT; +import static org.onosproject.provider.rest.device.impl.OsgiPropertyConstants.TIMEOUT_DEFAULT; import static org.slf4j.LoggerFactory.getLogger; /** * Provider for devices that use REST as means of configuration communication. */ -@Component(immediate = true, service = DeviceProvider.class, +@Component(immediate = true, property = { POLL_FREQUENCY + ":Integer=" + POLL_FREQUENCY_DEFAULT, + TIMEOUT + ":Integer=" + TIMEOUT_DEFAULT, }) public class RestDeviceProvider extends AbstractProvider implements DeviceProvider { @@ -113,9 +116,7 @@ public class RestDeviceProvider extends AbstractProvider private static final String DEVICENULL = "Rest device is null"; private static final String DRIVERNULL = "Driver is null"; private static final String UNKNOWN = "unknown"; - private static final int REST_TIMEOUT_SEC = 5; private static final int EXECUTOR_THREAD_POOL_SIZE = 8; - private static final int DEVICE_POLL_SEC = 30; private final Logger log = getLogger(getClass()); @Reference(cardinality = ReferenceCardinality.MANDATORY) @@ -142,6 +143,9 @@ public class RestDeviceProvider extends AbstractProvider /** Configure poll frequency for port status and statistics; default is 30 seconds. */ private int pollFrequency = POLL_FREQUENCY_DEFAULT; + /** Configure timeout for a device reply; default is 5 seconds. */ + private int replyTimeout = TIMEOUT_DEFAULT; + private DeviceProviderService providerService; private ApplicationId appId; @@ -191,7 +195,10 @@ public class RestDeviceProvider extends AbstractProvider Dictionary properties = context.getProperties(); pollFrequency = Tools.getIntegerProperty(properties, POLL_FREQUENCY, POLL_FREQUENCY_DEFAULT); - log.info("Configured. Poll frequency is configured to {} seconds", pollFrequency); + replyTimeout = Tools.getIntegerProperty(properties, TIMEOUT, + TIMEOUT_DEFAULT); + log.info("Configured. Poll frequency = {} seconds, reply timeout = {} seconds ", + pollFrequency, replyTimeout); } // Re-schedule only if frequency has changed @@ -265,7 +272,7 @@ public class RestDeviceProvider extends AbstractProvider } catch (Exception e) { log.error("Exception at schedule Device polling", e); } - }, 1, DEVICE_POLL_SEC, TimeUnit.SECONDS); + }, 1, pollFrequency, TimeUnit.SECONDS); } private DeviceDescription getDesc(RestSBDevice restSBDev) { @@ -562,7 +569,7 @@ public class RestDeviceProvider extends AbstractProvider Future future = executor.submit(connectionSuccess); try { - return future.get(REST_TIMEOUT_SEC, TimeUnit.SECONDS); + return future.get(replyTimeout, TimeUnit.SECONDS); } catch (TimeoutException ex) { log.warn("Connection to device {} timed out: {}", dev.deviceId(), ex.getMessage()); return false;