)]}'
{"doc/source/admin/apache-httpd.rst":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"357c9a9ebda3222ce5d69324f36e60546514fa69","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"When running Glance under the uWSGI server Glance is unable to find where the"},{"line_number":75,"context_line":"python interpreter lives. This is because the uWSGI server links against"},{"line_number":76,"context_line":"libpython.so so python code things the interpreter is the path to uwsgi. This is"},{"line_number":77,"context_line":"fine except for when running the tasks API python modules are launched in"},{"line_number":78,"context_line":"a subprocess by directly calling the interpreter. The ``python_exec`` option"},{"line_number":79,"context_line":"in the ``taskflow_execute`` config file section exists to address this. You"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7f96bb07_2e2cacaa","line":76,"range":{"start_line":76,"start_character":28,"end_line":76,"end_character":34},"updated":"2018-01-16 09:28:53.000000000","message":"thinks?","commit_id":"e3955037bc86bd7da3a9ae22c2c3147f78a7334b"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"96cdeb2b6ca3236370a270b2f7c7889b04238e8e","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"When running Glance under the uWSGI server Glance is unable to find where the"},{"line_number":75,"context_line":"python interpreter lives. This is because the uWSGI server links against"},{"line_number":76,"context_line":"libpython.so so python code things the interpreter is the path to uwsgi. This is"},{"line_number":77,"context_line":"fine except for when running the tasks API python modules are launched in"},{"line_number":78,"context_line":"a subprocess by directly calling the interpreter. The ``python_exec`` option"},{"line_number":79,"context_line":"in the ``taskflow_execute`` config file section exists to address this. You"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7f96bb07_917878c4","line":76,"range":{"start_line":76,"start_character":28,"end_line":76,"end_character":34},"in_reply_to":"7f96bb07_2e2cacaa","updated":"2018-01-16 15:14:33.000000000","message":"Done","commit_id":"e3955037bc86bd7da3a9ae22c2c3147f78a7334b"}],"glance/async/flows/introspect.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"357c9a9ebda3222ce5d69324f36e60546514fa69","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        try:"},{"line_number":62,"context_line":"            python_exec \u003d None"},{"line_number":63,"context_line":"            if sys.executable \u003d\u003d \u0027uwsgi\u0027:"},{"line_number":64,"context_line":"                if CONF.taskflow_executor.python_exec:"},{"line_number":65,"context_line":"                    python_exec \u003d CONF.taskflow_executor.python_exec"},{"line_number":66,"context_line":"                else:"},{"line_number":67,"context_line":"                    version \u003d sys.version_info[0]"},{"line_number":68,"context_line":"                    python_exec \u003d \u0027/usr/bin/python\u0027 + version"},{"line_number":69,"context_line":"            stdout, stderr \u003d putils.trycmd(\u0027qemu-img\u0027, \u0027info\u0027,"},{"line_number":70,"context_line":"                                           \u0027--output\u003djson\u0027, file_path,"},{"line_number":71,"context_line":"                                           prlimit\u003dutils.QEMU_IMG_PROC_LIMITS,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_6945ce42","line":68,"range":{"start_line":64,"start_character":16,"end_line":68,"end_character":61},"updated":"2018-01-16 09:28:53.000000000","message":"some refactoring if sounds good.\n\npython_exec \u003d CONF.taskflow_executor.python_exec\nif not python_exec:\n    python_exec \u003d \u0027/usr/bin/python%s\u0027 % sys.version_info[0]","commit_id":"e3955037bc86bd7da3a9ae22c2c3147f78a7334b"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"96cdeb2b6ca3236370a270b2f7c7889b04238e8e","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        try:"},{"line_number":62,"context_line":"            python_exec \u003d None"},{"line_number":63,"context_line":"            if sys.executable \u003d\u003d \u0027uwsgi\u0027:"},{"line_number":64,"context_line":"                if CONF.taskflow_executor.python_exec:"},{"line_number":65,"context_line":"                    python_exec \u003d CONF.taskflow_executor.python_exec"},{"line_number":66,"context_line":"                else:"},{"line_number":67,"context_line":"                    version \u003d sys.version_info[0]"},{"line_number":68,"context_line":"                    python_exec \u003d \u0027/usr/bin/python\u0027 + version"},{"line_number":69,"context_line":"            stdout, stderr \u003d putils.trycmd(\u0027qemu-img\u0027, \u0027info\u0027,"},{"line_number":70,"context_line":"                                           \u0027--output\u003djson\u0027, file_path,"},{"line_number":71,"context_line":"                                           prlimit\u003dutils.QEMU_IMG_PROC_LIMITS,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_11330816","line":68,"range":{"start_line":64,"start_character":16,"end_line":68,"end_character":61},"in_reply_to":"7f96bb07_6945ce42","updated":"2018-01-16 15:14:33.000000000","message":"Done","commit_id":"e3955037bc86bd7da3a9ae22c2c3147f78a7334b"},{"author":{"_account_id":27248,"name":"Prateek Goel","email":"prateek.goel2@tatacommunications.com","username":"prateek.goel"},"change_message_id":"74e4a6644a7eb2b5dec3784f95865345704d573c","unresolved":false,"context_lines":[{"line_number":36,"context_line":"         \"external python commands in an API server using uwsgi. If this \""},{"line_number":37,"context_line":"         \"is not specified /usr/bin/python2 or /usr/bin/python3 will be used \""},{"line_number":38,"context_line":"         \"(based on python version). Note if you\u0027re running glance from inside\""},{"line_number":39,"context_line":"         \" a virtualenvironment setting this to the python exectuable for the \""},{"line_number":40,"context_line":"         \" venv is import\")"},{"line_number":41,"context_line":"CONF.register_opt(python_exec_opt, group\u003d\u0027taskflow_executor\u0027)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa0c359_7ac492f5","line":40,"range":{"start_line":39,"start_character":13,"end_line":40,"end_character":26},"updated":"2018-02-10 16:15:23.000000000","message":"The statement appears a bit unclear. \"virtualenvironment\" and  \"venv is import\"","commit_id":"a9b696abbd73657e9b77a97c29fc8e029db38485"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"2bf6b1920791d565f30d3b3f93c4cb2b2626726c","unresolved":false,"context_lines":[{"line_number":36,"context_line":"         \"external python commands in an API server using uwsgi. If this \""},{"line_number":37,"context_line":"         \"is not specified /usr/bin/python2 or /usr/bin/python3 will be used \""},{"line_number":38,"context_line":"         \"(based on python version). Note if you\u0027re running glance from inside\""},{"line_number":39,"context_line":"         \" a virtualenvironment setting this to the python exectuable for the \""},{"line_number":40,"context_line":"         \" venv is import\")"},{"line_number":41,"context_line":"CONF.register_opt(python_exec_opt, group\u003d\u0027taskflow_executor\u0027)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa0c359_029daa64","line":40,"range":{"start_line":39,"start_character":13,"end_line":40,"end_character":26},"in_reply_to":"3fa0c359_7ac492f5","updated":"2018-02-13 17:34:34.000000000","message":"It\u0027s a typo; s/import/important/g","commit_id":"a9b696abbd73657e9b77a97c29fc8e029db38485"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b9ae6078d5df9d2d898dc69873c11ff04e27296d","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"python_exec_opt \u003d cfg.StrOpt("},{"line_number":34,"context_line":"    \u0027python_exec\u0027,"},{"line_number":35,"context_line":"    help\u003d\"The optional path to a python executable to use when running \""},{"line_number":36,"context_line":"         \"external python commands in an API server using uwsgi. If this \""},{"line_number":37,"context_line":"         \"is not specified /usr/bin/python2 or /usr/bin/python3 will be used \""},{"line_number":38,"context_line":"         \"(based on python version). Note if you\u0027re running glance from inside\""},{"line_number":39,"context_line":"         \" a virtualenvironment setting this to the python executable for the \""},{"line_number":40,"context_line":"         \" venv is important.\")"},{"line_number":41,"context_line":"CONF.register_opt(python_exec_opt, group\u003d\u0027taskflow_executor\u0027)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1f9dbf25_330545c3","line":40,"range":{"start_line":35,"start_character":0,"end_line":40,"end_character":31},"updated":"2018-03-02 08:14:19.000000000","message":"Please put this in the standard glance option help format.  You can find examples in http://git.openstack.org/cgit/openstack/glance/tree/glance/common/config.py","commit_id":"6f778c44ca24ba4d733790264fd5dc4201af36c6"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"36bc24290029fe5f4d9ee694ee768ce5e9eee9f9","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"python_exec_opt \u003d cfg.StrOpt("},{"line_number":34,"context_line":"    \u0027python_exec\u0027,"},{"line_number":35,"context_line":"    help\u003d\"The optional path to a python executable to use when running \""},{"line_number":36,"context_line":"         \"external python commands in an API server using uwsgi. If this \""},{"line_number":37,"context_line":"         \"is not specified /usr/bin/python2 or /usr/bin/python3 will be used \""},{"line_number":38,"context_line":"         \"(based on python version). Note if you\u0027re running glance from inside\""},{"line_number":39,"context_line":"         \" a virtualenvironment setting this to the python executable for the \""},{"line_number":40,"context_line":"         \" venv is important.\")"},{"line_number":41,"context_line":"CONF.register_opt(python_exec_opt, group\u003d\u0027taskflow_executor\u0027)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"df7087c5_707d286d","line":40,"range":{"start_line":35,"start_character":0,"end_line":40,"end_character":31},"in_reply_to":"1f9dbf25_330545c3","updated":"2018-03-07 15:39:40.000000000","message":"Done","commit_id":"6f778c44ca24ba4d733790264fd5dc4201af36c6"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"733def7948ceaf78687aa1a46892b6500e76af39","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            if sys.executable \u003d\u003d \u0027uwsgi\u0027:"},{"line_number":73,"context_line":"                python_exec \u003d CONF.taskflow_executor.python_exec"},{"line_number":74,"context_line":"                if not python_exec:"},{"line_number":75,"context_line":"                    python_exec \u003d \u0027/usr/bin/python%s\u0027 % sys.version_info[0]"},{"line_number":76,"context_line":"            stdout, stderr \u003d putils.trycmd(\u0027qemu-img\u0027, \u0027info\u0027,"},{"line_number":77,"context_line":"                                           \u0027--output\u003djson\u0027, file_path,"},{"line_number":78,"context_line":"                                           prlimit\u003dutils.QEMU_IMG_PROC_LIMITS,"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_aae0e0cd","line":75,"updated":"2018-05-08 18:58:11.000000000","message":"I\u0027m not sure if the virtualenv environment variables end up getting passed down to uwsgi in practice, but assuming they do then something like:\n\n    python_exec \u003d os.path.join(os.getenv(\u0027VIRTUAL_ENV\u0027, \u0027/usr\u0027),\n                               \u0027bin\u0027,\n                               \u0027python%d.%d\u0027 % sys.version_info[:2])\n\ncould further reduce the probability that the user will need to override the default choice in the config file.","commit_id":"b3ba6b8ba2639b7148f881d9fd009e6be8ce998f"}],"glance/opts.py":[{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"4f915c92e755c0aa56e24e50728a780a2d6729b6","unresolved":false,"context_lines":[{"line_number":31,"context_line":"import glance.async.flows.api_image_import"},{"line_number":32,"context_line":"import glance.async.flows.convert"},{"line_number":33,"context_line":"import glance.async.flows.introspect"},{"line_number":34,"context_line":"import glance.async.flows.plugins.inject_image_metadata"},{"line_number":35,"context_line":"from glance.async.flows.plugins import plugin_opts"},{"line_number":36,"context_line":"import glance.async.taskflow_executor"},{"line_number":37,"context_line":"import glance.common.config"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff6b8bd7_0024aa0c","line":34,"updated":"2018-03-05 08:47:32.000000000","message":"sorry, could you please clarify why unused import is here","commit_id":"6f778c44ca24ba4d733790264fd5dc4201af36c6"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"36bc24290029fe5f4d9ee694ee768ce5e9eee9f9","unresolved":false,"context_lines":[{"line_number":31,"context_line":"import glance.async.flows.api_image_import"},{"line_number":32,"context_line":"import glance.async.flows.convert"},{"line_number":33,"context_line":"import glance.async.flows.introspect"},{"line_number":34,"context_line":"import glance.async.flows.plugins.inject_image_metadata"},{"line_number":35,"context_line":"from glance.async.flows.plugins import plugin_opts"},{"line_number":36,"context_line":"import glance.async.taskflow_executor"},{"line_number":37,"context_line":"import glance.common.config"}],"source_content_type":"text/x-python","patch_set":11,"id":"df7087c5_905ebce4","line":34,"in_reply_to":"ff6b8bd7_0024aa0c","updated":"2018-03-07 15:39:40.000000000","message":"It was a rebase mistake. Done","commit_id":"6f778c44ca24ba4d733790264fd5dc4201af36c6"}],"releasenotes/notes/add-python-exec-config-727559a18a5b10b3.yaml":[{"author":{"_account_id":27248,"name":"Prateek Goel","email":"prateek.goel2@tatacommunications.com","username":"prateek.goel"},"change_message_id":"74e4a6644a7eb2b5dec3784f95865345704d573c","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - A new config option, ``python_exec``, was added to the ``taskflow_execute``"},{"line_number":4,"context_line":"    section. This option is used to specify the path to the python executable."},{"line_number":5,"context_line":"    This is only used when running under uwsgi and is used to specify the"},{"line_number":6,"context_line":"    path to the python executable which will be used for launching python"},{"line_number":7,"context_line":"    subprocesses. By default this will be /usr/bin/python2 or /usr/bin/python3"},{"line_number":8,"context_line":"    depending on the version of python used. If not running under glance under"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3fa0c359_3aba8a6d","line":5,"range":{"start_line":5,"start_character":41,"end_line":5,"end_character":46},"updated":"2018-02-10 16:15:23.000000000","message":"Can this also be uWSGI for consistency across.","commit_id":"a9b696abbd73657e9b77a97c29fc8e029db38485"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b9ae6078d5df9d2d898dc69873c11ff04e27296d","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    This is only used when running under uWSGI and is used to specify the"},{"line_number":6,"context_line":"    path to the python executable which will be used for launching python"},{"line_number":7,"context_line":"    subprocesses. By default this will be /usr/bin/python2 or /usr/bin/python3"},{"line_number":8,"context_line":"    depending on the version of python used. If not running under glance under"},{"line_number":9,"context_line":"    the uWSGI server this option does nothing."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"1f9dbf25_b3f875c4","line":8,"range":{"start_line":8,"start_character":60,"end_line":8,"end_character":65},"updated":"2018-03-02 08:14:19.000000000","message":"s/under //","commit_id":"6f778c44ca24ba4d733790264fd5dc4201af36c6"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"36bc24290029fe5f4d9ee694ee768ce5e9eee9f9","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    This is only used when running under uWSGI and is used to specify the"},{"line_number":6,"context_line":"    path to the python executable which will be used for launching python"},{"line_number":7,"context_line":"    subprocesses. By default this will be /usr/bin/python2 or /usr/bin/python3"},{"line_number":8,"context_line":"    depending on the version of python used. If not running under glance under"},{"line_number":9,"context_line":"    the uWSGI server this option does nothing."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"df7087c5_d088b472","line":8,"range":{"start_line":8,"start_character":60,"end_line":8,"end_character":65},"in_reply_to":"1f9dbf25_b3f875c4","updated":"2018-03-07 15:39:40.000000000","message":"Done","commit_id":"6f778c44ca24ba4d733790264fd5dc4201af36c6"}],"requirements.txt":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"357c9a9ebda3222ce5d69324f36e60546514fa69","unresolved":false,"context_lines":[{"line_number":15,"context_line":"alembic\u003e\u003d0.8.10 # MIT"},{"line_number":16,"context_line":"httplib2\u003e\u003d0.9.1 # MIT"},{"line_number":17,"context_line":"oslo.config\u003e\u003d5.1.0 # Apache-2.0"},{"line_number":18,"context_line":"oslo.concurrency\u003e\u003d3.25.0 # Apache-2.0"},{"line_number":19,"context_line":"oslo.context\u003e\u003d2.19.2 # Apache-2.0"},{"line_number":20,"context_line":"oslo.utils\u003e\u003d3.33.0 # Apache-2.0"},{"line_number":21,"context_line":"stevedore\u003e\u003d1.20.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":5,"id":"7f96bb07_298b466e","line":18,"range":{"start_line":18,"start_character":18,"end_line":18,"end_character":22},"updated":"2018-01-16 09:28:53.000000000","message":"wondering why it is not updated by bot job?","commit_id":"e3955037bc86bd7da3a9ae22c2c3147f78a7334b"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"96cdeb2b6ca3236370a270b2f7c7889b04238e8e","unresolved":false,"context_lines":[{"line_number":15,"context_line":"alembic\u003e\u003d0.8.10 # MIT"},{"line_number":16,"context_line":"httplib2\u003e\u003d0.9.1 # MIT"},{"line_number":17,"context_line":"oslo.config\u003e\u003d5.1.0 # Apache-2.0"},{"line_number":18,"context_line":"oslo.concurrency\u003e\u003d3.25.0 # Apache-2.0"},{"line_number":19,"context_line":"oslo.context\u003e\u003d2.19.2 # Apache-2.0"},{"line_number":20,"context_line":"oslo.utils\u003e\u003d3.33.0 # Apache-2.0"},{"line_number":21,"context_line":"stevedore\u003e\u003d1.20.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":5,"id":"7f96bb07_91b39898","line":18,"range":{"start_line":18,"start_character":18,"end_line":18,"end_character":22},"in_reply_to":"7f96bb07_298b466e","updated":"2018-01-16 15:14:33.000000000","message":"Because this commit adds the dependency on 3.25.0","commit_id":"e3955037bc86bd7da3a9ae22c2c3147f78a7334b"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b636f25fe99b33f9a72eafb8d7c9b635ca170cd2","unresolved":false,"context_lines":[{"line_number":15,"context_line":"alembic\u003e\u003d0.8.10 # MIT"},{"line_number":16,"context_line":"httplib2\u003e\u003d0.9.1 # MIT"},{"line_number":17,"context_line":"oslo.config\u003e\u003d5.1.0 # Apache-2.0"},{"line_number":18,"context_line":"oslo.concurrency\u003e\u003d3.25.0 # Apache-2.0"},{"line_number":19,"context_line":"oslo.context\u003e\u003d2.19.2 # Apache-2.0"},{"line_number":20,"context_line":"oslo.utils\u003e\u003d3.33.0 # Apache-2.0"},{"line_number":21,"context_line":"stevedore\u003e\u003d1.20.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":6,"id":"7f96bb07_e9664ced","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":37},"updated":"2018-01-19 05:29:40.000000000","message":"This doesn\u0027t require now as this change is merged in patch https://review.openstack.org/#/c/533872/6","commit_id":"66bc7c31dd9724c92860e76fbbc7359b5401e1ac"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"c9f3fecb97f20f870ad8fec7210ac08870e3e495","unresolved":false,"context_lines":[{"line_number":15,"context_line":"alembic\u003e\u003d0.8.10 # MIT"},{"line_number":16,"context_line":"httplib2\u003e\u003d0.9.1 # MIT"},{"line_number":17,"context_line":"oslo.config\u003e\u003d5.1.0 # Apache-2.0"},{"line_number":18,"context_line":"oslo.concurrency\u003e\u003d3.25.0 # Apache-2.0"},{"line_number":19,"context_line":"oslo.context\u003e\u003d2.19.2 # Apache-2.0"},{"line_number":20,"context_line":"oslo.utils\u003e\u003d3.33.0 # Apache-2.0"},{"line_number":21,"context_line":"stevedore\u003e\u003d1.20.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":6,"id":"7f96bb07_25e65018","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":37},"in_reply_to":"7f96bb07_e9664ced","updated":"2018-01-22 20:24:52.000000000","message":"Actually, you don\u0027t need to change anything because gerrit/git will handle the merge cleanly since it\u0027s the same line. If it was an issue gerrit would highlight the merge conflict. But, if you feel I need to respin this for that sure I\u0027ll do it now.","commit_id":"66bc7c31dd9724c92860e76fbbc7359b5401e1ac"}]}
