)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":33431,"name":"Fábio Oliveira","email":"fabioaurelio1269@gmail.com","username":"fabiooliveira1"},"change_message_id":"21c6dc1aef2de0296ad91b8769e742f428dcea83","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"362463ba_e82cf610","updated":"2021-10-25 16:23:34.000000000","message":"run-NetApp Solidfire CI","commit_id":"67ba1c14869dd6e478fe33272d8e7bcfe1c770fc"},{"author":{"_account_id":33431,"name":"Fábio Oliveira","email":"fabioaurelio1269@gmail.com","username":"fabiooliveira1"},"change_message_id":"5f7fc80f74ce82c9d66db394fb5776f9d86cc845","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e55e6dc1_fc7bbcae","updated":"2021-10-25 20:04:03.000000000","message":"run-NetApp Solidfire CI","commit_id":"67ba1c14869dd6e478fe33272d8e7bcfe1c770fc"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"387c9595b71693caecff52dc718aaa7de1a3ee6a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"59d3905c_109d86c9","updated":"2021-11-30 13:04:57.000000000","message":"Minor comments","commit_id":"d5d6cf4f6a112cc9244326827477ce5915f830f6"},{"author":{"_account_id":33431,"name":"Fábio Oliveira","email":"fabioaurelio1269@gmail.com","username":"fabiooliveira1"},"change_message_id":"360802e30009c0469de9ef74e58ed541e777155f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d127a805_475c088b","in_reply_to":"59d3905c_109d86c9","updated":"2021-11-30 14:11:29.000000000","message":"Thank you for reviewing!","commit_id":"d5d6cf4f6a112cc9244326827477ce5915f830f6"},{"author":{"_account_id":30615,"name":"Tushar Trambak Gite","email":"tushargite96@gmail.com","username":"tushargite96"},"change_message_id":"d5c9f5a153f66e3b3090c89d64059823bf8e4d92","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"56191e85_e5039687","updated":"2021-12-02 06:50:53.000000000","message":"LGTM","commit_id":"a12c49faf86e7f4cf5d658f031bbcb8fce2a3ddc"},{"author":{"_account_id":30615,"name":"Tushar Trambak Gite","email":"tushargite96@gmail.com","username":"tushargite96"},"change_message_id":"588a61704886beb84f7cf42aed5cd077a25e0632","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"9474eca3_27db681e","updated":"2022-01-10 08:51:20.000000000","message":"LGTM","commit_id":"a12c49faf86e7f4cf5d658f031bbcb8fce2a3ddc"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"24d52829955f849712fd8860de51681679b1926a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b0f06417_d9e7f846","updated":"2021-12-01 10:30:36.000000000","message":"Thanks for addressing my comments.\nZuul and NetApp SolidFire CI have passed.","commit_id":"a12c49faf86e7f4cf5d658f031bbcb8fce2a3ddc"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f22bab4ec0c39ddf358c03e542fd84548efca0cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"84a393a4_9ae17468","updated":"2022-03-18 18:57:39.000000000","message":"Refactoring suggestion inline.  Tests look good.","commit_id":"d4a3a0e94c3823282f47a4b787aab4eb7f640805"},{"author":{"_account_id":33431,"name":"Fábio Oliveira","email":"fabioaurelio1269@gmail.com","username":"fabiooliveira1"},"change_message_id":"c66c4449dfcb230f091e3c5595d8228aad8daef9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"fd560288_b25e16c0","updated":"2022-01-26 15:34:56.000000000","message":"Thank you all for reviewing!\nHere is a new patch set with some fixes.","commit_id":"d4a3a0e94c3823282f47a4b787aab4eb7f640805"}],"cinder/volume/drivers/solidfire.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"c816419e908137d08fbfb83c89a21cf95bc50539","unresolved":true,"context_lines":[{"line_number":2697,"context_line":"                \u0027ListActiveVolumes\u0027, params)[\u0027result\u0027][\u0027volumes\u0027]"},{"line_number":2698,"context_line":""},{"line_number":2699,"context_line":"        sf_ref \u003d vols[0]"},{"line_number":2700,"context_line":"        if ctxt.is_admin:"},{"line_number":2701,"context_line":"            sfaccount \u003d self._get_create_account(volume[\u0027project_id\u0027])"},{"line_number":2702,"context_line":"        else:"},{"line_number":2703,"context_line":"            sfaccounts \u003d self._get_sfaccounts_for_tenant(volume[\u0027project_id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"10be2d4f_227c67f9","line":2700,"updated":"2021-10-25 21:37:02.000000000","message":"Line 2677 sets \"ctxt\" to get_admin_context() -- is this ever false?","commit_id":"67ba1c14869dd6e478fe33272d8e7bcfe1c770fc"},{"author":{"_account_id":33431,"name":"Fábio Oliveira","email":"fabioaurelio1269@gmail.com","username":"fabiooliveira1"},"change_message_id":"1812351e8d6e01b1acaf21ecf882d8d27d825ff0","unresolved":false,"context_lines":[{"line_number":2697,"context_line":"                \u0027ListActiveVolumes\u0027, params)[\u0027result\u0027][\u0027volumes\u0027]"},{"line_number":2698,"context_line":""},{"line_number":2699,"context_line":"        sf_ref \u003d vols[0]"},{"line_number":2700,"context_line":"        if ctxt.is_admin:"},{"line_number":2701,"context_line":"            sfaccount \u003d self._get_create_account(volume[\u0027project_id\u0027])"},{"line_number":2702,"context_line":"        else:"},{"line_number":2703,"context_line":"            sfaccounts \u003d self._get_sfaccounts_for_tenant(volume[\u0027project_id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"a208e938_e870cab5","line":2700,"in_reply_to":"10be2d4f_227c67f9","updated":"2021-11-29 20:06:37.000000000","message":"Done. This operation is admin only, thank you.","commit_id":"67ba1c14869dd6e478fe33272d8e7bcfe1c770fc"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"387c9595b71693caecff52dc718aaa7de1a3ee6a","unresolved":true,"context_lines":[{"line_number":280,"context_line":"                   as retyping."},{"line_number":281,"context_line":"                   Fix bug #1932964 SolidFire duplicate volume name exception"},{"line_number":282,"context_line":"                   on migration and replication."},{"line_number":283,"context_line":"          2.2.4  - Fix bug #1892041 Fix SolidFire driver fails to manage a"},{"line_number":284,"context_line":"                   volume by name"},{"line_number":285,"context_line":"    \"\"\""},{"line_number":286,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"40f2efd0_4e730983","line":283,"range":{"start_line":283,"start_character":36,"end_line":283,"end_character":39},"updated":"2021-11-30 13:04:57.000000000","message":"nit: The word \"Fix\" appeared second time","commit_id":"d5d6cf4f6a112cc9244326827477ce5915f830f6"},{"author":{"_account_id":33431,"name":"Fábio Oliveira","email":"fabioaurelio1269@gmail.com","username":"fabiooliveira1"},"change_message_id":"360802e30009c0469de9ef74e58ed541e777155f","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                   as retyping."},{"line_number":281,"context_line":"                   Fix bug #1932964 SolidFire duplicate volume name exception"},{"line_number":282,"context_line":"                   on migration and replication."},{"line_number":283,"context_line":"          2.2.4  - Fix bug #1892041 Fix SolidFire driver fails to manage a"},{"line_number":284,"context_line":"                   volume by name"},{"line_number":285,"context_line":"    \"\"\""},{"line_number":286,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"4222ccd2_7d22b1a2","line":283,"range":{"start_line":283,"start_character":36,"end_line":283,"end_character":39},"in_reply_to":"40f2efd0_4e730983","updated":"2021-11-30 14:11:29.000000000","message":"Done","commit_id":"d5d6cf4f6a112cc9244326827477ce5915f830f6"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"387c9595b71693caecff52dc718aaa7de1a3ee6a","unresolved":true,"context_lines":[{"line_number":2742,"context_line":"            vols \u003d self._issue_api_request("},{"line_number":2743,"context_line":"                \u0027ListActiveVolumes\u0027, params)[\u0027result\u0027][\u0027volumes\u0027]"},{"line_number":2744,"context_line":"        if len(vols) !\u003d 1:"},{"line_number":2745,"context_line":"            msg \u003d _(\"Provided volume id/name does not exist on SolidFire\""},{"line_number":2746,"context_line":"                    \"backend.\")"},{"line_number":2747,"context_line":"            raise SolidFireDriverException(msg)"},{"line_number":2748,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9b9c7931_c956904c","line":2745,"range":{"start_line":2745,"start_character":63,"end_line":2745,"end_character":73},"updated":"2021-11-30 13:04:57.000000000","message":"nit: space may be added before double quote","commit_id":"d5d6cf4f6a112cc9244326827477ce5915f830f6"},{"author":{"_account_id":33431,"name":"Fábio Oliveira","email":"fabioaurelio1269@gmail.com","username":"fabiooliveira1"},"change_message_id":"360802e30009c0469de9ef74e58ed541e777155f","unresolved":false,"context_lines":[{"line_number":2742,"context_line":"            vols \u003d self._issue_api_request("},{"line_number":2743,"context_line":"                \u0027ListActiveVolumes\u0027, params)[\u0027result\u0027][\u0027volumes\u0027]"},{"line_number":2744,"context_line":"        if len(vols) !\u003d 1:"},{"line_number":2745,"context_line":"            msg \u003d _(\"Provided volume id/name does not exist on SolidFire\""},{"line_number":2746,"context_line":"                    \"backend.\")"},{"line_number":2747,"context_line":"            raise SolidFireDriverException(msg)"},{"line_number":2748,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3699e094_20313425","line":2745,"range":{"start_line":2745,"start_character":63,"end_line":2745,"end_character":73},"in_reply_to":"9b9c7931_c956904c","updated":"2021-11-30 14:11:29.000000000","message":"Done","commit_id":"d5d6cf4f6a112cc9244326827477ce5915f830f6"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"141e7bfe6a3b4c396fe2ccf29c841e3e5da2e8db","unresolved":true,"context_lines":[{"line_number":2743,"context_line":"                \u0027ListActiveVolumes\u0027, params)[\u0027result\u0027][\u0027volumes\u0027]"},{"line_number":2744,"context_line":"        if len(vols) !\u003d 1:"},{"line_number":2745,"context_line":"            msg \u003d _(\"Provided volume id/name does not exist on SolidFire \""},{"line_number":2746,"context_line":"                    \"backend.\")"},{"line_number":2747,"context_line":"            raise SolidFireDriverException(msg)"},{"line_number":2748,"context_line":""},{"line_number":2749,"context_line":"        return int(math.ceil(float(vols[0][\u0027totalSize\u0027]) / units.Gi))"}],"source_content_type":"text/x-python","patch_set":5,"id":"318e9f39_e840f6ef","line":2746,"updated":"2022-01-24 15:01:05.000000000","message":"This message will be misleading if the list of vols has multiple items in it, i.e. if multiple volumes matched the source-name.  Is that situation likely to occur?","commit_id":"a12c49faf86e7f4cf5d658f031bbcb8fce2a3ddc"},{"author":{"_account_id":33431,"name":"Fábio Oliveira","email":"fabioaurelio1269@gmail.com","username":"fabiooliveira1"},"change_message_id":"c66c4449dfcb230f091e3c5595d8228aad8daef9","unresolved":false,"context_lines":[{"line_number":2743,"context_line":"                \u0027ListActiveVolumes\u0027, params)[\u0027result\u0027][\u0027volumes\u0027]"},{"line_number":2744,"context_line":"        if len(vols) !\u003d 1:"},{"line_number":2745,"context_line":"            msg \u003d _(\"Provided volume id/name does not exist on SolidFire \""},{"line_number":2746,"context_line":"                    \"backend.\")"},{"line_number":2747,"context_line":"            raise SolidFireDriverException(msg)"},{"line_number":2748,"context_line":""},{"line_number":2749,"context_line":"        return int(math.ceil(float(vols[0][\u0027totalSize\u0027]) / units.Gi))"}],"source_content_type":"text/x-python","patch_set":5,"id":"7154537c_28973d34","line":2746,"in_reply_to":"318e9f39_e840f6ef","updated":"2022-01-26 15:34:56.000000000","message":"Yes it is likely to occur only for the source-name option, since the id is unique.\nI already updated the code and also noticed some missing unit tests, which were also added.","commit_id":"a12c49faf86e7f4cf5d658f031bbcb8fce2a3ddc"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f22bab4ec0c39ddf358c03e542fd84548efca0cf","unresolved":true,"context_lines":[{"line_number":2740,"context_line":"            params \u003d {\u0027startVolumeID\u0027: int(sfid),"},{"line_number":2741,"context_line":"                      \u0027limit\u0027: 1}"},{"line_number":2742,"context_line":"            vols \u003d self._issue_api_request("},{"line_number":2743,"context_line":"                \u0027ListActiveVolumes\u0027, params)[\u0027result\u0027][\u0027volumes\u0027]"},{"line_number":2744,"context_line":""},{"line_number":2745,"context_line":"        if not len(vols):"},{"line_number":2746,"context_line":"            msg \u003d _(\"Provided volume id/name does not exist on SolidFire \""}],"source_content_type":"text/x-python","patch_set":6,"id":"26a15862_0d1bf9a9","line":2743,"updated":"2022-03-18 18:57:39.000000000","message":"Lines 2726-2743 is the same code as in manage_existing().  You could turn it into a function that takes external_ref and returns a list of volumes.  You\u0027d just need to make the exception message a little more generic, something like \"Management operations on an existing volume require \u0027source-id\u0027 or \u0027source-name\u0027\".","commit_id":"d4a3a0e94c3823282f47a4b787aab4eb7f640805"},{"author":{"_account_id":33431,"name":"Fábio Oliveira","email":"fabioaurelio1269@gmail.com","username":"fabiooliveira1"},"change_message_id":"c804ae20d888763056cd777c5d36e6ad2692190a","unresolved":true,"context_lines":[{"line_number":2740,"context_line":"            params \u003d {\u0027startVolumeID\u0027: int(sfid),"},{"line_number":2741,"context_line":"                      \u0027limit\u0027: 1}"},{"line_number":2742,"context_line":"            vols \u003d self._issue_api_request("},{"line_number":2743,"context_line":"                \u0027ListActiveVolumes\u0027, params)[\u0027result\u0027][\u0027volumes\u0027]"},{"line_number":2744,"context_line":""},{"line_number":2745,"context_line":"        if not len(vols):"},{"line_number":2746,"context_line":"            msg \u003d _(\"Provided volume id/name does not exist on SolidFire \""}],"source_content_type":"text/x-python","patch_set":6,"id":"fc79e6c2_758b3093","line":2743,"in_reply_to":"26a15862_0d1bf9a9","updated":"2022-03-25 18:40:43.000000000","message":"uploaded a new patch, but is not resolved yet, unit tests are still missing","commit_id":"d4a3a0e94c3823282f47a4b787aab4eb7f640805"},{"author":{"_account_id":33986,"name":"Lucas Morais de oliveira","email":"lucasmoliveira059@gmail.com","username":"lucasmoliveira059"},"change_message_id":"01f28b76553444b2107b98b469d24243c263d05a","unresolved":false,"context_lines":[{"line_number":2740,"context_line":"            params \u003d {\u0027startVolumeID\u0027: int(sfid),"},{"line_number":2741,"context_line":"                      \u0027limit\u0027: 1}"},{"line_number":2742,"context_line":"            vols \u003d self._issue_api_request("},{"line_number":2743,"context_line":"                \u0027ListActiveVolumes\u0027, params)[\u0027result\u0027][\u0027volumes\u0027]"},{"line_number":2744,"context_line":""},{"line_number":2745,"context_line":"        if not len(vols):"},{"line_number":2746,"context_line":"            msg \u003d _(\"Provided volume id/name does not exist on SolidFire \""}],"source_content_type":"text/x-python","patch_set":6,"id":"8a6c6ab8_8c46fd27","line":2743,"in_reply_to":"fc79e6c2_758b3093","updated":"2022-05-31 13:15:34.000000000","message":"Done","commit_id":"d4a3a0e94c3823282f47a4b787aab4eb7f640805"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"6c65201dc5de13735ebe0fb5754ab58b9bf6d9b3","unresolved":true,"context_lines":[{"line_number":2587,"context_line":"        :param volume: A dictionary describing the volume to migrate"},{"line_number":2588,"context_line":"        :param new_type: A dictionary describing the volume type to convert to"},{"line_number":2589,"context_line":"        :param diff: A dictionary with the difference between the two types"},{"line_number":2590,"context_line":"        :param host: A dictionary describing Fthe host to migrate to, where"},{"line_number":2591,"context_line":"                     host[\u0027host\u0027] is its name, and host[\u0027capabilities\u0027] is a"},{"line_number":2592,"context_line":"                     dictionary of its reported capabilities (Not Used)."},{"line_number":2593,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"cf5f5e82_e8ddf64d","line":2590,"range":{"start_line":2590,"start_character":45,"end_line":2590,"end_character":46},"updated":"2022-05-13 14:51:28.000000000","message":"typo","commit_id":"8a03f28ddf12934312e4c21c8d659fd0b41986e7"},{"author":{"_account_id":33986,"name":"Lucas Morais de oliveira","email":"lucasmoliveira059@gmail.com","username":"lucasmoliveira059"},"change_message_id":"01f28b76553444b2107b98b469d24243c263d05a","unresolved":false,"context_lines":[{"line_number":2587,"context_line":"        :param volume: A dictionary describing the volume to migrate"},{"line_number":2588,"context_line":"        :param new_type: A dictionary describing the volume type to convert to"},{"line_number":2589,"context_line":"        :param diff: A dictionary with the difference between the two types"},{"line_number":2590,"context_line":"        :param host: A dictionary describing Fthe host to migrate to, where"},{"line_number":2591,"context_line":"                     host[\u0027host\u0027] is its name, and host[\u0027capabilities\u0027] is a"},{"line_number":2592,"context_line":"                     dictionary of its reported capabilities (Not Used)."},{"line_number":2593,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"d28ddffd_df16b06e","line":2590,"range":{"start_line":2590,"start_character":45,"end_line":2590,"end_character":46},"in_reply_to":"cf5f5e82_e8ddf64d","updated":"2022-05-31 13:15:34.000000000","message":"Done","commit_id":"8a03f28ddf12934312e4c21c8d659fd0b41986e7"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e7235468e4571ee2914fd57b637d7b617c9ce353","unresolved":true,"context_lines":[{"line_number":2699,"context_line":""},{"line_number":2700,"context_line":"        return model_update"},{"line_number":2701,"context_line":""},{"line_number":2702,"context_line":"    def _get_volume_by_id_or_name(self, external_ref):"},{"line_number":2703,"context_line":"        sfid \u003d external_ref.get(\u0027source-id\u0027, None)"},{"line_number":2704,"context_line":"        sfname \u003d external_ref.get(\u0027source-name\u0027, None)"},{"line_number":2705,"context_line":"        if sfid is None and sfname is None:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1bc9f12d_c3167be1","line":2702,"range":{"start_line":2702,"start_character":8,"end_line":2702,"end_character":19},"updated":"2022-06-01 22:00:12.000000000","message":"It seems hazardous to call this \"_get_volume...\" when it may return a list of volumes, might want to reconsider this name for less confusion later.","commit_id":"f84233405662c3b87a217eeb7f98397c1e2c1383"},{"author":{"_account_id":33986,"name":"Lucas Morais de oliveira","email":"lucasmoliveira059@gmail.com","username":"lucasmoliveira059"},"change_message_id":"3bc17c32778ff9446d5d0ea9fb162ce9668ab22e","unresolved":false,"context_lines":[{"line_number":2699,"context_line":""},{"line_number":2700,"context_line":"        return model_update"},{"line_number":2701,"context_line":""},{"line_number":2702,"context_line":"    def _get_volume_by_id_or_name(self, external_ref):"},{"line_number":2703,"context_line":"        sfid \u003d external_ref.get(\u0027source-id\u0027, None)"},{"line_number":2704,"context_line":"        sfname \u003d external_ref.get(\u0027source-name\u0027, None)"},{"line_number":2705,"context_line":"        if sfid is None and sfname is None:"}],"source_content_type":"text/x-python","patch_set":9,"id":"b79d2382_eb166c7c","line":2702,"range":{"start_line":2702,"start_character":8,"end_line":2702,"end_character":19},"in_reply_to":"1bc9f12d_c3167be1","updated":"2022-06-06 12:21:20.000000000","message":"Thanks Eric. I followed your suggestion and changed the name, I guess this minimizes any confusion. I look forward to hearing your opinion. I hope you like","commit_id":"f84233405662c3b87a217eeb7f98397c1e2c1383"}]}
