)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"73966f8d43a7110880098dad24a8355f5a55914c","unresolved":true,"context_lines":[{"line_number":15,"context_line":"`netapp_enable_flexgroup`, which will make the driver report a single"},{"line_number":16,"context_line":"pool represeting all aggregates. The selection on which aggregates the"},{"line_number":17,"context_line":"FlexGroup share will reside is up to ONTAP. If the administrator desires"},{"line_number":18,"context_line":"to control that selection through Manila scheduler, it must inform the set"},{"line_number":19,"context_line":"of aggregates that formss FlexGroup pool in the new  option"},{"line_number":20,"context_line":"`netapp_flexgroup_pool`."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ecbb8e77_05bd0d92","line":18,"range":{"start_line":18,"start_character":71,"end_line":18,"end_character":74},"updated":"2021-08-27 16:09:11.000000000","message":"nit: please wrap at 79 characters","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"abe16d414854d1f836a3696eee4d6544f57b7247","unresolved":true,"context_lines":[{"line_number":15,"context_line":"`netapp_enable_flexgroup`, which will make the driver report a single"},{"line_number":16,"context_line":"pool represeting all aggregates. The selection on which aggregates the"},{"line_number":17,"context_line":"FlexGroup share will reside is up to ONTAP. If the administrator desires"},{"line_number":18,"context_line":"to control that selection through Manila scheduler, it must inform the set"},{"line_number":19,"context_line":"of aggregates that formss FlexGroup pool in the new  option"},{"line_number":20,"context_line":"`netapp_flexgroup_pool`."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"4cd8f297_85912a62","line":18,"range":{"start_line":18,"start_character":71,"end_line":18,"end_character":74},"in_reply_to":"ecbb8e77_05bd0d92","updated":"2021-08-31 12:50:40.000000000","message":"Sorry, from my count, it has 74. How should we count it ?!","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2acfa2ad1370d808c0a8fbf0d5530e4be2f789c5","unresolved":true,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"[1] FlexGroup is limited to one single replica for ONTAP version"},{"line_number":43,"context_line":"lower than 9.9.1."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Depends-On: If525e97a5d456d6ddebb4bf9bc8ff6190c95a555"},{"line_number":46,"context_line":"Depends-On: I646f782c3e2be5ac799254f08a248a22cb9e0358"},{"line_number":47,"context_line":"Implements: bp netapp-flexgroup-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1738a571_00c482bc","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":0},"updated":"2021-08-27 05:22:08.000000000","message":"Add a \"DocImpact\" flag here: https://docs.openstack.org/manila/latest/contributor/commit_message_tags.html\n\nhttps://docs.openstack.org/manila/latest/admin/netapp_cluster_mode_driver.html could be updated with the caveats documented here in the commit message.","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"73966f8d43a7110880098dad24a8355f5a55914c","unresolved":true,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"[1] FlexGroup is limited to one single replica for ONTAP version"},{"line_number":43,"context_line":"lower than 9.9.1."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Depends-On: If525e97a5d456d6ddebb4bf9bc8ff6190c95a555"},{"line_number":46,"context_line":"Depends-On: I646f782c3e2be5ac799254f08a248a22cb9e0358"},{"line_number":47,"context_line":"Implements: bp netapp-flexgroup-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"bfb9e5e1_d0f4b4db","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":0},"in_reply_to":"1738a571_00c482bc","updated":"2021-08-27 16:09:11.000000000","message":"+1","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"[1] FlexGroup is limited to one single replica for ONTAP version"},{"line_number":43,"context_line":"lower than 9.9.1."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Depends-On: If525e97a5d456d6ddebb4bf9bc8ff6190c95a555"},{"line_number":46,"context_line":"Depends-On: I646f782c3e2be5ac799254f08a248a22cb9e0358"},{"line_number":47,"context_line":"Implements: bp netapp-flexgroup-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"2ae957d0_61c5f652","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":0},"in_reply_to":"bfb9e5e1_d0f4b4db","updated":"2021-09-02 17:03:37.000000000","message":"done","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"}],"doc/source/admin/netapp_cluster_mode_driver.rst":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1412f262bb8e7fd607e628ced67299bae25386bb","unresolved":true,"context_lines":[{"line_number":74,"context_line":"      without any FlexGroup pool."},{"line_number":75,"context_line":"    - For FlexGroup share, create more than one replica is only allowed with"},{"line_number":76,"context_line":"      ONTAP 9.9.1 and newer."},{"line_number":77,"context_line":"    - Migrate FlexGroup share is not allowed."},{"line_number":78,"context_line":"    - Migrate share server containing FlexGroup share is not allowed."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1077156a_cea7e842","line":77,"range":{"start_line":77,"start_character":6,"end_line":77,"end_character":29},"updated":"2021-09-07 22:42:00.000000000","message":"nit: Migration of flexgroup shares","commit_id":"0a6ccdcab684fe95522b25cf37613142a4b0e03d"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"8553837f1eea3f0c9f2791bb0f094857a55ed1b6","unresolved":true,"context_lines":[{"line_number":74,"context_line":"      without any FlexGroup pool."},{"line_number":75,"context_line":"    - For FlexGroup share, create more than one replica is only allowed with"},{"line_number":76,"context_line":"      ONTAP 9.9.1 and newer."},{"line_number":77,"context_line":"    - Migrate FlexGroup share is not allowed."},{"line_number":78,"context_line":"    - Migrate share server containing FlexGroup share is not allowed."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":9,"id":"d55076fe_bfa1099b","line":77,"range":{"start_line":77,"start_character":6,"end_line":77,"end_character":29},"in_reply_to":"1077156a_cea7e842","updated":"2021-09-08 04:46:20.000000000","message":"done","commit_id":"0a6ccdcab684fe95522b25cf37613142a4b0e03d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1412f262bb8e7fd607e628ced67299bae25386bb","unresolved":true,"context_lines":[{"line_number":75,"context_line":"    - For FlexGroup share, create more than one replica is only allowed with"},{"line_number":76,"context_line":"      ONTAP 9.9.1 and newer."},{"line_number":77,"context_line":"    - Migrate FlexGroup share is not allowed."},{"line_number":78,"context_line":"    - Migrate share server containing FlexGroup share is not allowed."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":".. note::"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fef1bd3b_cd24d660","line":78,"range":{"start_line":78,"start_character":6,"end_line":78,"end_character":26},"updated":"2021-09-07 22:42:00.000000000","message":"nit: Migration of share servers","commit_id":"0a6ccdcab684fe95522b25cf37613142a4b0e03d"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"8553837f1eea3f0c9f2791bb0f094857a55ed1b6","unresolved":true,"context_lines":[{"line_number":75,"context_line":"    - For FlexGroup share, create more than one replica is only allowed with"},{"line_number":76,"context_line":"      ONTAP 9.9.1 and newer."},{"line_number":77,"context_line":"    - Migrate FlexGroup share is not allowed."},{"line_number":78,"context_line":"    - Migrate share server containing FlexGroup share is not allowed."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":".. note::"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"36efbdc0_2e3fe08c","line":78,"range":{"start_line":78,"start_character":6,"end_line":78,"end_character":26},"in_reply_to":"fef1bd3b_cd24d660","updated":"2021-09-08 04:46:20.000000000","message":"done","commit_id":"0a6ccdcab684fe95522b25cf37613142a4b0e03d"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"a559f0aee9c79fa41fcb0da2e47c8f112eced226","unresolved":true,"context_lines":[{"line_number":56,"context_line":"- Create consistency group from CG snapshot"},{"line_number":57,"context_line":"- Create CG snapshot"},{"line_number":58,"context_line":"- Delete CG snapshot"},{"line_number":59,"context_line":"- Create a replica (DHSS\u003dFalse)"},{"line_number":60,"context_line":"- Promote a replica (DHSS\u003dFalse)"},{"line_number":61,"context_line":"- Delete a replica (DHSS\u003dFalse)"},{"line_number":62,"context_line":"- Update a replica (DHSS\u003dFalse)"},{"line_number":63,"context_line":"- Create a replicated snapshot (DHSS\u003dFalse)"},{"line_number":64,"context_line":"- Delete a replicated snapshot (DHSS\u003dFalse)"},{"line_number":65,"context_line":"- Update a replicated snapshot (DHSS\u003dFalse)"},{"line_number":66,"context_line":"- Migrate share"},{"line_number":67,"context_line":"- Migrate share server"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"98745a9f_05f0b82f","line":65,"range":{"start_line":59,"start_character":0,"end_line":65,"end_character":43},"updated":"2021-09-09 18:07:52.000000000","message":"I think that we can do all of this with DHSS\u003dTrue since Train. Will be good to update in a new patch.","commit_id":"9f3c566a10fe649919bee38f1ea839062b97cc01"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"745590d60218b6f0a28e7dee9d75c6a5d1d141ae","unresolved":true,"context_lines":[{"line_number":56,"context_line":"- Create consistency group from CG snapshot"},{"line_number":57,"context_line":"- Create CG snapshot"},{"line_number":58,"context_line":"- Delete CG snapshot"},{"line_number":59,"context_line":"- Create a replica (DHSS\u003dFalse)"},{"line_number":60,"context_line":"- Promote a replica (DHSS\u003dFalse)"},{"line_number":61,"context_line":"- Delete a replica (DHSS\u003dFalse)"},{"line_number":62,"context_line":"- Update a replica (DHSS\u003dFalse)"},{"line_number":63,"context_line":"- Create a replicated snapshot (DHSS\u003dFalse)"},{"line_number":64,"context_line":"- Delete a replicated snapshot (DHSS\u003dFalse)"},{"line_number":65,"context_line":"- Update a replicated snapshot (DHSS\u003dFalse)"},{"line_number":66,"context_line":"- Migrate share"},{"line_number":67,"context_line":"- Migrate share server"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"b37d88d1_02cdae7b","line":65,"range":{"start_line":59,"start_character":0,"end_line":65,"end_character":43},"in_reply_to":"98745a9f_05f0b82f","updated":"2021-09-09 20:08:20.000000000","message":"agree. We\u0027ll submit a new patch fix for it. Thanks!","commit_id":"9f3c566a10fe649919bee38f1ea839062b97cc01"}],"manila/exception.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"73966f8d43a7110880098dad24a8355f5a55914c","unresolved":true,"context_lines":[{"line_number":794,"context_line":""},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"class NetAppBusyAggregateForFlexGroupException(ManilaException):"},{"line_number":797,"context_line":"    message \u003d _(\"Exception due to busy aggregate for provisioning FlexGroup.\")"},{"line_number":798,"context_line":""},{"line_number":799,"context_line":""},{"line_number":800,"context_line":"class VserverNotFound(NetAppException):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5586f0ef_e2ecc35d","line":797,"range":{"start_line":797,"start_character":34,"end_line":797,"end_character":52},"updated":"2021-08-27 16:09:11.000000000","message":"the aggregate being busy while trying to provision a FlexGroup.","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"abe16d414854d1f836a3696eee4d6544f57b7247","unresolved":true,"context_lines":[{"line_number":794,"context_line":""},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"class NetAppBusyAggregateForFlexGroupException(ManilaException):"},{"line_number":797,"context_line":"    message \u003d _(\"Exception due to busy aggregate for provisioning FlexGroup.\")"},{"line_number":798,"context_line":""},{"line_number":799,"context_line":""},{"line_number":800,"context_line":"class VserverNotFound(NetAppException):"}],"source_content_type":"text/x-python","patch_set":5,"id":"a89bb801_4f350483","line":797,"range":{"start_line":797,"start_character":34,"end_line":797,"end_character":52},"in_reply_to":"5586f0ef_e2ecc35d","updated":"2021-08-31 12:50:40.000000000","message":"done","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"}],"manila/share/drivers/netapp/dataontap/client/client_cmode.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"73966f8d43a7110880098dad24a8355f5a55914c","unresolved":true,"context_lines":[{"line_number":5637,"context_line":"    def is_flexgroup_volume(self, volume_name):"},{"line_number":5638,"context_line":"        \"\"\"Determines if the ONTAP volume is FlexGroup.\"\"\""},{"line_number":5639,"context_line":""},{"line_number":5640,"context_line":"        if not self.features.FLEXGROUP:"},{"line_number":5641,"context_line":"            return False"},{"line_number":5642,"context_line":""},{"line_number":5643,"context_line":"        api_args \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"35da385f_74e2003e","line":5640,"range":{"start_line":5640,"start_character":15,"end_line":5640,"end_character":38},"updated":"2021-08-27 16:09:11.000000000","message":"is_flexgroups_supported","commit_id":"f317aea311bd2b6f5de8ef71538f26cf4a31c4ac"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"abe16d414854d1f836a3696eee4d6544f57b7247","unresolved":true,"context_lines":[{"line_number":5637,"context_line":"    def is_flexgroup_volume(self, volume_name):"},{"line_number":5638,"context_line":"        \"\"\"Determines if the ONTAP volume is FlexGroup.\"\"\""},{"line_number":5639,"context_line":""},{"line_number":5640,"context_line":"        if not self.features.FLEXGROUP:"},{"line_number":5641,"context_line":"            return False"},{"line_number":5642,"context_line":""},{"line_number":5643,"context_line":"        api_args \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"debbcfad_646455f0","line":5640,"range":{"start_line":5640,"start_character":15,"end_line":5640,"end_character":38},"in_reply_to":"35da385f_74e2003e","updated":"2021-08-31 12:50:40.000000000","message":"done.","commit_id":"f317aea311bd2b6f5de8ef71538f26cf4a31c4ac"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"73966f8d43a7110880098dad24a8355f5a55914c","unresolved":true,"context_lines":[{"line_number":5712,"context_line":"            msg \u003d _(\u0027Could not find job %(id)s.\u0027)"},{"line_number":5713,"context_line":"            msg_args \u003d {\u0027id\u0027: job_id}"},{"line_number":5714,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":5715,"context_line":"        elif len(job_info_list) \u003e 1:"},{"line_number":5716,"context_line":"            msg \u003d _(\u0027Could not find unique job %(id)s.\u0027)"},{"line_number":5717,"context_line":"            msg_args \u003d {\u0027id\u0027: job_id}"},{"line_number":5718,"context_line":"            raise exception.NetAppException(msg % msg_args)"}],"source_content_type":"text/x-python","patch_set":4,"id":"698f8823_3e1a743b","line":5715,"range":{"start_line":5715,"start_character":8,"end_line":5715,"end_character":36},"updated":"2021-08-27 16:09:11.000000000","message":"is it possible to happen? I mean, job states are supposed to be unique in ONTAP and they are supposed to have their own identificators...","commit_id":"f317aea311bd2b6f5de8ef71538f26cf4a31c4ac"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"abe16d414854d1f836a3696eee4d6544f57b7247","unresolved":true,"context_lines":[{"line_number":5712,"context_line":"            msg \u003d _(\u0027Could not find job %(id)s.\u0027)"},{"line_number":5713,"context_line":"            msg_args \u003d {\u0027id\u0027: job_id}"},{"line_number":5714,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":5715,"context_line":"        elif len(job_info_list) \u003e 1:"},{"line_number":5716,"context_line":"            msg \u003d _(\u0027Could not find unique job %(id)s.\u0027)"},{"line_number":5717,"context_line":"            msg_args \u003d {\u0027id\u0027: job_id}"},{"line_number":5718,"context_line":"            raise exception.NetAppException(msg % msg_args)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9708dfb1_0e9b9b6b","line":5715,"range":{"start_line":5715,"start_character":8,"end_line":5715,"end_character":36},"in_reply_to":"698f8823_3e1a743b","updated":"2021-08-31 12:50:40.000000000","message":"Yeah, might be! Given that I am calling a query call, it might happen for some reason. Example: job_id received as a regex by the caller. Or even a bug on ONTAP side. Or whatever. So, with this condition we ensure that it has only one element (better be safe).\n\nThis kind of rechecking is doing in several parts of the code.`","commit_id":"f317aea311bd2b6f5de8ef71538f26cf4a31c4ac"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"73966f8d43a7110880098dad24a8355f5a55914c","unresolved":true,"context_lines":[{"line_number":5665,"context_line":"        if not self._has_records(result):"},{"line_number":5666,"context_line":"            raise exception.StorageResourceNotFound(name\u003dvolume_name)"},{"line_number":5667,"context_line":"        elif len(volume_attributes_list) \u003e 1:"},{"line_number":5668,"context_line":"            msg \u003d _(\u0027Could not find unique volume %(vol)s.\u0027)"},{"line_number":5669,"context_line":"            msg_args \u003d {\u0027vol\u0027: volume_name}"},{"line_number":5670,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":5671,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"000290cf_c1844d5b","line":5668,"range":{"start_line":5668,"start_character":21,"end_line":5668,"end_character":49},"updated":"2021-08-27 16:09:11.000000000","message":"More than one volume with volume name %(vol)s found","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"abe16d414854d1f836a3696eee4d6544f57b7247","unresolved":true,"context_lines":[{"line_number":5665,"context_line":"        if not self._has_records(result):"},{"line_number":5666,"context_line":"            raise exception.StorageResourceNotFound(name\u003dvolume_name)"},{"line_number":5667,"context_line":"        elif len(volume_attributes_list) \u003e 1:"},{"line_number":5668,"context_line":"            msg \u003d _(\u0027Could not find unique volume %(vol)s.\u0027)"},{"line_number":5669,"context_line":"            msg_args \u003d {\u0027vol\u0027: volume_name}"},{"line_number":5670,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":5671,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"620a684d_6fd5d172","line":5668,"range":{"start_line":5668,"start_character":21,"end_line":5668,"end_character":49},"in_reply_to":"000290cf_c1844d5b","updated":"2021-08-31 12:50:40.000000000","message":"done","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"73966f8d43a7110880098dad24a8355f5a55914c","unresolved":true,"context_lines":[{"line_number":5709,"context_line":"            \u0027attributes-list\u0027) or netapp_api.NaElement(\u0027none\u0027)"},{"line_number":5710,"context_line":"        job_info_list \u003d attributes_list.get_children()"},{"line_number":5711,"context_line":"        if not self._has_records(result):"},{"line_number":5712,"context_line":"            msg \u003d _(\u0027Could not find job %(id)s.\u0027)"},{"line_number":5713,"context_line":"            msg_args \u003d {\u0027id\u0027: job_id}"},{"line_number":5714,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":5715,"context_line":"        elif len(job_info_list) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":5,"id":"15b3e0ea_ab502833","line":5712,"range":{"start_line":5712,"start_character":39,"end_line":5712,"end_character":40},"updated":"2021-08-27 16:09:11.000000000","message":"with id","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"abe16d414854d1f836a3696eee4d6544f57b7247","unresolved":true,"context_lines":[{"line_number":5709,"context_line":"            \u0027attributes-list\u0027) or netapp_api.NaElement(\u0027none\u0027)"},{"line_number":5710,"context_line":"        job_info_list \u003d attributes_list.get_children()"},{"line_number":5711,"context_line":"        if not self._has_records(result):"},{"line_number":5712,"context_line":"            msg \u003d _(\u0027Could not find job %(id)s.\u0027)"},{"line_number":5713,"context_line":"            msg_args \u003d {\u0027id\u0027: job_id}"},{"line_number":5714,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":5715,"context_line":"        elif len(job_info_list) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":5,"id":"08004ca0_a4daf5f8","line":5712,"range":{"start_line":5712,"start_character":39,"end_line":5712,"end_character":40},"in_reply_to":"15b3e0ea_ab502833","updated":"2021-08-31 12:50:40.000000000","message":"done","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"73966f8d43a7110880098dad24a8355f5a55914c","unresolved":true,"context_lines":[{"line_number":5713,"context_line":"            msg_args \u003d {\u0027id\u0027: job_id}"},{"line_number":5714,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":5715,"context_line":"        elif len(job_info_list) \u003e 1:"},{"line_number":5716,"context_line":"            msg \u003d _(\u0027Could not find unique job %(id)s.\u0027)"},{"line_number":5717,"context_line":"            msg_args \u003d {\u0027id\u0027: job_id}"},{"line_number":5718,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":5719,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"b57d6886_625dcc22","line":5716,"range":{"start_line":5716,"start_character":46,"end_line":5716,"end_character":47},"updated":"2021-08-27 16:09:11.000000000","message":"Could not find a unique job for id %(id)s\nBut I have a question though... What are the odds of ONTAP creating duplicate job IDs?\nMight be a dumb question but I decided to ask either way :)","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"42e37288f0a21eaf4672a2952a89faeb144f4d1c","unresolved":false,"context_lines":[{"line_number":5713,"context_line":"            msg_args \u003d {\u0027id\u0027: job_id}"},{"line_number":5714,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":5715,"context_line":"        elif len(job_info_list) \u003e 1:"},{"line_number":5716,"context_line":"            msg \u003d _(\u0027Could not find unique job %(id)s.\u0027)"},{"line_number":5717,"context_line":"            msg_args \u003d {\u0027id\u0027: job_id}"},{"line_number":5718,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":5719,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"cf54db79_6751603a","line":5716,"range":{"start_line":5716,"start_character":46,"end_line":5716,"end_character":47},"in_reply_to":"7f737bd7_05308f19","updated":"2021-09-08 13:37:40.000000000","message":"Ack","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"abe16d414854d1f836a3696eee4d6544f57b7247","unresolved":true,"context_lines":[{"line_number":5713,"context_line":"            msg_args \u003d {\u0027id\u0027: job_id}"},{"line_number":5714,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":5715,"context_line":"        elif len(job_info_list) \u003e 1:"},{"line_number":5716,"context_line":"            msg \u003d _(\u0027Could not find unique job %(id)s.\u0027)"},{"line_number":5717,"context_line":"            msg_args \u003d {\u0027id\u0027: job_id}"},{"line_number":5718,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":5719,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f737bd7_05308f19","line":5716,"range":{"start_line":5716,"start_character":46,"end_line":5716,"end_character":47},"in_reply_to":"b57d6886_625dcc22","updated":"2021-08-31 12:50:40.000000000","message":"note job_id is received from the params, it can be a regex like \"1*\", which would return several jobs. So, doing that check we ensure that the caller is not using wrongly the function. \n\nAbout the odds, very low! Some ONTAP bug or whatever. The condition here is to be safe!","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1412f262bb8e7fd607e628ced67299bae25386bb","unresolved":true,"context_lines":[{"line_number":2042,"context_line":"        self.update_volume_efficiency_attributes(volume_name,"},{"line_number":2043,"context_line":"                                                 dedup_enabled,"},{"line_number":2044,"context_line":"                                                 compression_enabled)"},{"line_number":2045,"context_line":"        if max_files is not None:"},{"line_number":2046,"context_line":"            self.set_volume_max_files(volume_name, max_files)"},{"line_number":2047,"context_line":""},{"line_number":2048,"context_line":"    @na_utils.trace"},{"line_number":2049,"context_line":"    def create_volume_async(self, aggregate_list, volume_name, size_gb,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a20ee4a_e5225dad","line":2046,"range":{"start_line":2045,"start_character":8,"end_line":2046,"end_character":61},"updated":"2021-09-07 22:42:00.000000000","message":"is this not possible with flexgroups? if yes, you\u0027ll need to handle the use of the scoped extra-spec: \"netapp:max_files\" when used with a flexgroup share..","commit_id":"0a6ccdcab684fe95522b25cf37613142a4b0e03d"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"8553837f1eea3f0c9f2791bb0f094857a55ed1b6","unresolved":true,"context_lines":[{"line_number":2042,"context_line":"        self.update_volume_efficiency_attributes(volume_name,"},{"line_number":2043,"context_line":"                                                 dedup_enabled,"},{"line_number":2044,"context_line":"                                                 compression_enabled)"},{"line_number":2045,"context_line":"        if max_files is not None:"},{"line_number":2046,"context_line":"            self.set_volume_max_files(volume_name, max_files)"},{"line_number":2047,"context_line":""},{"line_number":2048,"context_line":"    @na_utils.trace"},{"line_number":2049,"context_line":"    def create_volume_async(self, aggregate_list, volume_name, size_gb,"}],"source_content_type":"text/x-python","patch_set":9,"id":"e0b5404f_eb2627f0","line":2046,"range":{"start_line":2045,"start_character":8,"end_line":2046,"end_character":61},"in_reply_to":"9a20ee4a_e5225dad","updated":"2021-09-08 04:46:20.000000000","message":"Yeah, it works with FlexGroup. I didn\u0027t get your point, sorry. It is already using this extra-spec.","commit_id":"0a6ccdcab684fe95522b25cf37613142a4b0e03d"}],"manila/share/drivers/netapp/dataontap/cluster_mode/data_motion.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"73966f8d43a7110880098dad24a8355f5a55914c","unresolved":true,"context_lines":[{"line_number":744,"context_line":"    def wait_for_snapmirror_release_vol(self, src_vserver, dest_vserver,"},{"line_number":745,"context_line":"                                        src_volume_name, dest_volume_name,"},{"line_number":746,"context_line":"                                        relationship_info_only, src_client,"},{"line_number":747,"context_line":"                                        timeout\u003d300):"},{"line_number":748,"context_line":"        interval \u003d 10"},{"line_number":749,"context_line":"        retries \u003d (timeout / interval or 1)"},{"line_number":750,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"925ffd31_e7f5acf1","line":747,"range":{"start_line":747,"start_character":48,"end_line":747,"end_character":51},"updated":"2021-08-27 16:09:11.000000000","message":"is there a specific reason for this number?\nIf not, shouldn\u0027t it default to the configured netapp_snapmirror_release_timeout?","commit_id":"f317aea311bd2b6f5de8ef71538f26cf4a31c4ac"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"abe16d414854d1f836a3696eee4d6544f57b7247","unresolved":true,"context_lines":[{"line_number":744,"context_line":"    def wait_for_snapmirror_release_vol(self, src_vserver, dest_vserver,"},{"line_number":745,"context_line":"                                        src_volume_name, dest_volume_name,"},{"line_number":746,"context_line":"                                        relationship_info_only, src_client,"},{"line_number":747,"context_line":"                                        timeout\u003d300):"},{"line_number":748,"context_line":"        interval \u003d 10"},{"line_number":749,"context_line":"        retries \u003d (timeout / interval or 1)"},{"line_number":750,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"f7397dcd_f26bf270","line":747,"range":{"start_line":747,"start_character":48,"end_line":747,"end_character":51},"in_reply_to":"925ffd31_e7f5acf1","updated":"2021-08-31 12:50:40.000000000","message":"It is using the configuration, the caller controls it. The idea of keeping it with a random number here is more for make our unit tests easier. I copied from other code style here. If you don\u0027t like, we may change it.","commit_id":"f317aea311bd2b6f5de8ef71538f26cf4a31c4ac"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2acfa2ad1370d808c0a8fbf0d5530e4be2f789c5","unresolved":true,"context_lines":[{"line_number":428,"context_line":"            # deletes all snapmirror relationships involving this replica to"},{"line_number":429,"context_line":"            # ensure new relation can be set. For efficient snapmirror, it"},{"line_number":430,"context_line":"            # does not remove the snapshots, only releasing the relationship"},{"line_number":431,"context_line":"            # info whether FlexGroup volume."},{"line_number":432,"context_line":"            self.delete_snapmirror(other_replica, replica,"},{"line_number":433,"context_line":"                                   release\u003dis_flexgroup,"},{"line_number":434,"context_line":"                                   relationship_info_only\u003dis_flexgroup)"}],"source_content_type":"text/x-python","patch_set":5,"id":"63033e37_bc67df02","line":431,"range":{"start_line":431,"start_character":19,"end_line":431,"end_character":26},"updated":"2021-08-27 05:22:08.000000000","message":"nit: if","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":428,"context_line":"            # deletes all snapmirror relationships involving this replica to"},{"line_number":429,"context_line":"            # ensure new relation can be set. For efficient snapmirror, it"},{"line_number":430,"context_line":"            # does not remove the snapshots, only releasing the relationship"},{"line_number":431,"context_line":"            # info whether FlexGroup volume."},{"line_number":432,"context_line":"            self.delete_snapmirror(other_replica, replica,"},{"line_number":433,"context_line":"                                   release\u003dis_flexgroup,"},{"line_number":434,"context_line":"                                   relationship_info_only\u003dis_flexgroup)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1c02e112_400b5790","line":431,"range":{"start_line":431,"start_character":19,"end_line":431,"end_character":26},"in_reply_to":"63033e37_bc67df02","updated":"2021-09-02 17:03:37.000000000","message":"done","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2acfa2ad1370d808c0a8fbf0d5530e4be2f789c5","unresolved":true,"context_lines":[{"line_number":456,"context_line":""},{"line_number":457,"context_line":"        # 3. create"},{"line_number":458,"context_line":"        # TODO(ameade): Update the schedule if needed."},{"line_number":459,"context_line":"        relationship_type \u003d na_utils.get_relationship_type(is_flexgroup)"},{"line_number":460,"context_line":"        replica_client.create_snapmirror_vol(new_src_vserver,"},{"line_number":461,"context_line":"                                             new_src_volume_name,"},{"line_number":462,"context_line":"                                             replica_vserver,"}],"source_content_type":"text/x-python","patch_set":5,"id":"2320a7b5_032ca05c","line":459,"range":{"start_line":459,"start_character":0,"end_line":459,"end_character":72},"updated":"2021-08-27 05:22:08.000000000","message":"side note: its worth investigating if all new flexvol snapmirror relationships created by the driver can be XDP by default; As discussed at our Collab review, in newer ONTAP versions, XDP is preferred and the default when a relationship_type isn\u0027t specified: https://docs.netapp.com/ontap-9/index.jsp?topic\u003d%2Fcom.netapp.doc.pow-dap%2FGUID-9FF688E3-9A37-49A4-8239-EB55409FA2D0.html","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":456,"context_line":""},{"line_number":457,"context_line":"        # 3. create"},{"line_number":458,"context_line":"        # TODO(ameade): Update the schedule if needed."},{"line_number":459,"context_line":"        relationship_type \u003d na_utils.get_relationship_type(is_flexgroup)"},{"line_number":460,"context_line":"        replica_client.create_snapmirror_vol(new_src_vserver,"},{"line_number":461,"context_line":"                                             new_src_volume_name,"},{"line_number":462,"context_line":"                                             replica_vserver,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7e60e99b_8493629d","line":459,"range":{"start_line":459,"start_character":0,"end_line":459,"end_character":72},"in_reply_to":"2320a7b5_032ca05c","updated":"2021-09-02 17:03:37.000000000","message":"As the NetApp documentation that you placed here informs,creating a relationship as DP will make it as XDP, but with different default policy. \n\nDP  -\u003e XDP with MirrorAllSnapshots policy\nXDP -\u003e XDP with MirrorAndVault  policy\n\nI tested in my env and the created DP relationship shows as XDP type.\n\nThe NetApp driver requires the policy MirrorAllSnapshots (replication feature must replicate snapshots). So, I think that we could leave the FlexVol approach as before.","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"73966f8d43a7110880098dad24a8355f5a55914c","unresolved":true,"context_lines":[{"line_number":744,"context_line":"    def wait_for_snapmirror_release_vol(self, src_vserver, dest_vserver,"},{"line_number":745,"context_line":"                                        src_volume_name, dest_volume_name,"},{"line_number":746,"context_line":"                                        relationship_info_only, src_client,"},{"line_number":747,"context_line":"                                        timeout\u003d300):"},{"line_number":748,"context_line":"        interval \u003d 10"},{"line_number":749,"context_line":"        retries \u003d (timeout / interval or 1)"},{"line_number":750,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"37a4a444_b1692367","line":747,"range":{"start_line":747,"start_character":48,"end_line":747,"end_character":51},"updated":"2021-08-27 16:09:11.000000000","message":"Shouldn\u0027t this default to netapp_snapmirror_release_timeout?","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"abe16d414854d1f836a3696eee4d6544f57b7247","unresolved":true,"context_lines":[{"line_number":744,"context_line":"    def wait_for_snapmirror_release_vol(self, src_vserver, dest_vserver,"},{"line_number":745,"context_line":"                                        src_volume_name, dest_volume_name,"},{"line_number":746,"context_line":"                                        relationship_info_only, src_client,"},{"line_number":747,"context_line":"                                        timeout\u003d300):"},{"line_number":748,"context_line":"        interval \u003d 10"},{"line_number":749,"context_line":"        retries \u003d (timeout / interval or 1)"},{"line_number":750,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"90c09694_8a3fb857","line":747,"range":{"start_line":747,"start_character":48,"end_line":747,"end_character":51},"in_reply_to":"37a4a444_b1692367","updated":"2021-08-31 12:50:40.000000000","message":"the caller controls it, calling this function with timeout\u003dnetapp_snapmirror_release_timeout. Just copied the code style here.","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"73966f8d43a7110880098dad24a8355f5a55914c","unresolved":true,"context_lines":[{"line_number":766,"context_line":"                    if (e.code \u003d\u003d netapp_api.EOBJECTNOTFOUND or"},{"line_number":767,"context_line":"                            e.code \u003d\u003d netapp_api.ESOURCE_IS_DIFFERENT or"},{"line_number":768,"context_line":"                            \"(entry doesn\u0027t exist)\" in e.message):"},{"line_number":769,"context_line":"                        LOG.debug(\u0027Snapmirror relationship does not exists \u0027"},{"line_number":770,"context_line":"                                  \u0027anymore.\u0027)"},{"line_number":771,"context_line":""},{"line_number":772,"context_line":"                msg \u003d _(\u0027Snapmirror release sent to source volume. We will \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"e398cf23_30a2c625","line":769,"range":{"start_line":769,"start_character":68,"end_line":769,"end_character":74},"updated":"2021-08-27 16:09:11.000000000","message":"exist","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"abe16d414854d1f836a3696eee4d6544f57b7247","unresolved":true,"context_lines":[{"line_number":766,"context_line":"                    if (e.code \u003d\u003d netapp_api.EOBJECTNOTFOUND or"},{"line_number":767,"context_line":"                            e.code \u003d\u003d netapp_api.ESOURCE_IS_DIFFERENT or"},{"line_number":768,"context_line":"                            \"(entry doesn\u0027t exist)\" in e.message):"},{"line_number":769,"context_line":"                        LOG.debug(\u0027Snapmirror relationship does not exists \u0027"},{"line_number":770,"context_line":"                                  \u0027anymore.\u0027)"},{"line_number":771,"context_line":""},{"line_number":772,"context_line":"                msg \u003d _(\u0027Snapmirror release sent to source volume. We will \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"03872a9f_f53a601c","line":769,"range":{"start_line":769,"start_character":68,"end_line":769,"end_character":74},"in_reply_to":"e398cf23_30a2c625","updated":"2021-08-31 12:50:40.000000000","message":"done","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"73966f8d43a7110880098dad24a8355f5a55914c","unresolved":true,"context_lines":[{"line_number":769,"context_line":"                        LOG.debug(\u0027Snapmirror relationship does not exists \u0027"},{"line_number":770,"context_line":"                                  \u0027anymore.\u0027)"},{"line_number":771,"context_line":""},{"line_number":772,"context_line":"                msg \u003d _(\u0027Snapmirror release sent to source volume. We will \u0027"},{"line_number":773,"context_line":"                        \u0027wait for it to be released.\u0027)"},{"line_number":774,"context_line":"                raise exception.NetAppException(vserver\u003dmsg)"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"aaf45dc5_1958d502","line":773,"range":{"start_line":772,"start_character":67,"end_line":773,"end_character":51},"updated":"2021-08-27 16:09:11.000000000","message":"Waiting until it has been released.","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"abe16d414854d1f836a3696eee4d6544f57b7247","unresolved":true,"context_lines":[{"line_number":769,"context_line":"                        LOG.debug(\u0027Snapmirror relationship does not exists \u0027"},{"line_number":770,"context_line":"                                  \u0027anymore.\u0027)"},{"line_number":771,"context_line":""},{"line_number":772,"context_line":"                msg \u003d _(\u0027Snapmirror release sent to source volume. We will \u0027"},{"line_number":773,"context_line":"                        \u0027wait for it to be released.\u0027)"},{"line_number":774,"context_line":"                raise exception.NetAppException(vserver\u003dmsg)"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"4d3b5d56_8b3167d2","line":773,"range":{"start_line":772,"start_character":67,"end_line":773,"end_character":51},"in_reply_to":"aaf45dc5_1958d502","updated":"2021-08-31 12:50:40.000000000","message":"done","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2acfa2ad1370d808c0a8fbf0d5530e4be2f789c5","unresolved":true,"context_lines":[{"line_number":781,"context_line":"            raise exception.NetAppException(message\u003dmsg)"},{"line_number":782,"context_line":""},{"line_number":783,"context_line":"    def is_flexgroup_share(self, share_host):"},{"line_number":784,"context_line":"        \"\"\"Returns if the share host is over a FlexGroup pool.\"\"\""},{"line_number":785,"context_line":"        __, config \u003d self.get_backend_name_and_config_obj(share_host)"},{"line_number":786,"context_line":""},{"line_number":787,"context_line":"        if not config.safe_get(\u0027netapp_enable_flexgroup\u0027):"}],"source_content_type":"text/x-python","patch_set":5,"id":"535dde8e_edbaedb6","line":784,"range":{"start_line":784,"start_character":0,"end_line":784,"end_character":65},"updated":"2021-08-27 05:22:08.000000000","message":"from what i understand, this check is only used for remote volumes (or replica shares); isn\u0027t it possible to send a request to the remote vserver and verify if a volume is a flexgroup?","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":781,"context_line":"            raise exception.NetAppException(message\u003dmsg)"},{"line_number":782,"context_line":""},{"line_number":783,"context_line":"    def is_flexgroup_share(self, share_host):"},{"line_number":784,"context_line":"        \"\"\"Returns if the share host is over a FlexGroup pool.\"\"\""},{"line_number":785,"context_line":"        __, config \u003d self.get_backend_name_and_config_obj(share_host)"},{"line_number":786,"context_line":""},{"line_number":787,"context_line":"        if not config.safe_get(\u0027netapp_enable_flexgroup\u0027):"}],"source_content_type":"text/x-python","patch_set":5,"id":"94c5b73a_ad1e46c7","line":784,"range":{"start_line":784,"start_character":0,"end_line":784,"end_character":65},"in_reply_to":"535dde8e_edbaedb6","updated":"2021-09-02 17:03:37.000000000","message":"We already have a function to find out whether FlexGroup or not asking directly to ONTAP: lib_base:_is_flexgroup_share()\n\nSometimes we cannot find out locally, so we need to ask ONTAP. However, when we can do it locally, we do. For the replica/remote volumes here, we can do it locally. Am I wrong ?!\n\nMy question is: why should we ask ONTAP when working with remote volumes (or replicas), instead of doing it locally ?!","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"45cd670c907d035c8bfb8c9b1b31ce58d5e0741f","unresolved":true,"context_lines":[{"line_number":417,"context_line":"        new_src_volume_name, new_src_vserver, new_src_backend \u003d ("},{"line_number":418,"context_line":"            self.get_backend_info_for_share(new_source_replica))"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        new_src_client \u003d get_client_for_backend("},{"line_number":421,"context_line":"            new_src_backend, vserver_name\u003dnew_src_vserver)"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"        # 1. delete"},{"line_number":424,"context_line":"        for other_replica in replica_list:"},{"line_number":425,"context_line":"            if other_replica[\u0027id\u0027] \u003d\u003d replica[\u0027id\u0027]:"}],"source_content_type":"text/x-python","patch_set":7,"id":"28bd0d9a_254168ed","line":422,"range":{"start_line":420,"start_character":0,"end_line":422,"end_character":0},"updated":"2021-09-01 01:52:30.000000000","message":"why moving? this can create a new client that is not needed, triggering more zapi calls","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":417,"context_line":"        new_src_volume_name, new_src_vserver, new_src_backend \u003d ("},{"line_number":418,"context_line":"            self.get_backend_info_for_share(new_source_replica))"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        new_src_client \u003d get_client_for_backend("},{"line_number":421,"context_line":"            new_src_backend, vserver_name\u003dnew_src_vserver)"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"        # 1. delete"},{"line_number":424,"context_line":"        for other_replica in replica_list:"},{"line_number":425,"context_line":"            if other_replica[\u0027id\u0027] \u003d\u003d replica[\u0027id\u0027]:"}],"source_content_type":"text/x-python","patch_set":7,"id":"26640147_c125af84","line":422,"range":{"start_line":420,"start_character":0,"end_line":422,"end_character":0},"in_reply_to":"28bd0d9a_254168ed","updated":"2021-09-02 17:03:37.000000000","message":"my fault. It changed because I was using the new_src_client, but then I removed it without move back the new_src_client. Anyway, I fixed.","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"45cd670c907d035c8bfb8c9b1b31ce58d5e0741f","unresolved":true,"context_lines":[{"line_number":780,"context_line":"                    \"Retries exhausted. Aborting\") % src_volume_name"},{"line_number":781,"context_line":"            raise exception.NetAppException(message\u003dmsg)"},{"line_number":782,"context_line":""},{"line_number":783,"context_line":"    def is_flexgroup_share(self, share_host):"},{"line_number":784,"context_line":"        \"\"\"Returns if the share host is over a FlexGroup pool.\"\"\""},{"line_number":785,"context_line":"        __, config \u003d self.get_backend_name_and_config_obj(share_host)"},{"line_number":786,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"4fb56640_12c40850","line":783,"range":{"start_line":783,"start_character":8,"end_line":783,"end_character":26},"updated":"2021-09-01 01:52:30.000000000","message":"doesn\u0027t make sense to be in data_motion, maybe utils or lib_base?\nmaybe rename the function name too, since you are checking if a pool is a flexgroup pool","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":780,"context_line":"                    \"Retries exhausted. Aborting\") % src_volume_name"},{"line_number":781,"context_line":"            raise exception.NetAppException(message\u003dmsg)"},{"line_number":782,"context_line":""},{"line_number":783,"context_line":"    def is_flexgroup_share(self, share_host):"},{"line_number":784,"context_line":"        \"\"\"Returns if the share host is over a FlexGroup pool.\"\"\""},{"line_number":785,"context_line":"        __, config \u003d self.get_backend_name_and_config_obj(share_host)"},{"line_number":786,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9d29a3bb_526d8ecb","line":783,"range":{"start_line":783,"start_character":8,"end_line":783,"end_character":26},"in_reply_to":"4fb56640_12c40850","updated":"2021-09-02 17:03:37.000000000","message":"Yeah. You\u0027re right. I moved it to lib_base and renamed to \"is_flexgroup_destination_host\"","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"}],"manila/share/drivers/netapp/dataontap/cluster_mode/lib_base.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"73966f8d43a7110880098dad24a8355f5a55914c","unresolved":true,"context_lines":[{"line_number":1857,"context_line":""},{"line_number":1858,"context_line":"        # Check that share and pool are from same style."},{"line_number":1859,"context_line":"        flexgroup_vol \u003d self._is_flexgroup_share(vserver_client, volume_name)"},{"line_number":1860,"context_line":"        if flexgroup_vol !\u003d flexgroup_pool:"},{"line_number":1861,"context_line":"            share_style \u003d \u0027FlexGroup\u0027 if flexgroup_vol else \u0027FlexVol\u0027"},{"line_number":1862,"context_line":"            pool_style \u003d \u0027FlexGroup\u0027 if flexgroup_pool else \u0027FlexVol\u0027"},{"line_number":1863,"context_line":"            msg \u003d _(\u0027Could not manage share %(share)s on the specified pool \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"6847de09_0adeaa58","line":1860,"range":{"start_line":1860,"start_character":8,"end_line":1860,"end_character":43},"updated":"2021-08-27 16:09:11.000000000","message":"Is this also valid for a pool that isn\u0027t tagged with `is_flexgroup_only\u003dTrue`?","commit_id":"f317aea311bd2b6f5de8ef71538f26cf4a31c4ac"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"abe16d414854d1f836a3696eee4d6544f57b7247","unresolved":true,"context_lines":[{"line_number":1857,"context_line":""},{"line_number":1858,"context_line":"        # Check that share and pool are from same style."},{"line_number":1859,"context_line":"        flexgroup_vol \u003d self._is_flexgroup_share(vserver_client, volume_name)"},{"line_number":1860,"context_line":"        if flexgroup_vol !\u003d flexgroup_pool:"},{"line_number":1861,"context_line":"            share_style \u003d \u0027FlexGroup\u0027 if flexgroup_vol else \u0027FlexVol\u0027"},{"line_number":1862,"context_line":"            pool_style \u003d \u0027FlexGroup\u0027 if flexgroup_pool else \u0027FlexVol\u0027"},{"line_number":1863,"context_line":"            msg \u003d _(\u0027Could not manage share %(share)s on the specified pool \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"566bf222_36201fd8","line":1860,"range":{"start_line":1860,"start_character":8,"end_line":1860,"end_character":43},"in_reply_to":"6847de09_0adeaa58","updated":"2021-08-31 12:50:40.000000000","message":"Yeah, because the user may be trying to manage a flexvol volume on a flexgroup pool.","commit_id":"f317aea311bd2b6f5de8ef71538f26cf4a31c4ac"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"73966f8d43a7110880098dad24a8355f5a55914c","unresolved":true,"context_lines":[{"line_number":3853,"context_line":""},{"line_number":3854,"context_line":"        flexgroup_pools \u003d self.configuration.safe_get(\u0027netapp_flexgroup_pool\u0027)"},{"line_number":3855,"context_line":"        if not self.configuration.netapp_enable_flexgroup and flexgroup_pools:"},{"line_number":3856,"context_line":"            msg \u003d _(\u0027FlexGroup wrong configuration: netapp_enable_flexgroup \u0027"},{"line_number":3857,"context_line":"                    \u0027option must be True to configure its custom pools using \u0027"},{"line_number":3858,"context_line":"                    \u0027netapp_flexgroup_pool.\u0027)"},{"line_number":3859,"context_line":"            raise exception.NetAppException(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"4ce3a670_3c748a06","line":3856,"range":{"start_line":3856,"start_character":21,"end_line":3856,"end_character":50},"updated":"2021-08-27 16:09:11.000000000","message":"Invalid configuration for FlexGroup","commit_id":"f317aea311bd2b6f5de8ef71538f26cf4a31c4ac"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"abe16d414854d1f836a3696eee4d6544f57b7247","unresolved":true,"context_lines":[{"line_number":3853,"context_line":""},{"line_number":3854,"context_line":"        flexgroup_pools \u003d self.configuration.safe_get(\u0027netapp_flexgroup_pool\u0027)"},{"line_number":3855,"context_line":"        if not self.configuration.netapp_enable_flexgroup and flexgroup_pools:"},{"line_number":3856,"context_line":"            msg \u003d _(\u0027FlexGroup wrong configuration: netapp_enable_flexgroup \u0027"},{"line_number":3857,"context_line":"                    \u0027option must be True to configure its custom pools using \u0027"},{"line_number":3858,"context_line":"                    \u0027netapp_flexgroup_pool.\u0027)"},{"line_number":3859,"context_line":"            raise exception.NetAppException(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a04aa7f_457b1961","line":3856,"range":{"start_line":3856,"start_character":21,"end_line":3856,"end_character":50},"in_reply_to":"4ce3a670_3c748a06","updated":"2021-08-31 12:50:40.000000000","message":"done","commit_id":"f317aea311bd2b6f5de8ef71538f26cf4a31c4ac"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"73966f8d43a7110880098dad24a8355f5a55914c","unresolved":true,"context_lines":[{"line_number":3862,"context_line":""},{"line_number":3863,"context_line":"        if not self._client.is_flexgroup_supported():"},{"line_number":3864,"context_line":"            msg \u003d _(\u0027FlexGroup pool is only supported with ONTAP version \u0027"},{"line_number":3865,"context_line":"                    \u0027greater or equal to 9.8.\u0027)"},{"line_number":3866,"context_line":"            raise exception.NetAppException(msg)"},{"line_number":3867,"context_line":""},{"line_number":3868,"context_line":"        if flexgroup_pools:"}],"source_content_type":"text/x-python","patch_set":4,"id":"a4322bed_1d05df4d","line":3865,"range":{"start_line":3865,"start_character":21,"end_line":3865,"end_character":28},"updated":"2021-08-27 16:09:11.000000000","message":"greater than","commit_id":"f317aea311bd2b6f5de8ef71538f26cf4a31c4ac"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"abe16d414854d1f836a3696eee4d6544f57b7247","unresolved":true,"context_lines":[{"line_number":3862,"context_line":""},{"line_number":3863,"context_line":"        if not self._client.is_flexgroup_supported():"},{"line_number":3864,"context_line":"            msg \u003d _(\u0027FlexGroup pool is only supported with ONTAP version \u0027"},{"line_number":3865,"context_line":"                    \u0027greater or equal to 9.8.\u0027)"},{"line_number":3866,"context_line":"            raise exception.NetAppException(msg)"},{"line_number":3867,"context_line":""},{"line_number":3868,"context_line":"        if flexgroup_pools:"}],"source_content_type":"text/x-python","patch_set":4,"id":"4bbc41d5_2cf49d3e","line":3865,"range":{"start_line":3865,"start_character":21,"end_line":3865,"end_character":28},"in_reply_to":"a4322bed_1d05df4d","updated":"2021-08-31 12:50:40.000000000","message":"done.","commit_id":"f317aea311bd2b6f5de8ef71538f26cf4a31c4ac"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2acfa2ad1370d808c0a8fbf0d5530e4be2f789c5","unresolved":true,"context_lines":[{"line_number":370,"context_line":"        # entire backend, not per pool. So, if there is a FlexGroup pool, the"},{"line_number":371,"context_line":"        # driver drops for all pools the consistent snapshot support."},{"line_number":372,"context_line":"        consistent_snapshot_support \u003d \u0027host\u0027"},{"line_number":373,"context_line":"        if self._flexgroup_pools:"},{"line_number":374,"context_line":"            consistent_snapshot_support \u003d None"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        data \u003d {"},{"line_number":377,"context_line":"            \u0027share_backend_name\u0027: self._backend_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"173fa168_2b09f3ff","line":374,"range":{"start_line":373,"start_character":8,"end_line":374,"end_character":46},"updated":"2021-08-27 05:22:08.000000000","message":"Is it possible to still achieve this only for flexvol pools? Switching off a capability like this causes regression in behavior; i.e., \n\nfor example: before upgrading to this release, users may have groups with the gtilroup capability \n\"consistent_snapshot_support\". After upgrade, and enabling flexgroups, they lose the ability to take consistent group snapshots - however, the group still claims to support consistent snapshots.","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":370,"context_line":"        # entire backend, not per pool. So, if there is a FlexGroup pool, the"},{"line_number":371,"context_line":"        # driver drops for all pools the consistent snapshot support."},{"line_number":372,"context_line":"        consistent_snapshot_support \u003d \u0027host\u0027"},{"line_number":373,"context_line":"        if self._flexgroup_pools:"},{"line_number":374,"context_line":"            consistent_snapshot_support \u003d None"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        data \u003d {"},{"line_number":377,"context_line":"            \u0027share_backend_name\u0027: self._backend_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"6d88ec5e_f13ccbd1","line":374,"range":{"start_line":373,"start_character":8,"end_line":374,"end_character":46},"in_reply_to":"173fa168_2b09f3ff","updated":"2021-09-02 17:03:37.000000000","message":"Good point Goutham.\n\nIf I am not wrong (please, correct me), the manila group design sticks the consistent snapshot support in the driver level. So, a driver reports which kind of support for group it has: pool (group as consistency with volumes in the same pool), host (all groups are consistency) or None (all groups are not consistency). I dont have the option to report it for each pool. So, working with a backend with FlexGroup and FlexVol together, I need to choose one for all. If I claim to support host, the groups with FlexGroup share will be consitency and snapshot will break. So, my driver should tend to most restrictive one: no consistency support.\n\nAbout the regregression behavior, you are right. However, remember: the administrator is doing a wrong setup. He/she should never configure a backend with FlexGroup if it is desired to use consistency groups (it will be highlighted during FlexGroup documentation). We will rely on docs. I agree with you that it is a bit error prone. Do you have any suggestion to overcome that restriction ?! I\u0027m open to suggestions.\n\nFun fact: a FlexGroup volume is a kind of consistency group. In fact, the NetApp users might convert their share groups to a single FlexGroup volume (directly in ONTAP). Then, managing this FlexGroup volume. In another words: the consistency group support may not be required for users working with FlexGroup.","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2acfa2ad1370d808c0a8fbf0d5530e4be2f789c5","unresolved":true,"context_lines":[{"line_number":443,"context_line":"            total_gb, free_gb, used_gb \u003d self._get_flexgroup_pool_space("},{"line_number":444,"context_line":"                aggr_space, aggr_list)"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"            pool \u003d self._get_pool(pool_name, total_gb, free_gb, used_gb)"},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"            cached_pools.append(pool)"},{"line_number":449,"context_line":"            pool_with_func \u003d copy.deepcopy(pool)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f8a68b1_ec48f822","line":446,"range":{"start_line":446,"start_character":0,"end_line":446,"end_character":72},"updated":"2021-08-27 05:22:08.000000000","message":"As discussed at the collab review - since flexgroups have a minimum size requirement, please implement and have the driver report this requirement via a filter_function, here\u0027s an example: https://review.opendev.org/c/openstack/manila/+/691807","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":443,"context_line":"            total_gb, free_gb, used_gb \u003d self._get_flexgroup_pool_space("},{"line_number":444,"context_line":"                aggr_space, aggr_list)"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"            pool \u003d self._get_pool(pool_name, total_gb, free_gb, used_gb)"},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"            cached_pools.append(pool)"},{"line_number":449,"context_line":"            pool_with_func \u003d copy.deepcopy(pool)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7b49b59f_5c60564b","line":446,"range":{"start_line":446,"start_character":0,"end_line":446,"end_character":72},"in_reply_to":"9f8a68b1_ec48f822","updated":"2021-09-02 17:03:37.000000000","message":"done","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2acfa2ad1370d808c0a8fbf0d5530e4be2f789c5","unresolved":true,"context_lines":[{"line_number":528,"context_line":"        total size divided equally through the pool aggregates. So, the pool"},{"line_number":529,"context_line":"        size is limited by the least aggregate size:"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"        - free_size \u003d least_aggregate_total_size * number_aggregates"},{"line_number":532,"context_line":"        - total_size \u003d least_aggregate_free_size * number_aggregates"},{"line_number":533,"context_line":"        - used_size \u003d total_size - free_size"},{"line_number":534,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"6821c1a6_41a7591c","line":531,"range":{"start_line":531,"start_character":22,"end_line":531,"end_character":48},"updated":"2021-08-27 05:22:08.000000000","message":"least_aggregate_free_size","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":528,"context_line":"        total size divided equally through the pool aggregates. So, the pool"},{"line_number":529,"context_line":"        size is limited by the least aggregate size:"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"        - free_size \u003d least_aggregate_total_size * number_aggregates"},{"line_number":532,"context_line":"        - total_size \u003d least_aggregate_free_size * number_aggregates"},{"line_number":533,"context_line":"        - used_size \u003d total_size - free_size"},{"line_number":534,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"2ae3fe49_019f61f0","line":531,"range":{"start_line":531,"start_character":22,"end_line":531,"end_character":48},"in_reply_to":"6821c1a6_41a7591c","updated":"2021-09-02 17:03:37.000000000","message":"done","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2acfa2ad1370d808c0a8fbf0d5530e4be2f789c5","unresolved":true,"context_lines":[{"line_number":529,"context_line":"        size is limited by the least aggregate size:"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"        - free_size \u003d least_aggregate_total_size * number_aggregates"},{"line_number":532,"context_line":"        - total_size \u003d least_aggregate_free_size * number_aggregates"},{"line_number":533,"context_line":"        - used_size \u003d total_size - free_size"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"        :param aggr_space_map: space info dict for the driver aggregates."}],"source_content_type":"text/x-python","patch_set":5,"id":"66f9545a_1c819588","line":532,"range":{"start_line":532,"start_character":23,"end_line":532,"end_character":48},"updated":"2021-08-27 05:22:08.000000000","message":"least_aggregate_total_size","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":529,"context_line":"        size is limited by the least aggregate size:"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"        - free_size \u003d least_aggregate_total_size * number_aggregates"},{"line_number":532,"context_line":"        - total_size \u003d least_aggregate_free_size * number_aggregates"},{"line_number":533,"context_line":"        - used_size \u003d total_size - free_size"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"        :param aggr_space_map: space info dict for the driver aggregates."}],"source_content_type":"text/x-python","patch_set":5,"id":"ba35f5c9_b1d45db1","line":532,"range":{"start_line":532,"start_character":23,"end_line":532,"end_character":48},"in_reply_to":"66f9545a_1c819588","updated":"2021-09-02 17:03:37.000000000","message":"done","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"73966f8d43a7110880098dad24a8355f5a55914c","unresolved":true,"context_lines":[{"line_number":1057,"context_line":"                  \u0027provisioning options %(options)s\u0027,"},{"line_number":1058,"context_line":"                  {\u0027share\u0027: share_name, \u0027pool\u0027: pool_name,"},{"line_number":1059,"context_line":"                   \u0027options\u0027: provisioning_options})"},{"line_number":1060,"context_line":"        if self._is_flexgroup_pool(pool_name):"},{"line_number":1061,"context_line":"            aggr_list \u003d self._get_flexgroup_aggregate_list(pool_name)"},{"line_number":1062,"context_line":"            self._create_flexgroup_share("},{"line_number":1063,"context_line":"                vserver_client, aggr_list, share_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"91d32ba4_e74c4924","line":1060,"range":{"start_line":1060,"start_character":8,"end_line":1060,"end_character":46},"updated":"2021-08-27 16:09:11.000000000","message":"is there a chance of a flexgroup pool with the flag is_flexgroup_only is chosen for a flexvol creation and enters in this IF statement?","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"abe16d414854d1f836a3696eee4d6544f57b7247","unresolved":true,"context_lines":[{"line_number":1057,"context_line":"                  \u0027provisioning options %(options)s\u0027,"},{"line_number":1058,"context_line":"                  {\u0027share\u0027: share_name, \u0027pool\u0027: pool_name,"},{"line_number":1059,"context_line":"                   \u0027options\u0027: provisioning_options})"},{"line_number":1060,"context_line":"        if self._is_flexgroup_pool(pool_name):"},{"line_number":1061,"context_line":"            aggr_list \u003d self._get_flexgroup_aggregate_list(pool_name)"},{"line_number":1062,"context_line":"            self._create_flexgroup_share("},{"line_number":1063,"context_line":"                vserver_client, aggr_list, share_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"c9706424_daf621a8","line":1060,"range":{"start_line":1060,"start_character":8,"end_line":1060,"end_character":46},"in_reply_to":"91d32ba4_e74c4924","updated":"2021-08-31 12:50:40.000000000","message":"Sorry Carlos, I think I did not get your point, if the flag is_flexgroup_only is on, there is no flexvol pools. how could it be a flexvol creation ?! Note: whether a flexvol or flexgroup creation, it depends on the chosen pool by the scheduler. The volume itself does not control it. The pool enforces it, though.","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2acfa2ad1370d808c0a8fbf0d5530e4be2f789c5","unresolved":true,"context_lines":[{"line_number":1099,"context_line":"                                **provisioning_options):"},{"line_number":1100,"context_line":"        \"\"\"Create a FlexGroup share using async API with job.\"\"\""},{"line_number":1101,"context_line":""},{"line_number":1102,"context_line":"        # TODO(felipe_rodrigues): fail whether the constituent flexgroup size"},{"line_number":1103,"context_line":"        # is less than 100GB"},{"line_number":1104,"context_line":""},{"line_number":1105,"context_line":"        start_timeout \u003d ("},{"line_number":1106,"context_line":"            self.configuration.netapp_flexgroup_aggregate_not_busy_timeout)"}],"source_content_type":"text/x-python","patch_set":5,"id":"f561ab4f_968339c2","line":1103,"range":{"start_line":1102,"start_character":8,"end_line":1103,"end_character":28},"updated":"2021-08-27 05:22:08.000000000","message":"if you implement the filter_function, no need for this TODO","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":1099,"context_line":"                                **provisioning_options):"},{"line_number":1100,"context_line":"        \"\"\"Create a FlexGroup share using async API with job.\"\"\""},{"line_number":1101,"context_line":""},{"line_number":1102,"context_line":"        # TODO(felipe_rodrigues): fail whether the constituent flexgroup size"},{"line_number":1103,"context_line":"        # is less than 100GB"},{"line_number":1104,"context_line":""},{"line_number":1105,"context_line":"        start_timeout \u003d ("},{"line_number":1106,"context_line":"            self.configuration.netapp_flexgroup_aggregate_not_busy_timeout)"}],"source_content_type":"text/x-python","patch_set":5,"id":"528a12d0_7fa60eba","line":1103,"range":{"start_line":1102,"start_character":8,"end_line":1103,"end_character":28},"in_reply_to":"f561ab4f_968339c2","updated":"2021-09-02 17:03:37.000000000","message":"yeap, removed.","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2acfa2ad1370d808c0a8fbf0d5530e4be2f789c5","unresolved":true,"context_lines":[{"line_number":1115,"context_line":"        job_id \u003d job_info[\u0027jobid\u0027]"},{"line_number":1116,"context_line":"        timeout \u003d self.configuration.netapp_flexgroup_volume_online_timeout"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"        def _wait_job_is_completed():"},{"line_number":1119,"context_line":""},{"line_number":1120,"context_line":"            job_state \u003d vserver_client.get_job_state(job_id)"},{"line_number":1121,"context_line":"            LOG.debug(\"Waiting for FlexGroup create job %(job_id)s in state: \""},{"line_number":1122,"context_line":"                      \"%(job_state)s.\","},{"line_number":1123,"context_line":"                      {\u0027job_id\u0027: job_id, \u0027job_state\u0027: job_state})"},{"line_number":1124,"context_line":"            if job_state \u003d\u003d \u0027success\u0027:"},{"line_number":1125,"context_line":"                raise loopingcall.LoopingCallDone()"},{"line_number":1126,"context_line":"            elif (job_state \u003d\u003d \u0027failure\u0027 or job_state \u003d\u003d \u0027error\u0027 or"},{"line_number":1127,"context_line":"                  job_state \u003d\u003d \u0027quit\u0027 or job_state \u003d\u003d \u0027dead\u0027):"},{"line_number":1128,"context_line":"                msg_error \u003d \"Error performing the create FlexGroup job %s.\""},{"line_number":1129,"context_line":"                raise exception.NetAppException(msg_error % job_id)"},{"line_number":1130,"context_line":""},{"line_number":1131,"context_line":"        try:"},{"line_number":1132,"context_line":"            wait_call \u003d loopingcall.FixedIntervalWithTimeoutLoopingCall("},{"line_number":1133,"context_line":"                _wait_job_is_completed)"},{"line_number":1134,"context_line":"            wait_call.start(interval\u003d5, timeout\u003dtimeout).wait()"},{"line_number":1135,"context_line":""},{"line_number":1136,"context_line":"            vserver_client.update_volume_efficiency_attributes("},{"line_number":1137,"context_line":"                share_name, dedup_enabled, compression_enabled,"},{"line_number":1138,"context_line":"                is_flexgroup\u003dTrue)"},{"line_number":1139,"context_line":""},{"line_number":1140,"context_line":"            if max_files is not None:"},{"line_number":1141,"context_line":"                vserver_client.set_volume_max_files(share_name, max_files)"},{"line_number":1142,"context_line":""},{"line_number":1143,"context_line":"        except loopingcall.LoopingCallTimeOut:"},{"line_number":1144,"context_line":"            msg \u003d _(\"Timeout waiting for FlexGroup job %s to be finished.\")"},{"line_number":1145,"context_line":"            raise exception.NetAppException(msg % job_id)"},{"line_number":1146,"context_line":""},{"line_number":1147,"context_line":"    @na_utils.trace"},{"line_number":1148,"context_line":"    def wait_for_start_create_flexgroup(self, start_timeout, vserver_client,"}],"source_content_type":"text/x-python","patch_set":5,"id":"42fb7703_7540963a","line":1145,"range":{"start_line":1118,"start_character":8,"end_line":1145,"end_character":57},"updated":"2021-08-27 05:22:08.000000000","message":"As discussed at the collab review, looping calls spawn new greenthreads, and we have a pretty primitive interface to control these threads. I would strongly recommend against spawning new loopingcalls in the driver for this - this is a perfectly acceptable async operation that we can offload to the share manager just like we do in case of an async create share from snapshot. \n\nThe driver could wait until a flexgroup job ID has been acquired - and then, return a dictionary with \"status\" set to \"async_creating\" (or something like that) to the share manager. We can check this return value in the share manager and rely on the asynchrounous share update routine (https://github.com/openstack/manila/blob/1d95424dd674ced8479c8dae8841fbe40b82322a/manila/share/manager.py#L4848-L4859) to record the share\u0027s status when it completes.\n\nJust take care not to expose this status to end users, i.e., map it back to \"creating\" with the help of the view builder in these resources: https://github.com/openstack/manila/blob/master/manila/api/views/shares.py, https://github.com/openstack/manila/blob/master/manila/api/views/share_replicas.py, https://github.com/openstack/manila/blob/master/manila/api/views/share_instance.py\n\n\nDon\u0027t mind if you want to treat this as a bugfix/rfe enhancement after the upcoming feature freeze.","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":1115,"context_line":"        job_id \u003d job_info[\u0027jobid\u0027]"},{"line_number":1116,"context_line":"        timeout \u003d self.configuration.netapp_flexgroup_volume_online_timeout"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"        def _wait_job_is_completed():"},{"line_number":1119,"context_line":""},{"line_number":1120,"context_line":"            job_state \u003d vserver_client.get_job_state(job_id)"},{"line_number":1121,"context_line":"            LOG.debug(\"Waiting for FlexGroup create job %(job_id)s in state: \""},{"line_number":1122,"context_line":"                      \"%(job_state)s.\","},{"line_number":1123,"context_line":"                      {\u0027job_id\u0027: job_id, \u0027job_state\u0027: job_state})"},{"line_number":1124,"context_line":"            if job_state \u003d\u003d \u0027success\u0027:"},{"line_number":1125,"context_line":"                raise loopingcall.LoopingCallDone()"},{"line_number":1126,"context_line":"            elif (job_state \u003d\u003d \u0027failure\u0027 or job_state \u003d\u003d \u0027error\u0027 or"},{"line_number":1127,"context_line":"                  job_state \u003d\u003d \u0027quit\u0027 or job_state \u003d\u003d \u0027dead\u0027):"},{"line_number":1128,"context_line":"                msg_error \u003d \"Error performing the create FlexGroup job %s.\""},{"line_number":1129,"context_line":"                raise exception.NetAppException(msg_error % job_id)"},{"line_number":1130,"context_line":""},{"line_number":1131,"context_line":"        try:"},{"line_number":1132,"context_line":"            wait_call \u003d loopingcall.FixedIntervalWithTimeoutLoopingCall("},{"line_number":1133,"context_line":"                _wait_job_is_completed)"},{"line_number":1134,"context_line":"            wait_call.start(interval\u003d5, timeout\u003dtimeout).wait()"},{"line_number":1135,"context_line":""},{"line_number":1136,"context_line":"            vserver_client.update_volume_efficiency_attributes("},{"line_number":1137,"context_line":"                share_name, dedup_enabled, compression_enabled,"},{"line_number":1138,"context_line":"                is_flexgroup\u003dTrue)"},{"line_number":1139,"context_line":""},{"line_number":1140,"context_line":"            if max_files is not None:"},{"line_number":1141,"context_line":"                vserver_client.set_volume_max_files(share_name, max_files)"},{"line_number":1142,"context_line":""},{"line_number":1143,"context_line":"        except loopingcall.LoopingCallTimeOut:"},{"line_number":1144,"context_line":"            msg \u003d _(\"Timeout waiting for FlexGroup job %s to be finished.\")"},{"line_number":1145,"context_line":"            raise exception.NetAppException(msg % job_id)"},{"line_number":1146,"context_line":""},{"line_number":1147,"context_line":"    @na_utils.trace"},{"line_number":1148,"context_line":"    def wait_for_start_create_flexgroup(self, start_timeout, vserver_client,"}],"source_content_type":"text/x-python","patch_set":5,"id":"c7f40528_a0044606","line":1145,"range":{"start_line":1118,"start_character":8,"end_line":1145,"end_character":57},"in_reply_to":"42fb7703_7540963a","updated":"2021-09-02 17:03:37.000000000","message":"Thank you Goutham for explaining this great improvement in my patch. Given the feature freeze deadline, I will work on this later as a bugfix. I changed it to a retry loop, as best effort.","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"73966f8d43a7110880098dad24a8355f5a55914c","unresolved":true,"context_lines":[{"line_number":1152,"context_line":"        \"\"\"Wait for starting create FlexGroup volume succeed."},{"line_number":1153,"context_line":""},{"line_number":1154,"context_line":"        Create FlexGroup volume fails in case any of the selected aggregates"},{"line_number":1155,"context_line":"        is being used for provision another volume. Instead of failing, tries"},{"line_number":1156,"context_line":"        several times."},{"line_number":1157,"context_line":""},{"line_number":1158,"context_line":"        :param start_timeout: time in seconds to try create."}],"source_content_type":"text/x-python","patch_set":5,"id":"4cda040e_ceb350c4","line":1155,"range":{"start_line":1155,"start_character":8,"end_line":1155,"end_character":11},"updated":"2021-08-27 16:09:11.000000000","message":"are","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"abe16d414854d1f836a3696eee4d6544f57b7247","unresolved":true,"context_lines":[{"line_number":1152,"context_line":"        \"\"\"Wait for starting create FlexGroup volume succeed."},{"line_number":1153,"context_line":""},{"line_number":1154,"context_line":"        Create FlexGroup volume fails in case any of the selected aggregates"},{"line_number":1155,"context_line":"        is being used for provision another volume. Instead of failing, tries"},{"line_number":1156,"context_line":"        several times."},{"line_number":1157,"context_line":""},{"line_number":1158,"context_line":"        :param start_timeout: time in seconds to try create."}],"source_content_type":"text/x-python","patch_set":5,"id":"6fe7b81c_a27dfc46","line":1155,"range":{"start_line":1155,"start_character":8,"end_line":1155,"end_character":11},"in_reply_to":"4cda040e_ceb350c4","updated":"2021-08-31 12:50:40.000000000","message":"done.","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2acfa2ad1370d808c0a8fbf0d5530e4be2f789c5","unresolved":true,"context_lines":[{"line_number":1780,"context_line":"                vserver_client.split_volume_clone(snapshot_child[\u0027name\u0027])"},{"line_number":1781,"context_line":""},{"line_number":1782,"context_line":"            if is_flexgroup:"},{"line_number":1783,"context_line":"                # NOTE(felipe_rodrigues): ONTAP does not allow rename a"},{"line_number":1784,"context_line":"                # FlexGroup snapshot, so it cannot be soft deleted. It will"},{"line_number":1785,"context_line":"                # wait for all split clones complete."},{"line_number":1786,"context_line":"                self._delete_busy_snapshot(vserver_client, share_name,"},{"line_number":1787,"context_line":"                                           snapshot_name)"},{"line_number":1788,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"2ede9e39_ae29d801","line":1785,"range":{"start_line":1783,"start_character":16,"end_line":1785,"end_character":53},"updated":"2021-08-27 05:22:08.000000000","message":"is this a bug in ONTAP?","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":1780,"context_line":"                vserver_client.split_volume_clone(snapshot_child[\u0027name\u0027])"},{"line_number":1781,"context_line":""},{"line_number":1782,"context_line":"            if is_flexgroup:"},{"line_number":1783,"context_line":"                # NOTE(felipe_rodrigues): ONTAP does not allow rename a"},{"line_number":1784,"context_line":"                # FlexGroup snapshot, so it cannot be soft deleted. It will"},{"line_number":1785,"context_line":"                # wait for all split clones complete."},{"line_number":1786,"context_line":"                self._delete_busy_snapshot(vserver_client, share_name,"},{"line_number":1787,"context_line":"                                           snapshot_name)"},{"line_number":1788,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"c95188c7_358a1675","line":1785,"range":{"start_line":1783,"start_character":16,"end_line":1785,"end_character":53},"in_reply_to":"2ede9e39_ae29d801","updated":"2021-09-02 17:03:37.000000000","message":"Not a bug, it is more a not supported feature. Snapshots from FlexGroup cannot be renamed in ONTAP. So, for soft deleting I must wait the deletion with clones.","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2acfa2ad1370d808c0a8fbf0d5530e4be2f789c5","unresolved":true,"context_lines":[{"line_number":1805,"context_line":"                raise loopingcall.LoopingCallDone()"},{"line_number":1806,"context_line":""},{"line_number":1807,"context_line":"        try:"},{"line_number":1808,"context_line":"            wait_call \u003d loopingcall.FixedIntervalWithTimeoutLoopingCall("},{"line_number":1809,"context_line":"                _wait_snapshot_is_not_busy)"},{"line_number":1810,"context_line":"            wait_call.start(interval\u003d5, timeout\u003dtimeout).wait()"},{"line_number":1811,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"856b10a8_2b701a08","line":1808,"range":{"start_line":1808,"start_character":36,"end_line":1808,"end_character":71},"updated":"2021-08-27 05:22:08.000000000","message":"problem with looping calls, especially ones with fixed intervals is that you\u0027ll fire off at the same periodic interval, and the calls can overlap if the previous one isn\u0027t done executing. Here, the action is vserver_client.get_snapshot() and i don\u0027t expect it to take too long and cause that, however, i do want to ask if you have considered a backoff looping call? or just using utils.retry?","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":1805,"context_line":"                raise loopingcall.LoopingCallDone()"},{"line_number":1806,"context_line":""},{"line_number":1807,"context_line":"        try:"},{"line_number":1808,"context_line":"            wait_call \u003d loopingcall.FixedIntervalWithTimeoutLoopingCall("},{"line_number":1809,"context_line":"                _wait_snapshot_is_not_busy)"},{"line_number":1810,"context_line":"            wait_call.start(interval\u003d5, timeout\u003dtimeout).wait()"},{"line_number":1811,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"88b5470c_7f57c5d7","line":1808,"range":{"start_line":1808,"start_character":36,"end_line":1808,"end_character":71},"in_reply_to":"856b10a8_2b701a08","updated":"2021-09-02 17:03:37.000000000","message":"done. I replaced by retry.","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"73966f8d43a7110880098dad24a8355f5a55914c","unresolved":true,"context_lines":[{"line_number":3862,"context_line":""},{"line_number":3863,"context_line":"        if not self._client.is_flexgroup_supported():"},{"line_number":3864,"context_line":"            msg \u003d _(\u0027FlexGroup pool is only supported with ONTAP version \u0027"},{"line_number":3865,"context_line":"                    \u0027greater or equal to 9.8.\u0027)"},{"line_number":3866,"context_line":"            raise exception.NetAppException(msg)"},{"line_number":3867,"context_line":""},{"line_number":3868,"context_line":"        if flexgroup_pools:"}],"source_content_type":"text/x-python","patch_set":5,"id":"f921251d_0820fd06","line":3865,"range":{"start_line":3865,"start_character":21,"end_line":3865,"end_character":29},"updated":"2021-08-27 16:09:11.000000000","message":"greater than","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"abe16d414854d1f836a3696eee4d6544f57b7247","unresolved":true,"context_lines":[{"line_number":3862,"context_line":""},{"line_number":3863,"context_line":"        if not self._client.is_flexgroup_supported():"},{"line_number":3864,"context_line":"            msg \u003d _(\u0027FlexGroup pool is only supported with ONTAP version \u0027"},{"line_number":3865,"context_line":"                    \u0027greater or equal to 9.8.\u0027)"},{"line_number":3866,"context_line":"            raise exception.NetAppException(msg)"},{"line_number":3867,"context_line":""},{"line_number":3868,"context_line":"        if flexgroup_pools:"}],"source_content_type":"text/x-python","patch_set":5,"id":"525dd8d3_7ebab9eb","line":3865,"range":{"start_line":3865,"start_character":21,"end_line":3865,"end_character":29},"in_reply_to":"f921251d_0820fd06","updated":"2021-08-31 12:50:40.000000000","message":"done.","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"45cd670c907d035c8bfb8c9b1b31ce58d5e0741f","unresolved":true,"context_lines":[{"line_number":470,"context_line":""},{"line_number":471,"context_line":"        reserved_percentage \u003d self.configuration.reserved_share_percentage"},{"line_number":472,"context_line":"        reserved_snapshot_percentage \u003d ("},{"line_number":473,"context_line":"                self.configuration.reserved_share_from_snapshot_percentage or"},{"line_number":474,"context_line":"                reserved_percentage)"},{"line_number":475,"context_line":"        max_over_ratio \u003d self.configuration.max_over_subscription_ratio"},{"line_number":476,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"69079179_72132c19","line":473,"in_reply_to":"41aa4b5c_89b91707","updated":"2021-09-01 01:52:30.000000000","message":"\u003e pep8: E126 continuation line over-indented for hanging indent\n\nPlease fix.","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":470,"context_line":""},{"line_number":471,"context_line":"        reserved_percentage \u003d self.configuration.reserved_share_percentage"},{"line_number":472,"context_line":"        reserved_snapshot_percentage \u003d ("},{"line_number":473,"context_line":"                self.configuration.reserved_share_from_snapshot_percentage or"},{"line_number":474,"context_line":"                reserved_percentage)"},{"line_number":475,"context_line":"        max_over_ratio \u003d self.configuration.max_over_subscription_ratio"},{"line_number":476,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"a13d0733_039571b0","line":473,"in_reply_to":"69079179_72132c19","updated":"2021-09-02 17:03:37.000000000","message":"done.","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"45cd670c907d035c8bfb8c9b1b31ce58d5e0741f","unresolved":true,"context_lines":[{"line_number":1097,"context_line":"        vserver_client.set_volume_snapdir_access(share_name, hide_snapdir)"},{"line_number":1098,"context_line":""},{"line_number":1099,"context_line":"    @na_utils.trace"},{"line_number":1100,"context_line":"    def _create_flexgroup_share(self, vserver_client, aggr_list, share_name,"},{"line_number":1101,"context_line":"                                size, snapshot_reserve, dedup_enabled\u003dFalse,"},{"line_number":1102,"context_line":"                                compression_enabled\u003dFalse, max_files\u003dNone,"},{"line_number":1103,"context_line":"                                **provisioning_options):"}],"source_content_type":"text/x-python","patch_set":7,"id":"ef13b1b8_40a82c47","line":1100,"range":{"start_line":1100,"start_character":8,"end_line":1100,"end_character":31},"updated":"2021-09-01 01:52:30.000000000","message":"re loopingCall, do you plan to switch by the retry decorator?","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":1097,"context_line":"        vserver_client.set_volume_snapdir_access(share_name, hide_snapdir)"},{"line_number":1098,"context_line":""},{"line_number":1099,"context_line":"    @na_utils.trace"},{"line_number":1100,"context_line":"    def _create_flexgroup_share(self, vserver_client, aggr_list, share_name,"},{"line_number":1101,"context_line":"                                size, snapshot_reserve, dedup_enabled\u003dFalse,"},{"line_number":1102,"context_line":"                                compression_enabled\u003dFalse, max_files\u003dNone,"},{"line_number":1103,"context_line":"                                **provisioning_options):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9dfa3036_2845522f","line":1100,"range":{"start_line":1100,"start_character":8,"end_line":1100,"end_character":31},"in_reply_to":"ef13b1b8_40a82c47","updated":"2021-09-02 17:03:37.000000000","message":"done.","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"91d9157aed157daf5a2a4e781c7ab7f0d0b6e389","unresolved":true,"context_lines":[{"line_number":1488,"context_line":"        return nve"},{"line_number":1489,"context_line":""},{"line_number":1490,"context_line":"    @na_utils.trace"},{"line_number":1491,"context_line":"    def _check_aggregate_extra_specs_validity(self, pool_name, specs):"},{"line_number":1492,"context_line":""},{"line_number":1493,"context_line":"        for specs_key in (\u0027netapp_disk_type\u0027, \u0027netapp_raid_type\u0027):"},{"line_number":1494,"context_line":"            aggr_value \u003d self._ssc_stats.get(pool_name, {}).get(specs_key)"}],"source_content_type":"text/x-python","patch_set":7,"id":"c360e79b_708468d2","line":1491,"range":{"start_line":1491,"start_character":15,"end_line":1491,"end_character":24},"updated":"2021-09-01 14:38:39.000000000","message":"Since you changed from `aggreate_name` to `pool_name`, shoudn\u0027t you change the function name too?","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":1488,"context_line":"        return nve"},{"line_number":1489,"context_line":""},{"line_number":1490,"context_line":"    @na_utils.trace"},{"line_number":1491,"context_line":"    def _check_aggregate_extra_specs_validity(self, pool_name, specs):"},{"line_number":1492,"context_line":""},{"line_number":1493,"context_line":"        for specs_key in (\u0027netapp_disk_type\u0027, \u0027netapp_raid_type\u0027):"},{"line_number":1494,"context_line":"            aggr_value \u003d self._ssc_stats.get(pool_name, {}).get(specs_key)"}],"source_content_type":"text/x-python","patch_set":7,"id":"63ff1156_9750f70e","line":1491,"range":{"start_line":1491,"start_character":15,"end_line":1491,"end_character":24},"in_reply_to":"c360e79b_708468d2","updated":"2021-09-02 17:03:37.000000000","message":"I dont think so. This function is checking the aggregate params: \"netapp_disk_type\" and \"netapp_raid_type\". The only change I did here is to retrieve the aggregates by the pool, instead of passing it as a param.","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"45cd670c907d035c8bfb8c9b1b31ce58d5e0741f","unresolved":true,"context_lines":[{"line_number":1749,"context_line":"        try:"},{"line_number":1750,"context_line":"            is_flexgroup \u003d self._is_flexgroup_share(vserver_client, share_name)"},{"line_number":1751,"context_line":"        except exception.ShareNotFound:"},{"line_number":1752,"context_line":"            msg \u003d _(\u0027Could not determine if the share %(share)s is FlexGroup \u0027"},{"line_number":1753,"context_line":"                    \u0027or FlexVol style. Share does not exist.\u0027)"},{"line_number":1754,"context_line":"            msg_args \u003d {\u0027share\u0027: share_name}"},{"line_number":1755,"context_line":"            LOG.info(msg, msg_args)"},{"line_number":1756,"context_line":"            is_flexgroup \u003d False"},{"line_number":1757,"context_line":""},{"line_number":1758,"context_line":"        try:"},{"line_number":1759,"context_line":"            self._delete_snapshot(vserver_client, share_name, snapshot_name,"}],"source_content_type":"text/x-python","patch_set":7,"id":"4748da5f_124d9ed4","line":1756,"range":{"start_line":1752,"start_character":0,"end_line":1756,"end_character":32},"updated":"2021-09-01 01:52:30.000000000","message":"there is no snapshot if share doesn\u0027t exist, you should raise an exception here.","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":1749,"context_line":"        try:"},{"line_number":1750,"context_line":"            is_flexgroup \u003d self._is_flexgroup_share(vserver_client, share_name)"},{"line_number":1751,"context_line":"        except exception.ShareNotFound:"},{"line_number":1752,"context_line":"            msg \u003d _(\u0027Could not determine if the share %(share)s is FlexGroup \u0027"},{"line_number":1753,"context_line":"                    \u0027or FlexVol style. Share does not exist.\u0027)"},{"line_number":1754,"context_line":"            msg_args \u003d {\u0027share\u0027: share_name}"},{"line_number":1755,"context_line":"            LOG.info(msg, msg_args)"},{"line_number":1756,"context_line":"            is_flexgroup \u003d False"},{"line_number":1757,"context_line":""},{"line_number":1758,"context_line":"        try:"},{"line_number":1759,"context_line":"            self._delete_snapshot(vserver_client, share_name, snapshot_name,"}],"source_content_type":"text/x-python","patch_set":7,"id":"15c67a0d_7c9a524b","line":1756,"range":{"start_line":1752,"start_character":0,"end_line":1756,"end_character":32},"in_reply_to":"4748da5f_124d9ed4","updated":"2021-09-02 17:03:37.000000000","message":"Looking at the below code: delete call exception (snapshot is not found), it does not raise an exception. The operation is to delete snapshot, if the share is not found, which means that the snapshot is not there too, shouldn\u0027t I just LOG.info and return ?!\n\nMy current code is doing it: when share is not found, I LOG it. Then, in the `self._delete_snapshot` call, it will raise an exception `SnapshotResourceNotFound` (because the share is not there, the snapshot wont too). Finally, the operation will succeed.","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"45cd670c907d035c8bfb8c9b1b31ce58d5e0741f","unresolved":true,"context_lines":[{"line_number":1796,"context_line":"            raise exception.ShareSnapshotIsBusy(snapshot_name\u003dsnapshot_name)"},{"line_number":1797,"context_line":""},{"line_number":1798,"context_line":"    @na_utils.trace"},{"line_number":1799,"context_line":"    def _delete_busy_snapshot(self, vserver_client, share_name, snapshot_name):"},{"line_number":1800,"context_line":"        \"\"\"Delete the snapshot waiting for it to not be busy.\"\"\""},{"line_number":1801,"context_line":""},{"line_number":1802,"context_line":"        timeout \u003d (self.configuration."}],"source_content_type":"text/x-python","patch_set":7,"id":"3f09f8e5_e1125ece","line":1799,"range":{"start_line":1799,"start_character":8,"end_line":1799,"end_character":29},"updated":"2021-09-01 01:52:30.000000000","message":"replace by manila retry?","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":1796,"context_line":"            raise exception.ShareSnapshotIsBusy(snapshot_name\u003dsnapshot_name)"},{"line_number":1797,"context_line":""},{"line_number":1798,"context_line":"    @na_utils.trace"},{"line_number":1799,"context_line":"    def _delete_busy_snapshot(self, vserver_client, share_name, snapshot_name):"},{"line_number":1800,"context_line":"        \"\"\"Delete the snapshot waiting for it to not be busy.\"\"\""},{"line_number":1801,"context_line":""},{"line_number":1802,"context_line":"        timeout \u003d (self.configuration."}],"source_content_type":"text/x-python","patch_set":7,"id":"b6fa9bd1_83660e5d","line":1799,"range":{"start_line":1799,"start_character":8,"end_line":1799,"end_character":29},"in_reply_to":"3f09f8e5_e1125ece","updated":"2021-09-02 17:03:37.000000000","message":"done","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"45cd670c907d035c8bfb8c9b1b31ce58d5e0741f","unresolved":true,"context_lines":[{"line_number":2278,"context_line":"                raise exception.ShareShrinkingPossibleDataLoss("},{"line_number":2279,"context_line":"                    share_id\u003dshare[\u0027id\u0027])"},{"line_number":2280,"context_line":""},{"line_number":2281,"context_line":"            msg \u003d _(\u0027Failed to shrink share %(share_id)s. %(err_msg)s\u0027)"},{"line_number":2282,"context_line":"            msg_args \u003d {\u0027share_id\u0027: share[\u0027id\u0027], \u0027err_msg\u0027: e.message}"},{"line_number":2283,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":2284,"context_line":""},{"line_number":2285,"context_line":"        self._adjust_qos_policy_with_volume_resize("},{"line_number":2286,"context_line":"            share, new_size, vserver_client)"},{"line_number":2287,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"898482e8_f80d9ccf","line":2284,"range":{"start_line":2281,"start_character":0,"end_line":2284,"end_character":0},"updated":"2021-09-01 01:52:30.000000000","message":"is this a bug in the code? if so, you should provide in another patch, in order to backport it to older releases","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":2278,"context_line":"                raise exception.ShareShrinkingPossibleDataLoss("},{"line_number":2279,"context_line":"                    share_id\u003dshare[\u0027id\u0027])"},{"line_number":2280,"context_line":""},{"line_number":2281,"context_line":"            msg \u003d _(\u0027Failed to shrink share %(share_id)s. %(err_msg)s\u0027)"},{"line_number":2282,"context_line":"            msg_args \u003d {\u0027share_id\u0027: share[\u0027id\u0027], \u0027err_msg\u0027: e.message}"},{"line_number":2283,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":2284,"context_line":""},{"line_number":2285,"context_line":"        self._adjust_qos_policy_with_volume_resize("},{"line_number":2286,"context_line":"            share, new_size, vserver_client)"},{"line_number":2287,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"e36fe68f_a3742388","line":2284,"range":{"start_line":2281,"start_character":0,"end_line":2284,"end_character":0},"in_reply_to":"898482e8_f80d9ccf","updated":"2021-09-02 17:03:37.000000000","message":"Yeah, it is. I removed it from this patch. Thanks!","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"45cd670c907d035c8bfb8c9b1b31ce58d5e0741f","unresolved":true,"context_lines":[{"line_number":2872,"context_line":"                        dm_session.update_snapmirror(active_replica,"},{"line_number":2873,"context_line":"                                                     replica)"},{"line_number":2874,"context_line":"                    except netapp_api.NaApiError as e:"},{"line_number":2875,"context_line":"                        not_initialized \u003d \u0027not initialized\u0027"},{"line_number":2876,"context_line":"                        if (e.code !\u003d netapp_api.EOBJECTNOTFOUND and"},{"line_number":2877,"context_line":"                                not_initialized not in e.message):"},{"line_number":2878,"context_line":"                            raise"},{"line_number":2879,"context_line":"        return snapshots"},{"line_number":2880,"context_line":""},{"line_number":2881,"context_line":"    def delete_replicated_snapshot(self, context, replica_list,"}],"source_content_type":"text/x-python","patch_set":7,"id":"78d63484_f16c7d7f","line":2878,"range":{"start_line":2875,"start_character":0,"end_line":2878,"end_character":0},"updated":"2021-09-01 01:52:30.000000000","message":"can this happen with flexvols? if yes, we could create a new bug for that, otherwise, looks good","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":2872,"context_line":"                        dm_session.update_snapmirror(active_replica,"},{"line_number":2873,"context_line":"                                                     replica)"},{"line_number":2874,"context_line":"                    except netapp_api.NaApiError as e:"},{"line_number":2875,"context_line":"                        not_initialized \u003d \u0027not initialized\u0027"},{"line_number":2876,"context_line":"                        if (e.code !\u003d netapp_api.EOBJECTNOTFOUND and"},{"line_number":2877,"context_line":"                                not_initialized not in e.message):"},{"line_number":2878,"context_line":"                            raise"},{"line_number":2879,"context_line":"        return snapshots"},{"line_number":2880,"context_line":""},{"line_number":2881,"context_line":"    def delete_replicated_snapshot(self, context, replica_list,"}],"source_content_type":"text/x-python","patch_set":7,"id":"09cd3ccc_f07d130f","line":2878,"range":{"start_line":2875,"start_character":0,"end_line":2878,"end_character":0},"in_reply_to":"78d63484_f16c7d7f","updated":"2021-09-02 17:03:37.000000000","message":"I realy dont know. I cannot reproduce it with flexvol. It might happen, though. I think we could leave that way and, if anyone reports it (reproduce the bug with flexvol), we could work in a fix/backport. What do you think ?!","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"a559f0aee9c79fa41fcb0da2e47c8f112eced226","unresolved":true,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    DEFAULT_FILTER_FUNCTION \u003d \u0027capabilities.utilization \u003c 70\u0027"},{"line_number":67,"context_line":"    DEFAULT_GOODNESS_FUNCTION \u003d \u0027100 - capabilities.utilization\u0027"},{"line_number":68,"context_line":"    DEFAULT_FLEXGROUP_FILTER_FUNCTION \u003d \u0027share.size \u003e\u003d %s\u0027"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    # ONTAP requires 100G per FlexGroup member, since the driver is deploying"},{"line_number":71,"context_line":"    # with default number of members (four), the min size is 400G."}],"source_content_type":"text/x-python","patch_set":13,"id":"c47152cf_0ea7f2d2","line":68,"range":{"start_line":68,"start_character":40,"end_line":68,"end_character":58},"updated":"2021-09-09 18:07:52.000000000","message":"doesn\u0027t make sense to be: \u0027share.size \u003e\u003d %s and capabilities.utilization \u003c 70\u0027 ?\nunless perf library isn\u0027t returning a real value...","commit_id":"9f3c566a10fe649919bee38f1ea839062b97cc01"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"745590d60218b6f0a28e7dee9d75c6a5d1d141ae","unresolved":true,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    DEFAULT_FILTER_FUNCTION \u003d \u0027capabilities.utilization \u003c 70\u0027"},{"line_number":67,"context_line":"    DEFAULT_GOODNESS_FUNCTION \u003d \u0027100 - capabilities.utilization\u0027"},{"line_number":68,"context_line":"    DEFAULT_FLEXGROUP_FILTER_FUNCTION \u003d \u0027share.size \u003e\u003d %s\u0027"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    # ONTAP requires 100G per FlexGroup member, since the driver is deploying"},{"line_number":71,"context_line":"    # with default number of members (four), the min size is 400G."}],"source_content_type":"text/x-python","patch_set":13,"id":"ea86f811_c7784776","line":68,"range":{"start_line":68,"start_character":40,"end_line":68,"end_character":58},"in_reply_to":"5fc4c972_a7df8862","updated":"2021-09-09 20:08:20.000000000","message":"We dont calculate the utilization for the FlexGroup pools. This filter should not be used yet. It is fixed to 50% (default value).","commit_id":"9f3c566a10fe649919bee38f1ea839062b97cc01"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f882ca30de7e0e349aa82c5edafc6860237c7c86","unresolved":true,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    DEFAULT_FILTER_FUNCTION \u003d \u0027capabilities.utilization \u003c 70\u0027"},{"line_number":67,"context_line":"    DEFAULT_GOODNESS_FUNCTION \u003d \u0027100 - capabilities.utilization\u0027"},{"line_number":68,"context_line":"    DEFAULT_FLEXGROUP_FILTER_FUNCTION \u003d \u0027share.size \u003e\u003d %s\u0027"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    # ONTAP requires 100G per FlexGroup member, since the driver is deploying"},{"line_number":71,"context_line":"    # with default number of members (four), the min size is 400G."}],"source_content_type":"text/x-python","patch_set":13,"id":"5fc4c972_a7df8862","line":68,"range":{"start_line":68,"start_character":40,"end_line":68,"end_character":58},"in_reply_to":"c47152cf_0ea7f2d2","updated":"2021-09-09 18:15:02.000000000","message":"yeah how does aggregation work with the perf library... headroom from what i understand is calculated on single aggregates..","commit_id":"9f3c566a10fe649919bee38f1ea839062b97cc01"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"a559f0aee9c79fa41fcb0da2e47c8f112eced226","unresolved":true,"context_lines":[{"line_number":753,"context_line":"            dm_session.get_backend_info_for_share(parent_share))"},{"line_number":754,"context_line":"        src_vserver_client \u003d data_motion.get_client_for_backend("},{"line_number":755,"context_line":"            src_backend, vserver_name\u003dsrc_vserver)"},{"line_number":756,"context_line":"        src_cluster_name \u003d src_vserver_client.get_cluster_name()"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"        # Destination host info"},{"line_number":759,"context_line":"        dest_vserver, dest_vserver_client \u003d self._get_vserver(share_server)"}],"source_content_type":"text/x-python","patch_set":13,"id":"a5329606_13ef976e","line":756,"range":{"start_line":756,"start_character":0,"end_line":756,"end_character":64},"updated":"2021-09-09 18:07:52.000000000","message":"Can you please test if this is working with svm-scoped accounts? This should be an cluster call and may fail. If this is a true bug, might affect older releases too and will need a new patch for that.\nIn scenarios with svm-scoped account, all operations should be made with snapmirror.","commit_id":"9f3c566a10fe649919bee38f1ea839062b97cc01"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"8c3942f5c702ec34891111508fffdb5c69789e40","unresolved":true,"context_lines":[{"line_number":753,"context_line":"            dm_session.get_backend_info_for_share(parent_share))"},{"line_number":754,"context_line":"        src_vserver_client \u003d data_motion.get_client_for_backend("},{"line_number":755,"context_line":"            src_backend, vserver_name\u003dsrc_vserver)"},{"line_number":756,"context_line":"        src_cluster_name \u003d src_vserver_client.get_cluster_name()"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"        # Destination host info"},{"line_number":759,"context_line":"        dest_vserver, dest_vserver_client \u003d self._get_vserver(share_server)"}],"source_content_type":"text/x-python","patch_set":13,"id":"cb91b127_d72d04cb","line":756,"range":{"start_line":756,"start_character":0,"end_line":756,"end_character":64},"in_reply_to":"a5329606_13ef976e","updated":"2021-09-09 18:13:49.000000000","message":"This is an issue that was already reported here: https://bugs.launchpad.net/manila/+bug/1922512\nLets focus in a new fix for that, now that the snapmirror-release fix got merged. Thanks!","commit_id":"9f3c566a10fe649919bee38f1ea839062b97cc01"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"745590d60218b6f0a28e7dee9d75c6a5d1d141ae","unresolved":true,"context_lines":[{"line_number":753,"context_line":"            dm_session.get_backend_info_for_share(parent_share))"},{"line_number":754,"context_line":"        src_vserver_client \u003d data_motion.get_client_for_backend("},{"line_number":755,"context_line":"            src_backend, vserver_name\u003dsrc_vserver)"},{"line_number":756,"context_line":"        src_cluster_name \u003d src_vserver_client.get_cluster_name()"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"        # Destination host info"},{"line_number":759,"context_line":"        dest_vserver, dest_vserver_client \u003d self._get_vserver(share_server)"}],"source_content_type":"text/x-python","patch_set":13,"id":"c3e4bf59_d265522c","line":756,"range":{"start_line":756,"start_character":0,"end_line":756,"end_character":64},"in_reply_to":"cb91b127_d72d04cb","updated":"2021-09-09 20:08:20.000000000","message":"ack","commit_id":"9f3c566a10fe649919bee38f1ea839062b97cc01"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"a559f0aee9c79fa41fcb0da2e47c8f112eced226","unresolved":true,"context_lines":[{"line_number":1833,"context_line":"        timeout \u003d (self.configuration."},{"line_number":1834,"context_line":"                   netapp_delete_busy_flexgroup_snapshot_timeout)"},{"line_number":1835,"context_line":"        interval \u003d 5"},{"line_number":1836,"context_line":"        retries \u003d (int(timeout / interval) or 1)"},{"line_number":1837,"context_line":""},{"line_number":1838,"context_line":"        @manila_utils.retry(exception.ShareSnapshotIsBusy, interval\u003dinterval,"},{"line_number":1839,"context_line":"                            retries\u003dretries, backoff_rate\u003d1)"}],"source_content_type":"text/x-python","patch_set":13,"id":"f71d052c_37052407","line":1836,"range":{"start_line":1836,"start_character":19,"end_line":1836,"end_character":22},"updated":"2021-09-09 18:07:52.000000000","message":"there was an issue in the previous retry function, that non int retries ended with infine loops. Not sure if we still continue with this issue using tenacity. You might want to try.","commit_id":"9f3c566a10fe649919bee38f1ea839062b97cc01"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"745590d60218b6f0a28e7dee9d75c6a5d1d141ae","unresolved":true,"context_lines":[{"line_number":1833,"context_line":"        timeout \u003d (self.configuration."},{"line_number":1834,"context_line":"                   netapp_delete_busy_flexgroup_snapshot_timeout)"},{"line_number":1835,"context_line":"        interval \u003d 5"},{"line_number":1836,"context_line":"        retries \u003d (int(timeout / interval) or 1)"},{"line_number":1837,"context_line":""},{"line_number":1838,"context_line":"        @manila_utils.retry(exception.ShareSnapshotIsBusy, interval\u003dinterval,"},{"line_number":1839,"context_line":"                            retries\u003dretries, backoff_rate\u003d1)"}],"source_content_type":"text/x-python","patch_set":13,"id":"ec33f9ee_256029f7","line":1836,"range":{"start_line":1836,"start_character":19,"end_line":1836,"end_character":22},"in_reply_to":"f71d052c_37052407","updated":"2021-09-09 20:08:20.000000000","message":"yeah, indeed it may be a bug in other retry calls. If the result of the math is a float value like `0.5`, the retry will never finish. I have added this possible bug in my bug list. I\u0027ll have a look. Thanks!","commit_id":"9f3c566a10fe649919bee38f1ea839062b97cc01"}],"manila/share/drivers/netapp/dataontap/cluster_mode/lib_multi_svm.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"73966f8d43a7110880098dad24a8355f5a55914c","unresolved":true,"context_lines":[{"line_number":1023,"context_line":"                share_instance \u003d req_spec.get(\u0027share_instance_properties\u0027, {})"},{"line_number":1024,"context_line":"                host \u003d share_instance.get(\u0027host\u0027)"},{"line_number":1025,"context_line":"                if dm_session.is_flexgroup_share(host):"},{"line_number":1026,"context_line":"                    msg \u003d _(\"Cannot perform server migration because there is \""},{"line_number":1027,"context_line":"                            \"FlexGroup volume in the server.\")"},{"line_number":1028,"context_line":"                    LOG.error(msg)"},{"line_number":1029,"context_line":"                    return not_compatible"},{"line_number":1030,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9c4a127a_a5040eca","line":1027,"range":{"start_line":1026,"start_character":60,"end_line":1027,"end_character":59},"updated":"2021-08-27 16:09:11.000000000","message":"since a FlexGroup was encountered in share server to be migrated","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"abe16d414854d1f836a3696eee4d6544f57b7247","unresolved":true,"context_lines":[{"line_number":1023,"context_line":"                share_instance \u003d req_spec.get(\u0027share_instance_properties\u0027, {})"},{"line_number":1024,"context_line":"                host \u003d share_instance.get(\u0027host\u0027)"},{"line_number":1025,"context_line":"                if dm_session.is_flexgroup_share(host):"},{"line_number":1026,"context_line":"                    msg \u003d _(\"Cannot perform server migration because there is \""},{"line_number":1027,"context_line":"                            \"FlexGroup volume in the server.\")"},{"line_number":1028,"context_line":"                    LOG.error(msg)"},{"line_number":1029,"context_line":"                    return not_compatible"},{"line_number":1030,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7857943b_1eb6dd94","line":1027,"range":{"start_line":1026,"start_character":60,"end_line":1027,"end_character":59},"in_reply_to":"9c4a127a_a5040eca","updated":"2021-08-31 12:50:40.000000000","message":"done.","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1412f262bb8e7fd607e628ced67299bae25386bb","unresolved":true,"context_lines":[{"line_number":981,"context_line":"                                                        vserver_name\u003dNone)"},{"line_number":982,"context_line":"        if (not src_client.is_svm_dr_supported()"},{"line_number":983,"context_line":"                or not dst_client.is_svm_dr_supported()):"},{"line_number":984,"context_line":"            msg \u003d _(\"Cannot perform server migration because at least one of \""},{"line_number":985,"context_line":"                    \"the backends doesn\u0027t support SVM DR.\")"},{"line_number":986,"context_line":"            LOG.error(msg)"},{"line_number":987,"context_line":"            return not_compatible"}],"source_content_type":"text/x-python","patch_set":9,"id":"4355828a_54280d16","line":984,"range":{"start_line":984,"start_character":64,"end_line":984,"end_character":69},"updated":"2021-09-07 22:42:00.000000000","message":"thanks, seems like a minor separate fix worth back porting - consider submitting it as one..","commit_id":"0a6ccdcab684fe95522b25cf37613142a4b0e03d"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"8553837f1eea3f0c9f2791bb0f094857a55ed1b6","unresolved":true,"context_lines":[{"line_number":981,"context_line":"                                                        vserver_name\u003dNone)"},{"line_number":982,"context_line":"        if (not src_client.is_svm_dr_supported()"},{"line_number":983,"context_line":"                or not dst_client.is_svm_dr_supported()):"},{"line_number":984,"context_line":"            msg \u003d _(\"Cannot perform server migration because at least one of \""},{"line_number":985,"context_line":"                    \"the backends doesn\u0027t support SVM DR.\")"},{"line_number":986,"context_line":"            LOG.error(msg)"},{"line_number":987,"context_line":"            return not_compatible"}],"source_content_type":"text/x-python","patch_set":9,"id":"7dcd4f8b_c6257fcb","line":984,"range":{"start_line":984,"start_character":64,"end_line":984,"end_character":69},"in_reply_to":"4355828a_54280d16","updated":"2021-09-08 04:46:20.000000000","message":"Agree. I removed form this patch. I\u0027ll add in a new one. Thanks.","commit_id":"0a6ccdcab684fe95522b25cf37613142a4b0e03d"}],"manila/share/drivers/netapp/dataontap/cluster_mode/lib_single_svm.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1412f262bb8e7fd607e628ced67299bae25386bb","unresolved":true,"context_lines":[{"line_number":111,"context_line":"            \u0027pools\u0027: {"},{"line_number":112,"context_line":"                \u0027vserver\u0027: self._vserver,"},{"line_number":113,"context_line":"                \u0027aggregates\u0027: self._find_matching_aggregates(),"},{"line_number":114,"context_line":"                \u0027flexgroup\u0027: self._flexgroup_pools,"},{"line_number":115,"context_line":"            },"},{"line_number":116,"context_line":"        }"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9b37a9d7_c380b81e","line":114,"range":{"start_line":114,"start_character":17,"end_line":114,"end_character":26},"updated":"2021-09-07 22:42:00.000000000","message":"nit: \"flexgroup_pools\" or \"flexgroup_aggregates\"?","commit_id":"0a6ccdcab684fe95522b25cf37613142a4b0e03d"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"8553837f1eea3f0c9f2791bb0f094857a55ed1b6","unresolved":true,"context_lines":[{"line_number":111,"context_line":"            \u0027pools\u0027: {"},{"line_number":112,"context_line":"                \u0027vserver\u0027: self._vserver,"},{"line_number":113,"context_line":"                \u0027aggregates\u0027: self._find_matching_aggregates(),"},{"line_number":114,"context_line":"                \u0027flexgroup\u0027: self._flexgroup_pools,"},{"line_number":115,"context_line":"            },"},{"line_number":116,"context_line":"        }"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"87d3f5be_648c10ed","line":114,"range":{"start_line":114,"start_character":17,"end_line":114,"end_character":26},"in_reply_to":"9b37a9d7_c380b81e","updated":"2021-09-08 04:46:20.000000000","message":"done","commit_id":"0a6ccdcab684fe95522b25cf37613142a4b0e03d"}],"manila/share/drivers/netapp/options.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2acfa2ad1370d808c0a8fbf0d5530e4be2f789c5","unresolved":true,"context_lines":[{"line_number":156,"context_line":"                      \"dict config form: \""},{"line_number":157,"context_line":"                      \"netapp_flexgroup_pool \u003d \""},{"line_number":158,"context_line":"                      \"\u003cpool_name\u003e: \u003caggr_name1\u003e \u003caggr_name2\u003e ..\"),"},{"line_number":159,"context_line":"    cfg.BoolOpt(\u0027netapp_flexgroup_pool_only\u0027,"},{"line_number":160,"context_line":"                default\u003dTrue,"},{"line_number":161,"context_line":"                help\u003d\u0027Specify if the FlexVol pools must not be reported when \u0027"},{"line_number":162,"context_line":"                     \u0027the netapp_enable_flexgroup is enabled.\u0027),"},{"line_number":163,"context_line":"    cfg.IntOpt(\u0027netapp_flexgroup_volume_online_timeout\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"16f44f43_c13781ea","line":160,"range":{"start_line":159,"start_character":16,"end_line":160,"end_character":29},"updated":"2021-08-27 05:22:08.000000000","message":"Following up on our discussion at the collab review, setting this to True is going to \"break\" existing deployments if deployers use \"netapp_enable_flexgroup\" and forget to set  \"netapp_flexgroup_pool_only\". It\u0027s possible that deployers may actually want this to be false for a mixed mode of operation - so that they can still use shares less than 400 GiB in size, or use share groups and share group snapshots, etc alongside flexgroup shares \n\nIf the desire is to make greenfield deployments use flexgroups by default, the driver could just figure out if its a greenfield deployment (no shares exist) and assume this value is True; else, if the driver sees existing shares and realizes that this is a brownfield deployment, it can set this value to False. The value of the determination can then stay in the driver\u0027s private storage for the next time it restarts","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":156,"context_line":"                      \"dict config form: \""},{"line_number":157,"context_line":"                      \"netapp_flexgroup_pool \u003d \""},{"line_number":158,"context_line":"                      \"\u003cpool_name\u003e: \u003caggr_name1\u003e \u003caggr_name2\u003e ..\"),"},{"line_number":159,"context_line":"    cfg.BoolOpt(\u0027netapp_flexgroup_pool_only\u0027,"},{"line_number":160,"context_line":"                default\u003dTrue,"},{"line_number":161,"context_line":"                help\u003d\u0027Specify if the FlexVol pools must not be reported when \u0027"},{"line_number":162,"context_line":"                     \u0027the netapp_enable_flexgroup is enabled.\u0027),"},{"line_number":163,"context_line":"    cfg.IntOpt(\u0027netapp_flexgroup_volume_online_timeout\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"f1acdc72_705e0ae5","line":160,"range":{"start_line":159,"start_character":16,"end_line":160,"end_character":29},"in_reply_to":"16f44f43_c13781ea","updated":"2021-09-02 17:03:37.000000000","message":"I changed it to `False` as default.","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2acfa2ad1370d808c0a8fbf0d5530e4be2f789c5","unresolved":true,"context_lines":[{"line_number":160,"context_line":"                default\u003dTrue,"},{"line_number":161,"context_line":"                help\u003d\u0027Specify if the FlexVol pools must not be reported when \u0027"},{"line_number":162,"context_line":"                     \u0027the netapp_enable_flexgroup is enabled.\u0027),"},{"line_number":163,"context_line":"    cfg.IntOpt(\u0027netapp_flexgroup_volume_online_timeout\u0027,"},{"line_number":164,"context_line":"               min\u003d60,"},{"line_number":165,"context_line":"               default\u003d360,  # Default to six minutes"},{"line_number":166,"context_line":"               help\u003d\u0027Sets time in seconds to wait for a FlexGroup volume \u0027"},{"line_number":167,"context_line":"                    \u0027create to complete and go online.\u0027),"},{"line_number":168,"context_line":"    cfg.IntOpt(\u0027netapp_flexgroup_aggregate_not_busy_timeout\u0027,"},{"line_number":169,"context_line":"               min\u003d60,"},{"line_number":170,"context_line":"               default\u003d360,  # Default to six minutes"}],"source_content_type":"text/x-python","patch_set":5,"id":"ad966f5d_f779facd","line":167,"range":{"start_line":163,"start_character":14,"end_line":167,"end_character":57},"updated":"2021-08-27 05:22:08.000000000","message":"will go away if you perform async creation..","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":160,"context_line":"                default\u003dTrue,"},{"line_number":161,"context_line":"                help\u003d\u0027Specify if the FlexVol pools must not be reported when \u0027"},{"line_number":162,"context_line":"                     \u0027the netapp_enable_flexgroup is enabled.\u0027),"},{"line_number":163,"context_line":"    cfg.IntOpt(\u0027netapp_flexgroup_volume_online_timeout\u0027,"},{"line_number":164,"context_line":"               min\u003d60,"},{"line_number":165,"context_line":"               default\u003d360,  # Default to six minutes"},{"line_number":166,"context_line":"               help\u003d\u0027Sets time in seconds to wait for a FlexGroup volume \u0027"},{"line_number":167,"context_line":"                    \u0027create to complete and go online.\u0027),"},{"line_number":168,"context_line":"    cfg.IntOpt(\u0027netapp_flexgroup_aggregate_not_busy_timeout\u0027,"},{"line_number":169,"context_line":"               min\u003d60,"},{"line_number":170,"context_line":"               default\u003d360,  # Default to six minutes"}],"source_content_type":"text/x-python","patch_set":5,"id":"432114d4_829da199","line":167,"range":{"start_line":163,"start_character":14,"end_line":167,"end_character":57},"in_reply_to":"ad966f5d_f779facd","updated":"2021-09-02 17:03:37.000000000","message":"Sorry, I didnt get it. What do you mean by \"go away\" ?!","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"45cd670c907d035c8bfb8c9b1b31ce58d5e0741f","unresolved":true,"context_lines":[{"line_number":146,"context_line":"                     \u0027FlexGroup pools through netapp_flexgroup_pool option. \u0027"},{"line_number":147,"context_line":"                     \u0027The FlexGroup placement is done either by ONTAP or \u0027"},{"line_number":148,"context_line":"                     \u0027Manila, not both.\u0027),"},{"line_number":149,"context_line":"    cfg.MultiOpt(\u0027netapp_flexgroup_pool\u0027,"},{"line_number":150,"context_line":"                 item_type\u003dtypes.Dict(value_type\u003dtypes.String()),"},{"line_number":151,"context_line":"                 default\u003d{},"},{"line_number":152,"context_line":"                 help\u003d\"Multi opt of dict to represent the FlexGroup pools. \""}],"source_content_type":"text/x-python","patch_set":7,"id":"081583e6_ba786a84","line":149,"range":{"start_line":149,"start_character":18,"end_line":149,"end_character":39},"updated":"2021-09-01 01:52:30.000000000","message":"nit: i would call netapp_flexgroup_pools","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":146,"context_line":"                     \u0027FlexGroup pools through netapp_flexgroup_pool option. \u0027"},{"line_number":147,"context_line":"                     \u0027The FlexGroup placement is done either by ONTAP or \u0027"},{"line_number":148,"context_line":"                     \u0027Manila, not both.\u0027),"},{"line_number":149,"context_line":"    cfg.MultiOpt(\u0027netapp_flexgroup_pool\u0027,"},{"line_number":150,"context_line":"                 item_type\u003dtypes.Dict(value_type\u003dtypes.String()),"},{"line_number":151,"context_line":"                 default\u003d{},"},{"line_number":152,"context_line":"                 help\u003d\"Multi opt of dict to represent the FlexGroup pools. \""}],"source_content_type":"text/x-python","patch_set":7,"id":"20c66541_29ec398b","line":149,"range":{"start_line":149,"start_character":18,"end_line":149,"end_character":39},"in_reply_to":"081583e6_ba786a84","updated":"2021-09-02 17:03:37.000000000","message":"done","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"45cd670c907d035c8bfb8c9b1b31ce58d5e0741f","unresolved":true,"context_lines":[{"line_number":165,"context_line":"               default\u003d360,  # Default to six minutes"},{"line_number":166,"context_line":"               help\u003d\u0027Sets time in seconds to wait for a FlexGroup volume \u0027"},{"line_number":167,"context_line":"                    \u0027create to complete and go online.\u0027),"},{"line_number":168,"context_line":"    cfg.IntOpt(\u0027netapp_flexgroup_aggregate_not_busy_timeout\u0027,"},{"line_number":169,"context_line":"               min\u003d60,"},{"line_number":170,"context_line":"               default\u003d360,  # Default to six minutes"},{"line_number":171,"context_line":"               help\u003d\u0027Sets time in seconds to wait for all FlexGroup \u0027"},{"line_number":172,"context_line":"                    \u0027aggregates to not be busy provisioning another volume.\u0027),"},{"line_number":173,"context_line":"    cfg.IntOpt(\u0027netapp_delete_busy_flexgroup_snapshot_timeout\u0027,"},{"line_number":174,"context_line":"               min\u003d60,"},{"line_number":175,"context_line":"               default\u003d360,  # Default to six minutes"},{"line_number":176,"context_line":"               help\u003d\u0027Sets time in seconds to wait for a FlexGroup snapshot \u0027"},{"line_number":177,"context_line":"                    \u0027busy by clone to become free after split the clone.\u0027), ]"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"netapp_cluster_opts \u003d ["},{"line_number":180,"context_line":"    cfg.StrOpt(\u0027netapp_vserver\u0027,"},{"line_number":181,"context_line":"               help\u003d(\u0027This option specifies the Storage Virtual Machine \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"c42235b4_1a69991b","line":178,"range":{"start_line":168,"start_character":0,"end_line":178,"end_character":0},"updated":"2021-09-01 01:52:30.000000000","message":"both are confusing to me, even knowing a little bit this storage. maybe providing a more detailed description?","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":165,"context_line":"               default\u003d360,  # Default to six minutes"},{"line_number":166,"context_line":"               help\u003d\u0027Sets time in seconds to wait for a FlexGroup volume \u0027"},{"line_number":167,"context_line":"                    \u0027create to complete and go online.\u0027),"},{"line_number":168,"context_line":"    cfg.IntOpt(\u0027netapp_flexgroup_aggregate_not_busy_timeout\u0027,"},{"line_number":169,"context_line":"               min\u003d60,"},{"line_number":170,"context_line":"               default\u003d360,  # Default to six minutes"},{"line_number":171,"context_line":"               help\u003d\u0027Sets time in seconds to wait for all FlexGroup \u0027"},{"line_number":172,"context_line":"                    \u0027aggregates to not be busy provisioning another volume.\u0027),"},{"line_number":173,"context_line":"    cfg.IntOpt(\u0027netapp_delete_busy_flexgroup_snapshot_timeout\u0027,"},{"line_number":174,"context_line":"               min\u003d60,"},{"line_number":175,"context_line":"               default\u003d360,  # Default to six minutes"},{"line_number":176,"context_line":"               help\u003d\u0027Sets time in seconds to wait for a FlexGroup snapshot \u0027"},{"line_number":177,"context_line":"                    \u0027busy by clone to become free after split the clone.\u0027), ]"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"netapp_cluster_opts \u003d ["},{"line_number":180,"context_line":"    cfg.StrOpt(\u0027netapp_vserver\u0027,"},{"line_number":181,"context_line":"               help\u003d(\u0027This option specifies the Storage Virtual Machine \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"d56ac9cf_64daa522","line":178,"range":{"start_line":168,"start_character":0,"end_line":178,"end_character":0},"in_reply_to":"c42235b4_1a69991b","updated":"2021-09-02 17:03:37.000000000","message":"yeah, it is a bit confuse. I tried to explain more. See if it is better enough. Otherwise, could you suggest a different text ?!\n\nIn simple words, they are two timeout opts for retry operations:\n\nnetapp_flexgroup_aggregate_not_busy_timeout: FlexGroup is over a set of aggregate. It can only start creating when all of its aggregates are not being used to deploy another volume. If they are busy deploying it, the operation fails. Instead of returning an error, I am retring with that timeout.\n\n\nnetapp_delete_busy_flexgroup_snapshot_timeout: Busy Snapshots cannot be deleted, we must to split its clone. The split operation takes time. So, we wait for the split complete until this timeout.","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1412f262bb8e7fd607e628ced67299bae25386bb","unresolved":true,"context_lines":[{"line_number":151,"context_line":"                 default\u003d{},"},{"line_number":152,"context_line":"                 help\u003d\"Multi opt of dict to represent the FlexGroup pools. \""},{"line_number":153,"context_line":"                      \"A FlexGroup pool is configured with its name and its \""},{"line_number":154,"context_line":"                      \"list of aggregates. Specify this option as many time \""},{"line_number":155,"context_line":"                      \"as you have FlexGroup pools. Each entry takes the \""},{"line_number":156,"context_line":"                      \"dict config form: \""},{"line_number":157,"context_line":"                      \"netapp_flexgroup_pools \u003d \""}],"source_content_type":"text/x-python","patch_set":9,"id":"64902c8e_a439c35e","line":154,"range":{"start_line":154,"start_character":71,"end_line":154,"end_character":75},"updated":"2021-09-07 22:42:00.000000000","message":"nit: times","commit_id":"0a6ccdcab684fe95522b25cf37613142a4b0e03d"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"8553837f1eea3f0c9f2791bb0f094857a55ed1b6","unresolved":true,"context_lines":[{"line_number":151,"context_line":"                 default\u003d{},"},{"line_number":152,"context_line":"                 help\u003d\"Multi opt of dict to represent the FlexGroup pools. \""},{"line_number":153,"context_line":"                      \"A FlexGroup pool is configured with its name and its \""},{"line_number":154,"context_line":"                      \"list of aggregates. Specify this option as many time \""},{"line_number":155,"context_line":"                      \"as you have FlexGroup pools. Each entry takes the \""},{"line_number":156,"context_line":"                      \"dict config form: \""},{"line_number":157,"context_line":"                      \"netapp_flexgroup_pools \u003d \""}],"source_content_type":"text/x-python","patch_set":9,"id":"dc6f272e_ac810e92","line":154,"range":{"start_line":154,"start_character":71,"end_line":154,"end_character":75},"in_reply_to":"64902c8e_a439c35e","updated":"2021-09-08 04:46:20.000000000","message":"done","commit_id":"0a6ccdcab684fe95522b25cf37613142a4b0e03d"}],"manila/share/drivers/netapp/utils.py":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"45cd670c907d035c8bfb8c9b1b31ce58d5e0741f","unresolved":true,"context_lines":[{"line_number":44,"context_line":"FLEXGROUP_STYLE_EXTENDED \u003d \u0027flexgroup\u0027"},{"line_number":45,"context_line":"FLEXVOL_STYLE_EXTENDED \u003d \u0027flexvol\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"FLEXGROUP_POOL_NAME \u003d \u0027flexgroup_auto\u0027"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"def validate_driver_instantiation(**kwargs):"}],"source_content_type":"text/x-python","patch_set":7,"id":"0ff7f986_c617079c","line":47,"range":{"start_line":47,"start_character":0,"end_line":47,"end_character":19},"updated":"2021-09-01 01:52:30.000000000","message":"nit: FLEXGROUP_DEFAULT_POOL_NAME?","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":44,"context_line":"FLEXGROUP_STYLE_EXTENDED \u003d \u0027flexgroup\u0027"},{"line_number":45,"context_line":"FLEXVOL_STYLE_EXTENDED \u003d \u0027flexvol\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"FLEXGROUP_POOL_NAME \u003d \u0027flexgroup_auto\u0027"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"def validate_driver_instantiation(**kwargs):"}],"source_content_type":"text/x-python","patch_set":7,"id":"140f4134_f22edf74","line":47,"range":{"start_line":47,"start_character":0,"end_line":47,"end_character":19},"in_reply_to":"0ff7f986_c617079c","updated":"2021-09-02 17:03:37.000000000","message":"done","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"91d9157aed157daf5a2a4e781c7ab7f0d0b6e389","unresolved":true,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"            aggr_name_set \u003d set(aggr_name_list)"},{"line_number":167,"context_line":"            if len(aggr_name_set) !\u003d len(aggr_name_list):"},{"line_number":168,"context_line":"                msg \u003d _(\u0027There is repeated aggregate name in the \u0027"},{"line_number":169,"context_line":"                        \u0027FlexGroup pool %s definition. Ensure that the \u0027"},{"line_number":170,"context_line":"                        \u0027configuration option netapp_flexgroup_pool is \u0027"},{"line_number":171,"context_line":"                        \u0027set correctly.\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ae733945_4e765bc9","line":168,"range":{"start_line":168,"start_character":25,"end_line":168,"end_character":57},"updated":"2021-09-01 14:38:39.000000000","message":"nit: I believe an \u0027a\u0027 or \u0027one\u0027 is missing in the sentence above: \"There is *a* repeated aggregate name...\"","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"            aggr_name_set \u003d set(aggr_name_list)"},{"line_number":167,"context_line":"            if len(aggr_name_set) !\u003d len(aggr_name_list):"},{"line_number":168,"context_line":"                msg \u003d _(\u0027There is repeated aggregate name in the \u0027"},{"line_number":169,"context_line":"                        \u0027FlexGroup pool %s definition. Ensure that the \u0027"},{"line_number":170,"context_line":"                        \u0027configuration option netapp_flexgroup_pool is \u0027"},{"line_number":171,"context_line":"                        \u0027set correctly.\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"4a33638e_743fb722","line":168,"range":{"start_line":168,"start_character":25,"end_line":168,"end_character":57},"in_reply_to":"ae733945_4e765bc9","updated":"2021-09-02 17:03:37.000000000","message":"done","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"91d9157aed157daf5a2a4e781c7ab7f0d0b6e389","unresolved":true,"context_lines":[{"line_number":175,"context_line":"            if not_found_aggr:"},{"line_number":176,"context_line":"                not_found_list \u003d [str(s) for s in not_found_aggr]"},{"line_number":177,"context_line":"                not_found_str \u003d \", \".join(not_found_list)"},{"line_number":178,"context_line":"                msg \u003d _(\u0027There is aggregate name in the FlexGroup pool \u0027"},{"line_number":179,"context_line":"                        \u0027%(pool)s that is not in the cluster: %(aggr)s. \u0027"},{"line_number":180,"context_line":"                        \u0027Ensure that the configuration option \u0027"},{"line_number":181,"context_line":"                        \u0027netapp_flexgroup_pool is set correctly.\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"dcab674e_dd29ab3e","line":178,"range":{"start_line":178,"start_character":25,"end_line":178,"end_character":70},"updated":"2021-09-01 14:38:39.000000000","message":"nit: Similarly here: \"There is *an* aggregate name...\"","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":175,"context_line":"            if not_found_aggr:"},{"line_number":176,"context_line":"                not_found_list \u003d [str(s) for s in not_found_aggr]"},{"line_number":177,"context_line":"                not_found_str \u003d \", \".join(not_found_list)"},{"line_number":178,"context_line":"                msg \u003d _(\u0027There is aggregate name in the FlexGroup pool \u0027"},{"line_number":179,"context_line":"                        \u0027%(pool)s that is not in the cluster: %(aggr)s. \u0027"},{"line_number":180,"context_line":"                        \u0027Ensure that the configuration option \u0027"},{"line_number":181,"context_line":"                        \u0027netapp_flexgroup_pool is set correctly.\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"91f84cf0_b7b2c234","line":178,"range":{"start_line":178,"start_character":25,"end_line":178,"end_character":70},"in_reply_to":"dcab674e_dd29ab3e","updated":"2021-09-02 17:03:37.000000000","message":"done","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1412f262bb8e7fd607e628ced67299bae25386bb","unresolved":true,"context_lines":[{"line_number":137,"context_line":"    return style_extended \u003d\u003d FLEXGROUP_STYLE_EXTENDED"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"def parse_flexgroup_pool_config(config, cluster_aggr_set\u003d{}, check\u003dFalse):"},{"line_number":141,"context_line":"    \"\"\"Returns the dict with the FlexGroup pools and if it is auto provisioned."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    :param config: the configuration flexgroup list of dict."}],"source_content_type":"text/x-python","patch_set":9,"id":"f908cf45_49331bb2","line":140,"range":{"start_line":140,"start_character":40,"end_line":140,"end_character":59},"updated":"2021-09-07 22:42:00.000000000","message":"to you expect this to be mutable? https://docs.python-guide.org/writing/gotchas/#mutable-default-arguments","commit_id":"0a6ccdcab684fe95522b25cf37613142a4b0e03d"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"8553837f1eea3f0c9f2791bb0f094857a55ed1b6","unresolved":true,"context_lines":[{"line_number":137,"context_line":"    return style_extended \u003d\u003d FLEXGROUP_STYLE_EXTENDED"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"def parse_flexgroup_pool_config(config, cluster_aggr_set\u003d{}, check\u003dFalse):"},{"line_number":141,"context_line":"    \"\"\"Returns the dict with the FlexGroup pools and if it is auto provisioned."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    :param config: the configuration flexgroup list of dict."}],"source_content_type":"text/x-python","patch_set":9,"id":"5023a0c2_a2e42357","line":140,"range":{"start_line":140,"start_character":40,"end_line":140,"end_character":59},"in_reply_to":"f908cf45_49331bb2","updated":"2021-09-08 04:46:20.000000000","message":"Nice information, thanks. However, this param won\u0027t be mutable. It is used only for checking the aggregagtes from the cluster. Not informing this param means that the caller does not want to check the aggregates, only parsing the config.","commit_id":"0a6ccdcab684fe95522b25cf37613142a4b0e03d"}],"releasenotes/notes/netapp-flexgroup-support-9b3f30afb94d3a86.yaml":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2acfa2ad1370d808c0a8fbf0d5530e4be2f789c5","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The NetApp driver has been working  with FlexVol ONTAP volumes."},{"line_number":5,"context_line":"    This type of volume does not work well with large workloads, being"},{"line_number":6,"context_line":"    over one single node/aggregate. So, added the support for provisioning"},{"line_number":7,"context_line":"    share as FlexGroup in the NetApp driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    The FlexGroup provision is enabled by new option"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"8d6d4b8f_6cf40709","line":6,"range":{"start_line":5,"start_character":4,"end_line":6,"end_character":34},"updated":"2021-08-27 05:22:08.000000000","message":"\"does not work well\" may signal that it is broken - suggest rewording this:\n\nThe driver does not support scaling FlexVol volumes higher than 100 TiB, which was a theoretical limit for the large namespace that these containers were meant to handle. ONTAP\u0027s Flexgroup volumes eliminate such limitations.","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The NetApp driver has been working  with FlexVol ONTAP volumes."},{"line_number":5,"context_line":"    This type of volume does not work well with large workloads, being"},{"line_number":6,"context_line":"    over one single node/aggregate. So, added the support for provisioning"},{"line_number":7,"context_line":"    share as FlexGroup in the NetApp driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    The FlexGroup provision is enabled by new option"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"e73ad453_930670b5","line":6,"range":{"start_line":5,"start_character":4,"end_line":6,"end_character":34},"in_reply_to":"8d6d4b8f_6cf40709","updated":"2021-09-02 17:03:37.000000000","message":"done","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2acfa2ad1370d808c0a8fbf0d5530e4be2f789c5","unresolved":true,"context_lines":[{"line_number":7,"context_line":"    share as FlexGroup in the NetApp driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    The FlexGroup provision is enabled by new option"},{"line_number":10,"context_line":"    `netapp_enable_flexgroup`, which will make the driver report a single"},{"line_number":11,"context_line":"    pool represeting all aggregates. The selection on which aggregates the"},{"line_number":12,"context_line":"    FlexGroup share will reside is up to ONTAP. If the administrator desires"},{"line_number":13,"context_line":"    to control that selection through Manila scheduler, it must inform the set"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"07b7cdd6_ea60031c","line":10,"range":{"start_line":10,"start_character":5,"end_line":10,"end_character":28},"updated":"2021-08-27 05:22:08.000000000","message":"``netapp_enable_flexgroup``","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":7,"context_line":"    share as FlexGroup in the NetApp driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    The FlexGroup provision is enabled by new option"},{"line_number":10,"context_line":"    `netapp_enable_flexgroup`, which will make the driver report a single"},{"line_number":11,"context_line":"    pool represeting all aggregates. The selection on which aggregates the"},{"line_number":12,"context_line":"    FlexGroup share will reside is up to ONTAP. If the administrator desires"},{"line_number":13,"context_line":"    to control that selection through Manila scheduler, it must inform the set"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"9371e6ca_2c1075e7","line":10,"range":{"start_line":10,"start_character":5,"end_line":10,"end_character":28},"in_reply_to":"07b7cdd6_ea60031c","updated":"2021-09-02 17:03:37.000000000","message":"done","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2acfa2ad1370d808c0a8fbf0d5530e4be2f789c5","unresolved":true,"context_lines":[{"line_number":10,"context_line":"    `netapp_enable_flexgroup`, which will make the driver report a single"},{"line_number":11,"context_line":"    pool represeting all aggregates. The selection on which aggregates the"},{"line_number":12,"context_line":"    FlexGroup share will reside is up to ONTAP. If the administrator desires"},{"line_number":13,"context_line":"    to control that selection through Manila scheduler, it must inform the set"},{"line_number":14,"context_line":"    of aggregates that formss FlexGroup pool in the new  option"},{"line_number":15,"context_line":"    `netapp_flexgroup_pool`."},{"line_number":16,"context_line":"    "},{"line_number":17,"context_line":"    When enabling FlexGroup, the FlexVol pools are disabled by default. For"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"6fba3a6f_76174cdf","line":14,"range":{"start_line":13,"start_character":56,"end_line":14,"end_character":63},"updated":"2021-08-27 05:22:08.000000000","message":"the configuration option ``netapp_flexgroup_pool`` can be used to tune the storage pool layout.","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":10,"context_line":"    `netapp_enable_flexgroup`, which will make the driver report a single"},{"line_number":11,"context_line":"    pool represeting all aggregates. The selection on which aggregates the"},{"line_number":12,"context_line":"    FlexGroup share will reside is up to ONTAP. If the administrator desires"},{"line_number":13,"context_line":"    to control that selection through Manila scheduler, it must inform the set"},{"line_number":14,"context_line":"    of aggregates that formss FlexGroup pool in the new  option"},{"line_number":15,"context_line":"    `netapp_flexgroup_pool`."},{"line_number":16,"context_line":"    "},{"line_number":17,"context_line":"    When enabling FlexGroup, the FlexVol pools are disabled by default. For"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"2106227d_bf1487a4","line":14,"range":{"start_line":13,"start_character":56,"end_line":14,"end_character":63},"in_reply_to":"6fba3a6f_76174cdf","updated":"2021-09-02 17:03:37.000000000","message":"done","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2acfa2ad1370d808c0a8fbf0d5530e4be2f789c5","unresolved":true,"context_lines":[{"line_number":30,"context_line":"    - Revert to snapshot;"},{"line_number":31,"context_line":"    - Manage/Unmanage snapshots;"},{"line_number":32,"context_line":"    - Create from snapshot;"},{"line_number":33,"context_line":"    - Replication;"},{"line_number":34,"context_line":"    - Manage/Unmanage shares;"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    This feature requires ONTAP version 9.8 or newer."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"57ffc82b_1d3f5590","line":33,"range":{"start_line":33,"start_character":17,"end_line":33,"end_character":18},"updated":"2021-08-27 05:22:08.000000000","message":"add the caveat about fan out replication requiring ONTAP 9.9","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":30,"context_line":"    - Revert to snapshot;"},{"line_number":31,"context_line":"    - Manage/Unmanage snapshots;"},{"line_number":32,"context_line":"    - Create from snapshot;"},{"line_number":33,"context_line":"    - Replication;"},{"line_number":34,"context_line":"    - Manage/Unmanage shares;"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    This feature requires ONTAP version 9.8 or newer."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"e5e1390c_4d3a31fe","line":33,"range":{"start_line":33,"start_character":17,"end_line":33,"end_character":18},"in_reply_to":"57ffc82b_1d3f5590","updated":"2021-09-02 17:03:37.000000000","message":"done","commit_id":"520b8a584a273895c4c016eb05f7604d4a44a33f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"45cd670c907d035c8bfb8c9b1b31ce58d5e0741f","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The NetApp driver has been working  with FlexVol ONTAP volumes."},{"line_number":5,"context_line":"    This type of volume does not work well with large workloads, being"},{"line_number":6,"context_line":"    over one single node/aggregate. So, added the support for provisioning"},{"line_number":7,"context_line":"    share as FlexGroup in the NetApp driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    The FlexGroup provision is enabled by new option"},{"line_number":10,"context_line":"    `netapp_enable_flexgroup`, which will make the driver report a single"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"d2c401f5_1a335e8b","line":7,"range":{"start_line":4,"start_character":0,"end_line":7,"end_character":44},"updated":"2021-09-01 01:52:30.000000000","message":"I would rewrite this to say the benefits of FlexGroups instead of FlexVol limitations.","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4ff6c0ac311a0e797dee2e960e6539285ac4fa45","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The NetApp driver has been working  with FlexVol ONTAP volumes."},{"line_number":5,"context_line":"    This type of volume does not work well with large workloads, being"},{"line_number":6,"context_line":"    over one single node/aggregate. So, added the support for provisioning"},{"line_number":7,"context_line":"    share as FlexGroup in the NetApp driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    The FlexGroup provision is enabled by new option"},{"line_number":10,"context_line":"    `netapp_enable_flexgroup`, which will make the driver report a single"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"6aa4b32e_89648657","line":7,"range":{"start_line":4,"start_character":0,"end_line":7,"end_character":44},"in_reply_to":"d2c401f5_1a335e8b","updated":"2021-09-02 17:03:37.000000000","message":"I got your point. I rewrote as Goutham suggest. Have a look. It still mentions the FlexVol limitations. See if is better.","commit_id":"21f021d49e151e51f500866d546efc511a2d9863"}]}
