)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"57d90186f462a43f80cf4313eef1946e1d775df5","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-04-18 23:00:25 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"EMC VMAX - QOS support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I78c454692c4f7ddc7a5fa863205bcc68323bfa4b"},{"line_number":10,"context_line":"Implements: blueprint vmax-qos"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9abb7d3a_f5c40260","line":8,"updated":"2016-05-31 01:35:21.000000000","message":"Can you add a brief description here?\n\nAlso add a DocImpact flag above the Change-Id.","commit_id":"91dc7983eeddee2bc14ffdab3378566f85c1630d"}],"cinder/tests/unit/test_emc_vmax.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"57d90186f462a43f80cf4313eef1946e1d775df5","unresolved":false,"context_lines":[{"line_number":6082,"context_line":"        \u0027get_volume_type_qos_specs\u0027,"},{"line_number":6083,"context_line":"        return_value\u003d{\u0027qos_specs\u0027: None})"},{"line_number":6084,"context_line":"    def test_create_CG_v3_success("},{"line_number":6085,"context_line":"            self, _mock_volume_type, _mock_storage_system, _mock_qos):"},{"line_number":6086,"context_line":"        self.driver.create_consistencygroup("},{"line_number":6087,"context_line":"            self.data.test_ctxt, self.data.test_volume_CG_v3)"},{"line_number":6088,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_f59b6270","line":6085,"updated":"2016-05-31 01:35:21.000000000","message":"The parameter order is wrong. \"_mock_qos\" should be before \"_mock_volume_type\".  The order of the mock parameters should be in reverse of the mock patch objects.","commit_id":"91dc7983eeddee2bc14ffdab3378566f85c1630d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"57d90186f462a43f80cf4313eef1946e1d775df5","unresolved":false,"context_lines":[{"line_number":6108,"context_line":"        return_value\u003d{\u0027qos_specs\u0027: None})"},{"line_number":6109,"context_line":"    def test_delete_CG_no_volumes_v3_success("},{"line_number":6110,"context_line":"            self, _mock_volume_type, _mock_storage_system,"},{"line_number":6111,"context_line":"            _mock_db_volumes, _mock_members, mock_qos):"},{"line_number":6112,"context_line":"        self.driver.delete_consistencygroup("},{"line_number":6113,"context_line":"            self.data.test_ctxt, self.data.test_CG, [])"},{"line_number":6114,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_1578a629","line":6111,"updated":"2016-05-31 01:35:21.000000000","message":"This is wrong too.","commit_id":"91dc7983eeddee2bc14ffdab3378566f85c1630d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"57d90186f462a43f80cf4313eef1946e1d775df5","unresolved":false,"context_lines":[{"line_number":6125,"context_line":"        \u0027get_volume_type_qos_specs\u0027,"},{"line_number":6126,"context_line":"        return_value\u003d{\u0027qos_specs\u0027: None})"},{"line_number":6127,"context_line":"    def test_delete_CG_with_volumes_v3_success("},{"line_number":6128,"context_line":"            self, _mock_volume_type, _mock_storage_system, _mock_qos):"},{"line_number":6129,"context_line":"        self.driver.delete_consistencygroup("},{"line_number":6130,"context_line":"            self.data.test_ctxt, self.data.test_CG, [])"},{"line_number":6131,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_55906e43","line":6128,"updated":"2016-05-31 01:35:21.000000000","message":"Same","commit_id":"91dc7983eeddee2bc14ffdab3378566f85c1630d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"57d90186f462a43f80cf4313eef1946e1d775df5","unresolved":false,"context_lines":[{"line_number":6206,"context_line":"        return_value\u003d{\u0027qos_specs\u0027: None})"},{"line_number":6207,"context_line":"    def test_create_cgsnapshot_v3_success("},{"line_number":6208,"context_line":"            self, _mock_volume_type, _mock_storage, _mock_cg, _mock_members,"},{"line_number":6209,"context_line":"            mock_rg, mock_qos):"},{"line_number":6210,"context_line":"        provisionv3 \u003d self.driver.common.provisionv3"},{"line_number":6211,"context_line":"        provisionv3.create_group_replica \u003d mock.Mock(return_value\u003d(0, None))"},{"line_number":6212,"context_line":"        self.driver.create_cgsnapshot("}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_35932a51","line":6209,"updated":"2016-05-31 01:35:21.000000000","message":"Same","commit_id":"91dc7983eeddee2bc14ffdab3378566f85c1630d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"57d90186f462a43f80cf4313eef1946e1d775df5","unresolved":false,"context_lines":[{"line_number":6231,"context_line":"        \u0027get_volume_type_qos_specs\u0027,"},{"line_number":6232,"context_line":"        return_value\u003d{\u0027qos_specs\u0027: None})"},{"line_number":6233,"context_line":"    def test_delete_cgsnapshot_v3_success("},{"line_number":6234,"context_line":"            self, _mock_volume_type, _mock_storage, _mock_qos):"},{"line_number":6235,"context_line":"        self.driver.delete_cgsnapshot("},{"line_number":6236,"context_line":"            self.data.test_ctxt, self.data.test_CG_snapshot, [])"},{"line_number":6237,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_d5cbbe51","line":6234,"updated":"2016-05-31 01:35:21.000000000","message":"Same.\n\nPlease fix all the mock orders below.","commit_id":"91dc7983eeddee2bc14ffdab3378566f85c1630d"}],"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":"1daa07b6a3451af353daffbf9a9c2b79615416b4","unresolved":false,"context_lines":[{"line_number":7923,"context_line":""},{"line_number":7924,"context_line":"        self.driver.common.utils.update_storagegroup_qos("},{"line_number":7925,"context_line":"            conn, storageGroupInstanceName, extraSpecs)"},{"line_number":7926,"context_line":"        self.assertIsNotNone(storageGroupInstanceName)"},{"line_number":7927,"context_line":""},{"line_number":7928,"context_line":""},{"line_number":7929,"context_line":"class EMCVMAXCommonTest(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_6f69c28b","line":7926,"updated":"2016-07-27 16:03:03.000000000","message":"We should also assert for the new values set in storageGroupInstanceName.","commit_id":"9f310695ae6e78a9d8c64ea16bbf0649a5dd19c9"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"5179e61999c2fefebf33af8c5e152e52ad87e0de","unresolved":false,"context_lines":[{"line_number":7923,"context_line":""},{"line_number":7924,"context_line":"        self.driver.common.utils.update_storagegroup_qos("},{"line_number":7925,"context_line":"            conn, storageGroupInstanceName, extraSpecs)"},{"line_number":7926,"context_line":"        self.assertIsNotNone(storageGroupInstanceName)"},{"line_number":7927,"context_line":""},{"line_number":7928,"context_line":""},{"line_number":7929,"context_line":"class EMCVMAXCommonTest(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_670ccc3b","line":7926,"in_reply_to":"bacf61ea_6f69c28b","updated":"2016-07-29 16:42:30.000000000","message":"We will.  Thanks","commit_id":"9f310695ae6e78a9d8c64ea16bbf0649a5dd19c9"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"cc09e984dea426da8bf9516d1456444491fe41a2","unresolved":false,"context_lines":[{"line_number":7982,"context_line":"        self.assertEqual("},{"line_number":7983,"context_line":"            6000, storageGroupInstanceName[\u0027EMCMaximumIO\u0027])"},{"line_number":7984,"context_line":"        self.assertEqual("},{"line_number":7985,"context_line":"            5000, storageGroupInstanceName[\u0027EMCMaximumBandwidth\u0027])"},{"line_number":7986,"context_line":"        self.assertEqual("},{"line_number":7987,"context_line":"            1, storageGroupInstanceName[\u0027EMCMaxIODynamicDistributionType\u0027])"},{"line_number":7988,"context_line":"        self.assertEqual(\u0027CIM_DeviceMaskingGroup\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"9ad45d7e_e2ae2384","line":7985,"updated":"2016-08-09 13:53:18.000000000","message":"Looks like there is some problem with this test because this should be 6000 if you are asserting for the changes in storageGroupInstanceName.\n\nYou may want to set the expectation of conn.GetInstance appropriately.\n\nIMO, there is no value in asserting the values in the input.\n\nAlso, we need to assert that conn.ModifyInstance is called with appropriate arguments.","commit_id":"10c9761aff200560a68d4bff6c67effa0ed6acf3"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"61a47ad81615c9bf985110fc7c7d5169ae856d26","unresolved":false,"context_lines":[{"line_number":7982,"context_line":"        self.assertEqual("},{"line_number":7983,"context_line":"            6000, storageGroupInstanceName[\u0027EMCMaximumIO\u0027])"},{"line_number":7984,"context_line":"        self.assertEqual("},{"line_number":7985,"context_line":"            5000, storageGroupInstanceName[\u0027EMCMaximumBandwidth\u0027])"},{"line_number":7986,"context_line":"        self.assertEqual("},{"line_number":7987,"context_line":"            1, storageGroupInstanceName[\u0027EMCMaxIODynamicDistributionType\u0027])"},{"line_number":7988,"context_line":"        self.assertEqual(\u0027CIM_DeviceMaskingGroup\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"9ad45d7e_9607a080","line":7985,"in_reply_to":"9ad45d7e_e2ae2384","updated":"2016-08-09 16:00:03.000000000","message":"Apologies, we should not have made these changes you requested. storageGroupInstanceName does not have these attributes.  We will revert back.","commit_id":"10c9761aff200560a68d4bff6c67effa0ed6acf3"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"d3a58b202b43ba8388012eda7a7bf17c26e1964b","unresolved":false,"context_lines":[{"line_number":724,"context_line":""},{"line_number":725,"context_line":"    def ModifyInstance(self, objectpath, PropertyList\u003dNone):"},{"line_number":726,"context_line":"        if PropertyList:"},{"line_number":727,"context_line":"            storageGroupInstance \u003d {"},{"line_number":728,"context_line":"                \u0027CreationClassName\u0027: \u0027CIM_DeviceMaskingGroup\u0027,"},{"line_number":729,"context_line":"                \u0027EMCMaximumIO\u0027: 6000,"},{"line_number":730,"context_line":"                \u0027EMCMaximumBandwidth\u0027: 6000,"},{"line_number":731,"context_line":"                \u0027EMCMaxIODynamicDistributionType\u0027: 1}"},{"line_number":732,"context_line":"            return storageGroupInstance"},{"line_number":733,"context_line":"        else:"},{"line_number":734,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":14,"id":"9ad45d7e_652e7d44","line":731,"range":{"start_line":727,"start_character":11,"end_line":731,"end_character":53},"updated":"2016-08-10 14:05:35.000000000","message":"Do we need to set this? Can we simply return objectpath? I think we should verify that the logic which sets values after comparing with the qos spec is correct. By doing this, we are not checking that logic. I may be totally wrong here.\n\nAnother option is to assert for the conn.ModifyInstance call with the expected arguments.","commit_id":"0c64c2725dd92ff98d0bdf6a7be3703b1d74fb8c"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"45a7d8771fe7f5398d966069826777003e71b785","unresolved":false,"context_lines":[{"line_number":724,"context_line":""},{"line_number":725,"context_line":"    def ModifyInstance(self, objectpath, PropertyList\u003dNone):"},{"line_number":726,"context_line":"        if PropertyList:"},{"line_number":727,"context_line":"            storageGroupInstance \u003d {"},{"line_number":728,"context_line":"                \u0027CreationClassName\u0027: \u0027CIM_DeviceMaskingGroup\u0027,"},{"line_number":729,"context_line":"                \u0027EMCMaximumIO\u0027: 6000,"},{"line_number":730,"context_line":"                \u0027EMCMaximumBandwidth\u0027: 6000,"},{"line_number":731,"context_line":"                \u0027EMCMaxIODynamicDistributionType\u0027: 1}"},{"line_number":732,"context_line":"            return storageGroupInstance"},{"line_number":733,"context_line":"        else:"},{"line_number":734,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":14,"id":"9ad45d7e_c30abc78","line":731,"range":{"start_line":727,"start_character":11,"end_line":731,"end_character":53},"in_reply_to":"9ad45d7e_652e7d44","updated":"2016-08-10 15:49:01.000000000","message":"Thanks for the great feedback BTW, we are learning a lot, much appreciated.","commit_id":"0c64c2725dd92ff98d0bdf6a7be3703b1d74fb8c"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"9dfe0fada423551949c90012dad671f905d27745","unresolved":false,"context_lines":[{"line_number":724,"context_line":""},{"line_number":725,"context_line":"    def ModifyInstance(self, objectpath, PropertyList\u003dNone):"},{"line_number":726,"context_line":"        if PropertyList:"},{"line_number":727,"context_line":"            storageGroupInstance \u003d {"},{"line_number":728,"context_line":"                \u0027CreationClassName\u0027: \u0027CIM_DeviceMaskingGroup\u0027,"},{"line_number":729,"context_line":"                \u0027EMCMaximumIO\u0027: 6000,"},{"line_number":730,"context_line":"                \u0027EMCMaximumBandwidth\u0027: 6000,"},{"line_number":731,"context_line":"                \u0027EMCMaxIODynamicDistributionType\u0027: 1}"},{"line_number":732,"context_line":"            return storageGroupInstance"},{"line_number":733,"context_line":"        else:"},{"line_number":734,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":14,"id":"9ad45d7e_a3122807","line":731,"range":{"start_line":727,"start_character":11,"end_line":731,"end_character":53},"in_reply_to":"9ad45d7e_652e7d44","updated":"2016-08-10 15:45:01.000000000","message":"This is just dummy data bringing back what we expect to be returned from a modify.  We should possibly tighten the code here but it is not currently breaking anything else.  \nWe wont update it just now as we are anxious to get this merged and CI is successful.  Hope this is OK.","commit_id":"0c64c2725dd92ff98d0bdf6a7be3703b1d74fb8c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31d6da50372dd11f7f7d2f4ffed2e5be0e2f820c","unresolved":false,"context_lines":[{"line_number":724,"context_line":""},{"line_number":725,"context_line":"    def ModifyInstance(self, objectpath, PropertyList\u003dNone):"},{"line_number":726,"context_line":"        if PropertyList:"},{"line_number":727,"context_line":"            storageGroupInstance \u003d {"},{"line_number":728,"context_line":"                \u0027CreationClassName\u0027: \u0027CIM_DeviceMaskingGroup\u0027,"},{"line_number":729,"context_line":"                \u0027EMCMaximumIO\u0027: 6000,"},{"line_number":730,"context_line":"                \u0027EMCMaximumBandwidth\u0027: 6000,"},{"line_number":731,"context_line":"                \u0027EMCMaxIODynamicDistributionType\u0027: 1}"},{"line_number":732,"context_line":"            return storageGroupInstance"},{"line_number":733,"context_line":"        else:"},{"line_number":734,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":14,"id":"9ad45d7e_e137e14a","line":731,"range":{"start_line":727,"start_character":11,"end_line":731,"end_character":53},"in_reply_to":"9ad45d7e_c30abc78","updated":"2016-08-11 02:18:32.000000000","message":"Helen,\n\nSince you need to rebase this patch to resolve the merge conflict, please address Vipin\u0027s comments too.","commit_id":"0c64c2725dd92ff98d0bdf6a7be3703b1d74fb8c"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"bfa60729db89d5c7214aad46e435a7f88e6e7909","unresolved":false,"context_lines":[{"line_number":729,"context_line":"        try:"},{"line_number":730,"context_line":"            name \u003d objectpath[\u0027CreationClassName\u0027]"},{"line_number":731,"context_line":"        except KeyError:"},{"line_number":732,"context_line":"            pass"},{"line_number":733,"context_line":"        if name \u003d\u003d \u0027CIM_DeviceMaskingGroup\u0027:"},{"line_number":734,"context_line":"            storageGroupInstance \u003d {"},{"line_number":735,"context_line":"                \u0027CreationClassName\u0027: \u0027CIM_DeviceMaskingGroup\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"9ad45d7e_650bead6","line":732,"updated":"2016-08-11 10:55:12.000000000","message":"Please define \u0027name\u0027 before try or here, else it may result in UnboundLocalError in line 733.","commit_id":"0053ee3656880f214b20461eefea81f16cc0fe83"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"bfa60729db89d5c7214aad46e435a7f88e6e7909","unresolved":false,"context_lines":[{"line_number":8024,"context_line":"        self.assertIsNone(max_subscription_percent_float)"},{"line_number":8025,"context_line":""},{"line_number":8026,"context_line":"    def test_update_storage_QOS(self):"},{"line_number":8027,"context_line":"        conn \u003d FakeEcomConnection()"},{"line_number":8028,"context_line":"        pywbem \u003d mock.Mock()"},{"line_number":8029,"context_line":"        pywbem.cim_obj \u003d mock.Mock()"},{"line_number":8030,"context_line":"        pywbem.cim_obj.CIMInstance \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":15,"id":"9ad45d7e_852edef8","line":8027,"updated":"2016-08-11 10:55:12.000000000","message":"How about this?\n\n\nconn \u003d FakeEcomConnection()\nconn.ModifyInstance \u003d mock.Mock()\n\n\nThen after line 8060,\n\n\nconn.ModifyInstance.assertCalledOnceWith(expected_storage_group_instance, PropertyList\u003dexpected_property_list)\n\n\nWe can also revert the changes in ModifyInstance in this file. In fact this is what I meant in the previous patch sets.","commit_id":"0053ee3656880f214b20461eefea81f16cc0fe83"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"4525bcd54318607e9601a16ca25befd22c235e5e","unresolved":false,"context_lines":[{"line_number":8024,"context_line":"        self.assertIsNone(max_subscription_percent_float)"},{"line_number":8025,"context_line":""},{"line_number":8026,"context_line":"    def test_update_storage_QOS(self):"},{"line_number":8027,"context_line":"        conn \u003d FakeEcomConnection()"},{"line_number":8028,"context_line":"        pywbem \u003d mock.Mock()"},{"line_number":8029,"context_line":"        pywbem.cim_obj \u003d mock.Mock()"},{"line_number":8030,"context_line":"        pywbem.cim_obj.CIMInstance \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":15,"id":"9ad45d7e_c511f65e","line":8027,"in_reply_to":"9ad45d7e_852edef8","updated":"2016-08-11 11:00:49.000000000","message":"Sure, sounds good.","commit_id":"0053ee3656880f214b20461eefea81f16cc0fe83"}],"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":"1daa07b6a3451af353daffbf9a9c2b79615416b4","unresolved":false,"context_lines":[{"line_number":1741,"context_line":"            else:"},{"line_number":1742,"context_line":"                # V2 extra specs"},{"line_number":1743,"context_line":"                extraSpecs \u003d self._set_v2_extra_specs(extraSpecs, poolRecord)"},{"line_number":1744,"context_line":"            if (\u0027qos_specs\u0027 in qosSpecs and qosSpecs[\u0027qos_specs\u0027] is not None"},{"line_number":1745,"context_line":"                    and qosSpecs[\u0027qos_specs\u0027][\u0027consumer\u0027] !\u003d \"front-end\"):"},{"line_number":1746,"context_line":"                extraSpecs[\u0027qos\u0027] \u003d qosSpecs[\u0027qos_specs\u0027][\u0027specs\u0027]"},{"line_number":1747,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_bd177353","line":1744,"range":{"start_line":1744,"start_character":16,"end_line":1744,"end_character":77},"updated":"2016-07-27 16:03:03.000000000","message":"nit: can be replaced with qosSpecs.get(\u0027qos_spec\u0027).","commit_id":"9f310695ae6e78a9d8c64ea16bbf0649a5dd19c9"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"5179e61999c2fefebf33af8c5e152e52ad87e0de","unresolved":false,"context_lines":[{"line_number":1741,"context_line":"            else:"},{"line_number":1742,"context_line":"                # V2 extra specs"},{"line_number":1743,"context_line":"                extraSpecs \u003d self._set_v2_extra_specs(extraSpecs, poolRecord)"},{"line_number":1744,"context_line":"            if (\u0027qos_specs\u0027 in qosSpecs and qosSpecs[\u0027qos_specs\u0027] is not None"},{"line_number":1745,"context_line":"                    and qosSpecs[\u0027qos_specs\u0027][\u0027consumer\u0027] !\u003d \"front-end\"):"},{"line_number":1746,"context_line":"                extraSpecs[\u0027qos\u0027] \u003d qosSpecs[\u0027qos_specs\u0027][\u0027specs\u0027]"},{"line_number":1747,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_272db495","line":1744,"range":{"start_line":1744,"start_character":16,"end_line":1744,"end_character":77},"in_reply_to":"bacf61ea_bd177353","updated":"2016-07-29 16:42:30.000000000","message":"We will. Thanks","commit_id":"9f310695ae6e78a9d8c64ea16bbf0649a5dd19c9"}],"cinder/volume/drivers/emc/emc_vmax_utils.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"57d90186f462a43f80cf4313eef1946e1d775df5","unresolved":false,"context_lines":[{"line_number":1090,"context_line":"                qosSpecs \u003d volume_types.get_volume_type_qos_specs(type_id)"},{"line_number":1091,"context_line":""},{"line_number":1092,"context_line":"        except Exception:"},{"line_number":1093,"context_line":"            pass"},{"line_number":1094,"context_line":""},{"line_number":1095,"context_line":"        return qosSpecs"},{"line_number":1096,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_55050e78","line":1093,"updated":"2016-05-31 01:35:21.000000000","message":"Should log an info or warning if there is an error here.","commit_id":"91dc7983eeddee2bc14ffdab3378566f85c1630d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"57d90186f462a43f80cf4313eef1946e1d775df5","unresolved":false,"context_lines":[{"line_number":2612,"context_line":"    def update_storagegroup_qos(self, conn, storagegroup, extraspecs):"},{"line_number":2613,"context_line":"        \"\"\"Update the storagegroupinstance with qos details."},{"line_number":2614,"context_line":""},{"line_number":2615,"context_line":"           If MaxIOPS or maxMBPS is in extraspecs, then DistributionType can be"},{"line_number":2616,"context_line":"           modified in addition to MaxIOPS or/and maxMBPS"},{"line_number":2617,"context_line":"           If MaxIOPS or maxMBPS is NOT in extraspecs, we check to see if"},{"line_number":2618,"context_line":"           either is set in StorageGroup. If so, then DistributionType can be"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_15f42684","line":2615,"updated":"2016-05-31 01:35:21.000000000","message":"This paragraph should be at the same indentation level as the first docstring line.","commit_id":"91dc7983eeddee2bc14ffdab3378566f85c1630d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fc9eff79767a3116a65f73ef1a086d12d82c8262","unresolved":false,"context_lines":[{"line_number":1089,"context_line":"            if type_id is not None:"},{"line_number":1090,"context_line":"                qosSpecs \u003d volume_types.get_volume_type_qos_specs(type_id)"},{"line_number":1091,"context_line":""},{"line_number":1092,"context_line":"        except Exception:"},{"line_number":1093,"context_line":"            pass"},{"line_number":1094,"context_line":""},{"line_number":1095,"context_line":"        return qosSpecs"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_a0025b3c","line":1092,"updated":"2016-07-09 17:29:26.000000000","message":"Can you log an info message here?","commit_id":"cf5b5c718f04be15686a72154932d9f4be9fab0d"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"ff7a2a78602aa3bcb84aa954f7f78676a920904b","unresolved":false,"context_lines":[{"line_number":1089,"context_line":"            if type_id is not None:"},{"line_number":1090,"context_line":"                qosSpecs \u003d volume_types.get_volume_type_qos_specs(type_id)"},{"line_number":1091,"context_line":""},{"line_number":1092,"context_line":"        except Exception:"},{"line_number":1093,"context_line":"            pass"},{"line_number":1094,"context_line":""},{"line_number":1095,"context_line":"        return qosSpecs"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_e271dd45","line":1092,"in_reply_to":"1aa78d24_a0025b3c","updated":"2016-07-11 14:55:16.000000000","message":"Sure.","commit_id":"cf5b5c718f04be15686a72154932d9f4be9fab0d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fc9eff79767a3116a65f73ef1a086d12d82c8262","unresolved":false,"context_lines":[{"line_number":2620,"context_line":""},{"line_number":2621,"context_line":"        :param conn: connection to the ecom server"},{"line_number":2622,"context_line":"        :param storagegroup: the storagegroup instance name"},{"line_number":2623,"context_line":"        :param newName: new ElementName of the storagegroup"},{"line_number":2624,"context_line":"        :returns: storagegroupInstance after update"},{"line_number":2625,"context_line":"        \"\"\""},{"line_number":2626,"context_line":"        if type(storagegroup) is pywbem.cim_obj.CIMInstance:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_80fd9f3d","line":2623,"updated":"2016-07-09 17:29:26.000000000","message":"The third param is \"extraspecs\" not \"newName\".","commit_id":"cf5b5c718f04be15686a72154932d9f4be9fab0d"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"ff7a2a78602aa3bcb84aa954f7f78676a920904b","unresolved":false,"context_lines":[{"line_number":2620,"context_line":""},{"line_number":2621,"context_line":"        :param conn: connection to the ecom server"},{"line_number":2622,"context_line":"        :param storagegroup: the storagegroup instance name"},{"line_number":2623,"context_line":"        :param newName: new ElementName of the storagegroup"},{"line_number":2624,"context_line":"        :returns: storagegroupInstance after update"},{"line_number":2625,"context_line":"        \"\"\""},{"line_number":2626,"context_line":"        if type(storagegroup) is pywbem.cim_obj.CIMInstance:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_c2a3019d","line":2623,"in_reply_to":"1aa78d24_80fd9f3d","updated":"2016-07-11 14:55:16.000000000","message":"Ok, we will change it.","commit_id":"cf5b5c718f04be15686a72154932d9f4be9fab0d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fc9eff79767a3116a65f73ef1a086d12d82c8262","unresolved":false,"context_lines":[{"line_number":2621,"context_line":"        :param conn: connection to the ecom server"},{"line_number":2622,"context_line":"        :param storagegroup: the storagegroup instance name"},{"line_number":2623,"context_line":"        :param newName: new ElementName of the storagegroup"},{"line_number":2624,"context_line":"        :returns: storagegroupInstance after update"},{"line_number":2625,"context_line":"        \"\"\""},{"line_number":2626,"context_line":"        if type(storagegroup) is pywbem.cim_obj.CIMInstance:"},{"line_number":2627,"context_line":"            storagegroupInstance \u003d storagegroup"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_c0f7a757","line":2624,"updated":"2016-07-09 17:29:26.000000000","message":"Does this function return anything?  I can\u0027t see it.","commit_id":"cf5b5c718f04be15686a72154932d9f4be9fab0d"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"ff7a2a78602aa3bcb84aa954f7f78676a920904b","unresolved":false,"context_lines":[{"line_number":2621,"context_line":"        :param conn: connection to the ecom server"},{"line_number":2622,"context_line":"        :param storagegroup: the storagegroup instance name"},{"line_number":2623,"context_line":"        :param newName: new ElementName of the storagegroup"},{"line_number":2624,"context_line":"        :returns: storagegroupInstance after update"},{"line_number":2625,"context_line":"        \"\"\""},{"line_number":2626,"context_line":"        if type(storagegroup) is pywbem.cim_obj.CIMInstance:"},{"line_number":2627,"context_line":"            storagegroupInstance \u003d storagegroup"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_e2bf1da8","line":2624,"in_reply_to":"1aa78d24_c0f7a757","updated":"2016-07-11 14:55:16.000000000","message":"You are correct.  It does not return anything","commit_id":"cf5b5c718f04be15686a72154932d9f4be9fab0d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"c418c50135c9ef00118f71fdfc7645b062fd3a77","unresolved":false,"context_lines":[{"line_number":1090,"context_line":"                qosSpecs \u003d volume_types.get_volume_type_qos_specs(type_id)"},{"line_number":1091,"context_line":""},{"line_number":1092,"context_line":"        except Exception:"},{"line_number":1093,"context_line":"            pass"},{"line_number":1094,"context_line":"            LOG.info(_LI(\"Unable to get QoS specifications.\"))"},{"line_number":1095,"context_line":""},{"line_number":1096,"context_line":"        return qosSpecs"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_2170d171","line":1093,"range":{"start_line":1093,"start_character":12,"end_line":1093,"end_character":16},"updated":"2016-07-12 11:32:58.000000000","message":"\"pass\" is no need?","commit_id":"656c14108867c74aa4b2ac4b2df9957d831a3c2c"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"0a7a4a08dfa90c073d6dd002b93964c145ca40d7","unresolved":false,"context_lines":[{"line_number":1090,"context_line":"                qosSpecs \u003d volume_types.get_volume_type_qos_specs(type_id)"},{"line_number":1091,"context_line":""},{"line_number":1092,"context_line":"        except Exception:"},{"line_number":1093,"context_line":"            pass"},{"line_number":1094,"context_line":"            LOG.info(_LI(\"Unable to get QoS specifications.\"))"},{"line_number":1095,"context_line":""},{"line_number":1096,"context_line":"        return qosSpecs"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_fa2b0280","line":1093,"range":{"start_line":1093,"start_character":12,"end_line":1093,"end_character":16},"in_reply_to":"1aa78d24_2170d171","updated":"2016-07-12 15:09:51.000000000","message":"Agreed, I will remove it.","commit_id":"656c14108867c74aa4b2ac4b2df9957d831a3c2c"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"c418c50135c9ef00118f71fdfc7645b062fd3a77","unresolved":false,"context_lines":[{"line_number":1091,"context_line":""},{"line_number":1092,"context_line":"        except Exception:"},{"line_number":1093,"context_line":"            pass"},{"line_number":1094,"context_line":"            LOG.info(_LI(\"Unable to get QoS specifications.\"))"},{"line_number":1095,"context_line":""},{"line_number":1096,"context_line":"        return qosSpecs"},{"line_number":1097,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_010cb5ea","line":1094,"range":{"start_line":1094,"start_character":12,"end_line":1094,"end_character":20},"updated":"2016-07-12 11:32:58.000000000","message":"log level should be error?","commit_id":"656c14108867c74aa4b2ac4b2df9957d831a3c2c"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"0a7a4a08dfa90c073d6dd002b93964c145ca40d7","unresolved":false,"context_lines":[{"line_number":1091,"context_line":""},{"line_number":1092,"context_line":"        except Exception:"},{"line_number":1093,"context_line":"            pass"},{"line_number":1094,"context_line":"            LOG.info(_LI(\"Unable to get QoS specifications.\"))"},{"line_number":1095,"context_line":""},{"line_number":1096,"context_line":"        return qosSpecs"},{"line_number":1097,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_7aad52e8","line":1094,"range":{"start_line":1094,"start_character":12,"end_line":1094,"end_character":20},"in_reply_to":"1aa78d24_010cb5ea","updated":"2016-07-12 15:09:51.000000000","message":"No, it is not an error if there we cannot get QoS specs.","commit_id":"656c14108867c74aa4b2ac4b2df9957d831a3c2c"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0de2efc7b4cfd172b3f3fb7f915a5d14bff135d9","unresolved":false,"context_lines":[{"line_number":1091,"context_line":"                qosSpecs \u003d volume_types.get_volume_type_qos_specs(type_id)"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":"        except Exception:"},{"line_number":1094,"context_line":"            LOG.info(_LI(\"Unable to get QoS specifications.\"))"},{"line_number":1095,"context_line":""},{"line_number":1096,"context_line":"        return qosSpecs"},{"line_number":1097,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_3da7440c","line":1094,"range":{"start_line":1094,"start_character":12,"end_line":1094,"end_character":62},"updated":"2016-07-12 15:28:17.000000000","message":"If it\u0027s not an error, maybe warning is better? I think INFO is recorded normal information.","commit_id":"f110726dc58cd37371c325c0d89b76a1bd275fcf"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"1daa07b6a3451af353daffbf9a9c2b79615416b4","unresolved":false,"context_lines":[{"line_number":1090,"context_line":"            if type_id is not None:"},{"line_number":1091,"context_line":"                qosSpecs \u003d volume_types.get_volume_type_qos_specs(type_id)"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":"        except Exception:"},{"line_number":1094,"context_line":"            LOG.info(_LI(\"Unable to get QoS specifications.\"))"},{"line_number":1095,"context_line":""},{"line_number":1096,"context_line":"        return qosSpecs"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_9dc0afe2","line":1093,"updated":"2016-07-27 16:03:03.000000000","message":"Which statement would throw an exception? Is it line 1091? Then, we shouldn\u0027t ignore it.","commit_id":"9f310695ae6e78a9d8c64ea16bbf0649a5dd19c9"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"5179e61999c2fefebf33af8c5e152e52ad87e0de","unresolved":false,"context_lines":[{"line_number":1090,"context_line":"            if type_id is not None:"},{"line_number":1091,"context_line":"                qosSpecs \u003d volume_types.get_volume_type_qos_specs(type_id)"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":"        except Exception:"},{"line_number":1094,"context_line":"            LOG.info(_LI(\"Unable to get QoS specifications.\"))"},{"line_number":1095,"context_line":""},{"line_number":1096,"context_line":"        return qosSpecs"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_277bf48d","line":1093,"in_reply_to":"bacf61ea_9dc0afe2","updated":"2016-07-29 16:42:30.000000000","message":"I think if we are unable to get QoS specs for any reason then we intend to log it as info only.","commit_id":"9f310695ae6e78a9d8c64ea16bbf0649a5dd19c9"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"cc09e984dea426da8bf9516d1456444491fe41a2","unresolved":false,"context_lines":[{"line_number":1093,"context_line":"                qosSpecs \u003d volume_types.get_volume_type_qos_specs(type_id)"},{"line_number":1094,"context_line":""},{"line_number":1095,"context_line":"        except Exception:"},{"line_number":1096,"context_line":"            LOG.info(_LI(\"Unable to get QoS specifications.\"))"},{"line_number":1097,"context_line":""},{"line_number":1098,"context_line":"        return qosSpecs"},{"line_number":1099,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9ad45d7e_a73b9dd0","line":1096,"updated":"2016-08-09 13:53:18.000000000","message":"info -\u003e debug\n\nAlso, we can log the volume type id.","commit_id":"10c9761aff200560a68d4bff6c67effa0ed6acf3"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"61a47ad81615c9bf985110fc7c7d5169ae856d26","unresolved":false,"context_lines":[{"line_number":1093,"context_line":"                qosSpecs \u003d volume_types.get_volume_type_qos_specs(type_id)"},{"line_number":1094,"context_line":""},{"line_number":1095,"context_line":"        except Exception:"},{"line_number":1096,"context_line":"            LOG.info(_LI(\"Unable to get QoS specifications.\"))"},{"line_number":1097,"context_line":""},{"line_number":1098,"context_line":"        return qosSpecs"},{"line_number":1099,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9ad45d7e_9698401d","line":1096,"in_reply_to":"9ad45d7e_a73b9dd0","updated":"2016-08-09 16:00:03.000000000","message":"Yes, we can change this to debug.  We probably will not add the volumeTypeId as it could cause an exception within an exception as it may not be there.","commit_id":"10c9761aff200560a68d4bff6c67effa0ed6acf3"}],"releasenotes/notes/slug-goes-here-eb40ed35bd2f457d.yaml":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ffaea3deac7c5776a099011fc52d802d1e7bdde5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"  - Quality of Service is regulating the throughput/"},{"line_number":4,"context_line":"    bandwidth that you use in provisioning storage."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"bacf61ea_1b53af18","line":1,"updated":"2016-08-04 13:02:11.000000000","message":"Please rename this file to something meaningful, i.e., vmax-qos-support-eb40ed35bd2f457d.yaml.\n\nSee examples here: \n\nhttps://github.com/openstack/cinder/tree/master/releasenotes/notes","commit_id":"aefa1e756f2340fbd27a1e12b2ae19ce33a14e0b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ffaea3deac7c5776a099011fc52d802d1e7bdde5","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    A user might want to ensure that your critical"},{"line_number":6,"context_line":"    workloads get the best performance possible,"},{"line_number":7,"context_line":"    so you use Storage QoS to limit the throughput to"},{"line_number":8,"context_line":"    non-critical workloads."},{"line_number":9,"context_line":"features:"},{"line_number":10,"context_line":"  - QoS support for the VMAX3"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"bacf61ea_bbb0a344","line":8,"updated":"2016-08-04 13:02:11.000000000","message":"Please remove this section.","commit_id":"aefa1e756f2340fbd27a1e12b2ae19ce33a14e0b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ffaea3deac7c5776a099011fc52d802d1e7bdde5","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    so you use Storage QoS to limit the throughput to"},{"line_number":8,"context_line":"    non-critical workloads."},{"line_number":9,"context_line":"features:"},{"line_number":10,"context_line":"  - QoS support for the VMAX3"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"bacf61ea_b80d4940","line":10,"updated":"2016-08-04 13:02:11.000000000","message":"Add period at the end.","commit_id":"aefa1e756f2340fbd27a1e12b2ae19ce33a14e0b"}],"releasenotes/notes/vmax-qos-eb40ed35bd2f457d.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4d946b608b801fbdc3e99b82b37633dfed05bc8b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - QoS support for the VMAX."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3ac371cc_55689df5","line":3,"range":{"start_line":3,"start_character":21,"end_line":3,"end_character":28},"updated":"2016-08-15 20:45:31.000000000","message":"This could be better worded to at least say \"for EMC VMAX arrays\", but won\u0027t block on that.","commit_id":"a569e682f09867484906eea67a8301e6ce319925"}]}
