qos: Store function

Type: feature

store: write a QoS value into the buffer meta-data
record: Extract a QoS value from a packet header and store it.
mark: Make a change to the content of a packet header by writing a stored
      QoS value

Change-Id: I07d1e87dd1ca90d40ac1ae1774fee1b272cab83f
Signed-off-by: Neale Ranns <nranns@cisco.com>
diff --git a/test/vpp_qos.py b/test/vpp_qos.py
index 0577863..a7fa9e7 100644
--- a/test/vpp_qos.py
+++ b/test/vpp_qos.py
@@ -42,6 +42,44 @@
         return ("qos-record-%s-%d" % (self.intf, self.source))
 
 
+class VppQosStore(VppObject):
+    """ QoS Store(ing) configuration """
+
+    def __init__(self, test, intf, source, value):
+        self._test = test
+        self.intf = intf
+        self.source = source
+        self.value = value
+
+    def add_vpp_config(self):
+        self._test.vapi.qos_store_enable_disable(
+            enable=1,
+            store={'sw_if_index': self.intf.sw_if_index,
+                   'input_source': self.source,
+                   'value': self.value})
+        self._test.registry.register(self, self._test.logger)
+        return self
+
+    def remove_vpp_config(self):
+        self._test.vapi.qos_store_enable_disable(
+            enable=0,
+            store={'sw_if_index': self.intf.sw_if_index,
+                   'input_source': self.source})
+
+    def query_vpp_config(self):
+        rs = self._test.vapi.qos_store_dump()
+
+        for r in rs:
+            if self.intf.sw_if_index == r.store.sw_if_index and \
+               self.source == r.store.input_source and \
+               self.value == r.store.value:
+                return True
+        return False
+
+    def object_id(self):
+        return ("qos-store-%s-%d" % (self.intf, self.source))
+
+
 class VppQosEgressMap(VppObject):
     """ QoS Egress Map(ping) configuration """