Currently, rest_qos is impossible to set the "priority" of QoS rule on a switch.
Also, "priority" is should be described in the same depth as "match" and 
"actions".
This patch fixes these problems.

Now, rest_qos is possible to set the "priority" with the following curl command.

e.g.)
  $ curl -X POST -d '{"priority":"5",
                      "match": {"nw_dst": "10.0.0.1", "nw_proto": "UDP", 
"tp_dst": "5002"},
                      "actions":{"queue": "1"}}' 
http://localhost:8080/qos/rules/0000000000000001

Reported-by: Jace Liang <[email protected]>
Signed-off-by: Minoru TAKAHASHI <[email protected]>
---
 ryu/app/rest_qos.py | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/ryu/app/rest_qos.py b/ryu/app/rest_qos.py
index c7a3b13..f9ab936 100644
--- a/ryu/app/rest_qos.py
+++ b/ryu/app/rest_qos.py
@@ -106,14 +106,21 @@ from ryu.ofproto import inet
 # POST /qos/{switch-id}/{vlan-id}
 #
 #  request body format:
-#   {"match": {"<field1>": "<value1>", "<field2>": "<value2>",...},
+#   {"priority": "<value>",
+#    "match": {"<field1>": "<value1>", "<field2>": "<value2>",...},
 #    "actions": {"<action1>": "<value1>", "<action2>": "<value2>",...}
 #   }
 #
 #  Description
+#    * priority field
+#     <value>
+#    "0 to 65533"
+#
+#   Note: When "priority" has not been set up,
+#         "priority: 1" is set to "priority".
+#
 #    * match field
 #     <field> : <value>
-#    "priority": "0 to 65533"
 #    "in_port" : "<int>"
 #    "dl_src"  : "<xx:xx:xx:xx:xx:xx>"
 #    "dl_dst"  : "<xx:xx:xx:xx:xx:xx>"
@@ -127,7 +134,8 @@ from ryu.ofproto import inet
 #    "tp_dst"  : "<int>"
 #    "ip_dscp" : "<int>"
 #
-#    * action field
+#    * actions field
+#     <field> : <value>
 #    "mark": <dscp-value>
 #    sets the IPv4 ToS/DSCP field to tos.
 #    "meter": <meter-id>
@@ -732,7 +740,7 @@ class QoS(object):
         if vlan_id:
             match_value[REST_DL_VLAN] = vlan_id
 
-        priority = int(match_value.get(REST_PRIORITY, QOS_PRIORITY_MIN))
+        priority = int(rest.get(REST_PRIORITY, QOS_PRIORITY_MIN))
         if (QOS_PRIORITY_MAX < priority):
             raise ValueError('Invalid priority value. Set [%d-%d]'
                              % (QOS_PRIORITY_MIN, QOS_PRIORITY_MAX))
-- 
1.9.1


------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to