)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d5658e4ebe67cf2539e771473321d9681c14a2dd","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add QoS and Dedupe Support for Nimble Storage"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"QoS support and deduplication for Nimble Storage volumes"},{"line_number":10,"context_line":"DocImpact"},{"line_number":11,"context_line":"Implements: blueprint nimble-qos-specs"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da4df55a_951dd275","line":9,"updated":"2016-12-22 20:40:28.000000000","message":"Leave a blank line between the description and DocImpact flag.","commit_id":"2838085d4064c99dd9ae919857a98dc49c67ce5b"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"0678e2483239b1712f5ece1969f37dd4c1344a1c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add QoS and Dedupe Support for Nimble Storage"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"QoS support and deduplication for Nimble Storage volumes"},{"line_number":10,"context_line":"DocImpact"},{"line_number":11,"context_line":"Implements: blueprint nimble-qos-specs"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da4df55a_33b7d93a","line":9,"in_reply_to":"da4df55a_951dd275","updated":"2016-12-22 23:25:41.000000000","message":"Done","commit_id":"2838085d4064c99dd9ae919857a98dc49c67ce5b"}],"cinder/volume/drivers/nimble.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"251aba1c2c5a70e9d76febf41fadb5a10cec44f7","unresolved":false,"context_lines":[{"line_number":1154,"context_line":"            if \u0027folder_list\u0027 in pool_info and (pool_info[\u0027folder_list\u0027] is"},{"line_number":1155,"context_line":"                                               not None):"},{"line_number":1156,"context_line":"                for folder_list in pool_info[\u0027folder_list\u0027]:"},{"line_number":1157,"context_line":"                    LOG.debug(\"folder_list : %s\" % folder_list)"},{"line_number":1158,"context_line":"                    if folder_list[\u0027fqn\u0027] \u003d\u003d \"/\" + folder_name:"},{"line_number":1159,"context_line":"                        LOG.debug(\"Folder %(folder)s present in pool \""},{"line_number":1160,"context_line":"                                  \"%(pool)s\" %"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_9309652f","line":1157,"range":{"start_line":1157,"start_character":48,"end_line":1157,"end_character":50},"updated":"2016-12-22 23:21:25.000000000","message":"% \u003e ,","commit_id":"2838085d4064c99dd9ae919857a98dc49c67ce5b"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"0678e2483239b1712f5ece1969f37dd4c1344a1c","unresolved":false,"context_lines":[{"line_number":1154,"context_line":"            if \u0027folder_list\u0027 in pool_info and (pool_info[\u0027folder_list\u0027] is"},{"line_number":1155,"context_line":"                                               not None):"},{"line_number":1156,"context_line":"                for folder_list in pool_info[\u0027folder_list\u0027]:"},{"line_number":1157,"context_line":"                    LOG.debug(\"folder_list : %s\" % folder_list)"},{"line_number":1158,"context_line":"                    if folder_list[\u0027fqn\u0027] \u003d\u003d \"/\" + folder_name:"},{"line_number":1159,"context_line":"                        LOG.debug(\"Folder %(folder)s present in pool \""},{"line_number":1160,"context_line":"                                  \"%(pool)s\" %"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_73d88154","line":1157,"range":{"start_line":1157,"start_character":48,"end_line":1157,"end_character":50},"in_reply_to":"da4df55a_9309652f","updated":"2016-12-22 23:25:41.000000000","message":"Done","commit_id":"2838085d4064c99dd9ae919857a98dc49c67ce5b"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"251aba1c2c5a70e9d76febf41fadb5a10cec44f7","unresolved":false,"context_lines":[{"line_number":1157,"context_line":"                    LOG.debug(\"folder_list : %s\" % folder_list)"},{"line_number":1158,"context_line":"                    if folder_list[\u0027fqn\u0027] \u003d\u003d \"/\" + folder_name:"},{"line_number":1159,"context_line":"                        LOG.debug(\"Folder %(folder)s present in pool \""},{"line_number":1160,"context_line":"                                  \"%(pool)s\" %"},{"line_number":1161,"context_line":"                                  {\u0027folder\u0027: folder_name,"},{"line_number":1162,"context_line":"                                   \u0027pool\u0027: pool_name})"},{"line_number":1163,"context_line":"                        folder_id \u003d self.get_folder_id(folder_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_d313ed5a","line":1160,"range":{"start_line":1160,"start_character":44,"end_line":1160,"end_character":46},"updated":"2016-12-22 23:21:25.000000000","message":"% \u003e ,","commit_id":"2838085d4064c99dd9ae919857a98dc49c67ce5b"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"251aba1c2c5a70e9d76febf41fadb5a10cec44f7","unresolved":false,"context_lines":[{"line_number":1183,"context_line":"                                          \u0027max\u0027: MAX_IOPS})"},{"line_number":1184,"context_line":"            data[\u0027data\u0027][\u0027limit_iops\u0027] \u003d iops_limit"},{"line_number":1185,"context_line":""},{"line_number":1186,"context_line":"        LOG.debug(\"Volume metadata :%s\" % volume.metadata)"},{"line_number":1187,"context_line":"        for key, value in volume.metadata.items():"},{"line_number":1188,"context_line":"            LOG.debug(\"Key %(key)s Value %(value)s\","},{"line_number":1189,"context_line":"                      {\u0027key\u0027: key, \u0027value\u0027: value})"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_331b5974","line":1186,"range":{"start_line":1186,"start_character":39,"end_line":1186,"end_character":41},"updated":"2016-12-22 23:21:25.000000000","message":"% \u003e ,","commit_id":"2838085d4064c99dd9ae919857a98dc49c67ce5b"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"0678e2483239b1712f5ece1969f37dd4c1344a1c","unresolved":false,"context_lines":[{"line_number":1183,"context_line":"                                          \u0027max\u0027: MAX_IOPS})"},{"line_number":1184,"context_line":"            data[\u0027data\u0027][\u0027limit_iops\u0027] \u003d iops_limit"},{"line_number":1185,"context_line":""},{"line_number":1186,"context_line":"        LOG.debug(\"Volume metadata :%s\" % volume.metadata)"},{"line_number":1187,"context_line":"        for key, value in volume.metadata.items():"},{"line_number":1188,"context_line":"            LOG.debug(\"Key %(key)s Value %(value)s\","},{"line_number":1189,"context_line":"                      {\u0027key\u0027: key, \u0027value\u0027: value})"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_93dde544","line":1186,"range":{"start_line":1186,"start_character":39,"end_line":1186,"end_character":41},"in_reply_to":"da4df55a_331b5974","updated":"2016-12-22 23:25:41.000000000","message":"Done","commit_id":"2838085d4064c99dd9ae919857a98dc49c67ce5b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d5658e4ebe67cf2539e771473321d9681c14a2dd","unresolved":false,"context_lines":[{"line_number":1184,"context_line":"            data[\u0027data\u0027][\u0027limit_iops\u0027] \u003d iops_limit"},{"line_number":1185,"context_line":""},{"line_number":1186,"context_line":"        LOG.debug(\"Volume metadata :%s\" % volume.metadata)"},{"line_number":1187,"context_line":"        for key, value in volume.metadata.items():"},{"line_number":1188,"context_line":"            LOG.debug(\"Key %(key)s Value %(value)s\","},{"line_number":1189,"context_line":"                      {\u0027key\u0027: key, \u0027value\u0027: value})"},{"line_number":1190,"context_line":"            if key \u003d\u003d EXTRA_SPEC_IOPS_LIMIT and value.isdigit():"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_e4d10dfd","line":1187,"updated":"2016-12-22 20:40:28.000000000","message":"Why are you getting IOPs from metadata?  You\u0027ve already got if from volume type.  Volume type is the right place to retrieve this info.","commit_id":"2838085d4064c99dd9ae919857a98dc49c67ce5b"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"0678e2483239b1712f5ece1969f37dd4c1344a1c","unresolved":false,"context_lines":[{"line_number":1184,"context_line":"            data[\u0027data\u0027][\u0027limit_iops\u0027] \u003d iops_limit"},{"line_number":1185,"context_line":""},{"line_number":1186,"context_line":"        LOG.debug(\"Volume metadata :%s\" % volume.metadata)"},{"line_number":1187,"context_line":"        for key, value in volume.metadata.items():"},{"line_number":1188,"context_line":"            LOG.debug(\"Key %(key)s Value %(value)s\","},{"line_number":1189,"context_line":"                      {\u0027key\u0027: key, \u0027value\u0027: value})"},{"line_number":1190,"context_line":"            if key \u003d\u003d EXTRA_SPEC_IOPS_LIMIT and value.isdigit():"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_b82ba62f","line":1187,"in_reply_to":"da4df55a_e4d10dfd","updated":"2016-12-22 23:25:41.000000000","message":"IOPS from volume type is for users who set extra specs for the backend. This value would be common for all volumes creating for that backend. If an user wants to override the backend\u0027s IOPS on a per volume basis they can specify using metadata","commit_id":"2838085d4064c99dd9ae919857a98dc49c67ce5b"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"251aba1c2c5a70e9d76febf41fadb5a10cec44f7","unresolved":false,"context_lines":[{"line_number":1195,"context_line":"                                               \"%(min)s, %(max)s]\") %"},{"line_number":1196,"context_line":"                                             {\u0027min\u0027: MIN_IOPS,"},{"line_number":1197,"context_line":"                                              \u0027max\u0027: MAX_IOPS})"},{"line_number":1198,"context_line":"                LOG.debug(\"IOPS Limit %s\" % value)"},{"line_number":1199,"context_line":"                data[\u0027data\u0027][\u0027limit_iops\u0027] \u003d value"},{"line_number":1200,"context_line":"        LOG.debug(\"Data : %s\" % data)"},{"line_number":1201,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_732b2183","line":1198,"range":{"start_line":1198,"start_character":42,"end_line":1198,"end_character":43},"updated":"2016-12-22 23:21:25.000000000","message":"% \u003e ,","commit_id":"2838085d4064c99dd9ae919857a98dc49c67ce5b"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"0678e2483239b1712f5ece1969f37dd4c1344a1c","unresolved":false,"context_lines":[{"line_number":1195,"context_line":"                                               \"%(min)s, %(max)s]\") %"},{"line_number":1196,"context_line":"                                             {\u0027min\u0027: MIN_IOPS,"},{"line_number":1197,"context_line":"                                              \u0027max\u0027: MAX_IOPS})"},{"line_number":1198,"context_line":"                LOG.debug(\"IOPS Limit %s\" % value)"},{"line_number":1199,"context_line":"                data[\u0027data\u0027][\u0027limit_iops\u0027] \u003d value"},{"line_number":1200,"context_line":"        LOG.debug(\"Data : %s\" % data)"},{"line_number":1201,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_b3e2e901","line":1198,"range":{"start_line":1198,"start_character":42,"end_line":1198,"end_character":43},"in_reply_to":"da4df55a_732b2183","updated":"2016-12-22 23:25:41.000000000","message":"Done","commit_id":"2838085d4064c99dd9ae919857a98dc49c67ce5b"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"251aba1c2c5a70e9d76febf41fadb5a10cec44f7","unresolved":false,"context_lines":[{"line_number":1197,"context_line":"                                              \u0027max\u0027: MAX_IOPS})"},{"line_number":1198,"context_line":"                LOG.debug(\"IOPS Limit %s\" % value)"},{"line_number":1199,"context_line":"                data[\u0027data\u0027][\u0027limit_iops\u0027] \u003d value"},{"line_number":1200,"context_line":"        LOG.debug(\"Data : %s\" % data)"},{"line_number":1201,"context_line":""},{"line_number":1202,"context_line":"        api \u003d \u0027volumes\u0027"},{"line_number":1203,"context_line":"        r \u003d self.post(api, data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_338ef978","line":1200,"range":{"start_line":1200,"start_character":29,"end_line":1200,"end_character":31},"updated":"2016-12-22 23:21:25.000000000","message":"% \u003e ,","commit_id":"2838085d4064c99dd9ae919857a98dc49c67ce5b"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"0678e2483239b1712f5ece1969f37dd4c1344a1c","unresolved":false,"context_lines":[{"line_number":1197,"context_line":"                                              \u0027max\u0027: MAX_IOPS})"},{"line_number":1198,"context_line":"                LOG.debug(\"IOPS Limit %s\" % value)"},{"line_number":1199,"context_line":"                data[\u0027data\u0027][\u0027limit_iops\u0027] \u003d value"},{"line_number":1200,"context_line":"        LOG.debug(\"Data : %s\" % data)"},{"line_number":1201,"context_line":""},{"line_number":1202,"context_line":"        api \u003d \u0027volumes\u0027"},{"line_number":1203,"context_line":"        r \u003d self.post(api, data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_d3e76d10","line":1200,"range":{"start_line":1200,"start_character":29,"end_line":1200,"end_character":31},"in_reply_to":"da4df55a_338ef978","updated":"2016-12-22 23:25:41.000000000","message":"Done","commit_id":"2838085d4064c99dd9ae919857a98dc49c67ce5b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4ea9077c5118028c719ecc789fa95595f4cd1a51","unresolved":false,"context_lines":[{"line_number":1374,"context_line":"        api \u003d \"volumes/\" + six.text_type(volume_id)"},{"line_number":1375,"context_line":"        data \u003d {\u0027data\u0027: {\"online\": online_flag, \u0027force\u0027: True}}"},{"line_number":1376,"context_line":"        try:"},{"line_number":1377,"context_line":"            LOG.debug(\"data :%s\" % data)"},{"line_number":1378,"context_line":"            self.put(api, data)"},{"line_number":1379,"context_line":"            LOG.debug(\"Volume %(vol)s is in requested online state :%(flag)s\" %"},{"line_number":1380,"context_line":"                      {\u0027vol\u0027: volume_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5201f7_e341ea0c","line":1377,"updated":"2017-01-03 19:30:38.000000000","message":"% -\u003e ,","commit_id":"0fb4517f735ab22fb88c800a287310ed287e21af"}],"releasenotes/notes/nimble-qos-specs-8cd006777c66a64e.yaml":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d5658e4ebe67cf2539e771473321d9681c14a2dd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add Support for QoS"},{"line_number":4,"context_line":"    Add Support for deduplication of volumes"},{"line_number":5,"context_line":"other:"},{"line_number":6,"context_line":"    QoS is available from Nimble OS release 4.x and above."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"da4df55a_503298f2","line":3,"updated":"2016-12-22 20:40:28.000000000","message":"- Add support for QoS in the Nimble driver.","commit_id":"2838085d4064c99dd9ae919857a98dc49c67ce5b"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"0678e2483239b1712f5ece1969f37dd4c1344a1c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add Support for QoS"},{"line_number":4,"context_line":"    Add Support for deduplication of volumes"},{"line_number":5,"context_line":"other:"},{"line_number":6,"context_line":"    QoS is available from Nimble OS release 4.x and above."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"da4df55a_f36f1190","line":3,"in_reply_to":"da4df55a_503298f2","updated":"2016-12-22 23:25:41.000000000","message":"Done","commit_id":"2838085d4064c99dd9ae919857a98dc49c67ce5b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d5658e4ebe67cf2539e771473321d9681c14a2dd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add Support for QoS"},{"line_number":4,"context_line":"    Add Support for deduplication of volumes"},{"line_number":5,"context_line":"other:"},{"line_number":6,"context_line":"    QoS is available from Nimble OS release 4.x and above."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"da4df55a_902b2082","line":4,"updated":"2016-12-22 20:40:28.000000000","message":"Add \"- \" before the sentence.  Add a period.\nChange to \"Add support for deduplication of volumes in the Nimble driver.","commit_id":"2838085d4064c99dd9ae919857a98dc49c67ce5b"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"0678e2483239b1712f5ece1969f37dd4c1344a1c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add Support for QoS"},{"line_number":4,"context_line":"    Add Support for deduplication of volumes"},{"line_number":5,"context_line":"other:"},{"line_number":6,"context_line":"    QoS is available from Nimble OS release 4.x and above."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"da4df55a_336a7981","line":4,"in_reply_to":"da4df55a_902b2082","updated":"2016-12-22 23:25:41.000000000","message":"Done","commit_id":"2838085d4064c99dd9ae919857a98dc49c67ce5b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d5658e4ebe67cf2539e771473321d9681c14a2dd","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Add Support for QoS"},{"line_number":4,"context_line":"    Add Support for deduplication of volumes"},{"line_number":5,"context_line":"other:"},{"line_number":6,"context_line":"    QoS is available from Nimble OS release 4.x and above."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"da4df55a_d00e8833","line":6,"updated":"2016-12-22 20:40:28.000000000","message":"Remove \"other:\".  Move the above sentence after \"Add Support for QoS\".","commit_id":"2838085d4064c99dd9ae919857a98dc49c67ce5b"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"0678e2483239b1712f5ece1969f37dd4c1344a1c","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Add Support for QoS"},{"line_number":4,"context_line":"    Add Support for deduplication of volumes"},{"line_number":5,"context_line":"other:"},{"line_number":6,"context_line":"    QoS is available from Nimble OS release 4.x and above."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"da4df55a_730a41d4","line":6,"in_reply_to":"da4df55a_935885fc","updated":"2016-12-22 23:25:41.000000000","message":"Done","commit_id":"2838085d4064c99dd9ae919857a98dc49c67ce5b"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"251aba1c2c5a70e9d76febf41fadb5a10cec44f7","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Add Support for QoS"},{"line_number":4,"context_line":"    Add Support for deduplication of volumes"},{"line_number":5,"context_line":"other:"},{"line_number":6,"context_line":"    QoS is available from Nimble OS release 4.x and above."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"da4df55a_935885fc","line":6,"in_reply_to":"da4df55a_d00e8833","updated":"2016-12-22 23:21:25.000000000","message":"+1","commit_id":"2838085d4064c99dd9ae919857a98dc49c67ce5b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4ea9077c5118028c719ecc789fa95595f4cd1a51","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add Support for QoS."},{"line_number":4,"context_line":"    QoS is available from Nimble OS release 4.x and above."},{"line_number":5,"context_line":"  - Add Support for deduplication of volumes in the Nimble Storage driver."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"ba5201f7_e3580afd","line":3,"updated":"2017-01-03 19:30:38.000000000","message":"Please add \"in the Nimble Storage driver\".","commit_id":"0fb4517f735ab22fb88c800a287310ed287e21af"}]}
