)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dd89a021b9fb6a79bee92c6fb0ef6d7db3ca8dde","unresolved":false,"context_lines":[{"line_number":7,"context_line":"VMAX Driver - Live Migration for VMAX3"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Enhancing live migration to add support for VMAX3."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I806ec74c244329415f2ec06f95741869b3acff00"},{"line_number":12,"context_line":"Closes-Bug: #1587967"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"1ac06dbe_f1140f45","line":10,"updated":"2016-08-22 13:03:00.000000000","message":"Please add DocImpact.","commit_id":"4c16d9facd98cdc631db0d8e649488ddd6d32e85"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"b0bf19ef80f250507e92ea622116a2aa7fe48ca4","unresolved":false,"context_lines":[{"line_number":7,"context_line":"VMAX Driver - Live Migration for VMAX3"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Enhancing live migration to add support for VMAX3."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I806ec74c244329415f2ec06f95741869b3acff00"},{"line_number":12,"context_line":"Closes-Bug: #1587967"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"1ac06dbe_b1ac57a1","line":10,"in_reply_to":"1ac06dbe_f1140f45","updated":"2016-08-22 15:16:53.000000000","message":"Sure","commit_id":"4c16d9facd98cdc631db0d8e649488ddd6d32e85"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7e48113745ca960f7e9220c34be1e8e25722b3dd","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I806ec74c244329415f2ec06f95741869b3acff00"},{"line_number":12,"context_line":"Closes-Bug: #1587967"},{"line_number":13,"context_line":"DocImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"1ac06dbe_4402550c","line":13,"updated":"2016-08-23 05:28:53.000000000","message":"Can you move DocImpact to just above the Change-Id?","commit_id":"63066391c6ff3b308f942827d63e6fe37c5121bb"}],"cinder/tests/unit/test_emc_vmax.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"7865b8fbc7b5e1af7d5664fc84946284224c3562","unresolved":false,"context_lines":[{"line_number":4902,"context_line":"        self.driver.delete_cgsnapshot("},{"line_number":4903,"context_line":"            self.data.test_ctxt, self.data.test_CG_snapshot, [])"},{"line_number":4904,"context_line":""},{"line_number":4905,"context_line":"    @ddt.data((2, 2), (1.75, 2))"},{"line_number":4906,"context_line":"    @ddt.unpack"},{"line_number":4907,"context_line":"    def test_manage_existing_get_size(self, gb_size, exp_size):"},{"line_number":4908,"context_line":"        volume \u003d {}"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_8372dbae","side":"PARENT","line":4905,"updated":"2016-07-14 17:22:15.000000000","message":"Why this is removed? It was added to verify that the driver returns the ceil of backend volume size. Please undo if it was a mistake.","commit_id":"6605db7e400865d07938296756c1d0583b543fc2"},{"author":{"_account_id":22021,"name":"Unana Okpoyo","email":"tomitu@yahoo.com","username":"UnanaOkpoyo"},"change_message_id":"e7a672bdbed75cfb7df76772895364c4241d13f8","unresolved":false,"context_lines":[{"line_number":4902,"context_line":"        self.driver.delete_cgsnapshot("},{"line_number":4903,"context_line":"            self.data.test_ctxt, self.data.test_CG_snapshot, [])"},{"line_number":4904,"context_line":""},{"line_number":4905,"context_line":"    @ddt.data((2, 2), (1.75, 2))"},{"line_number":4906,"context_line":"    @ddt.unpack"},{"line_number":4907,"context_line":"    def test_manage_existing_get_size(self, gb_size, exp_size):"},{"line_number":4908,"context_line":"        volume \u003d {}"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_a75c1e7e","side":"PARENT","line":4905,"in_reply_to":"1aa78d24_8372dbae","updated":"2016-07-15 12:09:45.000000000","message":"This was an oversight. Will fix and update","commit_id":"6605db7e400865d07938296756c1d0583b543fc2"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"7865b8fbc7b5e1af7d5664fc84946284224c3562","unresolved":false,"context_lines":[{"line_number":7852,"context_line":"        self.assertFalse(os.path.isfile(emc_vmax_utils.LIVE_MIGRATION_FILE))"},{"line_number":7853,"context_line":"        self.driver.utils.insert_live_migration_record("},{"line_number":7854,"context_line":"            self.data.test_volume, maskingviewdict, connector, extraSpecs)"},{"line_number":7855,"context_line":"        self.assertTrue(os.path.isfile(emc_vmax_utils.LIVE_MIGRATION_FILE))"},{"line_number":7856,"context_line":"        os.remove(emc_vmax_utils.LIVE_MIGRATION_FILE)"},{"line_number":7857,"context_line":"        shutil.rmtree(tempdir)"},{"line_number":7858,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_c33fc385","line":7855,"updated":"2016-07-14 17:22:15.000000000","message":"Why can\u0027t we mock the calls and verify that the file was created instead of actually creating it?","commit_id":"5dbfa71e28c7c78ceeda9c3f8c7a0e8a6a90968f"},{"author":{"_account_id":22021,"name":"Unana Okpoyo","email":"tomitu@yahoo.com","username":"UnanaOkpoyo"},"change_message_id":"e7a672bdbed75cfb7df76772895364c4241d13f8","unresolved":false,"context_lines":[{"line_number":7852,"context_line":"        self.assertFalse(os.path.isfile(emc_vmax_utils.LIVE_MIGRATION_FILE))"},{"line_number":7853,"context_line":"        self.driver.utils.insert_live_migration_record("},{"line_number":7854,"context_line":"            self.data.test_volume, maskingviewdict, connector, extraSpecs)"},{"line_number":7855,"context_line":"        self.assertTrue(os.path.isfile(emc_vmax_utils.LIVE_MIGRATION_FILE))"},{"line_number":7856,"context_line":"        os.remove(emc_vmax_utils.LIVE_MIGRATION_FILE)"},{"line_number":7857,"context_line":"        shutil.rmtree(tempdir)"},{"line_number":7858,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_9b8e9725","line":7855,"in_reply_to":"1aa78d24_c33fc385","updated":"2016-07-15 12:09:45.000000000","message":"Will change to mock calls instead...thanks","commit_id":"5dbfa71e28c7c78ceeda9c3f8c7a0e8a6a90968f"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"7865b8fbc7b5e1af7d5664fc84946284224c3562","unresolved":false,"context_lines":[{"line_number":7880,"context_line":"        self.driver.utils.delete_live_migration_record(self.data.test_volume)"},{"line_number":7881,"context_line":"        self.assertFalse(os.path.isfile(emc_vmax_utils.LIVE_MIGRATION_FILE))"},{"line_number":7882,"context_line":""},{"line_number":7883,"context_line":"    def get_live_migration_record(self):"},{"line_number":7884,"context_line":"        conn \u003d FakeEcomConnection()"},{"line_number":7885,"context_line":"        self.driver.common.conn \u003d conn"},{"line_number":7886,"context_line":"        extraSpecs \u003d self.data.extra_specs"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_6361afa8","line":7883,"range":{"start_line":7883,"start_character":8,"end_line":7883,"end_character":33},"updated":"2016-07-14 17:22:15.000000000","message":"test_get_live_migration_record","commit_id":"5dbfa71e28c7c78ceeda9c3f8c7a0e8a6a90968f"},{"author":{"_account_id":22021,"name":"Unana Okpoyo","email":"tomitu@yahoo.com","username":"UnanaOkpoyo"},"change_message_id":"e7a672bdbed75cfb7df76772895364c4241d13f8","unresolved":false,"context_lines":[{"line_number":7880,"context_line":"        self.driver.utils.delete_live_migration_record(self.data.test_volume)"},{"line_number":7881,"context_line":"        self.assertFalse(os.path.isfile(emc_vmax_utils.LIVE_MIGRATION_FILE))"},{"line_number":7882,"context_line":""},{"line_number":7883,"context_line":"    def get_live_migration_record(self):"},{"line_number":7884,"context_line":"        conn \u003d FakeEcomConnection()"},{"line_number":7885,"context_line":"        self.driver.common.conn \u003d conn"},{"line_number":7886,"context_line":"        extraSpecs \u003d self.data.extra_specs"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_aa0b4323","line":7883,"range":{"start_line":7883,"start_character":8,"end_line":7883,"end_character":33},"in_reply_to":"1aa78d24_6361afa8","updated":"2016-07-15 12:09:45.000000000","message":"Will fix and update","commit_id":"5dbfa71e28c7c78ceeda9c3f8c7a0e8a6a90968f"}],"cinder/tests/unit/volume/drivers/emc/test_emc_vmax.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"c355e5acf9934982a044331e4fe8da56627dd472","unresolved":false,"context_lines":[{"line_number":7989,"context_line":"        tempdir \u003d tempfile.mkdtemp()"},{"line_number":7990,"context_line":"        emc_vmax_utils.LIVE_MIGRATION_FILE \u003d (tempdir +"},{"line_number":7991,"context_line":"                                              \u0027/livemigrationarray\u0027)"},{"line_number":7992,"context_line":"        self.assertFalse(os.path.isfile(emc_vmax_utils.LIVE_MIGRATION_FILE))"},{"line_number":7993,"context_line":"        self.driver.utils.insert_live_migration_record("},{"line_number":7994,"context_line":"            self.data.test_volume, maskingviewdict, connector, extraSpecs)"},{"line_number":7995,"context_line":"        self.assertTrue(os.path.isfile(emc_vmax_utils.LIVE_MIGRATION_FILE))"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_2eb05ddd","line":7992,"range":{"start_line":7992,"start_character":25,"end_line":7992,"end_character":39},"updated":"2016-08-08 15:32:05.000000000","message":"Why can\u0027t we mock the calls and assert that the file is created instead of actually creating it?","commit_id":"72ad314f58c5f2bcdf2102974e84ac08ff5a5045"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"d0bef237ac036599a9999023fc771d9b4f447fc0","unresolved":false,"context_lines":[{"line_number":7989,"context_line":"        tempdir \u003d tempfile.mkdtemp()"},{"line_number":7990,"context_line":"        emc_vmax_utils.LIVE_MIGRATION_FILE \u003d (tempdir +"},{"line_number":7991,"context_line":"                                              \u0027/livemigrationarray\u0027)"},{"line_number":7992,"context_line":"        self.assertFalse(os.path.isfile(emc_vmax_utils.LIVE_MIGRATION_FILE))"},{"line_number":7993,"context_line":"        self.driver.utils.insert_live_migration_record("},{"line_number":7994,"context_line":"            self.data.test_volume, maskingviewdict, connector, extraSpecs)"},{"line_number":7995,"context_line":"        self.assertTrue(os.path.isfile(emc_vmax_utils.LIVE_MIGRATION_FILE))"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_ce7d41e9","line":7992,"range":{"start_line":7992,"start_character":25,"end_line":7992,"end_character":39},"in_reply_to":"9ad45d7e_2eb05ddd","updated":"2016-08-08 15:42:03.000000000","message":"Thanks Vipin, we will look into changing this","commit_id":"72ad314f58c5f2bcdf2102974e84ac08ff5a5045"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dd89a021b9fb6a79bee92c6fb0ef6d7db3ca8dde","unresolved":false,"context_lines":[{"line_number":2147,"context_line":"                                                  host))"},{"line_number":2148,"context_line":"        self.assertEqual(\u0027OS-fakehost-MV\u0027, data[\u0027maskingview\u0027])"},{"line_number":2149,"context_line":"        host \u003d \u0027bogushost\u0027"},{"line_number":2150,"context_line":"        self.driver.common.conn.ReferenceNames \u003d mock.Mock(return_value\u003d[])"},{"line_number":2151,"context_line":"        data \u003d ("},{"line_number":2152,"context_line":"            self.driver.common.find_device_number(self.data.test_volume_v2,"},{"line_number":2153,"context_line":"                                                  host))"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ac06dbe_7183ff56","line":2150,"updated":"2016-08-22 13:03:00.000000000","message":"See below comment in the other patch.  Please mock the method instead of changing it directly.\n\nhttps://review.openstack.org/#/c/342300/11/cinder/tests/unit/volume/drivers/emc/test_emc_vmax.py@8117","commit_id":"4c16d9facd98cdc631db0d8e649488ddd6d32e85"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"b0bf19ef80f250507e92ea622116a2aa7fe48ca4","unresolved":false,"context_lines":[{"line_number":2147,"context_line":"                                                  host))"},{"line_number":2148,"context_line":"        self.assertEqual(\u0027OS-fakehost-MV\u0027, data[\u0027maskingview\u0027])"},{"line_number":2149,"context_line":"        host \u003d \u0027bogushost\u0027"},{"line_number":2150,"context_line":"        self.driver.common.conn.ReferenceNames \u003d mock.Mock(return_value\u003d[])"},{"line_number":2151,"context_line":"        data \u003d ("},{"line_number":2152,"context_line":"            self.driver.common.find_device_number(self.data.test_volume_v2,"},{"line_number":2153,"context_line":"                                                  host))"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ac06dbe_82a2abac","line":2150,"in_reply_to":"1ac06dbe_7183ff56","updated":"2016-08-22 15:16:53.000000000","message":"Ok.  Thanks","commit_id":"4c16d9facd98cdc631db0d8e649488ddd6d32e85"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dd89a021b9fb6a79bee92c6fb0ef6d7db3ca8dde","unresolved":false,"context_lines":[{"line_number":8104,"context_line":"                     \u0027multipath\u0027: False}"},{"line_number":8105,"context_line":"        vol \u003d {\u0027SystemName\u0027: self.data.storage_system}"},{"line_number":8106,"context_line":"        self.driver.common._find_lun \u003d mock.Mock("},{"line_number":8107,"context_line":"            return_value\u003dvol)"},{"line_number":8108,"context_line":"        maskingviewdict \u003d self.driver.common._populate_masking_dict("},{"line_number":8109,"context_line":"            self.data.test_volume, self.data.connector, extraSpecs)"},{"line_number":8110,"context_line":"        emc_vmax_utils.LIVE_MIGRATION_FILE \u003d (\u0027/tempdir/livemigrationarray\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ac06dbe_b1f457f2","line":8107,"updated":"2016-08-22 13:03:00.000000000","message":"Same","commit_id":"4c16d9facd98cdc631db0d8e649488ddd6d32e85"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"b0bf19ef80f250507e92ea622116a2aa7fe48ca4","unresolved":false,"context_lines":[{"line_number":8104,"context_line":"                     \u0027multipath\u0027: False}"},{"line_number":8105,"context_line":"        vol \u003d {\u0027SystemName\u0027: self.data.storage_system}"},{"line_number":8106,"context_line":"        self.driver.common._find_lun \u003d mock.Mock("},{"line_number":8107,"context_line":"            return_value\u003dvol)"},{"line_number":8108,"context_line":"        maskingviewdict \u003d self.driver.common._populate_masking_dict("},{"line_number":8109,"context_line":"            self.data.test_volume, self.data.connector, extraSpecs)"},{"line_number":8110,"context_line":"        emc_vmax_utils.LIVE_MIGRATION_FILE \u003d (\u0027/tempdir/livemigrationarray\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ac06dbe_229c9768","line":8107,"in_reply_to":"1ac06dbe_b1f457f2","updated":"2016-08-22 15:16:53.000000000","message":"I will change","commit_id":"4c16d9facd98cdc631db0d8e649488ddd6d32e85"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dd89a021b9fb6a79bee92c6fb0ef6d7db3ca8dde","unresolved":false,"context_lines":[{"line_number":8126,"context_line":"        vol \u003d {\u0027SystemName\u0027: self.data.storage_system}"},{"line_number":8127,"context_line":""},{"line_number":8128,"context_line":"        self.driver.common._find_lun \u003d mock.Mock("},{"line_number":8129,"context_line":"            return_value\u003dvol)"},{"line_number":8130,"context_line":"        maskingviewdict \u003d self.driver.common._populate_masking_dict("},{"line_number":8131,"context_line":"            self.data.test_volume, self.data.connector, extraSpecs)"},{"line_number":8132,"context_line":"        tempdir \u003d tempfile.mkdtemp()"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ac06dbe_31e98715","line":8129,"updated":"2016-08-22 13:03:00.000000000","message":"Same","commit_id":"4c16d9facd98cdc631db0d8e649488ddd6d32e85"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"b0bf19ef80f250507e92ea622116a2aa7fe48ca4","unresolved":false,"context_lines":[{"line_number":8126,"context_line":"        vol \u003d {\u0027SystemName\u0027: self.data.storage_system}"},{"line_number":8127,"context_line":""},{"line_number":8128,"context_line":"        self.driver.common._find_lun \u003d mock.Mock("},{"line_number":8129,"context_line":"            return_value\u003dvol)"},{"line_number":8130,"context_line":"        maskingviewdict \u003d self.driver.common._populate_masking_dict("},{"line_number":8131,"context_line":"            self.data.test_volume, self.data.connector, extraSpecs)"},{"line_number":8132,"context_line":"        tempdir \u003d tempfile.mkdtemp()"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ac06dbe_82890b29","line":8129,"in_reply_to":"1ac06dbe_31e98715","updated":"2016-08-22 15:16:53.000000000","message":"Ok","commit_id":"4c16d9facd98cdc631db0d8e649488ddd6d32e85"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dd89a021b9fb6a79bee92c6fb0ef6d7db3ca8dde","unresolved":false,"context_lines":[{"line_number":8154,"context_line":"                     \u0027multipath\u0027: False}"},{"line_number":8155,"context_line":"        vol \u003d {\u0027SystemName\u0027: self.data.storage_system}"},{"line_number":8156,"context_line":"        self.driver.common._find_lun \u003d mock.Mock("},{"line_number":8157,"context_line":"            return_value\u003dvol)"},{"line_number":8158,"context_line":"        maskingviewdict \u003d self.driver.common._populate_masking_dict("},{"line_number":8159,"context_line":"            self.data.test_volume, self.data.connector, extraSpecs)"},{"line_number":8160,"context_line":"        tempdir \u003d tempfile.mkdtemp()"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ac06dbe_b142970e","line":8157,"updated":"2016-08-22 13:03:00.000000000","message":"Same","commit_id":"4c16d9facd98cdc631db0d8e649488ddd6d32e85"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"b0bf19ef80f250507e92ea622116a2aa7fe48ca4","unresolved":false,"context_lines":[{"line_number":8154,"context_line":"                     \u0027multipath\u0027: False}"},{"line_number":8155,"context_line":"        vol \u003d {\u0027SystemName\u0027: self.data.storage_system}"},{"line_number":8156,"context_line":"        self.driver.common._find_lun \u003d mock.Mock("},{"line_number":8157,"context_line":"            return_value\u003dvol)"},{"line_number":8158,"context_line":"        maskingviewdict \u003d self.driver.common._populate_masking_dict("},{"line_number":8159,"context_line":"            self.data.test_volume, self.data.connector, extraSpecs)"},{"line_number":8160,"context_line":"        tempdir \u003d tempfile.mkdtemp()"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ac06dbe_a286c710","line":8157,"in_reply_to":"1ac06dbe_b142970e","updated":"2016-08-22 15:16:53.000000000","message":"Ok","commit_id":"4c16d9facd98cdc631db0d8e649488ddd6d32e85"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7e48113745ca960f7e9220c34be1e8e25722b3dd","unresolved":false,"context_lines":[{"line_number":2683,"context_line":"        volumeInstance \u003d conn.GetInstance(volumeInstanceName)"},{"line_number":2684,"context_line":"        volumeName \u003d \"1416035-Vol\""},{"line_number":2685,"context_line":"        masking \u003d self.driver.common.masking"},{"line_number":2686,"context_line":"        masking.get_associated_masking_groups_from_device \u003d mock.Mock("},{"line_number":2687,"context_line":"            return_value\u003dself.data.storagegroups)"},{"line_number":2688,"context_line":"        masking.utils.get_existing_instance \u003d mock.Mock("},{"line_number":2689,"context_line":"            return_value\u003dNone)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1ac06dbe_040cdd3f","line":2686,"updated":"2016-08-23 05:28:53.000000000","message":"Please change this one.","commit_id":"63066391c6ff3b308f942827d63e6fe37c5121bb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"df1545e3a346e5bc0394b2095a7629ba1f9eb254","unresolved":false,"context_lines":[{"line_number":2686,"context_line":"        masking.get_associated_masking_groups_from_device \u003d mock.Mock("},{"line_number":2687,"context_line":"            return_value\u003dself.data.storagegroups)"},{"line_number":2688,"context_line":"        masking.utils.get_existing_instance \u003d mock.Mock("},{"line_number":2689,"context_line":"            return_value\u003dNone)"},{"line_number":2690,"context_line":""},{"line_number":2691,"context_line":"        self.driver.common.masking.remove_and_reset_members("},{"line_number":2692,"context_line":"            conn, controllerConfigService, volumeInstance,"}],"source_content_type":"text/x-python","patch_set":15,"id":"1ac06dbe_4719b778","line":2689,"updated":"2016-08-23 05:29:43.000000000","message":"Here too.","commit_id":"63066391c6ff3b308f942827d63e6fe37c5121bb"}],"cinder/volume/drivers/emc/emc_vmax_common.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"7865b8fbc7b5e1af7d5664fc84946284224c3562","unresolved":false,"context_lines":[{"line_number":4124,"context_line":"                                                         arrayName, deviceId))"},{"line_number":4125,"context_line":"        volumeInstance \u003d self.conn.GetInstance(volumeInstanceName)"},{"line_number":4126,"context_line":"        byteSize \u003d self.utils.get_volume_size(self.conn, volumeInstance)"},{"line_number":4127,"context_line":"        gbSize \u003d int(math.ceil(float(byteSize) / units.Gi))"},{"line_number":4128,"context_line":"        LOG.debug("},{"line_number":4129,"context_line":"            \"Size of volume %(deviceID)s is %(volumeSize)s GB.\","},{"line_number":4130,"context_line":"            {\u0027deviceID\u0027: deviceId,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_43191322","side":"PARENT","line":4127,"updated":"2016-07-14 17:22:15.000000000","message":"As per the driver API for manage_existing_get_size, we need the ceil and this is correct.","commit_id":"6605db7e400865d07938296756c1d0583b543fc2"},{"author":{"_account_id":22021,"name":"Unana Okpoyo","email":"tomitu@yahoo.com","username":"UnanaOkpoyo"},"change_message_id":"e7a672bdbed75cfb7df76772895364c4241d13f8","unresolved":false,"context_lines":[{"line_number":4124,"context_line":"                                                         arrayName, deviceId))"},{"line_number":4125,"context_line":"        volumeInstance \u003d self.conn.GetInstance(volumeInstanceName)"},{"line_number":4126,"context_line":"        byteSize \u003d self.utils.get_volume_size(self.conn, volumeInstance)"},{"line_number":4127,"context_line":"        gbSize \u003d int(math.ceil(float(byteSize) / units.Gi))"},{"line_number":4128,"context_line":"        LOG.debug("},{"line_number":4129,"context_line":"            \"Size of volume %(deviceID)s is %(volumeSize)s GB.\","},{"line_number":4130,"context_line":"            {\u0027deviceID\u0027: deviceId,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_27714e45","side":"PARENT","line":4127,"in_reply_to":"1aa78d24_43191322","updated":"2016-07-15 12:09:45.000000000","message":"Will revert back to this","commit_id":"6605db7e400865d07938296756c1d0583b543fc2"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"3c2305781663e535892b0edfc35d96b240d54960","unresolved":false,"context_lines":[{"line_number":1551,"context_line":"                    LOG.warning(_LW("},{"line_number":1552,"context_line":"                        \"Volume is masked but not to host %(host)s as is \""},{"line_number":1553,"context_line":"                        \"expected. Assuming live migration.\"),"},{"line_number":1554,"context_line":"                        {\u0027host\u0027: hoststr})"},{"line_number":1555,"context_line":""},{"line_number":1556,"context_line":"        LOG.debug(\"Device info: %(data)s.\", {\u0027data\u0027: data})"},{"line_number":1557,"context_line":"        return data"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_06114752","line":1554,"updated":"2016-07-12 22:27:41.000000000","message":"how does this work when we support multi-attach of volumes?","commit_id":"5dbfa71e28c7c78ceeda9c3f8c7a0e8a6a90968f"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"3c90e5ee9ab8de7bdb2e1dca85b75ae80a24e63f","unresolved":false,"context_lines":[{"line_number":1551,"context_line":"                    LOG.warning(_LW("},{"line_number":1552,"context_line":"                        \"Volume is masked but not to host %(host)s as is \""},{"line_number":1553,"context_line":"                        \"expected. Assuming live migration.\"),"},{"line_number":1554,"context_line":"                        {\u0027host\u0027: hoststr})"},{"line_number":1555,"context_line":""},{"line_number":1556,"context_line":"        LOG.debug(\"Device info: %(data)s.\", {\u0027data\u0027: data})"},{"line_number":1557,"context_line":"        return data"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_58430342","line":1554,"in_reply_to":"1aa78d24_06114752","updated":"2016-07-13 14:29:22.000000000","message":"We will face other obstacles when we will support multi-attach of volumes as a in FAST a volume can only belong to one storage group.  The VMAX code will need to change regardless to support multi-attach","commit_id":"5dbfa71e28c7c78ceeda9c3f8c7a0e8a6a90968f"}],"cinder/volume/drivers/emc/emc_vmax_fc.py":[{"author":{"_account_id":20721,"name":"Matt Smith (_alastor_)","email":"mss@datera.io","username":"alastor"},"change_message_id":"a2da450c56a96d90e015c88c25aa29bfef344f47","unresolved":false,"context_lines":[{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"@interface.volumedriver"},{"line_number":32,"context_line":"class EMCVMAXFCDriver(driver.FibreChannelDriver):"},{"line_number":33,"context_line":"    \"\"\"EMC FC Drivers for VMAX using SMI-S."},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_2100e201","side":"PARENT","line":31,"updated":"2016-06-17 16:26:40.000000000","message":"I think you might be overwriting some changes that Sean made in this review:  https://review.openstack.org/#/c/297140/","commit_id":"d713838a12bbd9b5b335589e232487a5fc138664"},{"author":{"_account_id":22021,"name":"Unana Okpoyo","email":"tomitu@yahoo.com","username":"UnanaOkpoyo"},"change_message_id":"0d057e1ffe037a4aaf32dc884b0145f3bbdf8e04","unresolved":false,"context_lines":[{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"@interface.volumedriver"},{"line_number":32,"context_line":"class EMCVMAXFCDriver(driver.FibreChannelDriver):"},{"line_number":33,"context_line":"    \"\"\"EMC FC Drivers for VMAX using SMI-S."},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a9d85d2_07dee510","side":"PARENT","line":31,"in_reply_to":"7aa08908_2100e201","updated":"2016-06-21 08:05:24.000000000","message":"Thanks Matt....Will rectify and submit","commit_id":"d713838a12bbd9b5b335589e232487a5fc138664"}],"cinder/volume/drivers/emc/emc_vmax_iscsi.py":[{"author":{"_account_id":20721,"name":"Matt Smith (_alastor_)","email":"mss@datera.io","username":"alastor"},"change_message_id":"a2da450c56a96d90e015c88c25aa29bfef344f47","unresolved":false,"context_lines":[{"line_number":34,"context_line":"CINDER_CONF \u003d \u0027/etc/cinder/cinder.conf\u0027"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"@interface.volumedriver"},{"line_number":38,"context_line":"class EMCVMAXISCSIDriver(driver.ISCSIDriver):"},{"line_number":39,"context_line":"    \"\"\"EMC ISCSI Drivers for VMAX using SMI-S."},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_8118b685","side":"PARENT","line":37,"updated":"2016-06-17 16:26:40.000000000","message":"I think you might be overwriting some changes that Sean made in this review:  https://review.openstack.org/#/c/297140/","commit_id":"d713838a12bbd9b5b335589e232487a5fc138664"},{"author":{"_account_id":22021,"name":"Unana Okpoyo","email":"tomitu@yahoo.com","username":"UnanaOkpoyo"},"change_message_id":"0d057e1ffe037a4aaf32dc884b0145f3bbdf8e04","unresolved":false,"context_lines":[{"line_number":34,"context_line":"CINDER_CONF \u003d \u0027/etc/cinder/cinder.conf\u0027"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"@interface.volumedriver"},{"line_number":38,"context_line":"class EMCVMAXISCSIDriver(driver.ISCSIDriver):"},{"line_number":39,"context_line":"    \"\"\"EMC ISCSI Drivers for VMAX using SMI-S."},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a9d85d2_0790a542","side":"PARENT","line":37,"in_reply_to":"7aa08908_8118b685","updated":"2016-06-21 08:05:24.000000000","message":"Thanks Matt...Will rectify and submit","commit_id":"d713838a12bbd9b5b335589e232487a5fc138664"}],"cinder/volume/drivers/emc/emc_vmax_masking.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"3727b2db4c24bbd9ef6fdbc7a3407801ce23e9cc","unresolved":false,"context_lines":[{"line_number":1802,"context_line":"                        storageGroupInstanceName,"},{"line_number":1803,"context_line":"                        volumeInstance, extraSpecs)"},{"line_number":1804,"context_line":"            else:"},{"line_number":1805,"context_line":"                warningnmessage \u003d (_(\"Cannot get storage from connector\"))"},{"line_number":1806,"context_line":"                LOG.warning(warningnmessage)"},{"line_number":1807,"context_line":""},{"line_number":1808,"context_line":"        if reset:"},{"line_number":1809,"context_line":"            self._return_back_to_default_sg("}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_870e358a","line":1806,"range":{"start_line":1805,"start_character":1,"end_line":1806,"end_character":44},"updated":"2016-06-16 21:12:36.000000000","message":"This shouldn\u0027t be two separate lines and it should end with a period:\nLOG.warning(_LW(\"Cannot get storage from connector.\"))","commit_id":"b1ae5e47a04ecbfa0e11c92e05c6cb2b8de33f66"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"cc82a1e6c14e8a4744a56cf07f0840047ab1f5a1","unresolved":false,"context_lines":[{"line_number":1802,"context_line":"                        storageGroupInstanceName,"},{"line_number":1803,"context_line":"                        volumeInstance, extraSpecs)"},{"line_number":1804,"context_line":"            else:"},{"line_number":1805,"context_line":"                warningnmessage \u003d (_(\"Cannot get storage from connector\"))"},{"line_number":1806,"context_line":"                LOG.warning(warningnmessage)"},{"line_number":1807,"context_line":""},{"line_number":1808,"context_line":"        if reset:"},{"line_number":1809,"context_line":"            self._return_back_to_default_sg("}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_c09e6306","line":1806,"range":{"start_line":1805,"start_character":1,"end_line":1806,"end_character":44},"in_reply_to":"7aa08908_870e358a","updated":"2016-06-16 22:38:05.000000000","message":"I will change this.  Thanks","commit_id":"b1ae5e47a04ecbfa0e11c92e05c6cb2b8de33f66"}],"cinder/volume/drivers/emc/emc_vmax_utils.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"3727b2db4c24bbd9ef6fdbc7a3407801ce23e9cc","unresolved":false,"context_lines":[{"line_number":2607,"context_line":"        else:"},{"line_number":2608,"context_line":"            live_migration_details \u003d {volume[\u0027id\u0027]: [maskingviewdict,"},{"line_number":2609,"context_line":"                                                     connector, extraSpecs]}"},{"line_number":2610,"context_line":"        with open(LIVE_MIGRATION_FILE, \"wb\") as f:"},{"line_number":2611,"context_line":"            pickle.dump(live_migration_details, f)"},{"line_number":2612,"context_line":""},{"line_number":2613,"context_line":"    def delete_live_migration_record(self, volume):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_c7679d4f","line":2610,"range":{"start_line":2610,"start_character":8,"end_line":2610,"end_character":50},"updated":"2016-06-16 21:12:36.000000000","message":"Really seems like there should be error checking on this.","commit_id":"b1ae5e47a04ecbfa0e11c92e05c6cb2b8de33f66"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"cc82a1e6c14e8a4744a56cf07f0840047ab1f5a1","unresolved":false,"context_lines":[{"line_number":2607,"context_line":"        else:"},{"line_number":2608,"context_line":"            live_migration_details \u003d {volume[\u0027id\u0027]: [maskingviewdict,"},{"line_number":2609,"context_line":"                                                     connector, extraSpecs]}"},{"line_number":2610,"context_line":"        with open(LIVE_MIGRATION_FILE, \"wb\") as f:"},{"line_number":2611,"context_line":"            pickle.dump(live_migration_details, f)"},{"line_number":2612,"context_line":""},{"line_number":2613,"context_line":"    def delete_live_migration_record(self, volume):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_40fc333e","line":2610,"range":{"start_line":2610,"start_character":8,"end_line":2610,"end_character":50},"in_reply_to":"7aa08908_c7679d4f","updated":"2016-06-16 22:38:05.000000000","message":"Ok. Thanks","commit_id":"b1ae5e47a04ecbfa0e11c92e05c6cb2b8de33f66"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"7865b8fbc7b5e1af7d5664fc84946284224c3562","unresolved":false,"context_lines":[{"line_number":745,"context_line":"        :param strGB: string -- The size in GB"},{"line_number":746,"context_line":"        :returns: string -- The size in bytes"},{"line_number":747,"context_line":"        \"\"\""},{"line_number":748,"context_line":"        strBitsSize \u003d six.text_type(int(strGbSize) * units.Gi)"},{"line_number":749,"context_line":""},{"line_number":750,"context_line":"        LOG.debug(\"Converted %(strGbSize)s GBs to %(strBitsSize)s Bits.\","},{"line_number":751,"context_line":"                  {\u0027strGbSize\u0027: strGbSize, \u0027strBitsSize\u0027: strBitsSize})"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_e39e3f53","side":"PARENT","line":748,"range":{"start_line":748,"start_character":52,"end_line":748,"end_character":61},"updated":"2016-07-14 17:22:15.000000000","message":"What is the problem here?","commit_id":"6605db7e400865d07938296756c1d0583b543fc2"},{"author":{"_account_id":22021,"name":"Unana Okpoyo","email":"tomitu@yahoo.com","username":"UnanaOkpoyo"},"change_message_id":"e7a672bdbed75cfb7df76772895364c4241d13f8","unresolved":false,"context_lines":[{"line_number":745,"context_line":"        :param strGB: string -- The size in GB"},{"line_number":746,"context_line":"        :returns: string -- The size in bytes"},{"line_number":747,"context_line":"        \"\"\""},{"line_number":748,"context_line":"        strBitsSize \u003d six.text_type(int(strGbSize) * units.Gi)"},{"line_number":749,"context_line":""},{"line_number":750,"context_line":"        LOG.debug(\"Converted %(strGbSize)s GBs to %(strBitsSize)s Bits.\","},{"line_number":751,"context_line":"                  {\u0027strGbSize\u0027: strGbSize, \u0027strBitsSize\u0027: strBitsSize})"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_aab6a3f6","side":"PARENT","line":748,"range":{"start_line":748,"start_character":52,"end_line":748,"end_character":61},"in_reply_to":"1aa78d24_e39e3f53","updated":"2016-07-15 12:09:45.000000000","message":"Blanket change by someone else in the community","commit_id":"6605db7e400865d07938296756c1d0583b543fc2"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"7865b8fbc7b5e1af7d5664fc84946284224c3562","unresolved":false,"context_lines":[{"line_number":2601,"context_line":"        \"\"\""},{"line_number":2602,"context_line":"        live_migration_details \u003d self.get_live_migration_record(volume, True)"},{"line_number":2603,"context_line":"        if live_migration_details:"},{"line_number":2604,"context_line":"            if not live_migration_details[volume[\u0027id\u0027]]:"},{"line_number":2605,"context_line":"                live_migration_details[volume[\u0027id\u0027]] \u003d [maskingviewdict,"},{"line_number":2606,"context_line":"                                                        connector, extraSpecs]"},{"line_number":2607,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_036c2b35","line":2604,"range":{"start_line":2604,"start_character":15,"end_line":2604,"end_character":56},"updated":"2016-07-14 17:22:15.000000000","message":"Did you mean\n\nvolume[\u0027id\u0027] not in live_migration_details ?","commit_id":"5dbfa71e28c7c78ceeda9c3f8c7a0e8a6a90968f"},{"author":{"_account_id":22021,"name":"Unana Okpoyo","email":"tomitu@yahoo.com","username":"UnanaOkpoyo"},"change_message_id":"e7a672bdbed75cfb7df76772895364c4241d13f8","unresolved":false,"context_lines":[{"line_number":2601,"context_line":"        \"\"\""},{"line_number":2602,"context_line":"        live_migration_details \u003d self.get_live_migration_record(volume, True)"},{"line_number":2603,"context_line":"        if live_migration_details:"},{"line_number":2604,"context_line":"            if not live_migration_details[volume[\u0027id\u0027]]:"},{"line_number":2605,"context_line":"                live_migration_details[volume[\u0027id\u0027]] \u003d [maskingviewdict,"},{"line_number":2606,"context_line":"                                                        connector, extraSpecs]"},{"line_number":2607,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_aab223e3","line":2604,"range":{"start_line":2604,"start_character":15,"end_line":2604,"end_character":56},"in_reply_to":"1aa78d24_036c2b35","updated":"2016-07-15 12:09:45.000000000","message":"Will update and check in","commit_id":"5dbfa71e28c7c78ceeda9c3f8c7a0e8a6a90968f"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"7865b8fbc7b5e1af7d5664fc84946284224c3562","unresolved":false,"context_lines":[{"line_number":2612,"context_line":"                pickle.dump(live_migration_details, f)"},{"line_number":2613,"context_line":"        except Exception:"},{"line_number":2614,"context_line":"            exceptionMessage \u003d (_("},{"line_number":2615,"context_line":"                \"Error in processing live migration file.\"))"},{"line_number":2616,"context_line":"            LOG.error(exceptionMessage)"},{"line_number":2617,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":2618,"context_line":"                data\u003dexceptionMessage)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_43fbd347","line":2615,"range":{"start_line":2615,"start_character":15,"end_line":2615,"end_character":59},"updated":"2016-07-14 17:22:15.000000000","message":"There are no details about the original exception.\n\nIt\u0027s better to add the exception message here or use LOG.exception instead of LOG.error.","commit_id":"5dbfa71e28c7c78ceeda9c3f8c7a0e8a6a90968f"},{"author":{"_account_id":22021,"name":"Unana Okpoyo","email":"tomitu@yahoo.com","username":"UnanaOkpoyo"},"change_message_id":"e7a672bdbed75cfb7df76772895364c4241d13f8","unresolved":false,"context_lines":[{"line_number":2612,"context_line":"                pickle.dump(live_migration_details, f)"},{"line_number":2613,"context_line":"        except Exception:"},{"line_number":2614,"context_line":"            exceptionMessage \u003d (_("},{"line_number":2615,"context_line":"                \"Error in processing live migration file.\"))"},{"line_number":2616,"context_line":"            LOG.error(exceptionMessage)"},{"line_number":2617,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":2618,"context_line":"                data\u003dexceptionMessage)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_0a541752","line":2615,"range":{"start_line":2615,"start_character":15,"end_line":2615,"end_character":59},"in_reply_to":"1aa78d24_43fbd347","updated":"2016-07-15 12:09:45.000000000","message":"Will update the exception attributes","commit_id":"5dbfa71e28c7c78ceeda9c3f8c7a0e8a6a90968f"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"7865b8fbc7b5e1af7d5664fc84946284224c3562","unresolved":false,"context_lines":[{"line_number":2630,"context_line":"                del live_migration_details[volume[\u0027id\u0027]]"},{"line_number":2631,"context_line":"                with open(LIVE_MIGRATION_FILE, \"wb\") as f:"},{"line_number":2632,"context_line":"                    pickle.dump(live_migration_details, f)"},{"line_number":2633,"context_line":"            except KeyError:"},{"line_number":2634,"context_line":"                LOG.debug(\"%{Volume}s. doesn\u0027t exist in live migration \""},{"line_number":2635,"context_line":"                          \"record: \","},{"line_number":2636,"context_line":"                          {\u0027Volume\u0027: volume[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_0388abc5","line":2633,"range":{"start_line":2633,"start_character":11,"end_line":2633,"end_character":27},"updated":"2016-07-14 17:22:15.000000000","message":"Why can\u0027t we check the existence of the key before deleting it?","commit_id":"5dbfa71e28c7c78ceeda9c3f8c7a0e8a6a90968f"},{"author":{"_account_id":22021,"name":"Unana Okpoyo","email":"tomitu@yahoo.com","username":"UnanaOkpoyo"},"change_message_id":"e7a672bdbed75cfb7df76772895364c4241d13f8","unresolved":false,"context_lines":[{"line_number":2630,"context_line":"                del live_migration_details[volume[\u0027id\u0027]]"},{"line_number":2631,"context_line":"                with open(LIVE_MIGRATION_FILE, \"wb\") as f:"},{"line_number":2632,"context_line":"                    pickle.dump(live_migration_details, f)"},{"line_number":2633,"context_line":"            except KeyError:"},{"line_number":2634,"context_line":"                LOG.debug(\"%{Volume}s. doesn\u0027t exist in live migration \""},{"line_number":2635,"context_line":"                          \"record: \","},{"line_number":2636,"context_line":"                          {\u0027Volume\u0027: volume[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_2a8e33d0","line":2633,"range":{"start_line":2633,"start_character":11,"end_line":2633,"end_character":27},"in_reply_to":"1aa78d24_0388abc5","updated":"2016-07-15 12:09:45.000000000","message":"Thanks for the recommendation...Will review the function.","commit_id":"5dbfa71e28c7c78ceeda9c3f8c7a0e8a6a90968f"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"7865b8fbc7b5e1af7d5664fc84946284224c3562","unresolved":false,"context_lines":[{"line_number":2631,"context_line":"                with open(LIVE_MIGRATION_FILE, \"wb\") as f:"},{"line_number":2632,"context_line":"                    pickle.dump(live_migration_details, f)"},{"line_number":2633,"context_line":"            except KeyError:"},{"line_number":2634,"context_line":"                LOG.debug(\"%{Volume}s. doesn\u0027t exist in live migration \""},{"line_number":2635,"context_line":"                          \"record: \","},{"line_number":2636,"context_line":"                          {\u0027Volume\u0027: volume[\u0027id\u0027]})"},{"line_number":2637,"context_line":"            if not live_migration_details:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_4380f38b","line":2634,"range":{"start_line":2634,"start_character":28,"end_line":2634,"end_character":36},"updated":"2016-07-14 17:22:15.000000000","message":"(Volume)","commit_id":"5dbfa71e28c7c78ceeda9c3f8c7a0e8a6a90968f"},{"author":{"_account_id":22021,"name":"Unana Okpoyo","email":"tomitu@yahoo.com","username":"UnanaOkpoyo"},"change_message_id":"e7a672bdbed75cfb7df76772895364c4241d13f8","unresolved":false,"context_lines":[{"line_number":2631,"context_line":"                with open(LIVE_MIGRATION_FILE, \"wb\") as f:"},{"line_number":2632,"context_line":"                    pickle.dump(live_migration_details, f)"},{"line_number":2633,"context_line":"            except KeyError:"},{"line_number":2634,"context_line":"                LOG.debug(\"%{Volume}s. doesn\u0027t exist in live migration \""},{"line_number":2635,"context_line":"                          \"record: \","},{"line_number":2636,"context_line":"                          {\u0027Volume\u0027: volume[\u0027id\u0027]})"},{"line_number":2637,"context_line":"            if not live_migration_details:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_2a7c73b4","line":2634,"range":{"start_line":2634,"start_character":28,"end_line":2634,"end_character":36},"in_reply_to":"1aa78d24_4380f38b","updated":"2016-07-15 12:09:45.000000000","message":"Will update....thanks for the feedback","commit_id":"5dbfa71e28c7c78ceeda9c3f8c7a0e8a6a90968f"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"c355e5acf9934982a044331e4fe8da56627dd472","unresolved":false,"context_lines":[{"line_number":749,"context_line":"        :param strGB: string -- The size in GB"},{"line_number":750,"context_line":"        :returns: string -- The size in bytes"},{"line_number":751,"context_line":"        \"\"\""},{"line_number":752,"context_line":"        strBitsSize \u003d six.text_type(int(strGbSize) * 1024 * 1024 * 1024)"},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"        LOG.debug(\"Converted %(strGbSize)s GBs to %(strBitsSize)s Bits.\","},{"line_number":755,"context_line":"                  {\u0027strGbSize\u0027: strGbSize, \u0027strBitsSize\u0027: strBitsSize})"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_33356646","line":752,"range":{"start_line":752,"start_character":53,"end_line":752,"end_character":71},"updated":"2016-08-08 15:32:05.000000000","message":"units.Gi","commit_id":"72ad314f58c5f2bcdf2102974e84ac08ff5a5045"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"d0bef237ac036599a9999023fc771d9b4f447fc0","unresolved":false,"context_lines":[{"line_number":749,"context_line":"        :param strGB: string -- The size in GB"},{"line_number":750,"context_line":"        :returns: string -- The size in bytes"},{"line_number":751,"context_line":"        \"\"\""},{"line_number":752,"context_line":"        strBitsSize \u003d six.text_type(int(strGbSize) * 1024 * 1024 * 1024)"},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"        LOG.debug(\"Converted %(strGbSize)s GBs to %(strBitsSize)s Bits.\","},{"line_number":755,"context_line":"                  {\u0027strGbSize\u0027: strGbSize, \u0027strBitsSize\u0027: strBitsSize})"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_e24bf957","line":752,"range":{"start_line":752,"start_character":53,"end_line":752,"end_character":71},"in_reply_to":"9ad45d7e_33356646","updated":"2016-08-08 15:42:03.000000000","message":"thanks, we will change this","commit_id":"72ad314f58c5f2bcdf2102974e84ac08ff5a5045"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"c355e5acf9934982a044331e4fe8da56627dd472","unresolved":false,"context_lines":[{"line_number":2624,"context_line":"        except Exception:"},{"line_number":2625,"context_line":"            exceptionMessage \u003d (_("},{"line_number":2626,"context_line":"                \"Error in processing live migration file.\"))"},{"line_number":2627,"context_line":"            LOG.error(exceptionMessage)"},{"line_number":2628,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":2629,"context_line":"                data\u003dexceptionMessage)"},{"line_number":2630,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_93a7f24e","line":2627,"updated":"2016-08-08 15:32:05.000000000","message":"Since a new exception is raised, we should use LOG.exception to log the traceback.","commit_id":"72ad314f58c5f2bcdf2102974e84ac08ff5a5045"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"d0bef237ac036599a9999023fc771d9b4f447fc0","unresolved":false,"context_lines":[{"line_number":2624,"context_line":"        except Exception:"},{"line_number":2625,"context_line":"            exceptionMessage \u003d (_("},{"line_number":2626,"context_line":"                \"Error in processing live migration file.\"))"},{"line_number":2627,"context_line":"            LOG.error(exceptionMessage)"},{"line_number":2628,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":2629,"context_line":"                data\u003dexceptionMessage)"},{"line_number":2630,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_a268e1bb","line":2627,"in_reply_to":"9ad45d7e_93a7f24e","updated":"2016-08-08 15:42:03.000000000","message":"Sure.  We will change this","commit_id":"72ad314f58c5f2bcdf2102974e84ac08ff5a5045"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"c355e5acf9934982a044331e4fe8da56627dd472","unresolved":false,"context_lines":[{"line_number":2641,"context_line":"                del live_migration_details[volume[\u0027id\u0027]]"},{"line_number":2642,"context_line":"                with open(LIVE_MIGRATION_FILE, \"wb\") as f:"},{"line_number":2643,"context_line":"                    pickle.dump(live_migration_details, f)"},{"line_number":2644,"context_line":"            except KeyError:"},{"line_number":2645,"context_line":"                LOG.debug(\"%(Volume)s. doesn\u0027t exist in live migration \""},{"line_number":2646,"context_line":"                          \"record: \","},{"line_number":2647,"context_line":"                          {\u0027Volume\u0027: volume[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_f3ed8e8f","line":2644,"updated":"2016-08-08 15:32:05.000000000","message":"Can we use the check \"volume[\u0027id\u0027] in live_migration_details\" instead of handling the exception?","commit_id":"72ad314f58c5f2bcdf2102974e84ac08ff5a5045"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"d0bef237ac036599a9999023fc771d9b4f447fc0","unresolved":false,"context_lines":[{"line_number":2641,"context_line":"                del live_migration_details[volume[\u0027id\u0027]]"},{"line_number":2642,"context_line":"                with open(LIVE_MIGRATION_FILE, \"wb\") as f:"},{"line_number":2643,"context_line":"                    pickle.dump(live_migration_details, f)"},{"line_number":2644,"context_line":"            except KeyError:"},{"line_number":2645,"context_line":"                LOG.debug(\"%(Volume)s. doesn\u0027t exist in live migration \""},{"line_number":2646,"context_line":"                          \"record: \","},{"line_number":2647,"context_line":"                          {\u0027Volume\u0027: volume[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_42aac5d5","line":2644,"in_reply_to":"9ad45d7e_f3ed8e8f","updated":"2016-08-08 15:42:03.000000000","message":"We will look into this","commit_id":"72ad314f58c5f2bcdf2102974e84ac08ff5a5045"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"c355e5acf9934982a044331e4fe8da56627dd472","unresolved":false,"context_lines":[{"line_number":2642,"context_line":"                with open(LIVE_MIGRATION_FILE, \"wb\") as f:"},{"line_number":2643,"context_line":"                    pickle.dump(live_migration_details, f)"},{"line_number":2644,"context_line":"            except KeyError:"},{"line_number":2645,"context_line":"                LOG.debug(\"%(Volume)s. doesn\u0027t exist in live migration \""},{"line_number":2646,"context_line":"                          \"record: \","},{"line_number":2647,"context_line":"                          {\u0027Volume\u0027: volume[\u0027id\u0027]})"},{"line_number":2648,"context_line":"            if not live_migration_details:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_333ba6ed","line":2645,"range":{"start_line":2645,"start_character":37,"end_line":2645,"end_character":38},"updated":"2016-08-08 15:32:05.000000000","message":"nit: remove the \u0027.\u0027","commit_id":"72ad314f58c5f2bcdf2102974e84ac08ff5a5045"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"d0bef237ac036599a9999023fc771d9b4f447fc0","unresolved":false,"context_lines":[{"line_number":2642,"context_line":"                with open(LIVE_MIGRATION_FILE, \"wb\") as f:"},{"line_number":2643,"context_line":"                    pickle.dump(live_migration_details, f)"},{"line_number":2644,"context_line":"            except KeyError:"},{"line_number":2645,"context_line":"                LOG.debug(\"%(Volume)s. doesn\u0027t exist in live migration \""},{"line_number":2646,"context_line":"                          \"record: \","},{"line_number":2647,"context_line":"                          {\u0027Volume\u0027: volume[\u0027id\u0027]})"},{"line_number":2648,"context_line":"            if not live_migration_details:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_c2b6b53c","line":2645,"range":{"start_line":2645,"start_character":37,"end_line":2645,"end_character":38},"in_reply_to":"9ad45d7e_333ba6ed","updated":"2016-08-08 15:42:03.000000000","message":"Sure","commit_id":"72ad314f58c5f2bcdf2102974e84ac08ff5a5045"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"c355e5acf9934982a044331e4fe8da56627dd472","unresolved":false,"context_lines":[{"line_number":2665,"context_line":"            else:"},{"line_number":2666,"context_line":"                try:"},{"line_number":2667,"context_line":"                    returned_record \u003d live_migration_details[volume[\u0027id\u0027]]"},{"line_number":2668,"context_line":"                except KeyError:"},{"line_number":2669,"context_line":"                    LOG.debug(\"%(Volume)s. doesn\u0027t exist in live migration \""},{"line_number":2670,"context_line":"                              \"record: \","},{"line_number":2671,"context_line":"                              {\u0027Volume\u0027: volume[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_f3490e90","line":2668,"updated":"2016-08-08 15:32:05.000000000","message":"Can we use the check \"volume[\u0027id\u0027] in live_migration_details\" instead of handling the exception?","commit_id":"72ad314f58c5f2bcdf2102974e84ac08ff5a5045"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"c355e5acf9934982a044331e4fe8da56627dd472","unresolved":false,"context_lines":[{"line_number":2666,"context_line":"                try:"},{"line_number":2667,"context_line":"                    returned_record \u003d live_migration_details[volume[\u0027id\u0027]]"},{"line_number":2668,"context_line":"                except KeyError:"},{"line_number":2669,"context_line":"                    LOG.debug(\"%(Volume)s. doesn\u0027t exist in live migration \""},{"line_number":2670,"context_line":"                              \"record: \","},{"line_number":2671,"context_line":"                              {\u0027Volume\u0027: volume[\u0027id\u0027]})"},{"line_number":2672,"context_line":"        return returned_record"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_b32f96a0","line":2669,"range":{"start_line":2669,"start_character":41,"end_line":2669,"end_character":42},"updated":"2016-08-08 15:32:05.000000000","message":"nit: remove the \u0027.\u0027","commit_id":"72ad314f58c5f2bcdf2102974e84ac08ff5a5045"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"2f448fa983041d7a316514e4370e443ffeda10fe","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import datetime"},{"line_number":17,"context_line":"import hashlib"},{"line_number":18,"context_line":"import os.path"},{"line_number":19,"context_line":"import pickle"},{"line_number":20,"context_line":"import random"},{"line_number":21,"context_line":"import re"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa7ab95a_4f366e04","line":18,"updated":"2016-08-26 13:38:06.000000000","message":"import os","commit_id":"8f05e9f29befd63458a964ef6fbd39418d43b304"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"5ce55f2a55f7598282631a8b370dcb842031b7b0","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import datetime"},{"line_number":17,"context_line":"import hashlib"},{"line_number":18,"context_line":"import os.path"},{"line_number":19,"context_line":"import pickle"},{"line_number":20,"context_line":"import random"},{"line_number":21,"context_line":"import re"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa7ab95a_d5c9e179","line":18,"in_reply_to":"fa7ab95a_4f366e04","updated":"2016-08-29 09:38:41.000000000","message":"Thanks, I will change this","commit_id":"8f05e9f29befd63458a964ef6fbd39418d43b304"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"2f448fa983041d7a316514e4370e443ffeda10fe","unresolved":false,"context_lines":[{"line_number":2747,"context_line":"                data\u003dexceptionMessage)"},{"line_number":2748,"context_line":""},{"line_number":2749,"context_line":"    def delete_live_migration_record(self, volume):"},{"line_number":2750,"context_line":"        \"\"\"Delete record of live migration destination from file and if"},{"line_number":2751,"context_line":""},{"line_number":2752,"context_line":"        after deletion, delete file if empty"},{"line_number":2753,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"fa7ab95a_4a31fca1","line":2750,"updated":"2016-08-26 13:38:06.000000000","message":"nit: we should restrict the summary to a single line for multi-line docstrings.\n\nSee http://docs.openstack.org/developer/hacking/","commit_id":"8f05e9f29befd63458a964ef6fbd39418d43b304"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"5ce55f2a55f7598282631a8b370dcb842031b7b0","unresolved":false,"context_lines":[{"line_number":2747,"context_line":"                data\u003dexceptionMessage)"},{"line_number":2748,"context_line":""},{"line_number":2749,"context_line":"    def delete_live_migration_record(self, volume):"},{"line_number":2750,"context_line":"        \"\"\"Delete record of live migration destination from file and if"},{"line_number":2751,"context_line":""},{"line_number":2752,"context_line":"        after deletion, delete file if empty"},{"line_number":2753,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"fa7ab95a_35a5adb4","line":2750,"in_reply_to":"fa7ab95a_4a31fca1","updated":"2016-08-29 09:38:41.000000000","message":"Ok","commit_id":"8f05e9f29befd63458a964ef6fbd39418d43b304"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"2f448fa983041d7a316514e4370e443ffeda10fe","unresolved":false,"context_lines":[{"line_number":2761,"context_line":"                    pickle.dump(live_migration_details, f)"},{"line_number":2762,"context_line":"            else:"},{"line_number":2763,"context_line":"                LOG.debug(\"%(Volume)s doesn\u0027t exist in live migration \""},{"line_number":2764,"context_line":"                          \"record: \","},{"line_number":2765,"context_line":"                          {\u0027Volume\u0027: volume[\u0027id\u0027]})"},{"line_number":2766,"context_line":"            if not live_migration_details:"},{"line_number":2767,"context_line":"                os.remove(LIVE_MIGRATION_FILE)"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa7ab95a_4ae2dcd6","line":2764,"range":{"start_line":2764,"start_character":33,"end_line":2764,"end_character":35},"updated":"2016-08-26 13:38:06.000000000","message":"nit: end with a period.","commit_id":"8f05e9f29befd63458a964ef6fbd39418d43b304"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"5ce55f2a55f7598282631a8b370dcb842031b7b0","unresolved":false,"context_lines":[{"line_number":2761,"context_line":"                    pickle.dump(live_migration_details, f)"},{"line_number":2762,"context_line":"            else:"},{"line_number":2763,"context_line":"                LOG.debug(\"%(Volume)s doesn\u0027t exist in live migration \""},{"line_number":2764,"context_line":"                          \"record: \","},{"line_number":2765,"context_line":"                          {\u0027Volume\u0027: volume[\u0027id\u0027]})"},{"line_number":2766,"context_line":"            if not live_migration_details:"},{"line_number":2767,"context_line":"                os.remove(LIVE_MIGRATION_FILE)"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa7ab95a_957d991e","line":2764,"range":{"start_line":2764,"start_character":33,"end_line":2764,"end_character":35},"in_reply_to":"fa7ab95a_4ae2dcd6","updated":"2016-08-29 09:38:41.000000000","message":"Sure","commit_id":"8f05e9f29befd63458a964ef6fbd39418d43b304"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"2f448fa983041d7a316514e4370e443ffeda10fe","unresolved":false,"context_lines":[{"line_number":2784,"context_line":"                if volume[\u0027id\u0027] in live_migration_details:"},{"line_number":2785,"context_line":"                    returned_record \u003d live_migration_details[volume[\u0027id\u0027]]"},{"line_number":2786,"context_line":"                else:"},{"line_number":2787,"context_line":"                    LOG.debug(\"%(Volume)s doesn\u0027t exist in live migration \""},{"line_number":2788,"context_line":"                              \"record: \","},{"line_number":2789,"context_line":"                              {\u0027Volume\u0027: volume[\u0027id\u0027]})"},{"line_number":2790,"context_line":"        return returned_record"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa7ab95a_0a47f4bb","line":2787,"updated":"2016-08-26 13:38:06.000000000","message":"Same comment","commit_id":"8f05e9f29befd63458a964ef6fbd39418d43b304"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"5ce55f2a55f7598282631a8b370dcb842031b7b0","unresolved":false,"context_lines":[{"line_number":2784,"context_line":"                if volume[\u0027id\u0027] in live_migration_details:"},{"line_number":2785,"context_line":"                    returned_record \u003d live_migration_details[volume[\u0027id\u0027]]"},{"line_number":2786,"context_line":"                else:"},{"line_number":2787,"context_line":"                    LOG.debug(\"%(Volume)s doesn\u0027t exist in live migration \""},{"line_number":2788,"context_line":"                              \"record: \","},{"line_number":2789,"context_line":"                              {\u0027Volume\u0027: volume[\u0027id\u0027]})"},{"line_number":2790,"context_line":"        return returned_record"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa7ab95a_35ba0dc1","line":2787,"in_reply_to":"fa7ab95a_0a47f4bb","updated":"2016-08-29 09:38:41.000000000","message":"Sure","commit_id":"8f05e9f29befd63458a964ef6fbd39418d43b304"}]}
