[ONOS-2162][ONOS-2259]-- OVSDB- The implementation of OvsdbProviderService
and OvsdbClientService.

Change-Id: I3e04d7c111adf16201f8ad7ec732eb81de05b960
diff --git a/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java b/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java
index 08e3175..8bccd5c 100644
--- a/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java
+++ b/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java
@@ -15,14 +15,24 @@
  */
 package org.onosproject.ovsdb.controller;
 
+import java.util.List;
 import java.util.Set;
 
 import org.onlab.packet.IpAddress;
 
+import org.onosproject.ovsdb.rfc.jsonrpc.OvsdbRPC;
+import org.onosproject.ovsdb.rfc.message.OperationResult;
+import org.onosproject.ovsdb.rfc.message.TableUpdates;
+import org.onosproject.ovsdb.rfc.notation.Row;
+import org.onosproject.ovsdb.rfc.operations.Operation;
+import org.onosproject.ovsdb.rfc.schema.DatabaseSchema;
+
+import com.google.common.util.concurrent.ListenableFuture;
+
 /**
  * Represents to provider facing side of a node.
  */
-public interface OvsdbClientService {
+public interface OvsdbClientService extends OvsdbRPC {
     /**
      * Gets the node identifier.
      *
@@ -104,4 +114,111 @@
      */
     boolean isConnected();
 
+    /**
+     * Gets the Bridge uuid.
+     *
+     * @param bridgeName bridge name
+     * @return bridge uuid, empty if no uuid is find
+     */
+    String getBridgeUuid(String bridgeName);
+
+    /**
+     * Gets the Port uuid.
+     *
+     * @param portName port name
+     * @param bridgeUuid bridge uuid
+     * @return port uuid, empty if no uuid is find
+     */
+    String getPortUuid(String portName, String bridgeUuid);
+
+    /**
+     * Gets the Interface uuid.
+     *
+     * @param portUuid port uuid
+     * @param portName port name
+     * @return interface uuid, empty if no uuid is find
+     */
+    String getInterfaceUuid(String portUuid, String portName);
+
+    /**
+     * Gets the Controller uuid.
+     *
+     * @param controllerName controller name
+     * @param controllerTarget controller target
+     * @return controller uuid, empty if no uuid is find
+     */
+    String getControllerUuid(String controllerName, String controllerTarget);
+
+    /**
+     * Gets the Ovs uuid.
+     *
+     * @param dbName database name
+     * @return ovs uuid, empty if no uuid is find
+     */
+    String getOvsUuid(String dbName);
+
+    /**
+     * Gets the ovsdb database schema.
+     *
+     * @param dbName database name
+     * @return database schema
+     */
+    ListenableFuture<DatabaseSchema> getOvsdbSchema(String dbName);
+
+    /**
+     * Gets the ovsdb table updates.
+     *
+     * @param dbName database name
+     * @param id random uuid
+     * @return table updates
+     */
+    ListenableFuture<TableUpdates> monitorTables(String dbName, String id);
+
+    /**
+     * Gets the ovsdb config operation result.
+     *
+     * @param dbName database name
+     * @param operations the list of operations
+     * @return operation results
+     */
+    ListenableFuture<List<OperationResult>> transactConfig(String dbName,
+                                                           List<Operation> operations);
+
+    /**
+     * Gets the ovsdb database schema from local.
+     *
+     * @param  dbName database name
+     * @return database schema
+     */
+    DatabaseSchema getDatabaseSchema(String dbName);
+
+    /**
+     * Gets the ovsdb row from the local ovsdb store.
+     *
+     * @param dbName database name
+     * @param tableName table name
+     * @param uuid row uuid
+     * @return row ovsdb row
+     */
+    Row getRow(String dbName, String tableName, String uuid);
+
+    /**
+     * Removes the ovsdb row from the local ovsdb store.
+     *
+     * @param dbName database name
+     * @param tableName table name
+     * @param uuid row uuid
+     */
+    void removeRow(String dbName, String tableName, String uuid);
+
+    /**
+     * Update the local ovsdb store.
+     *
+     * @param dbName database name
+     * @param tableName table name
+     * @param uuid row uuid
+     * @param row ovsdb row
+     */
+    void updateOvsdbStore(String dbName, String tableName, String uuid, Row row);
+
 }