)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"4d5f17eb0b6985a4a309495d16f5b3e2d546a3fa","unresolved":true,"context_lines":[{"line_number":34,"context_line":"Additional vendor-specific volume type extra specs are detailed in"},{"line_number":35,"context_line":"the updated driver documentation and in the release notes."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Change-Id: I65c7241febec740d727f330b3bc0ef1b80abdd78"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"c367e955_6f1ac313","line":37,"updated":"2024-12-23 22:02:24.000000000","message":"Does this patch implements the blueprint pure-add-volume-groups [1]? If so, it worth referencing it in the commit message as `Implements: blueprint pure-add-volume-groups`\n\n[1] https://blueprints.launchpad.net/cinder/+spec/pure-add-volume-groups","commit_id":"0c52a324c8f74f6241dfd3100a752437b6ec2beb"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4321f889c1f71a45d0c8919e48e1371ed809d245","unresolved":false,"context_lines":[{"line_number":34,"context_line":"Additional vendor-specific volume type extra specs are detailed in"},{"line_number":35,"context_line":"the updated driver documentation and in the release notes."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Change-Id: I65c7241febec740d727f330b3bc0ef1b80abdd78"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"97ef3f2e_a4d8f13f","line":37,"in_reply_to":"c367e955_6f1ac313","updated":"2025-01-03 20:00:31.000000000","message":"Done","commit_id":"0c52a324c8f74f6241dfd3100a752437b6ec2beb"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"7543bb5a31b3327645fe8a242df29c74bc99d52b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"066381ec_3441840a","updated":"2024-11-23 12:42:41.000000000","message":"Pue Storage CI results:\niSCSI - http://openstack-logs.purestorage.com/75/933675/9/thirdparty-check/pure-devstack-cinder-tempest-iscsi-aio-jammy/96a9653/testr_results.html.gz\nNVMe - http://openstack-logs.purestorage.com/75/933675/9/thirdparty-check/pure-devstack-cinder-tempest-nvme-tcp-aio-jammy/3dc17e8/testr_results.html.gz","commit_id":"5b771d0df73a6386b3985bc752799de77a217976"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"1191413d10ff3fa6a2bcf376cbaedadc486c5ff3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"73eb3c00_d1c3ab02","updated":"2024-12-12 13:02:55.000000000","message":"Some comments inline","commit_id":"5b771d0df73a6386b3985bc752799de77a217976"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9bc6e6226fc6a06c61925b452fc3d40b77e96f96","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"9f3156fc_9bc7db4c","updated":"2024-11-21 17:19:46.000000000","message":"run Pure Storage CI","commit_id":"5b771d0df73a6386b3985bc752799de77a217976"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"768794886a7e92c9cea49ce26f24a8f198738459","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"c1373d4d_988c4f18","updated":"2024-11-21 17:51:33.000000000","message":"run Pure Storage CI","commit_id":"5b771d0df73a6386b3985bc752799de77a217976"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"25ccf6b195edb00b77646238fc478639caada932","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"84056866_9c818b08","updated":"2024-12-23 22:04:42.000000000","message":"Hi Simon, it will take some time for me to go through the entire code changes, for now I just have a few items for your evaluation.","commit_id":"0c52a324c8f74f6241dfd3100a752437b6ec2beb"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"2544fbe33f664a29b216ea4443c704bcdd075f58","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"98be3070_8f8c8965","updated":"2024-12-13 13:08:02.000000000","message":"My comments have been addressed. Hopefully zuul would pass soon.","commit_id":"0c52a324c8f74f6241dfd3100a752437b6ec2beb"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a20f11e047656df69ea30cc4a1db2cbd06afa836","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"8909e323_db862342","updated":"2024-12-16 14:43:32.000000000","message":"recheck cinder-plugin-ceph-tempest","commit_id":"0c52a324c8f74f6241dfd3100a752437b6ec2beb"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"f8dbe6e6f451ba5e7b986f9bcaff33fab1e76e62","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"661a2fa5_dc50dcd3","updated":"2024-12-12 17:12:25.000000000","message":"recheck cinder-tempest-plugin-protection-functional","commit_id":"0c52a324c8f74f6241dfd3100a752437b6ec2beb"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4fae2a43e9986b7292c615d001d1f73b6ab43c23","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"66385bc0_a0d10b69","updated":"2024-12-13 14:15:56.000000000","message":"recheck cinder-tempest-plugin-protection-functional","commit_id":"0c52a324c8f74f6241dfd3100a752437b6ec2beb"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"6620a8458839a265d5fc393c5948e3c24af6fe46","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"c81d7246_88737563","updated":"2024-12-15 22:16:35.000000000","message":"recheck cinder-tempest-plugin-protection-functional","commit_id":"0c52a324c8f74f6241dfd3100a752437b6ec2beb"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"384bfc62aade98dfc13c85bb18f7b99a78d2f4f1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"6fda47a9_c5b5f36f","updated":"2024-12-16 05:27:42.000000000","message":"recheck grenade post failure","commit_id":"0c52a324c8f74f6241dfd3100a752437b6ec2beb"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"0bd80de968daeb5e1777c4c0caa26f62d9c50999","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"5a796e8d_828b45ee","updated":"2025-01-11 01:26:45.000000000","message":"Hi Simon, thanks for working on the changes I suggested. I\u0027ve found a typo that I think it worth fixing too.","commit_id":"50f59859eec72c1cae8abf323d5ead085dc51fc1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ebc021dac3403992969d5979c8618ed427f68f8c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"41635855_29facced","updated":"2025-01-03 22:22:57.000000000","message":"recheck cinder-plugin-ceph-tempest","commit_id":"50f59859eec72c1cae8abf323d5ead085dc51fc1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"7352491c55e5ccdbe8e4a5ceaddb084aa8e09b8a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"b1cbf755_71377e52","updated":"2025-01-04 00:39:15.000000000","message":"recheck cinder-plugin-ceph-tempest","commit_id":"50f59859eec72c1cae8abf323d5ead085dc51fc1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"b1f2670b00aa338a070727ad7c5c32baf333bfb1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"636d4cea_0fe5af43","updated":"2025-01-15 01:57:20.000000000","message":"recheck","commit_id":"4a2e346face5c7fd34881d90abef0c3d022b02b3"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"d43d59eda2d134d46ba3717b2a9e12a8e3ec1637","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"bbb734e7_d58dbb1f","updated":"2025-01-15 14:00:20.000000000","message":"recheck cinder-plugin-ceph-tempest","commit_id":"4a2e346face5c7fd34881d90abef0c3d022b02b3"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"feb77de7ab604ec34fb2d53645c0447c39345f14","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"752fc2a6_08cbf40f","updated":"2025-01-24 05:48:49.000000000","message":"recheck cinder-plugin-ceph-tempest-mn-aa","commit_id":"d7784eca5dcdb1aa5bcae2b2abc807646903997e"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"47dc7a62e79e3c59652ceb57563fd872aa024f34","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"6c849802_c35ab969","updated":"2025-01-24 00:49:20.000000000","message":"recheck devstack-plugin-nfs-tempest-full","commit_id":"d7784eca5dcdb1aa5bcae2b2abc807646903997e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b2c35e545510773d157aa60ead85800c6af80596","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"98194986_e5942b86","updated":"2025-03-13 15:33:02.000000000","message":"Hold off on rechecking ... those unit test failures look legit","commit_id":"ee876ea607b33711a2a2309a1d2f4072e9576d1a"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"753691340f227effb388ff8284fc23202671f58d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"42c4de79_60b5ffb7","updated":"2025-03-12 17:15:48.000000000","message":"I don\u0027t have concerns with this.  I see the comments on duplicated code but upon speaking with Simon he indicated that the driver is going to be completely refactored in the coming months.  I am ok with merging as is and seeing those issues fixed as part of the refactoring.","commit_id":"ee876ea607b33711a2a2309a1d2f4072e9576d1a"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"816672383ac3e001e415a40c9b8999cce609c484","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"97d050b9_21c24a88","updated":"2025-03-13 16:34:21.000000000","message":"Looks like the issue really is caused by https://review.opendev.org/c/openstack/cinder/+/943384 ... see my comment on that patch.","commit_id":"ee876ea607b33711a2a2309a1d2f4072e9576d1a"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"f6aa8cce945e466bb944cc2955690f6d03d27de8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"036793d9_def4dc58","updated":"2025-02-28 18:29:03.000000000","message":"Overall looks good to me, some duplication but CI is passing.","commit_id":"ee876ea607b33711a2a2309a1d2f4072e9576d1a"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"25af9b5d2b10730154720eda299a9fbec9065479","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"cf3a869b_5f6f96b8","updated":"2025-03-13 15:41:32.000000000","message":"The 3 failing tests (actually 1 test run 3 times with ddt) were added very recently by https://review.opendev.org/c/openstack/cinder/+/943384","commit_id":"ee876ea607b33711a2a2309a1d2f4072e9576d1a"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"e6d622acb33274a8712efe093fc21aeaf7088b8a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"19cba562_736c5617","updated":"2025-03-13 12:30:53.000000000","message":"recheck","commit_id":"ee876ea607b33711a2a2309a1d2f4072e9576d1a"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"7291081d868d6752ab80e7bbe5d05eabf8418f0a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"583b1eb5_388cdc5b","updated":"2025-03-13 15:32:30.000000000","message":"recheck","commit_id":"ee876ea607b33711a2a2309a1d2f4072e9576d1a"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"19423e7df85af449c15609e494d1c3062ec0385c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"7d69a6bf_ea30a054","updated":"2025-03-12 23:54:12.000000000","message":"recheck","commit_id":"ee876ea607b33711a2a2309a1d2f4072e9576d1a"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"487e79244dcf789a42b523c2d999d73cde94f6dd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"f337c706_79efff8e","updated":"2025-03-12 20:55:18.000000000","message":"recheck","commit_id":"ee876ea607b33711a2a2309a1d2f4072e9576d1a"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"3c0e83de8c6869815e0e9f28a50463d1a17f3e7b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"faee79d9_a8dccb9a","updated":"2025-03-13 02:02:06.000000000","message":"recheck","commit_id":"ee876ea607b33711a2a2309a1d2f4072e9576d1a"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"6ce4048c4667254c978c0137f9cf77e4fd63b54c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"ac77bb75_ce34b609","updated":"2025-01-31 02:22:38.000000000","message":"run Pure Storage CI","commit_id":"ee876ea607b33711a2a2309a1d2f4072e9576d1a"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"077a26ff1f1e27c70cf0cb1abca582699f99efff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"10715442_dbf5698d","updated":"2025-03-14 18:02:51.000000000","message":"Adding my +2 back here.","commit_id":"cd3a12006b3db5073a448e419ee5674515f30ebb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b035dcf10f4bd61f6be2e4b874bac1a3dc356594","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"901a889d_ca00b976","updated":"2025-03-15 02:30:36.000000000","message":"Carrying over Jon\u0027s +2 from PS 16.","commit_id":"cd3a12006b3db5073a448e419ee5674515f30ebb"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"527106853c4ef423d433bff59f60ebb6510f48c0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"222247c0_842ccea6","updated":"2025-03-15 04:30:59.000000000","message":"recheck","commit_id":"cd3a12006b3db5073a448e419ee5674515f30ebb"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"2aa356137e9fadffa6ddcd04b2b3e8b0e63e55d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"1ae0483b_843d139a","updated":"2025-03-14 21:42:08.000000000","message":"recheck openstack-tox-docs timed out","commit_id":"cd3a12006b3db5073a448e419ee5674515f30ebb"}],"cinder/volume/drivers/pure.py":[{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"1191413d10ff3fa6a2bcf376cbaedadc486c5ff3","unresolved":true,"context_lines":[{"line_number":177,"context_line":"USER_AGENT_BASE \u003d \u0027OpenStack Cinder\u0027"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"MIN_IOPS \u003d 100"},{"line_number":180,"context_line":"MAX_IOPS \u003d 100000000"},{"line_number":181,"context_line":"MIN_BWS \u003d 1048576"},{"line_number":182,"context_line":"MAX_BWS \u003d 549755813888"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"class PureDriverException(exception.VolumeDriverException):"}],"source_content_type":"text/x-python","patch_set":9,"id":"2cad1e6a_af205b7a","line":182,"range":{"start_line":180,"start_character":0,"end_line":182,"end_character":22},"updated":"2024-12-12 13:02:55.000000000","message":"Just a suggestion. Here can we add comments as follows:\n\n100M\nMAX_IOPS \u003d 100000000\n1GB/s\nMIN_BWS \u003d 1048576\n512 GB/s\nMAX_BWS \u003d 549755813888","commit_id":"5b771d0df73a6386b3985bc752799de77a217976"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"8354979efc507a0fc90507f1603933056f919c5c","unresolved":false,"context_lines":[{"line_number":177,"context_line":"USER_AGENT_BASE \u003d \u0027OpenStack Cinder\u0027"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"MIN_IOPS \u003d 100"},{"line_number":180,"context_line":"MAX_IOPS \u003d 100000000"},{"line_number":181,"context_line":"MIN_BWS \u003d 1048576"},{"line_number":182,"context_line":"MAX_BWS \u003d 549755813888"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"class PureDriverException(exception.VolumeDriverException):"}],"source_content_type":"text/x-python","patch_set":9,"id":"f4998961_a2565982","line":182,"range":{"start_line":180,"start_character":0,"end_line":182,"end_character":22},"in_reply_to":"2cad1e6a_af205b7a","updated":"2024-12-12 14:11:57.000000000","message":"Done","commit_id":"5b771d0df73a6386b3985bc752799de77a217976"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"1191413d10ff3fa6a2bcf376cbaedadc486c5ff3","unresolved":true,"context_lines":[{"line_number":382,"context_line":"                                   vg_bw):"},{"line_number":383,"context_line":"        if not (MIN_IOPS \u003c\u003d int(vg_iop) \u003c\u003d MAX_IOPS):"},{"line_number":384,"context_line":"            msg \u003d _(\u0027vg_maxIOPS QoS error. Must be more than \u0027"},{"line_number":385,"context_line":"                    \u0027100 and less than 100000000\u0027)"},{"line_number":386,"context_line":"            raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":387,"context_line":"        if not (MIN_BWS \u003c\u003d int(vg_bw) \u003c\u003d MAX_BWS):"},{"line_number":388,"context_line":"            msg \u003d _(\u0027vg_maxBWS QoS error. Must be between \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"0b6f81bc_7159901c","line":385,"updated":"2024-12-12 13:02:55.000000000","message":"Can we use constants MIN_IOPS and MAX_IOPS ?","commit_id":"5b771d0df73a6386b3985bc752799de77a217976"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"8354979efc507a0fc90507f1603933056f919c5c","unresolved":false,"context_lines":[{"line_number":382,"context_line":"                                   vg_bw):"},{"line_number":383,"context_line":"        if not (MIN_IOPS \u003c\u003d int(vg_iop) \u003c\u003d MAX_IOPS):"},{"line_number":384,"context_line":"            msg \u003d _(\u0027vg_maxIOPS QoS error. Must be more than \u0027"},{"line_number":385,"context_line":"                    \u0027100 and less than 100000000\u0027)"},{"line_number":386,"context_line":"            raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":387,"context_line":"        if not (MIN_BWS \u003c\u003d int(vg_bw) \u003c\u003d MAX_BWS):"},{"line_number":388,"context_line":"            msg \u003d _(\u0027vg_maxBWS QoS error. Must be between \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"a7bbf161_552add38","line":385,"in_reply_to":"0b6f81bc_7159901c","updated":"2024-12-12 14:11:57.000000000","message":"Done","commit_id":"5b771d0df73a6386b3985bc752799de77a217976"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"1191413d10ff3fa6a2bcf376cbaedadc486c5ff3","unresolved":true,"context_lines":[{"line_number":386,"context_line":"            raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":387,"context_line":"        if not (MIN_BWS \u003c\u003d int(vg_bw) \u003c\u003d MAX_BWS):"},{"line_number":388,"context_line":"            msg \u003d _(\u0027vg_maxBWS QoS error. Must be between \u0027"},{"line_number":389,"context_line":"                    \u00271048576 and 549755813888\u0027)"},{"line_number":390,"context_line":"            raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":391,"context_line":"        self._create_volume_group_if_not_exist(array,"},{"line_number":392,"context_line":"                                               vgroup,"}],"source_content_type":"text/x-python","patch_set":9,"id":"74816eda_8dea9480","line":389,"updated":"2024-12-12 13:02:55.000000000","message":"same as line 385","commit_id":"5b771d0df73a6386b3985bc752799de77a217976"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"8354979efc507a0fc90507f1603933056f919c5c","unresolved":false,"context_lines":[{"line_number":386,"context_line":"            raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":387,"context_line":"        if not (MIN_BWS \u003c\u003d int(vg_bw) \u003c\u003d MAX_BWS):"},{"line_number":388,"context_line":"            msg \u003d _(\u0027vg_maxBWS QoS error. Must be between \u0027"},{"line_number":389,"context_line":"                    \u00271048576 and 549755813888\u0027)"},{"line_number":390,"context_line":"            raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":391,"context_line":"        self._create_volume_group_if_not_exist(array,"},{"line_number":392,"context_line":"                                               vgroup,"}],"source_content_type":"text/x-python","patch_set":9,"id":"c28e64fc_81b5013b","line":389,"in_reply_to":"74816eda_8dea9480","updated":"2024-12-12 14:11:57.000000000","message":"Done","commit_id":"5b771d0df73a6386b3985bc752799de77a217976"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"1191413d10ff3fa6a2bcf376cbaedadc486c5ff3","unresolved":true,"context_lines":[{"line_number":720,"context_line":""},{"line_number":721,"context_line":"        Note that if a vgroup is specified in the volume type"},{"line_number":722,"context_line":"        extra_spec then we do not apply volume level qos as this is"},{"line_number":723,"context_line":"        incompatable with volume group qos settings."},{"line_number":724,"context_line":""},{"line_number":725,"context_line":"        We will force a volume group to have the maximum qos settings"},{"line_number":726,"context_line":"        if not specified in the volume type extra_spec as this can"}],"source_content_type":"text/x-python","patch_set":9,"id":"4724ad61_274a6d95","line":723,"range":{"start_line":723,"start_character":8,"end_line":723,"end_character":20},"updated":"2024-12-12 13:02:55.000000000","message":"typo: incompatible","commit_id":"5b771d0df73a6386b3985bc752799de77a217976"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"8354979efc507a0fc90507f1603933056f919c5c","unresolved":false,"context_lines":[{"line_number":720,"context_line":""},{"line_number":721,"context_line":"        Note that if a vgroup is specified in the volume type"},{"line_number":722,"context_line":"        extra_spec then we do not apply volume level qos as this is"},{"line_number":723,"context_line":"        incompatable with volume group qos settings."},{"line_number":724,"context_line":""},{"line_number":725,"context_line":"        We will force a volume group to have the maximum qos settings"},{"line_number":726,"context_line":"        if not specified in the volume type extra_spec as this can"}],"source_content_type":"text/x-python","patch_set":9,"id":"be21f45b_fc199011","line":723,"range":{"start_line":723,"start_character":8,"end_line":723,"end_character":20},"in_reply_to":"4724ad61_274a6d95","updated":"2024-12-12 14:11:57.000000000","message":"Done","commit_id":"5b771d0df73a6386b3985bc752799de77a217976"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"1191413d10ff3fa6a2bcf376cbaedadc486c5ff3","unresolved":true,"context_lines":[{"line_number":2281,"context_line":"                raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":2282,"context_line":"            if bw_qos !\u003d 0 and not (MIN_BWS \u003c\u003d bw_qos \u003c\u003d MAX_BWS):"},{"line_number":2283,"context_line":"                msg \u003d _(\u0027maxBWS QoS error. Must be between \u0027"},{"line_number":2284,"context_line":"                        \u00271 and 524288\u0027)"},{"line_number":2285,"context_line":"                raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":2286,"context_line":""},{"line_number":2287,"context_line":"            qos[\u0027maxIOPS\u0027] \u003d iops_qos"}],"source_content_type":"text/x-python","patch_set":9,"id":"ee57bef4_87de23be","line":2284,"range":{"start_line":2284,"start_character":25,"end_line":2284,"end_character":26},"updated":"2024-12-12 13:02:55.000000000","message":"should this be 1024 ?","commit_id":"5b771d0df73a6386b3985bc752799de77a217976"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"8354979efc507a0fc90507f1603933056f919c5c","unresolved":false,"context_lines":[{"line_number":2281,"context_line":"                raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":2282,"context_line":"            if bw_qos !\u003d 0 and not (MIN_BWS \u003c\u003d bw_qos \u003c\u003d MAX_BWS):"},{"line_number":2283,"context_line":"                msg \u003d _(\u0027maxBWS QoS error. Must be between \u0027"},{"line_number":2284,"context_line":"                        \u00271 and 524288\u0027)"},{"line_number":2285,"context_line":"                raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":2286,"context_line":""},{"line_number":2287,"context_line":"            qos[\u0027maxIOPS\u0027] \u003d iops_qos"}],"source_content_type":"text/x-python","patch_set":9,"id":"5755b0b3_e441a6b4","line":2284,"range":{"start_line":2284,"start_character":25,"end_line":2284,"end_character":26},"in_reply_to":"ee57bef4_87de23be","updated":"2024-12-12 14:11:57.000000000","message":"Done","commit_id":"5b771d0df73a6386b3985bc752799de77a217976"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"4d5f17eb0b6985a4a309495d16f5b3e2d546a3fa","unresolved":true,"context_lines":[{"line_number":417,"context_line":"                         vg_bw):"},{"line_number":418,"context_line":"        if not (MIN_IOPS \u003c\u003d int(vg_iop) \u003c\u003d MAX_IOPS):"},{"line_number":419,"context_line":"            msg \u003d _(\u0027vg_maxIOPS QoS error. Must be more than \u0027"},{"line_number":420,"context_line":"                    \u0027100 and less than 100000000\u0027)"},{"line_number":421,"context_line":"            raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":422,"context_line":"        if not (MIN_BWS \u003c\u003d int(vg_bw) \u003c\u003d MAX_BWS):"},{"line_number":423,"context_line":"            msg \u003d _(\u0027vg_maxBWS QoS error. Must be between \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"e91b274a_b9fa7758","line":420,"updated":"2024-12-23 22:02:24.000000000","message":"It makes sense using the constants MIN_IOPS and MAX_IOPS for building this error message as in lines #384 and #389.","commit_id":"0c52a324c8f74f6241dfd3100a752437b6ec2beb"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4321f889c1f71a45d0c8919e48e1371ed809d245","unresolved":false,"context_lines":[{"line_number":417,"context_line":"                         vg_bw):"},{"line_number":418,"context_line":"        if not (MIN_IOPS \u003c\u003d int(vg_iop) \u003c\u003d MAX_IOPS):"},{"line_number":419,"context_line":"            msg \u003d _(\u0027vg_maxIOPS QoS error. Must be more than \u0027"},{"line_number":420,"context_line":"                    \u0027100 and less than 100000000\u0027)"},{"line_number":421,"context_line":"            raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":422,"context_line":"        if not (MIN_BWS \u003c\u003d int(vg_bw) \u003c\u003d MAX_BWS):"},{"line_number":423,"context_line":"            msg \u003d _(\u0027vg_maxBWS QoS error. Must be between \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"23bd6c3a_fcc66515","line":420,"in_reply_to":"e91b274a_b9fa7758","updated":"2025-01-03 20:00:31.000000000","message":"Done","commit_id":"0c52a324c8f74f6241dfd3100a752437b6ec2beb"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"4d5f17eb0b6985a4a309495d16f5b3e2d546a3fa","unresolved":true,"context_lines":[{"line_number":420,"context_line":"                    \u0027100 and less than 100000000\u0027)"},{"line_number":421,"context_line":"            raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":422,"context_line":"        if not (MIN_BWS \u003c\u003d int(vg_bw) \u003c\u003d MAX_BWS):"},{"line_number":423,"context_line":"            msg \u003d _(\u0027vg_maxBWS QoS error. Must be between \u0027"},{"line_number":424,"context_line":"                    \u00271048576 and 549755813888\u0027)"},{"line_number":425,"context_line":"            raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":426,"context_line":"        self._create_volume_group_if_not_exist(array,"}],"source_content_type":"text/x-python","patch_set":11,"id":"642d4956_e5e258af","line":423,"updated":"2024-12-23 22:02:24.000000000","message":"It makes sense using the constants MIN_BWS and MAX_BWS for building this error message as in lines #384 and #389.","commit_id":"0c52a324c8f74f6241dfd3100a752437b6ec2beb"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4321f889c1f71a45d0c8919e48e1371ed809d245","unresolved":false,"context_lines":[{"line_number":420,"context_line":"                    \u0027100 and less than 100000000\u0027)"},{"line_number":421,"context_line":"            raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":422,"context_line":"        if not (MIN_BWS \u003c\u003d int(vg_bw) \u003c\u003d MAX_BWS):"},{"line_number":423,"context_line":"            msg \u003d _(\u0027vg_maxBWS QoS error. Must be between \u0027"},{"line_number":424,"context_line":"                    \u00271048576 and 549755813888\u0027)"},{"line_number":425,"context_line":"            raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":426,"context_line":"        self._create_volume_group_if_not_exist(array,"}],"source_content_type":"text/x-python","patch_set":11,"id":"0263de55_c4f83a78","line":423,"in_reply_to":"642d4956_e5e258af","updated":"2025-01-03 20:00:31.000000000","message":"Done","commit_id":"0c52a324c8f74f6241dfd3100a752437b6ec2beb"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"4d5f17eb0b6985a4a309495d16f5b3e2d546a3fa","unresolved":true,"context_lines":[{"line_number":3112,"context_line":"                                            {\"vgroup\": vgname,"},{"line_number":3113,"context_line":"                                             \"error\": res.errors[0].message})"},{"line_number":3114,"context_line":"                    return"},{"line_number":3115,"context_line":"                if list(source_array.get_volume_groups("},{"line_number":3116,"context_line":"                        names\u003d[vgname]).items)[0].destroyed:"},{"line_number":3117,"context_line":"                    ctxt.reraise \u003d False"},{"line_number":3118,"context_line":"                    LOG.warning(\"Volume group %s is deleted but not\""}],"source_content_type":"text/x-python","patch_set":11,"id":"c9961f7d_ac5f8820","line":3115,"updated":"2024-12-23 22:02:24.000000000","message":"Could the vgroup doesn\u0027t exist in the back-end at all at this point? I\u0027m asking because accessing a empty volume group list with `).items)[0].destroyed` will result in another exception.","commit_id":"0c52a324c8f74f6241dfd3100a752437b6ec2beb"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"0bd80de968daeb5e1777c4c0caa26f62d9c50999","unresolved":false,"context_lines":[{"line_number":3112,"context_line":"                                            {\"vgroup\": vgname,"},{"line_number":3113,"context_line":"                                             \"error\": res.errors[0].message})"},{"line_number":3114,"context_line":"                    return"},{"line_number":3115,"context_line":"                if list(source_array.get_volume_groups("},{"line_number":3116,"context_line":"                        names\u003d[vgname]).items)[0].destroyed:"},{"line_number":3117,"context_line":"                    ctxt.reraise \u003d False"},{"line_number":3118,"context_line":"                    LOG.warning(\"Volume group %s is deleted but not\""}],"source_content_type":"text/x-python","patch_set":11,"id":"d7ebdc07_658648f6","line":3115,"in_reply_to":"9d66b31f_a8d4c90b","updated":"2025-01-11 01:26:45.000000000","message":"Acknowledged","commit_id":"0c52a324c8f74f6241dfd3100a752437b6ec2beb"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4321f889c1f71a45d0c8919e48e1371ed809d245","unresolved":true,"context_lines":[{"line_number":3112,"context_line":"                                            {\"vgroup\": vgname,"},{"line_number":3113,"context_line":"                                             \"error\": res.errors[0].message})"},{"line_number":3114,"context_line":"                    return"},{"line_number":3115,"context_line":"                if list(source_array.get_volume_groups("},{"line_number":3116,"context_line":"                        names\u003d[vgname]).items)[0].destroyed:"},{"line_number":3117,"context_line":"                    ctxt.reraise \u003d False"},{"line_number":3118,"context_line":"                    LOG.warning(\"Volume group %s is deleted but not\""}],"source_content_type":"text/x-python","patch_set":11,"id":"9d66b31f_a8d4c90b","line":3115,"in_reply_to":"c9961f7d_ac5f8820","updated":"2025-01-03 20:00:31.000000000","message":"The existance of the volume group has previously been checked, line 3090, so there will always be a response to this call","commit_id":"0c52a324c8f74f6241dfd3100a752437b6ec2beb"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"4d5f17eb0b6985a4a309495d16f5b3e2d546a3fa","unresolved":true,"context_lines":[{"line_number":3119,"context_line":"                                \" eradicated - will recreate.\", vgname)"},{"line_number":3120,"context_line":"                    source_array.delete_volume_groups(names\u003d[vgname])"},{"line_number":3121,"context_line":""},{"line_number":3122,"context_line":"                    self._create_volume_group_if_not_exist(source_array,"},{"line_number":3123,"context_line":"                                                           vgname,"},{"line_number":3124,"context_line":"                                                           vg_iops,"},{"line_number":3125,"context_line":"                                                           vg_bws)"}],"source_content_type":"text/x-python","patch_set":11,"id":"d4ac68fb_bc84b086","line":3122,"updated":"2024-12-23 22:02:24.000000000","message":"I\u0027m wondering if the driver could get stuck trying to recreate a volume in case it never changes to the desired state. Consider adding a `@utils.retry` with a fixed number of retries and backoff rate, as this would give the driver a chance to fail in case the volume never completes the deletion in back-end side for any reason.","commit_id":"0c52a324c8f74f6241dfd3100a752437b6ec2beb"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"0bd80de968daeb5e1777c4c0caa26f62d9c50999","unresolved":true,"context_lines":[{"line_number":3119,"context_line":"                                \" eradicated - will recreate.\", vgname)"},{"line_number":3120,"context_line":"                    source_array.delete_volume_groups(names\u003d[vgname])"},{"line_number":3121,"context_line":""},{"line_number":3122,"context_line":"                    self._create_volume_group_if_not_exist(source_array,"},{"line_number":3123,"context_line":"                                                           vgname,"},{"line_number":3124,"context_line":"                                                           vg_iops,"},{"line_number":3125,"context_line":"                                                           vg_bws)"}],"source_content_type":"text/x-python","patch_set":11,"id":"f67e754b_01f9991a","line":3122,"in_reply_to":"96778e07_8d3ffe78","updated":"2025-01-11 01:26:45.000000000","message":"Oh! Sorry, Simon! I was aware this was about volume groups and not actual volumes, and the volume word alone was a phrasing mistake. 😞\n\nStill, I don\u0027t think a recursive code for retrying a volume group creation (which depends on an external component) is a safe approach. This may lead to the driver getting stuck if the Storage\u0027s API doesn\u0027t behave as expected or the volume group never gets to the state you would like. If it is certain that the volume group creation will succeed in a second (or third) run you could just limit the number of retries to just a few with @uitls.retry.","commit_id":"0c52a324c8f74f6241dfd3100a752437b6ec2beb"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4321f889c1f71a45d0c8919e48e1371ed809d245","unresolved":true,"context_lines":[{"line_number":3119,"context_line":"                                \" eradicated - will recreate.\", vgname)"},{"line_number":3120,"context_line":"                    source_array.delete_volume_groups(names\u003d[vgname])"},{"line_number":3121,"context_line":""},{"line_number":3122,"context_line":"                    self._create_volume_group_if_not_exist(source_array,"},{"line_number":3123,"context_line":"                                                           vgname,"},{"line_number":3124,"context_line":"                                                           vg_iops,"},{"line_number":3125,"context_line":"                                                           vg_bws)"}],"source_content_type":"text/x-python","patch_set":11,"id":"96778e07_8d3ffe78","line":3122,"in_reply_to":"d4ac68fb_bc84b086","updated":"2025-01-03 20:00:31.000000000","message":"This isn\u0027t a volume, but a construct called a volume group. The logic here is a duplicate of that used with protection group.","commit_id":"0c52a324c8f74f6241dfd3100a752437b6ec2beb"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ff619b750986765eec6fb88262aa013fdeb731ee","unresolved":true,"context_lines":[{"line_number":3119,"context_line":"                                \" eradicated - will recreate.\", vgname)"},{"line_number":3120,"context_line":"                    source_array.delete_volume_groups(names\u003d[vgname])"},{"line_number":3121,"context_line":""},{"line_number":3122,"context_line":"                    self._create_volume_group_if_not_exist(source_array,"},{"line_number":3123,"context_line":"                                                           vgname,"},{"line_number":3124,"context_line":"                                                           vg_iops,"},{"line_number":3125,"context_line":"                                                           vg_bws)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a345182_aba0c399","line":3122,"in_reply_to":"f67e754b_01f9991a","updated":"2025-01-14 22:06:07.000000000","message":"This is not really recursive code. We check to see if the volume group exists and if it does, is it in a deleted state. We need the volume group to not be in a deleted state, therefore if we find it in this state we eradicate it and then recreate it.","commit_id":"0c52a324c8f74f6241dfd3100a752437b6ec2beb"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"0bd80de968daeb5e1777c4c0caa26f62d9c50999","unresolved":true,"context_lines":[{"line_number":2589,"context_line":"                           {\u0027min_iops\u0027: MIN_IOPS, \u0027max_iops\u0027: MAX_IOPS})"},{"line_number":2590,"context_line":"                    raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":2591,"context_line":"                if not (MIN_BWS \u003c\u003d int(vg_bws) \u003c\u003d MAX_BWS):"},{"line_number":2592,"context_line":"                    msg \u003d (_(\u0027vg_maxBWS QoS error. Must be between \u0027"},{"line_number":2593,"context_line":"                             \u0027%(min_bws)s and less than %(max_bws)s\u0027) %"},{"line_number":2594,"context_line":"                           {\u0027min_bws\u0027: MIN_BWS, \u0027max_bws\u0027: MAX_BWS})"},{"line_number":2595,"context_line":"                    raise exception.InvalidQoSSpecs(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"a90bcfc4_5dd051f6","line":2592,"updated":"2025-01-11 01:26:45.000000000","message":"typo: \u0027s/Must be between/Must be more than/\u0027","commit_id":"50f59859eec72c1cae8abf323d5ead085dc51fc1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ff619b750986765eec6fb88262aa013fdeb731ee","unresolved":false,"context_lines":[{"line_number":2589,"context_line":"                           {\u0027min_iops\u0027: MIN_IOPS, \u0027max_iops\u0027: MAX_IOPS})"},{"line_number":2590,"context_line":"                    raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":2591,"context_line":"                if not (MIN_BWS \u003c\u003d int(vg_bws) \u003c\u003d MAX_BWS):"},{"line_number":2592,"context_line":"                    msg \u003d (_(\u0027vg_maxBWS QoS error. Must be between \u0027"},{"line_number":2593,"context_line":"                             \u0027%(min_bws)s and less than %(max_bws)s\u0027) %"},{"line_number":2594,"context_line":"                           {\u0027min_bws\u0027: MIN_BWS, \u0027max_bws\u0027: MAX_BWS})"},{"line_number":2595,"context_line":"                    raise exception.InvalidQoSSpecs(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"08bc4a54_f7535f2e","line":2592,"in_reply_to":"a90bcfc4_5dd051f6","updated":"2025-01-14 22:06:07.000000000","message":"Acknowledged","commit_id":"50f59859eec72c1cae8abf323d5ead085dc51fc1"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"f5e42e9884fca7fc116cfacb62e2f292013aeefb","unresolved":true,"context_lines":[{"line_number":429,"context_line":"                                               vgroup,"},{"line_number":430,"context_line":"                                               int(vg_iop),"},{"line_number":431,"context_line":"                                               int(vg_bw))"},{"line_number":432,"context_line":"        vg_volname \u003d vgroup + \"/\" + vol_name"},{"line_number":433,"context_line":"        if self._array.safemode:"},{"line_number":434,"context_line":"            array.post_volumes(names\u003d[vg_volname],"},{"line_number":435,"context_line":"                               with_default_protection\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":16,"id":"9991c8eb_224b699a","line":432,"range":{"start_line":432,"start_character":8,"end_line":432,"end_character":44},"updated":"2025-03-12 06:57:00.000000000","message":"This could be a lambda, I see vg_volname getting created in 2 places, would help with future usage as well.","commit_id":"ee876ea607b33711a2a2309a1d2f4072e9576d1a"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"f6aa8cce945e466bb944cc2955690f6d03d27de8","unresolved":true,"context_lines":[{"line_number":758,"context_line":"                                          vg_volname)"},{"line_number":759,"context_line":"            else:"},{"line_number":760,"context_line":"                qos \u003d self._get_qos_settings(volume_type)"},{"line_number":761,"context_line":"        if qos is not None:"},{"line_number":762,"context_line":"            self.create_with_qos(current_array, vol_name, vol_size, qos)"},{"line_number":763,"context_line":"        else:"},{"line_number":764,"context_line":"            if self._array.safemode:"}],"source_content_type":"text/x-python","patch_set":16,"id":"65663670_e647f883","line":761,"updated":"2025-02-28 18:29:03.000000000","message":"The above addition is identical to the one below at line 791, a function would be more appropriate than duplication.","commit_id":"ee876ea607b33711a2a2309a1d2f4072e9576d1a"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"f5e42e9884fca7fc116cfacb62e2f292013aeefb","unresolved":true,"context_lines":[{"line_number":2665,"context_line":""},{"line_number":2666,"context_line":"        current_array \u003d self._get_current_array()"},{"line_number":2667,"context_line":"        # Now check if we are retyping to/from a type with volume groups"},{"line_number":2668,"context_line":"        if \"/\" in self._get_vol_name(volume):"},{"line_number":2669,"context_line":"            source_vg \u003d self._get_vol_name(volume).split(\u0027/\u0027)[0]"},{"line_number":2670,"context_line":"        if self._get_volume_type_extra_spec(new_type[\u0027id\u0027], \u0027vg_name\u0027):"},{"line_number":2671,"context_line":"            target_vg \u003d self._get_volume_type_extra_spec(new_type[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":16,"id":"100cd318_4273a6dc","line":2668,"range":{"start_line":2668,"start_character":8,"end_line":2668,"end_character":45},"updated":"2025-03-12 06:57:00.000000000","message":"Instead of checking for \"/\" in volume name, you could directly check if \u0027vg_name\u0027 extra-spec is set in volume-type to determine whether the volume is from a volume group, as you are already doing that in line 2670.","commit_id":"ee876ea607b33711a2a2309a1d2f4072e9576d1a"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"f6aa8cce945e466bb944cc2955690f6d03d27de8","unresolved":true,"context_lines":[{"line_number":2691,"context_line":"                             \u0027%(min_bws)s and less than %(max_bws)s\u0027) %"},{"line_number":2692,"context_line":"                           {\u0027min_bws\u0027: MIN_BWS, \u0027max_bws\u0027: MAX_BWS})"},{"line_number":2693,"context_line":"                    raise exception.InvalidQoSSpecs(message\u003dmsg)"},{"line_number":2694,"context_line":"                self._create_volume_group_if_not_exist(current_array,"},{"line_number":2695,"context_line":"                                                       target_vg,"},{"line_number":2696,"context_line":"                                                       vg_iops,"},{"line_number":2697,"context_line":"                                                       vg_bws)"}],"source_content_type":"text/x-python","patch_set":16,"id":"a81c80ef_641201e2","line":2694,"updated":"2025-02-28 18:29:03.000000000","message":"The code above and around this line appears to be duplicated (or quite close) 3 or 4 times above, it\u0027s not my driver so I just wanted to mentioned it, I think this could be consolidated a bit.","commit_id":"ee876ea607b33711a2a2309a1d2f4072e9576d1a"}],"doc/source/configuration/block-storage/drivers/pure-storage-driver.rst":[{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"1191413d10ff3fa6a2bcf376cbaedadc486c5ff3","unresolved":true,"context_lines":[{"line_number":407,"context_line":"volumes of a particular volume type, the volumes are created on storage"},{"line_number":408,"context_line":"backends that meet the list of requirements. In the case of Pure Storage, these"},{"line_number":409,"context_line":"vendor-specific extra specs can be used to bring all volumes of a specific"},{"line_number":410,"context_line":"volume type into a construct known as a volume group. Additionally, have"},{"line_number":411,"context_line":"storage quality of service limits can be applied to the volume group."},{"line_number":412,"context_line":"Use the specs in the following table to configure volume groups and"},{"line_number":413,"context_line":"associate with a volume type. Define Block Storage volume types by using"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9dc1edb6_7d5d735c","line":410,"range":{"start_line":410,"start_character":67,"end_line":410,"end_character":72},"updated":"2024-12-12 13:02:55.000000000","message":"typo/grammar: s/have/the ?","commit_id":"5b771d0df73a6386b3985bc752799de77a217976"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"8354979efc507a0fc90507f1603933056f919c5c","unresolved":false,"context_lines":[{"line_number":407,"context_line":"volumes of a particular volume type, the volumes are created on storage"},{"line_number":408,"context_line":"backends that meet the list of requirements. In the case of Pure Storage, these"},{"line_number":409,"context_line":"vendor-specific extra specs can be used to bring all volumes of a specific"},{"line_number":410,"context_line":"volume type into a construct known as a volume group. Additionally, have"},{"line_number":411,"context_line":"storage quality of service limits can be applied to the volume group."},{"line_number":412,"context_line":"Use the specs in the following table to configure volume groups and"},{"line_number":413,"context_line":"associate with a volume type. Define Block Storage volume types by using"}],"source_content_type":"text/x-rst","patch_set":9,"id":"8b0c915d_6b08ec01","line":410,"range":{"start_line":410,"start_character":67,"end_line":410,"end_character":72},"in_reply_to":"9dc1edb6_7d5d735c","updated":"2024-12-12 14:11:57.000000000","message":"Done","commit_id":"5b771d0df73a6386b3985bc752799de77a217976"}]}
