Fixing the meter timeout issue and support transparent flows.

The related tasks:

* https://jira.opencord.org/browse/VOL-1545
* https://jira.opencord.org/browse/VOL-1571

Change-Id: I390f39a7edbd92582584747f489f198af3e9e514
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 ca34e10..91e2f64 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
@@ -140,6 +140,8 @@
                 .expireAfterWrite(TIMEOUT, TimeUnit.SECONDS)
                 .removalListener((RemovalNotification<Long, MeterOperation> notification) -> {
                     if (notification.getCause() == RemovalCause.EXPIRED) {
+                        log.debug("Expired on meter provider. Meter key {} and operation {}",
+                                notification.getKey(), notification.getValue());
                         providerService.meterOperationFailed(notification.getValue(),
                                                              MeterFailReason.TIMEOUT);
                     }
@@ -207,9 +209,6 @@
 
     private void performOperation(OpenFlowSwitch sw, MeterOperation op) {
 
-        pendingOperations.put(op.meter().id().id(), op);
-
-
         Meter meter = op.meter();
         MeterModBuilder builder = MeterModBuilder.builder(meter.id().id(), sw.factory());
         if (meter.isBurst()) {
@@ -221,12 +220,14 @@
 
         switch (op.type()) {
             case ADD:
+                pendingOperations.put(op.meter().id().id(), op);
                 sw.sendMsg(builder.add());
                 break;
             case REMOVE:
                 sw.sendMsg(builder.remove());
                 break;
             case MODIFY:
+                pendingOperations.put(op.meter().id().id(), op);
                 sw.sendMsg(builder.modify());
                 break;
             default: