Cc to ryu-devel.

On Tue, Apr 24, 2012 at 05:47:43AM -0000, Gary Kotton wrote:
> Hi,
> I found a number of problems with the Quantum agents. These happen when
> the Quantum server is down (for example the host running the server is
> rebooted).
> I would like to update the RYU agent code to deal with these problems.
> Are there uint tests that I can run to check this?
> Thanks

Thank you for testing! I'm afraid Ryu plugin has poor unit test for now.
It's the area that we have to address. (patches are very welcome, off course)

Does the attached patch help?
Although it might not apply cleanly because it's for the gre demo tree,
you get the idea.
If you're seeing different issue, can you please elaborate on it?

thanks,

commit a043d85c63d93d6812937c034640ebe892670c05
Author: Isaku Yamahata <[email protected]>
Date:   Tue Apr 10 11:56:07 2012 +0900

    plugins/ryu/agent: fix exception
    
    When starting up, the network is expected to be created by quantum server.
    However there is a race between quantum server startup and quantum agent
    startup. So have agent also make the network.
    
    Traceback (most recent call last):
      File "/opt/stack/quantum/quantum/plugins/ryu/agent/ryu_quantum_agent.py", 
line 540, in <module>
        main()
      File "/opt/stack/quantum/quantum/plugins/ryu/agent/ryu_quantum_agent.py", 
line 534, in main
        plugin.daemon_loop()
      File "/opt/stack/quantum/quantum/plugins/ryu/agent/ryu_quantum_agent.py", 
line 490, in daemon_loop
        self.gre_ports.update()
      File "/opt/stack/quantum/quantum/plugins/ryu/agent/ryu_quantum_agent.py", 
line 367, in update
        self._add_port(node)
      File "/opt/stack/quantum/quantum/plugins/ryu/agent/ryu_quantum_agent.py", 
line 344, in _add_port
        self.int_br.datapath_id, ofport)
      File "/opt/stack/ryu/ryu/app/client.py", line 91, in create_port
        self._do_request('POST', self.path_port % (network_id, dpid, port))
      File "/opt/stack/ryu/ryu/app/client.py", line 55, in _do_request
        res.getheaders(), res.read())
    httplib.HTTPException: (<httplib.HTTPResponse instance at 0x25e7a28>, 'code 
404 reason Resource not found', [('date', 'Tue, 10 Apr 2012 02:26:03 GMT'), 
('content-length', '466'), ('content-type', 'application/json')], 
'{"displayError": "The server does not have data for the request.", "error": 
"You submitted the following request.\\n\\n    POST 
/v1.0/networks/__NW_ID_VPORT_GRE__/00004e7f48e36243_\\n\\nThis request is not 
valid. The following paths were evaluated and failed\\nfor the indicated 
reason.\\n\\n    - /networks/{network-id}/{dpid}_{port-id}\\n      Invalid 
format: 00004e7f48e36243_\\n\\nYou can get a list of all valid requests with 
the following request.\\n\\n    GET /v1.0/doc"}')
    
    Signed-off-by: Isaku Yamahata <[email protected]>

diff --git a/quantum/plugins/ryu/agent/ryu_quantum_agent.py 
b/quantum/plugins/ryu/agent/ryu_quantum_agent.py
index a46ff2b..78b2d9e 100755
--- a/quantum/plugins/ryu/agent/ryu_quantum_agent.py
+++ b/quantum/plugins/ryu/agent/ryu_quantum_agent.py
@@ -321,6 +321,7 @@ class GREPortSet(object):
     def setup(self):
         _ovs_node_update(self.db, self.int_br.datapath_id, self.tunnel_ip)
 
+        self.api.update_network(rest_nw_id.NW_ID_VPORT_GRE)
         for port in self.int_br.get_gre_ports():
             try:
                 node = self.db.ovs_node.filter(
@@ -385,6 +386,7 @@ class VifPortSet(object):
         self.api.update_port(network_id, port.switch.datapath_id, port.ofport)
         if port.vif_mac is not None:
             # external port doesn't have mac address
+            self.api.update_network(network_id)
             self.api.update_mac(network_id, port.switch.datapath_id,
                                 port.ofport, port.vif_mac)
         else:


-- 
yamahata

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to