)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":33082,"name":"Christophe Drevet","display_name":"dr4Ke","email":"cdr@antemeta.fr","username":"dr4Ke"},"change_message_id":"e905c8f919edacad441c05bd2d283a5d4b432b38","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"7ff7eb92_f52f9321","updated":"2023-11-30 18:18:50.000000000","message":"Just resolve these comments since this is long merged.","commit_id":"7aa5e95d48c1bd0110001fb967c80e101f5b94dd"}],"cinder/volume/drivers/pure.py":[{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"a5adec4d445250ecbd215141d30557ec631ca62d","unresolved":true,"context_lines":[{"line_number":87,"context_line":"                    \"connect to. Default will allow connection to any \""},{"line_number":88,"context_line":"                    \"IPv4 address. This parameter now supports IPv6 subnets. \""},{"line_number":89,"context_line":"                    \"Ignored when pure_iscsi_cidrs is set.\"),"},{"line_number":90,"context_line":"    cfg.ListOpt(\"pure_iscsi_cidrs\", default\u003d[],"},{"line_number":91,"context_line":"                help\u003d\"Comma-separated list of CIDR of FlashArray iSCSI \""},{"line_number":92,"context_line":"                     \"targets hosts are allowed to connect to. It supports \""},{"line_number":93,"context_line":"                     \"IPv4 and IPv6 subnets. This parameter superceeds \""}],"source_content_type":"text/x-python","patch_set":5,"id":"742efeac_cba77e58","line":90,"updated":"2021-02-09 10:36:23.000000000","message":"Small query:\nThere is just one character difference (\"s\") between new option \"pure_iscsi_cidrs\" and existing option \"pure_iscsi_cidr\".\nTo make the difference more visible, can the new option be named like \"pure_iscsi_cidr_list\" or \"pure_iscsi_multiple_cidr\" ?\nThis is just my opinion.\nI leave it to author \u0026 core reviewers to take decision.\nThanks.","commit_id":"850336fa00b4fb28fcbf8ca2e078ccfa8e19a685"},{"author":{"_account_id":33082,"name":"Christophe Drevet","display_name":"dr4Ke","email":"cdr@antemeta.fr","username":"dr4Ke"},"change_message_id":"f84c4e1214dbfcda778939b72b272f23c633f249","unresolved":true,"context_lines":[{"line_number":87,"context_line":"                    \"connect to. Default will allow connection to any \""},{"line_number":88,"context_line":"                    \"IPv4 address. This parameter now supports IPv6 subnets. \""},{"line_number":89,"context_line":"                    \"Ignored when pure_iscsi_cidrs is set.\"),"},{"line_number":90,"context_line":"    cfg.ListOpt(\"pure_iscsi_cidrs\", default\u003d[],"},{"line_number":91,"context_line":"                help\u003d\"Comma-separated list of CIDR of FlashArray iSCSI \""},{"line_number":92,"context_line":"                     \"targets hosts are allowed to connect to. It supports \""},{"line_number":93,"context_line":"                     \"IPv4 and IPv6 subnets. This parameter superceeds \""}],"source_content_type":"text/x-python","patch_set":5,"id":"b141bc83_5ffd904f","line":90,"in_reply_to":"5a03f4fe_5b37278d","updated":"2021-02-12 08:04:27.000000000","message":"I\u0027ve just updated the change to use \"pure_iscsi_cidr_list\".","commit_id":"850336fa00b4fb28fcbf8ca2e078ccfa8e19a685"},{"author":{"_account_id":33082,"name":"Christophe Drevet","display_name":"dr4Ke","email":"cdr@antemeta.fr","username":"dr4Ke"},"change_message_id":"b54b4d2049462013d6bace03b63bad3718da50e2","unresolved":true,"context_lines":[{"line_number":87,"context_line":"                    \"connect to. Default will allow connection to any \""},{"line_number":88,"context_line":"                    \"IPv4 address. This parameter now supports IPv6 subnets. \""},{"line_number":89,"context_line":"                    \"Ignored when pure_iscsi_cidrs is set.\"),"},{"line_number":90,"context_line":"    cfg.ListOpt(\"pure_iscsi_cidrs\", default\u003d[],"},{"line_number":91,"context_line":"                help\u003d\"Comma-separated list of CIDR of FlashArray iSCSI \""},{"line_number":92,"context_line":"                     \"targets hosts are allowed to connect to. It supports \""},{"line_number":93,"context_line":"                     \"IPv4 and IPv6 subnets. This parameter superceeds \""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a03f4fe_5b37278d","line":90,"in_reply_to":"742efeac_cba77e58","updated":"2021-02-09 12:54:12.000000000","message":"You\u0027re right. I don\u0027t mind either. Maybe we could call it something like \"pure_iscsi_allowed_portals\". It would be more meaningful, I guess.","commit_id":"850336fa00b4fb28fcbf8ca2e078ccfa8e19a685"},{"author":{"_account_id":33082,"name":"Christophe Drevet","display_name":"dr4Ke","email":"cdr@antemeta.fr","username":"dr4Ke"},"change_message_id":"e905c8f919edacad441c05bd2d283a5d4b432b38","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                    \"connect to. Default will allow connection to any \""},{"line_number":88,"context_line":"                    \"IPv4 address. This parameter now supports IPv6 subnets. \""},{"line_number":89,"context_line":"                    \"Ignored when pure_iscsi_cidrs is set.\"),"},{"line_number":90,"context_line":"    cfg.ListOpt(\"pure_iscsi_cidrs\", default\u003d[],"},{"line_number":91,"context_line":"                help\u003d\"Comma-separated list of CIDR of FlashArray iSCSI \""},{"line_number":92,"context_line":"                     \"targets hosts are allowed to connect to. It supports \""},{"line_number":93,"context_line":"                     \"IPv4 and IPv6 subnets. This parameter superceeds \""}],"source_content_type":"text/x-python","patch_set":5,"id":"8b27382b_601383dd","line":90,"in_reply_to":"b141bc83_5ffd904f","updated":"2023-11-30 18:18:50.000000000","message":"Done","commit_id":"850336fa00b4fb28fcbf8ca2e078ccfa8e19a685"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ac3f0107f762402e3b32f03e9ad43be5108dcf43","unresolved":true,"context_lines":[{"line_number":87,"context_line":"                    \"connect to. Default will allow connection to any \""},{"line_number":88,"context_line":"                    \"IPv4 address. This parameter now supports IPv6 subnets. \""},{"line_number":89,"context_line":"                    \"Ignored when pure_iscsi_cidr_list is set.\"),"},{"line_number":90,"context_line":"    cfg.ListOpt(\"pure_iscsi_cidr_list\", default\u003d[],"},{"line_number":91,"context_line":"                help\u003d\"Comma-separated list of CIDR of FlashArray iSCSI \""},{"line_number":92,"context_line":"                     \"targets hosts are allowed to connect to. It supports \""},{"line_number":93,"context_line":"                     \"IPv4 and IPv6 subnets. This parameter superceeds \""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa929081_c121c1cf","line":90,"updated":"2021-02-12 15:29:56.000000000","message":"I think you may have to make the default None. When this driver gets merged into cinderlib ready for inclusion into the Ember CSI driver, I think the YAML for the operator gets confused with empty lists.","commit_id":"ef4bdf26dcc8f7a5ae56c739ffc8b81f6b18868a"},{"author":{"_account_id":33082,"name":"Christophe Drevet","display_name":"dr4Ke","email":"cdr@antemeta.fr","username":"dr4Ke"},"change_message_id":"e905c8f919edacad441c05bd2d283a5d4b432b38","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                    \"connect to. Default will allow connection to any \""},{"line_number":88,"context_line":"                    \"IPv4 address. This parameter now supports IPv6 subnets. \""},{"line_number":89,"context_line":"                    \"Ignored when pure_iscsi_cidr_list is set.\"),"},{"line_number":90,"context_line":"    cfg.ListOpt(\"pure_iscsi_cidr_list\", default\u003d[],"},{"line_number":91,"context_line":"                help\u003d\"Comma-separated list of CIDR of FlashArray iSCSI \""},{"line_number":92,"context_line":"                     \"targets hosts are allowed to connect to. It supports \""},{"line_number":93,"context_line":"                     \"IPv4 and IPv6 subnets. This parameter superceeds \""}],"source_content_type":"text/x-python","patch_set":6,"id":"3d08a3f4_3bc1a9d8","line":90,"in_reply_to":"b1122e46_8fd9d9e5","updated":"2023-11-30 18:18:50.000000000","message":"Done","commit_id":"ef4bdf26dcc8f7a5ae56c739ffc8b81f6b18868a"},{"author":{"_account_id":33082,"name":"Christophe Drevet","display_name":"dr4Ke","email":"cdr@antemeta.fr","username":"dr4Ke"},"change_message_id":"e213a9eac0011283d9705b2f5dbcf27d5794fe44","unresolved":true,"context_lines":[{"line_number":87,"context_line":"                    \"connect to. Default will allow connection to any \""},{"line_number":88,"context_line":"                    \"IPv4 address. This parameter now supports IPv6 subnets. \""},{"line_number":89,"context_line":"                    \"Ignored when pure_iscsi_cidr_list is set.\"),"},{"line_number":90,"context_line":"    cfg.ListOpt(\"pure_iscsi_cidr_list\", default\u003d[],"},{"line_number":91,"context_line":"                help\u003d\"Comma-separated list of CIDR of FlashArray iSCSI \""},{"line_number":92,"context_line":"                     \"targets hosts are allowed to connect to. It supports \""},{"line_number":93,"context_line":"                     \"IPv4 and IPv6 subnets. This parameter superceeds \""}],"source_content_type":"text/x-python","patch_set":6,"id":"b1122e46_8fd9d9e5","line":90,"in_reply_to":"fa929081_c121c1cf","updated":"2021-02-12 16:33:41.000000000","message":"That\u0027s odd. This kind of default is being used in other cinder drivers. I\u0027ve changed it anyway.","commit_id":"ef4bdf26dcc8f7a5ae56c739ffc8b81f6b18868a"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"514a3509164b4ad362835a4e2fafa6ca7f712103","unresolved":true,"context_lines":[{"line_number":90,"context_line":"    cfg.ListOpt(\"pure_iscsi_cidr_list\", default\u003dNone,"},{"line_number":91,"context_line":"                help\u003d\"Comma-separated list of CIDR of FlashArray iSCSI \""},{"line_number":92,"context_line":"                     \"targets hosts are allowed to connect to. It supports \""},{"line_number":93,"context_line":"                     \"IPv4 and IPv6 subnets. This parameter superceeds \""},{"line_number":94,"context_line":"                     \"pure_iscsi_cidr.\"),"},{"line_number":95,"context_line":"    cfg.BoolOpt(\"pure_eradicate_on_delete\","},{"line_number":96,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":8,"id":"cc42bd34_645ba3a9","line":93,"range":{"start_line":93,"start_character":60,"end_line":93,"end_character":70},"updated":"2021-02-19 22:31:20.000000000","message":"nit: either \u0027supersedes\u0027 or \u0027supercedes\u0027 (key thing is to remove the double-e)","commit_id":"39e21752d999c8fa51dfa56533d327c0e7ebcdcd"},{"author":{"_account_id":33082,"name":"Christophe Drevet","display_name":"dr4Ke","email":"cdr@antemeta.fr","username":"dr4Ke"},"change_message_id":"73160ba83979e20214d0cea4b1737a9dea095b4d","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    cfg.ListOpt(\"pure_iscsi_cidr_list\", default\u003dNone,"},{"line_number":91,"context_line":"                help\u003d\"Comma-separated list of CIDR of FlashArray iSCSI \""},{"line_number":92,"context_line":"                     \"targets hosts are allowed to connect to. It supports \""},{"line_number":93,"context_line":"                     \"IPv4 and IPv6 subnets. This parameter superceeds \""},{"line_number":94,"context_line":"                     \"pure_iscsi_cidr.\"),"},{"line_number":95,"context_line":"    cfg.BoolOpt(\"pure_eradicate_on_delete\","},{"line_number":96,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":8,"id":"c946bddf_1566422a","line":93,"range":{"start_line":93,"start_character":60,"end_line":93,"end_character":70},"in_reply_to":"082476e8_416dffe8","updated":"2021-02-22 17:22:46.000000000","message":"Done","commit_id":"39e21752d999c8fa51dfa56533d327c0e7ebcdcd"},{"author":{"_account_id":33082,"name":"Christophe Drevet","display_name":"dr4Ke","email":"cdr@antemeta.fr","username":"dr4Ke"},"change_message_id":"20ba2ce0d28c01a7eecd6729d70cc00d72d8c07d","unresolved":true,"context_lines":[{"line_number":90,"context_line":"    cfg.ListOpt(\"pure_iscsi_cidr_list\", default\u003dNone,"},{"line_number":91,"context_line":"                help\u003d\"Comma-separated list of CIDR of FlashArray iSCSI \""},{"line_number":92,"context_line":"                     \"targets hosts are allowed to connect to. It supports \""},{"line_number":93,"context_line":"                     \"IPv4 and IPv6 subnets. This parameter superceeds \""},{"line_number":94,"context_line":"                     \"pure_iscsi_cidr.\"),"},{"line_number":95,"context_line":"    cfg.BoolOpt(\"pure_eradicate_on_delete\","},{"line_number":96,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":8,"id":"082476e8_416dffe8","line":93,"range":{"start_line":93,"start_character":60,"end_line":93,"end_character":70},"in_reply_to":"cc42bd34_645ba3a9","updated":"2021-02-22 16:49:51.000000000","message":"Indeed.","commit_id":"39e21752d999c8fa51dfa56533d327c0e7ebcdcd"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"514a3509164b4ad362835a4e2fafa6ca7f712103","unresolved":true,"context_lines":[{"line_number":2447,"context_line":"                # Check to ensure that the portal IP is in the iSCSI target"},{"line_number":2448,"context_line":"                # CIDR before adding it"},{"line_number":2449,"context_line":"                target_portal \u003d port[\"portal\"]"},{"line_number":2450,"context_line":"                if not isinstance(target_portal[:-5], str):"},{"line_number":2451,"context_line":"                    portal \u003d (target_portal[:-5]).decode(\u0027utf8\u0027)"},{"line_number":2452,"context_line":"                else:"},{"line_number":2453,"context_line":"                    portal \u003d target_portal[:-5]"},{"line_number":2454,"context_line":"                if portal[0] \u003d\u003d \u0027[\u0027:"},{"line_number":2455,"context_line":"                    portal \u003d portal[1:-1]"},{"line_number":2456,"context_line":"                    portal \u003d target_portal.split(\":\")[0]"},{"line_number":2457,"context_line":"                check_ip \u003d ipaddress.ip_address(portal)"},{"line_number":2458,"context_line":"                for check_cidr in check_cidrs:"}],"source_content_type":"text/x-python","patch_set":8,"id":"5ab5a8b0_cfe4c819","line":2455,"range":{"start_line":2450,"start_character":0,"end_line":2455,"end_character":41},"updated":"2021-02-19 22:31:20.000000000","message":"suggestion: you\u0027ve imported the ipaddress library, does it contain some functions you can use to do this manipulation?  If not, netaddr is in global requirements, so that\u0027s a possiblity.  Manipulation by hand is OK, but it tends to be a bit fragile.","commit_id":"39e21752d999c8fa51dfa56533d327c0e7ebcdcd"},{"author":{"_account_id":33082,"name":"Christophe Drevet","display_name":"dr4Ke","email":"cdr@antemeta.fr","username":"dr4Ke"},"change_message_id":"de20ca78fa4851d1f5f1e2e6daa435febb0d7023","unresolved":true,"context_lines":[{"line_number":2447,"context_line":"                # Check to ensure that the portal IP is in the iSCSI target"},{"line_number":2448,"context_line":"                # CIDR before adding it"},{"line_number":2449,"context_line":"                target_portal \u003d port[\"portal\"]"},{"line_number":2450,"context_line":"                if not isinstance(target_portal[:-5], str):"},{"line_number":2451,"context_line":"                    portal \u003d (target_portal[:-5]).decode(\u0027utf8\u0027)"},{"line_number":2452,"context_line":"                else:"},{"line_number":2453,"context_line":"                    portal \u003d target_portal[:-5]"},{"line_number":2454,"context_line":"                if portal[0] \u003d\u003d \u0027[\u0027:"},{"line_number":2455,"context_line":"                    portal \u003d portal[1:-1]"},{"line_number":2456,"context_line":"                    portal \u003d target_portal.split(\":\")[0]"},{"line_number":2457,"context_line":"                check_ip \u003d ipaddress.ip_address(portal)"},{"line_number":2458,"context_line":"                for check_cidr in check_cidrs:"}],"source_content_type":"text/x-python","patch_set":8,"id":"cdaad1c2_7891b0a9","line":2455,"range":{"start_line":2450,"start_character":0,"end_line":2455,"end_character":41},"in_reply_to":"02c97d3f_755cf40f","updated":"2021-02-22 17:18:19.000000000","message":"Indeed, it was weak. I\u0027ve rewritten that from scratch and fixed the tests. It should be better.","commit_id":"39e21752d999c8fa51dfa56533d327c0e7ebcdcd"},{"author":{"_account_id":33082,"name":"Christophe Drevet","display_name":"dr4Ke","email":"cdr@antemeta.fr","username":"dr4Ke"},"change_message_id":"20ba2ce0d28c01a7eecd6729d70cc00d72d8c07d","unresolved":true,"context_lines":[{"line_number":2447,"context_line":"                # Check to ensure that the portal IP is in the iSCSI target"},{"line_number":2448,"context_line":"                # CIDR before adding it"},{"line_number":2449,"context_line":"                target_portal \u003d port[\"portal\"]"},{"line_number":2450,"context_line":"                if not isinstance(target_portal[:-5], str):"},{"line_number":2451,"context_line":"                    portal \u003d (target_portal[:-5]).decode(\u0027utf8\u0027)"},{"line_number":2452,"context_line":"                else:"},{"line_number":2453,"context_line":"                    portal \u003d target_portal[:-5]"},{"line_number":2454,"context_line":"                if portal[0] \u003d\u003d \u0027[\u0027:"},{"line_number":2455,"context_line":"                    portal \u003d portal[1:-1]"},{"line_number":2456,"context_line":"                    portal \u003d target_portal.split(\":\")[0]"},{"line_number":2457,"context_line":"                check_ip \u003d ipaddress.ip_address(portal)"},{"line_number":2458,"context_line":"                for check_cidr in check_cidrs:"}],"source_content_type":"text/x-python","patch_set":8,"id":"02c97d3f_755cf40f","line":2455,"range":{"start_line":2450,"start_character":0,"end_line":2455,"end_character":41},"in_reply_to":"5ab5a8b0_cfe4c819","updated":"2021-02-22 16:49:51.000000000","message":"Did not see any specific function in either one. But a better way would be to use `.split(\u0027[]\u0027)`. I\u0027ll try that.\n\nBy the way, I see an error in this code as we redefine the same variable just below! Something is wrong here.","commit_id":"39e21752d999c8fa51dfa56533d327c0e7ebcdcd"},{"author":{"_account_id":33082,"name":"Christophe Drevet","display_name":"dr4Ke","email":"cdr@antemeta.fr","username":"dr4Ke"},"change_message_id":"73160ba83979e20214d0cea4b1737a9dea095b4d","unresolved":false,"context_lines":[{"line_number":2447,"context_line":"                # Check to ensure that the portal IP is in the iSCSI target"},{"line_number":2448,"context_line":"                # CIDR before adding it"},{"line_number":2449,"context_line":"                target_portal \u003d port[\"portal\"]"},{"line_number":2450,"context_line":"                if not isinstance(target_portal[:-5], str):"},{"line_number":2451,"context_line":"                    portal \u003d (target_portal[:-5]).decode(\u0027utf8\u0027)"},{"line_number":2452,"context_line":"                else:"},{"line_number":2453,"context_line":"                    portal \u003d target_portal[:-5]"},{"line_number":2454,"context_line":"                if portal[0] \u003d\u003d \u0027[\u0027:"},{"line_number":2455,"context_line":"                    portal \u003d portal[1:-1]"},{"line_number":2456,"context_line":"                    portal \u003d target_portal.split(\":\")[0]"},{"line_number":2457,"context_line":"                check_ip \u003d ipaddress.ip_address(portal)"},{"line_number":2458,"context_line":"                for check_cidr in check_cidrs:"}],"source_content_type":"text/x-python","patch_set":8,"id":"11d38ff6_0b69c980","line":2455,"range":{"start_line":2450,"start_character":0,"end_line":2455,"end_character":41},"in_reply_to":"cdaad1c2_7891b0a9","updated":"2021-02-22 17:22:46.000000000","message":"Done","commit_id":"39e21752d999c8fa51dfa56533d327c0e7ebcdcd"}],"releasenotes/notes/pure-iscsi-cidrs-7195eda9f7214fce.yaml":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"514a3509164b4ad362835a4e2fafa6ca7f712103","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    [`bug 1910143 \u003chttps://bugs.launchpad.net/cinder/+bug/1910143\u003e`_]"},{"line_number":5,"context_line":"    Parameter pure_iscsi_cidr is now IPv4/v6 agnostic."},{"line_number":6,"context_line":"features:"},{"line_number":7,"context_line":"  - |"},{"line_number":8,"context_line":"    Pure Storage FlashArray driver: added configuration option"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"2193347d_fa6bbac7","line":5,"range":{"start_line":4,"start_character":0,"end_line":5,"end_character":54},"updated":"2021-02-19 22:31:20.000000000","message":"Sorry to do this to you, but could you please rewrite in the standard format (which may not have been standard yet when this patch was first posted):\nhttps://docs.openstack.org/cinder/latest/contributor/releasenotes.html#drivers\n\nThanks!\n\nThe \u0027features\u0027 note looks fine.","commit_id":"39e21752d999c8fa51dfa56533d327c0e7ebcdcd"},{"author":{"_account_id":33082,"name":"Christophe Drevet","display_name":"dr4Ke","email":"cdr@antemeta.fr","username":"dr4Ke"},"change_message_id":"73160ba83979e20214d0cea4b1737a9dea095b4d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    [`bug 1910143 \u003chttps://bugs.launchpad.net/cinder/+bug/1910143\u003e`_]"},{"line_number":5,"context_line":"    Parameter pure_iscsi_cidr is now IPv4/v6 agnostic."},{"line_number":6,"context_line":"features:"},{"line_number":7,"context_line":"  - |"},{"line_number":8,"context_line":"    Pure Storage FlashArray driver: added configuration option"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"77d47df5_92f1f41c","line":5,"range":{"start_line":4,"start_character":0,"end_line":5,"end_character":54},"in_reply_to":"2193347d_fa6bbac7","updated":"2021-02-22 17:22:46.000000000","message":"Done","commit_id":"39e21752d999c8fa51dfa56533d327c0e7ebcdcd"}]}
