)]}'
{"id":"openstack%2Fsushy-tools~980255","triplet_id":"openstack%2Fsushy-tools~master~I67beaf4414980525e10344ed0e6e3a1bbd6492d4","project":"openstack/sushy-tools","branch":"master","topic":"vmedia-rescue","attention_set":{},"removed_from_attention_set":{"24245":{"account":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"last_update":"2026-03-17 02:42:11.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"I67beaf4414980525e10344ed0e6e3a1bbd6492d4","subject":"novadriver: Add rescue-based virtual media support","status":"MERGED","created":"2026-03-12 11:20:45.000000000","updated":"2026-03-17 02:43:39.000000000","submitted":"2026-03-17 02:42:11.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":2,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"980255-vmedia-rescue","meta_rev_id":"b2d11fea4160ea019f0c1d3377c0c7eaac6f02bb","_number":980255,"virtual_id_number":980255,"owner":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},{"value":0,"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},{"value":0,"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-03-17 02:42:11.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"all":[{"value":0,"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},{"value":2,"date":"2026-03-16 09:58:15.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},{"value":2,"date":"2026-03-17 01:38:28.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"all":[{"value":0,"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},{"value":0,"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},{"value":1,"date":"2026-03-17 01:38:28.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Backport-Candidate":{"all":[{"value":0,"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},{"value":0,"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},{"value":0,"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Do Not Backport"," 0":"Backport Review Needed","+1":"Should Backport"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-03-12 13:08:06.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2026-03-16 09:58:15.000000000","updated_by":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"reviewer":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"state":"REVIEWER"},{"updated":"2026-03-17 01:38:28.000000000","updated_by":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"reviewer":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"state":"REVIEWER"}],"messages":[{"id":"d5d8d47543407edf27e2703f6232f7732097107e","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"date":"2026-03-12 11:20:45.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"780b180972864ca139860372f89f6b4eebfbc8a6","author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"date":"2026-03-12 11:34:03.000000000","message":"Patch Set 1: Workflow-1\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"cf7f919ab6f0e4ea97a58a39b521ed57c0570f9b","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"date":"2026-03-12 11:58:41.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Workflow-1\n","accounts_in_message":[],"_revision_number":2},{"id":"92f7e7f6913a6f35e724d2f97c59f904efa998fb","author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"date":"2026-03-12 12:26:18.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"e5eb9406ab741a2f51258028079b78c62fb749cd","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-12 13:08:06.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/82879afe85f5423aa6921a6f7afe15bd\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/3d2ab0d618c24b3fb82fda3e7288a051 : SUCCESS in 3m 06s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/173f957621834c90a8bb6eaa13b96e9a : SUCCESS in 2m 31s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/f2431a5a32f84c1cb188db58c1d9034d : SUCCESS in 2m 30s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/4fabeeeae047456abb1a5364718e1749 : SUCCESS in 5m 41s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/16f8919776b444d69ea6ced3ec713896 : SUCCESS in 6m 33s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/029d93a390c644bdb01275b61fd801b3 : SUCCESS in 2m 50s\n- sushy-tools-tempest-bios-redfish-pxe https://zuul.opendev.org/t/openstack/build/5b389a56e3e7445487e54e1ecede9ae9 : SUCCESS in 22m 59s\n- sushy-tools-tempest-uefi-redfish-vmedia https://zuul.opendev.org/t/openstack/build/b78a23fd9fd947e68501d7200855eebf : SUCCESS in 52m 02s\n- sushy-tools-tox-codespell https://zuul.opendev.org/t/openstack/build/5d78453a933c4b1093b22d135c086c18 : SUCCESS in 2m 56s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"6694431758a5a1d535669f3660e627ec6e0ef0e9","tag":"autogenerated:gerrit:setWorkInProgress","author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"date":"2026-03-12 13:38:05.000000000","message":"Set Work In Progress","accounts_in_message":[],"_revision_number":2},{"id":"e8100d9c6fcf421e8a4a5220b6ea2caf0ba84279","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"date":"2026-03-13 12:15:02.000000000","message":"Uploaded patch set 3: Patch Set 2 was rebased.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":3},{"id":"7f59230466e2e8fe6b151246fc06fc8b6e669cb9","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-13 13:11:03.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/e13fe298eb304b469c5b8affad9369e8\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/03c3efa245bb42c8aac23e161e737403 : SUCCESS in 3m 56s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/0b71d6e86bf54766ab4c1dfc23252b53 : SUCCESS in 2m 27s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/eded5b445be841f085adfac84d54fcf0 : SUCCESS in 4m 12s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/334fcc5648004fb4b1c172cff7ade0b4 : SUCCESS in 3m 59s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/02ada81f5ae9450e8355622a6c99153a : SUCCESS in 4m 52s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/2a8ebf4ebb1d4e24b5aa4e298e1d1900 : SUCCESS in 2m 16s\n- sushy-tools-tempest-bios-redfish-pxe https://zuul.opendev.org/t/openstack/build/7931aa3e2b1c4c79b140fc4c5168b769 : SUCCESS in 49m 27s\n- sushy-tools-tempest-uefi-redfish-vmedia https://zuul.opendev.org/t/openstack/build/0be308755dbc4059b94c164de4b1fb80 : SUCCESS in 50m 54s\n- sushy-tools-tox-codespell https://zuul.opendev.org/t/openstack/build/0f0fbef00997439b9cc19823d3fc4b83 : SUCCESS in 2m 59s (non-voting)","accounts_in_message":[],"_revision_number":3},{"id":"f470b6a035594f652f6efbb12ef4cbd7897593bb","tag":"autogenerated:gerrit:setReadyForReview","author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"date":"2026-03-13 14:39:03.000000000","message":"Set Ready For Review","accounts_in_message":[],"_revision_number":3},{"id":"c40778c406eaf1ce45b8d3008121813862cb3446","author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"date":"2026-03-16 09:58:15.000000000","message":"Patch Set 3: Code-Review+2","accounts_in_message":[],"_revision_number":3},{"id":"0bd20a8a051c7790b1e2ed8f24a06d4f0b25fcb5","author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"date":"2026-03-17 01:38:28.000000000","message":"Patch Set 3: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":3},{"id":"955b48bad5f7385b5aafa5f244581eb5dc13a9b9","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-17 01:38:52.000000000","message":"Patch Set 3: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":3},{"id":"8361ae75fee9f5a5a7f9bf2c4368184a47173937","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-17 02:42:11.000000000","message":"Patch Set 3: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/50a4639ed55645aaa3049d8f79646c2f\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/05a5ba0b319c466b9b0576598fab6edf : SUCCESS in 4m 41s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/9d3629cf23bd4453b5085fdfc700c23e : SUCCESS in 2m 47s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/b77711e9c38a4015904bace075dda154 : SUCCESS in 3m 24s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/24fc24bafea94f1db6f59e95c57c00eb : SUCCESS in 6m 04s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/fe63323c5f9b436fbec61b064155541d : SUCCESS in 1m 48s\n- sushy-tools-tempest-bios-redfish-pxe https://zuul.opendev.org/t/openstack/build/1e42e24bc13246fd9f5c1f7300907221 : SUCCESS in 58m 24s\n- sushy-tools-tempest-uefi-redfish-vmedia https://zuul.opendev.org/t/openstack/build/efc2cb887a674b6d9eca0d91ed3cffaf : SUCCESS in 34m 49s","accounts_in_message":[],"_revision_number":3},{"id":"12fc65ef682b3cc0f16bdc0cd263270c5244c486","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-17 02:42:11.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":3},{"id":"b2d11fea4160ea019f0c1d3377c0c7eaac6f02bb","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-17 02:43:39.000000000","message":"Patch Set 3:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/4bc228e96ecc4a12a0c2361c6c4b9b04\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/bdb46da5ac2249dc8afe56d428a0293e : SUCCESS in 1m 01s\n- promote-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/0cbf7155f9c34e75afd44ce0eec1a234 : SUCCESS in 57s","accounts_in_message":[],"_revision_number":3}],"current_revision_number":3,"current_revision":"d5f8532128657ad13788deed3155ee7963bd0e46","revisions":{"6791b9c9062bfd14f2fb0066b81653e95dcc29a4":{"kind":"REWORK","_number":1,"created":"2026-03-12 11:20:45.000000000","uploader":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"ref":"refs/changes/55/980255/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/sushy-tools","ref":"refs/changes/55/980255/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/sushy-tools refs/changes/55/980255/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/sushy-tools refs/changes/55/980255/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/sushy-tools refs/changes/55/980255/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/sushy-tools refs/changes/55/980255/1"}}},"commit":{"parents":[{"commit":"8b1bfdd98ee7aea6090f94d6da35eaec837fe067","subject":"novadriver: Detect disk format from image content","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/sushy-tools/commit/8b1bfdd98ee7aea6090f94d6da35eaec837fe067"}]}],"author":{"name":"Harald Jensås","email":"hjensas@redhat.com","date":"2026-03-12 02:42:21.000000000","tz":60},"committer":{"name":"Harald Jensås","email":"hjensas@redhat.com","date":"2026-03-12 10:37:10.000000000","tz":60},"subject":"novadriver: Add rescue-based virtual media support","message":"novadriver: Add rescue-based virtual media support\n\nImplements virtual media (CD/DVD) boot using Nova rescue mode\nas an alternative to volume rebuild based approach. This enables\nvirtual media on older clouds and works around OVMF firmware\nissues with volume-backed media. (OVMF can be picky about booting\nISO\u0027s, on some \u0027sata\u0027 bus works, other OVMF need \u0027scsi\u0027 bus...)\n\nKey changes:\n- Insert image uploads ISO to Glance, stores in PersistentDict\n- Boot device \u0027Cd\u0027 sets rescue boot mode for next power cycle\n- Power on triggers rescue with ISO image (async handling)\n- Power off performs unrescue then stop operations\n- Eject deletes ISO from Glance and clears state\n\n**Refactors** existing vmedia to use PersistentDict instead of\nNova metadata for state tracking. Users requiring state persistence\nacross service restarts must configure SUSHY_EMULATOR_STATE_DIR.\n\nAdded unit tests and documentation covering configuration, workflows,\nand limitations.\n\nAssisted-By: Claude (claude-4.5-sonnet)\nChange-Id: I67beaf4414980525e10344ed0e6e3a1bbd6492d4\nSigned-off-by: Harald Jensås \u003chjensas@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/sushy-tools/commit/6791b9c9062bfd14f2fb0066b81653e95dcc29a4"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/sushy-tools/commit/6791b9c9062bfd14f2fb0066b81653e95dcc29a4"}]},"branch":"refs/heads/master"},"c613127e49a15d1f74bc8597d0a0386e96625f45":{"kind":"REWORK","_number":2,"created":"2026-03-12 11:58:41.000000000","uploader":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"ref":"refs/changes/55/980255/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/sushy-tools","ref":"refs/changes/55/980255/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/sushy-tools refs/changes/55/980255/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/sushy-tools refs/changes/55/980255/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/sushy-tools refs/changes/55/980255/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/sushy-tools refs/changes/55/980255/2"}}},"commit":{"parents":[{"commit":"8b1bfdd98ee7aea6090f94d6da35eaec837fe067","subject":"novadriver: Detect disk format from image content","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/sushy-tools/commit/8b1bfdd98ee7aea6090f94d6da35eaec837fe067"}]}],"author":{"name":"Harald Jensås","email":"hjensas@redhat.com","date":"2026-03-12 02:42:21.000000000","tz":60},"committer":{"name":"Harald Jensås","email":"hjensas@redhat.com","date":"2026-03-12 11:42:40.000000000","tz":60},"subject":"novadriver: Add rescue-based virtual media support","message":"novadriver: Add rescue-based virtual media support\n\nImplements virtual media (CD/DVD) boot using Nova rescue mode\nas an alternative to volume rebuild based approach. This enables\nvirtual media on older clouds and works around OVMF firmware\nissues with volume-backed media. (OVMF can be picky about booting\nISO\u0027s, on some \u0027sata\u0027 bus works, other OVMF need \u0027scsi\u0027 bus...)\n\nKey changes:\n- Insert image uploads ISO to Glance, stores in PersistentDict\n- Boot device \u0027Cd\u0027 sets rescue boot mode for next power cycle\n- Power on triggers rescue with ISO image (async handling)\n- Power off performs unrescue then stop operations\n- Eject deletes ISO from Glance and clears state\n\n**Refactors** existing vmedia to use PersistentDict instead of\nNova metadata for state tracking. Users requiring state persistence\nacross service restarts must configure SUSHY_EMULATOR_STATE_DIR.\n\nAdded unit tests and documentation covering configuration, workflows,\nand limitations.\n\nAssisted-By: Claude (claude-4.5-sonnet)\nChange-Id: I67beaf4414980525e10344ed0e6e3a1bbd6492d4\nSigned-off-by: Harald Jensås \u003chjensas@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/sushy-tools/commit/c613127e49a15d1f74bc8597d0a0386e96625f45"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/sushy-tools/commit/c613127e49a15d1f74bc8597d0a0386e96625f45"}]},"branch":"refs/heads/master"},"d5f8532128657ad13788deed3155ee7963bd0e46":{"kind":"TRIVIAL_REBASE","_number":3,"created":"2026-03-13 12:15:02.000000000","uploader":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"ref":"refs/changes/55/980255/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/sushy-tools","ref":"refs/changes/55/980255/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/sushy-tools refs/changes/55/980255/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/sushy-tools refs/changes/55/980255/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/sushy-tools refs/changes/55/980255/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/sushy-tools refs/changes/55/980255/3"}}},"commit":{"parents":[{"commit":"e8821df8628baeae750c7eda625acc0850fbbb0d","subject":"novadriver: Detect disk format from image content","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/sushy-tools/commit/e8821df8628baeae750c7eda625acc0850fbbb0d"}]}],"author":{"name":"Harald Jensås","email":"hjensas@redhat.com","date":"2026-03-12 02:42:21.000000000","tz":60},"committer":{"name":"Harald Jensås","email":"hjensas@redhat.com","date":"2026-03-12 20:03:19.000000000","tz":60},"subject":"novadriver: Add rescue-based virtual media support","message":"novadriver: Add rescue-based virtual media support\n\nImplements virtual media (CD/DVD) boot using Nova rescue mode\nas an alternative to volume rebuild based approach. This enables\nvirtual media on older clouds and works around OVMF firmware\nissues with volume-backed media. (OVMF can be picky about booting\nISO\u0027s, on some \u0027sata\u0027 bus works, other OVMF need \u0027scsi\u0027 bus...)\n\nKey changes:\n- Insert image uploads ISO to Glance, stores in PersistentDict\n- Boot device \u0027Cd\u0027 sets rescue boot mode for next power cycle\n- Power on triggers rescue with ISO image (async handling)\n- Power off performs unrescue then stop operations\n- Eject deletes ISO from Glance and clears state\n\n**Refactors** existing vmedia to use PersistentDict instead of\nNova metadata for state tracking. Users requiring state persistence\nacross service restarts must configure SUSHY_EMULATOR_STATE_DIR.\n\nAdded unit tests and documentation covering configuration, workflows,\nand limitations.\n\nAssisted-By: Claude (claude-4.5-sonnet)\nChange-Id: I67beaf4414980525e10344ed0e6e3a1bbd6492d4\nSigned-off-by: Harald Jensås \u003chjensas@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/sushy-tools/commit/d5f8532128657ad13788deed3155ee7963bd0e46"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/sushy-tools/commit/d5f8532128657ad13788deed3155ee7963bd0e46"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"}},{"label":"Backport-Candidate","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX"],"failing_atoms":["label:Verified\u003dMIN"],"atom_explanations":{}}},{"name":"Backport-Candidate","description":"Backport candidate status","status":"NOT_APPLICABLE","is_legacy":false,"applicability_expression_result":{"fulfilled":false,"status":"FAIL"},"submittability_expression_result":{"expression":"is:true","fulfilled":true,"status":"NOT_EVALUATED","passing_atoms":[],"failing_atoms":[],"atom_explanations":{}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":["label:Code-Review\u003dMIN"],"atom_explanations":{}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dMAX"],"failing_atoms":["label:Workflow\u003dMIN"],"atom_explanations":{}}}]}
