)]}'
{"doc/source/specs/openstack-rpc-from-odl.rst":[{"author":{"_account_id":13912,"name":"rajiv","email":"thenakliman@gmail.com","username":"rajiv.kumar"},"change_message_id":"d2dafc711e8de6148a07f925527090bb7e00cbc5","unresolved":false,"context_lines":[{"line_number":48,"context_line":"  | Neutron                                 |"},{"line_number":49,"context_line":"  |                                         |"},{"line_number":50,"context_line":"  |  neutron rpc interface                  |"},{"line_number":51,"context_line":"  |     ^   neutron callbacks.              |"},{"line_number":52,"context_line":"  |     |   neutron/api/handlers/*_rpc.py   |"},{"line_number":53,"context_line":"  |     |   class *Callback                 |"},{"line_number":54,"context_line":"  |     |                                   |"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df140735_29dd1914","line":51,"range":{"start_line":51,"start_character":11,"end_line":51,"end_character":30},"updated":"2017-05-30 06:27:55.000000000","message":"neutron callbacks \u003d\u003d\u003e\u003e neutron.callbacks","commit_id":"0aa15314366f8c5a3f501820068f3e591fbbeb97"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"d7731f588c4633af9d99a9d7d02cb9735b583e4e","unresolved":false,"context_lines":[{"line_number":48,"context_line":"  | Neutron                                 |"},{"line_number":49,"context_line":"  |                                         |"},{"line_number":50,"context_line":"  |  neutron rpc interface                  |"},{"line_number":51,"context_line":"  |     ^   neutron callbacks.              |"},{"line_number":52,"context_line":"  |     |   neutron/api/handlers/*_rpc.py   |"},{"line_number":53,"context_line":"  |     |   class *Callback                 |"},{"line_number":54,"context_line":"  |     |                                   |"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df140735_5b047c17","line":51,"range":{"start_line":51,"start_character":11,"end_line":51,"end_character":30},"in_reply_to":"df140735_29dd1914","updated":"2017-05-30 21:15:55.000000000","message":"Done","commit_id":"0aa15314366f8c5a3f501820068f3e591fbbeb97"},{"author":{"_account_id":13912,"name":"rajiv","email":"thenakliman@gmail.com","username":"rajiv.kumar"},"change_message_id":"d2dafc711e8de6148a07f925527090bb7e00cbc5","unresolved":false,"context_lines":[{"line_number":49,"context_line":"  |                                         |"},{"line_number":50,"context_line":"  |  neutron rpc interface                  |"},{"line_number":51,"context_line":"  |     ^   neutron callbacks.              |"},{"line_number":52,"context_line":"  |     |   neutron/api/handlers/*_rpc.py   |"},{"line_number":53,"context_line":"  |     |   class *Callback                 |"},{"line_number":54,"context_line":"  |     |                                   |"},{"line_number":55,"context_line":"  +-----|-----------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df140735_09e255d6","line":52,"range":{"start_line":52,"start_character":11,"end_line":52,"end_character":41},"updated":"2017-05-30 06:27:55.000000000","message":"neutron/api/handlers/* \u003d\u003d\u003e\u003e neutron/api/rpc/handlers/","commit_id":"0aa15314366f8c5a3f501820068f3e591fbbeb97"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"d7731f588c4633af9d99a9d7d02cb9735b583e4e","unresolved":false,"context_lines":[{"line_number":49,"context_line":"  |                                         |"},{"line_number":50,"context_line":"  |  neutron rpc interface                  |"},{"line_number":51,"context_line":"  |     ^   neutron callbacks.              |"},{"line_number":52,"context_line":"  |     |   neutron/api/handlers/*_rpc.py   |"},{"line_number":53,"context_line":"  |     |   class *Callback                 |"},{"line_number":54,"context_line":"  |     |                                   |"},{"line_number":55,"context_line":"  +-----|-----------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df140735_7b07401e","line":52,"range":{"start_line":52,"start_character":11,"end_line":52,"end_character":41},"in_reply_to":"df140735_09e255d6","updated":"2017-05-30 21:15:55.000000000","message":"Done","commit_id":"0aa15314366f8c5a3f501820068f3e591fbbeb97"},{"author":{"_account_id":13912,"name":"rajiv","email":"thenakliman@gmail.com","username":"rajiv.kumar"},"change_message_id":"d2dafc711e8de6148a07f925527090bb7e00cbc5","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"operation flow"},{"line_number":108,"context_line":"--------------"},{"line_number":109,"context_line":"#. start rpc call in actual component"},{"line_number":110,"context_line":"#.call adapter function"},{"line_number":111,"context_line":"#.adapter function assembles arguments and call neutron-call"},{"line_number":112,"context_line":"#.openstack RPC layer"},{"line_number":113,"context_line":"** assign message-id and assemble notification"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df140735_c939fd41","line":110,"range":{"start_line":109,"start_character":0,"end_line":110,"end_character":23},"updated":"2017-05-30 06:27:55.000000000","message":"Inconsistent spacing after \u0027#. \u0027","commit_id":"0aa15314366f8c5a3f501820068f3e591fbbeb97"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"d7731f588c4633af9d99a9d7d02cb9735b583e4e","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"operation flow"},{"line_number":108,"context_line":"--------------"},{"line_number":109,"context_line":"#. start rpc call in actual component"},{"line_number":110,"context_line":"#.call adapter function"},{"line_number":111,"context_line":"#.adapter function assembles arguments and call neutron-call"},{"line_number":112,"context_line":"#.openstack RPC layer"},{"line_number":113,"context_line":"** assign message-id and assemble notification"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df140735_f6080729","line":110,"range":{"start_line":109,"start_character":0,"end_line":110,"end_character":23},"in_reply_to":"df140735_c939fd41","updated":"2017-05-30 21:15:55.000000000","message":"Done","commit_id":"0aa15314366f8c5a3f501820068f3e591fbbeb97"},{"author":{"_account_id":13912,"name":"rajiv","email":"thenakliman@gmail.com","username":"rajiv.kumar"},"change_message_id":"d2dafc711e8de6148a07f925527090bb7e00cbc5","unresolved":false,"context_lines":[{"line_number":119,"context_line":"over websocket"},{"line_number":120,"context_line":"#.openstack RPC layer finds the caller with message-id and neutron-call returns"},{"line_number":121,"context_line":"#.returns rpc call"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"References"},{"line_number":125,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df140735_0f049514","line":122,"updated":"2017-05-30 06:27:55.000000000","message":"is there going to be any kind of subscription for notification from networking-odl like we have subscription for hostconfig update? if there is any process, can you please mention that as well?","commit_id":"0aa15314366f8c5a3f501820068f3e591fbbeb97"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"d7731f588c4633af9d99a9d7d02cb9735b583e4e","unresolved":false,"context_lines":[{"line_number":119,"context_line":"over websocket"},{"line_number":120,"context_line":"#.openstack RPC layer finds the caller with message-id and neutron-call returns"},{"line_number":121,"context_line":"#.returns rpc call"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"References"},{"line_number":125,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df140735_9638abd3","line":122,"in_reply_to":"df140735_0f049514","updated":"2017-05-30 21:15:55.000000000","message":"https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Restconf:Change_event_notification_subscription\n\nwill be added to the updated version.","commit_id":"0aa15314366f8c5a3f501820068f3e591fbbeb97"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"a54a038cd9bf9fbe1d7f1406881c8c5ad8bdf061","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/networking-odl/+spec/openstack-rpc-from-odl"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Allow ODL(as client) to call RPC to networking-odl."},{"line_number":14,"context_line":"ODL netvirt openstack supports DHCP server functionality and it wants to"},{"line_number":15,"context_line":"call create_dhcp_port for ip address for DHCP server similar to neutron"},{"line_number":16,"context_line":"dhcp agent."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_90830acd","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":21},"updated":"2017-05-31 05:11:06.000000000","message":"prefer keeping it clear saying just ODL netvirt as it is separate from openstack, and would also be worth mentioning version of netvirt.","commit_id":"42c7e9db2f9af5d58c2b08fe75d75c7f84758248"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"68b585f30d827a840b316b9becd127e1a8faa47e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/networking-odl/+spec/openstack-rpc-from-odl"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Allow ODL(as client) to call RPC to networking-odl."},{"line_number":14,"context_line":"ODL netvirt openstack supports DHCP server functionality and it wants to"},{"line_number":15,"context_line":"call create_dhcp_port for ip address for DHCP server similar to neutron"},{"line_number":16,"context_line":"dhcp agent."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f231b9d_d34e6bc0","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":21},"in_reply_to":"df140735_90830acd","updated":"2017-06-10 00:25:45.000000000","message":"Done.","commit_id":"42c7e9db2f9af5d58c2b08fe75d75c7f84758248"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"a54a038cd9bf9fbe1d7f1406881c8c5ad8bdf061","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Problem Description"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Now ODL openstack service provider is supporting more and more functionality."},{"line_number":23,"context_line":"and it\u0027s starting to require closer communication between neutron server"},{"line_number":24,"context_line":"like neutron agent. Missing part is openstack RPC from ODL (as RPC client)"},{"line_number":25,"context_line":"to neutorn server(as RPC server)."}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_5056925e","line":22,"range":{"start_line":22,"start_character":4,"end_line":22,"end_character":18},"updated":"2017-05-31 05:11:06.000000000","message":"either \u0027ODL and OpenStack\u0027 or just \u0027ODL\u0027, \u0027ODL OpenStack\u0027 sounds confusing, also consider addinf references to service provider if any.","commit_id":"42c7e9db2f9af5d58c2b08fe75d75c7f84758248"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"68b585f30d827a840b316b9becd127e1a8faa47e","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Problem Description"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Now ODL openstack service provider is supporting more and more functionality."},{"line_number":23,"context_line":"and it\u0027s starting to require closer communication between neutron server"},{"line_number":24,"context_line":"like neutron agent. Missing part is openstack RPC from ODL (as RPC client)"},{"line_number":25,"context_line":"to neutorn server(as RPC server)."}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f231b9d_53d01bca","line":22,"range":{"start_line":22,"start_character":4,"end_line":22,"end_character":18},"in_reply_to":"df140735_5056925e","updated":"2017-06-10 00:25:45.000000000","message":"Done","commit_id":"42c7e9db2f9af5d58c2b08fe75d75c7f84758248"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"a54a038cd9bf9fbe1d7f1406881c8c5ad8bdf061","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Use case to raise this spec is DHCP server."},{"line_number":28,"context_line":"https://git.opendaylight.org/gerrit/#/c/52298/"},{"line_number":29,"context_line":"netvirt openstack supports DHCP server and it needs dedicated IP address"},{"line_number":30,"context_line":"for DHCP server per network and wants to call create_dhcp_port() as"},{"line_number":31,"context_line":"neutron dhcp agent does."},{"line_number":32,"context_line":"In the case of neutron dhcp agent(or any neutorn agent) is allowed"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_b0ca8e17","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":18},"updated":"2017-05-31 05:11:06.000000000","message":"Should be very specific about netvirt version.","commit_id":"42c7e9db2f9af5d58c2b08fe75d75c7f84758248"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"68b585f30d827a840b316b9becd127e1a8faa47e","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Use case to raise this spec is DHCP server."},{"line_number":28,"context_line":"https://git.opendaylight.org/gerrit/#/c/52298/"},{"line_number":29,"context_line":"netvirt openstack supports DHCP server and it needs dedicated IP address"},{"line_number":30,"context_line":"for DHCP server per network and wants to call create_dhcp_port() as"},{"line_number":31,"context_line":"neutron dhcp agent does."},{"line_number":32,"context_line":"In the case of neutron dhcp agent(or any neutorn agent) is allowed"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f231b9d_d3e30ba4","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":18},"in_reply_to":"df140735_b0ca8e17","updated":"2017-06-10 00:25:45.000000000","message":"new netvirt suppors dhcp server from the begining. So we don\u0027t have to mention its version.","commit_id":"42c7e9db2f9af5d58c2b08fe75d75c7f84758248"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"a54a038cd9bf9fbe1d7f1406881c8c5ad8bdf061","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  |     |  class *Callback                  |"},{"line_number":73,"context_line":"  |     |                                   |"},{"line_number":74,"context_line":"  +-----|-----------------------------------+"},{"line_number":75,"context_line":"  |     |                    networking-odl |"},{"line_number":76,"context_line":"  |     |                                   |"},{"line_number":77,"context_line":"  |     | RPC call                          |"},{"line_number":78,"context_line":"  |     | multiplex based on topic          |"},{"line_number":79,"context_line":"  |     |                                   |"},{"line_number":80,"context_line":"  | RPC dispatcher(@)                       |"},{"line_number":81,"context_line":"  |          subclass of oslo.messaging     | networking-odl connects to ODL"},{"line_number":82,"context_line":"  |          or something similar           | and establishes websocket."},{"line_number":83,"context_line":"  |          to call neutron RPC callbacks  | RPC call/return is send over"},{"line_number":84,"context_line":"  |                       ^         |       | this websocket."},{"line_number":85,"context_line":"  |                       |         |       | If no neutron server connects"},{"line_number":86,"context_line":"  +-----------------------|---------|-------+ to ODL, the message is lost."},{"line_number":87,"context_line":"                          |         |"},{"line_number":88,"context_line":"                          |         |"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_10813a90","line":85,"range":{"start_line":75,"start_character":16,"end_line":85,"end_character":44},"updated":"2017-05-31 05:11:06.000000000","message":"If I am understanding correctly shouldn\u0027t websocket client instance be added in networking-odl box, because it will be initiated there and then will talk to odl side ?","commit_id":"42c7e9db2f9af5d58c2b08fe75d75c7f84758248"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"68b585f30d827a840b316b9becd127e1a8faa47e","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  |     |  class *Callback                  |"},{"line_number":73,"context_line":"  |     |                                   |"},{"line_number":74,"context_line":"  +-----|-----------------------------------+"},{"line_number":75,"context_line":"  |     |                    networking-odl |"},{"line_number":76,"context_line":"  |     |                                   |"},{"line_number":77,"context_line":"  |     | RPC call                          |"},{"line_number":78,"context_line":"  |     | multiplex based on topic          |"},{"line_number":79,"context_line":"  |     |                                   |"},{"line_number":80,"context_line":"  | RPC dispatcher(@)                       |"},{"line_number":81,"context_line":"  |          subclass of oslo.messaging     | networking-odl connects to ODL"},{"line_number":82,"context_line":"  |          or something similar           | and establishes websocket."},{"line_number":83,"context_line":"  |          to call neutron RPC callbacks  | RPC call/return is send over"},{"line_number":84,"context_line":"  |                       ^         |       | this websocket."},{"line_number":85,"context_line":"  |                       |         |       | If no neutron server connects"},{"line_number":86,"context_line":"  +-----------------------|---------|-------+ to ODL, the message is lost."},{"line_number":87,"context_line":"                          |         |"},{"line_number":88,"context_line":"                          |         |"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f231b9d_33eebf88","line":85,"range":{"start_line":75,"start_character":16,"end_line":85,"end_character":44},"in_reply_to":"df140735_10813a90","updated":"2017-06-10 00:25:45.000000000","message":"Done","commit_id":"42c7e9db2f9af5d58c2b08fe75d75c7f84758248"},{"author":{"_account_id":20208,"name":"Ritu Sood","email":"ritu.sood@intel.com","username":"rsood"},"change_message_id":"66c669a5bf331a2dd5377805073291d895e1ed47","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"operation flow"},{"line_number":129,"context_line":"--------------"},{"line_number":130,"context_line":"#. networking-odl connects to ODL netconf and creates websockets ad"},{"line_number":131,"context_line":"   initialization on startup"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"#. start RPC call in actual component"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_81006269","line":130,"range":{"start_line":130,"start_character":65,"end_line":130,"end_character":67},"updated":"2017-05-30 23:26:17.000000000","message":"typo","commit_id":"42c7e9db2f9af5d58c2b08fe75d75c7f84758248"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"68b585f30d827a840b316b9becd127e1a8faa47e","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"operation flow"},{"line_number":129,"context_line":"--------------"},{"line_number":130,"context_line":"#. networking-odl connects to ODL netconf and creates websockets ad"},{"line_number":131,"context_line":"   initialization on startup"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"#. start RPC call in actual component"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f231b9d_138863c4","line":130,"range":{"start_line":130,"start_character":65,"end_line":130,"end_character":67},"in_reply_to":"df140735_81006269","updated":"2017-06-10 00:25:45.000000000","message":"Done","commit_id":"42c7e9db2f9af5d58c2b08fe75d75c7f84758248"},{"author":{"_account_id":13912,"name":"rajiv","email":"thenakliman@gmail.com","username":"rajiv.kumar"},"change_message_id":"f47c5e4d7b69d277b4a9042b607bdcc21f41aa8f","unresolved":false,"context_lines":[{"line_number":128,"context_line":"operation flow"},{"line_number":129,"context_line":"--------------"},{"line_number":130,"context_line":"#. networking-odl connects to ODL netconf and creates websockets ad"},{"line_number":131,"context_line":"   initialization on startup"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"#. start RPC call in actual component"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_109ffa5f","line":131,"range":{"start_line":131,"start_character":1,"end_line":131,"end_character":28},"updated":"2017-05-31 04:37:34.000000000","message":"Here if initialization means subscription then can you please write it explicitly. And provide reference here as you have provided in previous replies.","commit_id":"42c7e9db2f9af5d58c2b08fe75d75c7f84758248"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"68b585f30d827a840b316b9becd127e1a8faa47e","unresolved":false,"context_lines":[{"line_number":128,"context_line":"operation flow"},{"line_number":129,"context_line":"--------------"},{"line_number":130,"context_line":"#. networking-odl connects to ODL netconf and creates websockets ad"},{"line_number":131,"context_line":"   initialization on startup"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"#. start RPC call in actual component"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f231b9d_53b7fb87","line":131,"range":{"start_line":131,"start_character":1,"end_line":131,"end_character":28},"in_reply_to":"df140735_109ffa5f","updated":"2017-06-10 00:25:45.000000000","message":"Done","commit_id":"42c7e9db2f9af5d58c2b08fe75d75c7f84758248"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"a54a038cd9bf9fbe1d7f1406881c8c5ad8bdf061","unresolved":false,"context_lines":[{"line_number":159,"context_line":"- ODL notification is local to ODL instances."},{"line_number":160,"context_line":"- In ODL neutron northbound, RPC layer establishes ownership(or something)"},{"line_number":161,"context_line":"  there can be multiple instances of networking-odl and OpenDaylight. So"},{"line_number":162,"context_line":"  there can be mulitple websockets between them. It needs to be guaranteed"},{"line_number":163,"context_line":"  that at most one message(RPC request) will be sent over websockets from"},{"line_number":164,"context_line":"  ODL to networking-odl."},{"line_number":165,"context_line":"- If there is no webspockets(or the connection can be lost at any point of"},{"line_number":166,"context_line":"  processing), message will be lost. In that case, RPC requests will result"},{"line_number":167,"context_line":"  in timeout error. RPC caller doesn\u0027t know if the request is processed or not"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_70175653","line":164,"range":{"start_line":162,"start_character":49,"end_line":164,"end_character":24},"updated":"2017-05-31 05:11:06.000000000","message":"should it be one request/operation ? , I mean for each dhcp request there should be one rpc request no matter how many instances of networking-odl are running, but if there are multiple dhcp request for different segments, then are multiple rpc requests allowed (exactly one dhcp request).?","commit_id":"42c7e9db2f9af5d58c2b08fe75d75c7f84758248"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"68b585f30d827a840b316b9becd127e1a8faa47e","unresolved":false,"context_lines":[{"line_number":159,"context_line":"- ODL notification is local to ODL instances."},{"line_number":160,"context_line":"- In ODL neutron northbound, RPC layer establishes ownership(or something)"},{"line_number":161,"context_line":"  there can be multiple instances of networking-odl and OpenDaylight. So"},{"line_number":162,"context_line":"  there can be mulitple websockets between them. It needs to be guaranteed"},{"line_number":163,"context_line":"  that at most one message(RPC request) will be sent over websockets from"},{"line_number":164,"context_line":"  ODL to networking-odl."},{"line_number":165,"context_line":"- If there is no webspockets(or the connection can be lost at any point of"},{"line_number":166,"context_line":"  processing), message will be lost. In that case, RPC requests will result"},{"line_number":167,"context_line":"  in timeout error. RPC caller doesn\u0027t know if the request is processed or not"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f231b9d_93623316","line":164,"range":{"start_line":162,"start_character":49,"end_line":164,"end_character":24},"in_reply_to":"df140735_70175653","updated":"2017-06-10 00:25:45.000000000","message":"Yes exactly. You\u0027re understanding the problem.","commit_id":"42c7e9db2f9af5d58c2b08fe75d75c7f84758248"},{"author":{"_account_id":20208,"name":"Ritu Sood","email":"ritu.sood@intel.com","username":"rsood"},"change_message_id":"66c669a5bf331a2dd5377805073291d895e1ed47","unresolved":false,"context_lines":[{"line_number":162,"context_line":"  there can be mulitple websockets between them. It needs to be guaranteed"},{"line_number":163,"context_line":"  that at most one message(RPC request) will be sent over websockets from"},{"line_number":164,"context_line":"  ODL to networking-odl."},{"line_number":165,"context_line":"- If there is no webspockets(or the connection can be lost at any point of"},{"line_number":166,"context_line":"  processing), message will be lost. In that case, RPC requests will result"},{"line_number":167,"context_line":"  in timeout error. RPC caller doesn\u0027t know if the request is processed or not"},{"line_number":168,"context_line":"  and its result. In this case, RPC caller usually re-send the request"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_41fa4a75","line":165,"range":{"start_line":165,"start_character":17,"end_line":165,"end_character":28},"updated":"2017-05-30 23:26:17.000000000","message":"typo","commit_id":"42c7e9db2f9af5d58c2b08fe75d75c7f84758248"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"68b585f30d827a840b316b9becd127e1a8faa47e","unresolved":false,"context_lines":[{"line_number":162,"context_line":"  there can be mulitple websockets between them. It needs to be guaranteed"},{"line_number":163,"context_line":"  that at most one message(RPC request) will be sent over websockets from"},{"line_number":164,"context_line":"  ODL to networking-odl."},{"line_number":165,"context_line":"- If there is no webspockets(or the connection can be lost at any point of"},{"line_number":166,"context_line":"  processing), message will be lost. In that case, RPC requests will result"},{"line_number":167,"context_line":"  in timeout error. RPC caller doesn\u0027t know if the request is processed or not"},{"line_number":168,"context_line":"  and its result. In this case, RPC caller usually re-send the request"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f231b9d_33bc7f68","line":165,"range":{"start_line":165,"start_character":17,"end_line":165,"end_character":28},"in_reply_to":"df140735_41fa4a75","updated":"2017-06-10 00:25:45.000000000","message":"Done","commit_id":"42c7e9db2f9af5d58c2b08fe75d75c7f84758248"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"a54a038cd9bf9fbe1d7f1406881c8c5ad8bdf061","unresolved":false,"context_lines":[{"line_number":161,"context_line":"  there can be multiple instances of networking-odl and OpenDaylight. So"},{"line_number":162,"context_line":"  there can be mulitple websockets between them. It needs to be guaranteed"},{"line_number":163,"context_line":"  that at most one message(RPC request) will be sent over websockets from"},{"line_number":164,"context_line":"  ODL to networking-odl."},{"line_number":165,"context_line":"- If there is no webspockets(or the connection can be lost at any point of"},{"line_number":166,"context_line":"  processing), message will be lost. In that case, RPC requests will result"},{"line_number":167,"context_line":"  in timeout error. RPC caller doesn\u0027t know if the request is processed or not"},{"line_number":168,"context_line":"  and its result. In this case, RPC caller usually re-send the request"},{"line_number":169,"context_line":"  by timeout error or polling."},{"line_number":170,"context_line":"- RPC methods defined in Neutron server are idempotent in some sense or safe"},{"line_number":171,"context_line":"  to call multiple times."},{"line_number":172,"context_line":"- RPC caller may want to use ODL ownership service or something else to avoid"},{"line_number":173,"context_line":"  race condition."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"References"},{"line_number":177,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"https://wiki.openstack.org/wiki/Oslo/Messaging"},{"line_number":180,"context_line":"https://docs.openstack.org/developer/oslo.messaging/"},{"line_number":181,"context_line":"https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Restconf:Change_event_notification_subscription"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_fb17c744","line":178,"range":{"start_line":164,"start_character":24,"end_line":178,"end_character":0},"updated":"2017-05-31 05:11:06.000000000","message":"might want to tag all the references in the text above using [1], [2] etc.","commit_id":"42c7e9db2f9af5d58c2b08fe75d75c7f84758248"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"05191695dbf52bf8c2a76dca034f0b601f81ad5c","unresolved":false,"context_lines":[{"line_number":22,"context_line":"Now ODL is supporting more and more functionality of openstack."},{"line_number":23,"context_line":"and it\u0027s starting to require closer communication between neutron server"},{"line_number":24,"context_line":"like neutron agent. Missing part is openstack RPC from ODL (as RPC client)"},{"line_number":25,"context_line":"to neutorn server(as RPC server)."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Use case to raise this spec is DHCP server."},{"line_number":28,"context_line":"https://git.opendaylight.org/gerrit/#/c/52298/"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_51601333","line":25,"updated":"2017-06-10 04:54:30.000000000","message":"neutron server","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4ccf0f18682b6c22054ac8bd54802bf40e09f01d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"Now ODL is supporting more and more functionality of openstack."},{"line_number":23,"context_line":"and it\u0027s starting to require closer communication between neutron server"},{"line_number":24,"context_line":"like neutron agent. Missing part is openstack RPC from ODL (as RPC client)"},{"line_number":25,"context_line":"to neutorn server(as RPC server)."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Use case to raise this spec is DHCP server."},{"line_number":28,"context_line":"https://git.opendaylight.org/gerrit/#/c/52298/"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_eea9c78f","line":25,"in_reply_to":"7f231b9d_51601333","updated":"2017-06-16 08:13:49.000000000","message":"Done","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"72715971201488ccc942d4a591bbbe0061a2c1f9","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Proposed Change"},{"line_number":58,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":59,"context_line":"Introduce framework to allow ODL to call RPC to neutron."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"  (@): newly to be implemented"},{"line_number":62,"context_line":"  (#): new yang model https://git.opendaylight.org/gerrit/#/c/53242/"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_3289eb74","line":59,"range":{"start_line":59,"start_character":36,"end_line":59,"end_character":44},"updated":"2017-06-12 17:35:12.000000000","message":"`do a RPC` as call is in (remote procedure call)","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4ccf0f18682b6c22054ac8bd54802bf40e09f01d","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Proposed Change"},{"line_number":58,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":59,"context_line":"Introduce framework to allow ODL to call RPC to neutron."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"  (@): newly to be implemented"},{"line_number":62,"context_line":"  (#): new yang model https://git.opendaylight.org/gerrit/#/c/53242/"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_2ee0dfcc","line":59,"range":{"start_line":59,"start_character":36,"end_line":59,"end_character":44},"in_reply_to":"7f231b9d_3289eb74","updated":"2017-06-16 08:13:49.000000000","message":"Done","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"05191695dbf52bf8c2a76dca034f0b601f81ad5c","unresolved":false,"context_lines":[{"line_number":82,"context_line":"  |          or something similar           | and establishes websocket."},{"line_number":83,"context_line":"  |          to call neutron RPC callbacks  | RPC call/return is send over"},{"line_number":84,"context_line":"  |                   +------------------+  | this websocket."},{"line_number":85,"context_line":"  |                   | websocket clinet |  | If no neutron server connects"},{"line_number":86,"context_line":"  |                   +------------------+  | to ODL, the message is lost."},{"line_number":87,"context_line":"  |                       ^         |       |"},{"line_number":88,"context_line":"  |                       |         |       |"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_f14effbf","line":85,"updated":"2017-06-10 04:54:30.000000000","message":"websocket client","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4ccf0f18682b6c22054ac8bd54802bf40e09f01d","unresolved":false,"context_lines":[{"line_number":82,"context_line":"  |          or something similar           | and establishes websocket."},{"line_number":83,"context_line":"  |          to call neutron RPC callbacks  | RPC call/return is send over"},{"line_number":84,"context_line":"  |                   +------------------+  | this websocket."},{"line_number":85,"context_line":"  |                   | websocket clinet |  | If no neutron server connects"},{"line_number":86,"context_line":"  |                   +------------------+  | to ODL, the message is lost."},{"line_number":87,"context_line":"  |                       ^         |       |"},{"line_number":88,"context_line":"  |                       |         |       |"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_cee84bb4","line":85,"in_reply_to":"7f231b9d_f14effbf","updated":"2017-06-16 08:13:49.000000000","message":"Done","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"05191695dbf52bf8c2a76dca034f0b601f81ad5c","unresolved":false,"context_lines":[{"line_number":83,"context_line":"  |          to call neutron RPC callbacks  | RPC call/return is send over"},{"line_number":84,"context_line":"  |                   +------------------+  | this websocket."},{"line_number":85,"context_line":"  |                   | websocket clinet |  | If no neutron server connects"},{"line_number":86,"context_line":"  |                   +------------------+  | to ODL, the message is lost."},{"line_number":87,"context_line":"  |                       ^         |       |"},{"line_number":88,"context_line":"  |                       |         |       |"},{"line_number":89,"context_line":"  |                       |         |       |"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_51eed388","line":86,"updated":"2017-06-10 04:54:30.000000000","message":"what is the situation when ODL controller received a subnet create, but when it attempts to send the create_port rpc to networking-odl, it realizes that there is not connection?\n\nWould the ODL Controller keep its end open and immediately send the RPC of create_port() as soon as the neutron-server websocket connects up agin?","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4ccf0f18682b6c22054ac8bd54802bf40e09f01d","unresolved":false,"context_lines":[{"line_number":83,"context_line":"  |          to call neutron RPC callbacks  | RPC call/return is send over"},{"line_number":84,"context_line":"  |                   +------------------+  | this websocket."},{"line_number":85,"context_line":"  |                   | websocket clinet |  | If no neutron server connects"},{"line_number":86,"context_line":"  |                   +------------------+  | to ODL, the message is lost."},{"line_number":87,"context_line":"  |                       ^         |       |"},{"line_number":88,"context_line":"  |                       |         |       |"},{"line_number":89,"context_line":"  |                       |         |       |"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_0e31a35a","line":86,"in_reply_to":"7f231b9d_51eed388","updated":"2017-06-16 08:13:49.000000000","message":"The message is lost as written in caveats section.\nand then in odl the caller will results in timeout error.\nUsually inside ODL the caller would have polling loop like dhcp-agent.","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"05191695dbf52bf8c2a76dca034f0b601f81ad5c","unresolved":false,"context_lines":[{"line_number":103,"context_line":"  |                       |         |       |"},{"line_number":104,"context_line":"  +-----------------------|---------|-------+"},{"line_number":105,"context_line":"  |                       |         |       |"},{"line_number":106,"context_line":"  | yang model:(#)        |         V       | Notification is local to ODL."},{"line_number":107,"context_line":"  |   notification: neutron-message-send    | So trick would be needed to"},{"line_number":108,"context_line":"  |   RPC: neutron-message-reply    |       | guarantee that any ODL instance"},{"line_number":109,"context_line":"  |                       ^         |       | can call RPC request."}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_11005b34","line":106,"updated":"2017-06-10 04:54:30.000000000","message":"can you please explain what \u0027local\u0027 here implies?","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4ccf0f18682b6c22054ac8bd54802bf40e09f01d","unresolved":false,"context_lines":[{"line_number":103,"context_line":"  |                       |         |       |"},{"line_number":104,"context_line":"  +-----------------------|---------|-------+"},{"line_number":105,"context_line":"  |                       |         |       |"},{"line_number":106,"context_line":"  | yang model:(#)        |         V       | Notification is local to ODL."},{"line_number":107,"context_line":"  |   notification: neutron-message-send    | So trick would be needed to"},{"line_number":108,"context_line":"  |   RPC: neutron-message-reply    |       | guarantee that any ODL instance"},{"line_number":109,"context_line":"  |                       ^         |       | can call RPC request."}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_4e42fbac","line":106,"in_reply_to":"7f231b9d_11005b34","updated":"2017-06-16 08:13:49.000000000","message":"It doesn\u0027t sent over clustered ODL.\nonly within JVM instance.\nadded more.","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"72715971201488ccc942d4a591bbbe0061a2c1f9","unresolved":false,"context_lines":[{"line_number":106,"context_line":"  | yang model:(#)        |         V       | Notification is local to ODL."},{"line_number":107,"context_line":"  |   notification: neutron-message-send    | So trick would be needed to"},{"line_number":108,"context_line":"  |   RPC: neutron-message-reply    |       | guarantee that any ODL instance"},{"line_number":109,"context_line":"  |                       ^         |       | can call RPC request."},{"line_number":110,"context_line":"  |                       |         |       | There can be multiple websockets."},{"line_number":111,"context_line":"  |                       |         |       | (networking-odl \u003c-\u003e ODL)"},{"line_number":112,"context_line":"  +-----------------------|---------|-------+"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_b20f3b2d","line":109,"range":{"start_line":109,"start_character":46,"end_line":109,"end_character":54},"updated":"2017-06-12 17:35:12.000000000","message":"`can do a`","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4ccf0f18682b6c22054ac8bd54802bf40e09f01d","unresolved":false,"context_lines":[{"line_number":106,"context_line":"  | yang model:(#)        |         V       | Notification is local to ODL."},{"line_number":107,"context_line":"  |   notification: neutron-message-send    | So trick would be needed to"},{"line_number":108,"context_line":"  |   RPC: neutron-message-reply    |       | guarantee that any ODL instance"},{"line_number":109,"context_line":"  |                       ^         |       | can call RPC request."},{"line_number":110,"context_line":"  |                       |         |       | There can be multiple websockets."},{"line_number":111,"context_line":"  |                       |         |       | (networking-odl \u003c-\u003e ODL)"},{"line_number":112,"context_line":"  +-----------------------|---------|-------+"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_ce0f2b86","line":109,"range":{"start_line":109,"start_character":46,"end_line":109,"end_character":54},"in_reply_to":"7f231b9d_b20f3b2d","updated":"2017-06-16 08:13:49.000000000","message":"Done","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"05191695dbf52bf8c2a76dca034f0b601f81ad5c","unresolved":false,"context_lines":[{"line_number":108,"context_line":"  |   RPC: neutron-message-reply    |       | guarantee that any ODL instance"},{"line_number":109,"context_line":"  |                       ^         |       | can call RPC request."},{"line_number":110,"context_line":"  |                       |         |       | There can be multiple websockets."},{"line_number":111,"context_line":"  |                       |         |       | (networking-odl \u003c-\u003e ODL)"},{"line_number":112,"context_line":"  +-----------------------|---------|-------+"},{"line_number":113,"context_line":"  |                       |         |       |"},{"line_number":114,"context_line":"  | openstack RPC layer(@)|         |       |"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_91990b21","line":111,"updated":"2017-06-10 04:54:30.000000000","message":"Will there be one websocket opened per neutron-server process in the openstack controller cluster towards ODL?","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"72715971201488ccc942d4a591bbbe0061a2c1f9","unresolved":false,"context_lines":[{"line_number":108,"context_line":"  |   RPC: neutron-message-reply    |       | guarantee that any ODL instance"},{"line_number":109,"context_line":"  |                       ^         |       | can call RPC request."},{"line_number":110,"context_line":"  |                       |         |       | There can be multiple websockets."},{"line_number":111,"context_line":"  |                       |         |       | (networking-odl \u003c-\u003e ODL)"},{"line_number":112,"context_line":"  +-----------------------|---------|-------+"},{"line_number":113,"context_line":"  |                       |         |       |"},{"line_number":114,"context_line":"  | openstack RPC layer(@)|         |       |"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_924aff52","line":111,"in_reply_to":"7f231b9d_91990b21","updated":"2017-06-12 17:35:12.000000000","message":"one websocket per request or neutron-qvc ?","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4ccf0f18682b6c22054ac8bd54802bf40e09f01d","unresolved":false,"context_lines":[{"line_number":108,"context_line":"  |   RPC: neutron-message-reply    |       | guarantee that any ODL instance"},{"line_number":109,"context_line":"  |                       ^         |       | can call RPC request."},{"line_number":110,"context_line":"  |                       |         |       | There can be multiple websockets."},{"line_number":111,"context_line":"  |                       |         |       | (networking-odl \u003c-\u003e ODL)"},{"line_number":112,"context_line":"  +-----------------------|---------|-------+"},{"line_number":113,"context_line":"  |                       |         |       |"},{"line_number":114,"context_line":"  | openstack RPC layer(@)|         |       |"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_8ed813ef","line":111,"in_reply_to":"7f231b9d_924aff52","updated":"2017-06-16 08:13:49.000000000","message":"one websocket per neutron server instance.\nIf there are multiple instances of neutron servers, there can be many websocket connections.","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"72715971201488ccc942d4a591bbbe0061a2c1f9","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"operation flow"},{"line_number":133,"context_line":"--------------"},{"line_number":134,"context_line":"#. networking-odl connects to ODL netconf and creates websockets on startup"},{"line_number":135,"context_line":"   [restconf.notification]_"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"#. start RPC call in actual component"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_b294db8c","line":134,"range":{"start_line":134,"start_character":3,"end_line":134,"end_character":75},"updated":"2017-06-12 17:35:12.000000000","message":"so according to spec a websocket for this communication will be initiated on mechanism init right ? its not optional ?","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4ccf0f18682b6c22054ac8bd54802bf40e09f01d","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"operation flow"},{"line_number":133,"context_line":"--------------"},{"line_number":134,"context_line":"#. networking-odl connects to ODL netconf and creates websockets on startup"},{"line_number":135,"context_line":"   [restconf.notification]_"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"#. start RPC call in actual component"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_0ef64364","line":134,"range":{"start_line":134,"start_character":3,"end_line":134,"end_character":75},"in_reply_to":"7f231b9d_b294db8c","updated":"2017-06-16 08:13:49.000000000","message":"Yes.\nI don\u0027t see any reason it to be optional.","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"05191695dbf52bf8c2a76dca034f0b601f81ad5c","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"#. start RPC call in actual component"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"#. call adapter function"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"#. adapter function assembles arguments and call neutron-call"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_d18e63cf","line":139,"updated":"2017-06-10 04:54:30.000000000","message":"Will this adapter be a common module in ODL , and can be used by all ODL services to start invocation of RPC towards openstack neutron?  \n\nMore specifically, is this adapter will be ODL service/ODL resource agnostic?","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4ccf0f18682b6c22054ac8bd54802bf40e09f01d","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"#. start RPC call in actual component"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"#. call adapter function"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"#. adapter function assembles arguments and call neutron-call"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_6efc973d","line":139,"in_reply_to":"7f231b9d_d18e63cf","updated":"2017-06-16 08:13:49.000000000","message":"Yes. the layer(@) above.","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"72715971201488ccc942d4a591bbbe0061a2c1f9","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"#. call adapter function"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"#. adapter function assembles arguments and call neutron-call"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"#. openstack RPC layer"},{"line_number":144,"context_line":"** assign message-id and assemble notification"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_32d7ab4e","line":141,"range":{"start_line":141,"start_character":57,"end_line":141,"end_character":61},"updated":"2017-06-12 17:35:12.000000000","message":"server?","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4ccf0f18682b6c22054ac8bd54802bf40e09f01d","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"#. call adapter function"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"#. adapter function assembles arguments and call neutron-call"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"#. openstack RPC layer"},{"line_number":144,"context_line":"** assign message-id and assemble notification"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_cea04b45","line":141,"range":{"start_line":141,"start_character":57,"end_line":141,"end_character":61},"in_reply_to":"7f231b9d_32d7ab4e","updated":"2017-06-16 08:13:49.000000000","message":"No. yang rpc neutron-call","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"05191695dbf52bf8c2a76dca034f0b601f81ad5c","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"caveats"},{"line_number":162,"context_line":"-------"},{"line_number":163,"context_line":"- ODL notification is local to ODL instances."},{"line_number":164,"context_line":"- In ODL neutron northbound, RPC layer establishes ownership(or something)"},{"line_number":165,"context_line":"  there can be multiple instances of networking-odl and OpenDaylight. So"},{"line_number":166,"context_line":"  there can be mulitple websockets between them. It needs to be guaranteed"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_91c22be9","line":163,"updated":"2017-06-10 04:54:30.000000000","message":"pleas clarify this one","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4ccf0f18682b6c22054ac8bd54802bf40e09f01d","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"caveats"},{"line_number":162,"context_line":"-------"},{"line_number":163,"context_line":"- ODL notification is local to ODL instances."},{"line_number":164,"context_line":"- In ODL neutron northbound, RPC layer establishes ownership(or something)"},{"line_number":165,"context_line":"  there can be multiple instances of networking-odl and OpenDaylight. So"},{"line_number":166,"context_line":"  there can be mulitple websockets between them. It needs to be guaranteed"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_8e7493d0","line":163,"in_reply_to":"7f231b9d_91c22be9","updated":"2017-06-16 08:13:49.000000000","message":"Done","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"05191695dbf52bf8c2a76dca034f0b601f81ad5c","unresolved":false,"context_lines":[{"line_number":165,"context_line":"  there can be multiple instances of networking-odl and OpenDaylight. So"},{"line_number":166,"context_line":"  there can be mulitple websockets between them. It needs to be guaranteed"},{"line_number":167,"context_line":"  that at most one message(RPC request) will be sent over websockets from"},{"line_number":168,"context_line":"  ODL to networking-odl."},{"line_number":169,"context_line":"  If RPC is requested by someone in ODL, only single request is sent"},{"line_number":170,"context_line":"  over to networking-odl no matter how many websocket connections between"},{"line_number":171,"context_line":"  many instances of networking-odl and ODL for at-most-once semantics."}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_71b78f88","line":168,"updated":"2017-06-10 04:54:30.000000000","message":"\u0027the atmost one message will be sent\u0027 requirement put here is for serializing RPC invocations from ODL Controller to Neutron Server?","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4ccf0f18682b6c22054ac8bd54802bf40e09f01d","unresolved":false,"context_lines":[{"line_number":165,"context_line":"  there can be multiple instances of networking-odl and OpenDaylight. So"},{"line_number":166,"context_line":"  there can be mulitple websockets between them. It needs to be guaranteed"},{"line_number":167,"context_line":"  that at most one message(RPC request) will be sent over websockets from"},{"line_number":168,"context_line":"  ODL to networking-odl."},{"line_number":169,"context_line":"  If RPC is requested by someone in ODL, only single request is sent"},{"line_number":170,"context_line":"  over to networking-odl no matter how many websocket connections between"},{"line_number":171,"context_line":"  many instances of networking-odl and ODL for at-most-once semantics."}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_ee39c7f1","line":168,"in_reply_to":"7f231b9d_71b78f88","updated":"2017-06-16 08:13:49.000000000","message":"It\u0027s because message over websocket is lossy.\nand also to align with the semantics of original/native openstack RPC.","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"05191695dbf52bf8c2a76dca034f0b601f81ad5c","unresolved":false,"context_lines":[{"line_number":169,"context_line":"  If RPC is requested by someone in ODL, only single request is sent"},{"line_number":170,"context_line":"  over to networking-odl no matter how many websocket connections between"},{"line_number":171,"context_line":"  many instances of networking-odl and ODL for at-most-once semantics."},{"line_number":172,"context_line":"  (or somehow at-most-once semantics needs to be kept.)"},{"line_number":173,"context_line":"- If there is no websockets(or the connection can be lost at any point of"},{"line_number":174,"context_line":"  processing), message will be lost. In that case, RPC requests will result"},{"line_number":175,"context_line":"  in timeout error. RPC caller doesn\u0027t know if the request is processed or not"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_51bc9368","line":172,"updated":"2017-06-10 04:54:30.000000000","message":"ok, it looks like we wanted to make sure no duplication of an RPC request happens due to myriad of active websockets from neutron-server to ODL controller.","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"05191695dbf52bf8c2a76dca034f0b601f81ad5c","unresolved":false,"context_lines":[{"line_number":178,"context_line":"- RPC methods defined in Neutron server are idempotent in some sense or safe"},{"line_number":179,"context_line":"  to call multiple times."},{"line_number":180,"context_line":"- RPC caller may want to use ODL ownership service or something else to avoid"},{"line_number":181,"context_line":"  race condition."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"Alternative solutions"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_11ae1b2e","line":181,"updated":"2017-06-10 04:54:30.000000000","message":"can you explain the origin of \u0027race condition\u0027 put here?","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4ccf0f18682b6c22054ac8bd54802bf40e09f01d","unresolved":false,"context_lines":[{"line_number":178,"context_line":"- RPC methods defined in Neutron server are idempotent in some sense or safe"},{"line_number":179,"context_line":"  to call multiple times."},{"line_number":180,"context_line":"- RPC caller may want to use ODL ownership service or something else to avoid"},{"line_number":181,"context_line":"  race condition."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"Alternative solutions"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_11a1c6f8","line":181,"in_reply_to":"7f231b9d_11ae1b2e","updated":"2017-06-16 08:13:49.000000000","message":"Example: there are ODL instances as ODL cluster and within\n  ODL instances, ODL application can listend to same yang model. e.g. neutron\n  subnet. If DataTreeChange is triggered on all of ODL instances. In this case,\n  we\u0027d like to issue RPC call to neutron only once. Not the number of ODL\n  instances.","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"72715971201488ccc942d4a591bbbe0061a2c1f9","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    only ZMQ."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"  Discussion:"},{"line_number":201,"context_line":"  openstack oslo.messaging supports many message queues. amqp, rabbit mq,"},{"line_number":202,"context_line":"  zmq, kafka etc. So if we go for this route, we have to tell openstack"},{"line_number":203,"context_line":"  admin that if you\u0027d like to use ODL, you have to use only supported message"},{"line_number":204,"context_line":"  queue. We don\u0027t want this."},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"- ODL calling neutron REST API"},{"line_number":207,"context_line":"  Introduce dedicated REST API for openstack rpc for ODL to call."}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_d2e63717","line":204,"range":{"start_line":201,"start_character":2,"end_line":204,"end_character":28},"updated":"2017-06-12 17:35:12.000000000","message":"according to spec if we send the call and payload via websocket this will be taken care of ? +1 to having example payload with request","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"05191695dbf52bf8c2a76dca034f0b601f81ad5c","unresolved":false,"context_lines":[{"line_number":201,"context_line":"  openstack oslo.messaging supports many message queues. amqp, rabbit mq,"},{"line_number":202,"context_line":"  zmq, kafka etc. So if we go for this route, we have to tell openstack"},{"line_number":203,"context_line":"  admin that if you\u0027d like to use ODL, you have to use only supported message"},{"line_number":204,"context_line":"  queue. We don\u0027t want this."},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"- ODL calling neutron REST API"},{"line_number":207,"context_line":"  Introduce dedicated REST API for openstack rpc for ODL to call."}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_f1aa7f17","line":204,"updated":"2017-06-10 04:54:30.000000000","message":"if we use websockets, this problem doesn\u0027t arise ?  \n\ncan you please put a note on what is the RPC format that we use in payloads of  neutron-message-send and neutron-message-reply..","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4ccf0f18682b6c22054ac8bd54802bf40e09f01d","unresolved":false,"context_lines":[{"line_number":201,"context_line":"  openstack oslo.messaging supports many message queues. amqp, rabbit mq,"},{"line_number":202,"context_line":"  zmq, kafka etc. So if we go for this route, we have to tell openstack"},{"line_number":203,"context_line":"  admin that if you\u0027d like to use ODL, you have to use only supported message"},{"line_number":204,"context_line":"  queue. We don\u0027t want this."},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"- ODL calling neutron REST API"},{"line_number":207,"context_line":"  Introduce dedicated REST API for openstack rpc for ODL to call."}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_51ea9ed7","line":204,"in_reply_to":"7f231b9d_f1aa7f17","updated":"2017-06-16 08:13:49.000000000","message":"No it doesn\u0027t arise because we use websocket as transport layer.\nhttps://git.opendaylight.org/gerrit/#/c/53242/","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"05191695dbf52bf8c2a76dca034f0b601f81ad5c","unresolved":false,"context_lines":[{"line_number":208,"context_line":"  Networking-odl needs to define API for openstack RPC."},{"line_number":209,"context_line":"  Discussion:"},{"line_number":210,"context_line":"  So this is a public neutron API and such modification won\u0027t be accepted"},{"line_number":211,"context_line":"  by neutron community."},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"- yang-push"},{"line_number":214,"context_line":"  yang-push [yang-push]_ defines a datastore push update. In long term"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_9167cb26","line":211,"updated":"2017-06-10 04:54:30.000000000","message":"I don\u0027t think this would be fitting into Alternatives at all :)","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"05191695dbf52bf8c2a76dca034f0b601f81ad5c","unresolved":false,"context_lines":[{"line_number":213,"context_line":"- yang-push"},{"line_number":214,"context_line":"  yang-push [yang-push]_ defines a datastore push update. In long term"},{"line_number":215,"context_line":"  This is the way. However right now ODL yang pubsub [yang-pubsub]_ project"},{"line_number":216,"context_line":"  only implements client code in ODL. server side implementation is needed."},{"line_number":217,"context_line":""},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_3176b7da","line":216,"updated":"2017-06-10 04:54:30.000000000","message":"can you please add a bit more explanation of this alternative , since you seem to consider this alternative viable for long term?","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"4ccf0f18682b6c22054ac8bd54802bf40e09f01d","unresolved":false,"context_lines":[{"line_number":213,"context_line":"- yang-push"},{"line_number":214,"context_line":"  yang-push [yang-push]_ defines a datastore push update. In long term"},{"line_number":215,"context_line":"  This is the way. However right now ODL yang pubsub [yang-pubsub]_ project"},{"line_number":216,"context_line":"  only implements client code in ODL. server side implementation is needed."},{"line_number":217,"context_line":""},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_d19a2e60","line":216,"in_reply_to":"7f231b9d_3176b7da","updated":"2017-06-16 08:13:49.000000000","message":"Please refer to ietf draft.\nthe intent of the yang-push is for it.\nanyway we\u0027ll see that yang-push will be popular or not.","commit_id":"f25b60d4e24d4613b5eaf97ca2b10d8210d749c0"},{"author":{"_account_id":18429,"name":"Vishal Thapar","email":"vthapar@redhat.com","username":"thapar"},"change_message_id":"6f8e7888a28cd254f60babf650b7c581d492c0f2","unresolved":false,"context_lines":[{"line_number":78,"context_line":"  |     | multiplex based on topic          |"},{"line_number":79,"context_line":"  |     |                                   |"},{"line_number":80,"context_line":"  | RPC dispatcher(@)                       |"},{"line_number":81,"context_line":"  |          subclass of oslo.messaging     | networking-odl connects to ODL"},{"line_number":82,"context_line":"  |          or something similar           | and establishes websocket."},{"line_number":83,"context_line":"  |          to call neutron RPC callbacks  | RPC call/return is send over"},{"line_number":84,"context_line":"  |                   +------------------+  | this websocket."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_f59140f3","line":81,"range":{"start_line":81,"start_character":46,"end_line":81,"end_character":76},"updated":"2017-06-29 16:10:48.000000000","message":"I\u0027d like a section on ODL HA considerations, esp how will we handle many-to-many mapping between Neutron HA and ODL HA. Typical deployments use HA Proxy between n-odl and ODL NN. Won\u0027t we need websocket to be created from each node and back? Which would mean some configuration that bypasses HA Proxy?","commit_id":"17649cb102c24e53d583f96c2021512733be9a33"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"358cfbe207f716ca67125841f0bfe9ef480d0651","unresolved":false,"context_lines":[{"line_number":78,"context_line":"  |     | multiplex based on topic          |"},{"line_number":79,"context_line":"  |     |                                   |"},{"line_number":80,"context_line":"  | RPC dispatcher(@)                       |"},{"line_number":81,"context_line":"  |          subclass of oslo.messaging     | networking-odl connects to ODL"},{"line_number":82,"context_line":"  |          or something similar           | and establishes websocket."},{"line_number":83,"context_line":"  |          to call neutron RPC callbacks  | RPC call/return is send over"},{"line_number":84,"context_line":"  |                   +------------------+  | this websocket."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_26957b87","line":81,"range":{"start_line":81,"start_character":46,"end_line":81,"end_character":76},"in_reply_to":"3f1d235d_f59140f3","updated":"2017-07-07 00:27:12.000000000","message":"Done","commit_id":"17649cb102c24e53d583f96c2021512733be9a33"},{"author":{"_account_id":18429,"name":"Vishal Thapar","email":"vthapar@redhat.com","username":"thapar"},"change_message_id":"6f8e7888a28cd254f60babf650b7c581d492c0f2","unresolved":false,"context_lines":[{"line_number":193,"context_line":"          leaf topic {"},{"line_number":194,"context_line":"              type string;"},{"line_number":195,"context_line":"          }"},{"line_number":196,"context_line":"          leaf vesion {"},{"line_number":197,"context_line":"              type string;"},{"line_number":198,"context_line":"          }"},{"line_number":199,"context_line":"          leaf namespace {"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_f50140b1","line":196,"range":{"start_line":196,"start_character":15,"end_line":196,"end_character":21},"updated":"2017-06-29 16:10:48.000000000","message":"version","commit_id":"17649cb102c24e53d583f96c2021512733be9a33"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"74cbd62fca0264362af164e953dc30ec4cf41ac7","unresolved":false,"context_lines":[{"line_number":193,"context_line":"          leaf topic {"},{"line_number":194,"context_line":"              type string;"},{"line_number":195,"context_line":"          }"},{"line_number":196,"context_line":"          leaf vesion {"},{"line_number":197,"context_line":"              type string;"},{"line_number":198,"context_line":"          }"},{"line_number":199,"context_line":"          leaf namespace {"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_6beb3e77","line":196,"range":{"start_line":196,"start_character":15,"end_line":196,"end_character":21},"in_reply_to":"3f1d235d_f50140b1","updated":"2017-07-07 00:07:14.000000000","message":"Done","commit_id":"17649cb102c24e53d583f96c2021512733be9a33"},{"author":{"_account_id":18429,"name":"Vishal Thapar","email":"vthapar@redhat.com","username":"thapar"},"change_message_id":"6f8e7888a28cd254f60babf650b7c581d492c0f2","unresolved":false,"context_lines":[{"line_number":243,"context_line":""},{"line_number":244,"context_line":"      grouping neutron-message-id {"},{"line_number":245,"context_line":"          description \"TBD\";"},{"line_number":246,"context_line":"          leaf message_id {"},{"line_number":247,"context_line":"              // oslo_message._driver uses uuid.uuid4().hex"},{"line_number":248,"context_line":"              type uuid;"},{"line_number":249,"context_line":"          }"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_151efc0b","line":246,"range":{"start_line":246,"start_character":15,"end_line":246,"end_character":25},"updated":"2017-06-29 16:10:48.000000000","message":"message-id","commit_id":"17649cb102c24e53d583f96c2021512733be9a33"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"74cbd62fca0264362af164e953dc30ec4cf41ac7","unresolved":false,"context_lines":[{"line_number":243,"context_line":""},{"line_number":244,"context_line":"      grouping neutron-message-id {"},{"line_number":245,"context_line":"          description \"TBD\";"},{"line_number":246,"context_line":"          leaf message_id {"},{"line_number":247,"context_line":"              // oslo_message._driver uses uuid.uuid4().hex"},{"line_number":248,"context_line":"              type uuid;"},{"line_number":249,"context_line":"          }"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_0bfcca3b","line":246,"range":{"start_line":246,"start_character":15,"end_line":246,"end_character":25},"in_reply_to":"3f1d235d_151efc0b","updated":"2017-07-07 00:07:14.000000000","message":"Done","commit_id":"17649cb102c24e53d583f96c2021512733be9a33"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"87030751c8a9db01e5e6fe01bb815e880eccf2a3","unresolved":false,"context_lines":[{"line_number":159,"context_line":"#. returns RPC call"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"yang model"},{"line_number":163,"context_line":"----------"},{"line_number":164,"context_line":"this yang model is informative. subject to change through implementation."},{"line_number":165,"context_line":"https://git.opendaylight.org/gerrit/#/c/53242/"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"::"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"  module neutron-rpc {"},{"line_number":170,"context_line":"      yang-version 1;"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"      namespace \"urn:opendaylight:neutron-rpc\";"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"      prefix neutron-rpc;"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"      organization \"OpenDaylight Neutron Group\";"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"      contact \"Isaku Yamahata \u003cisaku.yamahata@gmail.com\u003e\";"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"      description \"This YANG module defines neutron openstack rpc client that are used"},{"line_number":181,"context_line":"          by OpenDaylight Neutron service providers."},{"line_number":182,"context_line":"          This definition is based on OpenStack Oslo Messaging and Neutron RPC definitions."},{"line_number":183,"context_line":"          https://wiki.openstack.org/wiki/Oslo/Messaging"},{"line_number":184,"context_line":"          https://docs.openstack.org/developer/oslo.messaging/"},{"line_number":185,"context_line":"          ODL as openstack RPC server is out of the scope.\";"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"      revision \"2017-03-13\" {"},{"line_number":188,"context_line":"          description \"OpenDaylight Nitrogen release\";"},{"line_number":189,"context_line":"      }"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"      grouping target {"},{"line_number":192,"context_line":"          description \"corresponds to oslo_messaging.Target\";"},{"line_number":193,"context_line":"          leaf topic {"},{"line_number":194,"context_line":"              type string;"},{"line_number":195,"context_line":"          }"},{"line_number":196,"context_line":"          leaf vesion {"},{"line_number":197,"context_line":"              type string;"},{"line_number":198,"context_line":"          }"},{"line_number":199,"context_line":"          leaf namespace {"},{"line_number":200,"context_line":"              type string;"},{"line_number":201,"context_line":"          }"},{"line_number":202,"context_line":"      }"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"      identity call-or-cast {"},{"line_number":205,"context_line":"          description \"call-or-cast.\";"},{"line_number":206,"context_line":"      }"},{"line_number":207,"context_line":"      identity call {"},{"line_number":208,"context_line":"          base call-or-cast"},{"line_number":209,"context_line":"          description \"call.\";"},{"line_number":210,"context_line":"      }"},{"line_number":211,"context_line":"      identity cast {"},{"line_number":212,"context_line":"          base call-or-cast;"},{"line_number":213,"context_line":"          description \"cast.\";"},{"line_number":214,"context_line":"      }"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"      grouping neutron-message-input {"},{"line_number":217,"context_line":"          description \"TBD\";"},{"line_number":218,"context_line":"          uses target;"},{"line_number":219,"context_line":"          leaf method {"},{"line_number":220,"context_line":"              type string;"},{"line_number":221,"context_line":"          }"},{"line_number":222,"context_line":"          leaf identityref {"},{"line_number":223,"context_line":"              base call-or-cast;"},{"line_number":224,"context_line":"          }"},{"line_number":225,"context_line":"          list args {"},{"line_number":226,"context_line":"              key name;"},{"line_number":227,"context_line":"              leaf name {"},{"line_number":228,"context_line":"                  type string;"},{"line_number":229,"context_line":"              }"},{"line_number":230,"context_line":"              leaf value {"},{"line_number":231,"context_line":"                  type string;"},{"line_number":232,"context_line":"              }"},{"line_number":233,"context_line":"          }"},{"line_number":234,"context_line":"      }"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"      grouping neutron-message-output {"},{"line_number":237,"context_line":"          description \"TBD\";"},{"line_number":238,"context_line":"          uses target;"},{"line_number":239,"context_line":"          leaf reply {"},{"line_number":240,"context_line":"              type string;"},{"line_number":241,"context_line":"          }"},{"line_number":242,"context_line":"      }"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"      grouping neutron-message-id {"},{"line_number":245,"context_line":"          description \"TBD\";"},{"line_number":246,"context_line":"          leaf message_id {"},{"line_number":247,"context_line":"              // oslo_message._driver uses uuid.uuid4().hex"},{"line_number":248,"context_line":"              type uuid;"},{"line_number":249,"context_line":"          }"},{"line_number":250,"context_line":"      }"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"      // interface for newtorking-odl via websocket"},{"line_number":253,"context_line":"      notification neutron-message-send {"},{"line_number":254,"context_line":"          description \"TBD\";"},{"line_number":255,"context_line":"          uses neutron-message-id;"},{"line_number":256,"context_line":"          uses neutron-message-input;"},{"line_number":257,"context_line":"      }"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"      rpc neutron-message-reply {"},{"line_number":260,"context_line":"          description \"TBD\";"},{"line_number":261,"context_line":"          uses neutron-message-id;"},{"line_number":262,"context_line":"          uses neutron-message-output;"},{"line_number":263,"context_line":"      }"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"      // interface for ODL app"},{"line_number":266,"context_line":"      rpc neutron-call {"},{"line_number":267,"context_line":"          description \"openstack rpc call from ODL to networking-odl\";"},{"line_number":268,"context_line":"          input {"},{"line_number":269,"context_line":"              uses neutron-message-input;"},{"line_number":270,"context_line":"          }"},{"line_number":271,"context_line":"          output {"},{"line_number":272,"context_line":"              uses neutron-message-output;"},{"line_number":273,"context_line":"          }"},{"line_number":274,"context_line":"      }"},{"line_number":275,"context_line":"  }"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"caveats"},{"line_number":278,"context_line":"-------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7f231b9d_9fbef4fc","line":275,"range":{"start_line":162,"start_character":0,"end_line":275,"end_character":3},"updated":"2017-06-16 16:29:45.000000000","message":"no need to explain entire yang, I guess a link reference is just enough.","commit_id":"17649cb102c24e53d583f96c2021512733be9a33"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"a5448039ac1c78f612b5ab8b535aa974b8de7a4e","unresolved":false,"context_lines":[{"line_number":159,"context_line":"#. returns RPC call"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"yang model"},{"line_number":163,"context_line":"----------"},{"line_number":164,"context_line":"this yang model is informative. subject to change through implementation."},{"line_number":165,"context_line":"https://git.opendaylight.org/gerrit/#/c/53242/"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"::"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"  module neutron-rpc {"},{"line_number":170,"context_line":"      yang-version 1;"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"      namespace \"urn:opendaylight:neutron-rpc\";"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"      prefix neutron-rpc;"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"      organization \"OpenDaylight Neutron Group\";"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"      contact \"Isaku Yamahata \u003cisaku.yamahata@gmail.com\u003e\";"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"      description \"This YANG module defines neutron openstack rpc client that are used"},{"line_number":181,"context_line":"          by OpenDaylight Neutron service providers."},{"line_number":182,"context_line":"          This definition is based on OpenStack Oslo Messaging and Neutron RPC definitions."},{"line_number":183,"context_line":"          https://wiki.openstack.org/wiki/Oslo/Messaging"},{"line_number":184,"context_line":"          https://docs.openstack.org/developer/oslo.messaging/"},{"line_number":185,"context_line":"          ODL as openstack RPC server is out of the scope.\";"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"      revision \"2017-03-13\" {"},{"line_number":188,"context_line":"          description \"OpenDaylight Nitrogen release\";"},{"line_number":189,"context_line":"      }"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"      grouping target {"},{"line_number":192,"context_line":"          description \"corresponds to oslo_messaging.Target\";"},{"line_number":193,"context_line":"          leaf topic {"},{"line_number":194,"context_line":"              type string;"},{"line_number":195,"context_line":"          }"},{"line_number":196,"context_line":"          leaf vesion {"},{"line_number":197,"context_line":"              type string;"},{"line_number":198,"context_line":"          }"},{"line_number":199,"context_line":"          leaf namespace {"},{"line_number":200,"context_line":"              type string;"},{"line_number":201,"context_line":"          }"},{"line_number":202,"context_line":"      }"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"      identity call-or-cast {"},{"line_number":205,"context_line":"          description \"call-or-cast.\";"},{"line_number":206,"context_line":"      }"},{"line_number":207,"context_line":"      identity call {"},{"line_number":208,"context_line":"          base call-or-cast"},{"line_number":209,"context_line":"          description \"call.\";"},{"line_number":210,"context_line":"      }"},{"line_number":211,"context_line":"      identity cast {"},{"line_number":212,"context_line":"          base call-or-cast;"},{"line_number":213,"context_line":"          description \"cast.\";"},{"line_number":214,"context_line":"      }"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"      grouping neutron-message-input {"},{"line_number":217,"context_line":"          description \"TBD\";"},{"line_number":218,"context_line":"          uses target;"},{"line_number":219,"context_line":"          leaf method {"},{"line_number":220,"context_line":"              type string;"},{"line_number":221,"context_line":"          }"},{"line_number":222,"context_line":"          leaf identityref {"},{"line_number":223,"context_line":"              base call-or-cast;"},{"line_number":224,"context_line":"          }"},{"line_number":225,"context_line":"          list args {"},{"line_number":226,"context_line":"              key name;"},{"line_number":227,"context_line":"              leaf name {"},{"line_number":228,"context_line":"                  type string;"},{"line_number":229,"context_line":"              }"},{"line_number":230,"context_line":"              leaf value {"},{"line_number":231,"context_line":"                  type string;"},{"line_number":232,"context_line":"              }"},{"line_number":233,"context_line":"          }"},{"line_number":234,"context_line":"      }"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"      grouping neutron-message-output {"},{"line_number":237,"context_line":"          description \"TBD\";"},{"line_number":238,"context_line":"          uses target;"},{"line_number":239,"context_line":"          leaf reply {"},{"line_number":240,"context_line":"              type string;"},{"line_number":241,"context_line":"          }"},{"line_number":242,"context_line":"      }"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"      grouping neutron-message-id {"},{"line_number":245,"context_line":"          description \"TBD\";"},{"line_number":246,"context_line":"          leaf message_id {"},{"line_number":247,"context_line":"              // oslo_message._driver uses uuid.uuid4().hex"},{"line_number":248,"context_line":"              type uuid;"},{"line_number":249,"context_line":"          }"},{"line_number":250,"context_line":"      }"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"      // interface for newtorking-odl via websocket"},{"line_number":253,"context_line":"      notification neutron-message-send {"},{"line_number":254,"context_line":"          description \"TBD\";"},{"line_number":255,"context_line":"          uses neutron-message-id;"},{"line_number":256,"context_line":"          uses neutron-message-input;"},{"line_number":257,"context_line":"      }"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"      rpc neutron-message-reply {"},{"line_number":260,"context_line":"          description \"TBD\";"},{"line_number":261,"context_line":"          uses neutron-message-id;"},{"line_number":262,"context_line":"          uses neutron-message-output;"},{"line_number":263,"context_line":"      }"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"      // interface for ODL app"},{"line_number":266,"context_line":"      rpc neutron-call {"},{"line_number":267,"context_line":"          description \"openstack rpc call from ODL to networking-odl\";"},{"line_number":268,"context_line":"          input {"},{"line_number":269,"context_line":"              uses neutron-message-input;"},{"line_number":270,"context_line":"          }"},{"line_number":271,"context_line":"          output {"},{"line_number":272,"context_line":"              uses neutron-message-output;"},{"line_number":273,"context_line":"          }"},{"line_number":274,"context_line":"      }"},{"line_number":275,"context_line":"  }"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"caveats"},{"line_number":278,"context_line":"-------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_b52748b7","line":275,"range":{"start_line":162,"start_character":0,"end_line":275,"end_character":3},"in_reply_to":"7f231b9d_9fbef4fc","updated":"2017-06-29 15:48:56.000000000","message":"I\u0027d tend to include whole yang.\nthe link was already included, but people seem to lazy not to follow it.","commit_id":"17649cb102c24e53d583f96c2021512733be9a33"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"87030751c8a9db01e5e6fe01bb815e880eccf2a3","unresolved":false,"context_lines":[{"line_number":298,"context_line":"  to call multiple times."},{"line_number":299,"context_line":"- RPC caller may want to use ODL ownership service or something else to avoid"},{"line_number":300,"context_line":"  race condition. Example: there are ODL instances as ODL cluster and within"},{"line_number":301,"context_line":"  ODL instances, ODL application can listend to same yang model. e.g. neutron"},{"line_number":302,"context_line":"  subnet. If DataTreeChange is triggered on all of ODL instances. In this case,"},{"line_number":303,"context_line":"  we\u0027d like to issue RPC call to neutron only once. Not the number of ODL"},{"line_number":304,"context_line":"  instances."}],"source_content_type":"text/x-rst","patch_set":9,"id":"7f231b9d_bfa09091","line":301,"range":{"start_line":301,"start_character":37,"end_line":301,"end_character":45},"updated":"2017-06-16 16:29:45.000000000","message":"listen","commit_id":"17649cb102c24e53d583f96c2021512733be9a33"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"a5448039ac1c78f612b5ab8b535aa974b8de7a4e","unresolved":false,"context_lines":[{"line_number":298,"context_line":"  to call multiple times."},{"line_number":299,"context_line":"- RPC caller may want to use ODL ownership service or something else to avoid"},{"line_number":300,"context_line":"  race condition. Example: there are ODL instances as ODL cluster and within"},{"line_number":301,"context_line":"  ODL instances, ODL application can listend to same yang model. e.g. neutron"},{"line_number":302,"context_line":"  subnet. If DataTreeChange is triggered on all of ODL instances. In this case,"},{"line_number":303,"context_line":"  we\u0027d like to issue RPC call to neutron only once. Not the number of ODL"},{"line_number":304,"context_line":"  instances."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_15383cd1","line":301,"range":{"start_line":301,"start_character":37,"end_line":301,"end_character":45},"in_reply_to":"7f231b9d_bfa09091","updated":"2017-06-29 15:48:56.000000000","message":"Done","commit_id":"17649cb102c24e53d583f96c2021512733be9a33"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"1a49eb5737fbcf3cd66f7f15933ae92ccf2f504c","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Now ODL is supporting more and more functionality of openstack."},{"line_number":23,"context_line":"and it\u0027s starting to require closer communication between neutron server"},{"line_number":24,"context_line":"like neutron agent. Missing part is openstack RPC from ODL (as RPC client)"},{"line_number":25,"context_line":"to neutron server(as RPC server)."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Use case to raise this spec is DHCP server."}],"source_content_type":"text/x-rst","patch_set":12,"id":"3f1d235d_c0d56be7","line":24,"range":{"start_line":24,"start_character":55,"end_line":24,"end_character":58},"updated":"2017-07-10 16:45:45.000000000","message":"i\u0027d suggest to use OpenDaylight on all docs and code as we merged the code part already.","commit_id":"d7bb5ebc2e871e9611151f1d82a8b2d9d30a5c52"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"a9134eaee57c00f0892360b74464dd9e7e936e76","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Now ODL is supporting more and more functionality of openstack."},{"line_number":23,"context_line":"and it\u0027s starting to require closer communication between neutron server"},{"line_number":24,"context_line":"like neutron agent. Missing part is openstack RPC from ODL (as RPC client)"},{"line_number":25,"context_line":"to neutron server(as RPC server)."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Use case to raise this spec is DHCP server."}],"source_content_type":"text/x-rst","patch_set":12,"id":"3f1d235d_0bf0f1c8","line":24,"range":{"start_line":24,"start_character":55,"end_line":24,"end_character":58},"in_reply_to":"3f1d235d_c0d56be7","updated":"2017-07-11 01:31:38.000000000","message":"Use OpenDaylight(ODL) as first usage and ODL for later use.","commit_id":"d7bb5ebc2e871e9611151f1d82a8b2d9d30a5c52"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"1a49eb5737fbcf3cd66f7f15933ae92ccf2f504c","unresolved":false,"context_lines":[{"line_number":25,"context_line":"to neutron server(as RPC server)."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Use case to raise this spec is DHCP server."},{"line_number":28,"context_line":"https://git.opendaylight.org/gerrit/#/c/52298/"},{"line_number":29,"context_line":"netvirt openstack supports DHCP server and it needs dedicated IP address"},{"line_number":30,"context_line":"for DHCP server per network and wants to call create_dhcp_port() as"},{"line_number":31,"context_line":"neutron dhcp agent does."}],"source_content_type":"text/x-rst","patch_set":12,"id":"3f1d235d_a0b6efdb","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":46},"updated":"2017-07-10 16:45:45.000000000","message":"why not this go to references and use a tag [1] etc  ?","commit_id":"d7bb5ebc2e871e9611151f1d82a8b2d9d30a5c52"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"a9134eaee57c00f0892360b74464dd9e7e936e76","unresolved":false,"context_lines":[{"line_number":25,"context_line":"to neutron server(as RPC server)."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Use case to raise this spec is DHCP server."},{"line_number":28,"context_line":"https://git.opendaylight.org/gerrit/#/c/52298/"},{"line_number":29,"context_line":"netvirt openstack supports DHCP server and it needs dedicated IP address"},{"line_number":30,"context_line":"for DHCP server per network and wants to call create_dhcp_port() as"},{"line_number":31,"context_line":"neutron dhcp agent does."}],"source_content_type":"text/x-rst","patch_set":12,"id":"3f1d235d_8bdc0147","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":46},"in_reply_to":"3f1d235d_a0b6efdb","updated":"2017-07-11 01:31:38.000000000","message":"Done","commit_id":"d7bb5ebc2e871e9611151f1d82a8b2d9d30a5c52"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"1a49eb5737fbcf3cd66f7f15933ae92ccf2f504c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"In the case of neutron dhcp agent(or any neutorn agent) is allowed"},{"line_number":33,"context_line":"to call RPC to neutron server to do house keeping work."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"The first user will be dhcp server module in ODL netvirt."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"OpenStack RPC semantics"},{"line_number":38,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3f1d235d_a004af7f","line":35,"range":{"start_line":35,"start_character":45,"end_line":35,"end_character":48},"updated":"2017-07-10 16:45:45.000000000","message":"same as line24 comment","commit_id":"d7bb5ebc2e871e9611151f1d82a8b2d9d30a5c52"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"1a49eb5737fbcf3cd66f7f15933ae92ccf2f504c","unresolved":false,"context_lines":[{"line_number":367,"context_line":"    only ZMQ."},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"  Discussion:"},{"line_number":370,"context_line":"  openstack oslo.messaging supports many message queues. amqp, rabbit mq,"},{"line_number":371,"context_line":"  zmq, kafka etc. So if we go for this route, we have to tell openstack"},{"line_number":372,"context_line":"  admin that if you\u0027d like to use ODL, you have to use only message queue"},{"line_number":373,"context_line":"  that we support. We don\u0027t want this."}],"source_content_type":"text/x-rst","patch_set":12,"id":"3f1d235d_e7f613fa","line":370,"range":{"start_line":370,"start_character":63,"end_line":370,"end_character":72},"updated":"2017-07-10 16:45:45.000000000","message":"\u0027rabbitmq\u0027","commit_id":"d7bb5ebc2e871e9611151f1d82a8b2d9d30a5c52"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"a9134eaee57c00f0892360b74464dd9e7e936e76","unresolved":false,"context_lines":[{"line_number":367,"context_line":"    only ZMQ."},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"  Discussion:"},{"line_number":370,"context_line":"  openstack oslo.messaging supports many message queues. amqp, rabbit mq,"},{"line_number":371,"context_line":"  zmq, kafka etc. So if we go for this route, we have to tell openstack"},{"line_number":372,"context_line":"  admin that if you\u0027d like to use ODL, you have to use only message queue"},{"line_number":373,"context_line":"  that we support. We don\u0027t want this."}],"source_content_type":"text/x-rst","patch_set":12,"id":"3f1d235d_abbe9dd1","line":370,"range":{"start_line":370,"start_character":63,"end_line":370,"end_character":72},"in_reply_to":"3f1d235d_e7f613fa","updated":"2017-07-11 01:31:38.000000000","message":"Done","commit_id":"d7bb5ebc2e871e9611151f1d82a8b2d9d30a5c52"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"c08ee0aefc34a6a30ef692bccab24a0305344d37","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Proposed Change"},{"line_number":57,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":58,"context_line":"Introduce framework to allow ODL to do a RPC to neutron."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"  (@): newly to be implemented"},{"line_number":61,"context_line":"  (#): new yang model https://git.opendaylight.org/gerrit/#/c/53242/"}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f1d235d_72762ddb","line":58,"range":{"start_line":58,"start_character":0,"end_line":58,"end_character":56},"updated":"2017-07-11 07:23:58.000000000","message":"how neutron and odl negotiates the feature?","commit_id":"0b4ffc6b5c20bd5a61697cf41881b5597b275c5e"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"8ed8a35960fd244016f207a28fd2e98dd751144d","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Proposed Change"},{"line_number":57,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":58,"context_line":"Introduce framework to allow ODL to do a RPC to neutron."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"  (@): newly to be implemented"},{"line_number":61,"context_line":"  (#): new yang model https://git.opendaylight.org/gerrit/#/c/53242/"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1f1a1f67_17088f25","line":58,"range":{"start_line":58,"start_character":0,"end_line":58,"end_character":56},"in_reply_to":"3f1d235d_72762ddb","updated":"2017-07-18 18:32:49.000000000","message":"Now networking-odl has feature negotination with ODL.\nnetworking_odl/common/odl_features.py\n\nhttps://review.openstack.org/gitweb?p\u003dopenstack/networking-odl.git;a\u003dblob;f\u003dnetworking_odl/common/odl_features.py;hb\u003dHEAD","commit_id":"0b4ffc6b5c20bd5a61697cf41881b5597b275c5e"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"c08ee0aefc34a6a30ef692bccab24a0305344d37","unresolved":false,"context_lines":[{"line_number":103,"context_line":"  +-----------------------|---------|-------+"},{"line_number":104,"context_line":"  |                       |         |       |"},{"line_number":105,"context_line":"  | yang model:(#)        |         V       | Notification is local to ODL."},{"line_number":106,"context_line":"  |   notification: neutron-message-send    | (it isn\u0027t send over clusetring)"},{"line_number":107,"context_line":"  |   RPC: neutron-message-reply    |       | So trick would be needed to"},{"line_number":108,"context_line":"  |                       ^         |       | guarantee that any ODL instance"},{"line_number":109,"context_line":"  |                       |         |       | can send a RPC request."}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f1d235d_f2e8fd16","line":106,"range":{"start_line":106,"start_character":66,"end_line":106,"end_character":76},"updated":"2017-07-11 07:23:58.000000000","message":"clustering?","commit_id":"0b4ffc6b5c20bd5a61697cf41881b5597b275c5e"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"8ed8a35960fd244016f207a28fd2e98dd751144d","unresolved":false,"context_lines":[{"line_number":103,"context_line":"  +-----------------------|---------|-------+"},{"line_number":104,"context_line":"  |                       |         |       |"},{"line_number":105,"context_line":"  | yang model:(#)        |         V       | Notification is local to ODL."},{"line_number":106,"context_line":"  |   notification: neutron-message-send    | (it isn\u0027t send over clusetring)"},{"line_number":107,"context_line":"  |   RPC: neutron-message-reply    |       | So trick would be needed to"},{"line_number":108,"context_line":"  |                       ^         |       | guarantee that any ODL instance"},{"line_number":109,"context_line":"  |                       |         |       | can send a RPC request."}],"source_content_type":"text/x-rst","patch_set":13,"id":"1f1a1f67_372eeb91","line":106,"range":{"start_line":106,"start_character":66,"end_line":106,"end_character":76},"in_reply_to":"3f1d235d_f2e8fd16","updated":"2017-07-18 18:32:49.000000000","message":"Done","commit_id":"0b4ffc6b5c20bd5a61697cf41881b5597b275c5e"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"c08ee0aefc34a6a30ef692bccab24a0305344d37","unresolved":false,"context_lines":[{"line_number":110,"context_line":"  |                       |         |       |"},{"line_number":111,"context_line":"  +-----------------------|---------|-------+ (networking-odl \u003c-\u003e ODL)"},{"line_number":112,"context_line":"  |                       |         |       | one websocket per neutron server"},{"line_number":113,"context_line":"  | openstack RPC layer(@)|         |       | instance. If there are multiple"},{"line_number":114,"context_line":"  |  mux/demux:           |         |       | instances of neutron server,"},{"line_number":115,"context_line":"  | assign message-id     |         |       | There can be multiple websockets."},{"line_number":116,"context_line":"  |                       |         |       |"}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f1d235d_12e1392b","line":113,"range":{"start_line":113,"start_character":69,"end_line":113,"end_character":77},"updated":"2017-07-11 07:23:58.000000000","message":"how to decide which one to use for a call?","commit_id":"0b4ffc6b5c20bd5a61697cf41881b5597b275c5e"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"8ed8a35960fd244016f207a28fd2e98dd751144d","unresolved":false,"context_lines":[{"line_number":110,"context_line":"  |                       |         |       |"},{"line_number":111,"context_line":"  +-----------------------|---------|-------+ (networking-odl \u003c-\u003e ODL)"},{"line_number":112,"context_line":"  |                       |         |       | one websocket per neutron server"},{"line_number":113,"context_line":"  | openstack RPC layer(@)|         |       | instance. If there are multiple"},{"line_number":114,"context_line":"  |  mux/demux:           |         |       | instances of neutron server,"},{"line_number":115,"context_line":"  | assign message-id     |         |       | There can be multiple websockets."},{"line_number":116,"context_line":"  |                       |         |       |"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1f1a1f67_f77193a9","line":113,"range":{"start_line":113,"start_character":69,"end_line":113,"end_character":77},"in_reply_to":"3f1d235d_12e1392b","updated":"2017-07-18 18:32:49.000000000","message":"Please refer to HA considerations.","commit_id":"0b4ffc6b5c20bd5a61697cf41881b5597b275c5e"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"c08ee0aefc34a6a30ef692bccab24a0305344d37","unresolved":false,"context_lines":[{"line_number":207,"context_line":"          base call-or-cast"},{"line_number":208,"context_line":"          description \"call.\";"},{"line_number":209,"context_line":"      }"},{"line_number":210,"context_line":"      identity cast {"},{"line_number":211,"context_line":"          base call-or-cast;"},{"line_number":212,"context_line":"          description \"cast.\";"},{"line_number":213,"context_line":"      }"}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f1d235d_2d1cda68","line":210,"range":{"start_line":210,"start_character":15,"end_line":210,"end_character":19},"updated":"2017-07-11 07:23:58.000000000","message":"are you going to support cast as well?","commit_id":"0b4ffc6b5c20bd5a61697cf41881b5597b275c5e"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"8ed8a35960fd244016f207a28fd2e98dd751144d","unresolved":false,"context_lines":[{"line_number":207,"context_line":"          base call-or-cast"},{"line_number":208,"context_line":"          description \"call.\";"},{"line_number":209,"context_line":"      }"},{"line_number":210,"context_line":"      identity cast {"},{"line_number":211,"context_line":"          base call-or-cast;"},{"line_number":212,"context_line":"          description \"cast.\";"},{"line_number":213,"context_line":"      }"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1f1a1f67_1782cfc8","line":210,"range":{"start_line":210,"start_character":15,"end_line":210,"end_character":19},"in_reply_to":"3f1d235d_2d1cda68","updated":"2017-07-18 18:32:49.000000000","message":"So far there is no plan for cast.\nSince it\u0027s small cost to have this parameter,\nI\u0027d like to have model more generic.","commit_id":"0b4ffc6b5c20bd5a61697cf41881b5597b275c5e"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"c08ee0aefc34a6a30ef692bccab24a0305344d37","unresolved":false,"context_lines":[{"line_number":314,"context_line":"  In this case, multiple instances of neutron server may receive"},{"line_number":315,"context_line":"  same RPC request from single ODL server instance."},{"line_number":316,"context_line":"  In order to avoid processing the request multiple times by multiple"},{"line_number":317,"context_line":"  instances of Neutron server, we\u0027d like to elect Neutron server dedicated"},{"line_number":318,"context_line":"  to process RPC request."},{"line_number":319,"context_line":"- Business logic in ODL can send RPC request to any ODL instances."},{"line_number":320,"context_line":"  We\u0027d like to route RPC request message to ODL instance that has"}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f1d235d_72f86dc3","line":317,"range":{"start_line":317,"start_character":31,"end_line":317,"end_character":64},"updated":"2017-07-11 07:23:58.000000000","message":"how?","commit_id":"0b4ffc6b5c20bd5a61697cf41881b5597b275c5e"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"8ed8a35960fd244016f207a28fd2e98dd751144d","unresolved":false,"context_lines":[{"line_number":314,"context_line":"  In this case, multiple instances of neutron server may receive"},{"line_number":315,"context_line":"  same RPC request from single ODL server instance."},{"line_number":316,"context_line":"  In order to avoid processing the request multiple times by multiple"},{"line_number":317,"context_line":"  instances of Neutron server, we\u0027d like to elect Neutron server dedicated"},{"line_number":318,"context_line":"  to process RPC request."},{"line_number":319,"context_line":"- Business logic in ODL can send RPC request to any ODL instances."},{"line_number":320,"context_line":"  We\u0027d like to route RPC request message to ODL instance that has"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1f1a1f67_b7f67bd6","line":317,"range":{"start_line":317,"start_character":31,"end_line":317,"end_character":64},"in_reply_to":"3f1d235d_72f86dc3","updated":"2017-07-18 18:32:49.000000000","message":"Added more description.\nbasically use OpenDaylightMaintenance table to get global lock so that only single Neutron server is serving RPC.","commit_id":"0b4ffc6b5c20bd5a61697cf41881b5597b275c5e"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"c08ee0aefc34a6a30ef692bccab24a0305344d37","unresolved":false,"context_lines":[{"line_number":336,"context_line":"  If RPC is requested by someone in ODL, only single request is sent"},{"line_number":337,"context_line":"  over to networking-odl no matter how many websocket connections between"},{"line_number":338,"context_line":"  many instances of networking-odl and ODL for at-most-once semantics."},{"line_number":339,"context_line":"  (or somehow at-most-once semantics needs to be kept.)"},{"line_number":340,"context_line":"- If there is no websockets(or the connection can be lost at any point of"},{"line_number":341,"context_line":"  processing), message will be lost. In that case, RPC requests will result"},{"line_number":342,"context_line":"  in timeout error. RPC caller doesn\u0027t know if the request is processed or not"}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f1d235d_72cf4d7f","line":339,"range":{"start_line":339,"start_character":3,"end_line":339,"end_character":54},"updated":"2017-07-11 07:23:58.000000000","message":"why?\n\nwhile i can see why it\u0027s nice to have the compatible semantics, i\u0027m not sure why it needs to.","commit_id":"0b4ffc6b5c20bd5a61697cf41881b5597b275c5e"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"8ed8a35960fd244016f207a28fd2e98dd751144d","unresolved":false,"context_lines":[{"line_number":336,"context_line":"  If RPC is requested by someone in ODL, only single request is sent"},{"line_number":337,"context_line":"  over to networking-odl no matter how many websocket connections between"},{"line_number":338,"context_line":"  many instances of networking-odl and ODL for at-most-once semantics."},{"line_number":339,"context_line":"  (or somehow at-most-once semantics needs to be kept.)"},{"line_number":340,"context_line":"- If there is no websockets(or the connection can be lost at any point of"},{"line_number":341,"context_line":"  processing), message will be lost. In that case, RPC requests will result"},{"line_number":342,"context_line":"  in timeout error. RPC caller doesn\u0027t know if the request is processed or not"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1f1a1f67_37beebb3","line":339,"range":{"start_line":339,"start_character":3,"end_line":339,"end_character":54},"in_reply_to":"3f1d235d_72cf4d7f","updated":"2017-07-18 18:32:49.000000000","message":"You\u0027re right. I updated wording.","commit_id":"0b4ffc6b5c20bd5a61697cf41881b5597b275c5e"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"4eba455df3126a2f7a19ef6d21ef7d353e71afb0","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Problem Description"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Now ODL is supporting more and more functionality of openstack."},{"line_number":23,"context_line":"and it\u0027s starting to require closer communication between neutron server"},{"line_number":24,"context_line":"like neutron agent. Missing part is openstack RPC from ODL (as RPC client)"},{"line_number":25,"context_line":"to neutron server(as RPC server)."}],"source_content_type":"text/x-rst","patch_set":15,"id":"1f1a1f67_e12c0cad","line":22,"range":{"start_line":22,"start_character":53,"end_line":22,"end_character":63},"updated":"2017-07-19 17:37:15.000000000","message":"nit: could be very specific saying `openstack neutron` here\nno action required if you choose to go with just openstack","commit_id":"31b385e4402f981c0091845c828b7024d97e363e"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"4eba455df3126a2f7a19ef6d21ef7d353e71afb0","unresolved":false,"context_lines":[{"line_number":71,"context_line":"  |  neutron RPC interface                  |"},{"line_number":72,"context_line":"  |     ^  neutron.callbacks.               |"},{"line_number":73,"context_line":"  |     |  neutron/api/rpc/handlers/*_rpc.py|"},{"line_number":74,"context_line":"  |     |  class *Callback                  |"},{"line_number":75,"context_line":"  |     |                                   |"},{"line_number":76,"context_line":"  +-----|-----------------------------------+"},{"line_number":77,"context_line":"  |     |                    networking-odl |"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1f1a1f67_847e86e1","line":74,"range":{"start_line":74,"start_character":17,"end_line":74,"end_character":26},"updated":"2017-07-19 17:37:15.000000000","message":"*RpcCallback ?","commit_id":"31b385e4402f981c0091845c828b7024d97e363e"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"4eba455df3126a2f7a19ef6d21ef7d353e71afb0","unresolved":false,"context_lines":[{"line_number":68,"context_line":"  +-----------------------------------------+"},{"line_number":69,"context_line":"  | Neutron                                 |"},{"line_number":70,"context_line":"  |                                         |"},{"line_number":71,"context_line":"  |  neutron RPC interface                  |"},{"line_number":72,"context_line":"  |     ^  neutron.callbacks.               |"},{"line_number":73,"context_line":"  |     |  neutron/api/rpc/handlers/*_rpc.py|"},{"line_number":74,"context_line":"  |     |  class *Callback                  |"},{"line_number":75,"context_line":"  |     |                                   |"},{"line_number":76,"context_line":"  +-----|-----------------------------------+"},{"line_number":77,"context_line":"  |     |                    networking-odl |"},{"line_number":78,"context_line":"  |     |                                   |"},{"line_number":79,"context_line":"  |     | RPC call                          |"},{"line_number":80,"context_line":"  |     | multiplex based on topic          |"},{"line_number":81,"context_line":"  |     |                                   |"},{"line_number":82,"context_line":"  | RPC dispatcher(@)                       |"},{"line_number":83,"context_line":"  |          subclass of oslo.messaging     | networking-odl connects to ODL"},{"line_number":84,"context_line":"  |          or something similar           | and establishes websocket."},{"line_number":85,"context_line":"  |          to call neutron RPC callbacks  | RPC call/return is send over"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1f1a1f67_477190a7","line":82,"range":{"start_line":71,"start_character":4,"end_line":82,"end_character":33},"updated":"2017-07-19 17:37:15.000000000","message":"there is no direction indicated from RPC callback to RpcDispatcher ? so what does Rpc dispatcher replies to restconf ? does it calculates in dispatcher itself based or if neutron Rpc passes any reply then direction needs to be added there.","commit_id":"31b385e4402f981c0091845c828b7024d97e363e"}]}
