)]}'
{"novaclient/tests/unit/fixture_data/server_migrations.py":[{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"bfcd1f866f0a16bd68f94410b3e0306ac8606e0d","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        get_migrations_v2_46 \u003d copy.deepcopy(get_migrations)"},{"line_number":56,"context_line":"        get_migrations_v2_46[\u0027migrations\u0027][0].update("},{"line_number":57,"context_line":"            {\u0027migration_type\u0027: \u0027migration\u0027})"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        url \u003d self.url(\u00275678\u0027, \u0027migrations\u0027)"},{"line_number":60,"context_line":"        self.requests_mock.get(url,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_04131e0f","line":57,"range":{"start_line":57,"start_character":14,"end_line":57,"end_character":28},"updated":"2017-05-19 23:13:02.000000000","message":"Nova returns \u0027type\u0027 key in the response body.","commit_id":"9003fd4f51c47023def52bbe48c89a8f9109f576"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"92925b460f12c4632329df3c1879dbd187ec50b6","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        get_migrations_v2_46 \u003d copy.deepcopy(get_migrations)"},{"line_number":56,"context_line":"        get_migrations_v2_46[\u0027migrations\u0027][0].update("},{"line_number":57,"context_line":"            {\u0027migration_type\u0027: \u0027migration\u0027})"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        url \u003d self.url(\u00275678\u0027, \u0027migrations\u0027)"},{"line_number":60,"context_line":"        self.requests_mock.get(url,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_fb7c39ec","line":57,"range":{"start_line":57,"start_character":14,"end_line":57,"end_character":28},"in_reply_to":"ff0f0b1f_04131e0f","updated":"2017-05-22 02:10:02.000000000","message":"Done","commit_id":"9003fd4f51c47023def52bbe48c89a8f9109f576"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"bfcd1f866f0a16bd68f94410b3e0306ac8606e0d","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        get_migration_v2_46 \u003d copy.deepcopy(get_migration)"},{"line_number":89,"context_line":"        get_migration_v2_46[\u0027migration\u0027].update("},{"line_number":90,"context_line":"            {\u0027migration_type\u0027: \u0027migration\u0027})"},{"line_number":91,"context_line":"        url \u003d self.url(\u00275678\u0027, \u0027migrations\u0027, \u00271\u0027)"},{"line_number":92,"context_line":"        self.requests_mock.get(url,"},{"line_number":93,"context_line":"                               json\u003dget_migration_v2_46,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_a40352b8","line":90,"range":{"start_line":90,"start_character":14,"end_line":90,"end_character":28},"updated":"2017-05-19 23:13:02.000000000","message":"Nova returns \u0027type\u0027 key in the response body.","commit_id":"9003fd4f51c47023def52bbe48c89a8f9109f576"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"92925b460f12c4632329df3c1879dbd187ec50b6","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        get_migration_v2_46 \u003d copy.deepcopy(get_migration)"},{"line_number":89,"context_line":"        get_migration_v2_46[\u0027migration\u0027].update("},{"line_number":90,"context_line":"            {\u0027migration_type\u0027: \u0027migration\u0027})"},{"line_number":91,"context_line":"        url \u003d self.url(\u00275678\u0027, \u0027migrations\u0027, \u00271\u0027)"},{"line_number":92,"context_line":"        self.requests_mock.get(url,"},{"line_number":93,"context_line":"                               json\u003dget_migration_v2_46,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_db83b5cb","line":90,"range":{"start_line":90,"start_character":14,"end_line":90,"end_character":28},"in_reply_to":"ff0f0b1f_a40352b8","updated":"2017-05-22 02:10:02.000000000","message":"Done","commit_id":"9003fd4f51c47023def52bbe48c89a8f9109f576"}],"novaclient/tests/unit/v2/test_server_migrations.py":[{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"bfcd1f866f0a16bd68f94410b3e0306ac8606e0d","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        \"dest_host\": \"1.2.3.4\","},{"line_number":101,"context_line":"        \"dest_node\": \"node2\","},{"line_number":102,"context_line":"        \"id\": 1,"},{"line_number":103,"context_line":"        \"migration_type\": \"migration\","},{"line_number":104,"context_line":"        \"server_uuid\": \"4cfba335-03d8-49b2-8c52-e69043d1e8fe\","},{"line_number":105,"context_line":"        \"source_compute\": \"compute1\","},{"line_number":106,"context_line":"        \"source_node\": \"node1\","}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_0488be1c","line":103,"range":{"start_line":103,"start_character":9,"end_line":103,"end_character":23},"updated":"2017-05-19 23:13:02.000000000","message":"s/migration_type/type","commit_id":"9003fd4f51c47023def52bbe48c89a8f9109f576"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"92925b460f12c4632329df3c1879dbd187ec50b6","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        \"dest_host\": \"1.2.3.4\","},{"line_number":101,"context_line":"        \"dest_node\": \"node2\","},{"line_number":102,"context_line":"        \"id\": 1,"},{"line_number":103,"context_line":"        \"migration_type\": \"migration\","},{"line_number":104,"context_line":"        \"server_uuid\": \"4cfba335-03d8-49b2-8c52-e69043d1e8fe\","},{"line_number":105,"context_line":"        \"source_compute\": \"compute1\","},{"line_number":106,"context_line":"        \"source_node\": \"node1\","}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_5be565a7","line":103,"range":{"start_line":103,"start_character":9,"end_line":103,"end_character":23},"in_reply_to":"ff0f0b1f_0488be1c","updated":"2017-05-22 02:10:02.000000000","message":"Done","commit_id":"9003fd4f51c47023def52bbe48c89a8f9109f576"}],"novaclient/tests/unit/v2/test_shell.py":[{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"d173ae2fbb81c8d1ef6e9deed6bbbc1603431115","unresolved":false,"context_lines":[{"line_number":2272,"context_line":"                         api_version\u003d\u00272.23\u0027)"},{"line_number":2273,"context_line":"        self.assert_called(\u0027GET\u0027, \u0027/servers/1234/migrations\u0027)"},{"line_number":2274,"context_line":""},{"line_number":2275,"context_line":"    def test_list_migrations_v2_59(self):"},{"line_number":2276,"context_line":"        self.run_command("},{"line_number":2277,"context_line":"            \u0027server-migration-list --type migration sample-server\u0027,"},{"line_number":2278,"context_line":"            api_version\u003d\u00272.59\u0027)"}],"source_content_type":"text/x-python","patch_set":47,"id":"bf8cb3f7_9a122458","line":2275,"range":{"start_line":2275,"start_character":0,"end_line":2275,"end_character":41},"updated":"2017-12-23 09:56:44.000000000","message":"It would be good to have a test where you try to use the new CLI options with microversion 2.58 to show they aren\u0027t allowed. like:\nhttps://review.openstack.org/#/c/430839/47/novaclient/tests/unit/v2/test_shell.py@970","commit_id":"991f269cce2014519a998b2739f61424dfc8ac3a"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"ca162caf84daf2c3daf4fb9916df6afa48db3912","unresolved":false,"context_lines":[{"line_number":2272,"context_line":"                         api_version\u003d\u00272.23\u0027)"},{"line_number":2273,"context_line":"        self.assert_called(\u0027GET\u0027, \u0027/servers/1234/migrations\u0027)"},{"line_number":2274,"context_line":""},{"line_number":2275,"context_line":"    def test_list_migrations_v2_59(self):"},{"line_number":2276,"context_line":"        self.run_command("},{"line_number":2277,"context_line":"            \u0027server-migration-list --type migration sample-server\u0027,"},{"line_number":2278,"context_line":"            api_version\u003d\u00272.59\u0027)"}],"source_content_type":"text/x-python","patch_set":47,"id":"bf8cb3f7_22464751","line":2275,"range":{"start_line":2275,"start_character":0,"end_line":2275,"end_character":41},"in_reply_to":"bf8cb3f7_9a122458","updated":"2017-12-25 06:13:47.000000000","message":"Done","commit_id":"991f269cce2014519a998b2739f61424dfc8ac3a"}],"novaclient/v2/shell.py":[{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"bfcd1f866f0a16bd68f94410b3e0306ac8606e0d","unresolved":false,"context_lines":[{"line_number":3315,"context_line":"    dest\u003d\u0027migration_type\u0027,"},{"line_number":3316,"context_line":"    default\u003dNone,"},{"line_number":3317,"context_line":"    help\u003d_(\u0027Migration Type.\u0027))"},{"line_number":3318,"context_line":"@api_versions.wraps(\"2.46\")"},{"line_number":3319,"context_line":"@utils.arg(\u0027server\u0027, metavar\u003d\u0027\u003cserver\u003e\u0027, help\u003d_(\u0027Name or ID of server.\u0027))"},{"line_number":3320,"context_line":"def do_server_migration_list(cs, args):"},{"line_number":3321,"context_line":"    \"\"\"Get the migrations list of specified server.\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_e7c6ec9a","line":3318,"range":{"start_line":3318,"start_character":0,"end_line":3318,"end_character":27},"updated":"2017-05-19 23:13:02.000000000","message":"This decorator should be called first above line #3312. Though, It is not mandatory but that\u0027s general practice I see throughout the code.","commit_id":"9003fd4f51c47023def52bbe48c89a8f9109f576"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"92925b460f12c4632329df3c1879dbd187ec50b6","unresolved":false,"context_lines":[{"line_number":3315,"context_line":"    dest\u003d\u0027migration_type\u0027,"},{"line_number":3316,"context_line":"    default\u003dNone,"},{"line_number":3317,"context_line":"    help\u003d_(\u0027Migration Type.\u0027))"},{"line_number":3318,"context_line":"@api_versions.wraps(\"2.46\")"},{"line_number":3319,"context_line":"@utils.arg(\u0027server\u0027, metavar\u003d\u0027\u003cserver\u003e\u0027, help\u003d_(\u0027Name or ID of server.\u0027))"},{"line_number":3320,"context_line":"def do_server_migration_list(cs, args):"},{"line_number":3321,"context_line":"    \"\"\"Get the migrations list of specified server.\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_1bf12d6c","line":3318,"range":{"start_line":3318,"start_character":0,"end_line":3318,"end_character":27},"in_reply_to":"ff0f0b1f_e7c6ec9a","updated":"2017-05-22 02:10:02.000000000","message":"Done","commit_id":"9003fd4f51c47023def52bbe48c89a8f9109f576"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"bfcd1f866f0a16bd68f94410b3e0306ac8606e0d","unresolved":false,"context_lines":[{"line_number":3317,"context_line":"    help\u003d_(\u0027Migration Type.\u0027))"},{"line_number":3318,"context_line":"@api_versions.wraps(\"2.46\")"},{"line_number":3319,"context_line":"@utils.arg(\u0027server\u0027, metavar\u003d\u0027\u003cserver\u003e\u0027, help\u003d_(\u0027Name or ID of server.\u0027))"},{"line_number":3320,"context_line":"def do_server_migration_list(cs, args):"},{"line_number":3321,"context_line":"    \"\"\"Get the migrations list of specified server.\"\"\""},{"line_number":3322,"context_line":"    server \u003d _find_server(cs, args.server)"},{"line_number":3323,"context_line":"    migrations \u003d cs.server_migrations.list(server, args.migration_type)"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_67065cd1","line":3320,"range":{"start_line":3320,"start_character":4,"end_line":3320,"end_character":28},"updated":"2017-05-19 23:13:02.000000000","message":"The code inside this method is more or less same as above method #3288. You can add a new private method to reduce the code footprint and call this new method from both the places.\n\nFor example:\n\ndef _display_migrations(migrations, fields):\n    format_name \u003d [\"Total Memory Bytes\", \"Processed Memory Bytes\",\n                   \"Remaining Memory Bytes\", \"Total Disk Bytes\",\n                   \"Processed Disk Bytes\", \"Remaining Disk Bytes\"]\n\n    format_key \u003d [\"memory_total_bytes\", \"memory_processed_bytes\",\n                  \"memory_remaining_bytes\", \"disk_total_bytes\",\n                  \"disk_processed_bytes\", \"disk_remaining_bytes\"]\n\n    formatters \u003d map(lambda field: utils.make_field_formatter(field)[1],\n                     format_key)\n    formatters \u003d dict(zip(format_name, formatters))\n\n    utils.print_list(migrations, fields + format_name, formatters)\n\n\ndef do_server_migration_list(cs, args):\n    server \u003d _find_server(cs, args.server)\n    migrations \u003d cs.server_migrations.list(server, args.migration_type)\n\n    fields \u003d [\u0027Id\u0027, \u0027Migration Type\u0027, \u0027Source Node\u0027, \u0027Dest Node\u0027,\n              \u0027Source Compute\u0027, \u0027Dest Compute\u0027, \u0027Dest Host\u0027, \u0027Status\u0027,\n              \u0027Server UUID\u0027, \u0027Created At\u0027, \u0027Updated At\u0027]\n\n    _display_migrations(migrations, fields):","commit_id":"9003fd4f51c47023def52bbe48c89a8f9109f576"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"92925b460f12c4632329df3c1879dbd187ec50b6","unresolved":false,"context_lines":[{"line_number":3317,"context_line":"    help\u003d_(\u0027Migration Type.\u0027))"},{"line_number":3318,"context_line":"@api_versions.wraps(\"2.46\")"},{"line_number":3319,"context_line":"@utils.arg(\u0027server\u0027, metavar\u003d\u0027\u003cserver\u003e\u0027, help\u003d_(\u0027Name or ID of server.\u0027))"},{"line_number":3320,"context_line":"def do_server_migration_list(cs, args):"},{"line_number":3321,"context_line":"    \"\"\"Get the migrations list of specified server.\"\"\""},{"line_number":3322,"context_line":"    server \u003d _find_server(cs, args.server)"},{"line_number":3323,"context_line":"    migrations \u003d cs.server_migrations.list(server, args.migration_type)"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_7b2029b1","line":3320,"range":{"start_line":3320,"start_character":4,"end_line":3320,"end_character":28},"in_reply_to":"ff0f0b1f_67065cd1","updated":"2017-05-22 02:10:02.000000000","message":"Done","commit_id":"9003fd4f51c47023def52bbe48c89a8f9109f576"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"d173ae2fbb81c8d1ef6e9deed6bbbc1603431115","unresolved":false,"context_lines":[{"line_number":3502,"context_line":""},{"line_number":3503,"context_line":"    if cs.api_version \u003e\u003d api_versions.APIVersion(\u00272.59\u0027):"},{"line_number":3504,"context_line":"        migrations \u003d cs.server_migrations.list(server, args.migration_type)"},{"line_number":3505,"context_line":"        fields \u003d [\u0027Id\u0027, \u0027Type\u0027, \u0027Source Node\u0027, \u0027Dest Node\u0027, \u0027Source Compute\u0027,"},{"line_number":3506,"context_line":"                  \u0027Dest Compute\u0027, \u0027Dest Host\u0027, \u0027Server UUID\u0027, \u0027Created At\u0027,"},{"line_number":3507,"context_line":"                  \u0027Updated At\u0027]"},{"line_number":3508,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":47,"id":"bf8cb3f7_faa9f0de","line":3505,"range":{"start_line":3505,"start_character":25,"end_line":3505,"end_character":29},"updated":"2017-12-23 09:56:44.000000000","message":"We change the \u0027Status\u0027 to \u0027Type\u0027 in results with 2.59 API, I think it would be good to add some description to show this change in the release note.","commit_id":"991f269cce2014519a998b2739f61424dfc8ac3a"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"ca162caf84daf2c3daf4fb9916df6afa48db3912","unresolved":false,"context_lines":[{"line_number":3502,"context_line":""},{"line_number":3503,"context_line":"    if cs.api_version \u003e\u003d api_versions.APIVersion(\u00272.59\u0027):"},{"line_number":3504,"context_line":"        migrations \u003d cs.server_migrations.list(server, args.migration_type)"},{"line_number":3505,"context_line":"        fields \u003d [\u0027Id\u0027, \u0027Type\u0027, \u0027Source Node\u0027, \u0027Dest Node\u0027, \u0027Source Compute\u0027,"},{"line_number":3506,"context_line":"                  \u0027Dest Compute\u0027, \u0027Dest Host\u0027, \u0027Server UUID\u0027, \u0027Created At\u0027,"},{"line_number":3507,"context_line":"                  \u0027Updated At\u0027]"},{"line_number":3508,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":47,"id":"bf8cb3f7_62aa0fd3","line":3505,"range":{"start_line":3505,"start_character":25,"end_line":3505,"end_character":29},"in_reply_to":"bf8cb3f7_faa9f0de","updated":"2017-12-25 06:13:47.000000000","message":"Done","commit_id":"991f269cce2014519a998b2739f61424dfc8ac3a"}]}
