)]}'
{"doc/source/devref/index.rst":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"14db4864b15c3e9cbb01766123f4f7199d1f07e3","unresolved":false,"context_lines":[{"line_number":45,"context_line":"   layer3"},{"line_number":46,"context_line":"   l2_agents"},{"line_number":47,"context_line":"   advanced_services"},{"line_number":48,"context_line":"   services_and_agents"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Module Reference"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da86d52c_3d786cc3","line":48,"updated":"2015-02-19 17:25:19.000000000","message":"to be honest I\u0027d rather have this coming earlier, as it needs to stand out IMO.\n\nI\u0027d even make it more explicit like \u0027Eventlet Gotchas\u0027 :)","commit_id":"c197a5c81e4463ebf28808be4afff9e9596238b1"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"06e40f9d72792a77907b64619cef6771b5cbda37","unresolved":false,"context_lines":[{"line_number":45,"context_line":"   layer3"},{"line_number":46,"context_line":"   l2_agents"},{"line_number":47,"context_line":"   advanced_services"},{"line_number":48,"context_line":"   services_and_agents"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Module Reference"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da86d52c_e6a39b9b","line":48,"in_reply_to":"da86d52c_3d786cc3","updated":"2015-02-19 21:17:36.000000000","message":"I don\u0027t think we should give detailed info on why\u0027s of those gotchas but just reference to proper external doc.\n\nI also think the page should briefly document the general setup of services and agents on a real setup (added in new patchset).\n\nNot sure where the entry should stand in the list. Moving to the top for now, but really, if you have better idea, just tell me. I have no specific preference here.","commit_id":"c197a5c81e4463ebf28808be4afff9e9596238b1"}],"doc/source/devref/services_and_agents.rst":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"14db4864b15c3e9cbb01766123f4f7199d1f07e3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Service entry points"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Entry points for services are defined in setup.cfg, console_scripts section."}],"source_content_type":"text/x-rst","patch_set":1,"id":"da86d52c_7d55841c","line":1,"updated":"2015-02-19 17:25:19.000000000","message":"and the file is called services_and_agents?","commit_id":"c197a5c81e4463ebf28808be4afff9e9596238b1"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"06e40f9d72792a77907b64619cef6771b5cbda37","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Service entry points"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Entry points for services are defined in setup.cfg, console_scripts section."}],"source_content_type":"text/x-rst","patch_set":1,"id":"da86d52c_86badfbd","line":1,"in_reply_to":"da86d52c_7d55841c","updated":"2015-02-19 21:17:36.000000000","message":"See new patchset.","commit_id":"c197a5c81e4463ebf28808be4afff9e9596238b1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"14db4864b15c3e9cbb01766123f4f7199d1f07e3","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Note: some of existing vendor/plugin agents are still maintaining their entry"},{"line_number":9,"context_line":"points in other locations. Developers behind those agents are welcome to apply"},{"line_number":10,"context_line":"the guideline above."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Eventlet"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da86d52c_5d2c3f93","line":10,"updated":"2015-02-19 17:25:19.000000000","message":"what if we have two separate docs? One about entry points and the other about eventlet monkey patching guidelines?","commit_id":"c197a5c81e4463ebf28808be4afff9e9596238b1"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"06e40f9d72792a77907b64619cef6771b5cbda37","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Note: some of existing vendor/plugin agents are still maintaining their entry"},{"line_number":9,"context_line":"points in other locations. Developers behind those agents are welcome to apply"},{"line_number":10,"context_line":"the guideline above."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Eventlet"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da86d52c_66b7abd8","line":10,"in_reply_to":"da86d52c_5d2c3f93","updated":"2015-02-19 21:17:36.000000000","message":"I think it\u0027s fine to have it on one page, though I agree those two sections should be logically bound by a preface. I\u0027m adding some stuff here to make it more appropriate.","commit_id":"c197a5c81e4463ebf28808be4afff9e9596238b1"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"228c7543c59a6caaf46bd2f1fad1c204bffe4dcd","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#. Layer2 agent (it can utilize openvswitch, linuxbridge, or other vendor"},{"line_number":11,"context_line":"   technology to provide network segmentation and isolation for tenants, also"},{"line_number":12,"context_line":"   called users). This agent runs on every Compute node (the nodes that serve"},{"line_number":13,"context_line":"   hypervizors)."},{"line_number":14,"context_line":"#. Layer3 agent that runs on Network node and provides East-West and"},{"line_number":15,"context_line":"   North-South routing plus advanced services such as load balancing,"},{"line_number":16,"context_line":"   firewall-as-a-service etc."}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_9f578259","line":13,"updated":"2015-02-20 13:45:13.000000000","message":"hypervisors","commit_id":"77818d01cad43eed46d957f18c829bea57bf8947"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"97f10231f9e7236a979ef805a84079edb8eed89d","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#. Layer2 agent (it can utilize openvswitch, linuxbridge, or other vendor"},{"line_number":11,"context_line":"   technology to provide network segmentation and isolation for tenants, also"},{"line_number":12,"context_line":"   called users). This agent runs on every Compute node (the nodes that serve"},{"line_number":13,"context_line":"   hypervizors)."},{"line_number":14,"context_line":"#. Layer3 agent that runs on Network node and provides East-West and"},{"line_number":15,"context_line":"   North-South routing plus advanced services such as load balancing,"},{"line_number":16,"context_line":"   firewall-as-a-service etc."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba7be1f8_9e48295d","line":13,"in_reply_to":"da86d52c_9f578259","updated":"2015-02-20 18:12:20.000000000","message":"Done","commit_id":"77818d01cad43eed46d957f18c829bea57bf8947"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"228c7543c59a6caaf46bd2f1fad1c204bffe4dcd","unresolved":false,"context_lines":[{"line_number":15,"context_line":"   North-South routing plus advanced services such as load balancing,"},{"line_number":16,"context_line":"   firewall-as-a-service etc."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"For the matter of the document, we call all services, servers and agents that"},{"line_number":19,"context_line":"are executed on any node as just \"services\"."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_df89faca","line":18,"updated":"2015-02-20 13:45:13.000000000","message":"For the purpose of this document,","commit_id":"77818d01cad43eed46d957f18c829bea57bf8947"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"97f10231f9e7236a979ef805a84079edb8eed89d","unresolved":false,"context_lines":[{"line_number":15,"context_line":"   North-South routing plus advanced services such as load balancing,"},{"line_number":16,"context_line":"   firewall-as-a-service etc."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"For the matter of the document, we call all services, servers and agents that"},{"line_number":19,"context_line":"are executed on any node as just \"services\"."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba7be1f8_de79c194","line":18,"in_reply_to":"da86d52c_df89faca","updated":"2015-02-20 18:12:20.000000000","message":"Done","commit_id":"77818d01cad43eed46d957f18c829bea57bf8947"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"228c7543c59a6caaf46bd2f1fad1c204bffe4dcd","unresolved":false,"context_lines":[{"line_number":16,"context_line":"   firewall-as-a-service etc."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"For the matter of the document, we call all services, servers and agents that"},{"line_number":19,"context_line":"are executed on any node as just \"services\"."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Entry points"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_3f8bf6c0","line":19,"updated":"2015-02-20 13:45:13.000000000","message":"are executed -\u003e run","commit_id":"77818d01cad43eed46d957f18c829bea57bf8947"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"97f10231f9e7236a979ef805a84079edb8eed89d","unresolved":false,"context_lines":[{"line_number":16,"context_line":"   firewall-as-a-service etc."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"For the matter of the document, we call all services, servers and agents that"},{"line_number":19,"context_line":"are executed on any node as just \"services\"."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Entry points"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba7be1f8_9e5f490e","line":19,"in_reply_to":"da86d52c_3f8bf6c0","updated":"2015-02-20 18:12:20.000000000","message":"Done","commit_id":"77818d01cad43eed46d957f18c829bea57bf8947"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"228c7543c59a6caaf46bd2f1fad1c204bffe4dcd","unresolved":false,"context_lines":[{"line_number":26,"context_line":"Those entry points should generally point to main() functions located under"},{"line_number":27,"context_line":"neutron/cmd/... path."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Note: some of existing vendor/plugin agents are still maintaining their entry"},{"line_number":30,"context_line":"points in other locations. Developers behind those agents are welcome to apply"},{"line_number":31,"context_line":"the guideline above."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_df5e5a44","line":29,"updated":"2015-02-20 13:45:13.000000000","message":"some existing vendor/plugin agents still maintain ...","commit_id":"77818d01cad43eed46d957f18c829bea57bf8947"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"97f10231f9e7236a979ef805a84079edb8eed89d","unresolved":false,"context_lines":[{"line_number":26,"context_line":"Those entry points should generally point to main() functions located under"},{"line_number":27,"context_line":"neutron/cmd/... path."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Note: some of existing vendor/plugin agents are still maintaining their entry"},{"line_number":30,"context_line":"points in other locations. Developers behind those agents are welcome to apply"},{"line_number":31,"context_line":"the guideline above."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba7be1f8_fea5a504","line":29,"in_reply_to":"da86d52c_df5e5a44","updated":"2015-02-20 18:12:20.000000000","message":"Done","commit_id":"77818d01cad43eed46d957f18c829bea57bf8947"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"228c7543c59a6caaf46bd2f1fad1c204bffe4dcd","unresolved":false,"context_lines":[{"line_number":27,"context_line":"neutron/cmd/... path."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Note: some of existing vendor/plugin agents are still maintaining their entry"},{"line_number":30,"context_line":"points in other locations. Developers behind those agents are welcome to apply"},{"line_number":31,"context_line":"the guideline above."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_9f3862ef","line":30,"updated":"2015-02-20 13:45:13.000000000","message":"behind -\u003e responsible for","commit_id":"77818d01cad43eed46d957f18c829bea57bf8947"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"97f10231f9e7236a979ef805a84079edb8eed89d","unresolved":false,"context_lines":[{"line_number":27,"context_line":"neutron/cmd/... path."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Note: some of existing vendor/plugin agents are still maintaining their entry"},{"line_number":30,"context_line":"points in other locations. Developers behind those agents are welcome to apply"},{"line_number":31,"context_line":"the guideline above."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba7be1f8_3eaf3de5","line":30,"in_reply_to":"da86d52c_9f3862ef","updated":"2015-02-20 18:12:20.000000000","message":"Done","commit_id":"77818d01cad43eed46d957f18c829bea57bf8947"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"228c7543c59a6caaf46bd2f1fad1c204bffe4dcd","unresolved":false,"context_lines":[{"line_number":34,"context_line":"Eventlet gotcha"},{"line_number":35,"context_line":"---------------"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Neutron extensively utilizes eventlet library to provide asynchronous"},{"line_number":38,"context_line":"concurrency model to its services. To utilize it correctly, the following"},{"line_number":39,"context_line":"should be kept in mind."},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_7f1c8e77","line":37,"updated":"2015-02-20 13:45:13.000000000","message":"eventlet library -\u003e the eventlet library","commit_id":"77818d01cad43eed46d957f18c829bea57bf8947"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"97f10231f9e7236a979ef805a84079edb8eed89d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"Eventlet gotcha"},{"line_number":35,"context_line":"---------------"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Neutron extensively utilizes eventlet library to provide asynchronous"},{"line_number":38,"context_line":"concurrency model to its services. To utilize it correctly, the following"},{"line_number":39,"context_line":"should be kept in mind."},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba7be1f8_7eb9b52d","line":37,"in_reply_to":"da86d52c_7f1c8e77","updated":"2015-02-20 18:12:20.000000000","message":"Done","commit_id":"77818d01cad43eed46d957f18c829bea57bf8947"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"228c7543c59a6caaf46bd2f1fad1c204bffe4dcd","unresolved":false,"context_lines":[{"line_number":38,"context_line":"concurrency model to its services. To utilize it correctly, the following"},{"line_number":39,"context_line":"should be kept in mind."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"If a service utilizes eventlet library, it should not call to"},{"line_number":42,"context_line":"eventlet.monkey_patch() directly but instead maintain its entry point main()"},{"line_number":43,"context_line":"function under neutron/cmd/eventlet/... In that case stdlib will be"},{"line_number":44,"context_line":"automatically patched for the service on entry point import (monkey patching is"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba7be1f8_845e29e8","line":41,"updated":"2015-02-20 13:45:13.000000000","message":"eventlet library -\u003e the eventlet library\ncall to -\u003e call","commit_id":"77818d01cad43eed46d957f18c829bea57bf8947"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"97f10231f9e7236a979ef805a84079edb8eed89d","unresolved":false,"context_lines":[{"line_number":38,"context_line":"concurrency model to its services. To utilize it correctly, the following"},{"line_number":39,"context_line":"should be kept in mind."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"If a service utilizes eventlet library, it should not call to"},{"line_number":42,"context_line":"eventlet.monkey_patch() directly but instead maintain its entry point main()"},{"line_number":43,"context_line":"function under neutron/cmd/eventlet/... In that case stdlib will be"},{"line_number":44,"context_line":"automatically patched for the service on entry point import (monkey patching is"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba7be1f8_be824d50","line":41,"in_reply_to":"ba7be1f8_845e29e8","updated":"2015-02-20 18:12:20.000000000","message":"Done","commit_id":"77818d01cad43eed46d957f18c829bea57bf8947"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"228c7543c59a6caaf46bd2f1fad1c204bffe4dcd","unresolved":false,"context_lines":[{"line_number":45,"context_line":"done inside `python package file"},{"line_number":46,"context_line":"\u003chttp://git.openstack.org/cgit/openstack/neutron/tree/neutron/cmd/eventlet/__init__.py\u003e`_)."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Note: the entry point main() function may be a dummy that just calls to a"},{"line_number":49,"context_line":"\u0027real\u0027 main() located elsewhere, as is done for reference services (DHCP, L3,"},{"line_number":50,"context_line":"neutron-server etc.)"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba7be1f8_04af99e4","line":48,"updated":"2015-02-20 13:45:13.000000000","message":"calls to a -\u003e calls a","commit_id":"77818d01cad43eed46d957f18c829bea57bf8947"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"97f10231f9e7236a979ef805a84079edb8eed89d","unresolved":false,"context_lines":[{"line_number":45,"context_line":"done inside `python package file"},{"line_number":46,"context_line":"\u003chttp://git.openstack.org/cgit/openstack/neutron/tree/neutron/cmd/eventlet/__init__.py\u003e`_)."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Note: the entry point main() function may be a dummy that just calls to a"},{"line_number":49,"context_line":"\u0027real\u0027 main() located elsewhere, as is done for reference services (DHCP, L3,"},{"line_number":50,"context_line":"neutron-server etc.)"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba7be1f8_3e965d95","line":48,"in_reply_to":"ba7be1f8_04af99e4","updated":"2015-02-20 18:12:20.000000000","message":"Done","commit_id":"77818d01cad43eed46d957f18c829bea57bf8947"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"228c7543c59a6caaf46bd2f1fad1c204bffe4dcd","unresolved":false,"context_lines":[{"line_number":49,"context_line":"\u0027real\u0027 main() located elsewhere, as is done for reference services (DHCP, L3,"},{"line_number":50,"context_line":"neutron-server etc.)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"For more info on the rationale behind the code tree setup, please check `the"},{"line_number":53,"context_line":"corresponding cross-project spec \u003chttps://review.openstack.org/#/c/154642/\u003e`_."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba7be1f8_64b6953f","line":52,"updated":"2015-02-20 13:45:13.000000000","message":"please check -\u003e see","commit_id":"77818d01cad43eed46d957f18c829bea57bf8947"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"97f10231f9e7236a979ef805a84079edb8eed89d","unresolved":false,"context_lines":[{"line_number":49,"context_line":"\u0027real\u0027 main() located elsewhere, as is done for reference services (DHCP, L3,"},{"line_number":50,"context_line":"neutron-server etc.)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"For more info on the rationale behind the code tree setup, please check `the"},{"line_number":53,"context_line":"corresponding cross-project spec \u003chttps://review.openstack.org/#/c/154642/\u003e`_."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba7be1f8_7e90d595","line":52,"in_reply_to":"ba7be1f8_64b6953f","updated":"2015-02-20 18:12:20.000000000","message":"Done","commit_id":"77818d01cad43eed46d957f18c829bea57bf8947"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"228c7543c59a6caaf46bd2f1fad1c204bffe4dcd","unresolved":false,"context_lines":[{"line_number":50,"context_line":"neutron-server etc.)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"For more info on the rationale behind the code tree setup, please check `the"},{"line_number":53,"context_line":"corresponding cross-project spec \u003chttps://review.openstack.org/#/c/154642/\u003e`_."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba7be1f8_64bbf50e","line":53,"updated":"2015-02-20 13:45:13.000000000","message":"Nit: https://review.openstack.org/154642\n(And this should be replaced with the published spec when it is approved.)","commit_id":"77818d01cad43eed46d957f18c829bea57bf8947"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"97f10231f9e7236a979ef805a84079edb8eed89d","unresolved":false,"context_lines":[{"line_number":50,"context_line":"neutron-server etc.)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"For more info on the rationale behind the code tree setup, please check `the"},{"line_number":53,"context_line":"corresponding cross-project spec \u003chttps://review.openstack.org/#/c/154642/\u003e`_."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba7be1f8_bee96d1c","line":53,"in_reply_to":"ba7be1f8_64bbf50e","updated":"2015-02-20 18:12:20.000000000","message":"Done","commit_id":"77818d01cad43eed46d957f18c829bea57bf8947"},{"author":{"_account_id":14352,"name":"Antoni Segura Puimedon","email":"celebdor@gmail.com","username":"toni"},"change_message_id":"b1e61999901966ddf852ae5d237b9b5c4de59857","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Services and agents"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Usual Neutron setup consists of multiple services and agents running on one or"},{"line_number":5,"context_line":"multiple nodes. Each of those services provide some of networking or API"},{"line_number":6,"context_line":"services. Among those of special interest:"},{"line_number":7,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_be95ede5","line":4,"updated":"2015-02-20 18:39:18.000000000","message":"Should be \u0027A usual Neutron setup\u0027","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4cef3be773a043946a0d238a938c01435e344501","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Services and agents"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Usual Neutron setup consists of multiple services and agents running on one or"},{"line_number":5,"context_line":"multiple nodes. Each of those services provide some of networking or API"},{"line_number":6,"context_line":"services. Among those of special interest:"},{"line_number":7,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_e276c03d","line":4,"in_reply_to":"ba7be1f8_be95ede5","updated":"2015-02-23 11:55:46.000000000","message":"Done","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":14352,"name":"Antoni Segura Puimedon","email":"celebdor@gmail.com","username":"toni"},"change_message_id":"b1e61999901966ddf852ae5d237b9b5c4de59857","unresolved":false,"context_lines":[{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Usual Neutron setup consists of multiple services and agents running on one or"},{"line_number":5,"context_line":"multiple nodes. Each of those services provide some of networking or API"},{"line_number":6,"context_line":"services. Among those of special interest:"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"#. neutron-server provides API endpoints and serves as a single point of access"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_7e9375fa","line":5,"updated":"2015-02-20 18:39:18.000000000","message":"Number agreement: s/provide/provides/\ndedinite article: s/of networking/of the networking/","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4cef3be773a043946a0d238a938c01435e344501","unresolved":false,"context_lines":[{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Usual Neutron setup consists of multiple services and agents running on one or"},{"line_number":5,"context_line":"multiple nodes. Each of those services provide some of networking or API"},{"line_number":6,"context_line":"services. Among those of special interest:"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"#. neutron-server provides API endpoints and serves as a single point of access"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_0272f448","line":5,"in_reply_to":"ba7be1f8_7e9375fa","updated":"2015-02-23 11:55:46.000000000","message":"Done","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":14352,"name":"Antoni Segura Puimedon","email":"celebdor@gmail.com","username":"toni"},"change_message_id":"b1e61999901966ddf852ae5d237b9b5c4de59857","unresolved":false,"context_lines":[{"line_number":5,"context_line":"multiple nodes. Each of those services provide some of networking or API"},{"line_number":6,"context_line":"services. Among those of special interest:"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"#. neutron-server provides API endpoints and serves as a single point of access"},{"line_number":9,"context_line":"   to database. It usually runs on nodes called Controllers."},{"line_number":10,"context_line":"#. Layer2 agent (it can utilize openvswitch, linuxbridge, or other vendor"},{"line_number":11,"context_line":"   technology to provide network segmentation and isolation for tenants, also"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_de4f0191","line":8,"updated":"2015-02-20 18:39:18.000000000","message":"s/-server/-server that/","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4cef3be773a043946a0d238a938c01435e344501","unresolved":false,"context_lines":[{"line_number":5,"context_line":"multiple nodes. Each of those services provide some of networking or API"},{"line_number":6,"context_line":"services. Among those of special interest:"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"#. neutron-server provides API endpoints and serves as a single point of access"},{"line_number":9,"context_line":"   to database. It usually runs on nodes called Controllers."},{"line_number":10,"context_line":"#. Layer2 agent (it can utilize openvswitch, linuxbridge, or other vendor"},{"line_number":11,"context_line":"   technology to provide network segmentation and isolation for tenants, also"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_c29e1c54","line":8,"in_reply_to":"ba7be1f8_de4f0191","updated":"2015-02-23 11:55:46.000000000","message":"Done","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":14352,"name":"Antoni Segura Puimedon","email":"celebdor@gmail.com","username":"toni"},"change_message_id":"b1e61999901966ddf852ae5d237b9b5c4de59857","unresolved":false,"context_lines":[{"line_number":6,"context_line":"services. Among those of special interest:"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"#. neutron-server provides API endpoints and serves as a single point of access"},{"line_number":9,"context_line":"   to database. It usually runs on nodes called Controllers."},{"line_number":10,"context_line":"#. Layer2 agent (it can utilize openvswitch, linuxbridge, or other vendor"},{"line_number":11,"context_line":"   technology to provide network segmentation and isolation for tenants, also"},{"line_number":12,"context_line":"   called users). This agent runs on every Compute node (the nodes that serve"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_5e5b1154","line":9,"updated":"2015-02-20 18:39:18.000000000","message":"definite article: s/to database/to the database/","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4cef3be773a043946a0d238a938c01435e344501","unresolved":false,"context_lines":[{"line_number":6,"context_line":"services. Among those of special interest:"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"#. neutron-server provides API endpoints and serves as a single point of access"},{"line_number":9,"context_line":"   to database. It usually runs on nodes called Controllers."},{"line_number":10,"context_line":"#. Layer2 agent (it can utilize openvswitch, linuxbridge, or other vendor"},{"line_number":11,"context_line":"   technology to provide network segmentation and isolation for tenants, also"},{"line_number":12,"context_line":"   called users). This agent runs on every Compute node (the nodes that serve"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_e2ade089","line":9,"in_reply_to":"ba7be1f8_5e5b1154","updated":"2015-02-23 11:55:46.000000000","message":"Done","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"60ab2d00fd12a18b3b19f349ac2c754316e7d010","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"#. neutron-server provides API endpoints and serves as a single point of access"},{"line_number":9,"context_line":"   to database. It usually runs on nodes called Controllers."},{"line_number":10,"context_line":"#. Layer2 agent (it can utilize openvswitch, linuxbridge, or other vendor"},{"line_number":11,"context_line":"   technology to provide network segmentation and isolation for tenants, also"},{"line_number":12,"context_line":"   called users). This agent runs on every Compute node (the nodes that serve"},{"line_number":13,"context_line":"   hypervisors)."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_c1dd6144","line":10,"updated":"2015-02-20 20:06:30.000000000","message":"Open vSwitch, Linuxbridge","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":14352,"name":"Antoni Segura Puimedon","email":"celebdor@gmail.com","username":"toni"},"change_message_id":"b1e61999901966ddf852ae5d237b9b5c4de59857","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"#. neutron-server provides API endpoints and serves as a single point of access"},{"line_number":9,"context_line":"   to database. It usually runs on nodes called Controllers."},{"line_number":10,"context_line":"#. Layer2 agent (it can utilize openvswitch, linuxbridge, or other vendor"},{"line_number":11,"context_line":"   technology to provide network segmentation and isolation for tenants, also"},{"line_number":12,"context_line":"   called users). This agent runs on every Compute node (the nodes that serve"},{"line_number":13,"context_line":"   hypervisors)."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_9e2ca9ad","line":10,"updated":"2015-02-20 18:39:18.000000000","message":"s/, or/ or/","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4cef3be773a043946a0d238a938c01435e344501","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"#. neutron-server provides API endpoints and serves as a single point of access"},{"line_number":9,"context_line":"   to database. It usually runs on nodes called Controllers."},{"line_number":10,"context_line":"#. Layer2 agent (it can utilize openvswitch, linuxbridge, or other vendor"},{"line_number":11,"context_line":"   technology to provide network segmentation and isolation for tenants, also"},{"line_number":12,"context_line":"   called users). This agent runs on every Compute node (the nodes that serve"},{"line_number":13,"context_line":"   hypervisors)."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_82b424d2","line":10,"in_reply_to":"ba7be1f8_9e2ca9ad","updated":"2015-02-23 11:55:46.000000000","message":"Done","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4cef3be773a043946a0d238a938c01435e344501","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"#. neutron-server provides API endpoints and serves as a single point of access"},{"line_number":9,"context_line":"   to database. It usually runs on nodes called Controllers."},{"line_number":10,"context_line":"#. Layer2 agent (it can utilize openvswitch, linuxbridge, or other vendor"},{"line_number":11,"context_line":"   technology to provide network segmentation and isolation for tenants, also"},{"line_number":12,"context_line":"   called users). This agent runs on every Compute node (the nodes that serve"},{"line_number":13,"context_line":"   hypervisors)."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_a2ca084d","line":10,"in_reply_to":"ba7be1f8_c1dd6144","updated":"2015-02-23 11:55:46.000000000","message":"Done","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"60ab2d00fd12a18b3b19f349ac2c754316e7d010","unresolved":false,"context_lines":[{"line_number":13,"context_line":"   hypervisors)."},{"line_number":14,"context_line":"#. Layer3 agent that runs on Network node and provides East-West and"},{"line_number":15,"context_line":"   North-South routing plus advanced services such as load balancing,"},{"line_number":16,"context_line":"   firewall-as-a-service etc."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"For the purpose of this document, we call all services, servers and agents that"},{"line_number":19,"context_line":"run on any node as just \"services\"."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_a1bf8dcf","line":16,"updated":"2015-02-20 20:06:30.000000000","message":"FWaaS, (notice comma at end).","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4cef3be773a043946a0d238a938c01435e344501","unresolved":false,"context_lines":[{"line_number":13,"context_line":"   hypervisors)."},{"line_number":14,"context_line":"#. Layer3 agent that runs on Network node and provides East-West and"},{"line_number":15,"context_line":"   North-South routing plus advanced services such as load balancing,"},{"line_number":16,"context_line":"   firewall-as-a-service etc."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"For the purpose of this document, we call all services, servers and agents that"},{"line_number":19,"context_line":"run on any node as just \"services\"."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_22de1812","line":16,"in_reply_to":"ba7be1f8_a1bf8dcf","updated":"2015-02-23 11:55:46.000000000","message":"Done","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"60ab2d00fd12a18b3b19f349ac2c754316e7d010","unresolved":false,"context_lines":[{"line_number":22,"context_line":"Entry points"},{"line_number":23,"context_line":"------------"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Entry points for services are defined in setup.cfg, console_scripts section."},{"line_number":26,"context_line":"Those entry points should generally point to main() functions located under"},{"line_number":27,"context_line":"neutron/cmd/... path."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_61c5955a","line":25,"updated":"2015-02-20 20:06:30.000000000","message":"\"Entry points for services are defined in setup.cfg under the \"console_scripts\" section.","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4cef3be773a043946a0d238a938c01435e344501","unresolved":false,"context_lines":[{"line_number":22,"context_line":"Entry points"},{"line_number":23,"context_line":"------------"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Entry points for services are defined in setup.cfg, console_scripts section."},{"line_number":26,"context_line":"Those entry points should generally point to main() functions located under"},{"line_number":27,"context_line":"neutron/cmd/... path."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_82eb44af","line":25,"in_reply_to":"ba7be1f8_61c5955a","updated":"2015-02-23 11:55:46.000000000","message":"Done","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"60ab2d00fd12a18b3b19f349ac2c754316e7d010","unresolved":false,"context_lines":[{"line_number":31,"context_line":"the guideline above."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Eventlet gotcha"},{"line_number":35,"context_line":"---------------"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Neutron extensively utilizes the eventlet library to provide asynchronous"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_c1aba187","line":34,"updated":"2015-02-20 20:06:30.000000000","message":"Maybe change this to:\n\nEventlet Issues","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4cef3be773a043946a0d238a938c01435e344501","unresolved":false,"context_lines":[{"line_number":31,"context_line":"the guideline above."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Eventlet gotcha"},{"line_number":35,"context_line":"---------------"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Neutron extensively utilizes the eventlet library to provide asynchronous"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_2205387a","line":34,"in_reply_to":"ba7be1f8_c1aba187","updated":"2015-02-23 11:55:46.000000000","message":"I\u0027ll make it \u0027Interacting with Eventlet\u0027 since it\u0027s not really an issue if you know how to handle it properly.","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":14352,"name":"Antoni Segura Puimedon","email":"celebdor@gmail.com","username":"toni"},"change_message_id":"b1e61999901966ddf852ae5d237b9b5c4de59857","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"If a service utilizes the eventlet library, it should not call"},{"line_number":42,"context_line":"eventlet.monkey_patch() directly but instead maintain its entry point main()"},{"line_number":43,"context_line":"function under neutron/cmd/eventlet/... In that case stdlib will be"},{"line_number":44,"context_line":"automatically patched for the service on entry point import (monkey patching is"},{"line_number":45,"context_line":"done inside `python package file"},{"line_number":46,"context_line":"\u003chttp://git.openstack.org/cgit/openstack/neutron/tree/neutron/cmd/eventlet/__init__.py\u003e`_)."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_d9871b60","line":43,"updated":"2015-02-20 18:39:18.000000000","message":"s/In that case/If that is the case, the stdlib/","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4cef3be773a043946a0d238a938c01435e344501","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"If a service utilizes the eventlet library, it should not call"},{"line_number":42,"context_line":"eventlet.monkey_patch() directly but instead maintain its entry point main()"},{"line_number":43,"context_line":"function under neutron/cmd/eventlet/... In that case stdlib will be"},{"line_number":44,"context_line":"automatically patched for the service on entry point import (monkey patching is"},{"line_number":45,"context_line":"done inside `python package file"},{"line_number":46,"context_line":"\u003chttp://git.openstack.org/cgit/openstack/neutron/tree/neutron/cmd/eventlet/__init__.py\u003e`_)."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_c23a9c33","line":43,"in_reply_to":"ba7be1f8_d9871b60","updated":"2015-02-23 11:55:46.000000000","message":"Done. Also renamed stdlib into \u0027the standard Python library\u0027. It\u0027s longer but more clear.","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":14352,"name":"Antoni Segura Puimedon","email":"celebdor@gmail.com","username":"toni"},"change_message_id":"b1e61999901966ddf852ae5d237b9b5c4de59857","unresolved":false,"context_lines":[{"line_number":45,"context_line":"done inside `python package file"},{"line_number":46,"context_line":"\u003chttp://git.openstack.org/cgit/openstack/neutron/tree/neutron/cmd/eventlet/__init__.py\u003e`_)."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Note: the entry point main() function may be a dummy that just calls a \"real\""},{"line_number":49,"context_line":"main() located elsewhere, as is done for reference services (DHCP, L3,"},{"line_number":50,"context_line":"neutron-server etc.)"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_d9a63bc1","line":48,"updated":"2015-02-20 18:39:18.000000000","message":"what about:\nthe entry point \u0027main()\u0027 function may just be an indirection to the real callable located elsewhere, as is done for reference service such as DHCP, L3 and the neutron-server.","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4cef3be773a043946a0d238a938c01435e344501","unresolved":false,"context_lines":[{"line_number":45,"context_line":"done inside `python package file"},{"line_number":46,"context_line":"\u003chttp://git.openstack.org/cgit/openstack/neutron/tree/neutron/cmd/eventlet/__init__.py\u003e`_)."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Note: the entry point main() function may be a dummy that just calls a \"real\""},{"line_number":49,"context_line":"main() located elsewhere, as is done for reference services (DHCP, L3,"},{"line_number":50,"context_line":"neutron-server etc.)"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_e24960d1","line":48,"in_reply_to":"ba7be1f8_d9a63bc1","updated":"2015-02-23 11:55:46.000000000","message":"Love it. Reused with minor modifications that seemed applicable.","commit_id":"650af7eaf2d177af37786abc31dbca7c89fb6f1c"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"d86840203b39b807e0392acb4b719c1993617576","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"#. neutron-server that provides API endpoints and serves as a single point of"},{"line_number":9,"context_line":"   access to the database. It usually runs on nodes called Controllers."},{"line_number":10,"context_line":"#. Layer2 agent (it can utilize Open vSwitch, Linuxbridge or other vendor"},{"line_number":11,"context_line":"   technology to provide network segmentation and isolation for tenants, also"},{"line_number":12,"context_line":"   called users). This agent runs on every Compute node (the nodes that serve"},{"line_number":13,"context_line":"   hypervisors)."}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba7be1f8_a520524a","line":10,"updated":"2015-02-23 12:22:38.000000000","message":"perhaps you should rephrase to remove parenthesis.","commit_id":"c9f4c6e24edb0ed5cf14c627c0869ae30df684de"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"8077ff67ec57f39256cd9f9e051bc900badd0495","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"#. neutron-server that provides API endpoints and serves as a single point of"},{"line_number":9,"context_line":"   access to the database. It usually runs on nodes called Controllers."},{"line_number":10,"context_line":"#. Layer2 agent (it can utilize Open vSwitch, Linuxbridge or other vendor"},{"line_number":11,"context_line":"   technology to provide network segmentation and isolation for tenants, also"},{"line_number":12,"context_line":"   called users). This agent runs on every Compute node (the nodes that serve"},{"line_number":13,"context_line":"   hypervisors)."}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba7be1f8_61fa9c44","line":10,"in_reply_to":"ba7be1f8_a520524a","updated":"2015-02-24 13:42:19.000000000","message":"Done","commit_id":"c9f4c6e24edb0ed5cf14c627c0869ae30df684de"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"d86840203b39b807e0392acb4b719c1993617576","unresolved":false,"context_lines":[{"line_number":8,"context_line":"#. neutron-server that provides API endpoints and serves as a single point of"},{"line_number":9,"context_line":"   access to the database. It usually runs on nodes called Controllers."},{"line_number":10,"context_line":"#. Layer2 agent (it can utilize Open vSwitch, Linuxbridge or other vendor"},{"line_number":11,"context_line":"   technology to provide network segmentation and isolation for tenants, also"},{"line_number":12,"context_line":"   called users). This agent runs on every Compute node (the nodes that serve"},{"line_number":13,"context_line":"   hypervisors)."},{"line_number":14,"context_line":"#. Layer3 agent that runs on Network node and provides East-West and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba7be1f8_252d4247","line":11,"updated":"2015-02-23 12:22:38.000000000","message":"isolation for tenants? or networks?","commit_id":"c9f4c6e24edb0ed5cf14c627c0869ae30df684de"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"8077ff67ec57f39256cd9f9e051bc900badd0495","unresolved":false,"context_lines":[{"line_number":8,"context_line":"#. neutron-server that provides API endpoints and serves as a single point of"},{"line_number":9,"context_line":"   access to the database. It usually runs on nodes called Controllers."},{"line_number":10,"context_line":"#. Layer2 agent (it can utilize Open vSwitch, Linuxbridge or other vendor"},{"line_number":11,"context_line":"   technology to provide network segmentation and isolation for tenants, also"},{"line_number":12,"context_line":"   called users). This agent runs on every Compute node (the nodes that serve"},{"line_number":13,"context_line":"   hypervisors)."},{"line_number":14,"context_line":"#. Layer3 agent that runs on Network node and provides East-West and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba7be1f8_81f79058","line":11,"in_reply_to":"ba7be1f8_252d4247","updated":"2015-02-24 13:42:19.000000000","message":"tenant networks :)","commit_id":"c9f4c6e24edb0ed5cf14c627c0869ae30df684de"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"d86840203b39b807e0392acb4b719c1993617576","unresolved":false,"context_lines":[{"line_number":9,"context_line":"   access to the database. It usually runs on nodes called Controllers."},{"line_number":10,"context_line":"#. Layer2 agent (it can utilize Open vSwitch, Linuxbridge or other vendor"},{"line_number":11,"context_line":"   technology to provide network segmentation and isolation for tenants, also"},{"line_number":12,"context_line":"   called users). This agent runs on every Compute node (the nodes that serve"},{"line_number":13,"context_line":"   hypervisors)."},{"line_number":14,"context_line":"#. Layer3 agent that runs on Network node and provides East-West and"},{"line_number":15,"context_line":"   North-South routing plus advanced services such as load balancing,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba7be1f8_2589c226","line":12,"updated":"2015-02-23 12:22:38.000000000","message":"\"on every Compute Node\", l3/dhcp agent also require it ... an some compute node have no l2-agent (vmware/hyperv?). Perhaps: This agent typically runs on Compute node would feet better?","commit_id":"c9f4c6e24edb0ed5cf14c627c0869ae30df684de"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"8077ff67ec57f39256cd9f9e051bc900badd0495","unresolved":false,"context_lines":[{"line_number":9,"context_line":"   access to the database. It usually runs on nodes called Controllers."},{"line_number":10,"context_line":"#. Layer2 agent (it can utilize Open vSwitch, Linuxbridge or other vendor"},{"line_number":11,"context_line":"   technology to provide network segmentation and isolation for tenants, also"},{"line_number":12,"context_line":"   called users). This agent runs on every Compute node (the nodes that serve"},{"line_number":13,"context_line":"   hypervisors)."},{"line_number":14,"context_line":"#. Layer3 agent that runs on Network node and provides East-West and"},{"line_number":15,"context_line":"   North-South routing plus advanced services such as load balancing,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba7be1f8_41af582a","line":12,"in_reply_to":"ba7be1f8_1eb13d47","updated":"2015-02-24 13:42:19.000000000","message":"That\u0027s a really good comment. I\u0027ll update appropriately.","commit_id":"c9f4c6e24edb0ed5cf14c627c0869ae30df684de"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"a66ef140f577daae863434228173fe85eee36f2f","unresolved":false,"context_lines":[{"line_number":9,"context_line":"   access to the database. It usually runs on nodes called Controllers."},{"line_number":10,"context_line":"#. Layer2 agent (it can utilize Open vSwitch, Linuxbridge or other vendor"},{"line_number":11,"context_line":"   technology to provide network segmentation and isolation for tenants, also"},{"line_number":12,"context_line":"   called users). This agent runs on every Compute node (the nodes that serve"},{"line_number":13,"context_line":"   hypervisors)."},{"line_number":14,"context_line":"#. Layer3 agent that runs on Network node and provides East-West and"},{"line_number":15,"context_line":"   North-South routing plus advanced services such as load balancing,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba7be1f8_1eb13d47","line":12,"in_reply_to":"ba7be1f8_2589c226","updated":"2015-02-24 13:29:06.000000000","message":"This is a good point - and the sentence needs to be amended to reflect Cedric\u0027s comment.\n\nThe L2 agent should run on every node where it is deemed responsible for wiring and securing virtual interfaces.","commit_id":"c9f4c6e24edb0ed5cf14c627c0869ae30df684de"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"a66ef140f577daae863434228173fe85eee36f2f","unresolved":false,"context_lines":[{"line_number":13,"context_line":"   hypervisors)."},{"line_number":14,"context_line":"#. Layer3 agent that runs on Network node and provides East-West and"},{"line_number":15,"context_line":"   North-South routing plus advanced services such as load balancing,"},{"line_number":16,"context_line":"   FWaaS, etc."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"For the purpose of this document, we call all services, servers and agents that"},{"line_number":19,"context_line":"run on any node as just \"services\"."}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba7be1f8_01ce40b4","line":16,"updated":"2015-02-24 13:29:06.000000000","message":"while at the moment firewall and vpn are piggibacked on the l3 agent, I don\u0027t this applies to load balancing","commit_id":"c9f4c6e24edb0ed5cf14c627c0869ae30df684de"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"8077ff67ec57f39256cd9f9e051bc900badd0495","unresolved":false,"context_lines":[{"line_number":13,"context_line":"   hypervisors)."},{"line_number":14,"context_line":"#. Layer3 agent that runs on Network node and provides East-West and"},{"line_number":15,"context_line":"   North-South routing plus advanced services such as load balancing,"},{"line_number":16,"context_line":"   FWaaS, etc."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"For the purpose of this document, we call all services, servers and agents that"},{"line_number":19,"context_line":"run on any node as just \"services\"."}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba7be1f8_c16a68ed","line":16,"in_reply_to":"ba7be1f8_01ce40b4","updated":"2015-02-24 13:42:19.000000000","message":"Done","commit_id":"c9f4c6e24edb0ed5cf14c627c0869ae30df684de"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"d86840203b39b807e0392acb4b719c1993617576","unresolved":false,"context_lines":[{"line_number":38,"context_line":"concurrency model to its services. To utilize it correctly, the following"},{"line_number":39,"context_line":"should be kept in mind."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"If a service utilizes the eventlet library, it should not call"},{"line_number":42,"context_line":"eventlet.monkey_patch() directly but instead maintain its entry point main()"},{"line_number":43,"context_line":"function under neutron/cmd/eventlet/... If that is the case, the standard"},{"line_number":44,"context_line":"Python library will be automatically patched for the service on entry point"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba7be1f8_a57cd221","line":41,"updated":"2015-02-23 12:22:38.000000000","message":"...,then it ..","commit_id":"c9f4c6e24edb0ed5cf14c627c0869ae30df684de"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"8077ff67ec57f39256cd9f9e051bc900badd0495","unresolved":false,"context_lines":[{"line_number":38,"context_line":"concurrency model to its services. To utilize it correctly, the following"},{"line_number":39,"context_line":"should be kept in mind."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"If a service utilizes the eventlet library, it should not call"},{"line_number":42,"context_line":"eventlet.monkey_patch() directly but instead maintain its entry point main()"},{"line_number":43,"context_line":"function under neutron/cmd/eventlet/... If that is the case, the standard"},{"line_number":44,"context_line":"Python library will be automatically patched for the service on entry point"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba7be1f8_e16becee","line":41,"in_reply_to":"ba7be1f8_a57cd221","updated":"2015-02-24 13:42:19.000000000","message":"Done","commit_id":"c9f4c6e24edb0ed5cf14c627c0869ae30df684de"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ce587ea63cdaf49e0999d919b47bb0c68c620f8f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Services and agents"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"A usual Neutron setup consists of multiple services and agents running on one"},{"line_number":5,"context_line":"or multiple nodes. Each of those services provides some of the networking or"},{"line_number":6,"context_line":"API services. Among those of special interest:"},{"line_number":7,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba7be1f8_2cd09b1e","line":4,"updated":"2015-02-24 13:55:28.000000000","message":"There are a number of neutron plugins that do not use agents.","commit_id":"7b1e8ce357744d0316c6dd3d9603f773020daa00"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"28bdd4106a797aae129ccf2b25b0c6449f82bbf4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Services and agents"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"A usual Neutron setup consists of multiple services and agents running on one"},{"line_number":5,"context_line":"or multiple nodes. Each of those services provides some of the networking or"},{"line_number":6,"context_line":"API services. Among those of special interest:"},{"line_number":7,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba7be1f8_8767a0b6","line":4,"in_reply_to":"ba7be1f8_2cd09b1e","updated":"2015-02-24 14:11:21.000000000","message":"no dhcp, no l3, nothing?","commit_id":"7b1e8ce357744d0316c6dd3d9603f773020daa00"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"6700bbac5fbf4a952ee5263e13e0cdf52e540ea5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Services and agents"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"A usual Neutron setup consists of multiple services and agents running on one"},{"line_number":5,"context_line":"or multiple nodes. Each of those services provides some of the networking or"},{"line_number":6,"context_line":"API services. Among those of special interest:"},{"line_number":7,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba7be1f8_c4b8abca","line":4,"in_reply_to":"ba7be1f8_8767a0b6","updated":"2015-02-24 17:06:37.000000000","message":"perhaps opencontrail/nuagenetworks plugins?","commit_id":"7b1e8ce357744d0316c6dd3d9603f773020daa00"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"cf2c1d59e6800851dca313f75b669390e150ae10","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Services and agents"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"A usual Neutron setup consists of multiple services and agents running on one"},{"line_number":5,"context_line":"or multiple nodes. Each of those services provides some of the networking or"},{"line_number":6,"context_line":"API services. Among those of special interest:"},{"line_number":7,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba7be1f8_8f5b12f5","line":4,"in_reply_to":"ba7be1f8_c4b8abca","updated":"2015-02-25 08:09:08.000000000","message":"well, Ihar wrote \"usual\". Can we just agree that the setups without any agents are unusual?","commit_id":"7b1e8ce357744d0316c6dd3d9603f773020daa00"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ce587ea63cdaf49e0999d919b47bb0c68c620f8f","unresolved":false,"context_lines":[{"line_number":8,"context_line":"#. neutron-server that provides API endpoints and serves as a single point of"},{"line_number":9,"context_line":"   access to the database. It usually runs on nodes called Controllers."},{"line_number":10,"context_line":"#. Layer2 agent that can utilize Open vSwitch, Linuxbridge or other vendor"},{"line_number":11,"context_line":"   technology to provide network segmentation and isolation for tenant"},{"line_number":12,"context_line":"   networks. The L2 agent should run on every node where it is deemed"},{"line_number":13,"context_line":"   responsible for wiring and securing virtual interfaces (usually both Compute"},{"line_number":14,"context_line":"   and Network nodes)."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba7be1f8_eca92391","line":11,"updated":"2015-02-24 13:55:28.000000000","message":"vendor technology \u003d\u003e vendor specific technology","commit_id":"7b1e8ce357744d0316c6dd3d9603f773020daa00"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"17d5425459d7ab8bf538dad5f02cd97c14859b53","unresolved":false,"context_lines":[{"line_number":8,"context_line":"#. neutron-server that provides API endpoints and serves as a single point of"},{"line_number":9,"context_line":"   access to the database. It usually runs on nodes called Controllers."},{"line_number":10,"context_line":"#. Layer2 agent that can utilize Open vSwitch, Linuxbridge or other vendor"},{"line_number":11,"context_line":"   technology to provide network segmentation and isolation for tenant"},{"line_number":12,"context_line":"   networks. The L2 agent should run on every node where it is deemed"},{"line_number":13,"context_line":"   responsible for wiring and securing virtual interfaces (usually both Compute"},{"line_number":14,"context_line":"   and Network nodes)."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba7be1f8_afe6fd41","line":11,"in_reply_to":"ba7be1f8_eca92391","updated":"2015-02-25 16:48:09.000000000","message":"Done","commit_id":"7b1e8ce357744d0316c6dd3d9603f773020daa00"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ce587ea63cdaf49e0999d919b47bb0c68c620f8f","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Neutron extensively utilizes the eventlet library to provide asynchronous"},{"line_number":38,"context_line":"concurrency model to its services. To utilize it correctly, the following"},{"line_number":39,"context_line":"should be kept in mind."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"If a service utilizes the eventlet library, then it should not call"},{"line_number":42,"context_line":"eventlet.monkey_patch() directly but instead maintain its entry point main()"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba7be1f8_0c867713","line":39,"updated":"2015-02-24 13:55:28.000000000","message":". \u003d\u003e :\n\nAnd the section below should be indented","commit_id":"7b1e8ce357744d0316c6dd3d9603f773020daa00"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"28bdd4106a797aae129ccf2b25b0c6449f82bbf4","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Neutron extensively utilizes the eventlet library to provide asynchronous"},{"line_number":38,"context_line":"concurrency model to its services. To utilize it correctly, the following"},{"line_number":39,"context_line":"should be kept in mind."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"If a service utilizes the eventlet library, then it should not call"},{"line_number":42,"context_line":"eventlet.monkey_patch() directly but instead maintain its entry point main()"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba7be1f8_47f848c3","line":39,"in_reply_to":"ba7be1f8_0c867713","updated":"2015-02-24 14:11:21.000000000","message":"I don\u0027t see how it\u0027s an improvement. Can you elaborate?","commit_id":"7b1e8ce357744d0316c6dd3d9603f773020daa00"},{"author":{"_account_id":5127,"name":"Justin Hammond","email":"runningempty@gmail.com","username":"justin-hammond"},"change_message_id":"d62be087aacf6f0443ef398437e0174c9368711e","unresolved":false,"context_lines":[{"line_number":47,"context_line":"\u003chttp://git.openstack.org/cgit/openstack/neutron/tree/neutron/cmd/eventlet/__init__.py\u003e`_)."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Note: an entry point \u0027main()\u0027 function may just be an indirection to a real"},{"line_number":50,"context_line":"callable located elsewhere, as is done for reference services such as DHCP, L3"},{"line_number":51,"context_line":"and the neutron-server."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"For more info on the rationale behind the code tree setup, see `the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ba7be1f8_5bdb757b","line":50,"updated":"2015-02-25 22:25:04.000000000","message":"Would there be value in linking references to sections of code here?","commit_id":"6f7d8be1524d1dc5c8b1f080ea4d85f0b348b7bf"}]}
