)]}'
{"novaclient/tests/unit/v2/test_servers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b2f32982fa8df1bf0205ac0f984021b7cbff42de","unresolved":false,"context_lines":[{"line_number":1657,"context_line":"                      \"microversion 2.67\", six.text_type(ex))"},{"line_number":1658,"context_line":""},{"line_number":1659,"context_line":""},{"line_number":1660,"context_line":"class ServersV268Test(ServersV267Test):"},{"line_number":1661,"context_line":""},{"line_number":1662,"context_line":"    api_version \u003d \"2.68\""},{"line_number":1663,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_facd0685","line":1660,"updated":"2019-02-12 20:52:43.000000000","message":"Could you also add a couple of negative tests in here where you make the API request with the force kwarg and assert it blows up as expected?","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"293a64f1cc1ad7c4f7d3c43e0eec745ffebd6775","unresolved":false,"context_lines":[{"line_number":1657,"context_line":"                      \"microversion 2.67\", six.text_type(ex))"},{"line_number":1658,"context_line":""},{"line_number":1659,"context_line":""},{"line_number":1660,"context_line":"class ServersV268Test(ServersV267Test):"},{"line_number":1661,"context_line":""},{"line_number":1662,"context_line":"    api_version \u003d \"2.68\""},{"line_number":1663,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_3510744e","line":1660,"in_reply_to":"9fdfeff1_facd0685","updated":"2019-02-13 13:59:55.000000000","message":"Done","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"54dba775c63e4560830282f8e900b519de3086bb","unresolved":false,"context_lines":[{"line_number":1663,"context_line":""},{"line_number":1664,"context_line":"    def test_evacuate(self):"},{"line_number":1665,"context_line":"        s \u003d self.cs.servers.get(1234)"},{"line_number":1666,"context_line":"        s.evacuate(\u0027fake_target_host\u0027)"},{"line_number":1667,"context_line":"        self.assert_called(\u0027POST\u0027, \u0027/servers/1234/action\u0027,"},{"line_number":1668,"context_line":"                           {\u0027evacuate\u0027: {\u0027host\u0027: \u0027fake_target_host\u0027}})"},{"line_number":1669,"context_line":"        self.cs.servers.evacuate(s, \u0027fake_target_host\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_b910ff5a","line":1666,"updated":"2019-02-12 06:54:43.000000000","message":"nit: Add self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST)","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"293a64f1cc1ad7c4f7d3c43e0eec745ffebd6775","unresolved":false,"context_lines":[{"line_number":1663,"context_line":""},{"line_number":1664,"context_line":"    def test_evacuate(self):"},{"line_number":1665,"context_line":"        s \u003d self.cs.servers.get(1234)"},{"line_number":1666,"context_line":"        s.evacuate(\u0027fake_target_host\u0027)"},{"line_number":1667,"context_line":"        self.assert_called(\u0027POST\u0027, \u0027/servers/1234/action\u0027,"},{"line_number":1668,"context_line":"                           {\u0027evacuate\u0027: {\u0027host\u0027: \u0027fake_target_host\u0027}})"},{"line_number":1669,"context_line":"        self.cs.servers.evacuate(s, \u0027fake_target_host\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_750a7c20","line":1666,"in_reply_to":"9fdfeff1_b910ff5a","updated":"2019-02-13 13:59:55.000000000","message":"Done","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"54dba775c63e4560830282f8e900b519de3086bb","unresolved":false,"context_lines":[{"line_number":1666,"context_line":"        s.evacuate(\u0027fake_target_host\u0027)"},{"line_number":1667,"context_line":"        self.assert_called(\u0027POST\u0027, \u0027/servers/1234/action\u0027,"},{"line_number":1668,"context_line":"                           {\u0027evacuate\u0027: {\u0027host\u0027: \u0027fake_target_host\u0027}})"},{"line_number":1669,"context_line":"        self.cs.servers.evacuate(s, \u0027fake_target_host\u0027)"},{"line_number":1670,"context_line":"        self.assert_called(\u0027POST\u0027, \u0027/servers/1234/action\u0027,"},{"line_number":1671,"context_line":"                           {\u0027evacuate\u0027: {\u0027host\u0027: \u0027fake_target_host\u0027}})"},{"line_number":1672,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_790e173c","line":1669,"updated":"2019-02-12 06:54:43.000000000","message":"nit: Add self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST)","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"293a64f1cc1ad7c4f7d3c43e0eec745ffebd6775","unresolved":false,"context_lines":[{"line_number":1666,"context_line":"        s.evacuate(\u0027fake_target_host\u0027)"},{"line_number":1667,"context_line":"        self.assert_called(\u0027POST\u0027, \u0027/servers/1234/action\u0027,"},{"line_number":1668,"context_line":"                           {\u0027evacuate\u0027: {\u0027host\u0027: \u0027fake_target_host\u0027}})"},{"line_number":1669,"context_line":"        self.cs.servers.evacuate(s, \u0027fake_target_host\u0027)"},{"line_number":1670,"context_line":"        self.assert_called(\u0027POST\u0027, \u0027/servers/1234/action\u0027,"},{"line_number":1671,"context_line":"                           {\u0027evacuate\u0027: {\u0027host\u0027: \u0027fake_target_host\u0027}})"},{"line_number":1672,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_1513f05d","line":1669,"in_reply_to":"9fdfeff1_790e173c","updated":"2019-02-13 13:59:55.000000000","message":"Done","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"}],"novaclient/v2/servers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8c2d99fb321d07b6126c5ce2bcb41c6bc484f62f","unresolved":false,"context_lines":[{"line_number":1885,"context_line":"        return base.TupleWithMeta((resp, body), resp)"},{"line_number":1886,"context_line":""},{"line_number":1887,"context_line":"    @api_versions.wraps(\"2.68\")"},{"line_number":1888,"context_line":"    def evacuate(self, server, host\u003dNone, password\u003dNone):"},{"line_number":1889,"context_line":"        \"\"\""},{"line_number":1890,"context_line":"        Evacuate a server instance."},{"line_number":1891,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_ecb10be3","line":1888,"updated":"2019-02-08 22:19:01.000000000","message":"Could have DRY\u0027ed this up by making a private method and just not pass force to that one.","commit_id":"6f2ed474a269e00d7cb26ce302e50fd74bd9bcb9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fcd5e277c9079bf37d729248cdb957d97ef2f882","unresolved":false,"context_lines":[{"line_number":1885,"context_line":"        return base.TupleWithMeta((resp, body), resp)"},{"line_number":1886,"context_line":""},{"line_number":1887,"context_line":"    @api_versions.wraps(\"2.68\")"},{"line_number":1888,"context_line":"    def evacuate(self, server, host\u003dNone, password\u003dNone):"},{"line_number":1889,"context_line":"        \"\"\""},{"line_number":1890,"context_line":"        Evacuate a server instance."},{"line_number":1891,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_14f31fa0","line":1888,"in_reply_to":"9fdfeff1_ecb10be3","updated":"2019-02-11 18:14:09.000000000","message":"Good idea. I was just going with what was here. Cleaned up the whole thing now.","commit_id":"6f2ed474a269e00d7cb26ce302e50fd74bd9bcb9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"465983b061fe71cb95486793fbaf4c59ca20e64a","unresolved":false,"context_lines":[{"line_number":1785,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"},{"line_number":1786,"context_line":"        \"\"\""},{"line_number":1787,"context_line":""},{"line_number":1788,"context_line":"        body \u003d {\u0027onSharedStorage\u0027: on_shared_storage}"},{"line_number":1789,"context_line":"        if host is not None:"},{"line_number":1790,"context_line":"            body[\u0027host\u0027] \u003d host"},{"line_number":1791,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_7244e947","side":"PARENT","line":1788,"range":{"start_line":1788,"start_character":8,"end_line":1788,"end_character":53},"updated":"2019-02-12 13:42:07.000000000","message":"Until 2.14 this is a required parameter but since we default to True it should get set in the private method.","commit_id":"8eb7d1c5cc0d30c9e68aeb62dd7c73e4377e9fb0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6d0af5bc8cfc8c0665300ecfe289e540088285a9","unresolved":false,"context_lines":[{"line_number":1785,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"},{"line_number":1786,"context_line":"        \"\"\""},{"line_number":1787,"context_line":""},{"line_number":1788,"context_line":"        body \u003d {\u0027onSharedStorage\u0027: on_shared_storage}"},{"line_number":1789,"context_line":"        if host is not None:"},{"line_number":1790,"context_line":"            body[\u0027host\u0027] \u003d host"},{"line_number":1791,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_f86c1c37","side":"PARENT","line":1788,"range":{"start_line":1788,"start_character":8,"end_line":1788,"end_character":53},"in_reply_to":"9fdfeff1_35f634d9","updated":"2019-02-13 16:07:45.000000000","message":"Yeah, sorry, was talking to myself and saying this is properly handled in the helper method.","commit_id":"8eb7d1c5cc0d30c9e68aeb62dd7c73e4377e9fb0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"293a64f1cc1ad7c4f7d3c43e0eec745ffebd6775","unresolved":false,"context_lines":[{"line_number":1785,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"},{"line_number":1786,"context_line":"        \"\"\""},{"line_number":1787,"context_line":""},{"line_number":1788,"context_line":"        body \u003d {\u0027onSharedStorage\u0027: on_shared_storage}"},{"line_number":1789,"context_line":"        if host is not None:"},{"line_number":1790,"context_line":"            body[\u0027host\u0027] \u003d host"},{"line_number":1791,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_35f634d9","side":"PARENT","line":1788,"range":{"start_line":1788,"start_character":8,"end_line":1788,"end_character":53},"in_reply_to":"9fdfeff1_7244e947","updated":"2019-02-13 13:59:55.000000000","message":"I think we\u0027re doing that as well as we can, through our use of an explicit \u0027is None\u0027 check","commit_id":"8eb7d1c5cc0d30c9e68aeb62dd7c73e4377e9fb0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"465983b061fe71cb95486793fbaf4c59ca20e64a","unresolved":false,"context_lines":[{"line_number":460,"context_line":"        return self.manager.live_migrate(self, host, block_migration, force)"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"    @api_versions.wraps(\"2.68\")"},{"line_number":463,"context_line":"    def live_migrate(self, host\u003dNone, block_migration\u003dNone):"},{"line_number":464,"context_line":"        \"\"\""},{"line_number":465,"context_line":"        Migrates a running instance to a new machine."},{"line_number":466,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_322e6192","line":463,"updated":"2019-02-12 13:42:07.000000000","message":"nit: this is exactly like live_migrate on L434 so we could split out to a private method to DRY this up, but that can be done in a follow up.","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"293a64f1cc1ad7c4f7d3c43e0eec745ffebd6775","unresolved":false,"context_lines":[{"line_number":460,"context_line":"        return self.manager.live_migrate(self, host, block_migration, force)"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"    @api_versions.wraps(\"2.68\")"},{"line_number":463,"context_line":"    def live_migrate(self, host\u003dNone, block_migration\u003dNone):"},{"line_number":464,"context_line":"        \"\"\""},{"line_number":465,"context_line":"        Migrates a running instance to a new machine."},{"line_number":466,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_d517a8ed","line":463,"in_reply_to":"9fdfeff1_322e6192","updated":"2019-02-13 13:59:55.000000000","message":"Done","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"465983b061fe71cb95486793fbaf4c59ca20e64a","unresolved":false,"context_lines":[{"line_number":552,"context_line":"        return self.manager.evacuate(self, host, password, force)"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"    @api_versions.wraps(\"2.68\")"},{"line_number":555,"context_line":"    def evacuate(self, host\u003dNone, password\u003dNone):"},{"line_number":556,"context_line":"        \"\"\""},{"line_number":557,"context_line":"        Evacuate an instance from failed host to specified host."},{"line_number":558,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_923cedc8","line":555,"updated":"2019-02-12 13:42:07.000000000","message":"Same nit, this is exactly the same as evacuate() on L530 except for the version wrapper.","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"293a64f1cc1ad7c4f7d3c43e0eec745ffebd6775","unresolved":false,"context_lines":[{"line_number":552,"context_line":"        return self.manager.evacuate(self, host, password, force)"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"    @api_versions.wraps(\"2.68\")"},{"line_number":555,"context_line":"    def evacuate(self, host\u003dNone, password\u003dNone):"},{"line_number":556,"context_line":"        \"\"\""},{"line_number":557,"context_line":"        Evacuate an instance from failed host to specified host."},{"line_number":558,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_351f1409","line":555,"in_reply_to":"9fdfeff1_923cedc8","updated":"2019-02-13 13:59:55.000000000","message":"Done","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"465983b061fe71cb95486793fbaf4c59ca20e64a","unresolved":false,"context_lines":[{"line_number":1745,"context_line":"        return self._action(\u0027os-migrateLive\u0027, server, body)"},{"line_number":1746,"context_line":""},{"line_number":1747,"context_line":"    @api_versions.wraps(\u00272.68\u0027)"},{"line_number":1748,"context_line":"    def live_migrate(self, server, host, block_migration):"},{"line_number":1749,"context_line":"        \"\"\""},{"line_number":1750,"context_line":"        Migrates a running instance to a new machine."},{"line_number":1751,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_3253c119","line":1748,"updated":"2019-02-12 13:42:07.000000000","message":"Same as method on L1716.","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"293a64f1cc1ad7c4f7d3c43e0eec745ffebd6775","unresolved":false,"context_lines":[{"line_number":1745,"context_line":"        return self._action(\u0027os-migrateLive\u0027, server, body)"},{"line_number":1746,"context_line":""},{"line_number":1747,"context_line":"    @api_versions.wraps(\u00272.68\u0027)"},{"line_number":1748,"context_line":"    def live_migrate(self, server, host, block_migration):"},{"line_number":1749,"context_line":"        \"\"\""},{"line_number":1750,"context_line":"        Migrates a running instance to a new machine."},{"line_number":1751,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_15221053","line":1748,"in_reply_to":"9fdfeff1_3253c119","updated":"2019-02-13 13:59:55.000000000","message":"Done","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"465983b061fe71cb95486793fbaf4c59ca20e64a","unresolved":false,"context_lines":[{"line_number":1811,"context_line":"                          base.getid(server), \u0027security_groups\u0027,"},{"line_number":1812,"context_line":"                          SecurityGroup)"},{"line_number":1813,"context_line":""},{"line_number":1814,"context_line":"    def _evacuate(self, server, host, on_shared_storage, password, force):"},{"line_number":1815,"context_line":"        body \u003d {}"},{"line_number":1816,"context_line":""},{"line_number":1817,"context_line":"        if on_shared_storage is not None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_926aadb0","line":1814,"range":{"start_line":1814,"start_character":8,"end_line":1814,"end_character":17},"updated":"2019-02-12 13:42:07.000000000","message":"docstring would be nice","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"293a64f1cc1ad7c4f7d3c43e0eec745ffebd6775","unresolved":false,"context_lines":[{"line_number":1811,"context_line":"                          base.getid(server), \u0027security_groups\u0027,"},{"line_number":1812,"context_line":"                          SecurityGroup)"},{"line_number":1813,"context_line":""},{"line_number":1814,"context_line":"    def _evacuate(self, server, host, on_shared_storage, password, force):"},{"line_number":1815,"context_line":"        body \u003d {}"},{"line_number":1816,"context_line":""},{"line_number":1817,"context_line":"        if on_shared_storage is not None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_75291c35","line":1814,"range":{"start_line":1814,"start_character":8,"end_line":1814,"end_character":17},"in_reply_to":"9fdfeff1_926aadb0","updated":"2019-02-13 13:59:55.000000000","message":"Done","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"465983b061fe71cb95486793fbaf4c59ca20e64a","unresolved":false,"context_lines":[{"line_number":1855,"context_line":"        :param password: string to set as password on the evacuated server."},{"line_number":1856,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"},{"line_number":1857,"context_line":"        \"\"\""},{"line_number":1858,"context_line":"        return self._evacuate(server, host, None, password, None)"},{"line_number":1859,"context_line":""},{"line_number":1860,"context_line":"    @api_versions.wraps(\"2.29\", \"2.67\")"},{"line_number":1861,"context_line":"    def evacuate(self, server, host\u003dNone, password\u003dNone, force\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_725dc913","line":1858,"updated":"2019-02-12 13:42:07.000000000","message":"nit: using named kwargs would be nice for readability when we have multiple None args.","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"293a64f1cc1ad7c4f7d3c43e0eec745ffebd6775","unresolved":false,"context_lines":[{"line_number":1855,"context_line":"        :param password: string to set as password on the evacuated server."},{"line_number":1856,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"},{"line_number":1857,"context_line":"        \"\"\""},{"line_number":1858,"context_line":"        return self._evacuate(server, host, None, password, None)"},{"line_number":1859,"context_line":""},{"line_number":1860,"context_line":"    @api_versions.wraps(\"2.29\", \"2.67\")"},{"line_number":1861,"context_line":"    def evacuate(self, server, host\u003dNone, password\u003dNone, force\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_d5fec8ad","line":1858,"in_reply_to":"9fdfeff1_725dc913","updated":"2019-02-13 13:59:55.000000000","message":"Done","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"465983b061fe71cb95486793fbaf4c59ca20e64a","unresolved":false,"context_lines":[{"line_number":1875,"context_line":"        \"\"\""},{"line_number":1876,"context_line":"        Evacuate a server instance."},{"line_number":1877,"context_line":""},{"line_number":1878,"context_line":"        :param server: The :class:`Server` (or its ID) to share onto."},{"line_number":1879,"context_line":"        :param host: Name of the target host."},{"line_number":1880,"context_line":"        :param password: string to set as password on the evacuated server."},{"line_number":1881,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_b2ac91ed","line":1878,"range":{"start_line":1878,"start_character":58,"end_line":1878,"end_character":63},"updated":"2019-02-12 13:42:07.000000000","message":"I guess this is copy/paste but not sure what \"share onto\" means - should be \"to evacuate\".","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"293a64f1cc1ad7c4f7d3c43e0eec745ffebd6775","unresolved":false,"context_lines":[{"line_number":1875,"context_line":"        \"\"\""},{"line_number":1876,"context_line":"        Evacuate a server instance."},{"line_number":1877,"context_line":""},{"line_number":1878,"context_line":"        :param server: The :class:`Server` (or its ID) to share onto."},{"line_number":1879,"context_line":"        :param host: Name of the target host."},{"line_number":1880,"context_line":"        :param password: string to set as password on the evacuated server."},{"line_number":1881,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_b53304ab","line":1878,"range":{"start_line":1878,"start_character":58,"end_line":1878,"end_character":63},"in_reply_to":"9fdfeff1_b2ac91ed","updated":"2019-02-13 13:59:55.000000000","message":"This is done throughout this file, but that\u0027s a fix for another day","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"465983b061fe71cb95486793fbaf4c59ca20e64a","unresolved":false,"context_lines":[{"line_number":1880,"context_line":"        :param password: string to set as password on the evacuated server."},{"line_number":1881,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"},{"line_number":1882,"context_line":"        \"\"\""},{"line_number":1883,"context_line":"        return self._evacuate(server, host, None, password, None)"},{"line_number":1884,"context_line":""},{"line_number":1885,"context_line":"    def interface_list(self, server):"},{"line_number":1886,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_328ae169","line":1883,"updated":"2019-02-12 13:42:07.000000000","message":"same nit about named kwargs","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"293a64f1cc1ad7c4f7d3c43e0eec745ffebd6775","unresolved":false,"context_lines":[{"line_number":1880,"context_line":"        :param password: string to set as password on the evacuated server."},{"line_number":1881,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"},{"line_number":1882,"context_line":"        \"\"\""},{"line_number":1883,"context_line":"        return self._evacuate(server, host, None, password, None)"},{"line_number":1884,"context_line":""},{"line_number":1885,"context_line":"    def interface_list(self, server):"},{"line_number":1886,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_55241860","line":1883,"in_reply_to":"9fdfeff1_328ae169","updated":"2019-02-13 13:59:55.000000000","message":"Done","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ca2303eabcc8e244dea92d370752bc8ed3e29fe4","unresolved":false,"context_lines":[{"line_number":1700,"context_line":"                      force):"},{"line_number":1701,"context_line":"        \"\"\"Inner function to abstract changes in live migration API.\"\"\""},{"line_number":1702,"context_line":"        body \u003d {"},{"line_number":1703,"context_line":"            \u0027host\u0027: host,"},{"line_number":1704,"context_line":"            \u0027block_migration\u0027: block_migration,"},{"line_number":1705,"context_line":"        }"},{"line_number":1706,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_c1e9201a","line":1703,"range":{"start_line":1703,"start_character":12,"end_line":1703,"end_character":25},"updated":"2019-02-13 21:14:46.000000000","message":"This is correct albeit confusing - the migrateLive action requires the \u0027host\u0027 key even though the value can be None:\n\nhttps://developer.openstack.org/api-ref/compute/?expanded\u003dlive-migrate-server-os-migratelive-action-detail#id128","commit_id":"e818508d9b59730c1c257a534b8dd5e95834e441"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ca2303eabcc8e244dea92d370752bc8ed3e29fe4","unresolved":false,"context_lines":[{"line_number":1701,"context_line":"        \"\"\"Inner function to abstract changes in live migration API.\"\"\""},{"line_number":1702,"context_line":"        body \u003d {"},{"line_number":1703,"context_line":"            \u0027host\u0027: host,"},{"line_number":1704,"context_line":"            \u0027block_migration\u0027: block_migration,"},{"line_number":1705,"context_line":"        }"},{"line_number":1706,"context_line":""},{"line_number":1707,"context_line":"        if disk_over_commit is not None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_c1d2805c","line":1704,"range":{"start_line":1704,"start_character":12,"end_line":1704,"end_character":47},"updated":"2019-02-13 21:14:46.000000000","message":"Yeah this is also required:\n\nhttps://developer.openstack.org/api-ref/compute/?expanded\u003dlive-migrate-server-os-migratelive-action-detail#id128\n\n2.25 adds the \"auto\" value for block_migration in addition to True/False.","commit_id":"e818508d9b59730c1c257a534b8dd5e95834e441"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ca2303eabcc8e244dea92d370752bc8ed3e29fe4","unresolved":false,"context_lines":[{"line_number":1704,"context_line":"            \u0027block_migration\u0027: block_migration,"},{"line_number":1705,"context_line":"        }"},{"line_number":1706,"context_line":""},{"line_number":1707,"context_line":"        if disk_over_commit is not None:"},{"line_number":1708,"context_line":"            body[\u0027disk_over_commit\u0027] \u003d disk_over_commit"},{"line_number":1709,"context_line":""},{"line_number":1710,"context_line":"        # NOTE(stephenfin): For some silly reason, we don\u0027t set this if it\u0027s"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_81c8f8a7","line":1707,"updated":"2019-02-13 21:14:46.000000000","message":"And this is required until 2.25 when it was dropped, so looks good.","commit_id":"e818508d9b59730c1c257a534b8dd5e95834e441"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ca2303eabcc8e244dea92d370752bc8ed3e29fe4","unresolved":false,"context_lines":[{"line_number":1911,"context_line":"        :param password: string to set as password on the evacuated server."},{"line_number":1912,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"},{"line_number":1913,"context_line":"        \"\"\""},{"line_number":1914,"context_line":"        return self._evacuate(server, host, None, password, None)"},{"line_number":1915,"context_line":""},{"line_number":1916,"context_line":"    def interface_list(self, server):"},{"line_number":1917,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_c16040a8","line":1914,"range":{"start_line":1914,"start_character":30,"end_line":1914,"end_character":64},"updated":"2019-02-13 21:14:46.000000000","message":"d\u0027oh! named kwargs","commit_id":"e818508d9b59730c1c257a534b8dd5e95834e441"}],"novaclient/v2/shell.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"a010641f9cad810bf5ccb05381066029479e9b9f","unresolved":false,"context_lines":[{"line_number":4997,"context_line":"    dest\u003d\u0027max_servers\u0027,"},{"line_number":4998,"context_line":"    metavar\u003d\u0027\u003cmax_servers\u003e\u0027,"},{"line_number":4999,"context_line":"    help\u003d\u0027Maximum number of servers to live migrate simultaneously\u0027)"},{"line_number":5000,"context_line":"@utils.arg("},{"line_number":5001,"context_line":"    \u0027--force\u0027,"},{"line_number":5002,"context_line":"    dest\u003d\u0027force\u0027,"},{"line_number":5003,"context_line":"    action\u003d\u0027store_true\u0027,"},{"line_number":5004,"context_line":"    default\u003dFalse,"},{"line_number":5005,"context_line":"    help\u003d_(\u0027Force a live-migration by not verifying the provided destination \u0027"},{"line_number":5006,"context_line":"           \u0027host by the scheduler. WARNING: This could result in failures to \u0027"},{"line_number":5007,"context_line":"           \u0027actually live migrate the servers to the specified host. It is \u0027"},{"line_number":5008,"context_line":"           \u0027recommended to either not specify a host so that the scheduler \u0027"},{"line_number":5009,"context_line":"           \u0027will pick one, or specify a host without --force.\u0027),"},{"line_number":5010,"context_line":"    start_version\u003d\u00272.30\u0027)"},{"line_number":5011,"context_line":"@utils.arg("},{"line_number":5012,"context_line":"    \u0027--strict\u0027,"},{"line_number":5013,"context_line":"    dest\u003d\u0027strict\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_faf6c2f9","line":5010,"range":{"start_line":5000,"start_character":0,"end_line":5010,"end_character":25},"updated":"2019-02-07 00:54:17.000000000","message":"It should be modified.","commit_id":"7a0abcac6dca9de07b10fc621ef7ef1452963567"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1ce9f2ced7e4fa8d652e4a656ea6389991e3e037","unresolved":false,"context_lines":[{"line_number":4997,"context_line":"    dest\u003d\u0027max_servers\u0027,"},{"line_number":4998,"context_line":"    metavar\u003d\u0027\u003cmax_servers\u003e\u0027,"},{"line_number":4999,"context_line":"    help\u003d\u0027Maximum number of servers to live migrate simultaneously\u0027)"},{"line_number":5000,"context_line":"@utils.arg("},{"line_number":5001,"context_line":"    \u0027--force\u0027,"},{"line_number":5002,"context_line":"    dest\u003d\u0027force\u0027,"},{"line_number":5003,"context_line":"    action\u003d\u0027store_true\u0027,"},{"line_number":5004,"context_line":"    default\u003dFalse,"},{"line_number":5005,"context_line":"    help\u003d_(\u0027Force a live-migration by not verifying the provided destination \u0027"},{"line_number":5006,"context_line":"           \u0027host by the scheduler. WARNING: This could result in failures to \u0027"},{"line_number":5007,"context_line":"           \u0027actually live migrate the servers to the specified host. It is \u0027"},{"line_number":5008,"context_line":"           \u0027recommended to either not specify a host so that the scheduler \u0027"},{"line_number":5009,"context_line":"           \u0027will pick one, or specify a host without --force.\u0027),"},{"line_number":5010,"context_line":"    start_version\u003d\u00272.30\u0027)"},{"line_number":5011,"context_line":"@utils.arg("},{"line_number":5012,"context_line":"    \u0027--strict\u0027,"},{"line_number":5013,"context_line":"    dest\u003d\u0027strict\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_13d5a7e5","line":5010,"range":{"start_line":5000,"start_character":0,"end_line":5010,"end_character":25},"in_reply_to":"9fdfeff1_faf6c2f9","updated":"2019-02-07 17:17:33.000000000","message":"Done","commit_id":"7a0abcac6dca9de07b10fc621ef7ef1452963567"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"465983b061fe71cb95486793fbaf4c59ca20e64a","unresolved":false,"context_lines":[{"line_number":3465,"context_line":"           \u0027recommended to either not specify a host so that the scheduler \u0027"},{"line_number":3466,"context_line":"           \u0027will pick one, or specify a host without --force.\u0027),"},{"line_number":3467,"context_line":"    start_version\u003d\u00272.30\u0027,"},{"line_number":3468,"context_line":"    end_version\u003d\u00272.67\u0027)"},{"line_number":3469,"context_line":"def do_live_migration(cs, args):"},{"line_number":3470,"context_line":"    \"\"\"Migrate running server to a new machine.\"\"\""},{"line_number":3471,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_32ef411f","line":3468,"updated":"2019-02-12 13:42:07.000000000","message":"You must have missed my earlier comment:\n\n\u003e It would be nice to have a negative test for the shell to assert that trying to specify --force with microversion 2.68 results in an error.\n\nsame goes for the test of these - that\u0027s to test that we have the end_version set properly on this parameter in the various commands.","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"293a64f1cc1ad7c4f7d3c43e0eec745ffebd6775","unresolved":false,"context_lines":[{"line_number":3465,"context_line":"           \u0027recommended to either not specify a host so that the scheduler \u0027"},{"line_number":3466,"context_line":"           \u0027will pick one, or specify a host without --force.\u0027),"},{"line_number":3467,"context_line":"    start_version\u003d\u00272.30\u0027,"},{"line_number":3468,"context_line":"    end_version\u003d\u00272.67\u0027)"},{"line_number":3469,"context_line":"def do_live_migration(cs, args):"},{"line_number":3470,"context_line":"    \"\"\"Migrate running server to a new machine.\"\"\""},{"line_number":3471,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_d5b48838","line":3468,"in_reply_to":"9fdfeff1_32ef411f","updated":"2019-02-13 13:59:55.000000000","message":"Done","commit_id":"cb579256f66031fe2f0564d75c72ca38cad8730d"}],"releasenotes/notes/deprecate-force-option-7116d792bba17f09.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8c2d99fb321d07b6126c5ce2bcb41c6bc484f62f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"deprecations:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added support for `microversion 2.68`_, which removes the ``--force`` option"},{"line_number":5,"context_line":"    from the ``nova evacuate``, ``nova live-migration``, ``nova host-evacuate``"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"9fdfeff1_6cf3db9f","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":12},"updated":"2019-02-08 22:19:01.000000000","message":"Hmm, is this right? We didn\u0027t deprecate the option on the CLI for the older microversions, but we don\u0027t allow it on the newer - maybe use \u0027upgrade\u0027 like in the server side change.","commit_id":"6f2ed474a269e00d7cb26ce302e50fd74bd9bcb9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fcd5e277c9079bf37d729248cdb957d97ef2f882","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"deprecations:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added support for `microversion 2.68`_, which removes the ``--force`` option"},{"line_number":5,"context_line":"    from the ``nova evacuate``, ``nova live-migration``, ``nova host-evacuate``"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"9fdfeff1_f4077bc8","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":12},"in_reply_to":"9fdfeff1_6cf3db9f","updated":"2019-02-11 18:14:09.000000000","message":"Done","commit_id":"6f2ed474a269e00d7cb26ce302e50fd74bd9bcb9"}]}
