)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0f7a05b622bf90edaccaf537a3cafe14b98d6916","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Helen Walsh \u003chelen.walsh@emc.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-01-20 17:17:39 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"VMAX driver - Storage assisted volume migration."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Facilitates retyping from one volume type to another"},{"line_number":10,"context_line":"where volume types belong to the same backend.  Both"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":36,"id":"5a3905b3_a3dcdc73","line":7,"range":{"start_line":7,"start_character":47,"end_line":7,"end_character":48},"updated":"2017-01-23 13:38:05.000000000","message":"Nit for the future, don\u0027t end with a period.","commit_id":"6624c3197bfce7092a1b16ae74f1c3c9532d0a04"}],"cinder/tests/unit/volume/drivers/emc/test_emc_vmax.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"87a01f9c79967de2f82dbc54e6e727e661cbd34b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import shutil"},{"line_number":19,"context_line":"import sys"},{"line_number":20,"context_line":"import tempfile"},{"line_number":21,"context_line":"import unittest"},{"line_number":22,"context_line":"from xml.dom import minidom"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_6813e6b8","line":20,"updated":"2016-12-14 11:51:51.000000000","message":"It could be good to not use tempfiles in unit tests","commit_id":"f3c5de14a94ccb73012d1df4268dfd95ac868e4c"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"5de3d045107e41c8fe2201de807dfbfb77e97718","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import shutil"},{"line_number":19,"context_line":"import sys"},{"line_number":20,"context_line":"import tempfile"},{"line_number":21,"context_line":"import unittest"},{"line_number":22,"context_line":"from xml.dom import minidom"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_2230799e","line":20,"in_reply_to":"1a6eadb0_6813e6b8","updated":"2016-12-19 10:11:24.000000000","message":"Yes, we intend removing them in pike","commit_id":"f3c5de14a94ccb73012d1df4268dfd95ac868e4c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"acba512af1664ff77a2b800c646755f82b86445e","unresolved":false,"context_lines":[{"line_number":6967,"context_line":"        tempdir \u003d tempfile.mkdtemp()"},{"line_number":6968,"context_line":"        config_file_path \u003d self.create_fake_config_file_multi_pool_v3(tempdir)"},{"line_number":6969,"context_line":"        self.driver.common._register_config_file_from_config_group \u003d ("},{"line_number":6970,"context_line":"            mock.Mock(return_value\u003dconfig_file_path))"},{"line_number":6971,"context_line":"        extraSpecs \u003d self.driver.common._initial_setup(self.vol_v3)"},{"line_number":6972,"context_line":"        self.assertEqual(\u0027SRP_1\u0027, extraSpecs[\u0027storagetype:pool\u0027])"},{"line_number":6973,"context_line":"        self.assertEqual(\u0027DSS\u0027, extraSpecs[\u0027storagetype:workload\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"da4df55a_6e194f88","line":6970,"updated":"2016-12-23 21:14:14.000000000","message":"Use mock.patch","commit_id":"d8bf9a5d2b2e8fb9c0f39d10abe4ecb888b058a7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"acba512af1664ff77a2b800c646755f82b86445e","unresolved":false,"context_lines":[{"line_number":6987,"context_line":"        tempdir \u003d tempfile.mkdtemp()"},{"line_number":6988,"context_line":"        config_file_path \u003d self.create_fake_config_file_legacy_v3(tempdir)"},{"line_number":6989,"context_line":"        self.driver.common._register_config_file_from_config_group \u003d ("},{"line_number":6990,"context_line":"            mock.Mock(return_value\u003dconfig_file_path))"},{"line_number":6991,"context_line":"        extraSpecs \u003d self.driver.common._initial_setup(self.vol_v3)"},{"line_number":6992,"context_line":"        self.assertEqual(\u0027DSS\u0027, extraSpecs[\u0027storagetype:workload\u0027])"},{"line_number":6993,"context_line":"        self.assertEqual(\u0027Bronze\u0027, extraSpecs[\u0027storagetype:slo\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"da4df55a_8e1cb378","line":6990,"updated":"2016-12-23 21:14:14.000000000","message":"Use mock.patch","commit_id":"d8bf9a5d2b2e8fb9c0f39d10abe4ecb888b058a7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"acba512af1664ff77a2b800c646755f82b86445e","unresolved":false,"context_lines":[{"line_number":6998,"context_line":"        tempdir \u003d tempfile.mkdtemp()"},{"line_number":6999,"context_line":"        config_file_path \u003d self.create_fake_config_file_multi_pool_v3(tempdir)"},{"line_number":7000,"context_line":"        self.driver.common._register_config_file_from_config_group \u003d ("},{"line_number":7001,"context_line":"            mock.Mock(return_value\u003dconfig_file_path))"},{"line_number":7002,"context_line":"        invalid_vol_v3 \u003d self.data.test_volume_v4.copy()"},{"line_number":7003,"context_line":"        invalid_vol_v3.pop(\u0027host\u0027, None)"},{"line_number":7004,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"}],"source_content_type":"text/x-python","patch_set":24,"id":"da4df55a_ae133765","line":7001,"updated":"2016-12-23 21:14:14.000000000","message":"Use mock.patch","commit_id":"d8bf9a5d2b2e8fb9c0f39d10abe4ecb888b058a7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"acba512af1664ff77a2b800c646755f82b86445e","unresolved":false,"context_lines":[{"line_number":7211,"context_line":"        ret_model_update, ret_volumes_model_update \u003d ("},{"line_number":7212,"context_line":"            self.driver.delete_consistencygroup(self.data.test_ctxt,"},{"line_number":7213,"context_line":"                                                self.data.test_CG, []))"},{"line_number":7214,"context_line":"        self.assertEqual(ret_model_update, model_update)"},{"line_number":7215,"context_line":""},{"line_number":7216,"context_line":"    @mock.patch.object("},{"line_number":7217,"context_line":"        emc_vmax_common.EMCVMAXCommon,"}],"source_content_type":"text/x-python","patch_set":24,"id":"da4df55a_f9142b45","line":7214,"updated":"2016-12-23 21:14:14.000000000","message":"Should be expected, actual.  This is reversed.\n\nself.assertEqual(model_update, ret_model_update)","commit_id":"d8bf9a5d2b2e8fb9c0f39d10abe4ecb888b058a7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"acba512af1664ff77a2b800c646755f82b86445e","unresolved":false,"context_lines":[{"line_number":7228,"context_line":"        ret_model_update, ret_volumes_model_update \u003d ("},{"line_number":7229,"context_line":"            self.driver.delete_consistencygroup(self.data.test_ctxt,"},{"line_number":7230,"context_line":"                                                self.data.test_CG, []))"},{"line_number":7231,"context_line":"        self.assertEqual(ret_model_update, model_update)"},{"line_number":7232,"context_line":""},{"line_number":7233,"context_line":"    @mock.patch.object("},{"line_number":7234,"context_line":"        emc_vmax_common.EMCVMAXCommon,"}],"source_content_type":"text/x-python","patch_set":24,"id":"da4df55a_b921c3a1","line":7231,"updated":"2016-12-23 21:14:14.000000000","message":"Same","commit_id":"d8bf9a5d2b2e8fb9c0f39d10abe4ecb888b058a7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"acba512af1664ff77a2b800c646755f82b86445e","unresolved":false,"context_lines":[{"line_number":7274,"context_line":"        return_value\u003dEMCVMAXCommonData.multi_pool_extra_specs)"},{"line_number":7275,"context_line":"    def test_delete_snapshot_v3_success(self, mock_is):"},{"line_number":7276,"context_line":"        masking \u003d self.driver.common.masking"},{"line_number":7277,"context_line":"        masking.get_associated_masking_groups_from_device \u003d mock.Mock("},{"line_number":7278,"context_line":"            return_value\u003dself.data.storagegroups)"},{"line_number":7279,"context_line":"        self.driver.delete_snapshot(self.data.test_snapshot_1_v3)"},{"line_number":7280,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"da4df55a_5931b7eb","line":7277,"updated":"2016-12-23 21:14:14.000000000","message":"Use mock.patch","commit_id":"d8bf9a5d2b2e8fb9c0f39d10abe4ecb888b058a7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"acba512af1664ff77a2b800c646755f82b86445e","unresolved":false,"context_lines":[{"line_number":7290,"context_line":"        data \u003d self.driver.common.update_volume_stats()"},{"line_number":7291,"context_line":"        pools \u003d data[\u0027pools\u0027]"},{"line_number":7292,"context_line":"        self.assertEqual(pools[0][\u0027pool_name\u0027],"},{"line_number":7293,"context_line":"                         \"Bronze+DSS+SRP_1+1234567891011\")"},{"line_number":7294,"context_line":"        self.assertEqual(pools[0][\u0027location_info\u0027],"},{"line_number":7295,"context_line":"                         \"1234567891011#SRP_1#Bronze#DSS\")"},{"line_number":7296,"context_line":"        self._cleanup_pool_info()"}],"source_content_type":"text/x-python","patch_set":24,"id":"da4df55a_b958e333","line":7293,"updated":"2016-12-23 21:14:14.000000000","message":"reversed.","commit_id":"d8bf9a5d2b2e8fb9c0f39d10abe4ecb888b058a7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"acba512af1664ff77a2b800c646755f82b86445e","unresolved":false,"context_lines":[{"line_number":7292,"context_line":"        self.assertEqual(pools[0][\u0027pool_name\u0027],"},{"line_number":7293,"context_line":"                         \"Bronze+DSS+SRP_1+1234567891011\")"},{"line_number":7294,"context_line":"        self.assertEqual(pools[0][\u0027location_info\u0027],"},{"line_number":7295,"context_line":"                         \"1234567891011#SRP_1#Bronze#DSS\")"},{"line_number":7296,"context_line":"        self._cleanup_pool_info()"},{"line_number":7297,"context_line":""},{"line_number":7298,"context_line":"    @mock.patch.object("}],"source_content_type":"text/x-python","patch_set":24,"id":"da4df55a_d95be72c","line":7295,"updated":"2016-12-23 21:14:14.000000000","message":"reversed.","commit_id":"d8bf9a5d2b2e8fb9c0f39d10abe4ecb888b058a7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"acba512af1664ff77a2b800c646755f82b86445e","unresolved":false,"context_lines":[{"line_number":7307,"context_line":"        self.driver.common.multiPoolSupportEnabled \u003d True"},{"line_number":7308,"context_line":"        data \u003d self.driver.common.update_volume_stats()"},{"line_number":7309,"context_line":"        pools \u003d data[\u0027pools\u0027]"},{"line_number":7310,"context_line":"        self.assertEqual(pools[0][\u0027pool_name\u0027],"},{"line_number":7311,"context_line":"                         \"Bronze+DSS+SRP_1+1234567891011\")"},{"line_number":7312,"context_line":"        self.assertEqual(pools[0][\u0027location_info\u0027],"},{"line_number":7313,"context_line":"                         \"1234567891011#SRP_1#Bronze#DSS\")"},{"line_number":7314,"context_line":"        self.assertEqual(pools[1][\u0027pool_name\u0027],"},{"line_number":7315,"context_line":"                         \"Silver+OLTP+SRP_1+1234567891011\")"},{"line_number":7316,"context_line":"        self.assertEqual(pools[1][\u0027location_info\u0027],"},{"line_number":7317,"context_line":"                         \"1234567891011#SRP_1#Silver#OLTP\")"},{"line_number":7318,"context_line":"        self._cleanup_pool_info()"},{"line_number":7319,"context_line":""},{"line_number":7320,"context_line":"    @mock.patch.object("}],"source_content_type":"text/x-python","patch_set":24,"id":"da4df55a_193e4fb8","line":7317,"range":{"start_line":7310,"start_character":1,"end_line":7317,"end_character":59},"updated":"2016-12-23 21:14:14.000000000","message":"Reversed.","commit_id":"d8bf9a5d2b2e8fb9c0f39d10abe4ecb888b058a7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"acba512af1664ff77a2b800c646755f82b86445e","unresolved":false,"context_lines":[{"line_number":7329,"context_line":"        self.driver.common.multiPoolSupportEnabled \u003d True"},{"line_number":7330,"context_line":"        data \u003d self.driver.common.update_volume_stats()"},{"line_number":7331,"context_line":"        pools \u003d data[\u0027pools\u0027]"},{"line_number":7332,"context_line":"        self.assertEqual(pools[0][\u0027pool_name\u0027],"},{"line_number":7333,"context_line":"                         \"Bronze+DSS+SRP_1+1234567891011\")"},{"line_number":7334,"context_line":"        self.assertEqual(pools[0][\u0027location_info\u0027],"},{"line_number":7335,"context_line":"                         \"1234567891011#SRP_1#Bronze#DSS\")"},{"line_number":7336,"context_line":"        self.assertEqual(pools[1][\u0027pool_name\u0027],"},{"line_number":7337,"context_line":"                         \"Silver+OLTP+SRP_1+1234567891011\")"},{"line_number":7338,"context_line":"        self.assertEqual(pools[1][\u0027location_info\u0027],"},{"line_number":7339,"context_line":"                         \"1234567891011#SRP_1#Silver#OLTP\")"},{"line_number":7340,"context_line":"        self._cleanup_pool_info()"},{"line_number":7341,"context_line":""},{"line_number":7342,"context_line":"    @mock.patch.object("}],"source_content_type":"text/x-python","patch_set":24,"id":"da4df55a_d97207ad","line":7339,"range":{"start_line":7332,"start_character":0,"end_line":7339,"end_character":59},"updated":"2016-12-23 21:14:14.000000000","message":"Reversed.","commit_id":"d8bf9a5d2b2e8fb9c0f39d10abe4ecb888b058a7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"acba512af1664ff77a2b800c646755f82b86445e","unresolved":false,"context_lines":[{"line_number":7350,"context_line":"        data \u003d self.driver.common.update_volume_stats()"},{"line_number":7351,"context_line":"        pools \u003d data[\u0027pools\u0027]"},{"line_number":7352,"context_line":"        # Match with the older pool_name format"},{"line_number":7353,"context_line":"        self.assertEqual(pools[0][\u0027pool_name\u0027],"},{"line_number":7354,"context_line":"                         \"Bronze+SRP_1+1234567891011\")"},{"line_number":7355,"context_line":"        self.assertEqual(pools[0][\u0027location_info\u0027],"},{"line_number":7356,"context_line":"                         \"1234567891011#SRP_1#Bronze#DSS\")"},{"line_number":7357,"context_line":"        self.assertEqual(pools[1][\u0027pool_name\u0027],"},{"line_number":7358,"context_line":"                         \"Silver+SRP_1+1234567891011\")"},{"line_number":7359,"context_line":"        self.assertEqual(pools[1][\u0027location_info\u0027],"},{"line_number":7360,"context_line":"                         \"1234567891011#SRP_1#Silver#OLTP\")"},{"line_number":7361,"context_line":"        self._cleanup_pool_info()"},{"line_number":7362,"context_line":""},{"line_number":7363,"context_line":"    def _cleanup(self, tempdir, config_file_path):"}],"source_content_type":"text/x-python","patch_set":24,"id":"da4df55a_f9698bbf","line":7360,"range":{"start_line":7353,"start_character":0,"end_line":7360,"end_character":59},"updated":"2016-12-23 21:14:14.000000000","message":"Reversed.","commit_id":"d8bf9a5d2b2e8fb9c0f39d10abe4ecb888b058a7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8c9d8ec541e71fc0768e2fe65857e5805ede2503","unresolved":false,"context_lines":[{"line_number":6999,"context_line":"        # Test with volume which don\u0027t have pool_name"},{"line_number":7000,"context_line":"        tempdir \u003d tempfile.mkdtemp()"},{"line_number":7001,"context_line":"        config_file_path \u003d self.create_fake_config_file_multi_pool_v3(tempdir)"},{"line_number":7002,"context_line":"        self.driver.common._register_config_file_from_config_group \u003d ("},{"line_number":7003,"context_line":"            mock.Mock(return_value\u003dconfig_file_path))"},{"line_number":7004,"context_line":"        invalid_vol_v3 \u003d self.data.test_volume_v4.copy()"},{"line_number":7005,"context_line":"        invalid_vol_v3.pop(\u0027host\u0027, None)"},{"line_number":7006,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba5201f7_c35454cb","line":7003,"range":{"start_line":7002,"start_character":0,"end_line":7003,"end_character":53},"updated":"2017-01-07 04:34:53.000000000","message":"Use \"with mock.patch.object\" as line 6990 or do it as a decorator of the function, rather than change the function directly.","commit_id":"bee89326224f1b0239795d4a89661153df666ef2"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"e13476458248d1c6e5cb2aeb9b58eb499dcdd5c5","unresolved":false,"context_lines":[{"line_number":6999,"context_line":"        # Test with volume which don\u0027t have pool_name"},{"line_number":7000,"context_line":"        tempdir \u003d tempfile.mkdtemp()"},{"line_number":7001,"context_line":"        config_file_path \u003d self.create_fake_config_file_multi_pool_v3(tempdir)"},{"line_number":7002,"context_line":"        self.driver.common._register_config_file_from_config_group \u003d ("},{"line_number":7003,"context_line":"            mock.Mock(return_value\u003dconfig_file_path))"},{"line_number":7004,"context_line":"        invalid_vol_v3 \u003d self.data.test_volume_v4.copy()"},{"line_number":7005,"context_line":"        invalid_vol_v3.pop(\u0027host\u0027, None)"},{"line_number":7006,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba5201f7_44504e5f","line":7003,"range":{"start_line":7002,"start_character":0,"end_line":7003,"end_character":53},"in_reply_to":"ba5201f7_c35454cb","updated":"2017-01-09 11:30:09.000000000","message":"Sure","commit_id":"bee89326224f1b0239795d4a89661153df666ef2"}],"cinder/volume/drivers/emc/emc_vmax_common.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"87a01f9c79967de2f82dbc54e6e727e661cbd34b","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        if hasattr(self.configuration, \u0027multi_pool_support\u0027):"},{"line_number":149,"context_line":"            tempMultiPoolSupported \u003d ("},{"line_number":150,"context_line":"                self.configuration.safe_get(\u0027multi_pool_support\u0027))"},{"line_number":151,"context_line":"            if tempMultiPoolSupported \u003d\u003d \"True\":"},{"line_number":152,"context_line":"                self.multiPoolSupportEnabled \u003d True"},{"line_number":153,"context_line":"        self.pool_info[\u0027backend_name\u0027] \u003d ("},{"line_number":154,"context_line":"            self.configuration.safe_get(\u0027volume_backend_name\u0027))"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_887da2e9","line":151,"updated":"2016-12-14 11:51:51.000000000","message":"Please, use utils.get_bool_param here","commit_id":"f3c5de14a94ccb73012d1df4268dfd95ac868e4c"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"e4e39c61853b5e4a33243a1b0eea5640a3190c95","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        if hasattr(self.configuration, \u0027multi_pool_support\u0027):"},{"line_number":149,"context_line":"            tempMultiPoolSupported \u003d ("},{"line_number":150,"context_line":"                self.configuration.safe_get(\u0027multi_pool_support\u0027))"},{"line_number":151,"context_line":"            if tempMultiPoolSupported \u003d\u003d \"True\":"},{"line_number":152,"context_line":"                self.multiPoolSupportEnabled \u003d True"},{"line_number":153,"context_line":"        self.pool_info[\u0027backend_name\u0027] \u003d ("},{"line_number":154,"context_line":"            self.configuration.safe_get(\u0027volume_backend_name\u0027))"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_e2c0412d","line":151,"in_reply_to":"1a6eadb0_887da2e9","updated":"2016-12-19 10:12:20.000000000","message":"Will do.  Thanks","commit_id":"f3c5de14a94ccb73012d1df4268dfd95ac868e4c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"87a01f9c79967de2f82dbc54e6e727e661cbd34b","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        except Exception:"},{"line_number":228,"context_line":"            exceptionMessage \u003d (_("},{"line_number":229,"context_line":"                \"Unable to get the SLO/Workload combinations from the array\"))"},{"line_number":230,"context_line":"            LOG.error(exceptionMessage)"},{"line_number":231,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":232,"context_line":"                data\u003dexceptionMessage)"},{"line_number":233,"context_line":"        return finalArrayInfoList"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_68612639","line":230,"updated":"2016-12-14 11:51:51.000000000","message":"LOG.error \u003d\u003e LOG.exception\n\nCan we catch more specific exception here?","commit_id":"f3c5de14a94ccb73012d1df4268dfd95ac868e4c"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"5de3d045107e41c8fe2201de807dfbfb77e97718","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        except Exception:"},{"line_number":228,"context_line":"            exceptionMessage \u003d (_("},{"line_number":229,"context_line":"                \"Unable to get the SLO/Workload combinations from the array\"))"},{"line_number":230,"context_line":"            LOG.error(exceptionMessage)"},{"line_number":231,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":232,"context_line":"                data\u003dexceptionMessage)"},{"line_number":233,"context_line":"        return finalArrayInfoList"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_028e1d27","line":230,"in_reply_to":"1a6eadb0_68612639","updated":"2016-12-19 10:11:24.000000000","message":"We will change this to exception and look into catching a more specific exception","commit_id":"f3c5de14a94ccb73012d1df4268dfd95ac868e4c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"acba512af1664ff77a2b800c646755f82b86445e","unresolved":false,"context_lines":[{"line_number":1494,"context_line":"        return extraSpecs, configurationFile, qosSpecs"},{"line_number":1495,"context_line":""},{"line_number":1496,"context_line":"    def _get_multi_pool_support_enabled_flag(self):"},{"line_number":1497,"context_line":"        \"\"\"Reads the configuration fpr multi pool support flag"},{"line_number":1498,"context_line":""},{"line_number":1499,"context_line":"        :returns: MultiPoolSupportEnabled flag"},{"line_number":1500,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"da4df55a_8e2f53f5","line":1497,"updated":"2016-12-23 21:14:14.000000000","message":"s/fpr/for","commit_id":"d8bf9a5d2b2e8fb9c0f39d10abe4ecb888b058a7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8c9d8ec541e71fc0768e2fe65857e5805ede2503","unresolved":false,"context_lines":[{"line_number":1494,"context_line":"        return extraSpecs, configurationFile, qosSpecs"},{"line_number":1495,"context_line":""},{"line_number":1496,"context_line":"    def _get_multi_pool_support_enabled_flag(self):"},{"line_number":1497,"context_line":"        \"\"\"Reads the configuration fpr multi pool support flag"},{"line_number":1498,"context_line":""},{"line_number":1499,"context_line":"        :returns: MultiPoolSupportEnabled flag"},{"line_number":1500,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":30,"id":"ba5201f7_e3c23852","line":1497,"updated":"2017-01-07 04:34:53.000000000","message":"Missing period at the end.","commit_id":"bee89326224f1b0239795d4a89661153df666ef2"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"e13476458248d1c6e5cb2aeb9b58eb499dcdd5c5","unresolved":false,"context_lines":[{"line_number":1494,"context_line":"        return extraSpecs, configurationFile, qosSpecs"},{"line_number":1495,"context_line":""},{"line_number":1496,"context_line":"    def _get_multi_pool_support_enabled_flag(self):"},{"line_number":1497,"context_line":"        \"\"\"Reads the configuration fpr multi pool support flag"},{"line_number":1498,"context_line":""},{"line_number":1499,"context_line":"        :returns: MultiPoolSupportEnabled flag"},{"line_number":1500,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":30,"id":"ba5201f7_ff38eb3f","line":1497,"in_reply_to":"ba5201f7_e3c23852","updated":"2017-01-09 11:30:09.000000000","message":"Sure","commit_id":"bee89326224f1b0239795d4a89661153df666ef2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0f7a05b622bf90edaccaf537a3cafe14b98d6916","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                    \u0027config data\u0027),"},{"line_number":86,"context_line":"    cfg.StrOpt(\u0027multi_pool_support\u0027,"},{"line_number":87,"context_line":"               default\u003dFalse,"},{"line_number":88,"context_line":"               help\u003d\u0027use this value to specify\u0027"},{"line_number":89,"context_line":"                    \u0027multi-pool support for VMAX3\u0027)]"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"CONF.register_opts(emc_opts)"}],"source_content_type":"text/x-python","patch_set":36,"id":"5a3905b3_43a9788f","line":88,"range":{"start_line":88,"start_character":21,"end_line":88,"end_character":22},"updated":"2017-01-23 13:38:05.000000000","message":"Please start upper case. Also need a space at the end so \"specify\" and \"multi\" don\u0027t run together.","commit_id":"6624c3197bfce7092a1b16ae74f1c3c9532d0a04"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0f7a05b622bf90edaccaf537a3cafe14b98d6916","unresolved":false,"context_lines":[{"line_number":795,"context_line":"                               \u0027array\u0027: arrayInfo[\u0027SerialNumber\u0027]})"},{"line_number":796,"context_line":""},{"line_number":797,"context_line":"            if (alreadyQueried"},{"line_number":798,"context_line":"                    is True and self.multiPoolSupportEnabled is True):"},{"line_number":799,"context_line":"                # The dictionary will only have one key per VMAX3"},{"line_number":800,"context_line":"                # Construct the location info"},{"line_number":801,"context_line":"                temp_location_info \u003d ("}],"source_content_type":"text/x-python","patch_set":36,"id":"5a3905b3_e3718445","line":798,"range":{"start_line":798,"start_character":20,"end_line":798,"end_character":27},"updated":"2017-01-23 13:38:05.000000000","message":"Having \"is True\" for these conditions is a little redundant.","commit_id":"6624c3197bfce7092a1b16ae74f1c3c9532d0a04"}],"cinder/volume/drivers/emc/emc_vmax_fc.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8c9d8ec541e71fc0768e2fe65857e5805ede2503","unresolved":false,"context_lines":[{"line_number":72,"context_line":"              - QoS support (blueprint vmax-qos)"},{"line_number":73,"context_line":"        2.5.0 - Attach and detach snapshot (blueprint vmax-attach-snapshot)"},{"line_number":74,"context_line":"              - MVs and SGs not reflecting correct protocol (bug #1640222)"},{"line_number":75,"context_line":"              - Storage assisted volume migration (bp vmax-volume-migration)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    \"\"\""},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"ba5201f7_03bd7cd7","line":75,"updated":"2017-01-07 04:34:53.000000000","message":"Storage assisted volume migration via volume retype","commit_id":"bee89326224f1b0239795d4a89661153df666ef2"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"e13476458248d1c6e5cb2aeb9b58eb499dcdd5c5","unresolved":false,"context_lines":[{"line_number":72,"context_line":"              - QoS support (blueprint vmax-qos)"},{"line_number":73,"context_line":"        2.5.0 - Attach and detach snapshot (blueprint vmax-attach-snapshot)"},{"line_number":74,"context_line":"              - MVs and SGs not reflecting correct protocol (bug #1640222)"},{"line_number":75,"context_line":"              - Storage assisted volume migration (bp vmax-volume-migration)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    \"\"\""},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"ba5201f7_3fe35307","line":75,"in_reply_to":"ba5201f7_03bd7cd7","updated":"2017-01-09 11:30:09.000000000","message":"sure","commit_id":"bee89326224f1b0239795d4a89661153df666ef2"}],"cinder/volume/drivers/emc/emc_vmax_iscsi.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8c9d8ec541e71fc0768e2fe65857e5805ede2503","unresolved":false,"context_lines":[{"line_number":78,"context_line":"              https://blueprints.launchpad.net/cinder/+spec/vmax-iscsi-multipath"},{"line_number":79,"context_line":"        2.5.0 - Attach and detach snapshot (blueprint vmax-attach-snapshot)"},{"line_number":80,"context_line":"              - MVs and SGs not reflecting correct protocol (bug #1640222)"},{"line_number":81,"context_line":"              - Storage assisted volume migration (bp vmax-volume-migration)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    \"\"\""},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"ba5201f7_43b3040a","line":81,"updated":"2017-01-07 04:34:53.000000000","message":"Storage assisted volume migration via volume retype","commit_id":"bee89326224f1b0239795d4a89661153df666ef2"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"e13476458248d1c6e5cb2aeb9b58eb499dcdd5c5","unresolved":false,"context_lines":[{"line_number":78,"context_line":"              https://blueprints.launchpad.net/cinder/+spec/vmax-iscsi-multipath"},{"line_number":79,"context_line":"        2.5.0 - Attach and detach snapshot (blueprint vmax-attach-snapshot)"},{"line_number":80,"context_line":"              - MVs and SGs not reflecting correct protocol (bug #1640222)"},{"line_number":81,"context_line":"              - Storage assisted volume migration (bp vmax-volume-migration)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    \"\"\""},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"ba5201f7_ffb70bf3","line":81,"in_reply_to":"ba5201f7_43b3040a","updated":"2017-01-09 11:30:09.000000000","message":"Sure","commit_id":"bee89326224f1b0239795d4a89661153df666ef2"}],"cinder/volume/drivers/emc/emc_vmax_utils.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"87a01f9c79967de2f82dbc54e6e727e661cbd34b","unresolved":false,"context_lines":[{"line_number":2015,"context_line":"        myList \u003d []"},{"line_number":2016,"context_line":"        kwargs \u003d {}"},{"line_number":2017,"context_line":"        connargs \u003d {}"},{"line_number":2018,"context_line":"        myFile \u003d open(fileName, \u0027r\u0027)"},{"line_number":2019,"context_line":"        data \u003d myFile.read()"},{"line_number":2020,"context_line":"        myFile.close()"},{"line_number":2021,"context_line":"        dom \u003d minidom.parseString(data)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_88c042e2","line":2018,"updated":"2016-12-14 11:51:51.000000000","message":"Please, use \u0027with\u0027 statement to read from file:\n\nwith open(fileName, \u0027r\u0027) as my_file:\n    data \u003d my_file.read()","commit_id":"f3c5de14a94ccb73012d1df4268dfd95ac868e4c"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"5de3d045107e41c8fe2201de807dfbfb77e97718","unresolved":false,"context_lines":[{"line_number":2015,"context_line":"        myList \u003d []"},{"line_number":2016,"context_line":"        kwargs \u003d {}"},{"line_number":2017,"context_line":"        connargs \u003d {}"},{"line_number":2018,"context_line":"        myFile \u003d open(fileName, \u0027r\u0027)"},{"line_number":2019,"context_line":"        data \u003d myFile.read()"},{"line_number":2020,"context_line":"        myFile.close()"},{"line_number":2021,"context_line":"        dom \u003d minidom.parseString(data)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_e2a9217d","line":2018,"in_reply_to":"1a6eadb0_88c042e2","updated":"2016-12-19 10:11:24.000000000","message":"Will do.  Thank you.","commit_id":"f3c5de14a94ccb73012d1df4268dfd95ac868e4c"}],"releasenotes/notes/vmax-volume-migration-992c8c68e2207bbc.yaml":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"69963f608c81f3f58fdb4d5442de1375f33d4dd7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"features:"},{"line_number":2,"context_line":"   VMAX driver - Storage assisted volume migration."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"1a6eadb0_f668f589","line":2,"updated":"2016-12-19 14:50:19.000000000","message":"This release note format is wrong.  Please follow the following example.  Need \"---\" on the first line and \"-\" should be in the beginning of the note.\n\nhttps://review.openstack.org/#/c/412445/2/releasenotes/notes/vmax-clone-cg-09fce492931c957f.yaml","commit_id":"f3c5de14a94ccb73012d1df4268dfd95ac868e4c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"acba512af1664ff77a2b800c646755f82b86445e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Storage assisted volume migration for the VMAX driver."}],"source_content_type":"text/x-yaml","patch_set":24,"id":"da4df55a_799cbbc0","line":3,"updated":"2016-12-23 21:14:14.000000000","message":"Add support for storage assisted volume migration during volume retype in the VMAX driver.","commit_id":"d8bf9a5d2b2e8fb9c0f39d10abe4ecb888b058a7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8c9d8ec541e71fc0768e2fe65857e5805ede2503","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Storage assisted volume migration for the VMAX driver."}],"source_content_type":"text/x-yaml","patch_set":30,"id":"ba5201f7_e3eb18da","line":3,"updated":"2017-01-07 04:34:53.000000000","message":"Storage assisted volume migration from one Pool/Workload/SLO combination to another in the same array via volume retype for the VMAX driver. Both VMAX3 All Flash and Hybrid arrays are supported. VMAX2 is not supported.","commit_id":"bee89326224f1b0239795d4a89661153df666ef2"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"e13476458248d1c6e5cb2aeb9b58eb499dcdd5c5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Storage assisted volume migration for the VMAX driver."}],"source_content_type":"text/x-yaml","patch_set":30,"id":"ba5201f7_bfa4a3b9","line":3,"in_reply_to":"ba5201f7_e3eb18da","updated":"2017-01-09 11:30:09.000000000","message":"I will change","commit_id":"bee89326224f1b0239795d4a89661153df666ef2"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bbe642ebbd04a7e53a4eb14df177b84084a95308","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Storage assisted volume migration from one Pool/SLO/Workload combination to another, on the same array, via retype, for the VMAX driver."},{"line_number":4,"context_line":"    Both All Flash and Hybrid VMAX3 arrays are supported.  VMAX2 is not supported."}],"source_content_type":"text/x-yaml","patch_set":31,"id":"ba5201f7_8b4a3e54","line":3,"updated":"2017-01-09 13:59:33.000000000","message":"This line is too long.  Please wrap it.","commit_id":"3aba79f5ed6d93f4a201dffe090ead8753eee47c"}]}
