)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10795,"name":"Rajesh Tailor","email":"tailor.rajesh88@gmail.com","username":"rajeshtailor"},"change_message_id":"ae7c7900d7cc62e42d48a5733ec35ad1453df41b","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When the user runs keystone-manage, this script checks for the presence"},{"line_number":10,"context_line":"of ~/keystone/etc/keystone.conf. If it is not possible to read or write"},{"line_number":11,"context_line":"the file (e.g., missing file or insufficient permissions), the user is"},{"line_number":12,"context_line":"notified and prompted to either abort the process or copy the contents"},{"line_number":13,"context_line":"from ~/keystone/etc/keystone.conf.sample"},{"line_number":14,"context_line":"to ~/keystone/etc/keystone.conf."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a41bdd9_90cffeb2","line":11,"updated":"2015-07-17 07:16:31.000000000","message":"instead is should be \u0027... user should be notified ...\u0027","commit_id":"cfb80ae7f276c5f0583bf492b4208625db7a8304"},{"author":{"_account_id":12952,"name":"ice yao","email":"yao3690093@gmail.com","username":"xiabing.yao"},"change_message_id":"fb798530bf070151934091ee77f2659593bdb796","unresolved":false,"context_lines":[{"line_number":21,"context_line":"appropriate options"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: Ib78a611fde3b8e828d75b3124d4debdff3be5c21"},{"line_number":24,"context_line":"Closes-Bug: #1273273i"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3a29b11f_650089ab","line":24,"updated":"2015-10-18 13:51:04.000000000","message":"++","commit_id":"cfb80ae7f276c5f0583bf492b4208625db7a8304"},{"author":{"_account_id":10795,"name":"Rajesh Tailor","email":"tailor.rajesh88@gmail.com","username":"rajeshtailor"},"change_message_id":"ae7c7900d7cc62e42d48a5733ec35ad1453df41b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"appropriate options"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: Ib78a611fde3b8e828d75b3124d4debdff3be5c21"},{"line_number":24,"context_line":"Closes-Bug: #1273273i"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a41bdd9_b086c263","line":24,"updated":"2015-07-17 07:16:31.000000000","message":"could you please remove \u0027i\u0027 as the end of bug number.","commit_id":"cfb80ae7f276c5f0583bf492b4208625db7a8304"}],"keystone/cmd/manage.py":[{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"5d2e5fe4c6f4ec0fef26848f433b6dfe39a152f7","unresolved":false,"context_lines":[{"line_number":36,"context_line":"# entry point."},{"line_number":37,"context_line":"def main():"},{"line_number":38,"context_line":"    environment.use_stdlib()"},{"line_number":39,"context_line":"    keystone_config_path \u003d \u0027/opt/stack/keystone/etc/keystone.conf\u0027"},{"line_number":40,"context_line":"    keystone_sample_config_path \u003d \u0027/opt/stack/keystone/etc/keystone.conf.sample\u0027"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def continuechecker(aborting):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_3145ccb2","line":39,"updated":"2015-07-10 20:33:39.000000000","message":"This is a hard-coded path applicable only to devstack.","commit_id":"9774ffee761359898dc2b1ce0f33adc04ce73513"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"5d2e5fe4c6f4ec0fef26848f433b6dfe39a152f7","unresolved":false,"context_lines":[{"line_number":37,"context_line":"def main():"},{"line_number":38,"context_line":"    environment.use_stdlib()"},{"line_number":39,"context_line":"    keystone_config_path \u003d \u0027/opt/stack/keystone/etc/keystone.conf\u0027"},{"line_number":40,"context_line":"    keystone_sample_config_path \u003d \u0027/opt/stack/keystone/etc/keystone.conf.sample\u0027"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def continuechecker(aborting):"},{"line_number":43,"context_line":"        continuechecker.exec_main \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_f115249b","line":40,"updated":"2015-07-10 20:33:39.000000000","message":"This is a hard-coded path applicable only to devstack.","commit_id":"9774ffee761359898dc2b1ce0f33adc04ce73513"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"5d2e5fe4c6f4ec0fef26848f433b6dfe39a152f7","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    keystone_config_path \u003d \u0027/opt/stack/keystone/etc/keystone.conf\u0027"},{"line_number":40,"context_line":"    keystone_sample_config_path \u003d \u0027/opt/stack/keystone/etc/keystone.conf.sample\u0027"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def continuechecker(aborting):"},{"line_number":43,"context_line":"        continuechecker.exec_main \u003d True"},{"line_number":44,"context_line":"        continuechecker.exec_main \u003d not aborting"},{"line_number":45,"context_line":"        return continuechecker.exec_main"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_b1a23c4a","line":42,"updated":"2015-07-10 20:33:39.000000000","message":"s/continuechecker/continue_checker","commit_id":"9774ffee761359898dc2b1ce0f33adc04ce73513"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"5d2e5fe4c6f4ec0fef26848f433b6dfe39a152f7","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        keystone_conf_sample_to_conf.config_path \u003d config_path"},{"line_number":49,"context_line":"        if os.path.exists(sample_path):"},{"line_number":50,"context_line":"            usr_response \u003d raw_input(\"keystone.conf will be written to \" +"},{"line_number":51,"context_line":"                                     config_path + \u0027\\033[33m\u0027 + \" Any existing \""},{"line_number":52,"context_line":"                                     \"file will be overwritten. \" + \u0027\\033[39m\u0027 +"},{"line_number":53,"context_line":"                                     \"Is \" \"this okay?\\n(y)es (n)o: \")"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_51017038","line":51,"updated":"2015-07-10 20:33:39.000000000","message":"escape sequences should not be used unless you know you\u0027re on a tty.\nsys.stdout.isatty()\n\nBut in this case, I don\u0027t think its necessary anyway.","commit_id":"9774ffee761359898dc2b1ce0f33adc04ce73513"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"5d2e5fe4c6f4ec0fef26848f433b6dfe39a152f7","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"            if (usr_response[0].lower() \u003d\u003d \u0027y\u0027):"},{"line_number":56,"context_line":"                write_file \u003d open(config_path, \u0027w\u0027)"},{"line_number":57,"context_line":"                temp \u003d open(sample_path, \u0027r\u0027)"},{"line_number":58,"context_line":"                read_file \u003d temp.read()"},{"line_number":59,"context_line":"                write_file.write(read_file)"},{"line_number":60,"context_line":"                temp.close()"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_71acb435","line":57,"updated":"2015-07-10 20:33:39.000000000","message":"why not use the \u0027with\u0027 context","commit_id":"9774ffee761359898dc2b1ce0f33adc04ce73513"},{"author":{"_account_id":16523,"name":"ZhangLei","display_name":"ZhangLei","email":"zhang.lei@99cloud.net","username":"zhang.lei"},"change_message_id":"625bef9b04bdc19c1a48f452e93e79272c53310f","unresolved":false,"context_lines":[{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import sys"},{"line_number":19,"context_line":"from oslo_config.cfg import ConfigFilesNotFoundError"},{"line_number":20,"context_line":"# If ../../keystone/__init__.py exists, add ../../ to Python search path, so"},{"line_number":21,"context_line":"# that it will override what happens to be installed in"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a29b11f_077744d5","line":18,"updated":"2015-10-26 06:29:37.000000000","message":"Please add a new line","commit_id":"cfb80ae7f276c5f0583bf492b4208625db7a8304"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"36ac1e37c52d9a8b6d38b340aadbb838808578d3","unresolved":false,"context_lines":[{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import sys"},{"line_number":19,"context_line":"from oslo_config.cfg import ConfigFilesNotFoundError"},{"line_number":20,"context_line":"# If ../../keystone/__init__.py exists, add ../../ to Python search path, so"},{"line_number":21,"context_line":"# that it will override what happens to be installed in"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_8d4f3133","line":18,"updated":"2015-08-07 07:53:58.000000000","message":"separate  the third party lib from the python lib, see http://docs.openstack.org/developer/hacking/#import-order-template","commit_id":"cfb80ae7f276c5f0583bf492b4208625db7a8304"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"6f53c11bed8db8a63573b451c732a854370408cc","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import sys"},{"line_number":19,"context_line":"from oslo_config.cfg import ConfigFilesNotFoundError"},{"line_number":20,"context_line":"# If ../../keystone/__init__.py exists, add ../../ to Python search path, so"},{"line_number":21,"context_line":"# that it will override what happens to be installed in"},{"line_number":22,"context_line":"# /usr/(local/)lib/python..."}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_32628cd9","line":19,"updated":"2015-07-17 23:18:16.000000000","message":"This is your pep8 failure.","commit_id":"cfb80ae7f276c5f0583bf492b4208625db7a8304"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"36ac1e37c52d9a8b6d38b340aadbb838808578d3","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                            \u0027etc\u0027,"},{"line_number":41,"context_line":"                            \u0027keystone.conf\u0027)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    environment.use_stdlib()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def input_parser(usr_response):"},{"line_number":46,"context_line":"        if (usr_response and usr_response[0].lower() \u003d\u003d \u0027a\u0027):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_4dcda92f","line":43,"updated":"2015-08-07 07:53:58.000000000","message":"suggest to undo this change since it\u0027s meaningless.","commit_id":"cfb80ae7f276c5f0583bf492b4208625db7a8304"},{"author":{"_account_id":10795,"name":"Rajesh Tailor","email":"tailor.rajesh88@gmail.com","username":"rajeshtailor"},"change_message_id":"ae7c7900d7cc62e42d48a5733ec35ad1453df41b","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    environment.use_stdlib()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def input_parser(usr_response):"},{"line_number":46,"context_line":"        if (usr_response and usr_response[0].lower() \u003d\u003d \u0027a\u0027):"},{"line_number":47,"context_line":"            print (\"Aborting...\")"},{"line_number":48,"context_line":"        elif (usr_response[0].lower() \u003d\u003d \"c\"):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_50a41607","line":45,"updated":"2015-07-17 07:16:31.000000000","message":"where are you calling this method ?","commit_id":"cfb80ae7f276c5f0583bf492b4208625db7a8304"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"46351173c8127bfdf9c3d89dbd913d823b995729","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    environment.use_stdlib()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def input_parser(usr_response):"},{"line_number":46,"context_line":"        if (usr_response and usr_response[0].lower() \u003d\u003d \u0027a\u0027):"},{"line_number":47,"context_line":"            print (\"Aborting...\")"},{"line_number":48,"context_line":"        elif (usr_response[0].lower() \u003d\u003d \"c\"):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_de9bd564","line":45,"in_reply_to":"9a41bdd9_50a41607","updated":"2015-10-16 09:48:48.000000000","message":"++","commit_id":"cfb80ae7f276c5f0583bf492b4208625db7a8304"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"36ac1e37c52d9a8b6d38b340aadbb838808578d3","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def rw_fail_handler():"},{"line_number":55,"context_line":"        usr_response \u003d raw_input(\"Warning: Could not find keystone.conf in \" +"},{"line_number":56,"context_line":"                                 str(config_files) +"},{"line_number":57,"context_line":"                                 \" or current user does not have \""},{"line_number":58,"context_line":"                                 \"sufficient privileges to access file.\\n\""},{"line_number":59,"context_line":"                                 \"(a)bort (c)ontinue anyways: \")"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_2d07fd82","line":56,"updated":"2015-08-07 07:53:58.000000000","message":"so, the warning message may looks like, Warning: Could not find keystone.conf in /etc/keystone.conf, does this message correct enough?","commit_id":"cfb80ae7f276c5f0583bf492b4208625db7a8304"},{"author":{"_account_id":16523,"name":"ZhangLei","display_name":"ZhangLei","email":"zhang.lei@99cloud.net","username":"zhang.lei"},"change_message_id":"625bef9b04bdc19c1a48f452e93e79272c53310f","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                                 \"(a)bort (c)ontinue anyways: \")"},{"line_number":60,"context_line":"        return usr_response"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    environment.use_stdlib()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    config_files \u003d None"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a29b11f_2774c0cd","line":62,"updated":"2015-10-26 06:29:37.000000000","message":"++","commit_id":"cfb80ae7f276c5f0583bf492b4208625db7a8304"},{"author":{"_account_id":10795,"name":"Rajesh Tailor","email":"tailor.rajesh88@gmail.com","username":"rajeshtailor"},"change_message_id":"ae7c7900d7cc62e42d48a5733ec35ad1453df41b","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                                 \"(a)bort (c)ontinue anyways: \")"},{"line_number":60,"context_line":"        return usr_response"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    environment.use_stdlib()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    config_files \u003d None"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_b02a427d","line":62,"updated":"2015-07-17 07:16:31.000000000","message":"why use this statement twice ?","commit_id":"cfb80ae7f276c5f0583bf492b4208625db7a8304"},{"author":{"_account_id":17108,"name":"Shengming Yang","email":"rory.yang@elits.com","username":"YangShengMing"},"change_message_id":"5ecc2fa5925c3c8de7fdf017b47d0b5373af1be9","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                                 \"(a)bort (c)ontinue anyways: \")"},{"line_number":60,"context_line":"        return usr_response"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    environment.use_stdlib()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    config_files \u003d None"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a29b11f_a58e7325","line":62,"in_reply_to":"3a29b11f_2774c0cd","updated":"2015-10-27 00:56:30.000000000","message":"++","commit_id":"cfb80ae7f276c5f0583bf492b4208625db7a8304"},{"author":{"_account_id":10795,"name":"Rajesh Tailor","email":"tailor.rajesh88@gmail.com","username":"rajeshtailor"},"change_message_id":"1291bfe3048ab5fd82f5f38ce16c6e95aa08e883","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    environment.use_stdlib()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    config_files \u003d None"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    if os.path.exists(dev_conf):"},{"line_number":67,"context_line":"        config_files \u003d [dev_conf]"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_a13f4cd5","line":65,"updated":"2015-07-17 12:11:58.000000000","message":"there is no need of new line.","commit_id":"cfb80ae7f276c5f0583bf492b4208625db7a8304"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"46351173c8127bfdf9c3d89dbd913d823b995729","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    try:"},{"line_number":70,"context_line":"        cli.main(argv\u003dsys.argv, config_files\u003dconfig_files)"},{"line_number":71,"context_line":"    except ConfigFilesNotFoundError:"},{"line_number":72,"context_line":"        rw_fail_handler()"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_9ec9dd5b","line":72,"updated":"2015-10-16 09:48:48.000000000","message":"Suggestion: This all can be simplified by a try: except like this, where you warn the user in the except block.","commit_id":"cfb80ae7f276c5f0583bf492b4208625db7a8304"}]}
