ONOS-5856 do not poll meter against optical device

Change-Id: Id00e29eedc1e89af8998c8b0fd7c31caa98d99da
diff --git a/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/OpenFlowMeterProvider.java b/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/OpenFlowMeterProvider.java
index 436b071..cff47bb 100644
--- a/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/OpenFlowMeterProvider.java
+++ b/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/OpenFlowMeterProvider.java
@@ -21,6 +21,7 @@
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.RemovalCause;
 import com.google.common.cache.RemovalNotification;
+import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Maps;
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
@@ -40,6 +41,7 @@
 import org.onosproject.net.meter.MeterProviderRegistry;
 import org.onosproject.net.meter.MeterProviderService;
 import org.onosproject.net.meter.MeterState;
+import org.onosproject.net.Device;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.provider.AbstractProvider;
 import org.onosproject.net.provider.ProviderId;
@@ -64,8 +66,10 @@
 import org.slf4j.Logger;
 
 import java.util.Collection;
+import java.util.EnumSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.stream.Collectors;
@@ -103,6 +107,12 @@
     private InternalMeterListener listener = new InternalMeterListener();
     private Map<Dpid, MeterStatsCollector> collectors = Maps.newHashMap();
 
+    private static final Set<Device.Type> NO_METER_SUPPORT =
+            ImmutableSet.copyOf(EnumSet.of(Device.Type.ROADM,
+                                           Device.Type.ROADM_OTN,
+                                           Device.Type.FIBER_SWITCH,
+                                           Device.Type.OTN));
+
     /**
      * Creates a OpenFlow meter provider.
      */
@@ -222,6 +232,7 @@
         if (sw.factory().getVersion() == OFVersion.OF_10 ||
                 sw.factory().getVersion() == OFVersion.OF_11 ||
                 sw.factory().getVersion() == OFVersion.OF_12 ||
+                NO_METER_SUPPORT.contains(sw.deviceType()) ||
                 sw.softwareDescription().equals("OF-DPA 2.0")) {
             return false;
         }