)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b982f646a15823a709390b307ce2cb3df9610a77","unresolved":false,"context_lines":[{"line_number":11,"context_line":"The supported qos specs are:"},{"line_number":12,"context_line":"* maxBWS, maximum bandwidth in MiB"},{"line_number":13,"context_line":"* maxIOPS, maximum IOPS"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Iec7ce170e152bff0429de1922b9ccc26822007c8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a30ddce_cd5f59e3","line":14,"updated":"2017-03-10 03:46:49.000000000","message":"Please add a blueprint and reference it here.","commit_id":"a83046f893ffc5a6b9c89e96882af33d2e4b73b0"}],"cinder/tests/unit/volume/drivers/dell_emc/vnx/test_client.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b982f646a15823a709390b307ce2cb3df9610a77","unresolved":false,"context_lines":[{"line_number":482,"context_line":"        qos_specs \u003d {\u0027id\u0027: \u0027qos\u0027, vnx_common.QOS_MAX_IOPS: 10,"},{"line_number":483,"context_line":"                     vnx_common.QOS_MAX_BWS: 100}"},{"line_number":484,"context_line":"        ioclasses \u003d client.get_ioclass(qos_specs)"},{"line_number":485,"context_line":"        self.assertEqual(len(ioclasses), 2)"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"    @res_mock.patch_client"},{"line_number":488,"context_line":"    def test_create_ioclass_iops(self, client, mocked):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_4dd0c91f","line":485,"range":{"start_line":485,"start_character":8,"end_line":485,"end_character":43},"updated":"2017-03-10 03:46:49.000000000","message":"self.assertEqual(2, len(ioclasses))","commit_id":"a83046f893ffc5a6b9c89e96882af33d2e4b73b0"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"4107bb4e1ae90a3c394453c9db2ce1782658ae51","unresolved":false,"context_lines":[{"line_number":482,"context_line":"        qos_specs \u003d {\u0027id\u0027: \u0027qos\u0027, vnx_common.QOS_MAX_IOPS: 10,"},{"line_number":483,"context_line":"                     vnx_common.QOS_MAX_BWS: 100}"},{"line_number":484,"context_line":"        ioclasses \u003d client.get_ioclass(qos_specs)"},{"line_number":485,"context_line":"        self.assertEqual(len(ioclasses), 2)"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"    @res_mock.patch_client"},{"line_number":488,"context_line":"    def test_create_ioclass_iops(self, client, mocked):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_b0a275ac","line":485,"range":{"start_line":485,"start_character":8,"end_line":485,"end_character":43},"in_reply_to":"9a30ddce_4dd0c91f","updated":"2017-03-10 08:32:04.000000000","message":"Done","commit_id":"a83046f893ffc5a6b9c89e96882af33d2e4b73b0"}],"cinder/tests/unit/volume/drivers/dell_emc/vnx/test_utils.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b982f646a15823a709390b307ce2cb3df9610a77","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                    common.QOS_MAX_BWS: 100, common.QOS_MAX_IOPS: 10}}}):"},{"line_number":220,"context_line":"            r \u003d utils.get_backend_qos_specs(volume)"},{"line_number":221,"context_line":"            self.assertIsNotNone(r)"},{"line_number":222,"context_line":"            self.assertEqual(r[common.QOS_MAX_BWS], 100)"},{"line_number":223,"context_line":"            self.assertEqual(r[common.QOS_MAX_IOPS], 10)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_adc30556","line":222,"range":{"start_line":222,"start_character":12,"end_line":222,"end_character":56},"updated":"2017-03-10 03:46:49.000000000","message":"reversed","commit_id":"a83046f893ffc5a6b9c89e96882af33d2e4b73b0"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"4107bb4e1ae90a3c394453c9db2ce1782658ae51","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                    common.QOS_MAX_BWS: 100, common.QOS_MAX_IOPS: 10}}}):"},{"line_number":220,"context_line":"            r \u003d utils.get_backend_qos_specs(volume)"},{"line_number":221,"context_line":"            self.assertIsNotNone(r)"},{"line_number":222,"context_line":"            self.assertEqual(r[common.QOS_MAX_BWS], 100)"},{"line_number":223,"context_line":"            self.assertEqual(r[common.QOS_MAX_IOPS], 10)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_909ad16c","line":222,"range":{"start_line":222,"start_character":12,"end_line":222,"end_character":56},"in_reply_to":"9a30ddce_adc30556","updated":"2017-03-10 08:32:04.000000000","message":"Done","commit_id":"a83046f893ffc5a6b9c89e96882af33d2e4b73b0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b982f646a15823a709390b307ce2cb3df9610a77","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            r \u003d utils.get_backend_qos_specs(volume)"},{"line_number":221,"context_line":"            self.assertIsNotNone(r)"},{"line_number":222,"context_line":"            self.assertEqual(r[common.QOS_MAX_BWS], 100)"},{"line_number":223,"context_line":"            self.assertEqual(r[common.QOS_MAX_IOPS], 10)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_0da97190","line":223,"range":{"start_line":223,"start_character":29,"end_line":223,"end_character":55},"updated":"2017-03-10 03:46:49.000000000","message":"Reversed.","commit_id":"a83046f893ffc5a6b9c89e96882af33d2e4b73b0"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"4107bb4e1ae90a3c394453c9db2ce1782658ae51","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            r \u003d utils.get_backend_qos_specs(volume)"},{"line_number":221,"context_line":"            self.assertIsNotNone(r)"},{"line_number":222,"context_line":"            self.assertEqual(r[common.QOS_MAX_BWS], 100)"},{"line_number":223,"context_line":"            self.assertEqual(r[common.QOS_MAX_IOPS], 10)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_b0899528","line":223,"range":{"start_line":223,"start_character":29,"end_line":223,"end_character":55},"in_reply_to":"9a30ddce_0da97190","updated":"2017-03-10 08:32:04.000000000","message":"Done","commit_id":"a83046f893ffc5a6b9c89e96882af33d2e4b73b0"}],"cinder/volume/drivers/dell_emc/vnx/adapter.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b982f646a15823a709390b307ce2cb3df9610a77","unresolved":false,"context_lines":[{"line_number":743,"context_line":"                self.max_over_subscription_ratio)"},{"line_number":744,"context_line":"            # Add replication v2.1 support"},{"line_number":745,"context_line":"            self.append_replication_stats(pool_stats)"},{"line_number":746,"context_line":"            pools_stats.append(pool_stats)"},{"line_number":747,"context_line":"        return pools_stats"},{"line_number":748,"context_line":""},{"line_number":749,"context_line":"    def append_replication_stats(self, stats):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_6dd02df7","line":746,"updated":"2017-03-10 03:46:49.000000000","message":"You need to set QoS_support to True in get_volume_stats.  Otherwise the scheduler won\u0027t take QoS into account when creating volumes.","commit_id":"a83046f893ffc5a6b9c89e96882af33d2e4b73b0"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"4107bb4e1ae90a3c394453c9db2ce1782658ae51","unresolved":false,"context_lines":[{"line_number":743,"context_line":"                self.max_over_subscription_ratio)"},{"line_number":744,"context_line":"            # Add replication v2.1 support"},{"line_number":745,"context_line":"            self.append_replication_stats(pool_stats)"},{"line_number":746,"context_line":"            pools_stats.append(pool_stats)"},{"line_number":747,"context_line":"        return pools_stats"},{"line_number":748,"context_line":""},{"line_number":749,"context_line":"    def append_replication_stats(self, stats):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_70ab9d75","line":746,"in_reply_to":"9a30ddce_6dd02df7","updated":"2017-03-10 08:32:04.000000000","message":"Thanks for the reminder.\n\nAdded.","commit_id":"a83046f893ffc5a6b9c89e96882af33d2e4b73b0"}],"cinder/volume/drivers/dell_emc/vnx/client.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"52a01872c718c44a276e2c0ed267d6c622bdd001","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    from storops.lib import tasks as storops_tasks"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from cinder import exception"},{"line_number":25,"context_line":"from cinder.i18n import _, _LW, _LE, _LI"},{"line_number":26,"context_line":"from cinder import utils as cinder_utils"},{"line_number":27,"context_line":"from cinder.volume.drivers.dell_emc.vnx import common"},{"line_number":28,"context_line":"from cinder.volume.drivers.dell_emc.vnx import const"}],"source_content_type":"text/x-python","patch_set":3,"id":"bff0334d_1e50fe31","line":25,"range":{"start_line":25,"start_character":27,"end_line":25,"end_character":40},"updated":"2017-04-07 15:11:27.000000000","message":"Remove all these.  Please submit a separate patch to remove all these.  In this patch, just don\u0027t add new ones.","commit_id":"9878cb5442f284958e99f85e18d563aa86a0a53f"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"c99f0fe59471b0e204d5f46f7e429543a0d150c3","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    from storops.lib import tasks as storops_tasks"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from cinder import exception"},{"line_number":25,"context_line":"from cinder.i18n import _, _LW, _LE, _LI"},{"line_number":26,"context_line":"from cinder import utils as cinder_utils"},{"line_number":27,"context_line":"from cinder.volume.drivers.dell_emc.vnx import common"},{"line_number":28,"context_line":"from cinder.volume.drivers.dell_emc.vnx import const"}],"source_content_type":"text/x-python","patch_set":3,"id":"bff0334d_254a74ab","line":25,"range":{"start_line":25,"start_character":27,"end_line":25,"end_character":40},"in_reply_to":"bff0334d_1e50fe31","updated":"2017-04-10 01:22:39.000000000","message":"Removed","commit_id":"9878cb5442f284958e99f85e18d563aa86a0a53f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"52a01872c718c44a276e2c0ed267d6c622bdd001","unresolved":false,"context_lines":[{"line_number":655,"context_line":"        \"\"\"Creates the policy and starts it.\"\"\""},{"line_number":656,"context_line":"        policy \u003d self.vnx.get_policy(name\u003dpolicy_name)"},{"line_number":657,"context_line":"        if not policy.existed:"},{"line_number":658,"context_line":"            LOG.info(_LI(\u0027Creating the policy: %s\u0027), policy_name)"},{"line_number":659,"context_line":"            policy \u003d self.vnx.create_policy(name\u003dpolicy_name)"},{"line_number":660,"context_line":"        return policy"},{"line_number":661,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bff0334d_feb8ba76","line":658,"range":{"start_line":658,"start_character":21,"end_line":658,"end_character":25},"updated":"2017-04-07 15:11:27.000000000","message":"Don\u0027t use _LI, _LE, _LW for log messages any more because the logs won\u0027t be translated.  We only need _(\"xxxx\") for raising exception messages.","commit_id":"9878cb5442f284958e99f85e18d563aa86a0a53f"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"c99f0fe59471b0e204d5f46f7e429543a0d150c3","unresolved":false,"context_lines":[{"line_number":655,"context_line":"        \"\"\"Creates the policy and starts it.\"\"\""},{"line_number":656,"context_line":"        policy \u003d self.vnx.get_policy(name\u003dpolicy_name)"},{"line_number":657,"context_line":"        if not policy.existed:"},{"line_number":658,"context_line":"            LOG.info(_LI(\u0027Creating the policy: %s\u0027), policy_name)"},{"line_number":659,"context_line":"            policy \u003d self.vnx.create_policy(name\u003dpolicy_name)"},{"line_number":660,"context_line":"        return policy"},{"line_number":661,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bff0334d_05c9b024","line":658,"range":{"start_line":658,"start_character":21,"end_line":658,"end_character":25},"in_reply_to":"bff0334d_feb8ba76","updated":"2017-04-10 01:22:39.000000000","message":"changed to _","commit_id":"9878cb5442f284958e99f85e18d563aa86a0a53f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"48fc06366edd777f473c3bf0b30b7e0216528863","unresolved":false,"context_lines":[{"line_number":615,"context_line":"            max_bws \u003d qos_specs[common.QOS_MAX_BWS]"},{"line_number":616,"context_line":"            max_iops \u003d qos_specs[common.QOS_MAX_IOPS]"},{"line_number":617,"context_line":"            if max_bws:"},{"line_number":618,"context_line":"                name \u003d \u0027{}-{}-{}\u0027.format(prefix, \u0027bws\u0027, max_bws)"},{"line_number":619,"context_line":"                class_bws \u003d self.vnx.get_ioclass(name\u003dname)"},{"line_number":620,"context_line":"                if not class_bws.existed:"},{"line_number":621,"context_line":"                    class_bws \u003d self.create_ioclass_bws(name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_605cb1ec","line":618,"range":{"start_line":618,"start_character":23,"end_line":618,"end_character":40},"updated":"2017-04-21 03:36:42.000000000","message":"%(val)s is the preferred formatting style.  Please change this.","commit_id":"d59437f6189fd129c71d10ec80fd951fd446e3fa"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"509feaaa594aa818ae124d0d3d9d4ccd561632f3","unresolved":false,"context_lines":[{"line_number":615,"context_line":"            max_bws \u003d qos_specs[common.QOS_MAX_BWS]"},{"line_number":616,"context_line":"            max_iops \u003d qos_specs[common.QOS_MAX_IOPS]"},{"line_number":617,"context_line":"            if max_bws:"},{"line_number":618,"context_line":"                name \u003d \u0027{}-{}-{}\u0027.format(prefix, \u0027bws\u0027, max_bws)"},{"line_number":619,"context_line":"                class_bws \u003d self.vnx.get_ioclass(name\u003dname)"},{"line_number":620,"context_line":"                if not class_bws.existed:"},{"line_number":621,"context_line":"                    class_bws \u003d self.create_ioclass_bws(name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_5a4e3d38","line":618,"range":{"start_line":618,"start_character":23,"end_line":618,"end_character":40},"in_reply_to":"7ffa3b31_605cb1ec","updated":"2017-04-21 10:20:50.000000000","message":"Done","commit_id":"d59437f6189fd129c71d10ec80fd951fd446e3fa"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"48fc06366edd777f473c3bf0b30b7e0216528863","unresolved":false,"context_lines":[{"line_number":622,"context_line":"                                                        max_bws)"},{"line_number":623,"context_line":"                ioclasses.append(class_bws)"},{"line_number":624,"context_line":"            if max_iops:"},{"line_number":625,"context_line":"                name \u003d \u0027{}-{}-{}\u0027.format(prefix, \u0027iops\u0027, max_iops)"},{"line_number":626,"context_line":"                class_iops \u003d self.vnx.get_ioclass(name\u003dname)"},{"line_number":627,"context_line":"                if not class_iops.existed:"},{"line_number":628,"context_line":"                    class_iops \u003d self.create_ioclass_iops(name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_40753563","line":625,"range":{"start_line":625,"start_character":23,"end_line":625,"end_character":40},"updated":"2017-04-21 03:36:42.000000000","message":"Same here.","commit_id":"d59437f6189fd129c71d10ec80fd951fd446e3fa"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"509feaaa594aa818ae124d0d3d9d4ccd561632f3","unresolved":false,"context_lines":[{"line_number":622,"context_line":"                                                        max_bws)"},{"line_number":623,"context_line":"                ioclasses.append(class_bws)"},{"line_number":624,"context_line":"            if max_iops:"},{"line_number":625,"context_line":"                name \u003d \u0027{}-{}-{}\u0027.format(prefix, \u0027iops\u0027, max_iops)"},{"line_number":626,"context_line":"                class_iops \u003d self.vnx.get_ioclass(name\u003dname)"},{"line_number":627,"context_line":"                if not class_iops.existed:"},{"line_number":628,"context_line":"                    class_iops \u003d self.create_ioclass_iops(name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_3a6371b4","line":625,"range":{"start_line":625,"start_character":23,"end_line":625,"end_character":40},"in_reply_to":"7ffa3b31_40753563","updated":"2017-04-21 10:20:50.000000000","message":"Done","commit_id":"d59437f6189fd129c71d10ec80fd951fd446e3fa"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"48fc06366edd777f473c3bf0b30b7e0216528863","unresolved":false,"context_lines":[{"line_number":654,"context_line":"        \"\"\"Creates the policy and starts it.\"\"\""},{"line_number":655,"context_line":"        policy \u003d self.vnx.get_policy(name\u003dpolicy_name)"},{"line_number":656,"context_line":"        if not policy.existed:"},{"line_number":657,"context_line":"            LOG.info(_(\u0027Creating the policy: %s\u0027), policy_name)"},{"line_number":658,"context_line":"            policy \u003d self.vnx.create_policy(name\u003dpolicy_name)"},{"line_number":659,"context_line":"        return policy"},{"line_number":660,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_404c1541","line":657,"range":{"start_line":657,"start_character":21,"end_line":657,"end_character":22},"updated":"2017-04-21 03:36:42.000000000","message":"_ should be removed because LOGs are not translated any more.\n\nLOG.info(\u0027Creating the policy: %s\u0027, policy_name)\n\n_ is only needed for a msg raised in the exception.","commit_id":"d59437f6189fd129c71d10ec80fd951fd446e3fa"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"509feaaa594aa818ae124d0d3d9d4ccd561632f3","unresolved":false,"context_lines":[{"line_number":654,"context_line":"        \"\"\"Creates the policy and starts it.\"\"\""},{"line_number":655,"context_line":"        policy \u003d self.vnx.get_policy(name\u003dpolicy_name)"},{"line_number":656,"context_line":"        if not policy.existed:"},{"line_number":657,"context_line":"            LOG.info(_(\u0027Creating the policy: %s\u0027), policy_name)"},{"line_number":658,"context_line":"            policy \u003d self.vnx.create_policy(name\u003dpolicy_name)"},{"line_number":659,"context_line":"        return policy"},{"line_number":660,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_5afcfdb3","line":657,"range":{"start_line":657,"start_character":21,"end_line":657,"end_character":22},"in_reply_to":"7ffa3b31_404c1541","updated":"2017-04-21 10:20:50.000000000","message":"Done","commit_id":"d59437f6189fd129c71d10ec80fd951fd446e3fa"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8411c3f0ecc692857f73b6fd517510f5041ce064","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        else:"},{"line_number":49,"context_line":"            # Quick exit wait_until when the lun is other state to avoid"},{"line_number":50,"context_line":"            # long-time timeout."},{"line_number":51,"context_line":"            msg \u003d (\u0027Volume %(name)s was created in VNX, \u0027"},{"line_number":52,"context_line":"                   \u0027but in %(state)s state.\u0027"},{"line_number":53,"context_line":"                   % {\u0027name\u0027: lun.name,"},{"line_number":54,"context_line":"                      \u0027state\u0027: lun_state})"},{"line_number":55,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7f231b9d_b0df68d5","line":53,"range":{"start_line":51,"start_character":1,"end_line":53,"end_character":39},"updated":"2017-06-19 21:56:47.000000000","message":"I missed this one earlier.  This one goes to the exception so it needs to have _().  The original one on the left hand side is correct.\n\nWe still need to have _() for raised exceptions.  Just no need for _LI, _LE, and _LW in the logs.","commit_id":"a5e740bdbdd9928f29feb45e7a5cac9fa9d98f36"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"0cfe88efb867664d86f1c8d243e114cee4e9e396","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        else:"},{"line_number":49,"context_line":"            # Quick exit wait_until when the lun is other state to avoid"},{"line_number":50,"context_line":"            # long-time timeout."},{"line_number":51,"context_line":"            msg \u003d (\u0027Volume %(name)s was created in VNX, \u0027"},{"line_number":52,"context_line":"                   \u0027but in %(state)s state.\u0027"},{"line_number":53,"context_line":"                   % {\u0027name\u0027: lun.name,"},{"line_number":54,"context_line":"                      \u0027state\u0027: lun_state})"},{"line_number":55,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7f231b9d_d69c196c","line":53,"range":{"start_line":51,"start_character":1,"end_line":53,"end_character":39},"in_reply_to":"7f231b9d_b0df68d5","updated":"2017-06-20 01:22:53.000000000","message":"Done","commit_id":"a5e740bdbdd9928f29feb45e7a5cac9fa9d98f36"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8411c3f0ecc692857f73b6fd517510f5041ce064","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                 naviseccli, sec_file, queue_path\u003dNone):"},{"line_number":83,"context_line":"        self.naviseccli \u003d naviseccli"},{"line_number":84,"context_line":"        if not storops:"},{"line_number":85,"context_line":"            msg \u003d \u0027storops Python library is not installed.\u0027"},{"line_number":86,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":87,"context_line":"        self.vnx \u003d storops.VNXSystem(ip\u003dip,"},{"line_number":88,"context_line":"                                     username\u003dusername,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f231b9d_d0a9c424","line":85,"range":{"start_line":85,"start_character":18,"end_line":85,"end_character":60},"updated":"2017-06-19 21:56:47.000000000","message":"Same here.  The original one is correct.","commit_id":"a5e740bdbdd9928f29feb45e7a5cac9fa9d98f36"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"0cfe88efb867664d86f1c8d243e114cee4e9e396","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                 naviseccli, sec_file, queue_path\u003dNone):"},{"line_number":83,"context_line":"        self.naviseccli \u003d naviseccli"},{"line_number":84,"context_line":"        if not storops:"},{"line_number":85,"context_line":"            msg \u003d \u0027storops Python library is not installed.\u0027"},{"line_number":86,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":87,"context_line":"        self.vnx \u003d storops.VNXSystem(ip\u003dip,"},{"line_number":88,"context_line":"                                     username\u003dusername,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f231b9d_3687cd12","line":85,"range":{"start_line":85,"start_character":18,"end_line":85,"end_character":60},"in_reply_to":"7f231b9d_d0a9c424","updated":"2017-06-20 01:22:53.000000000","message":"Done","commit_id":"a5e740bdbdd9928f29feb45e7a5cac9fa9d98f36"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a9fcc0021e96a71804c7b0718cc1d96fa3fd217b","unresolved":false,"context_lines":[{"line_number":615,"context_line":"            max_iops \u003d qos_specs[common.QOS_MAX_IOPS]"},{"line_number":616,"context_line":"            if max_bws:"},{"line_number":617,"context_line":"                name \u003d \u0027%(prefix)s-%(bws)s-%(max)s\u0027 % {"},{"line_number":618,"context_line":"                    \u0027prefix\u0027: prefix, \u0027bws\u0027: \u0027bws\u0027, \u0027max\u0027: max_bws}"},{"line_number":619,"context_line":"                class_bws \u003d self.vnx.get_ioclass(name\u003dname)"},{"line_number":620,"context_line":"                if not class_bws.existed:"},{"line_number":621,"context_line":"                    class_bws \u003d self.create_ioclass_bws(name,"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f201791_f7fc0eb6","line":618,"range":{"start_line":618,"start_character":45,"end_line":618,"end_character":50},"updated":"2017-06-27 02:11:34.000000000","message":"Is this string substitution really needed?  Can\u0027t you add \u0027bws\u0027 directly  in the name?","commit_id":"1333d77289683e744ecba08e103792539e2062d4"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"a91fe77ba1c7886073aaa4ad32d24c99d8378c2e","unresolved":false,"context_lines":[{"line_number":615,"context_line":"            max_iops \u003d qos_specs[common.QOS_MAX_IOPS]"},{"line_number":616,"context_line":"            if max_bws:"},{"line_number":617,"context_line":"                name \u003d \u0027%(prefix)s-%(bws)s-%(max)s\u0027 % {"},{"line_number":618,"context_line":"                    \u0027prefix\u0027: prefix, \u0027bws\u0027: \u0027bws\u0027, \u0027max\u0027: max_bws}"},{"line_number":619,"context_line":"                class_bws \u003d self.vnx.get_ioclass(name\u003dname)"},{"line_number":620,"context_line":"                if not class_bws.existed:"},{"line_number":621,"context_line":"                    class_bws \u003d self.create_ioclass_bws(name,"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f201791_116b1285","line":618,"range":{"start_line":618,"start_character":45,"end_line":618,"end_character":50},"in_reply_to":"5f201791_f7fc0eb6","updated":"2017-06-28 02:09:29.000000000","message":"No, could be simplified","commit_id":"1333d77289683e744ecba08e103792539e2062d4"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a9fcc0021e96a71804c7b0718cc1d96fa3fd217b","unresolved":false,"context_lines":[{"line_number":623,"context_line":"                ioclasses.append(class_bws)"},{"line_number":624,"context_line":"            if max_iops:"},{"line_number":625,"context_line":"                name \u003d \u0027%(prefix)s-%(iops)s-%(max)s\u0027 % {"},{"line_number":626,"context_line":"                    \u0027prefix\u0027: prefix, \u0027iops\u0027: \u0027iops\u0027, \u0027max\u0027: max_iops}"},{"line_number":627,"context_line":"                class_iops \u003d self.vnx.get_ioclass(name\u003dname)"},{"line_number":628,"context_line":"                if not class_iops.existed:"},{"line_number":629,"context_line":"                    class_iops \u003d self.create_ioclass_iops(name,"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f201791_b7345694","line":626,"range":{"start_line":626,"start_character":38,"end_line":626,"end_character":52},"updated":"2017-06-27 02:11:34.000000000","message":"Same here.  Is this string substitution needed?","commit_id":"1333d77289683e744ecba08e103792539e2062d4"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"a91fe77ba1c7886073aaa4ad32d24c99d8378c2e","unresolved":false,"context_lines":[{"line_number":623,"context_line":"                ioclasses.append(class_bws)"},{"line_number":624,"context_line":"            if max_iops:"},{"line_number":625,"context_line":"                name \u003d \u0027%(prefix)s-%(iops)s-%(max)s\u0027 % {"},{"line_number":626,"context_line":"                    \u0027prefix\u0027: prefix, \u0027iops\u0027: \u0027iops\u0027, \u0027max\u0027: max_iops}"},{"line_number":627,"context_line":"                class_iops \u003d self.vnx.get_ioclass(name\u003dname)"},{"line_number":628,"context_line":"                if not class_iops.existed:"},{"line_number":629,"context_line":"                    class_iops \u003d self.create_ioclass_iops(name,"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f201791_910cc2ec","line":626,"range":{"start_line":626,"start_character":38,"end_line":626,"end_character":52},"in_reply_to":"5f201791_b7345694","updated":"2017-06-28 02:09:29.000000000","message":"No, could be simplified","commit_id":"1333d77289683e744ecba08e103792539e2062d4"}],"cinder/volume/drivers/dell_emc/vnx/utils.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a9fcc0021e96a71804c7b0718cc1d96fa3fd217b","unresolved":false,"context_lines":[{"line_number":360,"context_line":""},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"def get_backend_qos_specs(volume):"},{"line_number":363,"context_line":"    type_id \u003d volume.volume_type_id"},{"line_number":364,"context_line":"    if type_id is None:"},{"line_number":365,"context_line":"        return None"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    qos_specs \u003d volume_types.get_volume_type_qos_specs(type_id)"},{"line_number":368,"context_line":"    if qos_specs is None:"},{"line_number":369,"context_line":"        return None"},{"line_number":370,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5f201791_17e42a3b","line":367,"range":{"start_line":363,"start_character":0,"end_line":367,"end_character":63},"updated":"2017-06-27 02:11:34.000000000","message":"Missed this earlier.  You can actually get it without making the above call.\n\nvolume.volume_type.qos_specs","commit_id":"1333d77289683e744ecba08e103792539e2062d4"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"a91fe77ba1c7886073aaa4ad32d24c99d8378c2e","unresolved":false,"context_lines":[{"line_number":360,"context_line":""},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"def get_backend_qos_specs(volume):"},{"line_number":363,"context_line":"    type_id \u003d volume.volume_type_id"},{"line_number":364,"context_line":"    if type_id is None:"},{"line_number":365,"context_line":"        return None"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    qos_specs \u003d volume_types.get_volume_type_qos_specs(type_id)"},{"line_number":368,"context_line":"    if qos_specs is None:"},{"line_number":369,"context_line":"        return None"},{"line_number":370,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5f201791_d12fda3c","line":367,"range":{"start_line":363,"start_character":0,"end_line":367,"end_character":63},"in_reply_to":"5f201791_17e42a3b","updated":"2017-06-28 02:09:29.000000000","message":"Thanks for pointing this out, Will update","commit_id":"1333d77289683e744ecba08e103792539e2062d4"}],"releasenotes/notes/vnx-qos-support-7057196782e2c388.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5827b6e3c17cc35f038d69f5a199c4b65dcf58ff","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Adds QoS support for VNX Cinder driver."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"1f1a1f67_8d6159ac","line":3,"range":{"start_line":3,"start_character":4,"end_line":3,"end_character":8},"updated":"2017-07-17 20:30:05.000000000","message":"Should really be \"Added\" since this will be in the context of someone reading what had been done in this release, but we can fix that up later.","commit_id":"93993a0cedbe2105d7481fda0b1f83dee0a63fe4"}]}
