)]}'
{"manila/share/drivers/netapp/dataontap/cluster_mode/lib_base.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"f46186aacffc2e0cf6320940c076f0c89d055052","unresolved":false,"context_lines":[{"line_number":1632,"context_line":"        except exception.InvalidParameterValue:"},{"line_number":1633,"context_line":"            destination_vserver \u003d None"},{"line_number":1634,"context_line":""},{"line_number":1635,"context_line":"        if source_vserver !\u003d destination_vserver:"},{"line_number":1636,"context_line":"            msg \u003d _(\"Cannot migrate %(shr)s efficiently from source \""},{"line_number":1637,"context_line":"                    \"VServer %(src)s to destination VServer %(dest)s.\")"},{"line_number":1638,"context_line":"            msg_args \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_4a154999","line":1635,"range":{"start_line":1635,"start_character":11,"end_line":1635,"end_character":49},"updated":"2017-01-11 11:37:52.000000000","message":"interesting, this implies you cannot move across different vservers. I assume that you are restricting to same vserver (migration between pools) in order to perform nondisruptive migration. Have you considered giving up some of those abilities (nondisruptive for instance) but still being able to move more efficiently across vservers (if possible) instead of relying on host-assisted migration to do that?","commit_id":"222b39840fa3ea40b8290cd0c61394e780ac63da"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f920ddd4ae3ced17ac2ac7a099dc19aabdd711fd","unresolved":false,"context_lines":[{"line_number":1632,"context_line":"        except exception.InvalidParameterValue:"},{"line_number":1633,"context_line":"            destination_vserver \u003d None"},{"line_number":1634,"context_line":""},{"line_number":1635,"context_line":"        if source_vserver !\u003d destination_vserver:"},{"line_number":1636,"context_line":"            msg \u003d _(\"Cannot migrate %(shr)s efficiently from source \""},{"line_number":1637,"context_line":"                    \"VServer %(src)s to destination VServer %(dest)s.\")"},{"line_number":1638,"context_line":"            msg_args \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_26b752d9","line":1635,"range":{"start_line":1635,"start_character":11,"end_line":1635,"end_character":49},"in_reply_to":"ba5201f7_4a154999","updated":"2017-01-11 15:03:52.000000000","message":"this is phase 1, phase 2 is possible and we\u0027ll be adding that in Pike. In a NetApp world, vServers provide tenant isolation; so, most tenants would only ever have one vServer that can span massive clusters. However, of course we should allow going across them efficiently...","commit_id":"222b39840fa3ea40b8290cd0c61394e780ac63da"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"f46186aacffc2e0cf6320940c076f0c89d055052","unresolved":false,"context_lines":[{"line_number":1671,"context_line":""},{"line_number":1672,"context_line":"            except Exception as e:"},{"line_number":1673,"context_line":"                msg \u003d _(\"Incompatible back ends, cannot migrate share %(shr)s \""},{"line_number":1674,"context_line":"                        \"efficiently between %(src)s and %(dest)s. Reason: \""},{"line_number":1675,"context_line":"                        \"%(reason)s\")"},{"line_number":1676,"context_line":"                msg_args \u003d {"},{"line_number":1677,"context_line":"                    \u0027shr\u0027: source_share[\u0027id\u0027],"},{"line_number":1678,"context_line":"                    \u0027src\u0027: source_share[\u0027host\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_0ac4215d","line":1675,"range":{"start_line":1674,"start_character":67,"end_line":1675,"end_character":36},"updated":"2017-01-11 11:37:52.000000000","message":"this can be removed, it will be logged in LOG.exception.","commit_id":"222b39840fa3ea40b8290cd0c61394e780ac63da"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f6b8d4e0e3c1a7ed2edbbdbb9a7e567bed40682f","unresolved":false,"context_lines":[{"line_number":1671,"context_line":""},{"line_number":1672,"context_line":"            except Exception as e:"},{"line_number":1673,"context_line":"                msg \u003d _(\"Incompatible back ends, cannot migrate share %(shr)s \""},{"line_number":1674,"context_line":"                        \"efficiently between %(src)s and %(dest)s. Reason: \""},{"line_number":1675,"context_line":"                        \"%(reason)s\")"},{"line_number":1676,"context_line":"                msg_args \u003d {"},{"line_number":1677,"context_line":"                    \u0027shr\u0027: source_share[\u0027id\u0027],"},{"line_number":1678,"context_line":"                    \u0027src\u0027: source_share[\u0027host\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a3c09a3_0e00ae00","line":1675,"range":{"start_line":1674,"start_character":67,"end_line":1675,"end_character":36},"in_reply_to":"ba5201f7_0ac4215d","updated":"2017-01-16 17:59:52.000000000","message":"Done","commit_id":"222b39840fa3ea40b8290cd0c61394e780ac63da"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"f46186aacffc2e0cf6320940c076f0c89d055052","unresolved":false,"context_lines":[{"line_number":1677,"context_line":"                    \u0027shr\u0027: source_share[\u0027id\u0027],"},{"line_number":1678,"context_line":"                    \u0027src\u0027: source_share[\u0027host\u0027],"},{"line_number":1679,"context_line":"                    \u0027dest\u0027: destination_host,"},{"line_number":1680,"context_line":"                    \u0027reason\u0027: e,"},{"line_number":1681,"context_line":"                }"},{"line_number":1682,"context_line":"                LOG.exception(msg, msg_args)"},{"line_number":1683,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_8aae5196","line":1680,"range":{"start_line":1680,"start_character":20,"end_line":1680,"end_character":32},"updated":"2017-01-11 11:37:52.000000000","message":"this too","commit_id":"222b39840fa3ea40b8290cd0c61394e780ac63da"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f6b8d4e0e3c1a7ed2edbbdbb9a7e567bed40682f","unresolved":false,"context_lines":[{"line_number":1677,"context_line":"                    \u0027shr\u0027: source_share[\u0027id\u0027],"},{"line_number":1678,"context_line":"                    \u0027src\u0027: source_share[\u0027host\u0027],"},{"line_number":1679,"context_line":"                    \u0027dest\u0027: destination_host,"},{"line_number":1680,"context_line":"                    \u0027reason\u0027: e,"},{"line_number":1681,"context_line":"                }"},{"line_number":1682,"context_line":"                LOG.exception(msg, msg_args)"},{"line_number":1683,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a3c09a3_f3026d0a","line":1680,"range":{"start_line":1680,"start_character":20,"end_line":1680,"end_character":32},"in_reply_to":"ba5201f7_8aae5196","updated":"2017-01-16 17:59:52.000000000","message":"Done","commit_id":"222b39840fa3ea40b8290cd0c61394e780ac63da"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"f46186aacffc2e0cf6320940c076f0c89d055052","unresolved":false,"context_lines":[{"line_number":1690,"context_line":""},{"line_number":1691,"context_line":"        compatibility \u003d {"},{"line_number":1692,"context_line":"            \u0027compatible\u0027: compatible,"},{"line_number":1693,"context_line":"            \u0027writable\u0027: True if compatible else False,"},{"line_number":1694,"context_line":"            \u0027nondisruptive\u0027: True if compatible else False,"},{"line_number":1695,"context_line":"            \u0027preserve_metadata\u0027: True if compatible else False,"},{"line_number":1696,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_6a820d02","line":1693,"range":{"start_line":1693,"start_character":24,"end_line":1693,"end_character":53},"updated":"2017-01-11 11:37:52.000000000","message":"shouldn\u0027t just say \"writable: compatible\" ?","commit_id":"222b39840fa3ea40b8290cd0c61394e780ac63da"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f6b8d4e0e3c1a7ed2edbbdbb9a7e567bed40682f","unresolved":false,"context_lines":[{"line_number":1690,"context_line":""},{"line_number":1691,"context_line":"        compatibility \u003d {"},{"line_number":1692,"context_line":"            \u0027compatible\u0027: compatible,"},{"line_number":1693,"context_line":"            \u0027writable\u0027: True if compatible else False,"},{"line_number":1694,"context_line":"            \u0027nondisruptive\u0027: True if compatible else False,"},{"line_number":1695,"context_line":"            \u0027preserve_metadata\u0027: True if compatible else False,"},{"line_number":1696,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a3c09a3_2e03aa0e","line":1693,"range":{"start_line":1693,"start_character":24,"end_line":1693,"end_character":53},"in_reply_to":"ba5201f7_6a820d02","updated":"2017-01-16 17:59:52.000000000","message":"c\u0027mon man, i was being fancy :D","commit_id":"222b39840fa3ea40b8290cd0c61394e780ac63da"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"f46186aacffc2e0cf6320940c076f0c89d055052","unresolved":false,"context_lines":[{"line_number":1786,"context_line":"        try:"},{"line_number":1787,"context_line":"            self._get_volume_move_status(source_share, share_server)"},{"line_number":1788,"context_line":"        except exception.NetAppException as e:"},{"line_number":1789,"context_line":"            LOG.exception(e)"},{"line_number":1790,"context_line":"            return"},{"line_number":1791,"context_line":""},{"line_number":1792,"context_line":"        self._client.abort_volume_move(share_volume, vserver)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_caabf91c","line":1789,"range":{"start_line":1789,"start_character":26,"end_line":1789,"end_character":27},"updated":"2017-01-11 11:37:52.000000000","message":"use a friendlier message here","commit_id":"222b39840fa3ea40b8290cd0c61394e780ac63da"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f6b8d4e0e3c1a7ed2edbbdbb9a7e567bed40682f","unresolved":false,"context_lines":[{"line_number":1786,"context_line":"        try:"},{"line_number":1787,"context_line":"            self._get_volume_move_status(source_share, share_server)"},{"line_number":1788,"context_line":"        except exception.NetAppException as e:"},{"line_number":1789,"context_line":"            LOG.exception(e)"},{"line_number":1790,"context_line":"            return"},{"line_number":1791,"context_line":""},{"line_number":1792,"context_line":"        self._client.abort_volume_move(share_volume, vserver)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a3c09a3_ce1ea662","line":1789,"range":{"start_line":1789,"start_character":26,"end_line":1789,"end_character":27},"in_reply_to":"ba5201f7_caabf91c","updated":"2017-01-16 17:59:52.000000000","message":"_get_volume_move_status does give me a friendly message\n\nhttps://review.openstack.org/#/c/413783/4/manila/share/drivers/netapp/dataontap/client/client_cmode.py@3356","commit_id":"222b39840fa3ea40b8290cd0c61394e780ac63da"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"f46186aacffc2e0cf6320940c076f0c89d055052","unresolved":false,"context_lines":[{"line_number":1787,"context_line":"            self._get_volume_move_status(source_share, share_server)"},{"line_number":1788,"context_line":"        except exception.NetAppException as e:"},{"line_number":1789,"context_line":"            LOG.exception(e)"},{"line_number":1790,"context_line":"            return"},{"line_number":1791,"context_line":""},{"line_number":1792,"context_line":"        self._client.abort_volume_move(share_volume, vserver)"},{"line_number":1793,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_0aa6e152","line":1790,"range":{"start_line":1790,"start_character":12,"end_line":1790,"end_character":18},"updated":"2017-01-11 11:37:52.000000000","message":"shouldn\u0027t this be \"raise\"? are you going to consider as cancelled even if it failed to abort?","commit_id":"222b39840fa3ea40b8290cd0c61394e780ac63da"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f6b8d4e0e3c1a7ed2edbbdbb9a7e567bed40682f","unresolved":false,"context_lines":[{"line_number":1787,"context_line":"            self._get_volume_move_status(source_share, share_server)"},{"line_number":1788,"context_line":"        except exception.NetAppException as e:"},{"line_number":1789,"context_line":"            LOG.exception(e)"},{"line_number":1790,"context_line":"            return"},{"line_number":1791,"context_line":""},{"line_number":1792,"context_line":"        self._client.abort_volume_move(share_volume, vserver)"},{"line_number":1793,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a3c09a3_2e51ea0e","line":1790,"range":{"start_line":1790,"start_character":12,"end_line":1790,"end_character":18},"in_reply_to":"ba5201f7_0aa6e152","updated":"2017-01-16 17:59:52.000000000","message":"only a non-existent volume move can cause an exception here..","commit_id":"222b39840fa3ea40b8290cd0c61394e780ac63da"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"f46186aacffc2e0cf6320940c076f0c89d055052","unresolved":false,"context_lines":[{"line_number":1809,"context_line":"        status \u003d self._get_volume_move_status(source_share, share_server)"},{"line_number":1810,"context_line":""},{"line_number":1811,"context_line":"        move_phase \u003d status[\u0027phase\u0027].lower()"},{"line_number":1812,"context_line":"        if move_phase \u003d\u003d \u0027completed\u0027:"},{"line_number":1813,"context_line":"            LOG.debug(\"Volume move operation was already successfully \""},{"line_number":1814,"context_line":"                      \"completed for share %(shr)s.\","},{"line_number":1815,"context_line":"                      {\u0027shr\u0027: source_share[\u0027id\u0027]})"},{"line_number":1816,"context_line":"        elif move_phase in (\u0027cutover_hard_deferred\u0027, \u0027cutover_soft_deferred\u0027):"},{"line_number":1817,"context_line":"            self._client.trigger_volume_move_cutover(share_volume, vserver)"},{"line_number":1818,"context_line":"            self._wait_for_cutover_completion("},{"line_number":1819,"context_line":"                source_share, share_server)"},{"line_number":1820,"context_line":"        else:"},{"line_number":1821,"context_line":"            msg \u003d _(\"Cannot complete volume move operation for share %(shr)s. \""},{"line_number":1822,"context_line":"                    \"Current volume move status: %(status)s, phase: \""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_259bd6ca","line":1819,"range":{"start_line":1812,"start_character":8,"end_line":1819,"end_character":43},"updated":"2017-01-11 11:37:52.000000000","message":"interesting, you have 2 scenarios here, you either way to finish moving, or you have already moved (in other words, completed before migration-complete has been issued). Since your migration is nondisruptive, they make no difference as the user will not notice this","commit_id":"222b39840fa3ea40b8290cd0c61394e780ac63da"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f920ddd4ae3ced17ac2ac7a099dc19aabdd711fd","unresolved":false,"context_lines":[{"line_number":1809,"context_line":"        status \u003d self._get_volume_move_status(source_share, share_server)"},{"line_number":1810,"context_line":""},{"line_number":1811,"context_line":"        move_phase \u003d status[\u0027phase\u0027].lower()"},{"line_number":1812,"context_line":"        if move_phase \u003d\u003d \u0027completed\u0027:"},{"line_number":1813,"context_line":"            LOG.debug(\"Volume move operation was already successfully \""},{"line_number":1814,"context_line":"                      \"completed for share %(shr)s.\","},{"line_number":1815,"context_line":"                      {\u0027shr\u0027: source_share[\u0027id\u0027]})"},{"line_number":1816,"context_line":"        elif move_phase in (\u0027cutover_hard_deferred\u0027, \u0027cutover_soft_deferred\u0027):"},{"line_number":1817,"context_line":"            self._client.trigger_volume_move_cutover(share_volume, vserver)"},{"line_number":1818,"context_line":"            self._wait_for_cutover_completion("},{"line_number":1819,"context_line":"                source_share, share_server)"},{"line_number":1820,"context_line":"        else:"},{"line_number":1821,"context_line":"            msg \u003d _(\"Cannot complete volume move operation for share %(shr)s. \""},{"line_number":1822,"context_line":"                    \"Current volume move status: %(status)s, phase: \""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_c6520667","line":1819,"range":{"start_line":1812,"start_character":8,"end_line":1819,"end_character":43},"in_reply_to":"ba5201f7_259bd6ca","updated":"2017-01-11 15:03:52.000000000","message":"We shouldn\u0027t ever encounter scenario 1 unless someone\u0027s used a backdoor to the storage, however, we should handle that situation.","commit_id":"222b39840fa3ea40b8290cd0c61394e780ac63da"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"f46186aacffc2e0cf6320940c076f0c89d055052","unresolved":false,"context_lines":[{"line_number":1844,"context_line":"        }"},{"line_number":1845,"context_line":"        LOG.info(msg, msg_args)"},{"line_number":1846,"context_line":""},{"line_number":1847,"context_line":"        # NOTE(gouthamr): For non-disruptive migration, current export"},{"line_number":1848,"context_line":"        # policy will not be cleared, the export policy will be renamed to"},{"line_number":1849,"context_line":"        # match the name of the share."},{"line_number":1850,"context_line":"        return self._create_export("}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_85cd62b9","line":1847,"range":{"start_line":1847,"start_character":30,"end_line":1847,"end_character":44},"updated":"2017-01-11 11:37:52.000000000","message":"nondisruptive? :P","commit_id":"222b39840fa3ea40b8290cd0c61394e780ac63da"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f6b8d4e0e3c1a7ed2edbbdbb9a7e567bed40682f","unresolved":false,"context_lines":[{"line_number":1844,"context_line":"        }"},{"line_number":1845,"context_line":"        LOG.info(msg, msg_args)"},{"line_number":1846,"context_line":""},{"line_number":1847,"context_line":"        # NOTE(gouthamr): For non-disruptive migration, current export"},{"line_number":1848,"context_line":"        # policy will not be cleared, the export policy will be renamed to"},{"line_number":1849,"context_line":"        # match the name of the share."},{"line_number":1850,"context_line":"        return self._create_export("}],"source_content_type":"text/x-python","patch_set":4,"id":"7a3c09a3_ce91469b","line":1847,"range":{"start_line":1847,"start_character":30,"end_line":1847,"end_character":44},"in_reply_to":"ba5201f7_85cd62b9","updated":"2017-01-16 17:59:52.000000000","message":"it\u0027s literature.. nondisruptive\u0027s not a word","commit_id":"222b39840fa3ea40b8290cd0c61394e780ac63da"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"8b7655c7df47e2a6a07a7b9701e962dc103d8781","unresolved":false,"context_lines":[{"line_number":1669,"context_line":"                self._client.check_volume_move("},{"line_number":1670,"context_line":"                    share_volume, source_vserver, destination_aggregate)"},{"line_number":1671,"context_line":""},{"line_number":1672,"context_line":"            except Exception:"},{"line_number":1673,"context_line":"                msg \u003d _(\"Incompatible back ends, cannot migrate share %(shr)s \""},{"line_number":1674,"context_line":"                        \"efficiently between %(src)s and %(dest)s.\")"},{"line_number":1675,"context_line":"                msg_args \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a3c09a3_cea114fa","line":1672,"range":{"start_line":1672,"start_character":19,"end_line":1672,"end_character":28},"updated":"2017-01-17 15:47:19.000000000","message":"Is it worthwhile to distinguish between incompatible back ends and some other API error that could have occurred even if the back ends are compatible?","commit_id":"32c55b4f0289f61c5cb92ab0180ccb7de5b1db4c"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"d739e6df6eb7a8b5f2d54088b2b34c70d54acfcd","unresolved":false,"context_lines":[{"line_number":1669,"context_line":"                self._client.check_volume_move("},{"line_number":1670,"context_line":"                    share_volume, source_vserver, destination_aggregate)"},{"line_number":1671,"context_line":""},{"line_number":1672,"context_line":"            except Exception:"},{"line_number":1673,"context_line":"                msg \u003d _(\"Incompatible back ends, cannot migrate share %(shr)s \""},{"line_number":1674,"context_line":"                        \"efficiently between %(src)s and %(dest)s.\")"},{"line_number":1675,"context_line":"                msg_args \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a3c09a3_f6f78656","line":1672,"range":{"start_line":1672,"start_character":19,"end_line":1672,"end_character":28},"in_reply_to":"7a3c09a3_102dfafd","updated":"2017-01-17 16:27:10.000000000","message":"You could define an exception other back ends could use, which would make the error messages crisp, or you could do some word smithing on the error message to water it down.  Not a big deal either way, but someone is likely to complain about catching Exception unless there is a wide range of possible exceptions here.","commit_id":"32c55b4f0289f61c5cb92ab0180ccb7de5b1db4c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f53ff188a92196b69f0a016eaebd089adb24e49c","unresolved":false,"context_lines":[{"line_number":1669,"context_line":"                self._client.check_volume_move("},{"line_number":1670,"context_line":"                    share_volume, source_vserver, destination_aggregate)"},{"line_number":1671,"context_line":""},{"line_number":1672,"context_line":"            except Exception:"},{"line_number":1673,"context_line":"                msg \u003d _(\"Incompatible back ends, cannot migrate share %(shr)s \""},{"line_number":1674,"context_line":"                        \"efficiently between %(src)s and %(dest)s.\")"},{"line_number":1675,"context_line":"                msg_args \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a3c09a3_102dfafd","line":1672,"range":{"start_line":1672,"start_character":19,"end_line":1672,"end_character":28},"in_reply_to":"7a3c09a3_cea114fa","updated":"2017-01-17 15:58:58.000000000","message":"Good point. However, would you want me to just remove \"Incompatible back ends\" from the error message below.. because the result is the same..","commit_id":"32c55b4f0289f61c5cb92ab0180ccb7de5b1db4c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"14de5e9300d9a9d2662490c976f1d0c6670ef34f","unresolved":false,"context_lines":[{"line_number":1669,"context_line":"                self._client.check_volume_move("},{"line_number":1670,"context_line":"                    share_volume, source_vserver, destination_aggregate)"},{"line_number":1671,"context_line":""},{"line_number":1672,"context_line":"            except Exception:"},{"line_number":1673,"context_line":"                msg \u003d _(\"Incompatible back ends, cannot migrate share %(shr)s \""},{"line_number":1674,"context_line":"                        \"efficiently between %(src)s and %(dest)s.\")"},{"line_number":1675,"context_line":"                msg_args \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a3c09a3_7f7a7b89","line":1672,"range":{"start_line":1672,"start_character":19,"end_line":1672,"end_character":28},"in_reply_to":"7a3c09a3_f6f78656","updated":"2017-01-17 23:39:58.000000000","message":"Pursuant to our discussion, I\u0027ve updated the error message below to say that the migration is not possible. The errors from ONTAP will suffice for an administrator to evaluate next steps for.","commit_id":"32c55b4f0289f61c5cb92ab0180ccb7de5b1db4c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"428d48e330765bd81c3fdf7dca05a0ee03b889d1","unresolved":false,"context_lines":[{"line_number":1670,"context_line":"                    share_volume, source_vserver, destination_aggregate)"},{"line_number":1671,"context_line":""},{"line_number":1672,"context_line":"            except Exception:"},{"line_number":1673,"context_line":"                msg \u003d _(\"Cannot migrate share %(shr)s efficiently between \""},{"line_number":1674,"context_line":"                        \"%(src)s and %(dest)s.\")"},{"line_number":1675,"context_line":"                msg_args \u003d {"},{"line_number":1676,"context_line":"                    \u0027shr\u0027: source_share[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_923e7ad8","line":1673,"range":{"start_line":1673,"start_character":22,"end_line":1673,"end_character":23},"updated":"2017-01-21 15:42:09.000000000","message":"This should be _LE as it is used in logging only.","commit_id":"c564105dc98572e5072f2c3e0c983349bebcac29"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"96de70956c194096e36a4fb262cea3c21065a276","unresolved":false,"context_lines":[{"line_number":1670,"context_line":"                    share_volume, source_vserver, destination_aggregate)"},{"line_number":1671,"context_line":""},{"line_number":1672,"context_line":"            except Exception:"},{"line_number":1673,"context_line":"                msg \u003d _(\"Cannot migrate share %(shr)s efficiently between \""},{"line_number":1674,"context_line":"                        \"%(src)s and %(dest)s.\")"},{"line_number":1675,"context_line":"                msg_args \u003d {"},{"line_number":1676,"context_line":"                    \u0027shr\u0027: source_share[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_5c2d0494","line":1673,"range":{"start_line":1673,"start_character":22,"end_line":1673,"end_character":23},"in_reply_to":"5a3905b3_923e7ad8","updated":"2017-01-21 18:28:19.000000000","message":"Done","commit_id":"c564105dc98572e5072f2c3e0c983349bebcac29"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"428d48e330765bd81c3fdf7dca05a0ee03b889d1","unresolved":false,"context_lines":[{"line_number":1734,"context_line":""},{"line_number":1735,"context_line":"        move_phase \u003d status[\u0027phase\u0027].lower()"},{"line_number":1736,"context_line":"        if move_phase \u003d\u003d \u0027failed\u0027:"},{"line_number":1737,"context_line":"            msg \u003d _(\"Volume move operation for share %(shr)s failed. Reason: \""},{"line_number":1738,"context_line":"                    \"%(reason)s\")"},{"line_number":1739,"context_line":"            msg_args \u003d {"},{"line_number":1740,"context_line":"                \u0027shr\u0027: source_share[\u0027id\u0027],"},{"line_number":1741,"context_line":"                \u0027reason\u0027: status[\u0027details\u0027],"},{"line_number":1742,"context_line":"            }"},{"line_number":1743,"context_line":"            LOG.exception(msg, msg_args)"},{"line_number":1744,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":1745,"context_line":"        elif move_phase in completed_phases:"},{"line_number":1746,"context_line":"            return True"},{"line_number":1747,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_d25d6248","line":1744,"range":{"start_line":1737,"start_character":0,"end_line":1744,"end_character":59},"updated":"2017-01-21 15:42:09.000000000","message":"In this case, the message is used in both logging and exception.  It should be formatted once and passed to both logger and exception.\n\n            msg_args \u003d {\n                \u0027shr\u0027: source_share[\u0027id\u0027],\n                \u0027reason\u0027: status[\u0027details\u0027],\n            }\n            msg \u003d _(\"Volume move operation for share %(shr)s failed. Reason: \"\n                    \"%(reason)s\") % msg_args\n            LOG.exception(msg)\n            raise exception.NetAppException(msg)","commit_id":"c564105dc98572e5072f2c3e0c983349bebcac29"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"96de70956c194096e36a4fb262cea3c21065a276","unresolved":false,"context_lines":[{"line_number":1734,"context_line":""},{"line_number":1735,"context_line":"        move_phase \u003d status[\u0027phase\u0027].lower()"},{"line_number":1736,"context_line":"        if move_phase \u003d\u003d \u0027failed\u0027:"},{"line_number":1737,"context_line":"            msg \u003d _(\"Volume move operation for share %(shr)s failed. Reason: \""},{"line_number":1738,"context_line":"                    \"%(reason)s\")"},{"line_number":1739,"context_line":"            msg_args \u003d {"},{"line_number":1740,"context_line":"                \u0027shr\u0027: source_share[\u0027id\u0027],"},{"line_number":1741,"context_line":"                \u0027reason\u0027: status[\u0027details\u0027],"},{"line_number":1742,"context_line":"            }"},{"line_number":1743,"context_line":"            LOG.exception(msg, msg_args)"},{"line_number":1744,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":1745,"context_line":"        elif move_phase in completed_phases:"},{"line_number":1746,"context_line":"            return True"},{"line_number":1747,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_3c283886","line":1744,"range":{"start_line":1737,"start_character":0,"end_line":1744,"end_character":59},"in_reply_to":"5a3905b3_d25d6248","updated":"2017-01-21 18:28:19.000000000","message":"Done","commit_id":"c564105dc98572e5072f2c3e0c983349bebcac29"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"428d48e330765bd81c3fdf7dca05a0ee03b889d1","unresolved":false,"context_lines":[{"line_number":1789,"context_line":"        try:"},{"line_number":1790,"context_line":"            self._get_volume_move_status(source_share, share_server)"},{"line_number":1791,"context_line":"        except exception.NetAppException as e:"},{"line_number":1792,"context_line":"            LOG.exception(e)"},{"line_number":1793,"context_line":"            return"},{"line_number":1794,"context_line":""},{"line_number":1795,"context_line":"        self._client.abort_volume_move(share_volume, vserver)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_d20ba228","line":1792,"updated":"2017-01-21 15:42:09.000000000","message":"This should be wrapped with _LE().","commit_id":"c564105dc98572e5072f2c3e0c983349bebcac29"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"96de70956c194096e36a4fb262cea3c21065a276","unresolved":false,"context_lines":[{"line_number":1789,"context_line":"        try:"},{"line_number":1790,"context_line":"            self._get_volume_move_status(source_share, share_server)"},{"line_number":1791,"context_line":"        except exception.NetAppException as e:"},{"line_number":1792,"context_line":"            LOG.exception(e)"},{"line_number":1793,"context_line":"            return"},{"line_number":1794,"context_line":""},{"line_number":1795,"context_line":"        self._client.abort_volume_move(share_volume, vserver)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_bc3c28c9","line":1792,"in_reply_to":"5a3905b3_d20ba228","updated":"2017-01-21 18:28:19.000000000","message":"Done","commit_id":"c564105dc98572e5072f2c3e0c983349bebcac29"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"428d48e330765bd81c3fdf7dca05a0ee03b889d1","unresolved":false,"context_lines":[{"line_number":1794,"context_line":""},{"line_number":1795,"context_line":"        self._client.abort_volume_move(share_volume, vserver)"},{"line_number":1796,"context_line":""},{"line_number":1797,"context_line":"        msg \u003d _(\"Share volume move operation for share %(shr)s from host \""},{"line_number":1798,"context_line":"                \"%(src)s to %(dest)s was successfully aborted.\")"},{"line_number":1799,"context_line":"        msg_args \u003d {"},{"line_number":1800,"context_line":"            \u0027shr\u0027: source_share[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_a60c173c","line":1797,"range":{"start_line":1797,"start_character":14,"end_line":1797,"end_character":15},"updated":"2017-01-21 15:42:09.000000000","message":"Should be _LI()","commit_id":"c564105dc98572e5072f2c3e0c983349bebcac29"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"96de70956c194096e36a4fb262cea3c21065a276","unresolved":false,"context_lines":[{"line_number":1794,"context_line":""},{"line_number":1795,"context_line":"        self._client.abort_volume_move(share_volume, vserver)"},{"line_number":1796,"context_line":""},{"line_number":1797,"context_line":"        msg \u003d _(\"Share volume move operation for share %(shr)s from host \""},{"line_number":1798,"context_line":"                \"%(src)s to %(dest)s was successfully aborted.\")"},{"line_number":1799,"context_line":"        msg_args \u003d {"},{"line_number":1800,"context_line":"            \u0027shr\u0027: source_share[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_fc3230f1","line":1797,"range":{"start_line":1797,"start_character":14,"end_line":1797,"end_character":15},"in_reply_to":"5a3905b3_a60c173c","updated":"2017-01-21 18:28:19.000000000","message":"Done","commit_id":"c564105dc98572e5072f2c3e0c983349bebcac29"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"428d48e330765bd81c3fdf7dca05a0ee03b889d1","unresolved":false,"context_lines":[{"line_number":1822,"context_line":"            self._wait_for_cutover_completion("},{"line_number":1823,"context_line":"                source_share, share_server)"},{"line_number":1824,"context_line":"        else:"},{"line_number":1825,"context_line":"            msg \u003d _(\"Cannot complete volume move operation for share %(shr)s. \""},{"line_number":1826,"context_line":"                    \"Current volume move status: %(status)s, phase: \""},{"line_number":1827,"context_line":"                    \"%(phase)s. Details: %(details)s\")"},{"line_number":1828,"context_line":"            msg_args \u003d {"},{"line_number":1829,"context_line":"                \u0027shr\u0027: source_share[\u0027id\u0027],"},{"line_number":1830,"context_line":"                \u0027status\u0027: status[\u0027state\u0027],"},{"line_number":1831,"context_line":"                \u0027phase\u0027: status[\u0027phase\u0027],"},{"line_number":1832,"context_line":"                \u0027details\u0027: status[\u0027details\u0027],"},{"line_number":1833,"context_line":"            }"},{"line_number":1834,"context_line":"            LOG.exception(msg, msg_args)"},{"line_number":1835,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":1836,"context_line":""},{"line_number":1837,"context_line":"        new_share_volume_name \u003d self._get_backend_share_name("},{"line_number":1838,"context_line":"            destination_share[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_e6129f56","line":1835,"range":{"start_line":1825,"start_character":0,"end_line":1835,"end_character":59},"updated":"2017-01-21 15:42:09.000000000","message":"Same as my comments on line 1744.  The message should be formatted first and passed to both logger and exception.\n\n \n            msg_args \u003d {\n                \u0027shr\u0027: source_share[\u0027id\u0027],\n                \u0027status\u0027: status[\u0027state\u0027],\n                \u0027phase\u0027: status[\u0027phase\u0027],\n                \u0027details\u0027: status[\u0027details\u0027],\n            }\n           msg \u003d _(\"Cannot complete volume move operation for share %(shr)s. \"\n                    \"Current volume move status: %(status)s, phase: \"\n                    \"%(phase)s. Details: %(details)s\") % msg_args\n            LOG.exception(msg)\n            raise exception.NetAppException(msg)","commit_id":"c564105dc98572e5072f2c3e0c983349bebcac29"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"96de70956c194096e36a4fb262cea3c21065a276","unresolved":false,"context_lines":[{"line_number":1822,"context_line":"            self._wait_for_cutover_completion("},{"line_number":1823,"context_line":"                source_share, share_server)"},{"line_number":1824,"context_line":"        else:"},{"line_number":1825,"context_line":"            msg \u003d _(\"Cannot complete volume move operation for share %(shr)s. \""},{"line_number":1826,"context_line":"                    \"Current volume move status: %(status)s, phase: \""},{"line_number":1827,"context_line":"                    \"%(phase)s. Details: %(details)s\")"},{"line_number":1828,"context_line":"            msg_args \u003d {"},{"line_number":1829,"context_line":"                \u0027shr\u0027: source_share[\u0027id\u0027],"},{"line_number":1830,"context_line":"                \u0027status\u0027: status[\u0027state\u0027],"},{"line_number":1831,"context_line":"                \u0027phase\u0027: status[\u0027phase\u0027],"},{"line_number":1832,"context_line":"                \u0027details\u0027: status[\u0027details\u0027],"},{"line_number":1833,"context_line":"            }"},{"line_number":1834,"context_line":"            LOG.exception(msg, msg_args)"},{"line_number":1835,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":1836,"context_line":""},{"line_number":1837,"context_line":"        new_share_volume_name \u003d self._get_backend_share_name("},{"line_number":1838,"context_line":"            destination_share[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_3c4f586c","line":1835,"range":{"start_line":1825,"start_character":0,"end_line":1835,"end_character":59},"in_reply_to":"5a3905b3_e6129f56","updated":"2017-01-21 18:28:19.000000000","message":"Done","commit_id":"c564105dc98572e5072f2c3e0c983349bebcac29"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"428d48e330765bd81c3fdf7dca05a0ee03b889d1","unresolved":false,"context_lines":[{"line_number":1878,"context_line":"        def check_move_completion():"},{"line_number":1879,"context_line":"            status \u003d self._get_volume_move_status(source_share, share_server)"},{"line_number":1880,"context_line":"            if status[\u0027phase\u0027].lower() !\u003d \u0027completed\u0027:"},{"line_number":1881,"context_line":"                msg \u003d _(\u0027Volume move operation for share %(shr)s is not \u0027"},{"line_number":1882,"context_line":"                        \u0027complete. Current Phase: %(phs)s. Retrying.\u0027)"},{"line_number":1883,"context_line":"                msg_args \u003d {"},{"line_number":1884,"context_line":"                    \u0027shr\u0027: source_share[\u0027id\u0027],"},{"line_number":1885,"context_line":"                    \u0027phs\u0027: status[\u0027phase\u0027],"},{"line_number":1886,"context_line":"                }"},{"line_number":1887,"context_line":"                LOG.warning(msg, msg_args)"},{"line_number":1888,"context_line":"                raise exception.ShareBusyException(reason\u003dmsg % msg_args)"},{"line_number":1889,"context_line":""},{"line_number":1890,"context_line":"        try:"},{"line_number":1891,"context_line":"            check_move_completion()"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_4628d386","line":1888,"range":{"start_line":1881,"start_character":0,"end_line":1888,"end_character":73},"updated":"2017-01-21 15:42:09.000000000","message":"Same comment as on line 1835.  The message should be formatted first and passed to the logger and exception.","commit_id":"c564105dc98572e5072f2c3e0c983349bebcac29"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"96de70956c194096e36a4fb262cea3c21065a276","unresolved":false,"context_lines":[{"line_number":1878,"context_line":"        def check_move_completion():"},{"line_number":1879,"context_line":"            status \u003d self._get_volume_move_status(source_share, share_server)"},{"line_number":1880,"context_line":"            if status[\u0027phase\u0027].lower() !\u003d \u0027completed\u0027:"},{"line_number":1881,"context_line":"                msg \u003d _(\u0027Volume move operation for share %(shr)s is not \u0027"},{"line_number":1882,"context_line":"                        \u0027complete. Current Phase: %(phs)s. Retrying.\u0027)"},{"line_number":1883,"context_line":"                msg_args \u003d {"},{"line_number":1884,"context_line":"                    \u0027shr\u0027: source_share[\u0027id\u0027],"},{"line_number":1885,"context_line":"                    \u0027phs\u0027: status[\u0027phase\u0027],"},{"line_number":1886,"context_line":"                }"},{"line_number":1887,"context_line":"                LOG.warning(msg, msg_args)"},{"line_number":1888,"context_line":"                raise exception.ShareBusyException(reason\u003dmsg % msg_args)"},{"line_number":1889,"context_line":""},{"line_number":1890,"context_line":"        try:"},{"line_number":1891,"context_line":"            check_move_completion()"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_fc495061","line":1888,"range":{"start_line":1881,"start_character":0,"end_line":1888,"end_character":73},"in_reply_to":"5a3905b3_4628d386","updated":"2017-01-21 18:28:19.000000000","message":"Done","commit_id":"c564105dc98572e5072f2c3e0c983349bebcac29"}],"releasenotes/notes/netapp-cdot-optimized-migration-within-share-server-92cfa1bcf0c317fc.yaml":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"f46186aacffc2e0cf6320940c076f0c89d055052","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Driver assisted migration support has been added to the NetApp cDOT"},{"line_number":4,"context_line":"    driver to efficiently and non-disruptively migrate shares within Vservers"},{"line_number":5,"context_line":"    by ensuring data, snapshots and metadata."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"ba5201f7_655a3e85","line":4,"range":{"start_line":4,"start_character":31,"end_line":4,"end_character":46},"updated":"2017-01-11 11:37:52.000000000","message":"nondisruptively?","commit_id":"222b39840fa3ea40b8290cd0c61394e780ac63da"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f6b8d4e0e3c1a7ed2edbbdbb9a7e567bed40682f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Driver assisted migration support has been added to the NetApp cDOT"},{"line_number":4,"context_line":"    driver to efficiently and non-disruptively migrate shares within Vservers"},{"line_number":5,"context_line":"    by ensuring data, snapshots and metadata."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7a3c09a3_6e45b215","line":4,"range":{"start_line":4,"start_character":31,"end_line":4,"end_character":46},"in_reply_to":"ba5201f7_655a3e85","updated":"2017-01-16 17:59:52.000000000","message":"referring to the same option here without calling it out..","commit_id":"222b39840fa3ea40b8290cd0c61394e780ac63da"}]}
