)]}'
{"specs/liberty/approved/add-ability-to-run-openstack-nova-apis-by-apache-nginx.rst":[{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"33bb4278ce13de0d96626a5880465091aceb1721","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Right now eventlet serves as web server for nova API services. Eventlet is"},{"line_number":18,"context_line":"awesome networking library but it doesn\u0027t have Python 3 support also it is"},{"line_number":19,"context_line":"hard to debug eventlet coroutines. It is great to have possibility to run nova"},{"line_number":20,"context_line":"APIs under different web servers. Such ability can be used to achieve the best"},{"line_number":21,"context_line":"performance and reliability for production configuration and at the same time"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a016987_44ee03ee","line":18,"updated":"2015-05-29 15:09:18.000000000","message":"this is not true anymore since eventlet 0.17 :)","commit_id":"bafcca6e925470f556de002148bcc3bbd7915a27"},{"author":{"_account_id":14358,"name":"Marian Horban","email":"m.horban@gmail.com","username":"mhorban"},"change_message_id":"efcab09cb8363d83fe9e486a4568ceaeaa82f0f1","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Right now eventlet serves as web server for nova API services. Eventlet is"},{"line_number":18,"context_line":"awesome networking library but it doesn\u0027t have Python 3 support also it is"},{"line_number":19,"context_line":"hard to debug eventlet coroutines. It is great to have possibility to run nova"},{"line_number":20,"context_line":"APIs under different web servers. Such ability can be used to achieve the best"},{"line_number":21,"context_line":"performance and reliability for production configuration and at the same time"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_2505dac1","line":18,"in_reply_to":"7a016987_44ee03ee","updated":"2015-06-05 09:03:17.000000000","message":"Right you are. Done.","commit_id":"bafcca6e925470f556de002148bcc3bbd7915a27"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"33bb4278ce13de0d96626a5880465091aceb1721","unresolved":false,"context_lines":[{"line_number":23,"context_line":"With different web servers we can achieve new benefits. Apache web server"},{"line_number":24,"context_line":"allows to use single port for all nova API services and to proxies request to"},{"line_number":25,"context_line":"appropriate service by URL matching. With NGINX we can achieve best"},{"line_number":26,"context_line":"performance."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Use Cases"},{"line_number":29,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a016987_449cc369","line":26,"updated":"2015-05-29 15:09:18.000000000","message":"apart from easier debugging (e.g. one can easy use gdb + python-dbg to get python-level stack traces for each thread run by apache), apache/nginx provide efficient implementation of ssl,gzip,etc","commit_id":"bafcca6e925470f556de002148bcc3bbd7915a27"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"68296af47c055918d4b00d50de0b286c4ea8dd08","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Proposed change"},{"line_number":40,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":41,"context_line":"The first step to achieve this goals is to create generic OpenStack entry"},{"line_number":42,"context_line":"point. This entry point must be responsible for initialization of OpenStack"},{"line_number":43,"context_line":"components like RPC, logging and loading WSGI applications. That code will be"},{"line_number":44,"context_line":"put in nova/server directory."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a016987_171a7fc6","line":41,"updated":"2015-05-29 15:11:42.000000000","message":"++","commit_id":"bafcca6e925470f556de002148bcc3bbd7915a27"},{"author":{"_account_id":14358,"name":"Marian Horban","email":"m.horban@gmail.com","username":"mhorban"},"change_message_id":"efcab09cb8363d83fe9e486a4568ceaeaa82f0f1","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Proposed change"},{"line_number":40,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":41,"context_line":"The first step to achieve this goals is to create generic OpenStack entry"},{"line_number":42,"context_line":"point. This entry point must be responsible for initialization of OpenStack"},{"line_number":43,"context_line":"components like RPC, logging and loading WSGI applications. That code will be"},{"line_number":44,"context_line":"put in nova/server directory."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_4500d6aa","line":41,"in_reply_to":"7a016987_171a7fc6","updated":"2015-06-05 09:03:17.000000000","message":"Done","commit_id":"bafcca6e925470f556de002148bcc3bbd7915a27"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"68296af47c055918d4b00d50de0b286c4ea8dd08","unresolved":false,"context_lines":[{"line_number":46,"context_line":"repository. Also templates for generation NGINX config file will be added"},{"line_number":47,"context_line":"devstack. Additional option \u0027NOVA_WEB_SERVER\u0027 will be added to devstack"},{"line_number":48,"context_line":"configuration. Default value for this variable will be \u0027eventlet\u0027 and there"},{"line_number":49,"context_line":"will be two additional options: \u0027apache\u0027 and \u0027nginx\u0027."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a016987_d71747a1","line":49,"updated":"2015-05-29 15:11:42.000000000","message":"we probably don\u0027t need to make devstack that much `smart`. apache would be more than enough, IMO","commit_id":"bafcca6e925470f556de002148bcc3bbd7915a27"},{"author":{"_account_id":14358,"name":"Marian Horban","email":"m.horban@gmail.com","username":"mhorban"},"change_message_id":"efcab09cb8363d83fe9e486a4568ceaeaa82f0f1","unresolved":false,"context_lines":[{"line_number":46,"context_line":"repository. Also templates for generation NGINX config file will be added"},{"line_number":47,"context_line":"devstack. Additional option \u0027NOVA_WEB_SERVER\u0027 will be added to devstack"},{"line_number":48,"context_line":"configuration. Default value for this variable will be \u0027eventlet\u0027 and there"},{"line_number":49,"context_line":"will be two additional options: \u0027apache\u0027 and \u0027nginx\u0027."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_0531bea2","line":49,"in_reply_to":"7a016987_d71747a1","updated":"2015-06-05 09:03:17.000000000","message":"Ok.","commit_id":"bafcca6e925470f556de002148bcc3bbd7915a27"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"33bb4278ce13de0d96626a5880465091aceb1721","unresolved":false,"context_lines":[{"line_number":88,"context_line":"---------------------"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"There will be three ways to run nova APIs: current way(using nova/cmd"},{"line_number":91,"context_line":"scripts), with Apache and NGINX web server. Deployer could manage it with"},{"line_number":92,"context_line":"option \u0027NOVA_WEB_SERVER\u0027 for devstack. For other systems deployer could use"},{"line_number":93,"context_line":"devstack Apache/NGINX configuration file as example. Additional Apache config"},{"line_number":94,"context_line":"file where nova API services share single port will be provided in devstack"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a016987_84f99b82","line":91,"updated":"2015-05-29 15:09:18.000000000","message":"I would say, it will be two ways:\n\n1) a standalone WSGI service powered by eventlet\n2) a WSGI application which can be run by any WSGI container you like (uwsgi, apache + mod_wsgi, etc, etc)","commit_id":"bafcca6e925470f556de002148bcc3bbd7915a27"},{"author":{"_account_id":14358,"name":"Marian Horban","email":"m.horban@gmail.com","username":"mhorban"},"change_message_id":"efcab09cb8363d83fe9e486a4568ceaeaa82f0f1","unresolved":false,"context_lines":[{"line_number":88,"context_line":"---------------------"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"There will be three ways to run nova APIs: current way(using nova/cmd"},{"line_number":91,"context_line":"scripts), with Apache and NGINX web server. Deployer could manage it with"},{"line_number":92,"context_line":"option \u0027NOVA_WEB_SERVER\u0027 for devstack. For other systems deployer could use"},{"line_number":93,"context_line":"devstack Apache/NGINX configuration file as example. Additional Apache config"},{"line_number":94,"context_line":"file where nova API services share single port will be provided in devstack"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_e525825c","line":91,"in_reply_to":"7a016987_84f99b82","updated":"2015-06-05 09:03:17.000000000","message":"Done","commit_id":"bafcca6e925470f556de002148bcc3bbd7915a27"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"68296af47c055918d4b00d50de0b286c4ea8dd08","unresolved":false,"context_lines":[{"line_number":114,"context_line":"* Implement entry point of nova APIs. This code will initialize RPC,"},{"line_number":115,"context_line":"  configure logging, load and return WSGI application."},{"line_number":116,"context_line":"* Compose Apache config files for nova services."},{"line_number":117,"context_line":"* Compose NGINX config files for nova services."},{"line_number":118,"context_line":"* Add scripts and templates to devstack for running nova APIs by Apache or"},{"line_number":119,"context_line":"  Nginx. Add ability to choose web server."},{"line_number":120,"context_line":"* Implement additional Apache configuration for using single nova API port"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a016987_b77f2bde","line":117,"updated":"2015-05-29 15:11:42.000000000","message":"IMO, we should skip this","commit_id":"bafcca6e925470f556de002148bcc3bbd7915a27"},{"author":{"_account_id":14358,"name":"Marian Horban","email":"m.horban@gmail.com","username":"mhorban"},"change_message_id":"efcab09cb8363d83fe9e486a4568ceaeaa82f0f1","unresolved":false,"context_lines":[{"line_number":114,"context_line":"* Implement entry point of nova APIs. This code will initialize RPC,"},{"line_number":115,"context_line":"  configure logging, load and return WSGI application."},{"line_number":116,"context_line":"* Compose Apache config files for nova services."},{"line_number":117,"context_line":"* Compose NGINX config files for nova services."},{"line_number":118,"context_line":"* Add scripts and templates to devstack for running nova APIs by Apache or"},{"line_number":119,"context_line":"  Nginx. Add ability to choose web server."},{"line_number":120,"context_line":"* Implement additional Apache configuration for using single nova API port"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_c52a862c","line":117,"in_reply_to":"7a016987_b77f2bde","updated":"2015-06-05 09:03:17.000000000","message":"Done","commit_id":"bafcca6e925470f556de002148bcc3bbd7915a27"},{"author":{"_account_id":12363,"name":"Oleksii Chuprykov","email":"a.chuprikoff@gmail.com","username":"ochuprykov"},"change_message_id":"99f4c394303f643d1bfd9320866104d0bab384e0","unresolved":false,"context_lines":[{"line_number":23,"context_line":"python-dbg to get python-level stack traces for each thread run by apache)."},{"line_number":24,"context_line":"With different web servers we can achieve new benefits. Apache web server"},{"line_number":25,"context_line":"allows to use single port for all nova API services and to proxies request to"},{"line_number":26,"context_line":"appropriate service by URL matching. We can achieve better performance with"},{"line_number":27,"context_line":"efficient implementation of NGINX."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_769ca369","line":26,"updated":"2015-06-05 12:02:37.000000000","message":"Did you mean apache name-based vhosts? In this case we need to modify `Host:` header of each request. Is it possible to avoid such modification for running several services on one ip:port pair?","commit_id":"15b46cd05624a22a8c31d73f90df11f7b941ecde"}]}
