)]}'
{"cinder/volume/drivers/pure.py":[{"author":{"_account_id":32831,"name":"Jiafeng Liao","email":"jliao@purestorage.com","username":"pure-jliao"},"change_message_id":"be15506e550445a00b715b12ead19221839f4dd2","unresolved":true,"context_lines":[{"line_number":446,"context_line":"                qos \u003d self._get_qos_settings(volume, volume_type)"},{"line_number":447,"context_line":"        if qos is not None:"},{"line_number":448,"context_line":"            LOG.debug(\u0027QoS: %(qos)s\u0027, {\u0027qos\u0027: qos})"},{"line_number":449,"context_line":"            if qos[\u0027maxIOPS\u0027] \u003d\u003d 0:"},{"line_number":450,"context_line":"                current_array.create_volume(vol_name, vol_size,"},{"line_number":451,"context_line":"                                            iops_limit\u003d\u0027\u0027,"},{"line_number":452,"context_line":"                                            bandwidth_limit\u003dqos[\u0027maxBWS\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"7fda9429_920977c5","line":449,"updated":"2020-12-17 03:02:25.000000000","message":"I assume if maxIOPS or maxBWS equals to 0 we reset the field instead of setting it to 0? but here if both are 0, it would set iops_limit to empty, but bandwidth_limit to 0. same for the other 2 places at line 1255 and 1848","commit_id":"efa28d190a600ee17a960e0cf729205ef467a5bd"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"11064f42eeef0ad149d8a20e5ca379e968ea80b3","unresolved":false,"context_lines":[{"line_number":446,"context_line":"                qos \u003d self._get_qos_settings(volume, volume_type)"},{"line_number":447,"context_line":"        if qos is not None:"},{"line_number":448,"context_line":"            LOG.debug(\u0027QoS: %(qos)s\u0027, {\u0027qos\u0027: qos})"},{"line_number":449,"context_line":"            if qos[\u0027maxIOPS\u0027] \u003d\u003d 0:"},{"line_number":450,"context_line":"                current_array.create_volume(vol_name, vol_size,"},{"line_number":451,"context_line":"                                            iops_limit\u003d\u0027\u0027,"},{"line_number":452,"context_line":"                                            bandwidth_limit\u003dqos[\u0027maxBWS\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"ac4708e1_ef1cb748","line":449,"in_reply_to":"7fda9429_920977c5","updated":"2020-12-17 03:45:21.000000000","message":"Actually, this is a quirk of the API call. You do not use 0 to reset or to not use this parameter - you have to use an empty string.","commit_id":"efa28d190a600ee17a960e0cf729205ef467a5bd"},{"author":{"_account_id":32831,"name":"Jiafeng Liao","email":"jliao@purestorage.com","username":"pure-jliao"},"change_message_id":"be15506e550445a00b715b12ead19221839f4dd2","unresolved":true,"context_lines":[{"line_number":1591,"context_line":"                return REPLICATION_TYPE_ASYNC"},{"line_number":1592,"context_line":"        return None"},{"line_number":1593,"context_line":""},{"line_number":1594,"context_line":"    def _get_qos_settings(self, volume, volume_type):"},{"line_number":1595,"context_line":"        \"\"\"Get extra_specs and qos_specs of a volume_type."},{"line_number":1596,"context_line":""},{"line_number":1597,"context_line":"        This fetches the keys from the volume type. Anything set"}],"source_content_type":"text/x-python","patch_set":7,"id":"281abeac_6a4fbf71","line":1594,"updated":"2020-12-17 03:02:25.000000000","message":"`volume` param is not used here.","commit_id":"efa28d190a600ee17a960e0cf729205ef467a5bd"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"11064f42eeef0ad149d8a20e5ca379e968ea80b3","unresolved":false,"context_lines":[{"line_number":1591,"context_line":"                return REPLICATION_TYPE_ASYNC"},{"line_number":1592,"context_line":"        return None"},{"line_number":1593,"context_line":""},{"line_number":1594,"context_line":"    def _get_qos_settings(self, volume, volume_type):"},{"line_number":1595,"context_line":"        \"\"\"Get extra_specs and qos_specs of a volume_type."},{"line_number":1596,"context_line":""},{"line_number":1597,"context_line":"        This fetches the keys from the volume type. Anything set"}],"source_content_type":"text/x-python","patch_set":7,"id":"df37be6e_822eacd7","line":1594,"in_reply_to":"281abeac_6a4fbf71","updated":"2020-12-17 03:45:21.000000000","message":"True. Resolved","commit_id":"efa28d190a600ee17a960e0cf729205ef467a5bd"},{"author":{"_account_id":32831,"name":"Jiafeng Liao","email":"jliao@purestorage.com","username":"pure-jliao"},"change_message_id":"be15506e550445a00b715b12ead19221839f4dd2","unresolved":true,"context_lines":[{"line_number":1620,"context_line":"            iops_qos \u003d int(qos.get(\u0027maxIOPS\u0027, 0))"},{"line_number":1621,"context_line":"            bw_qos \u003d int(qos.get(\u0027maxBWS\u0027, 0)) * 1048576"},{"line_number":1622,"context_line":"            qos[\u0027maxBWS\u0027] \u003d bw_qos"},{"line_number":1623,"context_line":"            if iops_qos !\u003d 0 and (100 \u003e\u003d iops_qos \u003e 100000000):"},{"line_number":1624,"context_line":"                msg \u003d _(\u0027maxIOPS QoS error. Must be more than \u0027"},{"line_number":1625,"context_line":"                        \u0027100 and less than 100000000\u0027)"},{"line_number":1626,"context_line":"                raise exception.InvalidQoSSpecs(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"86cfbf88_73ccec63","line":1623,"updated":"2020-12-17 03:02:25.000000000","message":"I guess this might not work? I never saw this format before, maybe \nif iops_qos !\u003d 0 and not (100 \u003c\u003d iops_qos \u003c\u003d 100000000)? min and max should be included","commit_id":"efa28d190a600ee17a960e0cf729205ef467a5bd"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"11064f42eeef0ad149d8a20e5ca379e968ea80b3","unresolved":false,"context_lines":[{"line_number":1620,"context_line":"            iops_qos \u003d int(qos.get(\u0027maxIOPS\u0027, 0))"},{"line_number":1621,"context_line":"            bw_qos \u003d int(qos.get(\u0027maxBWS\u0027, 0)) * 1048576"},{"line_number":1622,"context_line":"            qos[\u0027maxBWS\u0027] \u003d bw_qos"},{"line_number":1623,"context_line":"            if iops_qos !\u003d 0 and (100 \u003e\u003d iops_qos \u003e 100000000):"},{"line_number":1624,"context_line":"                msg \u003d _(\u0027maxIOPS QoS error. Must be more than \u0027"},{"line_number":1625,"context_line":"                        \u0027100 and less than 100000000\u0027)"},{"line_number":1626,"context_line":"                raise exception.InvalidQoSSpecs(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"247655fe_3dcc3654","line":1623,"in_reply_to":"86cfbf88_73ccec63","updated":"2020-12-17 03:45:21.000000000","message":"Perfectly valid python - no change required","commit_id":"efa28d190a600ee17a960e0cf729205ef467a5bd"},{"author":{"_account_id":32831,"name":"Jiafeng Liao","email":"jliao@purestorage.com","username":"pure-jliao"},"change_message_id":"be15506e550445a00b715b12ead19221839f4dd2","unresolved":true,"context_lines":[{"line_number":1624,"context_line":"                msg \u003d _(\u0027maxIOPS QoS error. Must be more than \u0027"},{"line_number":1625,"context_line":"                        \u0027100 and less than 100000000\u0027)"},{"line_number":1626,"context_line":"                raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":1627,"context_line":"            if bw_qos !\u003d 0 and (1048576 \u003e\u003d bw_qos \u003e 549755813888):"},{"line_number":1628,"context_line":"                msg \u003d _(\u0027maxBWS QoS error. Must be between \u0027"},{"line_number":1629,"context_line":"                        \u00271 and 524288\u0027)"},{"line_number":1630,"context_line":"                raise exception.InvalidQoSSpecs(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"a99a538b_cc190f26","line":1627,"updated":"2020-12-17 03:02:25.000000000","message":"same here","commit_id":"efa28d190a600ee17a960e0cf729205ef467a5bd"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"11064f42eeef0ad149d8a20e5ca379e968ea80b3","unresolved":false,"context_lines":[{"line_number":1624,"context_line":"                msg \u003d _(\u0027maxIOPS QoS error. Must be more than \u0027"},{"line_number":1625,"context_line":"                        \u0027100 and less than 100000000\u0027)"},{"line_number":1626,"context_line":"                raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":1627,"context_line":"            if bw_qos !\u003d 0 and (1048576 \u003e\u003d bw_qos \u003e 549755813888):"},{"line_number":1628,"context_line":"                msg \u003d _(\u0027maxBWS QoS error. Must be between \u0027"},{"line_number":1629,"context_line":"                        \u00271 and 524288\u0027)"},{"line_number":1630,"context_line":"                raise exception.InvalidQoSSpecs(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"4445a1c9_dcaa5395","line":1627,"in_reply_to":"a99a538b_cc190f26","updated":"2020-12-17 03:45:21.000000000","message":"As above","commit_id":"efa28d190a600ee17a960e0cf729205ef467a5bd"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b03081c7b82748f75a01dcf95be8cacf9daf7b02","unresolved":true,"context_lines":[{"line_number":1282,"context_line":"        self._rename_volume_object(ref_vol_name,"},{"line_number":1283,"context_line":"                                   new_vol_name,"},{"line_number":1284,"context_line":"                                   raise_not_exist\u003dTrue)"},{"line_number":1285,"context_line":"        # Check if the volume_type has QoS settings and if so"},{"line_number":1286,"context_line":"        # apply them to the newly managed volume"},{"line_number":1287,"context_line":"        qos \u003d None"},{"line_number":1288,"context_line":"        if (current_array.get_rest_version() in QOS_REQUIRED_API_VERSION):"},{"line_number":1289,"context_line":"            qos \u003d self._get_qos_settings(volume.volume_type)"},{"line_number":1290,"context_line":"            if qos is not None:"},{"line_number":1291,"context_line":"                LOG.debug(\u0027QoS: %(qos)s\u0027, {\u0027qos\u0027: qos})"},{"line_number":1292,"context_line":"                if qos[\u0027maxIOPS\u0027] \u003d\u003d 0 and qos[\u0027maxBWS\u0027] \u003d\u003d 0:"},{"line_number":1293,"context_line":"                    current_array.set_volume(new_vol_name,"},{"line_number":1294,"context_line":"                                             iops_limit\u003d\u0027\u0027,"},{"line_number":1295,"context_line":"                                             bandwidth_limit\u003d\u0027\u0027)"},{"line_number":1296,"context_line":"                elif qos[\u0027maxIOPS\u0027] \u003d\u003d 0:"},{"line_number":1297,"context_line":"                    current_array.set_volume(new_vol_name,"},{"line_number":1298,"context_line":"                                             iops_limit\u003d\u0027\u0027,"},{"line_number":1299,"context_line":"                                             bandwidth_limit\u003dqos[\u0027maxBWS\u0027])"},{"line_number":1300,"context_line":"                elif qos[\u0027maxBWS\u0027] \u003d\u003d 0:"},{"line_number":1301,"context_line":"                    current_array.set_volume(new_vol_name,"},{"line_number":1302,"context_line":"                                             iops_limit\u003dqos[\u0027maxIOPS\u0027],"},{"line_number":1303,"context_line":"                                             bandwidth_limit\u003d\u0027\u0027)"},{"line_number":1304,"context_line":"                else:"},{"line_number":1305,"context_line":"                    current_array.set_volume(new_vol_name,"},{"line_number":1306,"context_line":"                                             iops_limit\u003dqos[\u0027maxIOPS\u0027],"},{"line_number":1307,"context_line":"                                             bandwidth_limit\u003dqos[\u0027maxBWS\u0027])"},{"line_number":1308,"context_line":"            else:"},{"line_number":1309,"context_line":"                current_array.set_volume(new_vol_name,"},{"line_number":1310,"context_line":"                                         iops_limit\u003d\u0027\u0027,"},{"line_number":1311,"context_line":"                                         bandwidth_limit\u003d\u0027\u0027)"},{"line_number":1312,"context_line":"        volume.provider_id \u003d new_vol_name"},{"line_number":1313,"context_line":"        async_enabled \u003d self._enable_async_replication_if_needed(current_array,"},{"line_number":1314,"context_line":"                                                                 volume)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a2be18c_eb2efd18","line":1311,"range":{"start_line":1285,"start_character":0,"end_line":1311,"end_character":60},"updated":"2021-02-19 20:52:09.000000000","message":"this looks like the same code at 495-517 and 449-468 and 1891-1916 ... if that\u0027s true, you should move it to a function and call the function from the four places that need it.  It will make it easier to maintain, and will also make it easier to test that the code is setting the qos values correctly.","commit_id":"266de5bb322d6fb0bb9e6bc626f0923d7cfd945b"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"62515f8890995a1fa9866ee40dd512d4a2381bfa","unresolved":false,"context_lines":[{"line_number":1282,"context_line":"        self._rename_volume_object(ref_vol_name,"},{"line_number":1283,"context_line":"                                   new_vol_name,"},{"line_number":1284,"context_line":"                                   raise_not_exist\u003dTrue)"},{"line_number":1285,"context_line":"        # Check if the volume_type has QoS settings and if so"},{"line_number":1286,"context_line":"        # apply them to the newly managed volume"},{"line_number":1287,"context_line":"        qos \u003d None"},{"line_number":1288,"context_line":"        if (current_array.get_rest_version() in QOS_REQUIRED_API_VERSION):"},{"line_number":1289,"context_line":"            qos \u003d self._get_qos_settings(volume.volume_type)"},{"line_number":1290,"context_line":"            if qos is not None:"},{"line_number":1291,"context_line":"                LOG.debug(\u0027QoS: %(qos)s\u0027, {\u0027qos\u0027: qos})"},{"line_number":1292,"context_line":"                if qos[\u0027maxIOPS\u0027] \u003d\u003d 0 and qos[\u0027maxBWS\u0027] \u003d\u003d 0:"},{"line_number":1293,"context_line":"                    current_array.set_volume(new_vol_name,"},{"line_number":1294,"context_line":"                                             iops_limit\u003d\u0027\u0027,"},{"line_number":1295,"context_line":"                                             bandwidth_limit\u003d\u0027\u0027)"},{"line_number":1296,"context_line":"                elif qos[\u0027maxIOPS\u0027] \u003d\u003d 0:"},{"line_number":1297,"context_line":"                    current_array.set_volume(new_vol_name,"},{"line_number":1298,"context_line":"                                             iops_limit\u003d\u0027\u0027,"},{"line_number":1299,"context_line":"                                             bandwidth_limit\u003dqos[\u0027maxBWS\u0027])"},{"line_number":1300,"context_line":"                elif qos[\u0027maxBWS\u0027] \u003d\u003d 0:"},{"line_number":1301,"context_line":"                    current_array.set_volume(new_vol_name,"},{"line_number":1302,"context_line":"                                             iops_limit\u003dqos[\u0027maxIOPS\u0027],"},{"line_number":1303,"context_line":"                                             bandwidth_limit\u003d\u0027\u0027)"},{"line_number":1304,"context_line":"                else:"},{"line_number":1305,"context_line":"                    current_array.set_volume(new_vol_name,"},{"line_number":1306,"context_line":"                                             iops_limit\u003dqos[\u0027maxIOPS\u0027],"},{"line_number":1307,"context_line":"                                             bandwidth_limit\u003dqos[\u0027maxBWS\u0027])"},{"line_number":1308,"context_line":"            else:"},{"line_number":1309,"context_line":"                current_array.set_volume(new_vol_name,"},{"line_number":1310,"context_line":"                                         iops_limit\u003d\u0027\u0027,"},{"line_number":1311,"context_line":"                                         bandwidth_limit\u003d\u0027\u0027)"},{"line_number":1312,"context_line":"        volume.provider_id \u003d new_vol_name"},{"line_number":1313,"context_line":"        async_enabled \u003d self._enable_async_replication_if_needed(current_array,"},{"line_number":1314,"context_line":"                                                                 volume)"}],"source_content_type":"text/x-python","patch_set":17,"id":"5fc38d7b_4e7021e9","line":1311,"range":{"start_line":1285,"start_character":0,"end_line":1311,"end_character":60},"in_reply_to":"9a2be18c_eb2efd18","updated":"2021-02-19 21:46:13.000000000","message":"Done","commit_id":"266de5bb322d6fb0bb9e6bc626f0923d7cfd945b"}],"doc/source/reference/support-matrix.ini":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"6f843bdf77a19033e95b1dd885354d4d0e27cb30","unresolved":true,"context_lines":[{"line_number":451,"context_line":"driver.nfs\u003dmissing"},{"line_number":452,"context_line":"driver.nimble\u003dmissing"},{"line_number":453,"context_line":"driver.prophetstor\u003dmissing"},{"line_number":454,"context_line":"driver.pure\u003dmissing"},{"line_number":455,"context_line":"driver.qnap\u003dmissing"},{"line_number":456,"context_line":"driver.quobyte\u003dmissing"},{"line_number":457,"context_line":"driver.rbd\u003dmissing"}],"source_content_type":"text/x-properties","patch_set":18,"id":"bdc55c5e_57b5c0fd","line":454,"range":{"start_line":454,"start_character":0,"end_line":454,"end_character":19},"updated":"2021-03-04 22:27:49.000000000","message":"You\u0027ll want to update this at some point.","commit_id":"a580a6ebf83341928fd9e1458b5ce76bfc2af162"}]}
