)]}'
{"nova/tests/test_configdrive2.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"4f4b8af10c6693d0b3c1305343fc3891de9d73cb","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            (fd, imagefile) \u003d tempfile.mkstemp(prefix\u003d\u0027cd_iso_\u0027)"},{"line_number":51,"context_line":"            os.close(fd)"},{"line_number":52,"context_line":"            c._make_iso9660(imagefile)"},{"line_number":53,"context_line":"            c.cleanup()"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"            # Check cleanup"},{"line_number":56,"context_line":"            self.assertFalse(os.path.exists(c.tempdir))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F7j4%3D","line":53,"updated":"2012-12-20 05:57:42.000000000","message":"This more clearly should be written with with: - as it stands, if it fails it won\u0027t cleanup and we\u0027ll leak stuff on the file system.","commit_id":"55f54c7d62d932b1d992253fa6fca894eda28187"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"27af1c8d10fa10b0e7f8268b91774a99d468f6cd","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            (fd, imagefile) \u003d tempfile.mkstemp(prefix\u003d\u0027cd_iso_\u0027)"},{"line_number":51,"context_line":"            os.close(fd)"},{"line_number":52,"context_line":"            c._make_iso9660(imagefile)"},{"line_number":53,"context_line":"            c.cleanup()"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"            # Check cleanup"},{"line_number":56,"context_line":"            self.assertFalse(os.path.exists(c.tempdir))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F6vQ%3D","line":53,"in_reply_to":"AAAAM3%2F%2F7j4%3D","updated":"2012-12-20 22:04:02.000000000","message":"Done","commit_id":"55f54c7d62d932b1d992253fa6fca894eda28187"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"4f4b8af10c6693d0b3c1305343fc3891de9d73cb","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            (fd, imagefile) \u003d tempfile.mkstemp(prefix\u003d\u0027cd_vfat_\u0027)"},{"line_number":84,"context_line":"            os.close(fd)"},{"line_number":85,"context_line":"            c._make_vfat(imagefile)"},{"line_number":86,"context_line":"            c.cleanup()"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"            # Check cleanup"},{"line_number":89,"context_line":"            self.assertFalse(os.path.exists(c.tempdir))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F7j0%3D","line":86,"updated":"2012-12-20 05:57:42.000000000","message":"Ditto.","commit_id":"55f54c7d62d932b1d992253fa6fca894eda28187"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"27af1c8d10fa10b0e7f8268b91774a99d468f6cd","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            (fd, imagefile) \u003d tempfile.mkstemp(prefix\u003d\u0027cd_vfat_\u0027)"},{"line_number":84,"context_line":"            os.close(fd)"},{"line_number":85,"context_line":"            c._make_vfat(imagefile)"},{"line_number":86,"context_line":"            c.cleanup()"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"            # Check cleanup"},{"line_number":89,"context_line":"            self.assertFalse(os.path.exists(c.tempdir))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F6vM%3D","line":86,"in_reply_to":"AAAAM3%2F%2F7j0%3D","updated":"2012-12-20 22:04:02.000000000","message":"Done","commit_id":"55f54c7d62d932b1d992253fa6fca894eda28187"}],"nova/tests/test_virt_drivers.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"4f4b8af10c6693d0b3c1305343fc3891de9d73cb","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        # We can\u0027t actually make a config drive v2 because ensure_tree has"},{"line_number":120,"context_line":"        # been faked out"},{"line_number":121,"context_line":"        self.stubs.Set(nova.virt.configdrive._ConfigDriveBuilder,"},{"line_number":122,"context_line":"                       \u0027make_drive\u0027, fake_make_drive)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def _teardown_fakelibvirt(self):"},{"line_number":125,"context_line":"        # Restore libvirt"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F7jw%3D","line":122,"updated":"2012-12-20 05:57:42.000000000","message":"I\u0027m not sure this stub will do what you want anymore, with the change to use the context manager.","commit_id":"55f54c7d62d932b1d992253fa6fca894eda28187"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"27af1c8d10fa10b0e7f8268b91774a99d468f6cd","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        # We can\u0027t actually make a config drive v2 because ensure_tree has"},{"line_number":120,"context_line":"        # been faked out"},{"line_number":121,"context_line":"        self.stubs.Set(nova.virt.configdrive._ConfigDriveBuilder,"},{"line_number":122,"context_line":"                       \u0027make_drive\u0027, fake_make_drive)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def _teardown_fakelibvirt(self):"},{"line_number":125,"context_line":"        # Restore libvirt"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F6u4%3D","line":122,"in_reply_to":"AAAAM3%2F%2F7jw%3D","updated":"2012-12-20 22:04:02.000000000","message":"It seemed to work when I did a test run. Why wouldn\u0027t it work?","commit_id":"55f54c7d62d932b1d992253fa6fca894eda28187"}],"nova/virt/configdrive.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"b99a4c0ead5990a13c172d07a45c12857f30f022","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    finally:"},{"line_number":64,"context_line":"        cdb.cleanup()"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"class ConfigDriveBuilder(object):"},{"line_number":68,"context_line":"    def __init__(self, instance_md\u003dNone):"},{"line_number":69,"context_line":"        self.imagefile \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F7no%3D","line":66,"updated":"2012-12-20 03:29:35.000000000","message":"This leaves the object still directly usable, and doing that will leave room for failure-to-cleanup bugs. I suggest making ConfigDriveBuilder private at the least, but better still giving it some way to detect that it will get cleanup called (without using __del__).","commit_id":"84a3b4d4a4f7957081ff5c6d1f85a7ce8b9440fe"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"4f4b8af10c6693d0b3c1305343fc3891de9d73cb","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"class _ConfigDriveBuilder(object):"},{"line_number":68,"context_line":"    # NOTE(mikal): don\u0027t use this directly, use the fancy pants contextlib"},{"line_number":69,"context_line":"    # helper above!"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def __init__(self, instance_md\u003dNone):"},{"line_number":72,"context_line":"        self.imagefile \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F7js%3D","line":69,"updated":"2012-12-20 05:57:42.000000000","message":"\"\"\"Docstrings are better than comments for API docs.\"\"\"","commit_id":"55f54c7d62d932b1d992253fa6fca894eda28187"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"27af1c8d10fa10b0e7f8268b91774a99d468f6cd","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"class _ConfigDriveBuilder(object):"},{"line_number":68,"context_line":"    # NOTE(mikal): don\u0027t use this directly, use the fancy pants contextlib"},{"line_number":69,"context_line":"    # helper above!"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def __init__(self, instance_md\u003dNone):"},{"line_number":72,"context_line":"        self.imagefile \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F6uQ%3D","line":69,"in_reply_to":"AAAAM3%2F%2F7js%3D","updated":"2012-12-20 22:04:02.000000000","message":"Done","commit_id":"55f54c7d62d932b1d992253fa6fca894eda28187"}]}
