Hello, I am trying to use the OVSBridge class in ryu.lib.ovs.bridge but it doesn't work as I expected.
Here is a relevant link about the ryu.lib.ovs library that I tried to use to implement QoS from the controller: https://ryu.readthedocs.io/en/latest/library_ovsdb.html *- Here is my app code:* from ryu.base import app_manager from ryu.cfg import CONF from ryu.lib.ovs.bridge import OVSBridge from ryu.ofproto import ofproto_v1_3 from ryu.controller.handler import (MAIN_DISPATCHER, set_ev_cls) from ryu.topology import event OVSDB_ADDR = 'tcp:10.0.3.1:6632' class SimpleApp(app_manager.RyuApp): OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION] def __init__(self, *args, **kwargs): super(SimpleApp, self).__init__(*args, **kwargs) @set_ev_cls(event.EventSwitchEnter) def mymethod(self, ev): self.logger.info(f'Called mymethod') ovs_bridge = OVSBridge(CONF, datapath_id=1, ovsdb_addr=OVSDB_ADDR) ovs_bridge.set_qos('enp0s8',type='linux-htb',max_rate='500000000') *- Command:* (ryu-env) ryu@controller:~/venvs/ryu-env$ ryu-manager ryu.qos_bug_example *- Console output:* loading app ryu.qos_bug_example loading app ryu.topology.switches loading app ryu.controller.ofp_handler instantiating app ryu.qos_bug_example of SimpleApp instantiating app ryu.topology.switches of Switches instantiating app ryu.controller.ofp_handler of OFPHandler Called mymethod *- Exception message and trace:* SimpleApp: Exception occurred during handler processing. Backtrace from offending handler [mymethod] servicing event [EventSwitchEnter] follows. Traceback (most recent call last): File "/home/ryu/venvs/ryu-env/ryu/ryu/base/app_manager.py", line 290, in _event_loop handler(ev) File "/home/ryu/venvs/ryu-env/ryu/ryu/qos_bug_example.py", line 20, in mymethod ovs_bridge.set_qos('enp0s8',type='linux-htb',max_rate='500000000') File "/home/ryu/venvs/ryu-env/ryu/ryu/lib/ovs/bridge.py", line 536, in set_qos self.run_command([command_qos, command_queue]) File "/home/ryu/venvs/ryu-env/ryu/ryu/lib/ovs/bridge.py", line 137, in run_command self.vsctl.run_command(commands, self.timeout, self.exception) File "/home/ryu/venvs/ryu-env/ryu/ryu/lib/ovs/vsctl.py", line 1300, in run_command self._run_command(commands) File "/home/ryu/venvs/ryu-env/ryu/ryu/lib/ovs/vsctl.py", line 1280, in _run_command self._do_main(commands) File "/home/ryu/venvs/ryu-env/ryu/ryu/lib/ovs/vsctl.py", line 1186, in _do_main if self._do_vsctl(idl_, commands): File "/home/ryu/venvs/ryu-env/ryu/ryu/lib/ovs/vsctl.py", line 1121, in _do_vsctl command._run(ctx, command) File "/home/ryu/venvs/ryu-env/ryu/ryu/lib/ovs/vsctl.py", line 1936, in _cmd_set_qos result = self._set_qos(ctx, port_name, type, max_rate) File "/home/ryu/venvs/ryu-env/ryu/ryu/lib/ovs/vsctl.py", line 1929, in _set_qos ovsrec_qos = ctx.set_qos(vsctl_port, type, max_rate) File "/home/ryu/venvs/ryu-env/ryu/ryu/lib/ovs/vsctl.py", line 522, in set_qos self.set_column(ovsrec_qos, 'other_config', value_json) File "/home/ryu/venvs/ryu-env/ryu/ryu/lib/ovs/vsctl.py", line 828, in set_column datum = self._pre_mod_column(ovsrec_row, column, value_json) File "/home/ryu/venvs/ryu-env/ryu/ryu/lib/ovs/vsctl.py", line 824, in _pre_mod_column return datum.to_python(ovs.db.idl._uuid_to_row) AttributeError: module 'ovs.db.idl' has no attribute '_uuid_to_row' Clearly, the ovs.db.idl module does not have an attribute _uuid_to_row. So it looks like the reference to "ovs.db.idl._uuid_to_row " at the end of the trace could be a bug in the Ryu code. What changes should I make to my script to implement QoS from the controller? It's probably worth noting that I have already tried to use ryu.app.rest_qos.py but that's not what I'm asking about here. Thanks, Celyn
_______________________________________________ Ryu-devel mailing list Ryu-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ryu-devel