Avoid provisioning meters for the multicast service as they're not defined

Change-Id: I07a6bd3ef442aba1b8a99353cd4a57e702a7333d
diff --git a/impl/src/main/java/org/opencord/olt/impl/OltFlowService.java b/impl/src/main/java/org/opencord/olt/impl/OltFlowService.java
index ee184a5..28a0f53 100644
--- a/impl/src/main/java/org/opencord/olt/impl/OltFlowService.java
+++ b/impl/src/main/java/org/opencord/olt/impl/OltFlowService.java
@@ -533,7 +533,7 @@
 
         // NOTE createMeters will return if the meters are not installed
         if (!oltMeterService.createMeters(sub.device.id(),
-                sub.subscriberAndDeviceInformation)) {
+                sub.subscriberAndDeviceInformation, multicastServiceName)) {
             return false;
         }
 
diff --git a/impl/src/main/java/org/opencord/olt/impl/OltMeterService.java b/impl/src/main/java/org/opencord/olt/impl/OltMeterService.java
index be04449..f1f5605 100644
--- a/impl/src/main/java/org/opencord/olt/impl/OltMeterService.java
+++ b/impl/src/main/java/org/opencord/olt/impl/OltMeterService.java
@@ -241,7 +241,7 @@
     }
 
     @Override
-    public boolean createMeters(DeviceId deviceId, SubscriberAndDeviceInformation si) {
+    public boolean createMeters(DeviceId deviceId, SubscriberAndDeviceInformation si, String multicastServiceName) {
         // Each UniTagInformation has up to 4 meters,
         // check and/or create all of them
         AtomicBoolean waitingOnMeter = new AtomicBoolean();
@@ -249,6 +249,14 @@
         Map<String, List<String>> pendingMeters = new HashMap<>();
         si.uniTagList().forEach(uniTagInfo -> {
             String serviceName = uniTagInfo.getServiceName();
+
+            if (multicastServiceName.equals(uniTagInfo.getServiceName())) {
+                log.debug("This is the multicast service ({}) for subscriber {} on {}, " +
+                                "meters are not needed",
+                        uniTagInfo.getServiceName(), si.id(), deviceId);
+                return;
+            }
+
             pendingMeters.put(serviceName, new LinkedList<>());
             String usBp = uniTagInfo.getUpstreamBandwidthProfile();
             String dsBp = uniTagInfo.getDownstreamBandwidthProfile();
diff --git a/impl/src/main/java/org/opencord/olt/impl/OltMeterServiceInterface.java b/impl/src/main/java/org/opencord/olt/impl/OltMeterServiceInterface.java
index a10455b..16d78ef 100644
--- a/impl/src/main/java/org/opencord/olt/impl/OltMeterServiceInterface.java
+++ b/impl/src/main/java/org/opencord/olt/impl/OltMeterServiceInterface.java
@@ -40,9 +40,10 @@
      * if not present it will create them and return false.
      * @param deviceId DeviceId
      * @param si SubscriberAndDeviceInformation
+     * @param multicastServiceName The multicast service name
      * @return boolean
      */
-    boolean createMeters(DeviceId deviceId, SubscriberAndDeviceInformation si);
+    boolean createMeters(DeviceId deviceId, SubscriberAndDeviceInformation si, String multicastServiceName);
 
     /**
      * Checks if a meter for the specified bandwidthProfile exists