)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"212c96320570bd08a878a5fc2d6914ff950adfb8","unresolved":false,"context_lines":[{"line_number":19,"context_line":"  I3c49825ac0d70152b6c8ee4c8ca01546265f4b80 not in stable/train"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"FileNotFoundError -\u003e OSError changes in the test file is due to py2.7"},{"line_number":22,"context_line":"does not have FileNotFoundError."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: Id1bbc955a9099de1abc11b9063fe177896646d03"},{"line_number":25,"context_line":"Related-Bug: #1878024"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"bf51134e_8fd4f7ea","line":22,"updated":"2020-07-09 17:57:54.000000000","message":"also:\nIOError -\u003e OSError changes in the test file as IOError is an alias for OSError in python3, but in python2 those are two different exceptions.","commit_id":"f26823c7805c96d155de6837a08ec34271117515"}],"nova/tests/unit/virt/libvirt/test_imagecache.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2886244b3e7eae8e38ed8eb753c3abb57468fd02","unresolved":false,"context_lines":[{"line_number":700,"context_line":"    @mock.patch(\u0027os.stat\u0027)"},{"line_number":701,"context_line":"    @mock.patch(\u0027os.listdir\u0027)"},{"line_number":702,"context_line":"    def test_get_disk_usage_cache_dir_missing(self, mock_listdir, mock_stat):"},{"line_number":703,"context_line":"        mock_stat.side_effect \u003d [mock.Mock(st_dev\u003d0), FileNotFoundError]"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"        manager \u003d imagecache.ImageCacheManager()"},{"line_number":706,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_7b5582f9","line":703,"range":{"start_line":703,"start_character":54,"end_line":703,"end_character":71},"updated":"2020-06-29 14:59:48.000000000","message":"it does not exists in py2.7","commit_id":"b7726d34b9d1426676ab7be52c7a3bf0114b7f4d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3061fafbbbeb34d198a0608e690882d917497407","unresolved":false,"context_lines":[{"line_number":700,"context_line":"    @mock.patch(\u0027os.stat\u0027)"},{"line_number":701,"context_line":"    @mock.patch(\u0027os.listdir\u0027)"},{"line_number":702,"context_line":"    def test_get_disk_usage_cache_dir_missing(self, mock_listdir, mock_stat):"},{"line_number":703,"context_line":"        mock_stat.side_effect \u003d [mock.Mock(st_dev\u003d0), FileNotFoundError]"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"        manager \u003d imagecache.ImageCacheManager()"},{"line_number":706,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_5bacfe9d","line":703,"range":{"start_line":703,"start_character":54,"end_line":703,"end_character":71},"in_reply_to":"bf51134e_7b5582f9","updated":"2020-06-29 15:18:15.000000000","message":"Done","commit_id":"b7726d34b9d1426676ab7be52c7a3bf0114b7f4d"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"212c96320570bd08a878a5fc2d6914ff950adfb8","unresolved":false,"context_lines":[{"line_number":742,"context_line":"            mock.Mock(st_dev\u003d0),"},{"line_number":743,"context_line":"            # stat calls on each file in the cache directory to get the size"},{"line_number":744,"context_line":"            mock.Mock(st_blocks\u003d10),  # foo"},{"line_number":745,"context_line":"            OSError,  # error while checking bar"},{"line_number":746,"context_line":"        ]"},{"line_number":747,"context_line":"        mock_listdir.return_value \u003d [\u0027foo\u0027, \u0027bar\u0027, \u0027some-dir\u0027]"},{"line_number":748,"context_line":"        mock_isfile.side_effect \u003d ["}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_ef2bf3e7","line":745,"range":{"start_line":745,"start_character":12,"end_line":745,"end_character":14},"updated":"2020-07-09 17:57:54.000000000","message":"In the original patch this was IOError and we catch it with \u0027except OSError\u0027 which works in python3 as IOError is an alias for OSError there.\nIn python2 IOError !\u003d OSError, so the test would fail, so this needed to be replaced to OSError.","commit_id":"f26823c7805c96d155de6837a08ec34271117515"}],"nova/virt/libvirt/imagecache.py":[{"author":{"_account_id":28332,"name":"Alexandre arents","email":"alexandre.arents@corp.ovh.com","username":"aarents"},"change_message_id":"92bac7a9378de905b337ff0372cda5bce1fbd2df","unresolved":false,"context_lines":[{"line_number":373,"context_line":"                os.stat(os.path.join(self.cache_dir, f)).st_blocks * 512"},{"line_number":374,"context_line":"                for f in os.listdir(self.cache_dir)"},{"line_number":375,"context_line":"                if os.path.isfile(os.path.join(self.cache_dir, f)))"},{"line_number":376,"context_line":"        except IOError:"},{"line_number":377,"context_line":"            # NOTE(gibi): An error here can mean many things. E.g. the cache"},{"line_number":378,"context_line":"            # dir does not exists yet, the cache dir is deleted between the"},{"line_number":379,"context_line":"            # listdir() and the stat() calls, or a file is deleted between"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_7b4ef4c1","line":376,"range":{"start_line":376,"start_character":15,"end_line":376,"end_character":22},"updated":"2020-07-02 08:27:52.000000000","message":"Should we keep OSError instead? (or both OSError IOError)\nos.things() raise OSerror even on pyhton 2.7\nhttps://docs.python.org/2/library/os.html\n\npython2.7\nPython 2.7.17 (default, Apr 15 2020, 17:20:14) \n[GCC 7.5.0] on linux2\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n\u003e\u003e\u003e import os\n\u003e\u003e\u003e os.stat(\u0027dfdfgfdgfd\u0027)\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\nOSError: [Errno 2] No such file or directory: \u0027dfdfgfdgfd\u0027\n\nand OSError does not inherit from IOError in hierarchy:\nhttps://docs.python.org/2.7/library/exceptions.html\n\nNow you make me doubt.","commit_id":"1703b3626ca6ba3ba5e487de53b68db19fe91136"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"509c0a7a0d412b25e977a69baba95177dc333af8","unresolved":false,"context_lines":[{"line_number":373,"context_line":"                os.stat(os.path.join(self.cache_dir, f)).st_blocks * 512"},{"line_number":374,"context_line":"                for f in os.listdir(self.cache_dir)"},{"line_number":375,"context_line":"                if os.path.isfile(os.path.join(self.cache_dir, f)))"},{"line_number":376,"context_line":"        except IOError:"},{"line_number":377,"context_line":"            # NOTE(gibi): An error here can mean many things. E.g. the cache"},{"line_number":378,"context_line":"            # dir does not exists yet, the cache dir is deleted between the"},{"line_number":379,"context_line":"            # listdir() and the stat() calls, or a file is deleted between"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_46e9857e","line":376,"range":{"start_line":376,"start_character":15,"end_line":376,"end_character":22},"in_reply_to":"bf51134e_55e9307e","updated":"2020-07-03 10:04:48.000000000","message":"I don\u0027t know what I smoked to think that OSError does not exists in py27. sorry.","commit_id":"1703b3626ca6ba3ba5e487de53b68db19fe91136"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"dbc6c79ea1504510663c8060159cebd65db4f590","unresolved":false,"context_lines":[{"line_number":373,"context_line":"                os.stat(os.path.join(self.cache_dir, f)).st_blocks * 512"},{"line_number":374,"context_line":"                for f in os.listdir(self.cache_dir)"},{"line_number":375,"context_line":"                if os.path.isfile(os.path.join(self.cache_dir, f)))"},{"line_number":376,"context_line":"        except IOError:"},{"line_number":377,"context_line":"            # NOTE(gibi): An error here can mean many things. E.g. the cache"},{"line_number":378,"context_line":"            # dir does not exists yet, the cache dir is deleted between the"},{"line_number":379,"context_line":"            # listdir() and the stat() calls, or a file is deleted between"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_d5e380a3","line":376,"range":{"start_line":376,"start_character":15,"end_line":376,"end_character":22},"in_reply_to":"bf51134e_7b4ef4c1","updated":"2020-07-02 20:41:23.000000000","message":"Yeah, I thought this should have remained OSError -- I had done the same local test as Alexandre when I first reviewed the master change.","commit_id":"1703b3626ca6ba3ba5e487de53b68db19fe91136"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"887854b9b366c8064e8ee3b508deed9ada2cd9a3","unresolved":false,"context_lines":[{"line_number":373,"context_line":"                os.stat(os.path.join(self.cache_dir, f)).st_blocks * 512"},{"line_number":374,"context_line":"                for f in os.listdir(self.cache_dir)"},{"line_number":375,"context_line":"                if os.path.isfile(os.path.join(self.cache_dir, f)))"},{"line_number":376,"context_line":"        except IOError:"},{"line_number":377,"context_line":"            # NOTE(gibi): An error here can mean many things. E.g. the cache"},{"line_number":378,"context_line":"            # dir does not exists yet, the cache dir is deleted between the"},{"line_number":379,"context_line":"            # listdir() and the stat() calls, or a file is deleted between"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_55e9307e","line":376,"range":{"start_line":376,"start_character":15,"end_line":376,"end_character":22},"in_reply_to":"bf51134e_d5e380a3","updated":"2020-07-02 20:42:12.000000000","message":"What python2.7 doesn\u0027t have is the FileNotFoundError -- but you had removed that in a later PS of the master change, so no longer a problem for the backports.","commit_id":"1703b3626ca6ba3ba5e487de53b68db19fe91136"}]}
