)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"6a8cf3667356ed4e43fc41beb301dd4ffb60e5c2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Replace os.makedirs to avoid process race"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Use oslo_utils.fileutils.ensure_tree(path, mode\u003d_DEFAULT_MODE)"},{"line_number":10,"context_line":"to replace os.makedir."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Co-Authored-By: ycx \u003cyanpq@awcloud.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5f7c97a3_cb7f6c67","line":9,"range":{"start_line":9,"start_character":43,"end_line":9,"end_character":61},"updated":"2018-07-13 15:21:01.000000000","message":"This isn\u0027t what this patch actually does. :/","commit_id":"60c0b9c0af8c056b952c782dc00ccfa84a8b3e05"}],"cinder/image/image_utils.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b735d8eb76d6f68d69f39c56ca310e0eb64dab66","unresolved":false,"context_lines":[{"line_number":621,"context_line":""},{"line_number":622,"context_line":"def create_temporary_file(*args, **kwargs):"},{"line_number":623,"context_line":"    if (CONF.image_conversion_dir and not"},{"line_number":624,"context_line":"            os.path.exists(CONF.image_conversion_dir)):"},{"line_number":625,"context_line":"        fileutils.ensure_tree(CONF.image_conversion_dir)"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"    fd, tmp \u003d tempfile.mkstemp(dir\u003dCONF.image_conversion_dir, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_42261519","line":624,"range":{"start_line":624,"start_character":12,"end_line":624,"end_character":53},"updated":"2018-05-17 18:48:28.000000000","message":"The exists() check should be removed if using ensure_tree().","commit_id":"b6c82fc9d2e0a7d276830db1f4371f61b38b5dcd"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b735d8eb76d6f68d69f39c56ca310e0eb64dab66","unresolved":false,"context_lines":[{"line_number":666,"context_line":"def temporary_dir():"},{"line_number":667,"context_line":"    if (CONF.image_conversion_dir and not"},{"line_number":668,"context_line":"            os.path.exists(CONF.image_conversion_dir)):"},{"line_number":669,"context_line":"        fileutils.ensure_tree(CONF.image_conversion_dir)"},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"    return utils.tempdir(dir\u003dCONF.image_conversion_dir)"},{"line_number":672,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_02201df7","line":669,"updated":"2018-05-17 18:48:28.000000000","message":"Same ^","commit_id":"b6c82fc9d2e0a7d276830db1f4371f61b38b5dcd"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"c32bb6b6d0ae428ccac7b970aacea31060de2b54","unresolved":false,"context_lines":[{"line_number":620,"context_line":""},{"line_number":621,"context_line":""},{"line_number":622,"context_line":"def create_temporary_file(*args, **kwargs):"},{"line_number":623,"context_line":"    if CONF.image_conversion_dir:"},{"line_number":624,"context_line":"        fileutils.ensure_tree(CONF.image_conversion_dir)"},{"line_number":625,"context_line":""},{"line_number":626,"context_line":"    fd, tmp \u003d tempfile.mkstemp(dir\u003dCONF.image_conversion_dir, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_6885f0ce","line":623,"range":{"start_line":623,"start_character":7,"end_line":623,"end_character":32},"updated":"2018-05-22 15:04:01.000000000","message":"image_conversion_dir must always be set so this check is not needed.","commit_id":"42db24d695d6aa06d42e1b0fd2c904040f4fe208"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"c32bb6b6d0ae428ccac7b970aacea31060de2b54","unresolved":false,"context_lines":[{"line_number":663,"context_line":""},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"def temporary_dir():"},{"line_number":666,"context_line":"    if CONF.image_conversion_dir:"},{"line_number":667,"context_line":"        fileutils.ensure_tree(CONF.image_conversion_dir)"},{"line_number":668,"context_line":""},{"line_number":669,"context_line":"    return utils.tempdir(dir\u003dCONF.image_conversion_dir)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_086c7c34","line":666,"updated":"2018-05-22 15:04:01.000000000","message":"Same ^","commit_id":"42db24d695d6aa06d42e1b0fd2c904040f4fe208"}],"cinder/tests/unit/test_image_utils.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"bcbc4ee292048755c16420df536dc42b8c69ba2a","unresolved":false,"context_lines":[{"line_number":485,"context_line":""},{"line_number":486,"context_line":"    @mock.patch(\u0027cinder.image.image_utils.CONF\u0027)"},{"line_number":487,"context_line":"    @mock.patch(\u0027oslo_utils.fileutils.ensure_tree\u0027)"},{"line_number":488,"context_line":"    @mock.patch(\u0027os.path.exists\u0027, return_value\u003dFalse)"},{"line_number":489,"context_line":"    @mock.patch(\u0027cinder.image.image_utils.utils.tempdir\u0027)"},{"line_number":490,"context_line":"    def test_no_conv_dir(self, mock_tempdir, mock_exists, mock_make,"},{"line_number":491,"context_line":"                         mock_conf):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_966b6ab5","line":488,"range":{"start_line":488,"start_character":4,"end_line":488,"end_character":53},"updated":"2018-05-30 14:55:55.000000000","message":"This is no longer called so not needed here.","commit_id":"fc9b9e00f394ed8483ad4bc9d8438220eeaf8133"},{"author":{"_account_id":25564,"name":"yanpuqing","email":"yanpq@awcloud.com","username":"ycx"},"change_message_id":"d2c0ea3eefbb7828ebacc8dbf7d69da3593ec3ea","unresolved":false,"context_lines":[{"line_number":485,"context_line":""},{"line_number":486,"context_line":"    @mock.patch(\u0027cinder.image.image_utils.CONF\u0027)"},{"line_number":487,"context_line":"    @mock.patch(\u0027oslo_utils.fileutils.ensure_tree\u0027)"},{"line_number":488,"context_line":"    @mock.patch(\u0027os.path.exists\u0027, return_value\u003dFalse)"},{"line_number":489,"context_line":"    @mock.patch(\u0027cinder.image.image_utils.utils.tempdir\u0027)"},{"line_number":490,"context_line":"    def test_no_conv_dir(self, mock_tempdir, mock_exists, mock_make,"},{"line_number":491,"context_line":"                         mock_conf):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_79e4230f","line":488,"range":{"start_line":488,"start_character":4,"end_line":488,"end_character":53},"in_reply_to":"5f7c97a3_966b6ab5","updated":"2018-06-05 08:29:31.000000000","message":"Done","commit_id":"fc9b9e00f394ed8483ad4bc9d8438220eeaf8133"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"bcbc4ee292048755c16420df536dc42b8c69ba2a","unresolved":false,"context_lines":[{"line_number":1592,"context_line":""},{"line_number":1593,"context_line":"    @mock.patch(\u0027cinder.image.image_utils.os.close\u0027)"},{"line_number":1594,"context_line":"    @mock.patch(\u0027cinder.image.image_utils.CONF\u0027)"},{"line_number":1595,"context_line":"    @mock.patch(\u0027cinder.image.image_utils.os.path.exists\u0027, return_value\u003dFalse)"},{"line_number":1596,"context_line":"    @mock.patch(\u0027cinder.image.image_utils.fileutils.ensure_tree\u0027)"},{"line_number":1597,"context_line":"    @mock.patch(\u0027cinder.image.image_utils.tempfile.mkstemp\u0027)"},{"line_number":1598,"context_line":"    def test_create_temporary_file_and_dir(self, mock_mkstemp, mock_dirs,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_1678ba8d","line":1595,"range":{"start_line":1595,"start_character":4,"end_line":1595,"end_character":78},"updated":"2018-05-30 14:55:55.000000000","message":"This is no longer called so not needed here.","commit_id":"fc9b9e00f394ed8483ad4bc9d8438220eeaf8133"},{"author":{"_account_id":25564,"name":"yanpuqing","email":"yanpq@awcloud.com","username":"ycx"},"change_message_id":"d2c0ea3eefbb7828ebacc8dbf7d69da3593ec3ea","unresolved":false,"context_lines":[{"line_number":1592,"context_line":""},{"line_number":1593,"context_line":"    @mock.patch(\u0027cinder.image.image_utils.os.close\u0027)"},{"line_number":1594,"context_line":"    @mock.patch(\u0027cinder.image.image_utils.CONF\u0027)"},{"line_number":1595,"context_line":"    @mock.patch(\u0027cinder.image.image_utils.os.path.exists\u0027, return_value\u003dFalse)"},{"line_number":1596,"context_line":"    @mock.patch(\u0027cinder.image.image_utils.fileutils.ensure_tree\u0027)"},{"line_number":1597,"context_line":"    @mock.patch(\u0027cinder.image.image_utils.tempfile.mkstemp\u0027)"},{"line_number":1598,"context_line":"    def test_create_temporary_file_and_dir(self, mock_mkstemp, mock_dirs,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_b9dabb48","line":1595,"range":{"start_line":1595,"start_character":4,"end_line":1595,"end_character":78},"in_reply_to":"5f7c97a3_1678ba8d","updated":"2018-06-05 08:29:31.000000000","message":"Done, thanks.","commit_id":"fc9b9e00f394ed8483ad4bc9d8438220eeaf8133"}],"cinder/volume/flows/manager/create_volume.py":[{"author":{"_account_id":19844,"name":"Kien Ha","email":"kienha9922@gmail.com","username":"kien.ha"},"change_message_id":"ecb37ec821429fe902ced8795ca60c996c53008f","unresolved":false,"context_lines":[{"line_number":764,"context_line":"        #               to clone volumes and we have to resort to downloading"},{"line_number":765,"context_line":"        #               the image from Glance and uploading it."},{"line_number":766,"context_line":"        if (CONF.image_conversion_dir and not"},{"line_number":767,"context_line":"                os.path.exists(CONF.image_conversion_dir)):"},{"line_number":768,"context_line":"            fileutils.ensure_tree(CONF.image_conversion_dir)"},{"line_number":769,"context_line":"        try:"},{"line_number":770,"context_line":"            image_utils.check_available_space("}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_4bdcbc73","line":767,"range":{"start_line":767,"start_character":16,"end_line":767,"end_character":57},"updated":"2018-05-21 17:06:04.000000000","message":"Same comment as Eric\u0027s if it applies here.","commit_id":"2ce05196d6fec691107dc8e7c297e91d5f92a26a"}]}
