Added patch interface add and remove behavior, and implemented OVSDB driver

Change-Id: Ic7632906fcfe50ec224fabdc15cb902a70150fae
diff --git a/drivers/ovsdb/src/main/java/org/onosproject/drivers/ovsdb/OvsdbInterfaceConfig.java b/drivers/ovsdb/src/main/java/org/onosproject/drivers/ovsdb/OvsdbInterfaceConfig.java
index e35599c..f38346e 100644
--- a/drivers/ovsdb/src/main/java/org/onosproject/drivers/ovsdb/OvsdbInterfaceConfig.java
+++ b/drivers/ovsdb/src/main/java/org/onosproject/drivers/ovsdb/OvsdbInterfaceConfig.java
@@ -20,6 +20,7 @@
 import org.onlab.packet.VlanId;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.behaviour.InterfaceConfig;
+import org.onosproject.net.behaviour.PatchDescription;
 import org.onosproject.net.behaviour.TunnelDescription;
 import org.onosproject.net.device.DeviceInterfaceDescription;
 import org.onosproject.net.driver.AbstractHandlerBehaviour;
@@ -67,11 +68,28 @@
 
     @Override
     public boolean removeAccessMode(String ifaceName) {
-        // TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     @Override
+    public boolean addPatchMode(String ifaceName, PatchDescription patchDesc) {
+        OvsdbInterface ovsdbIface = OvsdbInterface.builder(patchDesc).build();
+        OvsdbClientService ovsdbClient = getOvsdbClient(handler());
+
+        if (!patchDesc.deviceId().isPresent()) {
+            log.warn("Device ID is required {}", patchDesc);
+            return false;
+        }
+        return ovsdbClient.createInterface(patchDesc.deviceId().get(), ovsdbIface);
+    }
+
+    @Override
+    public boolean removePatchMode(String ifaceName) {
+        OvsdbClientService ovsdbClient = getOvsdbClient(handler());
+        return ovsdbClient.dropInterface(ifaceName);
+    }
+
+    @Override
     public boolean addTrunkMode(String ifaceName, List<VlanId> vlanIds) {
         // TODO implement
         throw new UnsupportedOperationException("Not implemented yet");