)]}'
{"doc/api_samples/os-migrate-server/v2.15/live-migrate-server.json":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fd2c33612e993a16690b7e0906ca126a89451a72","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"os-migrateLive\": {"},{"line_number":3,"context_line":"    }"},{"line_number":4,"context_line":"}"}],"source_content_type":"application/json","patch_set":6,"id":"1a7b0d38_bb75f398","line":4,"range":{"start_line":1,"start_character":0,"end_line":4,"end_character":1},"updated":"2015-12-25 06:52:24.000000000","message":"As valid JSON format, here should be\n\n{\n    \"os-migrateLive\": {}\n}","commit_id":"024dead344da6161d339c0ccd3aa4e1a85d4e138"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"246912873cd0acdcca8c6f53e88ec885d3b2b1be","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"os-migrateLive\": {}"},{"line_number":3,"context_line":"}"}],"source_content_type":"application/json","patch_set":9,"id":"fa69d971_56247cc3","line":3,"range":{"start_line":1,"start_character":0,"end_line":3,"end_character":1},"updated":"2016-01-06 07:35:20.000000000","message":"Can you change this file name to live-migrate-server-req.json for clarifying request body?\nMost other request files are such names.","commit_id":"da6f2ed452efd56f8cf9472b38365f0db873efd0"}],"doc/api_samples/os-migrate-server/v2.23/live-migrate-server-req.json":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1133e0e2d3c71ed538922274153a24fb49553d68","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"os-migrateLive\": {}"},{"line_number":3,"context_line":"}"}],"source_content_type":"application/json","patch_set":16,"id":"bae84128_613d6dc3","line":2,"updated":"2016-02-24 12:50:44.000000000","message":"I think we said this is invalid now.","commit_id":"b15747595d6f9adfb97116fde01022be929b6fd0"}],"nova/api/openstack/compute/migrate_server.py":[{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"959aa67d61c3a586ef5040a64e11999002bf9120","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    @extensions.expected_errors((400, 404, 409))"},{"line_number":64,"context_line":"    @wsgi.action(\u0027os-migrateLive\u0027)"},{"line_number":65,"context_line":"    @validation.schema(migrate_server.migrate_live, \"2.1\", \"2.13\")"},{"line_number":66,"context_line":"    @validation.schema(migrate_server.migrate_live_v2_14, \"2.14\")"},{"line_number":67,"context_line":"    def _migrate_live(self, req, id, body):"},{"line_number":68,"context_line":"        \"\"\"Permit admins to (live) migrate a server to a new host.\"\"\""},{"line_number":69,"context_line":"        context \u003d req.environ[\"nova.context\"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_a3d4de46","line":66,"range":{"start_line":66,"start_character":63,"end_line":66,"end_character":65},"updated":"2015-12-18 08:29:10.000000000","message":"here should be 2.15","commit_id":"ea8edb4a843e9c34e9cddca9f6e96ae1ce9a0c6d"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fd2c33612e993a16690b7e0906ca126a89451a72","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        authorize(context, action\u003d\u0027migrate_live\u0027)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        if (req.api_version_request \u003c\u003d"},{"line_number":73,"context_line":"            api_version_request.APIVersionRequest(\"2.14\")):"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"            block_migration \u003d body[\"os-migrateLive\"][\"block_migration\"]"},{"line_number":76,"context_line":"            disk_over_commit \u003d body[\"os-migrateLive\"][\"disk_over_commit\"]"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a7b0d38_d0353ef7","line":73,"range":{"start_line":73,"start_character":13,"end_line":73,"end_character":59},"updated":"2015-12-25 06:52:24.000000000","message":"We can use is_supported() here like https://review.openstack.org/#/c/249116/","commit_id":"024dead344da6161d339c0ccd3aa4e1a85d4e138"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"d4b00901b0154680c6de90e7248458e429a0050f","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        authorize(context, action\u003d\u0027migrate_live\u0027)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        if (req.api_version_request \u003c\u003d"},{"line_number":73,"context_line":"            api_version_request.APIVersionRequest(\"2.14\")):"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"            block_migration \u003d body[\"os-migrateLive\"][\"block_migration\"]"},{"line_number":76,"context_line":"            disk_over_commit \u003d body[\"os-migrateLive\"][\"disk_over_commit\"]"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a7b0d38_7be9cb7f","line":73,"range":{"start_line":73,"start_character":13,"end_line":73,"end_character":59},"in_reply_to":"1a7b0d38_d0353ef7","updated":"2015-12-25 07:47:14.000000000","message":"Done","commit_id":"024dead344da6161d339c0ccd3aa4e1a85d4e138"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fd2c33612e993a16690b7e0906ca126a89451a72","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            migration_info \u003d self.compute_api.live_migrate("},{"line_number":92,"context_line":"                context, instance, block_migration, disk_over_commit, host)"},{"line_number":93,"context_line":"            if (req.api_version_request \u003e\u003d"},{"line_number":94,"context_line":"                api_version_request.APIVersionRequest(\"2.15\")):"},{"line_number":95,"context_line":"                return {\u0027migrate\u0027: migration_info}"},{"line_number":96,"context_line":"        except exception.InstanceUnknownCell as e:"},{"line_number":97,"context_line":"            raise exc.HTTPNotFound(explanation\u003de.format_message())"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a7b0d38_703c8ae2","line":94,"range":{"start_line":94,"start_character":16,"end_line":94,"end_character":63},"updated":"2015-12-25 06:52:24.000000000","message":"ditto","commit_id":"024dead344da6161d339c0ccd3aa4e1a85d4e138"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"d4b00901b0154680c6de90e7248458e429a0050f","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            migration_info \u003d self.compute_api.live_migrate("},{"line_number":92,"context_line":"                context, instance, block_migration, disk_over_commit, host)"},{"line_number":93,"context_line":"            if (req.api_version_request \u003e\u003d"},{"line_number":94,"context_line":"                api_version_request.APIVersionRequest(\"2.15\")):"},{"line_number":95,"context_line":"                return {\u0027migrate\u0027: migration_info}"},{"line_number":96,"context_line":"        except exception.InstanceUnknownCell as e:"},{"line_number":97,"context_line":"            raise exc.HTTPNotFound(explanation\u003de.format_message())"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a7b0d38_9becb790","line":94,"range":{"start_line":94,"start_character":16,"end_line":94,"end_character":63},"in_reply_to":"1a7b0d38_703c8ae2","updated":"2015-12-25 07:47:14.000000000","message":"Done","commit_id":"024dead344da6161d339c0ccd3aa4e1a85d4e138"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"af53222f322c88ca9299f4561e37724272f9b695","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                context, instance, block_migration, disk_over_commit, host)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"            if api_version_request.is_supported(req, min_version\u003d\u00272.15\u0027):"},{"line_number":93,"context_line":"                return {\u0027migrate\u0027: migration_info}"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        except exception.InstanceUnknownCell as e:"},{"line_number":96,"context_line":"            raise exc.HTTPNotFound(explanation\u003de.format_message())"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa69d971_d5821052","line":93,"range":{"start_line":93,"start_character":24,"end_line":93,"end_character":33},"updated":"2016-01-04 02:18:56.000000000","message":"According to https://review.openstack.org/#/c/245543/17/specs/mitaka/approved/making_live_migration_api_friendly.rst , the response body is without this top key \"migrate\".\n\nI am feeling the top key is nice to make APIs consistent, and most APIs contains the same top key as a request body. In this case, \"os-migrateLive\" seems nice as the top key.\n\nBut this is the first *action* API which contains a top key.\nSo we need to consider what is the best API design for all action APIs.","commit_id":"34886619496185decaa0aec7258df8b29b180f54"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"07af235fb59356598ba0340adbc7dbbf0cfb8526","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                context, instance, block_migration, disk_over_commit, host)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"            if api_version_request.is_supported(req, min_version\u003d\u00272.15\u0027):"},{"line_number":93,"context_line":"                return {\u0027migrate\u0027: migration_info}"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        except exception.InstanceUnknownCell as e:"},{"line_number":96,"context_line":"            raise exc.HTTPNotFound(explanation\u003de.format_message())"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa69d971_63b0078b","line":93,"range":{"start_line":93,"start_character":24,"end_line":93,"end_character":33},"in_reply_to":"fa69d971_36e84f10","updated":"2016-01-05 12:48:19.000000000","message":"Quick talk on the API meeting. I and Sean (very few people at meeting today..) prefer without top-key. As other actions without topkey also, just follow consistent style. Only \u0027remote-consoles\u0027 actions have top key \u0027console\u0027, and that looks like strange also. And those actions removed in microversion 2.6","commit_id":"34886619496185decaa0aec7258df8b29b180f54"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"2c5cbd05f7e5a8099bf04ddddd203f42329c8083","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                context, instance, block_migration, disk_over_commit, host)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"            if api_version_request.is_supported(req, min_version\u003d\u00272.15\u0027):"},{"line_number":93,"context_line":"                return {\u0027migrate\u0027: migration_info}"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        except exception.InstanceUnknownCell as e:"},{"line_number":96,"context_line":"            raise exc.HTTPNotFound(explanation\u003de.format_message())"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa69d971_36e84f10","line":93,"range":{"start_line":93,"start_character":24,"end_line":93,"end_character":33},"in_reply_to":"fa69d971_d5821052","updated":"2016-01-04 07:59:49.000000000","message":"hi Ken\u0027ichi,\nGood catch, this is my stupid mistake(inconsistent with bule print(don\u0027t have top)).\n\nWe need a discussion on whether a top key for a action return is needed or how the top will be looks like on API meeting.(talked with Alex already)\n\nthanks\nEli.","commit_id":"34886619496185decaa0aec7258df8b29b180f54"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"e84e7d03aff29f8ea5c567ba5d32d3b8debb6acb","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        if api_version_request.is_supported(req, min_version\u003d\u00272.20\u0027):"},{"line_number":73,"context_line":"            host \u003d body[\"os-migrateLive\"].get(\"host\")"},{"line_number":74,"context_line":"            block_migration \u003d body[\"os-migrateLive\"].get(\"block_migration\")"},{"line_number":75,"context_line":"            disk_over_commit \u003d None"},{"line_number":76,"context_line":"        else:"},{"line_number":77,"context_line":"            block_migration \u003d body[\"os-migrateLive\"][\"block_migration\"]"},{"line_number":78,"context_line":"            disk_over_commit \u003d body[\"os-migrateLive\"][\"disk_over_commit\"]"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a5ae5dd_5e6e4b30","line":75,"range":{"start_line":74,"start_character":12,"end_line":75,"end_character":35},"updated":"2016-02-04 09:20:35.000000000","message":"I think we still need \u0027bool_from_string\u0027 like line 83","commit_id":"6382688faf620e5dd7beb4c03feb33a3aaa4e70a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"e84e7d03aff29f8ea5c567ba5d32d3b8debb6acb","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            migration_info \u003d self.compute_api.live_migrate("},{"line_number":90,"context_line":"                context, instance, block_migration, disk_over_commit, host)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"            if api_version_request.is_supported(req, min_version\u003d\u00272.20\u0027):"},{"line_number":93,"context_line":"                return migration_info"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        except exception.InstanceUnknownCell as e:"},{"line_number":96,"context_line":"            raise exc.HTTPNotFound(explanation\u003de.format_message())"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a5ae5dd_3e4a6fad","line":93,"range":{"start_line":92,"start_character":12,"end_line":93,"end_character":37},"updated":"2016-02-04 09:20:35.000000000","message":"I think this can be out of the \u0027try\u0027 block","commit_id":"6382688faf620e5dd7beb4c03feb33a3aaa4e70a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0a4ffcd3235ea8f1173b10f605ffa5bbf9bb1a14","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        context \u003d req.environ[\"nova.context\"]"},{"line_number":70,"context_line":"        authorize(context, action\u003d\u0027migrate_live\u0027)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        if api_version_request.is_supported(req, min_version\u003d\u00272.23\u0027):"},{"line_number":73,"context_line":"            host \u003d body[\"os-migrateLive\"].get(\"host\")"},{"line_number":74,"context_line":"            block_migration \u003d body[\"os-migrateLive\"].get(\"block_migration\")"},{"line_number":75,"context_line":"            if block_migration is not None:"}],"source_content_type":"text/x-python","patch_set":16,"id":"bae84128_55794ac7","line":72,"updated":"2016-02-23 12:04:55.000000000","message":"If think we need to fail if nova-computes are not yet all upgraded, so we can support this operation.\n\nSee the get min_version helper here:\nhttps://github.com/openstack/nova/blob/master/nova/objects/service.py#L333","commit_id":"b15747595d6f9adfb97116fde01022be929b6fd0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"06d58662d9869735ac352f378792ded66c97218e","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        context \u003d req.environ[\"nova.context\"]"},{"line_number":70,"context_line":"        authorize(context, action\u003d\u0027migrate_live\u0027)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        if api_version_request.is_supported(req, min_version\u003d\u00272.23\u0027):"},{"line_number":73,"context_line":"            host \u003d body[\"os-migrateLive\"].get(\"host\")"},{"line_number":74,"context_line":"            block_migration \u003d body[\"os-migrateLive\"].get(\"block_migration\")"},{"line_number":75,"context_line":"            if block_migration is not None:"}],"source_content_type":"text/x-python","patch_set":16,"id":"bae84128_bb7a4786","line":72,"in_reply_to":"bae84128_55794ac7","updated":"2016-02-23 12:28:36.000000000","message":"So, my proposal is to add a reno file having an \"issues\" section provided explaining the limitations for that microversion\n\nSee http://docs.openstack.org/developer/reno/usage.html#creating-new-release-notes","commit_id":"b15747595d6f9adfb97116fde01022be929b6fd0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1133e0e2d3c71ed538922274153a24fb49553d68","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        context \u003d req.environ[\"nova.context\"]"},{"line_number":70,"context_line":"        authorize(context, action\u003d\u0027migrate_live\u0027)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        if api_version_request.is_supported(req, min_version\u003d\u00272.23\u0027):"},{"line_number":73,"context_line":"            host \u003d body[\"os-migrateLive\"].get(\"host\")"},{"line_number":74,"context_line":"            block_migration \u003d body[\"os-migrateLive\"].get(\"block_migration\")"},{"line_number":75,"context_line":"            if block_migration is not None:"}],"source_content_type":"text/x-python","patch_set":16,"id":"bae84128_21408506","line":72,"in_reply_to":"bae84128_bb7a4786","updated":"2016-02-24 12:50:44.000000000","message":"So I like the code being explicit in the API, maybe we just copy this logic here:\nhttps://review.openstack.org/#/c/254102/29/nova/compute/rpcapi.py@439\n\nIts a bad request, if we can\u0027t yet send the correct compute RPC version, i.e. the upgrade hasn\u0027t yet been completed.\n\nLeave the RPC thing as a double check thing on the conductor.","commit_id":"b15747595d6f9adfb97116fde01022be929b6fd0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1133e0e2d3c71ed538922274153a24fb49553d68","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        else:"},{"line_number":80,"context_line":"            block_migration \u003d body[\"os-migrateLive\"][\"block_migration\"]"},{"line_number":81,"context_line":"            disk_over_commit \u003d body[\"os-migrateLive\"][\"disk_over_commit\"]"},{"line_number":82,"context_line":"            host \u003d body[\"os-migrateLive\"][\"host\"]"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"            block_migration \u003d strutils.bool_from_string(block_migration,"},{"line_number":85,"context_line":"                                                        strict\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":16,"id":"bae84128_e12e9d41","line":82,"updated":"2016-02-24 12:50:44.000000000","message":"now they are all still required, I think this gets much simpler.\n\nLets try make the differences very minimal here, if possible.","commit_id":"b15747595d6f9adfb97116fde01022be929b6fd0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1133e0e2d3c71ed538922274153a24fb49553d68","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            disk_over_commit \u003d strutils.bool_from_string(disk_over_commit,"},{"line_number":87,"context_line":"                                                         strict\u003dTrue)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        instance \u003d common.get_instance(self.compute_api, context, id)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        try:"},{"line_number":92,"context_line":"            self.compute_api.live_migrate("}],"source_content_type":"text/x-python","patch_set":16,"id":"bae84128_e12dfdfe","line":89,"updated":"2016-02-24 12:50:44.000000000","message":"I am not sure why this has changed here, this seems unrelated to this patch.","commit_id":"b15747595d6f9adfb97116fde01022be929b6fd0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1133e0e2d3c71ed538922274153a24fb49553d68","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        try:"},{"line_number":92,"context_line":"            self.compute_api.live_migrate("},{"line_number":93,"context_line":"                context, instance, block_migration, disk_over_commit, host)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        except exception.InstanceUnknownCell as e:"},{"line_number":96,"context_line":"            raise exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":97,"context_line":"        except (exception.NoValidHost,"}],"source_content_type":"text/x-python","patch_set":16,"id":"bae84128_21340548","line":94,"updated":"2016-02-24 12:50:44.000000000","message":"as above.","commit_id":"b15747595d6f9adfb97116fde01022be929b6fd0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5ae67663ce4bdaa81761ebf27c8315d3d4f9b9e5","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                exception.InvalidSharedStorage,"},{"line_number":105,"context_line":"                exception.HypervisorUnavailable,"},{"line_number":106,"context_line":"                exception.MigrationPreCheckError,"},{"line_number":107,"context_line":"                exception.LiveMigrationWithOldNovaNotSafe) as ex:"},{"line_number":108,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dex.format_message())"},{"line_number":109,"context_line":"        except exception.InstanceIsLocked as e:"},{"line_number":110,"context_line":"            raise exc.HTTPConflict(explanation\u003de.format_message())"}],"source_content_type":"text/x-python","patch_set":17,"id":"9aed3d3a_690fe2e1","line":107,"range":{"start_line":107,"start_character":26,"end_line":107,"end_character":57},"updated":"2016-02-26 02:54:19.000000000","message":"Better to have unittest for this case.\n\nAnd the error message of LiveMigrationWithOldNovaNotSafe really doesn\u0027t match what happened, we\u0027d better provider another message.","commit_id":"b790f392adee5d2ce109ad835f3cdc210553bbab"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"7f126e4d1ecd5cfa6626c41009e37576aea3e12c","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                exception.InvalidSharedStorage,"},{"line_number":105,"context_line":"                exception.HypervisorUnavailable,"},{"line_number":106,"context_line":"                exception.MigrationPreCheckError,"},{"line_number":107,"context_line":"                exception.LiveMigrationWithOldNovaNotSafe) as ex:"},{"line_number":108,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dex.format_message())"},{"line_number":109,"context_line":"        except exception.InstanceIsLocked as e:"},{"line_number":110,"context_line":"            raise exc.HTTPConflict(explanation\u003de.format_message())"}],"source_content_type":"text/x-python","patch_set":17,"id":"9aed3d3a_e40319b7","line":107,"range":{"start_line":107,"start_character":26,"end_line":107,"end_character":57},"in_reply_to":"9aed3d3a_690fe2e1","updated":"2016-02-26 03:25:22.000000000","message":"okay, I will update the message.\n\nfor UT, I think it already has\n\nplease see https://review.openstack.org/#/c/259319/17/nova/tests/unit/api/openstack/compute/test_migrate_server.py@267","commit_id":"b790f392adee5d2ce109ad835f3cdc210553bbab"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"74f54a75f1a3f02d77f1003652177cb34547921d","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            instance \u003d common.get_instance(self.compute_api, context, id)"},{"line_number":92,"context_line":"            self.compute_api.live_migrate("},{"line_number":93,"context_line":"                context, instance, block_migration, disk_over_commit, host)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        except exception.InstanceUnknownCell as e:"},{"line_number":96,"context_line":"            raise exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":97,"context_line":"        except (exception.NoValidHost,"}],"source_content_type":"text/x-python","patch_set":19,"id":"9aed3d3a_10490432","line":94,"updated":"2016-02-26 10:53:12.000000000","message":"we should not have these unrelated changes really.","commit_id":"7e4dc3089dc88a43358b5d27ed61328f3128bf70"}],"nova/api/openstack/compute/schemas/migrate_server.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"62a95c8dad6e418a89f52d326590760b21241afb","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    \u0027additionalProperties\u0027: False,"},{"line_number":39,"context_line":"}"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"migrate_live_v2_20 \u003d {"},{"line_number":42,"context_line":"  \u0027type\u0027: \u0027object\u0027,"},{"line_number":43,"context_line":"  \u0027properties\u0027: {"},{"line_number":44,"context_line":"      \u0027os-migrateLive\u0027: {"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_cd1f2b5a","line":41,"updated":"2016-02-03 10:07:17.000000000","message":"We can avoid a lot of duplication if you simply deepcopy the migrate_live schema and delete disk_over_commit key aqnd the required key from it","commit_id":"612f1dd90cb37c24ba0fccd5f634d282efcbe885"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"90b2bce9db7e9d1432f860a52ae43a0cf79496da","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    \u0027additionalProperties\u0027: False,"},{"line_number":39,"context_line":"}"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"migrate_live_v2_20 \u003d {"},{"line_number":42,"context_line":"  \u0027type\u0027: \u0027object\u0027,"},{"line_number":43,"context_line":"  \u0027properties\u0027: {"},{"line_number":44,"context_line":"      \u0027os-migrateLive\u0027: {"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_5663a2dc","line":41,"in_reply_to":"5a5ae5dd_cd1f2b5a","updated":"2016-02-04 01:51:41.000000000","message":"Done","commit_id":"612f1dd90cb37c24ba0fccd5f634d282efcbe885"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"600a19d620cac560a60817ae4c713ee93d3a1db4","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"migrate_live_v2_20 \u003d copy.deepcopy(migrate_live)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"del migrate_live_v2_20[\u0027properties\u0027][\u0027os-migrateLive\u0027][\u0027properties\u0027]"},{"line_number":44,"context_line":"[\u0027disk_over_commit\u0027]"},{"line_number":45,"context_line":"del migrate_live_v2_20[\u0027properties\u0027][\u0027os-migrateLive\u0027][\u0027required\u0027]"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a5ae5dd_a58f31cb","line":44,"range":{"start_line":43,"start_character":0,"end_line":44,"end_character":20},"updated":"2016-02-04 07:45:22.000000000","message":"how will this be like?(pass pep8)","commit_id":"6382688faf620e5dd7beb4c03feb33a3aaa4e70a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1133e0e2d3c71ed538922274153a24fb49553d68","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"del migrate_live_v2_23[\u0027properties\u0027][\u0027os-migrateLive\u0027][\u0027properties\u0027]["},{"line_number":44,"context_line":"    \u0027disk_over_commit\u0027]"},{"line_number":45,"context_line":"del migrate_live_v2_23[\u0027properties\u0027][\u0027os-migrateLive\u0027][\u0027required\u0027]"}],"source_content_type":"text/x-python","patch_set":16,"id":"bae84128_217b657c","line":45,"updated":"2016-02-24 12:50:44.000000000","message":"I think we just agreed not to do this, any only remove disk_over_commit from required.\n\ninstead disk_over_commit is allowed to auto, true, false.","commit_id":"b15747595d6f9adfb97116fde01022be929b6fd0"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"7c0d2209d1555737c1953fa0b0405bf040482ee9","unresolved":false,"context_lines":[{"line_number":48,"context_line":"migrate_live_v2_25[\u0027properties\u0027][\u0027os-migrateLive\u0027][\u0027properties\u0027]["},{"line_number":49,"context_line":"    \u0027block_migration\u0027] \u003d block_migration"},{"line_number":50,"context_line":"migrate_live_v2_25[\u0027properties\u0027][\u0027os-migrateLive\u0027][\u0027required\u0027] \u003d ("},{"line_number":51,"context_line":"    [\u0027block_migration\u0027, \u0027host\u0027])"}],"source_content_type":"text/x-python","patch_set":21,"id":"9aed3d3a_ff7e7b68","line":51,"updated":"2016-02-29 15:49:15.000000000","message":"this looks right, but is kind of confusing. I\u0027d honestly rather have a full schema layed out here.","commit_id":"a19fe3dbf42cce74ec5ffc63870129a9a39ac584"}],"nova/api/openstack/rest_api_version_history.rst":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"af53222f322c88ca9299f4561e37724272f9b695","unresolved":false,"context_lines":[{"line_number":177,"context_line":"          \u0027block_migration\u0027: parameter_types.boolean,"},{"line_number":178,"context_line":"          \u0027host\u0027: host"},{"line_number":179,"context_line":"      }"},{"line_number":180,"context_line":"      \u0027required\u0027: [\u0027block_migration\u0027, \u0027host\u0027],"},{"line_number":181,"context_line":"      \u0027additionalProperties\u0027: False"},{"line_number":182,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa69d971_f5ecf42a","line":180,"range":{"start_line":180,"start_character":6,"end_line":180,"end_character":46},"updated":"2016-01-04 02:18:56.000000000","message":"This is different from current implementation due to the top key.","commit_id":"34886619496185decaa0aec7258df8b29b180f54"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1133e0e2d3c71ed538922274153a24fb49553d68","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"2.20"},{"line_number":178,"context_line":"----"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"  From this version of the API user can call detach and attach volumes for"},{"line_number":181,"context_line":"  instances which are in shelved and shelved_offloaded state."},{"line_number":182,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"bae84128_a1f015ca","line":179,"updated":"2016-02-24 12:50:44.000000000","message":"lets remove unrelated changes, like this one.","commit_id":"b15747595d6f9adfb97116fde01022be929b6fd0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5ae67663ce4bdaa81761ebf27c8315d3d4f9b9e5","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"2.20"},{"line_number":178,"context_line":"----"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"  From this version of the API user can call detach and attach volumes for"},{"line_number":181,"context_line":"  instances which are in shelved and shelved_offloaded state."},{"line_number":182,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"9aed3d3a_8e6a2c19","line":179,"updated":"2016-02-26 02:54:19.000000000","message":"unrelated change, we should remove","commit_id":"b790f392adee5d2ce109ad835f3cdc210553bbab"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"7f126e4d1ecd5cfa6626c41009e37576aea3e12c","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"2.20"},{"line_number":178,"context_line":"----"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"  From this version of the API user can call detach and attach volumes for"},{"line_number":181,"context_line":"  instances which are in shelved and shelved_offloaded state."},{"line_number":182,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"9aed3d3a_04527d13","line":179,"in_reply_to":"9aed3d3a_8e6a2c19","updated":"2016-02-26 03:25:22.000000000","message":"yeah, but it\u0027s a bad format","commit_id":"b790f392adee5d2ce109ad835f3cdc210553bbab"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"74f54a75f1a3f02d77f1003652177cb34547921d","unresolved":false,"context_lines":[{"line_number":443,"context_line":"            # this exception correctly. This can all be removed when we bump"},{"line_number":444,"context_line":"            # the major version of this API."},{"line_number":445,"context_line":"            if block_migration is None or disk_over_commit is None:"},{"line_number":446,"context_line":"                raise exception.LiveMigrationWithOldNovaNotSupported()"},{"line_number":447,"context_line":"            else:"},{"line_number":448,"context_line":"                version \u003d \u00274.0\u0027"},{"line_number":449,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"9aed3d3a_b0bad8df","line":446,"updated":"2016-02-26 10:53:12.000000000","message":"this should be in the previous change.","commit_id":"7e4dc3089dc88a43358b5d27ed61328f3128bf70"}],"nova/conductor/manager.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"74f54a75f1a3f02d77f1003652177cb34547921d","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                                   exception.HypervisorUnavailable,"},{"line_number":172,"context_line":"                                   exception.InstanceInvalidState,"},{"line_number":173,"context_line":"                                   exception.MigrationPreCheckError,"},{"line_number":174,"context_line":"                                   exception.LiveMigrationWithOldNovaNotSafe,"},{"line_number":175,"context_line":"                                   exception.UnsupportedPolicyException)"},{"line_number":176,"context_line":"    def migrate_server(self, context, instance, scheduler_hint, live, rebuild,"},{"line_number":177,"context_line":"            flavor, block_migration, disk_over_commit, reservations\u003dNone,"}],"source_content_type":"text/x-python","patch_set":19,"id":"9aed3d3a_f0b0e0df","side":"PARENT","line":174,"updated":"2016-02-26 10:53:12.000000000","message":"I assumed this exception is already used in the code, so does changing this break something.\n\nIf it doesn\u0027t break something, removing this exception should be a separate commit.","commit_id":"a546444e2e9fa54a86565adbbc324bdba85e0562"}],"nova/exception.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"771e23547f73b5dbc55c468b2b7b987990ff7495","unresolved":false,"context_lines":[{"line_number":1851,"context_line":"                \"drive data is shared across compute nodes.\")"},{"line_number":1852,"context_line":""},{"line_number":1853,"context_line":""},{"line_number":1854,"context_line":"class LiveMigrationWithOldNovaNotSafe(NovaException):"},{"line_number":1855,"context_line":"    msg_fmt \u003d _(\"Host %(server)s is running an old version of Nova, \""},{"line_number":1856,"context_line":"                \"live migrations involving that version won\u0027t work. Upgrade \""},{"line_number":1857,"context_line":"                \"all Nova compute services in the cluster and try again.\")"}],"source_content_type":"text/x-python","patch_set":18,"id":"9aed3d3a_cac7f743","line":1854,"range":{"start_line":1854,"start_character":6,"end_line":1854,"end_character":37},"updated":"2016-02-26 07:17:17.000000000","message":"Emm...the name isn\u0027t match the message.","commit_id":"340a75b4c13186ddac367224d64cddfaadedf036"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0e9649270a8172113f0c6478180a06f7775f644f","unresolved":false,"context_lines":[{"line_number":1851,"context_line":"                \"drive data is shared across compute nodes.\")"},{"line_number":1852,"context_line":""},{"line_number":1853,"context_line":""},{"line_number":1854,"context_line":"class LiveMigrationWithOldNovaNotSupported(NovaException):"},{"line_number":1855,"context_line":"    msg_fmt \u003d _(\"Live migration with API version v2.23 is not supported \""},{"line_number":1856,"context_line":"                \"during upgrade, please try again after upgrade all \""},{"line_number":1857,"context_line":"                \"compute node or use older API version lower than v2.23.\")"}],"source_content_type":"text/x-python","patch_set":19,"id":"9aed3d3a_501b8c72","line":1854,"updated":"2016-02-26 10:46:16.000000000","message":"Hmm, so this should be in the previous patchset if we want to change it.","commit_id":"7e4dc3089dc88a43358b5d27ed61328f3128bf70"}],"nova/tests/functional/api_sample_tests/api_samples/os-migrate-server/v2.15/live-migrate-server.json.tpl":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fd2c33612e993a16690b7e0906ca126a89451a72","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"os-migrateLive\": {"},{"line_number":3,"context_line":"    }"},{"line_number":4,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":6,"id":"1a7b0d38_3b6a63b4","line":4,"range":{"start_line":1,"start_character":0,"end_line":4,"end_character":1},"updated":"2015-12-25 06:52:24.000000000","message":"ditto","commit_id":"024dead344da6161d339c0ccd3aa4e1a85d4e138"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"d4b00901b0154680c6de90e7248458e429a0050f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"os-migrateLive\": {"},{"line_number":3,"context_line":"    }"},{"line_number":4,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":6,"id":"1a7b0d38_5badef2f","line":4,"range":{"start_line":1,"start_character":0,"end_line":4,"end_character":1},"in_reply_to":"1a7b0d38_3b6a63b4","updated":"2015-12-25 07:47:14.000000000","message":"Done","commit_id":"024dead344da6161d339c0ccd3aa4e1a85d4e138"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"246912873cd0acdcca8c6f53e88ec885d3b2b1be","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"os-migrateLive\": {}"},{"line_number":3,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":9,"id":"fa69d971_b61b7880","line":1,"updated":"2016-01-06 07:35:20.000000000","message":"ditto","commit_id":"da6f2ed452efd56f8cf9472b38365f0db873efd0"}],"nova/tests/functional/api_sample_tests/api_samples/os-migrate-server/v2.23/live-migrate-server.json.tpl":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5ae67663ce4bdaa81761ebf27c8315d3d4f9b9e5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"os-migrateLive\": {"},{"line_number":3,"context_line":"        \"host\": \"%(hostname)s\","},{"line_number":4,"context_line":"        \"block_migration\": false"},{"line_number":5,"context_line":"    }"},{"line_number":6,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":17,"id":"9aed3d3a_aedbb0ec","line":4,"range":{"start_line":4,"start_character":27,"end_line":4,"end_character":32},"updated":"2016-02-26 02:54:19.000000000","message":"I prefer we show \u0027auto\u0027 at here.","commit_id":"b790f392adee5d2ce109ad835f3cdc210553bbab"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"7f126e4d1ecd5cfa6626c41009e37576aea3e12c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"os-migrateLive\": {"},{"line_number":3,"context_line":"        \"host\": \"%(hostname)s\","},{"line_number":4,"context_line":"        \"block_migration\": false"},{"line_number":5,"context_line":"    }"},{"line_number":6,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":17,"id":"9aed3d3a_e44b1958","line":4,"range":{"start_line":4,"start_character":27,"end_line":4,"end_character":32},"in_reply_to":"9aed3d3a_aedbb0ec","updated":"2016-02-26 03:25:22.000000000","message":"Done","commit_id":"b790f392adee5d2ce109ad835f3cdc210553bbab"}],"nova/tests/functional/api_sample_tests/test_migrate_server.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"246912873cd0acdcca8c6f53e88ec885d3b2b1be","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        self.stubs.Set(db, \"service_get_by_compute_host\", fake_get_compute)"},{"line_number":117,"context_line":"        self.microversion \u003d \u00272.15\u0027"},{"line_number":118,"context_line":"        response \u003d self._do_post(\u0027servers/%s/action\u0027 % self.uuid,"},{"line_number":119,"context_line":"                                 \u0027live-migrate-server\u0027, {}, api_version\u003d\u00272.15\u0027)"},{"line_number":120,"context_line":"        subs \u003d self._get_regexes()"},{"line_number":121,"context_line":"        subs[\u0027host_name\u0027] \u003d \u0027host\u0027"},{"line_number":122,"context_line":"        self._verify_response(\u0027live-migrate-server-resp\u0027, subs, response, 202)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_b129428c","line":119,"range":{"start_line":119,"start_character":34,"end_line":119,"end_character":53},"updated":"2016-01-06 07:35:20.000000000","message":"need to be add \"-req\" for changing the file names.","commit_id":"da6f2ed452efd56f8cf9472b38365f0db873efd0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"e84e7d03aff29f8ea5c567ba5d32d3b8debb6acb","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"class MigrateServerSamplesJsonTestV220(MigrateServerSamplesJsonTest):"},{"line_number":85,"context_line":"    extension_name \u003d \"os-migrate-server\""},{"line_number":86,"context_line":"    request_api_version \u003d \u00272.20\u0027"},{"line_number":87,"context_line":"    scenarios \u003d [(\u0027v2_20\u0027, {\u0027api_major_version\u0027: \u0027v2.1\u0027})]"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def test_post_migrate(self):"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a5ae5dd_beebbf77","line":86,"range":{"start_line":86,"start_character":4,"end_line":86,"end_character":23},"updated":"2016-02-04 09:20:35.000000000","message":"there should be \u0027microvesion\u0027, you can reference this https://github.com/openstack/nova/blob/master/nova/tests/functional/api_sample_tests/test_keypairs.py#L172","commit_id":"6382688faf620e5dd7beb4c03feb33a3aaa4e70a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1133e0e2d3c71ed538922274153a24fb49553d68","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    scenarios \u003d [(\u0027v2_23\u0027, {\u0027api_major_version\u0027: \u0027v2.1\u0027})]"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def test_post_migrate(self):"},{"line_number":90,"context_line":"        pass"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def test_post_live_migrate_server(self):"},{"line_number":93,"context_line":"        # Get api samples to server live migrate request."}],"source_content_type":"text/x-python","patch_set":16,"id":"bae84128_617f2d15","line":90,"updated":"2016-02-24 12:50:44.000000000","message":"why have you done this here, can\u0027t you just keep the original test?","commit_id":"b15747595d6f9adfb97116fde01022be929b6fd0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1133e0e2d3c71ed538922274153a24fb49553d68","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            self.assertEqual(self.uuid, instance[\"uuid\"])"},{"line_number":97,"context_line":"            return {\u0027host\u0027: \u0027host\u0027, \u0027block_migration\u0027: False}"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        self.stub_out("},{"line_number":100,"context_line":"            \u0027nova.conductor.manager.ComputeTaskManager._live_migrate\u0027,"},{"line_number":101,"context_line":"             fake_live_migrate)"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"bae84128_61cd6d65","line":99,"updated":"2016-02-24 12:50:44.000000000","message":"Nit: I would prefer we moved to use mock directly here.","commit_id":"b15747595d6f9adfb97116fde01022be929b6fd0"}],"nova/tests/functional/api_samples_test_base.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bbe67844988cfb0938a238eb3c7af0a1465201df","unresolved":false,"context_lines":[{"line_number":278,"context_line":"                sample_data \u003d sample.read()"},{"line_number":279,"context_line":"                if update_links:"},{"line_number":280,"context_line":"                    sample_data \u003d self._update_links(sample_data)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        try:"},{"line_number":283,"context_line":"            template_data \u003d objectify(template_data)"},{"line_number":284,"context_line":"            response_data \u003d objectify(response_data)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a7b0d38_12a20aaf","side":"PARENT","line":281,"updated":"2015-12-24 03:02:02.000000000","message":"Deleting this line is an unnecessary change.","commit_id":"1fb241a157768cccca2cd6b3f5e67298670ce129"}],"nova/tests/unit/api/openstack/compute/test_migrate_server.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"c8f6e5735c31966a5e10796672c4a6be47475f27","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    _api_version \u003d \u00272\u0027"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"class MigrateServerTestsV215(admin_only_action_common.CommonTests):"},{"line_number":290,"context_line":"    migrate_server \u003d migrate_server_v21"},{"line_number":291,"context_line":"    controller_name \u003d \u0027MigrateServerController\u0027"},{"line_number":292,"context_line":"    validation_error \u003d exception.ValidationError"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa69d971_1375cff8","line":289,"range":{"start_line":289,"start_character":29,"end_line":289,"end_character":53},"updated":"2016-01-05 17:26:41.000000000","message":"just curious, why not inherit from v21?","commit_id":"34886619496185decaa0aec7258df8b29b180f54"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1133e0e2d3c71ed538922274153a24fb49553d68","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        self.stubs.Set(self.migrate_server, self.controller_name,"},{"line_number":304,"context_line":"                       _fake_controller)"},{"line_number":305,"context_line":"        self.mox.StubOutWithMock(self.compute_api, \u0027get\u0027)"},{"line_number":306,"context_line":"        self.req.api_version_request \u003d api_version_request.APIVersionRequest("},{"line_number":307,"context_line":"            \u00272.23\u0027)"},{"line_number":308,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"bae84128_019bc166","line":305,"updated":"2016-02-24 12:50:44.000000000","message":"No more mox tests are allowed, please move this all to using mock.","commit_id":"b15747595d6f9adfb97116fde01022be929b6fd0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5ae67663ce4bdaa81761ebf27c8315d3d4f9b9e5","unresolved":false,"context_lines":[{"line_number":307,"context_line":"    def test_migrate_live_with_invalid_disk_over_commit(self):"},{"line_number":308,"context_line":"        pass"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    def test_live_migrate_block_migration_auto(self):"},{"line_number":311,"context_line":"        method_translations \u003d {\u0027_migrate_live\u0027: \u0027live_migrate\u0027}"},{"line_number":312,"context_line":"        body_map \u003d {\u0027_migrate_live\u0027: {\u0027os-migrateLive\u0027: {\u0027host\u0027: \u0027hostname\u0027,"},{"line_number":313,"context_line":"                                      \u0027block_migration\u0027: \u0027auto\u0027}}}"}],"source_content_type":"text/x-python","patch_set":17,"id":"9aed3d3a_09873662","line":310,"range":{"start_line":310,"start_character":13,"end_line":310,"end_character":25},"updated":"2016-02-26 02:54:19.000000000","message":"super nit, s/live_migrate/migrate_live/","commit_id":"b790f392adee5d2ce109ad835f3cdc210553bbab"}],"releasenotes/notes/bp-making-live-migration-api-friendly-3b547f4e0958ee05.yaml":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"6e4c30bfc2142b1683ee3158c7586cbaa4f8dfd4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - Make block_migration and host optional, remove disk_over_commit flag,"},{"line_number":4,"context_line":"    return host and block_migration information for os-migrateLive action."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"5a5ae5dd_0218bb83","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":7},"updated":"2016-02-03 06:54:10.000000000","message":"maybe s/upgrade/features/","commit_id":"2831230129a7e3decf5af3a2d129184589a38632"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"e8234fa1a3f32946f8723b9eec8e1fdc7e5c1a15","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - Make block_migration and host optional, remove disk_over_commit flag,"},{"line_number":4,"context_line":"    return host and block_migration information for os-migrateLive action."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"5a5ae5dd_535526c4","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":7},"in_reply_to":"5a5ae5dd_0218bb83","updated":"2016-02-03 08:27:02.000000000","message":"I am not sure about it is a new feature or just a upgrade.","commit_id":"2831230129a7e3decf5af3a2d129184589a38632"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"881b3bac919bbbf78f640e5816cf32dd9d4f3765","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - Make block_migration and host optional, remove disk_over_commit flag,"},{"line_number":4,"context_line":"    return host and block_migration information for os-migrateLive action."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"5a5ae5dd_e248ff89","line":4,"range":{"start_line":3,"start_character":4,"end_line":4,"end_character":73},"updated":"2016-02-03 06:53:12.000000000","message":"Can you add microversion number(v2.20) in this note ?\nunless doing it, readers is confused.","commit_id":"2831230129a7e3decf5af3a2d129184589a38632"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"e8234fa1a3f32946f8723b9eec8e1fdc7e5c1a15","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - Make block_migration and host optional, remove disk_over_commit flag,"},{"line_number":4,"context_line":"    return host and block_migration information for os-migrateLive action."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"5a5ae5dd_730062ab","line":4,"range":{"start_line":3,"start_character":4,"end_line":4,"end_character":73},"in_reply_to":"5a5ae5dd_e248ff89","updated":"2016-02-03 08:27:02.000000000","message":"Done","commit_id":"2831230129a7e3decf5af3a2d129184589a38632"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5ae67663ce4bdaa81761ebf27c8315d3d4f9b9e5","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Make block_migration to support \u0027auto\u0027 value, which means nova will decide"},{"line_number":4,"context_line":"    the value of block_migration during live-migration, and remove"},{"line_number":5,"context_line":"    disk_over_commit flag for os-migrateLive action in microversion 2.23."},{"line_number":6,"context_line":"issues:"},{"line_number":7,"context_line":"  - We can not use microversion 2.23 to do live-migration during upgrade,"},{"line_number":8,"context_line":"    nova-api will raise bad request if there is still old compute node in the"},{"line_number":9,"context_line":"    cluster."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"9aed3d3a_ee581859","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":6},"updated":"2016-02-26 02:54:19.000000000","message":"I\u0027m a little not sure, but thinking of why this isn\u0027t upgrade reno","commit_id":"b790f392adee5d2ce109ad835f3cdc210553bbab"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"7f126e4d1ecd5cfa6626c41009e37576aea3e12c","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Make block_migration to support \u0027auto\u0027 value, which means nova will decide"},{"line_number":4,"context_line":"    the value of block_migration during live-migration, and remove"},{"line_number":5,"context_line":"    disk_over_commit flag for os-migrateLive action in microversion 2.23."},{"line_number":6,"context_line":"issues:"},{"line_number":7,"context_line":"  - We can not use microversion 2.23 to do live-migration during upgrade,"},{"line_number":8,"context_line":"    nova-api will raise bad request if there is still old compute node in the"},{"line_number":9,"context_line":"    cluster."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"9aed3d3a_4473e5b1","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":6},"in_reply_to":"9aed3d3a_ee581859","updated":"2016-02-26 03:25:22.000000000","message":"hi Alex, me too, I think this should be an upgrade concern.","commit_id":"b790f392adee5d2ce109ad835f3cdc210553bbab"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"74f54a75f1a3f02d77f1003652177cb34547921d","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Make block_migration to support \u0027auto\u0027 value, which means nova will decide"},{"line_number":4,"context_line":"    the value of block_migration during live-migration, and remove"},{"line_number":5,"context_line":"    disk_over_commit flag for os-migrateLive action in microversion 2.23."},{"line_number":6,"context_line":"issues:"},{"line_number":7,"context_line":"  - We can not use microversion 2.23 to do live-migration during upgrade,"},{"line_number":8,"context_line":"    nova-api will raise bad request if there is still old compute node in the"},{"line_number":9,"context_line":"    cluster."}],"source_content_type":"text/x-yaml","patch_set":19,"id":"9aed3d3a_50742c34","line":6,"updated":"2016-02-26 10:53:12.000000000","message":"Maybe this is should be an upgrade note?","commit_id":"7e4dc3089dc88a43358b5d27ed61328f3128bf70"}]}
