)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"daf29c3fba7f9c66c303d33df787e53be3abafd3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Amrith Kumar \u003camrith@tesora.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-08-07 16:14:31 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"In some cases, guest agents may leave temporary config files"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The code in these three places manipulates the configuration files. I"},{"line_number":10,"context_line":"was (admittedly) having more than the acceptable dose of failures in"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"baada198_b27de9b4","line":7,"updated":"2014-08-07 20:18:47.000000000","message":"I\u0027d suggest something more appropriate for commit title, such as:\nFix temporary files usage for guest agent","commit_id":"14c96624bbe727b1b0a3ffb27452de99fea99c4c"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"b3ccc60f36b320b1d278a055683b181ab3fa2b31","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Amrith Kumar \u003camrith@tesora.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-08-07 16:14:31 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"In some cases, guest agents may leave temporary config files"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The code in these three places manipulates the configuration files. I"},{"line_number":10,"context_line":"was (admittedly) having more than the acceptable dose of failures in"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"baada198_f1367cb2","line":7,"in_reply_to":"baada198_b27de9b4","updated":"2014-08-07 22:08:42.000000000","message":"Thank you for your comment, I think the current title is just fine and I intend to leave it as is.","commit_id":"14c96624bbe727b1b0a3ffb27452de99fea99c4c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"daf29c3fba7f9c66c303d33df787e53be3abafd3","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"In some cases, guest agents may leave temporary config files"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The code in these three places manipulates the configuration files. I"},{"line_number":10,"context_line":"was (admittedly) having more than the acceptable dose of failures in"},{"line_number":11,"context_line":"execute_with_timeout() and one of them that failed was the move of the"},{"line_number":12,"context_line":"my.cnf file. And this left a turd in /tmp."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"baada198_f246817d","line":9,"updated":"2014-08-07 20:18:47.000000000","message":"Commit message body should be impersonalized.","commit_id":"14c96624bbe727b1b0a3ffb27452de99fea99c4c"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"b3ccc60f36b320b1d278a055683b181ab3fa2b31","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"In some cases, guest agents may leave temporary config files"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The code in these three places manipulates the configuration files. I"},{"line_number":10,"context_line":"was (admittedly) having more than the acceptable dose of failures in"},{"line_number":11,"context_line":"execute_with_timeout() and one of them that failed was the move of the"},{"line_number":12,"context_line":"my.cnf file. And this left a turd in /tmp."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"baada198_9168e089","line":9,"in_reply_to":"baada198_f246817d","updated":"2014-08-07 22:08:42.000000000","message":"Thanks for your comment. I think this is fine as is, and just to avoid the use of the word \"I\", the sentence would become needlessly convoluted.\n\nI don\u0027t intend to make any changes to the construction of this sentence.","commit_id":"14c96624bbe727b1b0a3ffb27452de99fea99c4c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"daf29c3fba7f9c66c303d33df787e53be3abafd3","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Found that the same kind of thing can happen in cassandra and"},{"line_number":15,"context_line":"mongo. Since default umask is 664, this leaves a file with somewhat"},{"line_number":16,"context_line":"questionable permissions and potentially (at least for MySQL) some"},{"line_number":17,"context_line":"passwords in /tmp"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I93302fc5b1b18c9dd7116370a945b94d1824c75a"},{"line_number":20,"context_line":"Closes-Bug: #1354136"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"baada198_124a1582","line":17,"updated":"2014-08-07 20:18:47.000000000","message":"All this statements are describing an issue, but i can\u0027t see here any words about what was changed.","commit_id":"14c96624bbe727b1b0a3ffb27452de99fea99c4c"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"b3ccc60f36b320b1d278a055683b181ab3fa2b31","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Found that the same kind of thing can happen in cassandra and"},{"line_number":15,"context_line":"mongo. Since default umask is 664, this leaves a file with somewhat"},{"line_number":16,"context_line":"questionable permissions and potentially (at least for MySQL) some"},{"line_number":17,"context_line":"passwords in /tmp"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I93302fc5b1b18c9dd7116370a945b94d1824c75a"},{"line_number":20,"context_line":"Closes-Bug: #1354136"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"baada198_511c8814","line":17,"in_reply_to":"baada198_124a1582","updated":"2014-08-07 22:08:42.000000000","message":"Thank you for your comment. The code, in this case simply adds exception handling and the intent of the commit message was merely to explain the problem.\n\nI don\u0027t intend to make any change.","commit_id":"14c96624bbe727b1b0a3ffb27452de99fea99c4c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"2c75fc339df6b128d40b8ffce1240f7821749d22","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Found that the same kind of thing can happen in cassandra and"},{"line_number":15,"context_line":"mongo. Since default umask is 664, this leaves a file with somewhat"},{"line_number":16,"context_line":"questionable permissions and potentially (at least for MySQL) some"},{"line_number":17,"context_line":"passwords in /tmp"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I93302fc5b1b18c9dd7116370a945b94d1824c75a"},{"line_number":20,"context_line":"Closes-Bug: #1354136"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"baada198_b434d5ac","line":17,"in_reply_to":"baada198_511c8814","updated":"2014-08-08 15:21:53.000000000","message":"I guess it would be more than nice to see your comment as the part of commit message. Thanks.","commit_id":"14c96624bbe727b1b0a3ffb27452de99fea99c4c"}],"trove/guestagent/datastore/cassandra/service.py":[{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"5af95156d4b1a5a8d0642c37b80f0993720b8c9c","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                                       system.CASSANDRA_TEMP_CONF,"},{"line_number":131,"context_line":"                                       system.CASSANDRA_CONF)"},{"line_number":132,"context_line":"        except Exception:"},{"line_number":133,"context_line":"            os.unlink(system.CASSANDRA_TEMP_CONF)"},{"line_number":134,"context_line":"            raise"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def read_conf(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_81357ca9","line":133,"updated":"2014-08-12 07:38:44.000000000","message":"Doesn\u0027t look like os is defined in this context.","commit_id":"e9df506a76a3d3d9336b115d4732ceb03483ab83"}],"trove/guestagent/datastore/mongodb/service.py":[{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"5af95156d4b1a5a8d0642c37b80f0993720b8c9c","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                                           run_as_root\u003dTrue,"},{"line_number":177,"context_line":"                                           root_helper\u003d\"sudo\")"},{"line_number":178,"context_line":"            except Exception:"},{"line_number":179,"context_line":"                os.unlink(system.TMP_CONFIG)"},{"line_number":180,"context_line":"                raise"},{"line_number":181,"context_line":"        else:"},{"line_number":182,"context_line":"            LOG.info(_(\"Empty config_contents. Do nothing\"))"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_414fe434","line":179,"updated":"2014-08-12 07:38:44.000000000","message":"Same here","commit_id":"e9df506a76a3d3d9336b115d4732ceb03483ab83"}],"trove/tests/unittests/guestagent/test_dbaas.py":[{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"db5d0bd5838fc013ae40b99810278ee5d49a8139","unresolved":false,"context_lines":[{"line_number":489,"context_line":"                                                        mysql_service)"},{"line_number":490,"context_line":"        time.sleep \u003d Mock()"},{"line_number":491,"context_line":"        self.orig_unlink \u003d os.unlink"},{"line_number":492,"context_line":"        self.orig_get_auth_password \u003d dbaas.get_auth_password"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"    def tearDown(self):"},{"line_number":495,"context_line":"        super(MySqlAppTest, self).tearDown()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_73243caf","line":492,"updated":"2014-08-27 05:06:42.000000000","message":"If you\u0027re doing this in setup, and teardown - I\u0027d suggest that you setup the mocked values here as well so they are mocked for all the tests.\n\nOr else, some of the tests run with the values mocked, and others run with the unmocked values -- and this makes it harder to reason about.\n\nIf the intention is to only have some tests mocked, then use the patch decorator, or a context manager to mock the module / method only when required.","commit_id":"56b6a34517aa049e4d8a2b078d94e9bf6a52d7c3"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"41992bc9b0c58a1c1f077441267703118c6d6f3d","unresolved":false,"context_lines":[{"line_number":489,"context_line":"                                                        mysql_service)"},{"line_number":490,"context_line":"        time.sleep \u003d Mock()"},{"line_number":491,"context_line":"        self.orig_unlink \u003d os.unlink"},{"line_number":492,"context_line":"        self.orig_get_auth_password \u003d dbaas.get_auth_password"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"    def tearDown(self):"},{"line_number":495,"context_line":"        super(MySqlAppTest, self).tearDown()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_69527136","line":492,"in_reply_to":"1abeadc6_73243caf","updated":"2014-08-27 18:18:13.000000000","message":"Done","commit_id":"56b6a34517aa049e4d8a2b078d94e9bf6a52d7c3"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"db5d0bd5838fc013ae40b99810278ee5d49a8139","unresolved":false,"context_lines":[{"line_number":672,"context_line":"        from trove.common.exception import ProcessExecutionError"},{"line_number":673,"context_line":"        mock_exec \u003d Mock(side_effect\u003dProcessExecutionError(\u0027something\u0027))"},{"line_number":674,"context_line":"        mock_password \u003d Mock()"},{"line_number":675,"context_line":"        utils.execute_with_timeout \u003d mock_exec"},{"line_number":676,"context_line":"        dbaas.get_auth_password \u003d mock_password"},{"line_number":677,"context_line":"        mock_unlink \u003d Mock()"},{"line_number":678,"context_line":"        os.unlink \u003d mock_unlink"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_9341d83b","line":675,"updated":"2014-08-27 05:06:42.000000000","message":"Looks like this is not being \u0027unmocked\u0027. \n\nTeardown unmocks dbaas.utils.execute_with_timeout, which is different.","commit_id":"56b6a34517aa049e4d8a2b078d94e9bf6a52d7c3"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"41992bc9b0c58a1c1f077441267703118c6d6f3d","unresolved":false,"context_lines":[{"line_number":672,"context_line":"        from trove.common.exception import ProcessExecutionError"},{"line_number":673,"context_line":"        mock_exec \u003d Mock(side_effect\u003dProcessExecutionError(\u0027something\u0027))"},{"line_number":674,"context_line":"        mock_password \u003d Mock()"},{"line_number":675,"context_line":"        utils.execute_with_timeout \u003d mock_exec"},{"line_number":676,"context_line":"        dbaas.get_auth_password \u003d mock_password"},{"line_number":677,"context_line":"        mock_unlink \u003d Mock()"},{"line_number":678,"context_line":"        os.unlink \u003d mock_unlink"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_c938e5f0","line":675,"in_reply_to":"1abeadc6_9341d83b","updated":"2014-08-27 18:18:13.000000000","message":"Fixed it, that was a mistake. In fact it appears that they are the same thing ...","commit_id":"56b6a34517aa049e4d8a2b078d94e9bf6a52d7c3"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"db5d0bd5838fc013ae40b99810278ee5d49a8139","unresolved":false,"context_lines":[{"line_number":675,"context_line":"        utils.execute_with_timeout \u003d mock_exec"},{"line_number":676,"context_line":"        dbaas.get_auth_password \u003d mock_password"},{"line_number":677,"context_line":"        mock_unlink \u003d Mock()"},{"line_number":678,"context_line":"        os.unlink \u003d mock_unlink"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"        self.assertRaises(ProcessExecutionError,"},{"line_number":681,"context_line":"                          self.mySqlApp.reset_configuration,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_089677f0","line":678,"updated":"2014-08-27 05:06:42.000000000","message":"The previous two lines can be simplified to:\n os.unlink \u003d Mock()","commit_id":"56b6a34517aa049e4d8a2b078d94e9bf6a52d7c3"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"41992bc9b0c58a1c1f077441267703118c6d6f3d","unresolved":false,"context_lines":[{"line_number":675,"context_line":"        utils.execute_with_timeout \u003d mock_exec"},{"line_number":676,"context_line":"        dbaas.get_auth_password \u003d mock_password"},{"line_number":677,"context_line":"        mock_unlink \u003d Mock()"},{"line_number":678,"context_line":"        os.unlink \u003d mock_unlink"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"        self.assertRaises(ProcessExecutionError,"},{"line_number":681,"context_line":"                          self.mySqlApp.reset_configuration,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_09265dce","line":678,"in_reply_to":"1abeadc6_089677f0","updated":"2014-08-27 18:18:13.000000000","message":"Made them go away altogether.","commit_id":"56b6a34517aa049e4d8a2b078d94e9bf6a52d7c3"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"db5d0bd5838fc013ae40b99810278ee5d49a8139","unresolved":false,"context_lines":[{"line_number":689,"context_line":"        from trove.common.exception import ProcessExecutionError"},{"line_number":690,"context_line":"        mock_exec \u003d Mock(side_effect\u003dProcessExecutionError(\u0027something\u0027))"},{"line_number":691,"context_line":"        mock_password \u003d Mock()"},{"line_number":692,"context_line":"        utils.execute_with_timeout \u003d mock_exec"},{"line_number":693,"context_line":"        dbaas.get_auth_password \u003d mock_password"},{"line_number":694,"context_line":""},{"line_number":695,"context_line":"        self.assertRaises(ProcessExecutionError,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_b36334dc","line":692,"updated":"2014-08-27 05:06:42.000000000","message":"Looks like this is not being \u0027unmocked\u0027.\n\nTeardown unmocks dbaas.utils.execute_with_timeout, which is different","commit_id":"56b6a34517aa049e4d8a2b078d94e9bf6a52d7c3"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"41992bc9b0c58a1c1f077441267703118c6d6f3d","unresolved":false,"context_lines":[{"line_number":689,"context_line":"        from trove.common.exception import ProcessExecutionError"},{"line_number":690,"context_line":"        mock_exec \u003d Mock(side_effect\u003dProcessExecutionError(\u0027something\u0027))"},{"line_number":691,"context_line":"        mock_password \u003d Mock()"},{"line_number":692,"context_line":"        utils.execute_with_timeout \u003d mock_exec"},{"line_number":693,"context_line":"        dbaas.get_auth_password \u003d mock_password"},{"line_number":694,"context_line":""},{"line_number":695,"context_line":"        self.assertRaises(ProcessExecutionError,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_492cd5ac","line":692,"in_reply_to":"1abeadc6_b36334dc","updated":"2014-08-27 18:18:13.000000000","message":"as above.","commit_id":"56b6a34517aa049e4d8a2b078d94e9bf6a52d7c3"}]}
