)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"0343bdef5f1905dd4f3c92e8e0251719f241f54c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3a78fe2d_527383dd","updated":"2021-10-28 17:33:04.000000000","message":"run Pure Storage CI","commit_id":"3b551591c82dea7733700e770df00f03c093b625"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4d0516f9eb36a5a50f78a29b4f8584bdc2f3bacb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"edc2d6c1_39ee51ce","updated":"2021-10-28 22:02:35.000000000","message":"run Pure Storage CI","commit_id":"3b551591c82dea7733700e770df00f03c093b625"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"1ced7d25fabd015a327c8059189da38ebd03f5d6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"abb448d8_4f67e524","updated":"2021-11-02 21:47:00.000000000","message":"Question inline.","commit_id":"348216a1a8a8bb78e9cc5262a6d3934e72164b95"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"19476a9fc7f3aec2d6c862e73d2fb399738b5f0c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"5c837a88_40663d8c","updated":"2021-11-02 22:16:08.000000000","message":"Thanks, Simon.  Another question inline.","commit_id":"348216a1a8a8bb78e9cc5262a6d3934e72164b95"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"47c97325ef3b530f873ff5359baaa122ee4798ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"6b4e844c_25ab4641","updated":"2021-11-04 13:14:48.000000000","message":"Request to update the commit message noted inline.","commit_id":"6f0a14f0420ccfe0f273eff2a2b9bd416d59dec7"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"2bc2f16ce6d02b5bd21bceb92c885918fbc42f90","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"28052bee_05de9ca1","updated":"2021-11-03 16:02:25.000000000","message":"run Pure Storage CI","commit_id":"6f0a14f0420ccfe0f273eff2a2b9bd416d59dec7"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"f27c10c3143111dbca14dabf6ddfb5fef847f4fb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"64d3d342_c3189d62","updated":"2021-11-03 03:53:01.000000000","message":"run Pure Storage CI","commit_id":"6f0a14f0420ccfe0f273eff2a2b9bd416d59dec7"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"3c6b1a7160cdcfe218d378c6918ff79befdba537","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d0af6f53_6eee28f9","updated":"2021-11-03 16:04:54.000000000","message":"run Pure Storage CI","commit_id":"6f0a14f0420ccfe0f273eff2a2b9bd416d59dec7"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"6b57ad7ace8e8c243ab54ae271ea215a322f95d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f95bd166_f9937ea7","updated":"2021-11-03 15:15:43.000000000","message":"run Pure Storage CI","commit_id":"6f0a14f0420ccfe0f273eff2a2b9bd416d59dec7"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"8f5d4436ef93e7ef7919cbb172df549412a8bbfc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"fdee5d81_00046e22","updated":"2021-11-03 15:53:44.000000000","message":"run Pure Storage CI","commit_id":"6f0a14f0420ccfe0f273eff2a2b9bd416d59dec7"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"4cdb862d586c331d169e3a22c0db25c3a2ec5e97","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3ddb6314_39d68fce","updated":"2021-11-05 15:42:10.000000000","message":"All my concerns have been addressed and the CI is green.","commit_id":"25f2e27b21d775709edc1958e2269d4df855dd36"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"bc7b96cb3b0f61096cb786bfc1f19a603bcb4374","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"98b75957_168c4c11","updated":"2021-11-08 16:43:00.000000000","message":"CI is green and it looks like there has been enough review.  Merging.","commit_id":"25f2e27b21d775709edc1958e2269d4df855dd36"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"04f67c677954fe5fb0c65097a74ecaed10d6c2aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"37770dcc_00c598c8","updated":"2021-11-05 04:02:10.000000000","message":"run Pure Storage CI","commit_id":"25f2e27b21d775709edc1958e2269d4df855dd36"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"43f907f320623cde8bbf888b546e422ec49f6fac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ad286d7b_d2301d29","updated":"2021-11-04 20:54:50.000000000","message":"run Pure Storage CI","commit_id":"25f2e27b21d775709edc1958e2269d4df855dd36"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"d5fde5a4683c6f18f08d9b861021957b3b5d06a2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c2dac24a_ef296234","updated":"2021-11-04 15:51:40.000000000","message":"run Pure Storage CI","commit_id":"25f2e27b21d775709edc1958e2269d4df855dd36"}],"cinder/volume/drivers/pure.py":[{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"2514211e601d3c7c0f89061a047aae32c84ef892","unresolved":true,"context_lines":[{"line_number":2817,"context_line":"        \"\"\"Return list of wwns from the array\"\"\""},{"line_number":2818,"context_line":"        ports \u003d array.list_ports()"},{"line_number":2819,"context_line":"        valid_ports \u003d ["},{"line_number":2820,"context_line":"            port[\"wwn\"] for port in ports if port[\"wwn\"] and not port[\"nqn\"]"},{"line_number":2821,"context_line":"        ]"},{"line_number":2822,"context_line":"        return valid_ports"},{"line_number":2823,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9dfd1a3d_038f4366","line":2820,"updated":"2021-10-29 07:34:30.000000000","message":"Will this allow for keyErrors if either keys \"wwn\" or \"nqn\" do not exist","commit_id":"3b551591c82dea7733700e770df00f03c093b625"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"407dde0945fdb7116c7f5ac53db64fabc6ad1a66","unresolved":false,"context_lines":[{"line_number":2817,"context_line":"        \"\"\"Return list of wwns from the array\"\"\""},{"line_number":2818,"context_line":"        ports \u003d array.list_ports()"},{"line_number":2819,"context_line":"        valid_ports \u003d ["},{"line_number":2820,"context_line":"            port[\"wwn\"] for port in ports if port[\"wwn\"] and not port[\"nqn\"]"},{"line_number":2821,"context_line":"        ]"},{"line_number":2822,"context_line":"        return valid_ports"},{"line_number":2823,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"03311580_ef5f6f9e","line":2820,"in_reply_to":"56a5e548_247f9b91","updated":"2021-10-29 15:32:27.000000000","message":"Actually Helen, on thinking about this, there could be a KeyError case, so I have added that in.","commit_id":"3b551591c82dea7733700e770df00f03c093b625"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"91a81e345f204d1498fe9c3199bc4d52fcecb084","unresolved":true,"context_lines":[{"line_number":2817,"context_line":"        \"\"\"Return list of wwns from the array\"\"\""},{"line_number":2818,"context_line":"        ports \u003d array.list_ports()"},{"line_number":2819,"context_line":"        valid_ports \u003d ["},{"line_number":2820,"context_line":"            port[\"wwn\"] for port in ports if port[\"wwn\"] and not port[\"nqn\"]"},{"line_number":2821,"context_line":"        ]"},{"line_number":2822,"context_line":"        return valid_ports"},{"line_number":2823,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"56a5e548_247f9b91","line":2820,"in_reply_to":"9dfd1a3d_038f4366","updated":"2021-10-29 12:48:11.000000000","message":"Based on the minimum supported API version for this driver, these values will always be available, even if None.","commit_id":"3b551591c82dea7733700e770df00f03c093b625"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"1ced7d25fabd015a327c8059189da38ebd03f5d6","unresolved":true,"context_lines":[{"line_number":2826,"context_line":"            valid_ports \u003d ["},{"line_number":2827,"context_line":"                port[\"wwn\"] for port in ports if port[\"wwn\"]"},{"line_number":2828,"context_line":"            ]"},{"line_number":2829,"context_line":"        return valid_ports"},{"line_number":2830,"context_line":""},{"line_number":2831,"context_line":"    @pure_driver_debug_trace"},{"line_number":2832,"context_line":"    def initialize_connection(self, volume, connector):"}],"source_content_type":"text/x-python","patch_set":2,"id":"0cd92497_2b93fd8c","line":2829,"updated":"2021-11-02 21:47:00.000000000","message":"I\u0027m not real clear on what you\u0027re fixing here.  Is the issue that if array returns a a port that has both wwn and nqn defined (non-None), we want to ignore it?\n\nAlso, your way of addressing the KeyError assumes that if the nqn field is missing from one port, it must be missing from them all.  What is the data contract for the list_ports response from the array?","commit_id":"348216a1a8a8bb78e9cc5262a6d3934e72164b95"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"580f84b2fdd7d0f4a3a7b432826fd1a28338190f","unresolved":true,"context_lines":[{"line_number":2826,"context_line":"            valid_ports \u003d ["},{"line_number":2827,"context_line":"                port[\"wwn\"] for port in ports if port[\"wwn\"]"},{"line_number":2828,"context_line":"            ]"},{"line_number":2829,"context_line":"        return valid_ports"},{"line_number":2830,"context_line":""},{"line_number":2831,"context_line":"    @pure_driver_debug_trace"},{"line_number":2832,"context_line":"    def initialize_connection(self, volume, connector):"}],"source_content_type":"text/x-python","patch_set":2,"id":"d486c123_3d6b3295","line":2829,"in_reply_to":"0cd92497_2b93fd8c","updated":"2021-11-02 22:01:54.000000000","message":"This is a symptom of older versions of the array firmware. An older array (lower API versions) will never report an NQN field from `list_ports` but a newer version (of the API endpoint) will report that field, even if the value is None. \nBecause the response is binary depending on the array version we can use KeyError.\nTBH I have another PR planned that will remove this issue for here and other parts of the code.\nProbably by Yoga this section of code will change again to be much cleaner, but this needs to be done for our initial NVMe testing","commit_id":"348216a1a8a8bb78e9cc5262a6d3934e72164b95"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"0bb7de0aeccb55d2587630a8e299e46d10745f19","unresolved":true,"context_lines":[{"line_number":2826,"context_line":"            valid_ports \u003d ["},{"line_number":2827,"context_line":"                port[\"wwn\"] for port in ports if port[\"wwn\"]"},{"line_number":2828,"context_line":"            ]"},{"line_number":2829,"context_line":"        return valid_ports"},{"line_number":2830,"context_line":""},{"line_number":2831,"context_line":"    @pure_driver_debug_trace"},{"line_number":2832,"context_line":"    def initialize_connection(self, volume, connector):"}],"source_content_type":"text/x-python","patch_set":2,"id":"2ac72a8a_5ae635b7","line":2829,"in_reply_to":"25211e9f_75173259","updated":"2021-11-02 22:27:20.000000000","message":"You would want to ignore it as traditional FC ports would need to be zoned seperately from NVMe-FC capable ports, therefore we should not be potentially creating zones through FCZM that cross both FC types.\nThis code is for the traditional FC (scsi) driver, so we should not be touching the NVMe-FC ports.","commit_id":"348216a1a8a8bb78e9cc5262a6d3934e72164b95"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"47c97325ef3b530f873ff5359baaa122ee4798ac","unresolved":true,"context_lines":[{"line_number":2826,"context_line":"            valid_ports \u003d ["},{"line_number":2827,"context_line":"                port[\"wwn\"] for port in ports if port[\"wwn\"]"},{"line_number":2828,"context_line":"            ]"},{"line_number":2829,"context_line":"        return valid_ports"},{"line_number":2830,"context_line":""},{"line_number":2831,"context_line":"    @pure_driver_debug_trace"},{"line_number":2832,"context_line":"    def initialize_connection(self, volume, connector):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9bf05486_18cb424a","line":2829,"in_reply_to":"2ac72a8a_5ae635b7","updated":"2021-11-04 13:14:48.000000000","message":"Thanks, this explanation is what I was looking for.  You need to say this in your commit message, which currently just says that you add a check, but doesn\u0027t say why.\n\nI suggest something like:\n\n  [Pure Storage] Add check for NVMe-FC capable array\n\n  Recent arrays can handle both traditional FC and NVMe-FC ports.  The FC (scsi)\n  driver should not be touching NVMe-FC ports because that could create zones\n  through FCZM that cross both FC types, so this check makes sure the driver\n  only uses wwns that do not have an associated nqn.","commit_id":"348216a1a8a8bb78e9cc5262a6d3934e72164b95"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"0386a5f7b778113e81db4d953a4d70725a9bac2f","unresolved":false,"context_lines":[{"line_number":2826,"context_line":"            valid_ports \u003d ["},{"line_number":2827,"context_line":"                port[\"wwn\"] for port in ports if port[\"wwn\"]"},{"line_number":2828,"context_line":"            ]"},{"line_number":2829,"context_line":"        return valid_ports"},{"line_number":2830,"context_line":""},{"line_number":2831,"context_line":"    @pure_driver_debug_trace"},{"line_number":2832,"context_line":"    def initialize_connection(self, volume, connector):"}],"source_content_type":"text/x-python","patch_set":2,"id":"c305eef4_a1cfdef9","line":2829,"in_reply_to":"9bf05486_18cb424a","updated":"2021-11-04 13:21:08.000000000","message":"Done","commit_id":"348216a1a8a8bb78e9cc5262a6d3934e72164b95"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"19476a9fc7f3aec2d6c862e73d2fb399738b5f0c","unresolved":true,"context_lines":[{"line_number":2826,"context_line":"            valid_ports \u003d ["},{"line_number":2827,"context_line":"                port[\"wwn\"] for port in ports if port[\"wwn\"]"},{"line_number":2828,"context_line":"            ]"},{"line_number":2829,"context_line":"        return valid_ports"},{"line_number":2830,"context_line":""},{"line_number":2831,"context_line":"    @pure_driver_debug_trace"},{"line_number":2832,"context_line":"    def initialize_connection(self, volume, connector):"}],"source_content_type":"text/x-python","patch_set":2,"id":"25211e9f_75173259","line":2829,"in_reply_to":"d486c123_3d6b3295","updated":"2021-11-02 22:16:08.000000000","message":"might be worth adding a comment after the \u0027except\u0027 saying we\u0027re dealing with an older array where NQN is not defined, so we can just ignore it.\n\nI\u0027m still not clear on the check, though.  If the array gives you both wwn and nqn for a port, why do you want to ignore that port?","commit_id":"348216a1a8a8bb78e9cc5262a6d3934e72164b95"}]}
