)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5fb598d320d5f1a4e6419684c99e46fda7f4fc69","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8f2adb50_db860dc1","updated":"2023-08-30 16:50:09.000000000","message":"I don\u0027t wanna hold this series so close to FeatureFreeze, but I somehow need some kind of ACK we could have a follow-up patch that would add more clarity.","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d3491bd76e209d977a419b42972ee27e9980561d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"e67bc395_c556fda7","updated":"2023-08-10 00:48:44.000000000","message":"LGTM, Thanks","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"3dff42e3ed4ce5506f60aef66a686ac78dc1b8ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"09b789fe_e42400f2","updated":"2023-08-31 16:29:05.000000000","message":"Looks OK to me too. Just a couple of very minor things noted inline.","commit_id":"2fbb5c08af03e3352d6d9aa5ea0d9110474b1371"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"43afdfbb76fb1d2553818a5ff2a508f314d1cd71","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"8534edfa_2591e1dd","updated":"2023-08-31 16:23:33.000000000","message":"thanks for the doc updates, way clearer now.","commit_id":"2fbb5c08af03e3352d6d9aa5ea0d9110474b1371"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cd4a4ad2e513baf87123daaa8f1bedfc9974f0c2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7df227d4_57973ef0","updated":"2023-09-01 13:59:44.000000000","message":"Adding -W on here to make sure it doesn\u0027t get merged until my comment is seen.","commit_id":"9068db09e4d659e61dfeca44114fcb763cda5a07"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"359d4b0d3fcc1e15a8d9b291c6a77a7a515f8cce","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ef33967c_6c4ceaf4","updated":"2023-08-31 17:24:20.000000000","message":"Indeed, looks good. Thanks for updating those minor issues too","commit_id":"9068db09e4d659e61dfeca44114fcb763cda5a07"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ade22132349833f5925ec65bc44a0fff56265fdd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"25a47850_e6685ae5","updated":"2023-08-31 17:21:50.000000000","message":"Proxying\u0027s mel\u0027s vote given she was already ok and it\u0027s just adding a new test param.","commit_id":"9068db09e4d659e61dfeca44114fcb763cda5a07"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"8e1ae21fe5b88d08f11142add83f264bbed57dbc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e060481b_83d5e470","updated":"2023-09-01 17:42:05.000000000","message":"recheck tempest-integrated-compute-enforce-scope-new-defaults had 503 error unrelated to this change","commit_id":"9068db09e4d659e61dfeca44114fcb763cda5a07"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"88e8a43b2db740e9c3a748c4d8bcaccd518fcd19","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"d23cb547_505552da","updated":"2023-09-01 14:21:53.000000000","message":"recheck tempest-integrated-compute-rbac-old-defaults timed out\n\nif Dan\u0027s concern is resolved, can someone please re-workflow this?","commit_id":"9068db09e4d659e61dfeca44114fcb763cda5a07"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"007b9aab75f5ad7ae47e8b4cc4ce003a43d94306","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"85fae768_bcc243c3","updated":"2023-08-31 19:56:24.000000000","message":"recheck tempest-integrated-compute-rbac-old-defaults timed out; should not be impacted by this change though so seeing if it persists","commit_id":"9068db09e4d659e61dfeca44114fcb763cda5a07"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"0fa88b5498186f7e061e2c1bba01796c0bd72563","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"914e81f1_6dd8fb98","updated":"2023-09-01 22:40:30.000000000","message":"recheck volume delete timeout :( Details: (ServerStableDeviceRescueTest:tearDownClass) Failed to delete volume 9ab281ea-2256-4e09-b060-0b9669a81e52 within the required time (196 s). Timer started at 1693600544. Timer ended at 1693600742. Waited for 198 s., \u003ctraceback object at 0x7fd2017e1b40\u003e))","commit_id":"9068db09e4d659e61dfeca44114fcb763cda5a07"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8f9346e49cf902d5bace8b918b83e319138aff8c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"2a5c70eb_11f8ebca","updated":"2023-09-01 13:54:04.000000000","message":"recheck volume test failure which is clearly unrelated","commit_id":"9068db09e4d659e61dfeca44114fcb763cda5a07"}],"doc/source/cli/nova-manage.rst":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"179348c802d31983dfafb874bdf8eafd6993e6c6","unresolved":true,"context_lines":[{"line_number":468,"context_line":"db ironic_compute_node_move"},{"line_number":469,"context_line":"---------------------------"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":".. program:: nova-manage db online_data_migrations"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":".. code-block:: shell"},{"line_number":474,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"2cb861a9_9a55540e","line":471,"range":{"start_line":471,"start_character":28,"end_line":471,"end_character":50},"updated":"2023-08-30 19:52:45.000000000","message":"ironic_compute_node_move","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"72497ad340a90d95fd58625b3e8900118e6e8aec","unresolved":false,"context_lines":[{"line_number":468,"context_line":"db ironic_compute_node_move"},{"line_number":469,"context_line":"---------------------------"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":".. program:: nova-manage db online_data_migrations"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":".. code-block:: shell"},{"line_number":474,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5c99459c_1b13a82e","line":471,"range":{"start_line":471,"start_character":28,"end_line":471,"end_character":50},"in_reply_to":"2cb861a9_9a55540e","updated":"2023-08-31 14:03:49.000000000","message":"oh wow, oops.","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"95c9742ede08ed383ecd4a1746830256474616c5","unresolved":true,"context_lines":[{"line_number":472,"context_line":""},{"line_number":473,"context_line":".. code-block:: shell"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    nova-manage db ironic_compute_node_move --compute-node-uuid \u003cuuid\u003e --destination-host \u003chost\u003e"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"Move ironic nodes, along with any associated instances, between nova-compute services."},{"line_number":478,"context_line":"This is useful when migrating away from using peer_list and muiltiple"}],"source_content_type":"text/x-rst","patch_set":4,"id":"59bff370_ecc78247","line":475,"updated":"2023-07-12 13:39:04.000000000","message":"compute node uuid, per our IRL conversation, is actually the Ironic node uuid -- can we rename this or be more explicit in documentation","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5fb598d320d5f1a4e6419684c99e46fda7f4fc69","unresolved":true,"context_lines":[{"line_number":472,"context_line":""},{"line_number":473,"context_line":".. code-block:: shell"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    nova-manage db ironic_compute_node_move --compute-node-uuid \u003cuuid\u003e --destination-host \u003chost\u003e"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"Move ironic nodes, along with any associated instances, between nova-compute services."},{"line_number":478,"context_line":"This is useful when migrating away from using peer_list and muiltiple"}],"source_content_type":"text/x-rst","patch_set":4,"id":"918a5060_563397a5","line":475,"in_reply_to":"59bff370_ecc78247","updated":"2023-08-30 16:50:09.000000000","message":"Agreed with Jay, I\u0027d prefer --ironic-node-uuid to be clearer.","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"72497ad340a90d95fd58625b3e8900118e6e8aec","unresolved":false,"context_lines":[{"line_number":472,"context_line":""},{"line_number":473,"context_line":".. code-block:: shell"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    nova-manage db ironic_compute_node_move --compute-node-uuid \u003cuuid\u003e --destination-host \u003chost\u003e"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"Move ironic nodes, along with any associated instances, between nova-compute services."},{"line_number":478,"context_line":"This is useful when migrating away from using peer_list and muiltiple"}],"source_content_type":"text/x-rst","patch_set":4,"id":"97ea3958_44326f61","line":475,"in_reply_to":"918a5060_563397a5","updated":"2023-08-31 14:03:49.000000000","message":"me too, that is clearer.","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"179348c802d31983dfafb874bdf8eafd6993e6c6","unresolved":true,"context_lines":[{"line_number":475,"context_line":"    nova-manage db ironic_compute_node_move --compute-node-uuid \u003cuuid\u003e --destination-host \u003chost\u003e"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"Move ironic nodes, along with any associated instances, between nova-compute services."},{"line_number":478,"context_line":"This is useful when migrating away from using peer_list and muiltiple"},{"line_number":479,"context_line":"nova-compute ironics and moving to the new ironic shard system."},{"line_number":480,"context_line":""},{"line_number":481,"context_line":".. versionadded:: 2023.2.0 (Bobcat)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7406063c_e9f12168","line":478,"range":{"start_line":478,"start_character":60,"end_line":478,"end_character":69},"updated":"2023-08-30 19:52:45.000000000","message":"multiple","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"72497ad340a90d95fd58625b3e8900118e6e8aec","unresolved":false,"context_lines":[{"line_number":475,"context_line":"    nova-manage db ironic_compute_node_move --compute-node-uuid \u003cuuid\u003e --destination-host \u003chost\u003e"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"Move ironic nodes, along with any associated instances, between nova-compute services."},{"line_number":478,"context_line":"This is useful when migrating away from using peer_list and muiltiple"},{"line_number":479,"context_line":"nova-compute ironics and moving to the new ironic shard system."},{"line_number":480,"context_line":""},{"line_number":481,"context_line":".. versionadded:: 2023.2.0 (Bobcat)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"49d23c42_3c3f5487","line":478,"range":{"start_line":478,"start_character":60,"end_line":478,"end_character":69},"in_reply_to":"7406063c_e9f12168","updated":"2023-08-31 14:03:49.000000000","message":"Done","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"179348c802d31983dfafb874bdf8eafd6993e6c6","unresolved":true,"context_lines":[{"line_number":478,"context_line":"This is useful when migrating away from using peer_list and muiltiple"},{"line_number":479,"context_line":"nova-compute ironics and moving to the new ironic shard system."},{"line_number":480,"context_line":""},{"line_number":481,"context_line":".. versionadded:: 2023.2.0 (Bobcat)"},{"line_number":482,"context_line":""},{"line_number":483,"context_line":".. rubric:: Options"},{"line_number":484,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f6fd568_9ac4ba6c","line":481,"range":{"start_line":481,"start_character":18,"end_line":481,"end_character":35},"updated":"2023-08-30 19:52:45.000000000","message":"I got confused by this in one of my patches but I think this is supposed to be something more like 28.0.0 (2023.2 Bobcat) where 28.0.0 is the Nova release version.","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"72497ad340a90d95fd58625b3e8900118e6e8aec","unresolved":false,"context_lines":[{"line_number":478,"context_line":"This is useful when migrating away from using peer_list and muiltiple"},{"line_number":479,"context_line":"nova-compute ironics and moving to the new ironic shard system."},{"line_number":480,"context_line":""},{"line_number":481,"context_line":".. versionadded:: 2023.2.0 (Bobcat)"},{"line_number":482,"context_line":""},{"line_number":483,"context_line":".. rubric:: Options"},{"line_number":484,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"dd54faa9_0e4f913d","line":481,"range":{"start_line":481,"start_character":18,"end_line":481,"end_character":35},"in_reply_to":"1f6fd568_9ac4ba6c","updated":"2023-08-31 14:03:49.000000000","message":"Oh really... got you, I will update that.","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5fb598d320d5f1a4e6419684c99e46fda7f4fc69","unresolved":true,"context_lines":[{"line_number":484,"context_line":""},{"line_number":485,"context_line":".. option:: --compute-node-uuid \u003cuuid\u003e"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"    Ironic compute node uuid to be moved"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":".. option:: --destination-host \u003chost\u003e"},{"line_number":490,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a90ea86_454bdaf0","line":487,"updated":"2023-08-30 16:50:09.000000000","message":"you could mention how to get it, ie. by using the Ironic API.","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"72497ad340a90d95fd58625b3e8900118e6e8aec","unresolved":false,"context_lines":[{"line_number":484,"context_line":""},{"line_number":485,"context_line":".. option:: --compute-node-uuid \u003cuuid\u003e"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"    Ironic compute node uuid to be moved"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":".. option:: --destination-host \u003chost\u003e"},{"line_number":490,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"a5ac4467_d7f3465d","line":487,"in_reply_to":"1a90ea86_454bdaf0","updated":"2023-08-31 14:03:49.000000000","message":"I reworded to manage the option change.","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"43afdfbb76fb1d2553818a5ff2a508f314d1cd71","unresolved":false,"context_lines":[{"line_number":487,"context_line":"also a conductor group). Finally, most Ironic nodes should now move to"},{"line_number":488,"context_line":"the new service, but any Ironic nodes with instances on them"},{"line_number":489,"context_line":"will need to be manually moved to their new Ironic service"},{"line_number":490,"context_line":"by using this nova-manage command."},{"line_number":491,"context_line":""},{"line_number":492,"context_line":".. versionadded:: 28.0.0 (2023.2.0 Bobcat)"},{"line_number":493,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"0a85f313_872c9ec2","line":490,"updated":"2023-08-31 16:23:33.000000000","message":"thanks for the detailed addition.","commit_id":"2fbb5c08af03e3352d6d9aa5ea0d9110474b1371"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"3dff42e3ed4ce5506f60aef66a686ac78dc1b8ec","unresolved":true,"context_lines":[{"line_number":489,"context_line":"will need to be manually moved to their new Ironic service"},{"line_number":490,"context_line":"by using this nova-manage command."},{"line_number":491,"context_line":""},{"line_number":492,"context_line":".. versionadded:: 28.0.0 (2023.2.0 Bobcat)"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":".. rubric:: Options"},{"line_number":495,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"130c766e_e6ff150d","line":492,"range":{"start_line":492,"start_character":32,"end_line":492,"end_character":34},"updated":"2023-08-31 16:29:05.000000000","message":"FYI there\u0027s actually no third number in the new OpenStack release identification/naming scheme, it\u0027s something that changed in the governance to no longer use \"nicknames\" for official release names. Now they are year based with \"1\" being the first release of the year and \"2\" being the second:\n\nhttps://governance.openstack.org/tc/reference/release-naming.html\n\nFor example, it used to be: Wallaby, Xena, Yoga, Zed\n\nNow it\u0027s: 2023.1, 2023.2, 2024.1, 2024.2, ...\n\nand the nicknames are [technically] primarily for marketing.","commit_id":"2fbb5c08af03e3352d6d9aa5ea0d9110474b1371"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"361fbb3a0fc2f65863b9262352b9fee4cad453c7","unresolved":false,"context_lines":[{"line_number":489,"context_line":"will need to be manually moved to their new Ironic service"},{"line_number":490,"context_line":"by using this nova-manage command."},{"line_number":491,"context_line":""},{"line_number":492,"context_line":".. versionadded:: 28.0.0 (2023.2.0 Bobcat)"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":".. rubric:: Options"},{"line_number":495,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"5cbb3cd7_7ff39a2d","line":492,"range":{"start_line":492,"start_character":32,"end_line":492,"end_character":34},"in_reply_to":"130c766e_e6ff150d","updated":"2023-08-31 17:20:17.000000000","message":"Ah... got you.","commit_id":"2fbb5c08af03e3352d6d9aa5ea0d9110474b1371"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"43afdfbb76fb1d2553818a5ff2a508f314d1cd71","unresolved":false,"context_lines":[{"line_number":496,"context_line":".. option:: --ironic-node-uuid \u003cuuid\u003e"},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"    Ironic node uuid to be moved (which is also the Nova compute node uuid"},{"line_number":499,"context_line":"    and the uuid of corresponding resource provider in Placement)."},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"    The Nova compute service that currently manages this Ironic node"},{"line_number":502,"context_line":"    must first be marked a \"forced down\" via the Nova API, in a similar"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1991f14a_f2b02979","line":499,"updated":"2023-08-31 16:23:33.000000000","message":"++","commit_id":"2fbb5c08af03e3352d6d9aa5ea0d9110474b1371"}],"nova/cmd/manage.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5fb598d320d5f1a4e6419684c99e46fda7f4fc69","unresolved":true,"context_lines":[{"line_number":603,"context_line":"        # \"there are more migrations, but not completable right now\""},{"line_number":604,"context_line":"        return ran and 1 or 0"},{"line_number":605,"context_line":""},{"line_number":606,"context_line":"    @args(\u0027--compute-node-uuid\u0027, metavar\u003d\u0027\u003cuuid\u003e\u0027, dest\u003d\u0027compute_node_uuid\u0027,"},{"line_number":607,"context_line":"          help\u003d\u0027Ironic compute node uuid to be moved\u0027)"},{"line_number":608,"context_line":"    @args(\u0027--destination-host\u0027, metavar\u003d\u0027\u003chost\u003e\u0027,"},{"line_number":609,"context_line":"          dest\u003d\u0027destination_service_host\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"a5a7a253_8a9c0e14","line":606,"range":{"start_line":606,"start_character":13,"end_line":606,"end_character":30},"updated":"2023-08-30 16:50:09.000000000","message":"see my other comment, --ironic-node-uuid seems a better parameter name.","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"72497ad340a90d95fd58625b3e8900118e6e8aec","unresolved":false,"context_lines":[{"line_number":603,"context_line":"        # \"there are more migrations, but not completable right now\""},{"line_number":604,"context_line":"        return ran and 1 or 0"},{"line_number":605,"context_line":""},{"line_number":606,"context_line":"    @args(\u0027--compute-node-uuid\u0027, metavar\u003d\u0027\u003cuuid\u003e\u0027, dest\u003d\u0027compute_node_uuid\u0027,"},{"line_number":607,"context_line":"          help\u003d\u0027Ironic compute node uuid to be moved\u0027)"},{"line_number":608,"context_line":"    @args(\u0027--destination-host\u0027, metavar\u003d\u0027\u003chost\u003e\u0027,"},{"line_number":609,"context_line":"          dest\u003d\u0027destination_service_host\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"6ea1e53d_23ad8cfc","line":606,"range":{"start_line":606,"start_character":13,"end_line":606,"end_character":30},"in_reply_to":"a5a7a253_8a9c0e14","updated":"2023-08-31 14:03:49.000000000","message":"+1 I like that idea.","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d3491bd76e209d977a419b42972ee27e9980561d","unresolved":true,"context_lines":[{"line_number":614,"context_line":""},{"line_number":615,"context_line":"        destination_service \u003d objects.Service.get_by_compute_host("},{"line_number":616,"context_line":"            ctxt, destination_service_host)"},{"line_number":617,"context_line":"        # TODO(johngarbutt): should we check this service is down?"},{"line_number":618,"context_line":"        if destination_service.forced_down:"},{"line_number":619,"context_line":"            raise exception.NovaException("},{"line_number":620,"context_line":"                \"Destination compute is forced down!\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"8186bd76_5688eb7d","line":617,"updated":"2023-08-10 00:48:44.000000000","message":"John, Source or destination?","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5fb598d320d5f1a4e6419684c99e46fda7f4fc69","unresolved":true,"context_lines":[{"line_number":614,"context_line":""},{"line_number":615,"context_line":"        destination_service \u003d objects.Service.get_by_compute_host("},{"line_number":616,"context_line":"            ctxt, destination_service_host)"},{"line_number":617,"context_line":"        # TODO(johngarbutt): should we check this service is down?"},{"line_number":618,"context_line":"        if destination_service.forced_down:"},{"line_number":619,"context_line":"            raise exception.NovaException("},{"line_number":620,"context_line":"                \"Destination compute is forced down!\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"c108d017_db1f86e8","line":617,"in_reply_to":"8186bd76_5688eb7d","updated":"2023-08-30 16:50:09.000000000","message":"IIRC, we check first whether we can land on the destination and only after that, we just doublecheck that we forced the source down.","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"72497ad340a90d95fd58625b3e8900118e6e8aec","unresolved":false,"context_lines":[{"line_number":614,"context_line":""},{"line_number":615,"context_line":"        destination_service \u003d objects.Service.get_by_compute_host("},{"line_number":616,"context_line":"            ctxt, destination_service_host)"},{"line_number":617,"context_line":"        # TODO(johngarbutt): should we check this service is down?"},{"line_number":618,"context_line":"        if destination_service.forced_down:"},{"line_number":619,"context_line":"            raise exception.NovaException("},{"line_number":620,"context_line":"                \"Destination compute is forced down!\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"8d75f387_3f6a3420","line":617,"in_reply_to":"c108d017_db1f86e8","updated":"2023-08-31 14:03:49.000000000","message":"I think this might have been added before I did the forced_down check. That should be more than enough.","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d3491bd76e209d977a419b42972ee27e9980561d","unresolved":false,"context_lines":[{"line_number":632,"context_line":"            target_compute_node.hypervisor_hostname)"},{"line_number":633,"context_line":"        if len(instances) \u003e 1:"},{"line_number":634,"context_line":"            raise exception.NovaException("},{"line_number":635,"context_line":"                \"Found an ironic host with more than one instance!\")"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        target_compute_node.service_id \u003d destination_service.id"},{"line_number":638,"context_line":"        target_compute_node.host \u003d destination_service.host"}],"source_content_type":"text/x-python","patch_set":4,"id":"3b827eab_d4042d31","line":635,"updated":"2023-08-10 00:48:44.000000000","message":"I can\u0027t help but wonder if we should provide some sort of guidance, but to hit this someone would have had to have gone changing things in side the db most likely, to begin with.","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"72497ad340a90d95fd58625b3e8900118e6e8aec","unresolved":false,"context_lines":[{"line_number":632,"context_line":"            target_compute_node.hypervisor_hostname)"},{"line_number":633,"context_line":"        if len(instances) \u003e 1:"},{"line_number":634,"context_line":"            raise exception.NovaException("},{"line_number":635,"context_line":"                \"Found an ironic host with more than one instance!\")"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        target_compute_node.service_id \u003d destination_service.id"},{"line_number":638,"context_line":"        target_compute_node.host \u003d destination_service.host"}],"source_content_type":"text/x-python","patch_set":4,"id":"b21c1256_6aeb1ef1","line":635,"in_reply_to":"3b827eab_d4042d31","updated":"2023-08-31 14:03:49.000000000","message":"I think you can just delete those instances, I will add that.","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d3491bd76e209d977a419b42972ee27e9980561d","unresolved":false,"context_lines":[{"line_number":638,"context_line":"        target_compute_node.host \u003d destination_service.host"},{"line_number":639,"context_line":"        target_compute_node.save()"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"        # TODO(johngarbutt): can we make this \"more atomic\" in some way?"},{"line_number":642,"context_line":"        for instance in instances:"},{"line_number":643,"context_line":"            # this is a bit like evacuate, except no need to rebuild"},{"line_number":644,"context_line":"            instance.host \u003d destination_service.host"}],"source_content_type":"text/x-python","patch_set":4,"id":"58ae2597_4686af28","line":641,"updated":"2023-08-10 00:48:44.000000000","message":"You could potentially do it in sqlalchemy, but at which point your doing fairly low level operations because you can lock rows for an impending update in the same transaction... but that is kind of far away from the object model interaction here. I guess at some point the question becomes what is the risk of making it more atomic, versus the effort required to do so.","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"72497ad340a90d95fd58625b3e8900118e6e8aec","unresolved":false,"context_lines":[{"line_number":638,"context_line":"        target_compute_node.host \u003d destination_service.host"},{"line_number":639,"context_line":"        target_compute_node.save()"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"        # TODO(johngarbutt): can we make this \"more atomic\" in some way?"},{"line_number":642,"context_line":"        for instance in instances:"},{"line_number":643,"context_line":"            # this is a bit like evacuate, except no need to rebuild"},{"line_number":644,"context_line":"            instance.host \u003d destination_service.host"}],"source_content_type":"text/x-python","patch_set":4,"id":"1de3214d_fe911e40","line":641,"in_reply_to":"58ae2597_4686af28","updated":"2023-08-31 14:03:49.000000000","message":"yeah, its probably not worth it.","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5fb598d320d5f1a4e6419684c99e46fda7f4fc69","unresolved":false,"context_lines":[{"line_number":640,"context_line":""},{"line_number":641,"context_line":"        # TODO(johngarbutt): can we make this \"more atomic\" in some way?"},{"line_number":642,"context_line":"        for instance in instances:"},{"line_number":643,"context_line":"            # this is a bit like evacuate, except no need to rebuild"},{"line_number":644,"context_line":"            instance.host \u003d destination_service.host"},{"line_number":645,"context_line":"            instance.save()"},{"line_number":646,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"48372e3a_c1c617be","line":643,"updated":"2023-08-30 16:50:09.000000000","message":"well, I\u0027d say this is no-op evacuate, yeah.","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cd4a4ad2e513baf87123daaa8f1bedfc9974f0c2","unresolved":true,"context_lines":[{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        for instance in instances:"},{"line_number":660,"context_line":"            # this is a bit like evacuate, except no need to rebuild"},{"line_number":661,"context_line":"            instance.host \u003d destination_service.host"},{"line_number":662,"context_line":"            instance.save()"},{"line_number":663,"context_line":""},{"line_number":664,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ec0b1ddc_9db58a13","line":661,"updated":"2023-09-01 13:59:44.000000000","message":"This needs to update `node` and `compute_id` as well, right?","commit_id":"9068db09e4d659e61dfeca44114fcb763cda5a07"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"759f9dadf62eb99098579e0350cdc5f544e7f849","unresolved":true,"context_lines":[{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        for instance in instances:"},{"line_number":660,"context_line":"            # this is a bit like evacuate, except no need to rebuild"},{"line_number":661,"context_line":"            instance.host \u003d destination_service.host"},{"line_number":662,"context_line":"            instance.save()"},{"line_number":663,"context_line":""},{"line_number":664,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9b23069f_9703dae0","line":661,"in_reply_to":"ec0b1ddc_9db58a13","updated":"2023-09-01 14:07:10.000000000","message":"Duh, nevermind, we\u0027re changing the node to the new service as well, so the node/id on the instance stays the same.","commit_id":"9068db09e4d659e61dfeca44114fcb763cda5a07"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7b47a4aaee4c8adf2e348b6288ebbb57d5b9e549","unresolved":true,"context_lines":[{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        for instance in instances:"},{"line_number":660,"context_line":"            # this is a bit like evacuate, except no need to rebuild"},{"line_number":661,"context_line":"            instance.host \u003d destination_service.host"},{"line_number":662,"context_line":"            instance.save()"},{"line_number":663,"context_line":""},{"line_number":664,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"a1749767_5de5a469","line":661,"in_reply_to":"ec0b1ddc_9db58a13","updated":"2023-09-01 14:06:54.000000000","message":"``node`` is actually the Ironic ``node`` UUID, so it shouldn\u0027t change.\n\nVerifying for ``compute_id`` whether it\u0027s related to ``host`` or ``node``","commit_id":"9068db09e4d659e61dfeca44114fcb763cda5a07"}],"nova/tests/functional/test_nova_manage.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"074eea67816960c3ba49b9196cbb458831798edd","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                                    flavor\u003dflavor,"},{"line_number":165,"context_line":"                                    node\u003dcn.hypervisor_hostname,"},{"line_number":166,"context_line":"                                    host\u003dcn.host,"},{"line_number":167,"context_line":"                                    compute_id\u003dcn.id)"},{"line_number":168,"context_line":"            inst.create()"},{"line_number":169,"context_line":"            self.insts.append(inst)"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"10f1b6c0_542f4fc4","line":167,"updated":"2023-08-31 17:21:05.000000000","message":"Sorry, I just found the functional tests broke after the rebase due to the   change landing around the compute_id being added, so its needed here.","commit_id":"9068db09e4d659e61dfeca44114fcb763cda5a07"}],"releasenotes/notes/ironic-shards-5641e4b1ab5bb7aa.yaml":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"179348c802d31983dfafb874bdf8eafd6993e6c6","unresolved":true,"context_lines":[{"line_number":11,"context_line":"    Note that when you use ``[ironic]shard`` the ``[ironic]peer_list``"},{"line_number":12,"context_line":"    is hard coded to a single nova-compute service."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    There is a new nova-manage command ironic_compute_node_move that can"},{"line_number":15,"context_line":"    be used to move ironic nodes, and the associated instances, between"},{"line_number":16,"context_line":"    nova-compute services. This is useful when migrating from the legacy"},{"line_number":17,"context_line":"    hash ring based HA towards the new sharding approach."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"c1ffb9b7_99c689ba","line":14,"range":{"start_line":14,"start_character":39,"end_line":14,"end_character":63},"updated":"2023-08-30 19:52:45.000000000","message":"db ironic_compute_node_move and maybe put `` `` around it","commit_id":"64f6087d720a213a966652b031e61aebf239a18b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"43afdfbb76fb1d2553818a5ff2a508f314d1cd71","unresolved":true,"context_lines":[{"line_number":11,"context_line":"    Note that when you use ``[ironic]shard`` the ``[ironic]peer_list``"},{"line_number":12,"context_line":"    is hard coded to a single nova-compute service."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    There is a new nova-manage command ``ironic_compute_node_move`` that can"},{"line_number":15,"context_line":"    be used to move ironic nodes, and the associated instances, between"},{"line_number":16,"context_line":"    nova-compute services. This is useful when migrating from the legacy"},{"line_number":17,"context_line":"    hash ring based HA towards the new sharding approach."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"1b3cb248_c7f62cfd","line":14,"range":{"start_line":14,"start_character":41,"end_line":14,"end_character":65},"updated":"2023-08-31 16:23:33.000000000","message":"in theory, the long name is ``db ironic_compute_node_move`` but that\u0027s a nit we can address later (and you can even link it to the nova-manage doc)","commit_id":"2fbb5c08af03e3352d6d9aa5ea0d9110474b1371"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"3dff42e3ed4ce5506f60aef66a686ac78dc1b8ec","unresolved":true,"context_lines":[{"line_number":11,"context_line":"    Note that when you use ``[ironic]shard`` the ``[ironic]peer_list``"},{"line_number":12,"context_line":"    is hard coded to a single nova-compute service."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    There is a new nova-manage command ``ironic_compute_node_move`` that can"},{"line_number":15,"context_line":"    be used to move ironic nodes, and the associated instances, between"},{"line_number":16,"context_line":"    nova-compute services. This is useful when migrating from the legacy"},{"line_number":17,"context_line":"    hash ring based HA towards the new sharding approach."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"df1674da_3b798624","line":14,"range":{"start_line":14,"start_character":41,"end_line":14,"end_character":65},"in_reply_to":"1b3cb248_c7f62cfd","updated":"2023-08-31 16:29:05.000000000","message":"+1 yeah we can update this before RC right (without having to backport anything)","commit_id":"2fbb5c08af03e3352d6d9aa5ea0d9110474b1371"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"361fbb3a0fc2f65863b9262352b9fee4cad453c7","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    Note that when you use ``[ironic]shard`` the ``[ironic]peer_list``"},{"line_number":12,"context_line":"    is hard coded to a single nova-compute service."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    There is a new nova-manage command ``ironic_compute_node_move`` that can"},{"line_number":15,"context_line":"    be used to move ironic nodes, and the associated instances, between"},{"line_number":16,"context_line":"    nova-compute services. This is useful when migrating from the legacy"},{"line_number":17,"context_line":"    hash ring based HA towards the new sharding approach."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"f46700f1_1b1a4e94","line":14,"range":{"start_line":14,"start_character":41,"end_line":14,"end_character":65},"in_reply_to":"df1674da_3b798624","updated":"2023-08-31 17:20:17.000000000","message":"ah, oops, yes, good catch.","commit_id":"2fbb5c08af03e3352d6d9aa5ea0d9110474b1371"}]}
