[ONOS-5565]Implementation of QosConfig and QueueConfig

Change-Id: I6a367b53cfca2e85e8aaa6cddb541d7b3ffccbc0
diff --git a/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java b/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java
index 8c4397a..8c11c3d 100644
--- a/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java
+++ b/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java
@@ -18,9 +18,12 @@
 import com.google.common.util.concurrent.ListenableFuture;
 import org.onlab.packet.IpAddress;
 import org.onosproject.net.DeviceId;
+import org.onosproject.net.PortNumber;
 import org.onosproject.net.behaviour.ControllerInfo;
 import org.onosproject.net.behaviour.MirroringStatistics;
 import org.onosproject.net.behaviour.MirroringName;
+import org.onosproject.net.behaviour.QosId;
+import org.onosproject.net.behaviour.QueueId;
 import org.onosproject.ovsdb.rfc.jsonrpc.OvsdbRpc;
 import org.onosproject.ovsdb.rfc.message.TableUpdates;
 import org.onosproject.ovsdb.rfc.notation.Row;
@@ -77,6 +80,82 @@
     void dropMirror(MirroringName mirroringName);
 
     /**
+     * apply qos to port.
+     *
+     * @param  portNumber port identifier
+     * @param  qosName the qos name
+     */
+    void applyQos(PortNumber portNumber, String qosName);
+
+    /**
+     * Creates a qos port.
+     *
+     * @param  portNumber port identifier
+     */
+    void removeQos(PortNumber portNumber);
+
+    /**
+     * Creates a qos. associates with queue to
+     * provide the ability of limit the rate of different flows
+     * depend on itself priority.
+     *
+     * @param  ovsdbQos the OVSDB Qos
+     * @return true if qos creation is successful, false otherwise
+     */
+    boolean createQos(OvsdbQos ovsdbQos);
+
+    /**
+     * Drops the configuration for qos.
+     *
+     * @param qosId qos identifier
+     */
+    void dropQos(QosId qosId);
+
+    /**
+     * Gets a qos of node.
+     * @param qosId qos identifier
+     * @return null if no qos is find
+     */
+    OvsdbQos getQos(QosId qosId);
+
+    /**
+     * Gets qoses of node.
+     *
+     * @return set of qoses; empty if no qos is find
+     */
+    Set<OvsdbQos> getQoses();
+
+    /**
+     * Creates queues. limits the rate of each flow
+     * depend on itself priority.
+     *
+     * @param  queue the OVSDB queue description
+     * @return true if queue creation is successful, false otherwise
+     */
+    boolean createQueue(OvsdbQueue queue);
+
+    /**
+     * Drops the configuration for queue.
+     *
+     * @param queueId  queue identifier
+     */
+    void dropQueue(QueueId queueId);
+
+    /**
+     * Gets a queue of node.
+     * @param queueId the queue identifier
+     * @return null if no queue is find
+     */
+    OvsdbQueue getQueue(QueueId queueId);
+
+    /**
+     * Gets queues of node.
+     *
+     * @return set of queues; empty if no queue is find
+     */
+    Set<OvsdbQueue> getQueues();
+
+    /**
      * Creates a tunnel port with given options.
      *
      * @deprecated version 1.7.0 - Hummingbird