)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":3068,"name":"Arata Notsu","email":"notsu@virtualtech.jp","username":"arata776"},"change_message_id":"295a179638941cbdcef7c457763502baf0361dfc","unresolved":false,"context_lines":[{"line_number":14,"context_line":"This patch changes power manager to write \u0027\\0\u0027 to the password file in the"},{"line_number":15,"context_line":"case of empty password, to force the password on impitool."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-bug: #1237802"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I44f56129a8ce2af4dda8dea35eb9c60d9518d54b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATH%2F%2FsEA%3D","line":17,"updated":"2013-10-11 07:03:26.000000000","message":"Launchpad doesn\u0027t update the bug unless it is \"Closes-Bug\" (case-sensitive), for now.","commit_id":"3dd09cf3b3b74d4017124914fcbcdb5a11f566d3"}],"nova/tests/virt/baremetal/test_ipmi.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"4bdd3d7ced05bb9559ed306ce86db101358a8511","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        try:"},{"line_number":69,"context_line":"            self.assertTrue(os.path.isfile(pw_file))"},{"line_number":70,"context_line":"            self.assertEqual(os.stat(pw_file)[stat.ST_MODE] \u0026 0o777, 0o600)"},{"line_number":71,"context_line":"            with open(pw_file, \"r\") as f:"},{"line_number":72,"context_line":"                pm_password \u003d f.read()"},{"line_number":73,"context_line":"            self.assertEqual(pm_password, chr(0))"},{"line_number":74,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F65Y%3D","line":71,"updated":"2013-10-25 07:56:49.000000000","message":"you\u0027ll want \u0027rb\u0027 here, since you want to check the byte value.","commit_id":"5663f5ca959072108d59ac02dd4dd9d8b0a0a17b"},{"author":{"_account_id":1894,"name":"Ryota MIBU","email":"r-mibu@cq.jp.nec.com","username":"r-mibu"},"change_message_id":"5443835dda215879c4f5ad0d129375daaef6fcf5","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        try:"},{"line_number":69,"context_line":"            self.assertTrue(os.path.isfile(pw_file))"},{"line_number":70,"context_line":"            self.assertEqual(os.stat(pw_file)[stat.ST_MODE] \u0026 0o777, 0o600)"},{"line_number":71,"context_line":"            with open(pw_file, \"r\") as f:"},{"line_number":72,"context_line":"                pm_password \u003d f.read()"},{"line_number":73,"context_line":"            self.assertEqual(pm_password, chr(0))"},{"line_number":74,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F64o%3D","line":71,"in_reply_to":"AAAATn%2F%2F65Y%3D","updated":"2013-10-25 08:06:02.000000000","message":"Done","commit_id":"5663f5ca959072108d59ac02dd4dd9d8b0a0a17b"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"4bdd3d7ced05bb9559ed306ce86db101358a8511","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            self.assertEqual(os.stat(pw_file)[stat.ST_MODE] \u0026 0o777, 0o600)"},{"line_number":71,"context_line":"            with open(pw_file, \"r\") as f:"},{"line_number":72,"context_line":"                pm_password \u003d f.read()"},{"line_number":73,"context_line":"            self.assertEqual(pm_password, chr(0))"},{"line_number":74,"context_line":"        finally:"},{"line_number":75,"context_line":"            os.unlink(pw_file)"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F65Q%3D","line":73,"updated":"2013-10-25 07:56:49.000000000","message":"This would be better as\n\n self.assertEqual(b\"\\0\", pm_password)","commit_id":"5663f5ca959072108d59ac02dd4dd9d8b0a0a17b"},{"author":{"_account_id":1894,"name":"Ryota MIBU","email":"r-mibu@cq.jp.nec.com","username":"r-mibu"},"change_message_id":"5443835dda215879c4f5ad0d129375daaef6fcf5","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            self.assertEqual(os.stat(pw_file)[stat.ST_MODE] \u0026 0o777, 0o600)"},{"line_number":71,"context_line":"            with open(pw_file, \"r\") as f:"},{"line_number":72,"context_line":"                pm_password \u003d f.read()"},{"line_number":73,"context_line":"            self.assertEqual(pm_password, chr(0))"},{"line_number":74,"context_line":"        finally:"},{"line_number":75,"context_line":"            os.unlink(pw_file)"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F64k%3D","line":73,"in_reply_to":"AAAATn%2F%2F65Q%3D","updated":"2013-10-25 08:06:02.000000000","message":"Done","commit_id":"5663f5ca959072108d59ac02dd4dd9d8b0a0a17b"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"f5a84719337b9d60088e6032037bc0201f4be52d","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                pm_password \u003d f.read()"},{"line_number":73,"context_line":"            self.assertEqual(b\"\\0\", pm_password)"},{"line_number":74,"context_line":"        finally:"},{"line_number":75,"context_line":"            os.unlink(pw_file)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def test_exec_ipmitool(self):"},{"line_number":78,"context_line":"        pw_file \u003d \u0027/tmp/password_file\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BfGw%3D","line":75,"updated":"2013-11-25 15:49:13.000000000","message":"so this stuff is just dying to be turned into fixtures that would do this cleanup automatically. I won\u0027t block this change because of the lack of them, as the whole file is old style with finally being used like that, but it would be good to turn this into a fixture model in the future.","commit_id":"e936cac67612015e1123b4539a60ec1aa1b1ff82"}],"nova/virt/baremetal/ipmi.py":[{"author":{"_account_id":3068,"name":"Arata Notsu","email":"notsu@virtualtech.jp","username":"arata776"},"change_message_id":"295a179638941cbdcef7c457763502baf0361dfc","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    fd, path \u003d tempfile.mkstemp()"},{"line_number":66,"context_line":"    os.fchmod(fd, stat.S_IRUSR | stat.S_IWUSR)"},{"line_number":67,"context_line":"    with os.fdopen(fd, \"w\") as f:"},{"line_number":68,"context_line":"        f.write(password or chr(0))"},{"line_number":69,"context_line":"    return path"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2FsE0%3D","line":68,"updated":"2013-10-11 07:03:26.000000000","message":"Cloud you leave a comment stating that we have to put \u0027\\0\u0027 since ipmitool hangs with an empty password file ? A link to Launchpad may be helpful.","commit_id":"3dd09cf3b3b74d4017124914fcbcdb5a11f566d3"},{"author":{"_account_id":1894,"name":"Ryota MIBU","email":"r-mibu@cq.jp.nec.com","username":"r-mibu"},"change_message_id":"e000c454ee1f738b8c2804245f15f4848fe8f72a","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    fd, path \u003d tempfile.mkstemp()"},{"line_number":66,"context_line":"    os.fchmod(fd, stat.S_IRUSR | stat.S_IWUSR)"},{"line_number":67,"context_line":"    with os.fdopen(fd, \"w\") as f:"},{"line_number":68,"context_line":"        f.write(password or chr(0))"},{"line_number":69,"context_line":"    return path"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2Fr6w%3D","line":68,"in_reply_to":"AAAATH%2F%2FsE0%3D","updated":"2013-10-11 07:57:39.000000000","message":"Done","commit_id":"3dd09cf3b3b74d4017124914fcbcdb5a11f566d3"},{"author":{"_account_id":3068,"name":"Arata Notsu","email":"notsu@virtualtech.jp","username":"arata776"},"change_message_id":"b9fd6eefbf641ed819c888851b1d3c1f2ca017c7","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        # NOTE(r-mibu): Since ipmitool hangs with an empty password file,"},{"line_number":69,"context_line":"        #               we have to write \u0027\\0\u0027 if password was empty."},{"line_number":70,"context_line":"        # see https://bugs.launchpad.net/nova/+bug/1237802 for more details"},{"line_number":71,"context_line":"        f.write(password or chr(0))"},{"line_number":72,"context_line":"    return path"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F63c%3D","line":71,"updated":"2013-10-25 08:12:28.000000000","message":"Don\u0027t you use b\"\\0\" here?","commit_id":"ea8755a48a8f5467966c6586198153a7f2124753"},{"author":{"_account_id":1894,"name":"Ryota MIBU","email":"r-mibu@cq.jp.nec.com","username":"r-mibu"},"change_message_id":"b756f5e41233acd62082c277682a9b595d1ce323","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        # NOTE(r-mibu): Since ipmitool hangs with an empty password file,"},{"line_number":69,"context_line":"        #               we have to write \u0027\\0\u0027 if password was empty."},{"line_number":70,"context_line":"        # see https://bugs.launchpad.net/nova/+bug/1237802 for more details"},{"line_number":71,"context_line":"        f.write(password or chr(0))"},{"line_number":72,"context_line":"    return path"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F6y8%3D","line":71,"in_reply_to":"AAAATn%2F%2F63c%3D","updated":"2013-10-25 08:35:24.000000000","message":"Done","commit_id":"ea8755a48a8f5467966c6586198153a7f2124753"}]}
