)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"a582627c4628c471d01b934f703e4efd54ab8ebb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"a0fdde7d_c79184f4","updated":"2026-06-29 03:00:40.000000000","message":"Thanks for the first draft of the cold-migration support. Added some comments and my ideas for the open questions.","commit_id":"c3fae3bf80eded127eec48e3558f10c4d36d5bb0"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"24aa0c73574417de4e5a0a14ef87cfb2e6a98d5a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1fbaac97_d0fa9bdb","updated":"2026-06-30 02:35:23.000000000","message":"forgot to mention my account","commit_id":"c3fae3bf80eded127eec48e3558f10c4d36d5bb0"}],"specs/2026.2/approved/cold-migration-support.rst":[{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"a582627c4628c471d01b934f703e4efd54ab8ebb","unresolved":true,"context_lines":[{"line_number":64,"context_line":"This spec takes a phased approach:"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* **Phase 1** (this spec): Allow cloud admins to directly call the"},{"line_number":67,"context_line":"  Notification API to trigger cold migration. No new monitor is needed."},{"line_number":68,"context_line":"* **Phase 2** (future spec): Based on operational feedback from Phase 1,"},{"line_number":69,"context_line":"  consider extending the host monitor or introducing a new monitor for"},{"line_number":70,"context_line":"  automatic detection of hardware degradation."}],"source_content_type":"text/x-rst","patch_set":1,"id":"aa325789_14969225","line":67,"updated":"2026-06-29 03:00:40.000000000","message":"IMO, the phase1 allows cloud admin to directory call the Notification API or any monitoring system by the cloud admin can send it, too.","commit_id":"c3fae3bf80eded127eec48e3558f10c4d36d5bb0"},{"author":{"_account_id":38176,"name":"Sei Sano","display_name":"say3no","email":"sei.sano@ntt.com","username":"say3no"},"change_message_id":"be521f964e0a230aa98986b92b02b4483669729b","unresolved":false,"context_lines":[{"line_number":64,"context_line":"This spec takes a phased approach:"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* **Phase 1** (this spec): Allow cloud admins to directly call the"},{"line_number":67,"context_line":"  Notification API to trigger cold migration. No new monitor is needed."},{"line_number":68,"context_line":"* **Phase 2** (future spec): Based on operational feedback from Phase 1,"},{"line_number":69,"context_line":"  consider extending the host monitor or introducing a new monitor for"},{"line_number":70,"context_line":"  automatic detection of hardware degradation."}],"source_content_type":"text/x-rst","patch_set":1,"id":"1241603e_4508a117","line":67,"in_reply_to":"aa325789_14969225","updated":"2026-07-27 04:29:36.000000000","message":"Good catch — updated in PS3: Phase 1 now explicitly covers cold migration triggered either by a direct admin call or by any monitoring/automation tooling operated by the cloud admin, not just manual calls. This matches what we already discussed at the PTG.","commit_id":"c3fae3bf80eded127eec48e3558f10c4d36d5bb0"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"a582627c4628c471d01b934f703e4efd54ab8ebb","unresolved":true,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Phase 1 changes"},{"line_number":73,"context_line":"----------------"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"1. Add a new notification type ``HOST_MAINTENANCE`` to the Notification"},{"line_number":76,"context_line":"   API alongside the existing ``COMPUTE_HOST`` type."},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"2af839c9_9d6f596c","line":74,"updated":"2026-06-29 03:00:40.000000000","message":"This comment is related to the 2nd open questions, too.\n\nWe need to decide if the Phase1 run the cold-migration without VM shutdown operation or with running the shutdown operation to all instances.","commit_id":"c3fae3bf80eded127eec48e3558f10c4d36d5bb0"},{"author":{"_account_id":38176,"name":"Sei Sano","display_name":"say3no","email":"sei.sano@ntt.com","username":"say3no"},"change_message_id":"be521f964e0a230aa98986b92b02b4483669729b","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Phase 1 changes"},{"line_number":73,"context_line":"----------------"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"1. Add a new notification type ``HOST_MAINTENANCE`` to the Notification"},{"line_number":76,"context_line":"   API alongside the existing ``COMPUTE_HOST`` type."},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9535506a_ce6cff69","line":74,"in_reply_to":"2af839c9_9d6f596c","updated":"2026-07-27 04:29:36.000000000","message":"Addressed in PS3. Rather than hard-coding one behavior, I added a new active_instance_policy config option (abort / skip / force, default skip) — see the new step under \"Phase 1 changes\" describing instance power-state handling. Nova\u0027s cold-migrate API itself handles stop/start internally, but since this is a planned-maintenance path (not an emergency), I don\u0027t think the workflow should force that on a running instance without an explicit operator opt-in. Default skip only migrates instances that are already stopped; force is available for operators who want everything moved regardless of state. Open to feedback on the default.","commit_id":"c3fae3bf80eded127eec48e3558f10c4d36d5bb0"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"a582627c4628c471d01b934f703e4efd54ab8ebb","unresolved":true,"context_lines":[{"line_number":76,"context_line":"   API alongside the existing ``COMPUTE_HOST`` type."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"2. Add a new recovery workflow for ``HOST_MAINTENANCE`` notifications"},{"line_number":79,"context_line":"   that performs cold migration instead of evacuation."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"3. The workflow iterates over all instances on the target host and calls"},{"line_number":82,"context_line":"   the Nova cold-migration API for each instance. Placement of migrated"}],"source_content_type":"text/x-rst","patch_set":1,"id":"78821dbf_732736bf","line":79,"updated":"2026-06-29 03:00:40.000000000","message":"Double check: Who is in charge of disabling the target compute host?  Masakari, Cloud operator, or anything else?","commit_id":"c3fae3bf80eded127eec48e3558f10c4d36d5bb0"},{"author":{"_account_id":38176,"name":"Sei Sano","display_name":"say3no","email":"sei.sano@ntt.com","username":"say3no"},"change_message_id":"be521f964e0a230aa98986b92b02b4483669729b","unresolved":false,"context_lines":[{"line_number":76,"context_line":"   API alongside the existing ``COMPUTE_HOST`` type."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"2. Add a new recovery workflow for ``HOST_MAINTENANCE`` notifications"},{"line_number":79,"context_line":"   that performs cold migration instead of evacuation."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"3. The workflow iterates over all instances on the target host and calls"},{"line_number":82,"context_line":"   the Nova cold-migration API for each instance. Placement of migrated"}],"source_content_type":"text/x-rst","patch_set":1,"id":"208ccd5c_072c2467","line":79,"in_reply_to":"78821dbf_732736bf","updated":"2026-07-27 04:29:36.000000000","message":"Masakari is responsible for this. PS3 adds an explicit step at the start of the workflow: check whether the nova-compute service on the target host is enabled, and if so, disable it with a reason — reusing the same DisableComputeServiceTask pattern from the existing host failure workflow.","commit_id":"c3fae3bf80eded127eec48e3558f10c4d36d5bb0"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"a582627c4628c471d01b934f703e4efd54ab8ebb","unresolved":true,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"* **Validation**: Should the API reject a ``HOST_MAINTENANCE``"},{"line_number":100,"context_line":"  notification if the host is already reported as down? This would"},{"line_number":101,"context_line":"  prevent conflicting recovery actions."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"* **Instance filtering**: Should the admin be able to specify a subset of"},{"line_number":104,"context_line":"  instances to migrate, or always migrate all instances on the host?"}],"source_content_type":"text/x-rst","patch_set":1,"id":"142dbf6c_a54b0cad","line":101,"updated":"2026-06-29 03:00:40.000000000","message":"Yes, it\u0027s definitely needed.","commit_id":"c3fae3bf80eded127eec48e3558f10c4d36d5bb0"},{"author":{"_account_id":38176,"name":"Sei Sano","display_name":"say3no","email":"sei.sano@ntt.com","username":"say3no"},"change_message_id":"be521f964e0a230aa98986b92b02b4483669729b","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"* **Validation**: Should the API reject a ``HOST_MAINTENANCE``"},{"line_number":100,"context_line":"  notification if the host is already reported as down? This would"},{"line_number":101,"context_line":"  prevent conflicting recovery actions."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"* **Instance filtering**: Should the admin be able to specify a subset of"},{"line_number":104,"context_line":"  instances to migrate, or always migrate all instances on the host?"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fb66ea6a_58eb72ed","line":101,"in_reply_to":"142dbf6c_a54b0cad","updated":"2026-07-27 04:29:36.000000000","message":"Agreed — and it turns out this is already handled for free: the notification create API (masakari/ha/api.py) already checks Host.on_maintenance and raises HostOnMaintenanceError (409) for any notification type on a host that already has a recovery in progress. PS3 documents that HOST_MAINTENANCE reuses this existing check as-is, no new validation logic needed. One thing worth flagging: nothing auto-clears on_maintenance today; that\u0027s a manual operator action via the Host API once physical work is done, and Phase 1 keeps that same manual model. Let me know if you think Phase 1 should do something different here.","commit_id":"c3fae3bf80eded127eec48e3558f10c4d36d5bb0"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"a582627c4628c471d01b934f703e4efd54ab8ebb","unresolved":true,"context_lines":[{"line_number":104,"context_line":"  instances to migrate, or always migrate all instances on the host?"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"* **Migration concurrency**: Should instances be migrated sequentially or"},{"line_number":107,"context_line":"  in parallel? What is the failure handling if some migrations fail?"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Alternatives"},{"line_number":110,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a91bce5_496ebeb9","line":107,"updated":"2026-06-29 03:00:40.000000000","message":"My idea list:\n\n- Adding a new configuration value for the number of parallel execution\n- The notification API\u0027s payload accepts new keys, target instance id list or number of parallel execution.","commit_id":"c3fae3bf80eded127eec48e3558f10c4d36d5bb0"},{"author":{"_account_id":38176,"name":"Sei Sano","display_name":"say3no","email":"sei.sano@ntt.com","username":"say3no"},"change_message_id":"be521f964e0a230aa98986b92b02b4483669729b","unresolved":false,"context_lines":[{"line_number":104,"context_line":"  instances to migrate, or always migrate all instances on the host?"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"* **Migration concurrency**: Should instances be migrated sequentially or"},{"line_number":107,"context_line":"  in parallel? What is the failure handling if some migrations fail?"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Alternatives"},{"line_number":110,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1b9839a9_ed3cb008","line":107,"in_reply_to":"1a91bce5_496ebeb9","updated":"2026-07-27 04:29:36.000000000","message":"Thanks for the ideas. I went with the config-based approach: a new host_maintenance_recovery_threads option mirroring host_failure_recovery_threads used by the host failure workflow\u0027s evacuation thread pool, rather than extending the notification payload with a parallelism/instance-list field — wanted to stay consistent with the existing pattern. See the updated \"Phase 1 changes\" section in PS3.","commit_id":"c3fae3bf80eded127eec48e3558f10c4d36d5bb0"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"a582627c4628c471d01b934f703e4efd54ab8ebb","unresolved":true,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"* **Use Nova directly**: Operators could call the Nova cold-migration"},{"line_number":113,"context_line":"  API for each instance manually or via scripts. This loses Masakari\u0027s"},{"line_number":114,"context_line":"  centralized tracking, audit trail, and failure handling."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"* **Extend host failure workflow**: Instead of a new notification type,"},{"line_number":117,"context_line":"  add a parameter to the existing ``COMPUTE_HOST`` notification to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aad3d3a_5c10cc6c","line":114,"updated":"2026-06-29 03:00:40.000000000","message":"Yes, that\u0027s why we have this Masakari project :)","commit_id":"c3fae3bf80eded127eec48e3558f10c4d36d5bb0"},{"author":{"_account_id":38176,"name":"Sei Sano","display_name":"say3no","email":"sei.sano@ntt.com","username":"say3no"},"change_message_id":"be521f964e0a230aa98986b92b02b4483669729b","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"* **Use Nova directly**: Operators could call the Nova cold-migration"},{"line_number":113,"context_line":"  API for each instance manually or via scripts. This loses Masakari\u0027s"},{"line_number":114,"context_line":"  centralized tracking, audit trail, and failure handling."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"* **Extend host failure workflow**: Instead of a new notification type,"},{"line_number":117,"context_line":"  add a parameter to the existing ``COMPUTE_HOST`` notification to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"2c10a50e_2accd843","line":114,"in_reply_to":"7aad3d3a_5c10cc6c","updated":"2026-07-27 04:29:36.000000000","message":":) exactly — that\u0027s the whole point of centralizing this in Masakari.","commit_id":"c3fae3bf80eded127eec48e3558f10c4d36d5bb0"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"24aa0c73574417de4e5a0a14ef87cfb2e6a98d5a","unresolved":true,"context_lines":[{"line_number":221,"context_line":"-----------"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"Primary assignee:"},{"line_number":224,"context_line":"  masahito"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"Other contributors:"},{"line_number":227,"context_line":"  say3no"}],"source_content_type":"text/x-rst","patch_set":1,"id":"d869c230_102dbb55","line":224,"updated":"2026-06-30 02:35:23.000000000","message":"please use masahito-muroi (irc: masahito) here for my account.","commit_id":"c3fae3bf80eded127eec48e3558f10c4d36d5bb0"},{"author":{"_account_id":38176,"name":"Sei Sano","display_name":"say3no","email":"sei.sano@ntt.com","username":"say3no"},"change_message_id":"be521f964e0a230aa98986b92b02b4483669729b","unresolved":false,"context_lines":[{"line_number":221,"context_line":"-----------"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"Primary assignee:"},{"line_number":224,"context_line":"  masahito"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"Other contributors:"},{"line_number":227,"context_line":"  say3no"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ac9648e_906f96b1","line":224,"in_reply_to":"d869c230_102dbb55","updated":"2026-07-27 04:29:36.000000000","message":"Fixed in PS3 — assignee is now masahito-muroi. Sorry for the mix-up!","commit_id":"c3fae3bf80eded127eec48e3558f10c4d36d5bb0"}]}
