)]}'
{"cinder/tests/unit/volume/drivers/test_solidfire.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b50f2050f84e6f385da92818e776cc5a60a4189f","unresolved":false,"context_lines":[{"line_number":698,"context_line":"                          \u0027maxIOPS\u0027: 200,"},{"line_number":699,"context_line":"                          \u0027burstIOPS\u0027: 300}, qos)"},{"line_number":700,"context_line":""},{"line_number":701,"context_line":"    def test_set_scaled_qos_by_type_size_one(self):"},{"line_number":702,"context_line":"        size \u003d 1"},{"line_number":703,"context_line":"        sfv \u003d solidfire.SolidFireDriver(configuration\u003dself.configuration)"},{"line_number":704,"context_line":"        type_ref \u003d volume_types.create(self.ctxt,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_58880bc7","line":701,"updated":"2016-11-30 01:57:25.000000000","message":"Feels like ddt could be used here to simplify testing all these permutations.","commit_id":"bd631a7b2d5af191ccce451adb15a254be7bcf61"}],"cinder/volume/drivers/solidfire.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"1dad88acffea86f9934ae4cbdfbd360592d996b2","unresolved":false,"context_lines":[{"line_number":1196,"context_line":"        type_id \u003d volume.get(\u0027volume_type_id\u0027, None)"},{"line_number":1197,"context_line":"        if type_id is not None:"},{"line_number":1198,"context_line":"            qos \u003d self._set_qos_by_volume_type(ctxt, type_id,"},{"line_number":1199,"context_line":"                                               volume.get(\u0027size\u0027))"},{"line_number":1200,"context_line":"        return qos"},{"line_number":1201,"context_line":""},{"line_number":1202,"context_line":"    def create_volume(self, volume):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_3a0d6be8","line":1199,"range":{"start_line":1199,"start_character":47,"end_line":1199,"end_character":65},"updated":"2016-11-28 10:11:21.000000000","message":"volume.size","commit_id":"082e324ce9006e4d76ddb730883200dc33671067"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"8f868de21734cdc35668c3405aec6c27bb0643aa","unresolved":false,"context_lines":[{"line_number":1196,"context_line":"        type_id \u003d volume.get(\u0027volume_type_id\u0027, None)"},{"line_number":1197,"context_line":"        if type_id is not None:"},{"line_number":1198,"context_line":"            qos \u003d self._set_qos_by_volume_type(ctxt, type_id,"},{"line_number":1199,"context_line":"                                               volume.get(\u0027size\u0027))"},{"line_number":1200,"context_line":"        return qos"},{"line_number":1201,"context_line":""},{"line_number":1202,"context_line":"    def create_volume(self, volume):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_b4b8822b","line":1199,"range":{"start_line":1199,"start_character":47,"end_line":1199,"end_character":65},"in_reply_to":"5a74a57a_3a0d6be8","updated":"2016-11-29 04:46:39.000000000","message":"Probably good to update this, but for now we can exploit the backward compatability of the object using the get method.  Changing this here is a more widespread as it will touch all the usage in the driver and require and update to all the tests.","commit_id":"082e324ce9006e4d76ddb730883200dc33671067"},{"author":{"_account_id":10221,"name":"Edward Balduf","email":"ed.balduf@solidfire.com","username":"ebalduf"},"change_message_id":"0fd58129e73cb9469ce9e61184f0d2d41d74de34","unresolved":false,"context_lines":[{"line_number":1196,"context_line":"        type_id \u003d volume.get(\u0027volume_type_id\u0027, None)"},{"line_number":1197,"context_line":"        if type_id is not None:"},{"line_number":1198,"context_line":"            qos \u003d self._set_qos_by_volume_type(ctxt, type_id,"},{"line_number":1199,"context_line":"                                               volume.get(\u0027size\u0027))"},{"line_number":1200,"context_line":"        return qos"},{"line_number":1201,"context_line":""},{"line_number":1202,"context_line":"    def create_volume(self, volume):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_84f8904b","line":1199,"range":{"start_line":1199,"start_character":47,"end_line":1199,"end_character":65},"in_reply_to":"5a74a57a_3a0d6be8","updated":"2016-11-29 17:20:05.000000000","message":"Since the test cases haven\u0027t been updated for the objectification of volume, we either need to make this change encompass a complete rewrite of the unit tests or leave this as it is with the .get.  John and I talked and we propose this update stands on it\u0027s own and then we come through right behind with a patch the objectifies the test cases.","commit_id":"082e324ce9006e4d76ddb730883200dc33671067"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"e479044dcbb6e37c0d35f3114cee91ff84f1d4f5","unresolved":false,"context_lines":[{"line_number":1196,"context_line":"        type_id \u003d volume.get(\u0027volume_type_id\u0027, None)"},{"line_number":1197,"context_line":"        if type_id is not None:"},{"line_number":1198,"context_line":"            qos \u003d self._set_qos_by_volume_type(ctxt, type_id,"},{"line_number":1199,"context_line":"                                               volume.get(\u0027size\u0027))"},{"line_number":1200,"context_line":"        return qos"},{"line_number":1201,"context_line":""},{"line_number":1202,"context_line":"    def create_volume(self, volume):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_d1c2aae8","line":1199,"range":{"start_line":1199,"start_character":47,"end_line":1199,"end_character":65},"in_reply_to":"5a74a57a_84f8904b","updated":"2016-12-05 17:16:44.000000000","message":"Sounds good! Thanks!","commit_id":"082e324ce9006e4d76ddb730883200dc33671067"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"1dad88acffea86f9934ae4cbdfbd360592d996b2","unresolved":false,"context_lines":[{"line_number":1822,"context_line":"        attributes[\u0027retyped_at\u0027] \u003d timeutils.utcnow().isoformat()"},{"line_number":1823,"context_line":"        params \u003d {\u0027volumeID\u0027: sf_vol[\u0027volumeID\u0027]}"},{"line_number":1824,"context_line":"        qos \u003d self._set_qos_by_volume_type(ctxt, new_type[\u0027id\u0027],"},{"line_number":1825,"context_line":"                                           volume.get(\u0027size\u0027))"},{"line_number":1826,"context_line":""},{"line_number":1827,"context_line":"        if qos:"},{"line_number":1828,"context_line":"            params[\u0027qos\u0027] \u003d qos"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_1a334fac","line":1825,"range":{"start_line":1825,"start_character":43,"end_line":1825,"end_character":61},"updated":"2016-11-28 10:11:21.000000000","message":"volume.size","commit_id":"082e324ce9006e4d76ddb730883200dc33671067"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"5bc6027f595285d10abb7df596546424ffd0420c","unresolved":false,"context_lines":[{"line_number":722,"context_line":"            for key, value in scale_qos.items():"},{"line_number":723,"context_line":"                if key \u003d\u003d \u0027scaleMin\u0027:"},{"line_number":724,"context_line":"                    qos[\u0027minIOPS\u0027] \u003d (qos[\u0027minIOPS\u0027] +"},{"line_number":725,"context_line":"                                      (int(value) * (vol_size - 1)))"},{"line_number":726,"context_line":"                elif key \u003d\u003d \u0027scaleMax\u0027:"},{"line_number":727,"context_line":"                    qos[\u0027maxIOPS\u0027] \u003d (qos[\u0027maxIOPS\u0027] +"},{"line_number":728,"context_line":"                                      (int(value) * (vol_size - 1)))"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_e6169e57","line":725,"updated":"2016-11-29 22:40:09.000000000","message":"Just to check, the scale coefficient can\u0027t be like 1.5 or something? has to be an int?","commit_id":"010900f2ae2ea9df04fb7b8d06ecad906e015c0c"},{"author":{"_account_id":10221,"name":"Edward Balduf","email":"ed.balduf@solidfire.com","username":"ebalduf"},"change_message_id":"a0cb091c95ed5a0fe5d2099e842b7aef3fd5469c","unresolved":false,"context_lines":[{"line_number":722,"context_line":"            for key, value in scale_qos.items():"},{"line_number":723,"context_line":"                if key \u003d\u003d \u0027scaleMin\u0027:"},{"line_number":724,"context_line":"                    qos[\u0027minIOPS\u0027] \u003d (qos[\u0027minIOPS\u0027] +"},{"line_number":725,"context_line":"                                      (int(value) * (vol_size - 1)))"},{"line_number":726,"context_line":"                elif key \u003d\u003d \u0027scaleMax\u0027:"},{"line_number":727,"context_line":"                    qos[\u0027maxIOPS\u0027] \u003d (qos[\u0027maxIOPS\u0027] +"},{"line_number":728,"context_line":"                                      (int(value) * (vol_size - 1)))"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_37b8c2e5","line":725,"in_reply_to":"5a74a57a_e6169e57","updated":"2016-11-29 23:46:46.000000000","message":"Yes, these are required to be integers.  I have a documentation change ready to go once this hits which will indicate they are required to be integers.","commit_id":"010900f2ae2ea9df04fb7b8d06ecad906e015c0c"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"5bc6027f595285d10abb7df596546424ffd0420c","unresolved":false,"context_lines":[{"line_number":731,"context_line":"                                        (int(value) * (vol_size - 1)))"},{"line_number":732,"context_line":"        # Cap the IOPS values at their limits"},{"line_number":733,"context_line":"        for key, value in qos.items():"},{"line_number":734,"context_line":"            if value \u003e self.sf_iops_lim_max[key]:"},{"line_number":735,"context_line":"                qos[key] \u003d self.sf_iops_lim_max[key]"},{"line_number":736,"context_line":"            if value \u003c self.sf_iops_lim_min[key]:"},{"line_number":737,"context_line":"                qos[key] \u003d self.sf_iops_lim_min[key]"},{"line_number":738,"context_line":"        # Check that minIOPS \u003c\u003d maxIOPS \u003c\u003d burstIOPS"},{"line_number":739,"context_line":"        if (qos.get(\u0027minIOPS\u0027, 0) \u003e qos.get(\u0027maxIOPS\u0027, 0) or"},{"line_number":740,"context_line":"                qos.get(\u0027maxIOPS\u0027, 0) \u003e qos.get(\u0027burstIOPS\u0027, 0)):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_e65e9e78","line":737,"range":{"start_line":734,"start_character":0,"end_line":737,"end_character":52},"updated":"2016-11-29 22:40:09.000000000","message":"Would it be worth maybe logging a debug message saying that the values are being adjusted? Might help avoid questions about why the set values on the type wouldn\u0027t match what actually exists for the volume.","commit_id":"010900f2ae2ea9df04fb7b8d06ecad906e015c0c"},{"author":{"_account_id":10221,"name":"Edward Balduf","email":"ed.balduf@solidfire.com","username":"ebalduf"},"change_message_id":"a0cb091c95ed5a0fe5d2099e842b7aef3fd5469c","unresolved":false,"context_lines":[{"line_number":731,"context_line":"                                        (int(value) * (vol_size - 1)))"},{"line_number":732,"context_line":"        # Cap the IOPS values at their limits"},{"line_number":733,"context_line":"        for key, value in qos.items():"},{"line_number":734,"context_line":"            if value \u003e self.sf_iops_lim_max[key]:"},{"line_number":735,"context_line":"                qos[key] \u003d self.sf_iops_lim_max[key]"},{"line_number":736,"context_line":"            if value \u003c self.sf_iops_lim_min[key]:"},{"line_number":737,"context_line":"                qos[key] \u003d self.sf_iops_lim_min[key]"},{"line_number":738,"context_line":"        # Check that minIOPS \u003c\u003d maxIOPS \u003c\u003d burstIOPS"},{"line_number":739,"context_line":"        if (qos.get(\u0027minIOPS\u0027, 0) \u003e qos.get(\u0027maxIOPS\u0027, 0) or"},{"line_number":740,"context_line":"                qos.get(\u0027maxIOPS\u0027, 0) \u003e qos.get(\u0027burstIOPS\u0027, 0)):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_b7c4d25f","line":737,"range":{"start_line":734,"start_character":0,"end_line":737,"end_character":52},"in_reply_to":"5a74a57a_e65e9e78","updated":"2016-11-29 23:46:46.000000000","message":"Good idea.  I\u0027ll use the suggestion to make the change and kick our CI again.","commit_id":"010900f2ae2ea9df04fb7b8d06ecad906e015c0c"}],"releasenotes/notes/solidfire-scaled-qos-9b8632453909e2db.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b50f2050f84e6f385da92818e776cc5a60a4189f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Allow QoS specs for SolidFire to specify QoS"},{"line_number":4,"context_line":"    scaled by volume size"},{"line_number":5,"context_line":"features:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"5a74a57a_d8617b13","line":2,"updated":"2016-11-30 01:57:25.000000000","message":"The prelude section is really broad release information. I don\u0027t think a SolidFire specific thing fits there, and is very well covered in the two sections below. If we can remove this part, I think things look good then.","commit_id":"bd631a7b2d5af191ccce451adb15a254be7bcf61"}]}
