)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"1428d176ade833d51352d434d3086fed9b2de622","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"34994141_6fcacc00","updated":"2022-02-10 01:06:51.000000000","message":"LGTM","commit_id":"dec7bcc7f85ea85c0b04a6dd32d8826455ab0925"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"18f215e115f0e2e3b9c14a40c8fd64cc785494b0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6fa8668f_5c372cc9","updated":"2022-02-15 14:33:46.000000000","message":"Thanks for your patch, LGTM.","commit_id":"dec7bcc7f85ea85c0b04a6dd32d8826455ab0925"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"5d9335bf502258fc67c5aaca0d9cd809301f122c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1d6a7ded_be153dd9","updated":"2022-03-01 13:08:09.000000000","message":"ping","commit_id":"dec7bcc7f85ea85c0b04a6dd32d8826455ab0925"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"af2b9381818cbe51f22e8be09edeb82c89a424b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"be11d8ca_93b71fd9","updated":"2022-02-24 21:32:16.000000000","message":"ping\n\nThis patch needs to be merged to pass the gate of the following patch.\nhttps://review.opendev.org/c/openstack/tacker/+/826249","commit_id":"dec7bcc7f85ea85c0b04a6dd32d8826455ab0925"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"05d71d22af21ffccb13266f691917dae1c1f97fb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d4d21ecf_170b7d4f","updated":"2022-03-01 17:31:36.000000000","message":"recheck","commit_id":"dec7bcc7f85ea85c0b04a6dd32d8826455ab0925"}],"tacker/sol_refactored/common/vnfd_utils.py":[{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"07e2437e43d282f3ba4e075bfcdf126c9baa7d54","unresolved":true,"context_lines":[{"line_number":249,"context_line":"        # It is not necessary to remove tmp_dir, specify"},{"line_number":250,"context_line":"        # \u0027dirs_exists_ok\u003dTrue\u0027 to copytree instead when tacker support"},{"line_number":251,"context_line":"        # only py38 or later."},{"line_number":252,"context_line":"        os.rmdir(tmp_dir)"},{"line_number":253,"context_line":"        shutil.copytree(self.csar_dir, tmp_dir,"},{"line_number":254,"context_line":"            ignore\u003dshutil.ignore_patterns(\u0027Files\u0027))"},{"line_number":255,"context_line":"        return tmp_dir"}],"source_content_type":"text/x-python","patch_set":2,"id":"c3e5dda2_974da344","line":252,"updated":"2022-02-09 23:22:14.000000000","message":"\u003e see the comment. The only reason why do rmdir is that copytree does not permit destination directory existence on py36. (on py38, it is OK to use dirs_exists_ok\u003dTrue as the code before.)\nYes, I have confirmed the comment text you added.\nAfter confirming, I thought that if \"tmp_dir\" was guaranteed to be unique, it wouldn\u0027t exist if you had to remove this empty directory \"tmp_dir\".\nIf my recognition is wrong, please point it out.","commit_id":"dec7bcc7f85ea85c0b04a6dd32d8826455ab0925"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"277870b679c0b108131eb264f0a64b62231e33ab","unresolved":true,"context_lines":[{"line_number":249,"context_line":"        # It is not necessary to remove tmp_dir, specify"},{"line_number":250,"context_line":"        # \u0027dirs_exists_ok\u003dTrue\u0027 to copytree instead when tacker support"},{"line_number":251,"context_line":"        # only py38 or later."},{"line_number":252,"context_line":"        os.rmdir(tmp_dir)"},{"line_number":253,"context_line":"        shutil.copytree(self.csar_dir, tmp_dir,"},{"line_number":254,"context_line":"            ignore\u003dshutil.ignore_patterns(\u0027Files\u0027))"},{"line_number":255,"context_line":"        return tmp_dir"}],"source_content_type":"text/x-python","patch_set":2,"id":"3c5b6889_01955c2f","line":252,"updated":"2022-02-09 07:53:57.000000000","message":"Just a question.\nIMO, \"tmp_dir\" is a unique directory created by \"tempfile.mkdtemp()\" and is guaranteed to be unique, is it correct?\nIf it is correct, isn\u0027t \"os.rmdir(tmp_dir)\" unnecessary?\nIf it is not correct, isn\u0027t \"os.rmdir(tmp_dir)\" not enough and better to use \"shutil.rmtree(tmp_dir)\"?","commit_id":"dec7bcc7f85ea85c0b04a6dd32d8826455ab0925"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"475f79b10573a83f8e0694b415d5bf2a5d7d0462","unresolved":true,"context_lines":[{"line_number":249,"context_line":"        # It is not necessary to remove tmp_dir, specify"},{"line_number":250,"context_line":"        # \u0027dirs_exists_ok\u003dTrue\u0027 to copytree instead when tacker support"},{"line_number":251,"context_line":"        # only py38 or later."},{"line_number":252,"context_line":"        os.rmdir(tmp_dir)"},{"line_number":253,"context_line":"        shutil.copytree(self.csar_dir, tmp_dir,"},{"line_number":254,"context_line":"            ignore\u003dshutil.ignore_patterns(\u0027Files\u0027))"},{"line_number":255,"context_line":"        return tmp_dir"}],"source_content_type":"text/x-python","patch_set":2,"id":"a407cdc9_0d65d5de","line":252,"in_reply_to":"1e3cfad3_9c75a8d3","updated":"2022-02-10 00:41:24.000000000","message":"\u003e But copytree will fail if \"tmp_dir\" exists\nsee L.245 comment.","commit_id":"dec7bcc7f85ea85c0b04a6dd32d8826455ab0925"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"903fcb53c7d5755235f8d5e4d1266e4d15283039","unresolved":true,"context_lines":[{"line_number":249,"context_line":"        # It is not necessary to remove tmp_dir, specify"},{"line_number":250,"context_line":"        # \u0027dirs_exists_ok\u003dTrue\u0027 to copytree instead when tacker support"},{"line_number":251,"context_line":"        # only py38 or later."},{"line_number":252,"context_line":"        os.rmdir(tmp_dir)"},{"line_number":253,"context_line":"        shutil.copytree(self.csar_dir, tmp_dir,"},{"line_number":254,"context_line":"            ignore\u003dshutil.ignore_patterns(\u0027Files\u0027))"},{"line_number":255,"context_line":"        return tmp_dir"}],"source_content_type":"text/x-python","patch_set":2,"id":"8ea3f07d_93e14768","line":252,"in_reply_to":"3c5b6889_01955c2f","updated":"2022-02-09 22:47:41.000000000","message":"\u003e IMO, \"tmp_dir\" is a unique directory created by \"tempfile.mkdtemp()\" and is guaranteed to be unique, is it correct?\n\ncorrect. It is why mkdtemp() is used here.\n\n\u003e If it is correct, isn\u0027t \"os.rmdir(tmp_dir)\" unnecessary?\nsee the comment. The only reason why do rmdir is that copytree does not permit destination directory existence on py36. (on py38, it is OK to use dirs_exists_ok\u003dTrue as the code before.)","commit_id":"dec7bcc7f85ea85c0b04a6dd32d8826455ab0925"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"0a2296e296ef0e130adbfea37db4ed6bdb7eeb95","unresolved":false,"context_lines":[{"line_number":249,"context_line":"        # It is not necessary to remove tmp_dir, specify"},{"line_number":250,"context_line":"        # \u0027dirs_exists_ok\u003dTrue\u0027 to copytree instead when tacker support"},{"line_number":251,"context_line":"        # only py38 or later."},{"line_number":252,"context_line":"        os.rmdir(tmp_dir)"},{"line_number":253,"context_line":"        shutil.copytree(self.csar_dir, tmp_dir,"},{"line_number":254,"context_line":"            ignore\u003dshutil.ignore_patterns(\u0027Files\u0027))"},{"line_number":255,"context_line":"        return tmp_dir"}],"source_content_type":"text/x-python","patch_set":2,"id":"61ef19bc_0611f0fd","line":252,"in_reply_to":"8ea3f07d_93e14768","updated":"2022-02-10 01:07:28.000000000","message":"Done","commit_id":"dec7bcc7f85ea85c0b04a6dd32d8826455ab0925"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"1428d176ade833d51352d434d3086fed9b2de622","unresolved":false,"context_lines":[{"line_number":249,"context_line":"        # It is not necessary to remove tmp_dir, specify"},{"line_number":250,"context_line":"        # \u0027dirs_exists_ok\u003dTrue\u0027 to copytree instead when tacker support"},{"line_number":251,"context_line":"        # only py38 or later."},{"line_number":252,"context_line":"        os.rmdir(tmp_dir)"},{"line_number":253,"context_line":"        shutil.copytree(self.csar_dir, tmp_dir,"},{"line_number":254,"context_line":"            ignore\u003dshutil.ignore_patterns(\u0027Files\u0027))"},{"line_number":255,"context_line":"        return tmp_dir"}],"source_content_type":"text/x-python","patch_set":2,"id":"75ff5526_a3dff0ac","line":252,"in_reply_to":"a407cdc9_0d65d5de","updated":"2022-02-10 01:06:51.000000000","message":"I\u0027m sorry, I misunderstood that \"tempfile.mkdtemp\" is not a function that creates a unique empty directory, but a function that gets a unique directory name.\nThere is no problem with the current implementation.","commit_id":"dec7bcc7f85ea85c0b04a6dd32d8826455ab0925"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"0aacd2bec874e5ee85da72c2ef7699b67d3beeea","unresolved":true,"context_lines":[{"line_number":249,"context_line":"        # It is not necessary to remove tmp_dir, specify"},{"line_number":250,"context_line":"        # \u0027dirs_exists_ok\u003dTrue\u0027 to copytree instead when tacker support"},{"line_number":251,"context_line":"        # only py38 or later."},{"line_number":252,"context_line":"        os.rmdir(tmp_dir)"},{"line_number":253,"context_line":"        shutil.copytree(self.csar_dir, tmp_dir,"},{"line_number":254,"context_line":"            ignore\u003dshutil.ignore_patterns(\u0027Files\u0027))"},{"line_number":255,"context_line":"        return tmp_dir"}],"source_content_type":"text/x-python","patch_set":2,"id":"1e3cfad3_9c75a8d3","line":252,"in_reply_to":"c3e5dda2_974da344","updated":"2022-02-10 00:25:43.000000000","message":"yes, \"tmp_dir\" was guaranteed to be unique and it is empty. But copytree will fail if \"tmp_dir\" exists. So it is necessary to rmdir before calling copytree. (\"tmp_dir\" will be made by copytree again, and it is expected to be unique.)","commit_id":"dec7bcc7f85ea85c0b04a6dd32d8826455ab0925"}]}
