bug 6579 removed boilerplate code
[ovsdb.git] / hwvtepsouthbound / hwvtepsouthbound-impl / src / main / java / org / opendaylight / ovsdb / hwvtepsouthbound / HwvtepDeviceInfo.java
index ba0b1a3886105dbc54c2f37f8e9be29d250812d4..0c8fec7f99069037afe8c7469390b1d109431b40 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.ovsdb.hwvtepsouthbound;
 
 import org.opendaylight.ovsdb.hwvtepsouthbound.transact.DependencyQueue;
 import org.opendaylight.ovsdb.hwvtepsouthbound.transact.DependentJob;
+import org.opendaylight.ovsdb.hwvtepsouthbound.transact.TransactCommand;
 import org.opendaylight.ovsdb.lib.notation.UUID;
 import org.opendaylight.ovsdb.schema.hardwarevtep.LogicalSwitch;
 import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalLocator;
@@ -22,6 +23,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -177,16 +179,22 @@ public class HwvtepDeviceInfo {
                 new DeviceData(key, null, data, DeviceDataStatus.AVAILABLE));
     }
 
+    public Object getConfigData(Class<? extends Identifiable> cls, InstanceIdentifier key) {
+        return HwvtepSouthboundUtil.getData(configKeyVsData, cls, key);
+    }
+
     public void clearConfigData(Class<? extends Identifiable> cls, InstanceIdentifier key) {
         HwvtepSouthboundUtil.clearData(configKeyVsData, cls, key);
     }
 
     public void markKeyAsInTransit(Class<? extends Identifiable> cls, InstanceIdentifier key) {
+        LOG.debug("Marking device data as intransit {}", key);
         HwvtepSouthboundUtil.updateData(opKeyVsData, cls, key,
                 new DeviceData(key, null, null, DeviceDataStatus.IN_TRANSIT));
     }
 
     public void updateDeviceOpData(Class<? extends Identifiable> cls, InstanceIdentifier key, UUID uuid, Object data) {
+        LOG.debug("Updating device data {}", key);
         HwvtepSouthboundUtil.updateData(opKeyVsData, cls, key,
                 new DeviceData(key, uuid, data, DeviceDataStatus.AVAILABLE));
         HwvtepSouthboundUtil.updateData(uuidVsData, cls, uuid, data);
@@ -227,4 +235,27 @@ public class HwvtepDeviceInfo {
     public void onOpDataAvailable() {
         dependencyQueue.processReadyJobsFromOpQueue(connectionInstance);
     }
+
+    public void scheduleTransaction(final TransactCommand transactCommand) {
+        dependencyQueue.submit(new Runnable() {
+            @Override
+            public void run() {
+                connectionInstance.transact(transactCommand);
+            }
+        });
+    }
+
+    public void clearInTransitData() {
+        //TODO restore old data
+        for (Map<InstanceIdentifier, DeviceData> map : opKeyVsData.values()) {
+            Iterator<Map.Entry<InstanceIdentifier, DeviceData>> iterator = map.entrySet().iterator();
+            while ( iterator.hasNext() ) {
+                Map.Entry<InstanceIdentifier, DeviceData> entry = iterator.next();
+                if (entry.getValue().getStatus() == DeviceDataStatus.IN_TRANSIT) {
+                    iterator.remove();
+                }
+            }
+        }
+        onOpDataAvailable();
+    }
 }