)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1dcdf6e8a122676b3b2351e74574f6b973ad2e79","unresolved":false,"context_lines":[{"line_number":7,"context_line":"image cache clean-up to clean swap disk"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently swap backing files are never removed from the system."},{"line_number":10,"context_line":"The image clean-up code should recognise at least obsolete unused files"},{"line_number":11,"context_line":"need to be removed."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I09519a73c7233f2dc6f46f6cd094a3e1cc3dc395"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"9aa7fdbe_0d402006","line":10,"updated":"2014-10-23 16:37:38.000000000","message":"@Pavel: recognise is British spelling for recognize, so it\u0027s ok here :)","commit_id":"175ec5ec577d5ad99f587b35a7a756f7cab4e4f8"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"fddbccd4a873a5ae79bea348bf99fb5f001e7f4e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"image cache clean-up to clean swap disk"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently swap backing files are never removed from the system."},{"line_number":10,"context_line":"The image clean-up code should recognise at least obsolete unused files"},{"line_number":11,"context_line":"need to be removed."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I09519a73c7233f2dc6f46f6cd094a3e1cc3dc395"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"baada198_32264bcc","line":10,"updated":"2014-08-07 11:16:44.000000000","message":"recognize, absolute or absolutely","commit_id":"175ec5ec577d5ad99f587b35a7a756f7cab4e4f8"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5f4e6943add8d39487a1c845b7043ac8a9493a5c","unresolved":false,"context_lines":[{"line_number":11,"context_line":"need to be removed."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I09519a73c7233f2dc6f46f6cd094a3e1cc3dc395"},{"line_number":14,"context_line":"Partial-Bug: 1253991a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":28,"id":"5a890539_08930850","line":14,"updated":"2014-11-28 14:13:58.000000000","message":"Remove trailing \"a\" above.","commit_id":"7252839c9ecbdfc01342a940ed43aed5f1377a7a"}],"nova/tests/virt/libvirt/test_imagecache.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"63b61b1860dcb831a7ac1fee84465c7d557c36c7","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self.assertIsNone(csum)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def test_get_age_of_file(self):"},{"line_number":72,"context_line":"        self.stubs.Set(os.path, \u0027exists\u0027, lambda x: True)"},{"line_number":73,"context_line":"        self.stubs.Set(time, \u0027time\u0027, lambda *x, **y: 0)"},{"line_number":74,"context_line":"        def getmtime(path):"},{"line_number":75,"context_line":"            return time.time() - 1000000"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAWH%2F%2FGWY%3D","line":72,"updated":"2014-03-20 09:31:27.000000000","message":"can you please use mock instead","commit_id":"b9eac9c222f12c645a91068422385cec6829e137"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"cf2d8c6f986611921742193ac5739422bde89d86","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self.assertIsNone(csum)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def test_get_age_of_file(self):"},{"line_number":72,"context_line":"        self.stubs.Set(os.path, \u0027exists\u0027, lambda x: True)"},{"line_number":73,"context_line":"        self.stubs.Set(time, \u0027time\u0027, lambda *x, **y: 0)"},{"line_number":74,"context_line":"        def getmtime(path):"},{"line_number":75,"context_line":"            return time.time() - 1000000"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAWH%2F%2FAM0%3D","line":72,"in_reply_to":"AAAAWH%2F%2FGWY%3D","updated":"2014-03-21 01:26:25.000000000","message":"Done","commit_id":"b9eac9c222f12c645a91068422385cec6829e137"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"63b61b1860dcb831a7ac1fee84465c7d557c36c7","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        image_cache_manager \u003d imagecache.ImageCacheManager()"},{"line_number":79,"context_line":"        exists, age \u003d image_cache_manager._get_age_of_file(\u0027/tmp\u0027)"},{"line_number":80,"context_line":"        self.assertEqual(True, exists)"},{"line_number":81,"context_line":"        self.assertEqual(1000000, age)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def test_get_age_of_file_not_exists(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAWH%2F%2FGWM%3D","line":80,"updated":"2014-03-20 09:31:27.000000000","message":"please use self.assertTrue","commit_id":"b9eac9c222f12c645a91068422385cec6829e137"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"cf2d8c6f986611921742193ac5739422bde89d86","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        image_cache_manager \u003d imagecache.ImageCacheManager()"},{"line_number":79,"context_line":"        exists, age \u003d image_cache_manager._get_age_of_file(\u0027/tmp\u0027)"},{"line_number":80,"context_line":"        self.assertEqual(True, exists)"},{"line_number":81,"context_line":"        self.assertEqual(1000000, age)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def test_get_age_of_file_not_exists(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAWH%2F%2FAM4%3D","line":80,"in_reply_to":"AAAAWH%2F%2FGWM%3D","updated":"2014-03-21 01:26:25.000000000","message":"Done","commit_id":"b9eac9c222f12c645a91068422385cec6829e137"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"63b61b1860dcb831a7ac1fee84465c7d557c36c7","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        image_cache_manager \u003d imagecache.ImageCacheManager()"},{"line_number":87,"context_line":"        exists, age \u003d image_cache_manager._get_age_of_file(\u0027/tmp\u0027)"},{"line_number":88,"context_line":"        self.assertEqual(False, exists)"},{"line_number":89,"context_line":"        self.assertEqual(0, age)    "},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_read_stored_checksum(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAWH%2F%2FGWI%3D","line":88,"updated":"2014-03-20 09:31:27.000000000","message":"self.assertFalse","commit_id":"b9eac9c222f12c645a91068422385cec6829e137"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"cf2d8c6f986611921742193ac5739422bde89d86","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        image_cache_manager \u003d imagecache.ImageCacheManager()"},{"line_number":87,"context_line":"        exists, age \u003d image_cache_manager._get_age_of_file(\u0027/tmp\u0027)"},{"line_number":88,"context_line":"        self.assertEqual(False, exists)"},{"line_number":89,"context_line":"        self.assertEqual(0, age)    "},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_read_stored_checksum(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAWH%2F%2FAM8%3D","line":88,"in_reply_to":"AAAAWH%2F%2FGWI%3D","updated":"2014-03-21 01:26:25.000000000","message":"Done","commit_id":"b9eac9c222f12c645a91068422385cec6829e137"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"63b61b1860dcb831a7ac1fee84465c7d557c36c7","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        image_cache_manager \u003d imagecache.ImageCacheManager()"},{"line_number":87,"context_line":"        exists, age \u003d image_cache_manager._get_age_of_file(\u0027/tmp\u0027)"},{"line_number":88,"context_line":"        self.assertEqual(False, exists)"},{"line_number":89,"context_line":"        self.assertEqual(0, age)    "},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_read_stored_checksum(self):"},{"line_number":92,"context_line":"        with utils.tempdir() as tmpdir:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAWH%2F%2FGWo%3D","line":89,"updated":"2014-03-20 09:31:27.000000000","message":"white space","commit_id":"b9eac9c222f12c645a91068422385cec6829e137"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"cf2d8c6f986611921742193ac5739422bde89d86","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        image_cache_manager \u003d imagecache.ImageCacheManager()"},{"line_number":87,"context_line":"        exists, age \u003d image_cache_manager._get_age_of_file(\u0027/tmp\u0027)"},{"line_number":88,"context_line":"        self.assertEqual(False, exists)"},{"line_number":89,"context_line":"        self.assertEqual(0, age)    "},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_read_stored_checksum(self):"},{"line_number":92,"context_line":"        with utils.tempdir() as tmpdir:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAWH%2F%2FANA%3D","line":89,"in_reply_to":"AAAAWH%2F%2FGWo%3D","updated":"2014-03-21 01:26:25.000000000","message":"Done","commit_id":"b9eac9c222f12c645a91068422385cec6829e137"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"63b61b1860dcb831a7ac1fee84465c7d557c36c7","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                                \u002710737418240\u0027)"},{"line_number":183,"context_line":"        self.assertNotIn(unexpected, image_cache_manager.originals)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        self.assertEqual(len(image_cache_manager.back_swap_images), 1)"},{"line_number":186,"context_line":"        self.assertTrue(\u0027swap_1000\u0027 in image_cache_manager.back_swap_images)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def test_list_backing_images_small(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAWH%2F%2FGV8%3D","line":185,"updated":"2014-03-20 09:31:27.000000000","message":"minor nit - in general first parameter is the expected one","commit_id":"b9eac9c222f12c645a91068422385cec6829e137"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"cf2d8c6f986611921742193ac5739422bde89d86","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                                \u002710737418240\u0027)"},{"line_number":183,"context_line":"        self.assertNotIn(unexpected, image_cache_manager.originals)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        self.assertEqual(len(image_cache_manager.back_swap_images), 1)"},{"line_number":186,"context_line":"        self.assertTrue(\u0027swap_1000\u0027 in image_cache_manager.back_swap_images)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def test_list_backing_images_small(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAWH%2F%2FAMw%3D","line":185,"in_reply_to":"AAAAWH%2F%2FGV8%3D","updated":"2014-03-21 01:26:25.000000000","message":"Done","commit_id":"b9eac9c222f12c645a91068422385cec6829e137"},{"author":{"_account_id":8430,"name":"Christopher Lefelhocz","email":"christopher.lefelhoc@rackspace.com","username":"leif"},"change_message_id":"20d2bd7731c424e351bd6ade34f7be67e3a9a554","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from nova import conductor"},{"line_number":27,"context_line":"from nova import context"},{"line_number":28,"context_line":"from nova import db"},{"line_number":29,"context_line":"from nova.objects import block_device as block_device_obj"},{"line_number":30,"context_line":"from nova.openstack.common import importutils"},{"line_number":31,"context_line":"from nova.openstack.common import log as logging"},{"line_number":32,"context_line":"from nova.openstack.common import processutils"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_d382b851","line":29,"updated":"2014-05-30 18:38:51.000000000","message":"My understanding... \nSo bp object-subclassing is deprecating use like this and moving to direct object subclassing.  so this really should be:\n\"from nova.objects import objects\"","commit_id":"07d49b71705d3adaa22b85b6aa721b9d0eff0fd8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"57407886965f408b21b15c3feba172a3d1116087","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from nova import conductor"},{"line_number":27,"context_line":"from nova import context"},{"line_number":28,"context_line":"from nova import db"},{"line_number":29,"context_line":"from nova.objects import block_device as block_device_obj"},{"line_number":30,"context_line":"from nova.openstack.common import importutils"},{"line_number":31,"context_line":"from nova.openstack.common import log as logging"},{"line_number":32,"context_line":"from nova.openstack.common import processutils"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_bc2d86aa","line":29,"in_reply_to":"1ae5cdf2_d382b851","updated":"2014-06-04 03:24:28.000000000","message":"yes, correct, I saw the code change, I will follow that \nthanks","commit_id":"07d49b71705d3adaa22b85b6aa721b9d0eff0fd8"},{"author":{"_account_id":8430,"name":"Christopher Lefelhocz","email":"christopher.lefelhoc@rackspace.com","username":"leif"},"change_message_id":"20d2bd7731c424e351bd6ade34f7be67e3a9a554","unresolved":false,"context_lines":[{"line_number":701,"context_line":"                   \u0027get_by_instance_uuid\u0027)"},{"line_number":702,"context_line":""},{"line_number":703,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":704,"context_line":"        block_device_obj.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":705,"context_line":"                ctxt, \u0027123\u0027).AndReturn(None)"},{"line_number":706,"context_line":"        block_device_obj.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":707,"context_line":"                ctxt, \u0027456\u0027).AndReturn(None)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_d3e9d81b","line":704,"updated":"2014-05-30 18:38:51.000000000","message":"And this should be objects.block_device....","commit_id":"07d49b71705d3adaa22b85b6aa721b9d0eff0fd8"},{"author":{"_account_id":8430,"name":"Christopher Lefelhocz","email":"christopher.lefelhoc@rackspace.com","username":"leif"},"change_message_id":"20d2bd7731c424e351bd6ade34f7be67e3a9a554","unresolved":false,"context_lines":[{"line_number":703,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":704,"context_line":"        block_device_obj.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":705,"context_line":"                ctxt, \u0027123\u0027).AndReturn(None)"},{"line_number":706,"context_line":"        block_device_obj.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":707,"context_line":"                ctxt, \u0027456\u0027).AndReturn(None)"},{"line_number":708,"context_line":""},{"line_number":709,"context_line":"        self.mox.ReplayAll()"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_f3eed421","line":706,"updated":"2014-05-30 18:38:51.000000000","message":"Same here...","commit_id":"07d49b71705d3adaa22b85b6aa721b9d0eff0fd8"},{"author":{"_account_id":8430,"name":"Christopher Lefelhocz","email":"christopher.lefelhoc@rackspace.com","username":"leif"},"change_message_id":"20d2bd7731c424e351bd6ade34f7be67e3a9a554","unresolved":false,"context_lines":[{"line_number":792,"context_line":"                   \u0027get_by_instance_uuid\u0027)"},{"line_number":793,"context_line":""},{"line_number":794,"context_line":"            ctxt \u003d context.get_admin_context()"},{"line_number":795,"context_line":"            block_device_obj.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":796,"context_line":"                ctxt, \u0027123\u0027).AndReturn(None)"},{"line_number":797,"context_line":"            block_device_obj.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":798,"context_line":"                ctxt, \u0027456\u0027).AndReturn(None)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_13f420f1","line":795,"updated":"2014-05-30 18:38:51.000000000","message":"And here...","commit_id":"07d49b71705d3adaa22b85b6aa721b9d0eff0fd8"},{"author":{"_account_id":8430,"name":"Christopher Lefelhocz","email":"christopher.lefelhoc@rackspace.com","username":"leif"},"change_message_id":"20d2bd7731c424e351bd6ade34f7be67e3a9a554","unresolved":false,"context_lines":[{"line_number":794,"context_line":"            ctxt \u003d context.get_admin_context()"},{"line_number":795,"context_line":"            block_device_obj.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":796,"context_line":"                ctxt, \u0027123\u0027).AndReturn(None)"},{"line_number":797,"context_line":"            block_device_obj.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":798,"context_line":"                ctxt, \u0027456\u0027).AndReturn(None)"},{"line_number":799,"context_line":""},{"line_number":800,"context_line":"            self.mox.ReplayAll()"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_33f91cea","line":797,"updated":"2014-05-30 18:38:51.000000000","message":"and here...","commit_id":"07d49b71705d3adaa22b85b6aa721b9d0eff0fd8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b8ec99f6cb6684fb21ff112550257d20bc78a7b7","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        csum \u003d imagecache.read_stored_checksum(\u0027/tmp/foo\u0027, timestamped\u003dFalse)"},{"line_number":69,"context_line":"        self.assertIsNone(csum)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def test_get_age_of_file(self):"},{"line_number":72,"context_line":"        self.mox.StubOutWithMock(os.path, \u0027exists\u0027)"},{"line_number":73,"context_line":"        self.mox.StubOutWithMock(time, \u0027time\u0027)"},{"line_number":74,"context_line":"        self.mox.StubOutWithMock(os.path, \u0027getmtime\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"1ae5cdf2_a2434a11","line":71,"updated":"2014-06-06 07:41:20.000000000","message":"can you please write the test with mock?","commit_id":"158cf7ca55265c3094b5f080776b348871ca56d7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b8ec99f6cb6684fb21ff112550257d20bc78a7b7","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.assertTrue(exists)"},{"line_number":84,"context_line":"        self.assertEqual(1000000, age)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def test_get_age_of_file_not_exists(self):"},{"line_number":87,"context_line":"        self.mox.StubOutWithMock(os.path, \u0027exists\u0027)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        os.path.exists(\u0027/tmp\u0027).AndReturn(False)"}],"source_content_type":"text/x-python","patch_set":20,"id":"1ae5cdf2_6264e2b8","line":86,"updated":"2014-06-06 07:41:20.000000000","message":"ditto","commit_id":"158cf7ca55265c3094b5f080776b348871ca56d7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"675d2e85efb83744d866adc37923503a151833e4","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        self.assertNotIn(unexpected, image_cache_manager.originals)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        self.assertEqual(1, len(image_cache_manager.back_swap_images))"},{"line_number":193,"context_line":"        self.assertTrue(\u0027swap_1000\u0027 in image_cache_manager.back_swap_images)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def test_list_backing_images_small(self):"},{"line_number":196,"context_line":"        self.stubs.Set(os, \u0027listdir\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1ae5cdf2_76d30038","line":193,"updated":"2014-06-19 14:01:09.000000000","message":"please use assertIn","commit_id":"158cf7ca55265c3094b5f080776b348871ca56d7"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"d3505018b4a94ba9d5a54e5386bad7a6fc9b1f7f","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        csum \u003d imagecache.read_stored_checksum(\u0027/tmp/foo\u0027, timestamped\u003dFalse)"},{"line_number":69,"context_line":"        self.assertIsNone(csum)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def test_get_age_of_file(self):"},{"line_number":72,"context_line":"        self.mox.StubOutWithMock(os.path, \u0027exists\u0027)"},{"line_number":73,"context_line":"        self.mox.StubOutWithMock(time, \u0027time\u0027)"},{"line_number":74,"context_line":"        self.mox.StubOutWithMock(os.path, \u0027getmtime\u0027)"}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_af43d869","line":71,"updated":"2014-08-07 10:37:57.000000000","message":"Look at the example with using mock-library:\n\n    @mock.patch.object(os.path, \u0027exists\u0027, return_value\u003dTrue)\n    @mock.patch.object(time, \u0027time\u0027, return_value\u003d2000000)\n    @mock.patch.object(os.path, \u0027getmtime\u0027, return_value\u003d1000000)\n    def test_get_age_of_file(self, mock_getmtime, mock_time, mock_exists):\n        image_cache_manager \u003d imagecache.ImageCacheManager()\n        exists, age \u003d image_cache_manager._get_age_of_file(\u0027/tmp\u0027)\n        self.assertTrue(exists)\n        self.assertEqual(1000000, age)\n\nIt\u0027s more clearly, so use mock for all new test-cases. :)","commit_id":"175ec5ec577d5ad99f587b35a7a756f7cab4e4f8"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1dcdf6e8a122676b3b2351e74574f6b973ad2e79","unresolved":false,"context_lines":[{"line_number":845,"context_line":"        expect_set \u003d set([\u0027swap_123\u0027, \u0027swap_456\u0027])"},{"line_number":846,"context_line":"        self.assertEqual(image_cache_manager.back_swap_images, expect_set)"},{"line_number":847,"context_line":""},{"line_number":848,"context_line":"    def test_age_and_verify_swap_images(self):"},{"line_number":849,"context_line":"        self.stubs.Set(libvirt_utils, \u0027chown\u0027, lambda x, y: None)"},{"line_number":850,"context_line":"        image_cache_manager \u003d imagecache.ImageCacheManager()"},{"line_number":851,"context_line":"        expected_remove \u003d set()"}],"source_content_type":"text/x-python","patch_set":25,"id":"9aa7fdbe_8dbc1008","line":848,"updated":"2014-10-23 16:37:38.000000000","message":"Please rewrite with mock. Thanks!","commit_id":"175ec5ec577d5ad99f587b35a7a756f7cab4e4f8"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"fddbccd4a873a5ae79bea348bf99fb5f001e7f4e","unresolved":false,"context_lines":[{"line_number":876,"context_line":""},{"line_number":877,"context_line":"        self.stubs.Set(os, \u0027remove\u0027, lambda x: removefile(x))"},{"line_number":878,"context_line":"        image_cache_manager._age_and_verify_swap_images(None, \u0027/tmp_age_test\u0027)"},{"line_number":879,"context_line":"        self.assertEqual(len(expected_exist), 1)"},{"line_number":880,"context_line":"        self.assertEqual(len(expected_remove), 1)"},{"line_number":881,"context_line":"        self.assertTrue(\u0027swap_128\u0027 in expected_exist)"},{"line_number":882,"context_line":"        self.assertTrue(\u0027swap_256\u0027 in expected_remove)"}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_32780bc1","line":879,"updated":"2014-08-07 11:16:44.000000000","message":"self.assertEqual has signature\n assertEqual(expected, actual)\nso it\u0027s better to use\n self.assertEqual(1, len(expected_exist))\n\nPlease, make this fix in all places with assertEqual","commit_id":"175ec5ec577d5ad99f587b35a7a756f7cab4e4f8"}],"nova/tests/virt/test_imagecache.py":[{"author":{"_account_id":8430,"name":"Christopher Lefelhocz","email":"christopher.lefelhoc@rackspace.com","username":"leif"},"change_message_id":"20d2bd7731c424e351bd6ade34f7be67e3a9a554","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from nova import block_device"},{"line_number":18,"context_line":"from nova.compute import vm_states"},{"line_number":19,"context_line":"from nova import context"},{"line_number":20,"context_line":"from nova.objects import block_device as block_device_obj"},{"line_number":21,"context_line":"from nova import test"},{"line_number":22,"context_line":"from nova.virt import imagecache"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_b91d0bc0","line":20,"updated":"2014-05-30 18:38:51.000000000","message":"See other test file for comment son this type of access.","commit_id":"07d49b71705d3adaa22b85b6aa721b9d0eff0fd8"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1dcdf6e8a122676b3b2351e74574f6b973ad2e79","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from nova import block_device"},{"line_number":18,"context_line":"from nova.compute import vm_states"},{"line_number":19,"context_line":"from nova import context"},{"line_number":20,"context_line":"import nova.objects as objects"},{"line_number":21,"context_line":"from nova import test"},{"line_number":22,"context_line":"from nova.virt import imagecache"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"9aa7fdbe_adb9d416","line":20,"updated":"2014-10-23 16:37:38.000000000","message":"this should be:\n\n from nova import objects","commit_id":"175ec5ec577d5ad99f587b35a7a756f7cab4e4f8"}],"nova/tests/virt/vmwareapi/test_driver_api.py":[{"author":{"_account_id":8430,"name":"Christopher Lefelhocz","email":"christopher.lefelhoc@rackspace.com","username":"leif"},"change_message_id":"20d2bd7731c424e351bd6ade34f7be67e3a9a554","unresolved":false,"context_lines":[{"line_number":38,"context_line":"from nova import context"},{"line_number":39,"context_line":"from nova import exception"},{"line_number":40,"context_line":"from nova.image import glance"},{"line_number":41,"context_line":"from nova.objects import block_device as block_device_obj"},{"line_number":42,"context_line":"from nova.openstack.common import jsonutils"},{"line_number":43,"context_line":"from nova.openstack.common import timeutils"},{"line_number":44,"context_line":"from nova.openstack.common import units"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_f965d345","line":41,"updated":"2014-05-30 18:38:51.000000000","message":"See other test file for comment.","commit_id":"07d49b71705d3adaa22b85b6aa721b9d0eff0fd8"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1dcdf6e8a122676b3b2351e74574f6b973ad2e79","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from nova import exception"},{"line_number":40,"context_line":"from nova.image import glance"},{"line_number":41,"context_line":"from nova.network import model as network_model"},{"line_number":42,"context_line":"import nova.objects as objects"},{"line_number":43,"context_line":"from nova.openstack.common import jsonutils"},{"line_number":44,"context_line":"from nova.openstack.common import timeutils"},{"line_number":45,"context_line":"from nova.openstack.common import units"}],"source_content_type":"text/x-python","patch_set":25,"id":"9aa7fdbe_cd39b8a5","line":42,"updated":"2014-10-23 16:37:38.000000000","message":"ditto","commit_id":"175ec5ec577d5ad99f587b35a7a756f7cab4e4f8"}],"nova/tests/virt/vmwareapi/test_imagecache.py":[{"author":{"_account_id":8430,"name":"Christopher Lefelhocz","email":"christopher.lefelhoc@rackspace.com","username":"leif"},"change_message_id":"20d2bd7731c424e351bd6ade34f7be67e3a9a554","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from oslo.config import cfg"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from nova import context"},{"line_number":22,"context_line":"from nova.objects import block_device as block_device_obj"},{"line_number":23,"context_line":"from nova.openstack.common import timeutils"},{"line_number":24,"context_line":"from nova import test"},{"line_number":25,"context_line":"from nova.virt.vmwareapi import ds_util"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_39601b32","line":22,"updated":"2014-05-30 18:38:51.000000000","message":"same here.","commit_id":"07d49b71705d3adaa22b85b6aa721b9d0eff0fd8"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1dcdf6e8a122676b3b2351e74574f6b973ad2e79","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from oslo.config import cfg"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from nova import context"},{"line_number":22,"context_line":"import nova.objects as objects"},{"line_number":23,"context_line":"from nova.openstack.common import timeutils"},{"line_number":24,"context_line":"from nova import test"},{"line_number":25,"context_line":"from nova.tests.virt.vmwareapi import fake"}],"source_content_type":"text/x-python","patch_set":25,"id":"9aa7fdbe_ed3e7c8b","line":22,"updated":"2014-10-23 16:37:38.000000000","message":"ditto","commit_id":"175ec5ec577d5ad99f587b35a7a756f7cab4e4f8"}],"nova/virt/imagecache.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"73a07b45e31fcbeab331a121571c734492f5d4c9","unresolved":false,"context_lines":[{"line_number":40,"context_line":"               help\u003d\u0027Unused unresized base images younger than this will not \u0027"},{"line_number":41,"context_line":"                    \u0027be removed\u0027,"},{"line_number":42,"context_line":"               deprecated_group\u003d\u0027libvirt\u0027),"},{"line_number":43,"context_line":"    cfg.IntOpt(\u0027remove_unused_swap_minimum_age_seconds\u0027,"},{"line_number":44,"context_line":"               default\u003d(24 * 3600),"},{"line_number":45,"context_line":"               help\u003d\u0027Unused swap base images younger than this will not \u0027"},{"line_number":46,"context_line":"                    \u0027be removed\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2F2gg%3D","line":43,"updated":"2014-02-24 14:03:05.000000000","message":"do we really need another config variable for this? This seems like proliferating options without a good reason, especially with the default being the same as above.","commit_id":"4f9037ccf0c24fdb9dfe1518bc01e8bb577a06db"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"db83afc65fb1bc8ce8e7db1790cb3e29504a148e","unresolved":false,"context_lines":[{"line_number":40,"context_line":"               help\u003d\u0027Unused unresized base images younger than this will not \u0027"},{"line_number":41,"context_line":"                    \u0027be removed\u0027,"},{"line_number":42,"context_line":"               deprecated_group\u003d\u0027libvirt\u0027),"},{"line_number":43,"context_line":"    cfg.IntOpt(\u0027remove_unused_swap_minimum_age_seconds\u0027,"},{"line_number":44,"context_line":"               default\u003d(24 * 3600),"},{"line_number":45,"context_line":"               help\u003d\u0027Unused swap base images younger than this will not \u0027"},{"line_number":46,"context_line":"                    \u0027be removed\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2FuiU%3D","line":43,"in_reply_to":"AAAAU3%2F%2F2gg%3D","updated":"2014-02-25 03:00:58.000000000","message":"I used to think to make an opportunity for different life cycle for disk file and swap file (e.g give swap file longer remaining time)\n\nso you are correct, I will adjust the default value to a longer time","commit_id":"4f9037ccf0c24fdb9dfe1518bc01e8bb577a06db"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"94d78888d19bc8db17ab9f4700d444d5dd59e137","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                image_popularity.setdefault(image_ref_str, 0)"},{"line_number":107,"context_line":"                image_popularity[image_ref_str] +\u003d 1"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"            bdms \u003d block_device_obj.BlockDeviceMappingList.\\"},{"line_number":110,"context_line":"                    get_by_instance_uuid(context, instance[\u0027uuid\u0027])"},{"line_number":111,"context_line":"            if bdms:"},{"line_number":112,"context_line":"                swap \u003d driver_block_device.convert_swap(bdms)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAWH%2F%2FXhs%3D","line":109,"updated":"2014-03-18 11:49:28.000000000","message":"nit: If you have to rebase it Can you use an other way to split this (without \u0027\\\u0027)","commit_id":"686a503afb703ecfccd0b0d0aeb0e5406cc6d500"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"286885e722e1a994fa4f7b74dc4a04792bacaab0","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                image_popularity.setdefault(image_ref_str, 0)"},{"line_number":107,"context_line":"                image_popularity[image_ref_str] +\u003d 1"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"            bdms \u003d block_device_obj.BlockDeviceMappingList.\\"},{"line_number":110,"context_line":"                    get_by_instance_uuid(context, instance[\u0027uuid\u0027])"},{"line_number":111,"context_line":"            if bdms:"},{"line_number":112,"context_line":"                swap \u003d driver_block_device.convert_swap(bdms)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAWH%2F%2FIIg%3D","line":109,"in_reply_to":"AAAAWH%2F%2FXhs%3D","updated":"2014-03-20 04:39:16.000000000","message":"ok, thanks","commit_id":"686a503afb703ecfccd0b0d0aeb0e5406cc6d500"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3dda648fd2cff352167007f5b2ab6314b454e2f4","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                image_popularity.setdefault(image_ref_str, 0)"},{"line_number":107,"context_line":"                image_popularity[image_ref_str] +\u003d 1"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"            gb \u003d block_device_obj.BlockDeviceMappingList.get_by_instance_uuid"},{"line_number":110,"context_line":"            bdms \u003d gb(context, instance[\u0027uuid\u0027])"},{"line_number":111,"context_line":"            if bdms:"},{"line_number":112,"context_line":"                swap \u003d driver_block_device.convert_swap(bdms)"}],"source_content_type":"text/x-python","patch_set":24,"id":"baada198_086c4506","line":109,"updated":"2014-08-04 10:23:57.000000000","message":"It isn\u0027t all the swap disk defined in bdm.\n\nhttps://github.com/openstack/nova/blob/master/nova/virt/libvirt/blockinfo.py#L555","commit_id":"8e1a3b25717d630c24221d0a69b40da52578e21b"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"34244bd5285e62c802769adece70c4700ad41cc4","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                image_popularity.setdefault(image_ref_str, 0)"},{"line_number":107,"context_line":"                image_popularity[image_ref_str] +\u003d 1"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"            gb \u003d block_device_obj.BlockDeviceMappingList.get_by_instance_uuid"},{"line_number":110,"context_line":"            bdms \u003d gb(context, instance[\u0027uuid\u0027])"},{"line_number":111,"context_line":"            if bdms:"},{"line_number":112,"context_line":"                swap \u003d driver_block_device.convert_swap(bdms)"}],"source_content_type":"text/x-python","patch_set":24,"id":"baada198_db77208d","line":109,"in_reply_to":"baada198_086c4506","updated":"2014-08-06 06:19:48.000000000","message":"I am not sure I understand the comments here\n\nthe bdms should contain all swap/eph disk ,right? \n\nelif inst_type[\u0027swap\u0027] \u003e 0: \nat Line 555 is the case ,but the eph disk will be created and put into bdms ,right?","commit_id":"8e1a3b25717d630c24221d0a69b40da52578e21b"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"43d8a1d0c5a1d2719d33b7b178b72356f4bc5dc9","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                image_popularity.setdefault(image_ref_str, 0)"},{"line_number":107,"context_line":"                image_popularity[image_ref_str] +\u003d 1"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"            gb \u003d block_device_obj.BlockDeviceMappingList.get_by_instance_uuid"},{"line_number":110,"context_line":"            bdms \u003d gb(context, instance[\u0027uuid\u0027])"},{"line_number":111,"context_line":"            if bdms:"},{"line_number":112,"context_line":"                swap \u003d driver_block_device.convert_swap(bdms)"}],"source_content_type":"text/x-python","patch_set":24,"id":"baada198_0975cbff","line":109,"in_reply_to":"baada198_db77208d","updated":"2014-08-06 11:10:03.000000000","message":"not, I think not. At least I create vm with flavor that include swap. But there isn\u0027t any record for swap in bdm db entry.","commit_id":"8e1a3b25717d630c24221d0a69b40da52578e21b"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3dda648fd2cff352167007f5b2ab6314b454e2f4","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            bdms \u003d gb(context, instance[\u0027uuid\u0027])"},{"line_number":111,"context_line":"            if bdms:"},{"line_number":112,"context_line":"                swap \u003d driver_block_device.convert_swap(bdms)"},{"line_number":113,"context_line":"                if swap is not None:"},{"line_number":114,"context_line":"                    try:"},{"line_number":115,"context_line":"                        swap_image \u003d \u0027swap_\u0027 + str(swap[0][\u0027swap_size\u0027])"},{"line_number":116,"context_line":"                    except (IndexError, KeyError):"}],"source_content_type":"text/x-python","patch_set":24,"id":"baada198_0bb51f7c","line":113,"updated":"2014-08-04 10:23:57.000000000","message":"looks like just \u0027if swap\u0027 is enough, there isn\u0027t a chance to return None. Then the \u0027try..catch\u0027 at line 114 can be removed.","commit_id":"8e1a3b25717d630c24221d0a69b40da52578e21b"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"34244bd5285e62c802769adece70c4700ad41cc4","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            bdms \u003d gb(context, instance[\u0027uuid\u0027])"},{"line_number":111,"context_line":"            if bdms:"},{"line_number":112,"context_line":"                swap \u003d driver_block_device.convert_swap(bdms)"},{"line_number":113,"context_line":"                if swap is not None:"},{"line_number":114,"context_line":"                    try:"},{"line_number":115,"context_line":"                        swap_image \u003d \u0027swap_\u0027 + str(swap[0][\u0027swap_size\u0027])"},{"line_number":116,"context_line":"                    except (IndexError, KeyError):"}],"source_content_type":"text/x-python","patch_set":24,"id":"baada198_5bb95015","line":113,"in_reply_to":"baada198_0bb51f7c","updated":"2014-08-06 06:19:48.000000000","message":"ok","commit_id":"8e1a3b25717d630c24221d0a69b40da52578e21b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"bb35b5fcf21c4e6078b221b178fc8dc394a9c067","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from nova.compute import task_states"},{"line_number":19,"context_line":"from nova.compute import vm_states"},{"line_number":20,"context_line":"from nova.objects import block_device as block_device_obj"},{"line_number":21,"context_line":"from nova.virt import block_device as driver_block_device"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"imagecache_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":26,"id":"5a890539_dd5f2071","line":20,"updated":"2014-11-10 17:31:45.000000000","message":"please use from nova import objects","commit_id":"5e8d6b1fc8ee68fa65c6b72374012c817aa9424a"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"d2d71ad5893b130d3db48a2da54cddcafab975f2","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from nova.compute import task_states"},{"line_number":19,"context_line":"from nova.compute import vm_states"},{"line_number":20,"context_line":"from nova.objects import block_device as block_device_obj"},{"line_number":21,"context_line":"from nova.virt import block_device as driver_block_device"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"imagecache_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":26,"id":"5a890539_e59a7a13","line":20,"in_reply_to":"5a890539_dd5f2071","updated":"2014-11-11 03:51:04.000000000","message":"Done","commit_id":"5e8d6b1fc8ee68fa65c6b72374012c817aa9424a"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"bb35b5fcf21c4e6078b221b178fc8dc394a9c067","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                image_popularity[image_ref_str] +\u003d 1"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"            gb \u003d block_device_obj.BlockDeviceMappingList.get_by_instance_uuid"},{"line_number":106,"context_line":"            bdms \u003d gb(context, instance[\u0027uuid\u0027])"},{"line_number":107,"context_line":"            if bdms:"},{"line_number":108,"context_line":"                swap \u003d driver_block_device.convert_swap(bdms)"},{"line_number":109,"context_line":"                if swap:"}],"source_content_type":"text/x-python","patch_set":26,"id":"5a890539_bdd174cf","line":106,"updated":"2014-11-10 17:31:45.000000000","message":"instances are object so please us .uuid","commit_id":"5e8d6b1fc8ee68fa65c6b72374012c817aa9424a"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"d2d71ad5893b130d3db48a2da54cddcafab975f2","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                image_popularity[image_ref_str] +\u003d 1"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"            gb \u003d block_device_obj.BlockDeviceMappingList.get_by_instance_uuid"},{"line_number":106,"context_line":"            bdms \u003d gb(context, instance[\u0027uuid\u0027])"},{"line_number":107,"context_line":"            if bdms:"},{"line_number":108,"context_line":"                swap \u003d driver_block_device.convert_swap(bdms)"},{"line_number":109,"context_line":"                if swap:"}],"source_content_type":"text/x-python","patch_set":26,"id":"5a890539_c5957ee5","line":106,"in_reply_to":"5a890539_bdd174cf","updated":"2014-11-11 03:51:04.000000000","message":"Done","commit_id":"5e8d6b1fc8ee68fa65c6b72374012c817aa9424a"}],"nova/virt/libvirt/imagecache.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"ef91541759889570818a27cc7bb9106355e7f1e5","unresolved":false,"context_lines":[{"line_number":266,"context_line":"            if original:"},{"line_number":267,"context_line":"                self.originals.append(entpath)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def _store_swap_iamge(self, base_dir, ent):"},{"line_number":270,"context_line":"        \"\"\"Store base swap images for later examination.\"\"\""},{"line_number":271,"context_line":"        names \u003d ent.split(\u0027_\u0027)"},{"line_number":272,"context_line":"        if len(names) \u003d\u003d 2 and names[0] \u003d\u003d \u0027swap\u0027:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAVn%2F%2Fs98%3D","line":269,"updated":"2014-03-04 15:48:07.000000000","message":"s/iamge/image/","commit_id":"a2d9b4a429218f38e8348444c927ae74a032a291"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9faa1588472f535a0c44324c8eff2ee240dcd4be","unresolved":false,"context_lines":[{"line_number":266,"context_line":"            if original:"},{"line_number":267,"context_line":"                self.originals.append(entpath)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def _store_swap_iamge(self, base_dir, ent):"},{"line_number":270,"context_line":"        \"\"\"Store base swap images for later examination.\"\"\""},{"line_number":271,"context_line":"        names \u003d ent.split(\u0027_\u0027)"},{"line_number":272,"context_line":"        if len(names) \u003d\u003d 2 and names[0] \u003d\u003d \u0027swap\u0027:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAVn%2F%2FmUw%3D","line":269,"in_reply_to":"AAAAVn%2F%2Fs98%3D","updated":"2014-03-05 05:47:47.000000000","message":"Done","commit_id":"a2d9b4a429218f38e8348444c927ae74a032a291"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"ef91541759889570818a27cc7bb9106355e7f1e5","unresolved":false,"context_lines":[{"line_number":292,"context_line":"                  not is_valid_info_file(os.path.join(base_dir, ent))):"},{"line_number":293,"context_line":"                self._store_image(base_dir, ent, original\u003dFalse)"},{"line_number":294,"context_line":"            else:"},{"line_number":295,"context_line":"                self._store_swap_iamge(base_dir, ent)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"        return {\u0027unexplained_images\u0027: self.unexplained_images,"},{"line_number":298,"context_line":"                \u0027originals\u0027: self.originals}"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAVn%2F%2Fs94%3D","line":295,"updated":"2014-03-04 15:48:07.000000000","message":"and again same typo","commit_id":"a2d9b4a429218f38e8348444c927ae74a032a291"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9faa1588472f535a0c44324c8eff2ee240dcd4be","unresolved":false,"context_lines":[{"line_number":292,"context_line":"                  not is_valid_info_file(os.path.join(base_dir, ent))):"},{"line_number":293,"context_line":"                self._store_image(base_dir, ent, original\u003dFalse)"},{"line_number":294,"context_line":"            else:"},{"line_number":295,"context_line":"                self._store_swap_iamge(base_dir, ent)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"        return {\u0027unexplained_images\u0027: self.unexplained_images,"},{"line_number":298,"context_line":"                \u0027originals\u0027: self.originals}"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAVn%2F%2FmU0%3D","line":295,"in_reply_to":"AAAAVn%2F%2Fs94%3D","updated":"2014-03-05 05:47:47.000000000","message":"Done","commit_id":"a2d9b4a429218f38e8348444c927ae74a032a291"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6834bd7aca35e67dd170967bb2da9c4250d2a196","unresolved":false,"context_lines":[{"line_number":436,"context_line":"    def _remove_swap_file(self, base_file):"},{"line_number":437,"context_line":"        \"\"\"Remove a single swap base file if it is old enough."},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        Returns nothing."},{"line_number":440,"context_line":"        \"\"\""},{"line_number":441,"context_line":"        if not os.path.exists(base_file):"},{"line_number":442,"context_line":"            LOG.debug(_(\u0027Cannot remove %(base_file)s, it does not exist\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAVn%2F%2FrQ8%3D","line":439,"updated":"2014-03-04 18:18:28.000000000","message":"nit: not really necessary.","commit_id":"a2d9b4a429218f38e8348444c927ae74a032a291"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9faa1588472f535a0c44324c8eff2ee240dcd4be","unresolved":false,"context_lines":[{"line_number":436,"context_line":"    def _remove_swap_file(self, base_file):"},{"line_number":437,"context_line":"        \"\"\"Remove a single swap base file if it is old enough."},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        Returns nothing."},{"line_number":440,"context_line":"        \"\"\""},{"line_number":441,"context_line":"        if not os.path.exists(base_file):"},{"line_number":442,"context_line":"            LOG.debug(_(\u0027Cannot remove %(base_file)s, it does not exist\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAVn%2F%2FmU4%3D","line":439,"in_reply_to":"AAAAVn%2F%2FrQ8%3D","updated":"2014-03-05 05:47:47.000000000","message":"Done","commit_id":"a2d9b4a429218f38e8348444c927ae74a032a291"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6834bd7aca35e67dd170967bb2da9c4250d2a196","unresolved":false,"context_lines":[{"line_number":439,"context_line":"        Returns nothing."},{"line_number":440,"context_line":"        \"\"\""},{"line_number":441,"context_line":"        if not os.path.exists(base_file):"},{"line_number":442,"context_line":"            LOG.debug(_(\u0027Cannot remove %(base_file)s, it does not exist\u0027),"},{"line_number":443,"context_line":"                      base_file)"},{"line_number":444,"context_line":"            return"},{"line_number":445,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAVn%2F%2FrQk%3D","line":442,"updated":"2014-03-04 18:18:28.000000000","message":"the format message is not valid. with %(something)s you have to pass a dict","commit_id":"a2d9b4a429218f38e8348444c927ae74a032a291"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9faa1588472f535a0c44324c8eff2ee240dcd4be","unresolved":false,"context_lines":[{"line_number":439,"context_line":"        Returns nothing."},{"line_number":440,"context_line":"        \"\"\""},{"line_number":441,"context_line":"        if not os.path.exists(base_file):"},{"line_number":442,"context_line":"            LOG.debug(_(\u0027Cannot remove %(base_file)s, it does not exist\u0027),"},{"line_number":443,"context_line":"                      base_file)"},{"line_number":444,"context_line":"            return"},{"line_number":445,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAVn%2F%2FmU8%3D","line":442,"in_reply_to":"AAAAVn%2F%2FrQk%3D","updated":"2014-03-05 05:47:47.000000000","message":"Done","commit_id":"a2d9b4a429218f38e8348444c927ae74a032a291"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"94d78888d19bc8db17ab9f4700d444d5dd59e137","unresolved":false,"context_lines":[{"line_number":317,"context_line":"                            continue"},{"line_number":318,"context_line":"                        else:"},{"line_number":319,"context_line":"                            raise"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"                    LOG.debug(_(\u0027Instance %(instance)s is backed by \u0027"},{"line_number":322,"context_line":"                                \u0027%(backing)s\u0027),"},{"line_number":323,"context_line":"                              {\u0027instance\u0027: ent,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAWH%2F%2FXDw%3D","line":320,"updated":"2014-03-18 11:49:28.000000000","message":"nit: not related to your change.","commit_id":"686a503afb703ecfccd0b0d0aeb0e5406cc6d500"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"286885e722e1a994fa4f7b74dc4a04792bacaab0","unresolved":false,"context_lines":[{"line_number":317,"context_line":"                            continue"},{"line_number":318,"context_line":"                        else:"},{"line_number":319,"context_line":"                            raise"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"                    LOG.debug(_(\u0027Instance %(instance)s is backed by \u0027"},{"line_number":322,"context_line":"                                \u0027%(backing)s\u0027),"},{"line_number":323,"context_line":"                              {\u0027instance\u0027: ent,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAWH%2F%2FHuM%3D","line":320,"in_reply_to":"AAAAWH%2F%2FXDw%3D","updated":"2014-03-20 04:39:16.000000000","message":"Done","commit_id":"686a503afb703ecfccd0b0d0aeb0e5406cc6d500"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"94d78888d19bc8db17ab9f4700d444d5dd59e137","unresolved":false,"context_lines":[{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        \"\"\""},{"line_number":440,"context_line":"        if not os.path.exists(base_file):"},{"line_number":441,"context_line":"            LOG.debug(_(\u0027Cannot remove %s, it does not exist\u0027) % base_file)"},{"line_number":442,"context_line":"            return"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        mtime \u003d os.path.getmtime(base_file)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAWH%2F%2FXDY%3D","line":441,"updated":"2014-03-18 11:49:28.000000000","message":"nit: s/%/,","commit_id":"686a503afb703ecfccd0b0d0aeb0e5406cc6d500"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"286885e722e1a994fa4f7b74dc4a04792bacaab0","unresolved":false,"context_lines":[{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        \"\"\""},{"line_number":440,"context_line":"        if not os.path.exists(base_file):"},{"line_number":441,"context_line":"            LOG.debug(_(\u0027Cannot remove %s, it does not exist\u0027) % base_file)"},{"line_number":442,"context_line":"            return"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        mtime \u003d os.path.getmtime(base_file)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAWH%2F%2FHuQ%3D","line":441,"in_reply_to":"AAAAWH%2F%2FXDY%3D","updated":"2014-03-20 04:39:16.000000000","message":"Done","commit_id":"686a503afb703ecfccd0b0d0aeb0e5406cc6d500"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"94d78888d19bc8db17ab9f4700d444d5dd59e137","unresolved":false,"context_lines":[{"line_number":441,"context_line":"            LOG.debug(_(\u0027Cannot remove %s, it does not exist\u0027) % base_file)"},{"line_number":442,"context_line":"            return"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        mtime \u003d os.path.getmtime(base_file)"},{"line_number":445,"context_line":"        age \u003d time.time() - mtime"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        maxage \u003d CONF.remove_unused_original_minimum_age_seconds"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAWH%2F%2FXAA%3D","line":444,"updated":"2014-03-18 11:49:28.000000000","message":"This part of code is also used line: 473 and should be added in a helper method (and so perhaps tested)","commit_id":"686a503afb703ecfccd0b0d0aeb0e5406cc6d500"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"286885e722e1a994fa4f7b74dc4a04792bacaab0","unresolved":false,"context_lines":[{"line_number":441,"context_line":"            LOG.debug(_(\u0027Cannot remove %s, it does not exist\u0027) % base_file)"},{"line_number":442,"context_line":"            return"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        mtime \u003d os.path.getmtime(base_file)"},{"line_number":445,"context_line":"        age \u003d time.time() - mtime"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        maxage \u003d CONF.remove_unused_original_minimum_age_seconds"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAWH%2F%2FHuI%3D","line":444,"in_reply_to":"AAAAWH%2F%2FXAA%3D","updated":"2014-03-20 04:39:16.000000000","message":"Done","commit_id":"686a503afb703ecfccd0b0d0aeb0e5406cc6d500"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"94d78888d19bc8db17ab9f4700d444d5dd59e137","unresolved":false,"context_lines":[{"line_number":561,"context_line":"                    virtutils.chown(base_file, os.getuid())"},{"line_number":562,"context_line":"                    os.utime(base_file, None)"},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"    def _age_and_verify_swap_images(self, context, base_dir):"},{"line_number":565,"context_line":"        LOG.debug(_(\u0027Verify swap images\u0027))"},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"        for ent in self.back_swap_images:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAWH%2F%2FW%2FU%3D","line":564,"updated":"2014-03-18 11:49:28.000000000","message":"I didn\u0027t see a test for this method?","commit_id":"686a503afb703ecfccd0b0d0aeb0e5406cc6d500"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"286885e722e1a994fa4f7b74dc4a04792bacaab0","unresolved":false,"context_lines":[{"line_number":561,"context_line":"                    virtutils.chown(base_file, os.getuid())"},{"line_number":562,"context_line":"                    os.utime(base_file, None)"},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"    def _age_and_verify_swap_images(self, context, base_dir):"},{"line_number":565,"context_line":"        LOG.debug(_(\u0027Verify swap images\u0027))"},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"        for ent in self.back_swap_images:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAWH%2F%2FIEA%3D","line":564,"in_reply_to":"AAAAWH%2F%2FW%2FU%3D","updated":"2014-03-20 04:39:16.000000000","message":"test_age_and_verify_swap_images in \nvirt/libvirt/test_imagecache.py\ndid the test, thanks ..","commit_id":"686a503afb703ecfccd0b0d0aeb0e5406cc6d500"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"36d5606455ba7f55bf17e6fb2b46129c227e0271","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        names \u003d ent.split(\u0027_\u0027)"},{"line_number":272,"context_line":"        if len(names) \u003d\u003d 2 and names[0] \u003d\u003d \u0027swap\u0027:"},{"line_number":273,"context_line":"            if len(names[1]) \u003e 0 and names[1].isdigit():"},{"line_number":274,"context_line":"                LOG.debug(_(\u0027Adding %s into back swap images\u0027), ent)"},{"line_number":275,"context_line":"                self.back_swap_images.add(ent)"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def _list_base_images(self, base_dir):"}],"source_content_type":"text/x-python","patch_set":14,"id":"9ad9bd40_f2cba050","line":274,"updated":"2014-05-07 10:40:30.000000000","message":"Now you need to remove the translation for debug message. (there are some other)","commit_id":"6e1c929fc6174cfd8257ffb02396be9cee9cb57c"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"d8c8d1dd4906ecc61e8a5bffa701cf9c0eac5b81","unresolved":false,"context_lines":[{"line_number":446,"context_line":"    def _remove_swap_file(self, base_file):"},{"line_number":447,"context_line":"        \"\"\"Remove a single swap base file if it is old enough."},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"        \"\"\""},{"line_number":450,"context_line":"        exists, age \u003d self._get_age_of_file(base_file)"},{"line_number":451,"context_line":"        if not exists:"},{"line_number":452,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":17,"id":"7adec928_7057df02","line":449,"updated":"2014-05-23 08:26:38.000000000","message":"This blank line could go away, with the end quotes moving to the end of the first line.","commit_id":"fdb7a9e0db06b939941a45b8e1a3af5e1760c6a5"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"48c454d9d8fd0152a0d0ebcd7026690434ce86c3","unresolved":false,"context_lines":[{"line_number":441,"context_line":""},{"line_number":442,"context_line":"        return (True, age)"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"    def _remove_swap_file(self, base_file):"},{"line_number":445,"context_line":"        \"\"\"Remove a single swap base file if it is old enough.\"\"\""},{"line_number":446,"context_line":"        exists, age \u003d self._get_age_of_file(base_file)"},{"line_number":447,"context_line":"        if not exists:"}],"source_content_type":"text/x-python","patch_set":21,"id":"1ae5cdf2_7cb8b0e8","line":444,"updated":"2014-06-24 17:13:04.000000000","message":"this is a bunch of duplicate boilerplate code, perhaps we can do better.","commit_id":"219604a9e9bcff10cc58e1cabfe4c2d849c82824"},{"author":{"_account_id":8430,"name":"Christopher Lefelhocz","email":"christopher.lefelhoc@rackspace.com","username":"leif"},"change_message_id":"abc4d99303df097796ba57561227de5ef4f6a5a6","unresolved":false,"context_lines":[{"line_number":466,"context_line":"        \"\"\"Remove a single base file if it is old enough."},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"        Returns nothing."},{"line_number":469,"context_line":"        \"\"\""},{"line_number":470,"context_line":"        if not os.path.exists(base_file):"},{"line_number":471,"context_line":"            LOG.debug(\u0027Cannot remove %s, it does not exist\u0027,"},{"line_number":472,"context_line":"                      base_file)"}],"source_content_type":"text/x-python","patch_set":21,"id":"1ae5cdf2_16fa3243","line":469,"updated":"2014-06-24 14:37:41.000000000","message":"The previous version had code in here to use _get_age_of_file for common use.  I\u0027m guessing that intentionally left out of this rev?","commit_id":"219604a9e9bcff10cc58e1cabfe4c2d849c82824"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"48c454d9d8fd0152a0d0ebcd7026690434ce86c3","unresolved":false,"context_lines":[{"line_number":466,"context_line":"        \"\"\"Remove a single base file if it is old enough."},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"        Returns nothing."},{"line_number":469,"context_line":"        \"\"\""},{"line_number":470,"context_line":"        if not os.path.exists(base_file):"},{"line_number":471,"context_line":"            LOG.debug(\u0027Cannot remove %s, it does not exist\u0027,"},{"line_number":472,"context_line":"                      base_file)"}],"source_content_type":"text/x-python","patch_set":21,"id":"1ae5cdf2_bc8158c5","line":469,"in_reply_to":"1ae5cdf2_16fa3243","updated":"2014-06-24 17:13:04.000000000","message":"good question","commit_id":"219604a9e9bcff10cc58e1cabfe4c2d849c82824"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3dda648fd2cff352167007f5b2ab6314b454e2f4","unresolved":false,"context_lines":[{"line_number":263,"context_line":"            if original:"},{"line_number":264,"context_line":"                self.originals.append(entpath)"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def _store_swap_image(self, base_dir, ent):"},{"line_number":267,"context_line":"        \"\"\"Store base swap images for later examination.\"\"\""},{"line_number":268,"context_line":"        names \u003d ent.split(\u0027_\u0027)"},{"line_number":269,"context_line":"        if len(names) \u003d\u003d 2 and names[0] \u003d\u003d \u0027swap\u0027:"}],"source_content_type":"text/x-python","patch_set":24,"id":"baada198_162462c4","line":266,"updated":"2014-08-04 10:23:57.000000000","message":"base_dir is useless","commit_id":"8e1a3b25717d630c24221d0a69b40da52578e21b"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"34244bd5285e62c802769adece70c4700ad41cc4","unresolved":false,"context_lines":[{"line_number":263,"context_line":"            if original:"},{"line_number":264,"context_line":"                self.originals.append(entpath)"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def _store_swap_image(self, base_dir, ent):"},{"line_number":267,"context_line":"        \"\"\"Store base swap images for later examination.\"\"\""},{"line_number":268,"context_line":"        names \u003d ent.split(\u0027_\u0027)"},{"line_number":269,"context_line":"        if len(names) \u003d\u003d 2 and names[0] \u003d\u003d \u0027swap\u0027:"}],"source_content_type":"text/x-python","patch_set":24,"id":"baada198_fb408ba4","line":266,"in_reply_to":"baada198_162462c4","updated":"2014-08-06 06:19:48.000000000","message":"ok","commit_id":"8e1a3b25717d630c24221d0a69b40da52578e21b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1dcdf6e8a122676b3b2351e74574f6b973ad2e79","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        names \u003d ent.split(\u0027_\u0027)"},{"line_number":269,"context_line":"        if len(names) \u003d\u003d 2 and names[0] \u003d\u003d \u0027swap\u0027:"},{"line_number":270,"context_line":"            if len(names[1]) \u003e 0 and names[1].isdigit():"},{"line_number":271,"context_line":"                LOG.debug(\u0027Adding %s into back swap images\u0027, ent)"},{"line_number":272,"context_line":"                self.back_swap_images.add(ent)"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    def _list_base_images(self, base_dir):"}],"source_content_type":"text/x-python","patch_set":25,"id":"9aa7fdbe_4dc6a89b","line":271,"updated":"2014-10-23 16:37:38.000000000","message":"I think you meant \"Adding %s back into swap images\"?","commit_id":"175ec5ec577d5ad99f587b35a7a756f7cab4e4f8"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1dcdf6e8a122676b3b2351e74574f6b973ad2e79","unresolved":false,"context_lines":[{"line_number":441,"context_line":""},{"line_number":442,"context_line":"        return (True, age)"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"    def _remove_old_enough_file(self, base_file, maxage, remove_sig\u003dTrue):"},{"line_number":445,"context_line":"        \"\"\"Remove a single swap or base file if it is old enough.\"\"\""},{"line_number":446,"context_line":"        exists, age \u003d self._get_age_of_file(base_file)"},{"line_number":447,"context_line":"        if not exists:"}],"source_content_type":"text/x-python","patch_set":25,"id":"9aa7fdbe_6dc36c89","line":444,"updated":"2014-10-23 16:37:38.000000000","message":"Is there any reason why you would *not* remove the signature file along with the base file?","commit_id":"175ec5ec577d5ad99f587b35a7a756f7cab4e4f8"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"d3505018b4a94ba9d5a54e5386bad7a6fc9b1f7f","unresolved":false,"context_lines":[{"line_number":552,"context_line":""},{"line_number":553,"context_line":"        for ent in self.back_swap_images:"},{"line_number":554,"context_line":"            base_file \u003d os.path.join(base_dir, ent)"},{"line_number":555,"context_line":"            if (ent in self.used_swap_images):"},{"line_number":556,"context_line":"                if os.path.exists(base_file):"},{"line_number":557,"context_line":"                    libvirt_utils.chown(base_file, os.getuid())"},{"line_number":558,"context_line":"                    os.utime(base_file, None)"}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_cf9e4c55","line":555,"range":{"start_line":555,"start_character":15,"end_line":555,"end_character":45},"updated":"2014-08-07 10:37:57.000000000","message":"Remove redundant parentheses","commit_id":"175ec5ec577d5ad99f587b35a7a756f7cab4e4f8"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"d3505018b4a94ba9d5a54e5386bad7a6fc9b1f7f","unresolved":false,"context_lines":[{"line_number":553,"context_line":"        for ent in self.back_swap_images:"},{"line_number":554,"context_line":"            base_file \u003d os.path.join(base_dir, ent)"},{"line_number":555,"context_line":"            if (ent in self.used_swap_images):"},{"line_number":556,"context_line":"                if os.path.exists(base_file):"},{"line_number":557,"context_line":"                    libvirt_utils.chown(base_file, os.getuid())"},{"line_number":558,"context_line":"                    os.utime(base_file, None)"},{"line_number":559,"context_line":"            elif self.remove_unused_base_images:"}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_6f2aa0e7","line":556,"range":{"start_line":556,"start_character":16,"end_line":556,"end_character":44},"updated":"2014-08-07 10:37:57.000000000","message":"You can do it condition in condition above, like:\n\n    if ent in self.used_swap_images and os.path.exists(base_file):\n        ...","commit_id":"175ec5ec577d5ad99f587b35a7a756f7cab4e4f8"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"d3505018b4a94ba9d5a54e5386bad7a6fc9b1f7f","unresolved":false,"context_lines":[{"line_number":561,"context_line":""},{"line_number":562,"context_line":"        error_images \u003d self.used_swap_images - self.back_swap_images"},{"line_number":563,"context_line":"        for error_image in error_images:"},{"line_number":564,"context_line":"            LOG.warning(_LW(\u0027%s swap image was used by instance\u0027"},{"line_number":565,"context_line":"                            \u0027 but no back files existing!\u0027), error_image)"},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"    def _age_and_verify_cached_images(self, context, all_instances, base_dir):"}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_6f11c0ad","line":564,"range":{"start_line":564,"start_character":12,"end_line":564,"end_character":23},"updated":"2014-08-07 10:37:57.000000000","message":"s/LOG.warning/LOG.warn","commit_id":"175ec5ec577d5ad99f587b35a7a756f7cab4e4f8"}]}
