)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a2b589019243cb57723a0441edbdc3175498a044","unresolved":false,"context_lines":[{"line_number":10,"context_line":"destroy_disks boolean to indicate when the underlying storage of an"},{"line_number":11,"context_line":"instance should be destroyed."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When cleaning up after an evacuation the value of destroy_disks is"},{"line_number":14,"context_line":"determined by the compute layer calling down both into the"},{"line_number":15,"context_line":"check_instance_shared_storage_local method of the local virt driver and"},{"line_number":16,"context_line":"remote check_instance_shared_storage method of the virt driver on the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f79a3b5_94580427","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":36},"updated":"2018-12-11 19:31:26.000000000","message":"You mean on compute init (restart of the evacuated-from host) right? This:\n\nhttps://github.com/openstack/nova/blob/f572527d2b7f93b0c2108118c2f240f2dd1cf968/nova/compute/manager.py#L687\n\nGiven that, wouldn\u0027t this workaround also be run on revert resize?\n\nhttps://github.com/openstack/nova/blob/f572527d2b7f93b0c2108118c2f240f2dd1cf968/nova/compute/manager.py#L3993","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"2f9d7b55e6b54968c48e298d612e49065e981629","unresolved":false,"context_lines":[{"line_number":10,"context_line":"destroy_disks boolean to indicate when the underlying storage of an"},{"line_number":11,"context_line":"instance should be destroyed."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When cleaning up after an evacuation the value of destroy_disks is"},{"line_number":14,"context_line":"determined by the compute layer calling down both into the"},{"line_number":15,"context_line":"check_instance_shared_storage_local method of the local virt driver and"},{"line_number":16,"context_line":"remote check_instance_shared_storage method of the virt driver on the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f79a3b5_ead628c2","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":36},"in_reply_to":"3f79a3b5_94580427","updated":"2018-12-12 10:26:57.000000000","message":"No I don\u0027t think so, instance.host would still point to the local host (dest) when calling destroy during revert resize and so we wouldn\u0027t trigger the workaround here and the instance directory would remain.\n\nWhile we do have a migration record during resize I don\u0027t think it will have is_shared_block_storage set so even passing that down through destroy here to cleanup wouldn\u0027t be enough. \n\nI think we are going to need more duct tape.....","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dddd6ce7da9e7b9774ce380278bc748c95c1b86a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"destroy_disks boolean to indicate when the underlying storage of an"},{"line_number":11,"context_line":"instance should be destroyed."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When cleaning up after an evacuation the value of destroy_disks is"},{"line_number":14,"context_line":"determined by the compute layer calling down both into the"},{"line_number":15,"context_line":"check_instance_shared_storage_local method of the local virt driver and"},{"line_number":16,"context_line":"remote check_instance_shared_storage method of the virt driver on the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f79a3b5_b43ae02f","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":36},"in_reply_to":"3f79a3b5_94580427","updated":"2018-12-11 19:48:46.000000000","message":"The problem is really this being unconditional right?\n\nhttps://github.com/openstack/nova/blob/f572527d2b7f93b0c2108118c2f240f2dd1cf968/nova/virt/libvirt/driver.py#L6629\n\nAnd for the Rbd imagebackend that always returns True.\n\nCouldn\u0027t ComputeManager._is_instance_storage_shared still do the checks for whether or not the instance storage is on shared disk and then work the Rbd imagebackend check into that somehow?\n\nThat imagebackend check was added to the libvirt driver in I71bb818f3c2930b3a2ddf1817dfd4bb61fae7e98 but asserts that if you\u0027re using rbd for disk storage, you\u0027re using shared storage exclusively, and apparently that\u0027s not the case (some people still use local storage for instance files).\n\nI guess the main issue is that destroy_disks is currently being used for *all* disks regardless of how they are stored, which can be annoyingly different for instance files on local storage and root disks on shared (rbd) storage.","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"2f9d7b55e6b54968c48e298d612e49065e981629","unresolved":false,"context_lines":[{"line_number":10,"context_line":"destroy_disks boolean to indicate when the underlying storage of an"},{"line_number":11,"context_line":"instance should be destroyed."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When cleaning up after an evacuation the value of destroy_disks is"},{"line_number":14,"context_line":"determined by the compute layer calling down both into the"},{"line_number":15,"context_line":"check_instance_shared_storage_local method of the local virt driver and"},{"line_number":16,"context_line":"remote check_instance_shared_storage method of the virt driver on the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f79a3b5_aa2b5098","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":36},"in_reply_to":"3f79a3b5_b43ae02f","updated":"2018-12-12 10:26:57.000000000","message":"Ultimately yes, this is all due to destroy_disks being overloaded and various bits of code trying to infer the state of different aspects of instance storage from that single value.","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"8b4f626409587b9bb0e5418d09ee3c1f082f2b37","unresolved":false,"context_lines":[{"line_number":10,"context_line":"destroy_disks boolean to indicate when the underlying storage of an"},{"line_number":11,"context_line":"instance should be destroyed."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When cleaning up after an evacuation the value of destroy_disks is"},{"line_number":14,"context_line":"determined by the compute layer calling down both into the"},{"line_number":15,"context_line":"check_instance_shared_storage_local method of the local virt driver and"},{"line_number":16,"context_line":"remote check_instance_shared_storage method of the virt driver on the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f79a3b5_d7474151","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":36},"in_reply_to":"3f79a3b5_ead628c2","updated":"2018-12-12 20:36:05.000000000","message":"Indeed, it looks like the only time migrate_data.is_shared_block_storage is set is in the driver.check_can_live_migrate_source method, which won\u0027t run as part of resize actions.\n\nSo as Lee said, the only way the workaround will run otherwise is if instance.host !\u003d CONF.host and during a revert resize, instance.host will be CONF.host when driver.destroy and cleanup run on the destination. The instance.host isn\u0027t updated to the source (in finish_revert_resize) until after cleanup is finished on the destination.","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a2b589019243cb57723a0441edbdc3175498a044","unresolved":false,"context_lines":[{"line_number":31,"context_line":"imagebackend. When enabling this workaround operators will need to"},{"line_number":32,"context_line":"ensure that the instance directories are not shared between computes."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Future work will allow for the removal of this workaround by separating"},{"line_number":35,"context_line":"the shared storage checks from the compute to virt layers between the"},{"line_number":36,"context_line":"actual instance disks and any additional storage required by the"},{"line_number":37,"context_line":"specific virt backend."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f79a3b5_d4a3dcfd","line":34,"range":{"start_line":34,"start_character":0,"end_line":34,"end_character":11},"updated":"2018-12-11 19:31:26.000000000","message":"Is there something specific in mind for this? Like blueprint local-disk-serial-numbers?","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bb6b52069e76e2e55c916c30ee820d93474d7929","unresolved":false,"context_lines":[{"line_number":31,"context_line":"imagebackend. When enabling this workaround operators will need to"},{"line_number":32,"context_line":"ensure that the instance directories are not shared between computes."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Future work will allow for the removal of this workaround by separating"},{"line_number":35,"context_line":"the shared storage checks from the compute to virt layers between the"},{"line_number":36,"context_line":"actual instance disks and any additional storage required by the"},{"line_number":37,"context_line":"specific virt backend."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f79a3b5_5bdfe5d2","line":34,"range":{"start_line":34,"start_character":0,"end_line":34,"end_character":11},"in_reply_to":"3f79a3b5_2a950030","updated":"2018-12-12 16:08:24.000000000","message":"We have BDMs for each kind of disk right? We just don\u0027t track anything in the database about how the instance files are stored (local or shared storage). And I guess blueprint local-disk-serial-numbers is not really about modeling instance files as BDMs, right? I was just wondering if we could somehow leverage BDMs as the persistent way to indicate if a disk attached to a file is shared or not, but that\u0027s probably not the correct place to store that information since it would need to be per-host that the instance runs on.","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"a77924a7f105acbcceb9101ce153ec70d539cea6","unresolved":false,"context_lines":[{"line_number":31,"context_line":"imagebackend. When enabling this workaround operators will need to"},{"line_number":32,"context_line":"ensure that the instance directories are not shared between computes."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Future work will allow for the removal of this workaround by separating"},{"line_number":35,"context_line":"the shared storage checks from the compute to virt layers between the"},{"line_number":36,"context_line":"actual instance disks and any additional storage required by the"},{"line_number":37,"context_line":"specific virt backend."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f79a3b5_5036dfe2","line":34,"range":{"start_line":34,"start_character":0,"end_line":34,"end_character":11},"in_reply_to":"3f79a3b5_5bdfe5d2","updated":"2018-12-12 16:51:14.000000000","message":"Correct and again you\u0027re fixating on things in the instance directory being disks but in the context of this bug with images_type set to rbd we only end up with the console.log in there the majority of the time. I don\u0027t think we want to model such files in the database. Even if we did as you\u0027ve highlighted with disks above we can\u0027t call something universally shared within an environment and would still need to check that it was in the current context (between two specific hosts etc), the fact we do for disks with the rbd imagebackend now is a bug IMHO.","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"2f9d7b55e6b54968c48e298d612e49065e981629","unresolved":false,"context_lines":[{"line_number":31,"context_line":"imagebackend. When enabling this workaround operators will need to"},{"line_number":32,"context_line":"ensure that the instance directories are not shared between computes."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Future work will allow for the removal of this workaround by separating"},{"line_number":35,"context_line":"the shared storage checks from the compute to virt layers between the"},{"line_number":36,"context_line":"actual instance disks and any additional storage required by the"},{"line_number":37,"context_line":"specific virt backend."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f79a3b5_2a950030","line":34,"range":{"start_line":34,"start_character":0,"end_line":34,"end_character":11},"in_reply_to":"3f79a3b5_d4a3dcfd","updated":"2018-12-12 10:26:57.000000000","message":"I posted I7767f61506bf229dfcd20be8e4f251785111b980 as a rushed start last week, happy to formalise this behind a blueprint or spec if that would be helpful.","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a2b589019243cb57723a0441edbdc3175498a044","unresolved":false,"context_lines":[{"line_number":36,"context_line":"actual instance disks and any additional storage required by the"},{"line_number":37,"context_line":"specific virt backend."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Related-Bug: #1414895"},{"line_number":40,"context_line":"Change-Id: I8fd6b9f857a1c4919c3365951e2652d2d477df77"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f79a3b5_f4b7f822","line":39,"updated":"2018-12-11 19:31:26.000000000","message":"Is bug 1761062 also related to this, at least the setup (instance files are not on shared storage but using the images_type\u003drbd for shared storage of the root disk)?","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"2f9d7b55e6b54968c48e298d612e49065e981629","unresolved":false,"context_lines":[{"line_number":36,"context_line":"actual instance disks and any additional storage required by the"},{"line_number":37,"context_line":"specific virt backend."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Related-Bug: #1414895"},{"line_number":40,"context_line":"Change-Id: I8fd6b9f857a1c4919c3365951e2652d2d477df77"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f79a3b5_45dced15","line":39,"in_reply_to":"3f79a3b5_f4b7f822","updated":"2018-12-12 10:26:57.000000000","message":"Yes, it\u0027s related but unfortunately not fixed by this workaround.","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5ccf21117f9195576727854e316e5b15fc0ff47a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"destroy_disks boolean to indicate when the underlying storage of an"},{"line_number":11,"context_line":"instance should be destroyed."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When cleaning up after an evacuation or revert resize the value of"},{"line_number":14,"context_line":"destroy_disks is determined by the compute layer calling down both into"},{"line_number":15,"context_line":"the check_instance_shared_storage_local method of the local virt driver"},{"line_number":16,"context_line":"and remote check_instance_shared_storage method of the virt driver on"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"3f79a3b5_072ab62c","line":13,"range":{"start_line":13,"start_character":37,"end_line":13,"end_character":53},"updated":"2018-12-21 22:46:52.000000000","message":"In PS8 you and Mel said this wouldn\u0027t be used during revert resize...?\n\nLooking at the code again for revert_resize, if using images_type\u003drbd, the result of this call would be True:\n\nhttps://github.com/openstack/nova/blob/a189d1185c0a3458c28015a6cb46aac3bfa9d152/nova/compute/manager.py#L3986\n\nSo destroy_disks\u003dFalse is passed to driver.destroy, which is checked here:\n\nhttps://github.com/openstack/nova/blob/a189d1185c0a3458c28015a6cb46aac3bfa9d152/nova/virt/libvirt/driver.py#L1067\n\nAnd since migrate_data isn\u0027t passed in there for revert_resize, is_shared_block_storage\u003dFalse so we won\u0027t cleanup local instance files on the dest host. But shouldn\u0027t we?\n\n(later)\n\nOK with your change we will be deleting the instances files from the dest host when destroying the guest there on revert_resize.","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1fc5e7fd338831771fe333e6aa1e94b4f34df361","unresolved":false,"context_lines":[{"line_number":37,"context_line":"specific virt backend."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Related-Bug: #1761062"},{"line_number":40,"context_line":"Related-Bug: #1414895"},{"line_number":41,"context_line":"Change-Id: I8fd6b9f857a1c4919c3365951e2652d2d477df77"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"3f79a3b5_c7defe0c","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":7},"updated":"2018-12-21 22:48:07.000000000","message":"This should probably be Partial-Bug.","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"}],"nova/conf/compute.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"07d53e8ecf476586da63225728b7e95b4a723697","unresolved":false,"context_lines":[{"line_number":572,"context_line":""},{"line_number":573,"context_line":"Related options:"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"* [workarounds]/ensure_libvirt_rbd_instance_dir_cleanup"},{"line_number":576,"context_line":"\"\"\"),"},{"line_number":577,"context_line":"    cfg.BoolOpt(\u0027instance_usage_audit\u0027,"},{"line_number":578,"context_line":"        default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1f769fc5_4bb5e0ed","line":575,"range":{"start_line":575,"start_character":2,"end_line":575,"end_character":55},"updated":"2018-12-24 14:30:00.000000000","message":"nit: ``literal``","commit_id":"5f2ec710cf38be6c23e04ce40e8a298d50e3b79d"}],"nova/conf/libvirt.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"07d53e8ecf476586da63225728b7e95b4a723697","unresolved":false,"context_lines":[{"line_number":804,"context_line":""},{"line_number":805,"context_line":"* virt.use_cow_images"},{"line_number":806,"context_line":"* images_volume_group"},{"line_number":807,"context_line":"* [workarounds]/ensure_libvirt_rbd_instance_dir_cleanup"},{"line_number":808,"context_line":"\"\"\"),"},{"line_number":809,"context_line":"    cfg.StrOpt(\u0027images_volume_group\u0027,"},{"line_number":810,"context_line":"               help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"1f769fc5_0bcfe87f","line":807,"range":{"start_line":807,"start_character":0,"end_line":807,"end_character":55},"updated":"2018-12-24 14:30:00.000000000","message":"ditto, though the other options are wrong here (and we don\u0027t want unrelated changed, especially not if this is being backported) so maybe leave this one","commit_id":"5f2ec710cf38be6c23e04ce40e8a298d50e3b79d"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"60464f3788ae0b1d0287fa19ee78d86da4896b28","unresolved":false,"context_lines":[{"line_number":804,"context_line":""},{"line_number":805,"context_line":"* virt.use_cow_images"},{"line_number":806,"context_line":"* images_volume_group"},{"line_number":807,"context_line":"* [workarounds]/ensure_libvirt_rbd_instance_dir_cleanup"},{"line_number":808,"context_line":"\"\"\"),"},{"line_number":809,"context_line":"    cfg.StrOpt(\u0027images_volume_group\u0027,"},{"line_number":810,"context_line":"               help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"1f769fc5_4b34004b","line":807,"range":{"start_line":807,"start_character":0,"end_line":807,"end_character":55},"in_reply_to":"1f769fc5_0bcfe87f","updated":"2018-12-24 14:54:46.000000000","message":"Yeah that did confuse me tbh, I\u0027ll leave it as is for now.","commit_id":"5f2ec710cf38be6c23e04ce40e8a298d50e3b79d"}],"nova/conf/workarounds.py":[{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"59c3bddbee79a32f2a37a8ff83fdea028b034ee1","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":".. note:: Operators will need to ensure that the instance directory itself is"},{"line_number":200,"context_line":"not shared between computes before enabling this workaround otherwise the"},{"line_number":201,"context_line":"``console.log`` for the instance will be lost."},{"line_number":202,"context_line":"\"\"\"),"},{"line_number":203,"context_line":"]"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_440eb330","line":201,"updated":"2018-12-05 17:04:10.000000000","message":"Also kernel and ramdisk, but I don\u0027t think anybody cares.","commit_id":"085fe6de688923540e13440f9189310e4cc15194"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"1f64033c2c804d43b7c0cffc9a50a926f6dec7b6","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":".. note:: Operators will need to ensure that the instance directory itself is"},{"line_number":200,"context_line":"not shared between computes before enabling this workaround otherwise the"},{"line_number":201,"context_line":"``console.log`` for the instance will be lost."},{"line_number":202,"context_line":"\"\"\"),"},{"line_number":203,"context_line":"]"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_33e2cd37","line":201,"in_reply_to":"3f79a3b5_440eb330","updated":"2018-12-06 09:48:18.000000000","message":"I\u0027ll confirm and add these if/when I respin.","commit_id":"085fe6de688923540e13440f9189310e4cc15194"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"6d0b7d575f1e4b879e12a99f6f81366d3e1abc74","unresolved":false,"context_lines":[{"line_number":186,"context_line":"* ``[consoleauth]/token_ttl``"},{"line_number":187,"context_line":"\"\"\"),"},{"line_number":188,"context_line":"    cfg.BoolOpt("},{"line_number":189,"context_line":"        \u0027enable_libvirt_rbd_instance_dir_evac_cleanup\u0027,"},{"line_number":190,"context_line":"        default\u003dFalse,"},{"line_number":191,"context_line":"        help\u003d\"\"\""},{"line_number":192,"context_line":"Cleanup the instance directory during evacuation of instances using rbd images."}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_b001a1b6","line":189,"range":{"start_line":189,"start_character":24,"end_line":189,"end_character":27},"updated":"2018-12-11 01:50:38.000000000","message":"And IIUC, this has to be rbd-only because we don\u0027t have any other shared storage imagebackends.","commit_id":"88037a7374ac5d1d99c01bce1b895795651a5ff9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"6d0b7d575f1e4b879e12a99f6f81366d3e1abc74","unresolved":false,"context_lines":[{"line_number":186,"context_line":"* ``[consoleauth]/token_ttl``"},{"line_number":187,"context_line":"\"\"\"),"},{"line_number":188,"context_line":"    cfg.BoolOpt("},{"line_number":189,"context_line":"        \u0027enable_libvirt_rbd_instance_dir_evac_cleanup\u0027,"},{"line_number":190,"context_line":"        default\u003dFalse,"},{"line_number":191,"context_line":"        help\u003d\"\"\""},{"line_number":192,"context_line":"Cleanup the instance directory during evacuation of instances using rbd images."}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_1035f5db","line":189,"range":{"start_line":189,"start_character":41,"end_line":189,"end_character":45},"updated":"2018-12-11 01:50:38.000000000","message":"I was wondering if this should be more general and say \"migration\" instead? Because I think the cleanup of the instance directory will occur during other instance moves (live migration, resize).","commit_id":"88037a7374ac5d1d99c01bce1b895795651a5ff9"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"013c1b78137c370190d7ea389aba2d629f2631a5","unresolved":false,"context_lines":[{"line_number":186,"context_line":"* ``[consoleauth]/token_ttl``"},{"line_number":187,"context_line":"\"\"\"),"},{"line_number":188,"context_line":"    cfg.BoolOpt("},{"line_number":189,"context_line":"        \u0027enable_libvirt_rbd_instance_dir_evac_cleanup\u0027,"},{"line_number":190,"context_line":"        default\u003dFalse,"},{"line_number":191,"context_line":"        help\u003d\"\"\""},{"line_number":192,"context_line":"Cleanup the instance directory during evacuation of instances using rbd images."}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_88cc7996","line":189,"range":{"start_line":189,"start_character":41,"end_line":189,"end_character":45},"in_reply_to":"3f79a3b5_1035f5db","updated":"2018-12-11 09:14:04.000000000","message":"That\u0027s already the case without this workaround thankfully as migrate_data is passed into cleanup for migrations. This in turn has is_shared_block_storage set to True for the rbd imagebackend that ensures the instance directory is cleaned here. I\u0027ll add a comment calling this out now.\n\nAlso FWIW this existing migration cleanup behaviour isn\u0027t correct as it doesn\u0027t take into account that the instance directory might be shared.","commit_id":"88037a7374ac5d1d99c01bce1b895795651a5ff9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"ad10a6163313a1e636b36a61cb075cf8b17aa3e0","unresolved":false,"context_lines":[{"line_number":186,"context_line":"* ``[consoleauth]/token_ttl``"},{"line_number":187,"context_line":"\"\"\"),"},{"line_number":188,"context_line":"    cfg.BoolOpt("},{"line_number":189,"context_line":"        \u0027enable_libvirt_rbd_instance_dir_evac_cleanup\u0027,"},{"line_number":190,"context_line":"        default\u003dFalse,"},{"line_number":191,"context_line":"        help\u003d\"\"\""},{"line_number":192,"context_line":"Cleanup the instance directory during evacuation of instances using rbd images."}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_8e10f6f6","line":189,"range":{"start_line":189,"start_character":41,"end_line":189,"end_character":45},"in_reply_to":"3f79a3b5_88cc7996","updated":"2018-12-11 18:59:19.000000000","message":"Oof, this is all so complicated. Thanks.","commit_id":"88037a7374ac5d1d99c01bce1b895795651a5ff9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a2b589019243cb57723a0441edbdc3175498a044","unresolved":false,"context_lines":[{"line_number":194,"context_line":"When enabled this workaround will ensure that the instance directory is removed"},{"line_number":195,"context_line":"during the cleanup of an evacuation when using the RBD imagebackend to host the"},{"line_number":196,"context_line":"instance disks. This will allow the instance to return to the local host in"},{"line_number":197,"context_line":"future without encountering issues due to the instance directory already"},{"line_number":198,"context_line":"existing."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":".. note:: Operators will need to ensure that the instance directory itself is"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_d4351cd6","line":197,"range":{"start_line":197,"start_character":28,"end_line":197,"end_character":34},"updated":"2018-12-11 19:31:26.000000000","message":"issues? Workarounds normally link to a bug for more details.","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"2f9d7b55e6b54968c48e298d612e49065e981629","unresolved":false,"context_lines":[{"line_number":194,"context_line":"When enabled this workaround will ensure that the instance directory is removed"},{"line_number":195,"context_line":"during the cleanup of an evacuation when using the RBD imagebackend to host the"},{"line_number":196,"context_line":"instance disks. This will allow the instance to return to the local host in"},{"line_number":197,"context_line":"future without encountering issues due to the instance directory already"},{"line_number":198,"context_line":"existing."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":".. note:: Operators will need to ensure that the instance directory itself is"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_2a00a004","line":197,"range":{"start_line":197,"start_character":28,"end_line":197,"end_character":34},"in_reply_to":"3f79a3b5_d4351cd6","updated":"2018-12-12 10:26:57.000000000","message":"Ah apologies, I\u0027ll reword this and point to the examples in bug #1414895","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a2b589019243cb57723a0441edbdc3175498a044","unresolved":false,"context_lines":[{"line_number":198,"context_line":"existing."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":".. note:: Operators will need to ensure that the instance directory itself is"},{"line_number":201,"context_line":"not shared between computes before enabling this workaround otherwise the"},{"line_number":202,"context_line":"console.log for the running instance on the destination will be lost."},{"line_number":203,"context_line":"\"\"\"),"},{"line_number":204,"context_line":"]"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_943fa4b2","line":202,"range":{"start_line":201,"start_character":0,"end_line":202,"end_character":69},"updated":"2018-12-11 19:31:26.000000000","message":"You need to indent these lines otherwise formatting is wrong:\n\nhttp://logs.openstack.org/78/618478/8/check/openstack-tox-docs/ce664df/html/configuration/config.html#workarounds.enable_libvirt_rbd_instance_dir_evac_cleanup","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"2f9d7b55e6b54968c48e298d612e49065e981629","unresolved":false,"context_lines":[{"line_number":198,"context_line":"existing."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":".. note:: Operators will need to ensure that the instance directory itself is"},{"line_number":201,"context_line":"not shared between computes before enabling this workaround otherwise the"},{"line_number":202,"context_line":"console.log for the running instance on the destination will be lost."},{"line_number":203,"context_line":"\"\"\"),"},{"line_number":204,"context_line":"]"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_2a1420eb","line":202,"range":{"start_line":201,"start_character":0,"end_line":202,"end_character":69},"in_reply_to":"3f79a3b5_943fa4b2","updated":"2018-12-12 10:26:57.000000000","message":"Done","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a2b589019243cb57723a0441edbdc3175498a044","unresolved":false,"context_lines":[{"line_number":200,"context_line":".. note:: Operators will need to ensure that the instance directory itself is"},{"line_number":201,"context_line":"not shared between computes before enabling this workaround otherwise the"},{"line_number":202,"context_line":"console.log for the running instance on the destination will be lost."},{"line_number":203,"context_line":"\"\"\"),"},{"line_number":204,"context_line":"]"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_f43298eb","line":203,"updated":"2018-12-11 19:31:26.000000000","message":"Add the normal \"Related options\" section. I can think of at least two:\n\n* compute_driver (libvirt)\n* [libvirt]/images_type (rbd)","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"2f9d7b55e6b54968c48e298d612e49065e981629","unresolved":false,"context_lines":[{"line_number":200,"context_line":".. note:: Operators will need to ensure that the instance directory itself is"},{"line_number":201,"context_line":"not shared between computes before enabling this workaround otherwise the"},{"line_number":202,"context_line":"console.log for the running instance on the destination will be lost."},{"line_number":203,"context_line":"\"\"\"),"},{"line_number":204,"context_line":"]"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_05c6f543","line":203,"in_reply_to":"3f79a3b5_f43298eb","updated":"2018-12-12 10:26:57.000000000","message":"Done","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"cd9fabbf2b0333828dbcb548bb8ba59d5047e304","unresolved":false,"context_lines":[{"line_number":204,"context_line":"  console.log and any additional files present in the instance directory will"},{"line_number":205,"context_line":"  be lost."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"Related options:"},{"line_number":208,"context_line":"* compute_driver (libvirt)"},{"line_number":209,"context_line":"* [libvirt]/images_type (rbd)"},{"line_number":210,"context_line":"\"\"\"),"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_20a75855","line":207,"updated":"2018-12-12 15:32:27.000000000","message":"Missing line.","commit_id":"e7e1b0cb48865cd16ab7aebbd4a7aef67c86c514"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5ccf21117f9195576727854e316e5b15fc0ff47a","unresolved":false,"context_lines":[{"line_number":215,"context_line":"\"\"\"),"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    cfg.BoolOpt("},{"line_number":218,"context_line":"        \u0027ensure_libvirt_rbd_instance_dir_cleanup\u0027,"},{"line_number":219,"context_line":"        default\u003dFalse,"},{"line_number":220,"context_line":"        help\u003d\"\"\""},{"line_number":221,"context_line":"Ensure the instance directory is removed during clean up when using rbd."}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_8771e648","line":218,"range":{"start_line":218,"start_character":24,"end_line":218,"end_character":27},"updated":"2018-12-21 22:46:52.000000000","message":"I\u0027m not sure that \u0027rbd\u0027 belongs in here - makes it sound like the instance files are on rbd shared storage, which they\u0027re not. I realize this is all related to the rbd imagebackend but that\u0027s about the disks, not the instance files. Anyway, it\u0027s fine to leave this in.","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"5a7fb0478fc763becfc50a8fe01552b8ccc18468","unresolved":false,"context_lines":[{"line_number":215,"context_line":"\"\"\"),"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    cfg.BoolOpt("},{"line_number":218,"context_line":"        \u0027ensure_libvirt_rbd_instance_dir_cleanup\u0027,"},{"line_number":219,"context_line":"        default\u003dFalse,"},{"line_number":220,"context_line":"        help\u003d\"\"\""},{"line_number":221,"context_line":"Ensure the instance directory is removed during clean up when using rbd."}],"source_content_type":"text/x-python","patch_set":17,"id":"1f769fc5_d0abdd72","line":218,"range":{"start_line":218,"start_character":24,"end_line":218,"end_character":27},"in_reply_to":"3f79a3b5_8771e648","updated":"2018-12-24 12:14:02.000000000","message":"Done","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5ccf21117f9195576727854e316e5b15fc0ff47a","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        \u0027ensure_libvirt_rbd_instance_dir_cleanup\u0027,"},{"line_number":219,"context_line":"        default\u003dFalse,"},{"line_number":220,"context_line":"        help\u003d\"\"\""},{"line_number":221,"context_line":"Ensure the instance directory is removed during clean up when using rbd."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"When enabled this workaround will ensure that the instance directory is always"},{"line_number":224,"context_line":"removed during cleanup on hosts using the RBD imagebackend. This avoids the"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_c7ad9ea3","line":221,"range":{"start_line":221,"start_character":11,"end_line":221,"end_character":19},"updated":"2018-12-21 22:46:52.000000000","message":"nit: \"(local) instance directory\"? Maybe that\u0027s not making anything more clear about this.","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"5a7fb0478fc763becfc50a8fe01552b8ccc18468","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        \u0027ensure_libvirt_rbd_instance_dir_cleanup\u0027,"},{"line_number":219,"context_line":"        default\u003dFalse,"},{"line_number":220,"context_line":"        help\u003d\"\"\""},{"line_number":221,"context_line":"Ensure the instance directory is removed during clean up when using rbd."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"When enabled this workaround will ensure that the instance directory is always"},{"line_number":224,"context_line":"removed during cleanup on hosts using the RBD imagebackend. This avoids the"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f769fc5_309fb151","line":221,"range":{"start_line":221,"start_character":11,"end_line":221,"end_character":19},"in_reply_to":"3f79a3b5_c7ad9ea3","updated":"2018-12-24 12:14:02.000000000","message":"Done","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5ccf21117f9195576727854e316e5b15fc0ff47a","unresolved":false,"context_lines":[{"line_number":221,"context_line":"Ensure the instance directory is removed during clean up when using rbd."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"When enabled this workaround will ensure that the instance directory is always"},{"line_number":224,"context_line":"removed during cleanup on hosts using the RBD imagebackend. This avoids the"},{"line_number":225,"context_line":"following bugs with evacuation and revert resize clean up that lead to the"},{"line_number":226,"context_line":"instance directory remaining on the host. This will in turn result in"},{"line_number":227,"context_line":"DestinationDiskExists errors being raised if the instances ever attempt to"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_87c32659","line":224,"range":{"start_line":224,"start_character":42,"end_line":224,"end_character":58},"updated":"2018-12-21 22:46:52.000000000","message":"This is kind of code-speak. It would probably be more clear to say, \"using ``[libvirt]/images_type\u003drbd``.\"","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"5a7fb0478fc763becfc50a8fe01552b8ccc18468","unresolved":false,"context_lines":[{"line_number":221,"context_line":"Ensure the instance directory is removed during clean up when using rbd."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"When enabled this workaround will ensure that the instance directory is always"},{"line_number":224,"context_line":"removed during cleanup on hosts using the RBD imagebackend. This avoids the"},{"line_number":225,"context_line":"following bugs with evacuation and revert resize clean up that lead to the"},{"line_number":226,"context_line":"instance directory remaining on the host. This will in turn result in"},{"line_number":227,"context_line":"DestinationDiskExists errors being raised if the instances ever attempt to"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f769fc5_10a2b59b","line":224,"range":{"start_line":224,"start_character":42,"end_line":224,"end_character":58},"in_reply_to":"3f79a3b5_87c32659","updated":"2018-12-24 12:14:02.000000000","message":"Done","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5ccf21117f9195576727854e316e5b15fc0ff47a","unresolved":false,"context_lines":[{"line_number":223,"context_line":"When enabled this workaround will ensure that the instance directory is always"},{"line_number":224,"context_line":"removed during cleanup on hosts using the RBD imagebackend. This avoids the"},{"line_number":225,"context_line":"following bugs with evacuation and revert resize clean up that lead to the"},{"line_number":226,"context_line":"instance directory remaining on the host. This will in turn result in"},{"line_number":227,"context_line":"DestinationDiskExists errors being raised if the instances ever attempt to"},{"line_number":228,"context_line":"return to these hosts:"},{"line_number":229,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_079dd669","line":226,"range":{"start_line":226,"start_character":42,"end_line":226,"end_character":59},"updated":"2018-12-21 22:46:52.000000000","message":"This reads like if you enable this workaround, you\u0027ll hit DestinationDiskExists and blow up. But what you mean is, if you\u0027re using [libvirt]/images_type\u003drbd but instance files (console log, kernel/ramdisk images, etc) are not on shared storage, you will hit DestinationDiskExists failures if the server is ever moved back to the same host with old files.\n\nCorrect? I\u0027d probably re-word that to avoid confusion.","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"5a7fb0478fc763becfc50a8fe01552b8ccc18468","unresolved":false,"context_lines":[{"line_number":223,"context_line":"When enabled this workaround will ensure that the instance directory is always"},{"line_number":224,"context_line":"removed during cleanup on hosts using the RBD imagebackend. This avoids the"},{"line_number":225,"context_line":"following bugs with evacuation and revert resize clean up that lead to the"},{"line_number":226,"context_line":"instance directory remaining on the host. This will in turn result in"},{"line_number":227,"context_line":"DestinationDiskExists errors being raised if the instances ever attempt to"},{"line_number":228,"context_line":"return to these hosts:"},{"line_number":229,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1f769fc5_709d2958","line":226,"range":{"start_line":226,"start_character":42,"end_line":226,"end_character":59},"in_reply_to":"3f79a3b5_079dd669","updated":"2018-12-24 12:14:02.000000000","message":"Done","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5ccf21117f9195576727854e316e5b15fc0ff47a","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"https://bugs.launchpad.net/nova/+bug/1761062"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":".. note:: Operators will need to ensure that the instance directory itself is"},{"line_number":235,"context_line":"  not shared between computes before enabling this workaround otherwise the"},{"line_number":236,"context_line":"  console.log, kernels, ramdisks and any additional files being used by the"},{"line_number":237,"context_line":"  running instance will be lost."}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_87880625","line":234,"range":{"start_line":234,"start_character":3,"end_line":234,"end_character":7},"updated":"2018-12-21 22:46:52.000000000","message":"This should probably be a warning...because data loss is bad.","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"5a7fb0478fc763becfc50a8fe01552b8ccc18468","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"https://bugs.launchpad.net/nova/+bug/1761062"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":".. note:: Operators will need to ensure that the instance directory itself is"},{"line_number":235,"context_line":"  not shared between computes before enabling this workaround otherwise the"},{"line_number":236,"context_line":"  console.log, kernels, ramdisks and any additional files being used by the"},{"line_number":237,"context_line":"  running instance will be lost."}],"source_content_type":"text/x-python","patch_set":17,"id":"1f769fc5_50982d69","line":234,"range":{"start_line":234,"start_character":3,"end_line":234,"end_character":7},"in_reply_to":"3f79a3b5_87880625","updated":"2018-12-24 12:14:02.000000000","message":"Done","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"99a088c0686f5577fa40d92cdb01dcb5135d2523","unresolved":false,"context_lines":[{"line_number":236,"context_line":"  console.log, kernels, ramdisks and any additional files being used by the"},{"line_number":237,"context_line":"  running instance will be lost."},{"line_number":238,"context_line":""},{"line_number":239,"context_line":".. note:: Additionally hard rebooting an instance with this workaround enabled"},{"line_number":240,"context_line":"  will result in the console.log being truncated. Also any kernels or ramdisks"},{"line_number":241,"context_line":"  provided to the instance as image properties will be recreated if still"},{"line_number":242,"context_line":"  available within the image service."},{"line_number":243,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_75d277d2","line":240,"range":{"start_line":239,"start_character":10,"end_line":240,"end_character":49},"updated":"2018-12-19 03:58:59.000000000","message":"I did a couple of tests with devstack and found that console.log truncation happens for a normal, non-rbd instance during both soft and hard reboot. FWIW.","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"5a7fb0478fc763becfc50a8fe01552b8ccc18468","unresolved":false,"context_lines":[{"line_number":236,"context_line":"  console.log, kernels, ramdisks and any additional files being used by the"},{"line_number":237,"context_line":"  running instance will be lost."},{"line_number":238,"context_line":""},{"line_number":239,"context_line":".. note:: Additionally hard rebooting an instance with this workaround enabled"},{"line_number":240,"context_line":"  will result in the console.log being truncated. Also any kernels or ramdisks"},{"line_number":241,"context_line":"  provided to the instance as image properties will be recreated if still"},{"line_number":242,"context_line":"  available within the image service."},{"line_number":243,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1f769fc5_b093c14f","line":240,"range":{"start_line":239,"start_character":10,"end_line":240,"end_character":49},"in_reply_to":"3f79a3b5_478e6e30","updated":"2018-12-24 12:14:02.000000000","message":"Done","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5ccf21117f9195576727854e316e5b15fc0ff47a","unresolved":false,"context_lines":[{"line_number":236,"context_line":"  console.log, kernels, ramdisks and any additional files being used by the"},{"line_number":237,"context_line":"  running instance will be lost."},{"line_number":238,"context_line":""},{"line_number":239,"context_line":".. note:: Additionally hard rebooting an instance with this workaround enabled"},{"line_number":240,"context_line":"  will result in the console.log being truncated. Also any kernels or ramdisks"},{"line_number":241,"context_line":"  provided to the instance as image properties will be recreated if still"},{"line_number":242,"context_line":"  available within the image service."},{"line_number":243,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_478e6e30","line":240,"range":{"start_line":239,"start_character":10,"end_line":240,"end_character":49},"in_reply_to":"3f79a3b5_75d277d2","updated":"2018-12-21 22:46:52.000000000","message":"So if it\u0027s normal, do we need to have a scary note in here? If I were reading this (I\u0027m reading it right now!) I\u0027d wonder, \"wtf does this mean operation-wise? is this bad? what if I screw this up? will the system recover or will something break?\"\n\nSo you might want to phrase this in such a way that it explains the consequences of this, not just what happens. What would be the end user/operator impact?","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5ccf21117f9195576727854e316e5b15fc0ff47a","unresolved":false,"context_lines":[{"line_number":244,"context_line":"Related options:"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"* ``compute_driver`` (libvirt)"},{"line_number":247,"context_line":"* ``[libvirt]/images_type`` (rbd)"},{"line_number":248,"context_line":"\"\"\"),"},{"line_number":249,"context_line":"]"},{"line_number":250,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_676cca9d","line":247,"updated":"2018-12-21 22:46:52.000000000","message":"We should probably also call out this workarounds option from the images_type option help, since I\u0027d probably see that before the workaround:\n\nhttps://github.com/openstack/nova/blob/a189d1185c0a3458c28015a6cb46aac3bfa9d152/nova/conf/libvirt.py#L799\n\nSimilarly, I think https://docs.openstack.org/nova/latest/configuration/config.html#DEFAULT.instances_path should be listed here as related and you probably want to similarly refer to this workaround option from the \u0027instances_path\u0027 help for awareness.","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"5a7fb0478fc763becfc50a8fe01552b8ccc18468","unresolved":false,"context_lines":[{"line_number":244,"context_line":"Related options:"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"* ``compute_driver`` (libvirt)"},{"line_number":247,"context_line":"* ``[libvirt]/images_type`` (rbd)"},{"line_number":248,"context_line":"\"\"\"),"},{"line_number":249,"context_line":"]"},{"line_number":250,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1f769fc5_908ec525","line":247,"in_reply_to":"3f79a3b5_676cca9d","updated":"2018-12-24 12:14:02.000000000","message":"Done","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"07d53e8ecf476586da63225728b7e95b4a723697","unresolved":false,"context_lines":[{"line_number":229,"context_line":""},{"line_number":230,"context_line":"https://bugs.launchpad.net/nova/+bug/1761062"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"Both of these bugs can then result in DestinationDiskExists errors being raised"},{"line_number":233,"context_line":"if the instances ever attempt to return to the host."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":".. warning:: Operators will need to ensure that the instance directory itself"}],"source_content_type":"text/x-python","patch_set":18,"id":"1f769fc5_cbc81076","line":232,"range":{"start_line":232,"start_character":38,"end_line":232,"end_character":59},"updated":"2018-12-24 14:30:00.000000000","message":"``literal``","commit_id":"5f2ec710cf38be6c23e04ce40e8a298d50e3b79d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"04004bee6785d3e749829e3fdd5346d87110c174","unresolved":false,"context_lines":[{"line_number":215,"context_line":"\"\"\"),"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    cfg.BoolOpt("},{"line_number":218,"context_line":"        \u0027ensure_libvirt_rbd_instance_dir_cleanup\u0027,"},{"line_number":219,"context_line":"        default\u003dFalse,"},{"line_number":220,"context_line":"        help\u003d\"\"\""},{"line_number":221,"context_line":"Ensure the instance directory is removed during clean up when using rbd."}],"source_content_type":"text/x-python","patch_set":19,"id":"1f769fc5_eb2aac8e","line":218,"range":{"start_line":218,"start_character":24,"end_line":218,"end_character":27},"updated":"2018-12-24 16:02:35.000000000","message":"Looks like the comment from mriedem is still unaddressed?\n\nhttps://review.openstack.org/#/c/618478/17/nova/conf/workarounds.py@218","commit_id":"63d77bf63fd474d10fd7cac5f725784737bafa1a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"35ada0f1410e4685cbbe4ba1425b99942c4b7713","unresolved":false,"context_lines":[{"line_number":215,"context_line":"\"\"\"),"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    cfg.BoolOpt("},{"line_number":218,"context_line":"        \u0027ensure_libvirt_rbd_instance_dir_cleanup\u0027,"},{"line_number":219,"context_line":"        default\u003dFalse,"},{"line_number":220,"context_line":"        help\u003d\"\"\""},{"line_number":221,"context_line":"Ensure the instance directory is removed during clean up when using rbd."}],"source_content_type":"text/x-python","patch_set":19,"id":"1f769fc5_7d989069","line":218,"range":{"start_line":218,"start_character":24,"end_line":218,"end_character":27},"in_reply_to":"1f769fc5_eb2aac8e","updated":"2018-12-26 16:40:34.000000000","message":"I was just thinking out load - it\u0027s fine to leave rbd in the option name.","commit_id":"63d77bf63fd474d10fd7cac5f725784737bafa1a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"04004bee6785d3e749829e3fdd5346d87110c174","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        \u0027ensure_libvirt_rbd_instance_dir_cleanup\u0027,"},{"line_number":219,"context_line":"        default\u003dFalse,"},{"line_number":220,"context_line":"        help\u003d\"\"\""},{"line_number":221,"context_line":"Ensure the instance directory is removed during clean up when using rbd."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"When enabled this workaround will ensure that the instance directory is always"},{"line_number":224,"context_line":"removed during cleanup on hosts using ``[libvirt]/images_type\u003drbd``. This"}],"source_content_type":"text/x-python","patch_set":19,"id":"1f769fc5_660d7336","line":221,"range":{"start_line":221,"start_character":11,"end_line":221,"end_character":19},"updated":"2018-12-24 16:02:35.000000000","message":"This one too?\n\nhttps://review.openstack.org/#/c/618478/17/nova/conf/workarounds.py@221","commit_id":"63d77bf63fd474d10fd7cac5f725784737bafa1a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"35ada0f1410e4685cbbe4ba1425b99942c4b7713","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        \u0027ensure_libvirt_rbd_instance_dir_cleanup\u0027,"},{"line_number":219,"context_line":"        default\u003dFalse,"},{"line_number":220,"context_line":"        help\u003d\"\"\""},{"line_number":221,"context_line":"Ensure the instance directory is removed during clean up when using rbd."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"When enabled this workaround will ensure that the instance directory is always"},{"line_number":224,"context_line":"removed during cleanup on hosts using ``[libvirt]/images_type\u003drbd``. This"}],"source_content_type":"text/x-python","patch_set":19,"id":"1f769fc5_9d9d6c5b","line":221,"range":{"start_line":221,"start_character":11,"end_line":221,"end_character":19},"in_reply_to":"1f769fc5_660d7336","updated":"2018-12-26 16:40:34.000000000","message":"Again, thinking out load - I wasn\u0027t sure if adding \"(local)\" to this made it any more clear.","commit_id":"63d77bf63fd474d10fd7cac5f725784737bafa1a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bd5072f1b5ee23de41d93ff81e2ea58fac2c2d97","unresolved":false,"context_lines":[{"line_number":232,"context_line":"Both of these bugs can then result in ``DestinationDiskExists`` errors being"},{"line_number":233,"context_line":"raised if the instances ever attempt to return to the host."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":".. warning:: Operators will need to ensure that the instance directory itself"},{"line_number":236,"context_line":"  is not shared between computes before enabling this workaround otherwise the"},{"line_number":237,"context_line":"  console.log, kernels, ramdisks and any additional files being used by the"},{"line_number":238,"context_line":"  running instance will be lost."}],"source_content_type":"text/x-python","patch_set":19,"id":"1f769fc5_f8010eb1","line":235,"range":{"start_line":235,"start_character":52,"end_line":235,"end_character":70},"updated":"2018-12-26 20:20:12.000000000","message":"nit: to be extra clear, could probably add, \"ensure that the instance directory itself, specified via ``[DEFAULT]/instances_path``, is not shared...\".","commit_id":"63d77bf63fd474d10fd7cac5f725784737bafa1a"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"9e85d106309a3f2c495e60223449426cc73a7453","unresolved":false,"context_lines":[{"line_number":232,"context_line":"Both of these bugs can then result in ``DestinationDiskExists`` errors being"},{"line_number":233,"context_line":"raised if the instances ever attempt to return to the host."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":".. warning:: Operators will need to ensure that the instance directory itself"},{"line_number":236,"context_line":"  is not shared between computes before enabling this workaround otherwise the"},{"line_number":237,"context_line":"  console.log, kernels, ramdisks and any additional files being used by the"},{"line_number":238,"context_line":"  running instance will be lost."}],"source_content_type":"text/x-python","patch_set":19,"id":"1f769fc5_c12bde7f","line":235,"range":{"start_line":235,"start_character":52,"end_line":235,"end_character":70},"in_reply_to":"1f769fc5_f8010eb1","updated":"2019-01-02 10:47:29.000000000","message":"Done","commit_id":"63d77bf63fd474d10fd7cac5f725784737bafa1a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bd5072f1b5ee23de41d93ff81e2ea58fac2c2d97","unresolved":false,"context_lines":[{"line_number":241,"context_line":""},{"line_number":242,"context_line":"* ``compute_driver`` (libvirt)"},{"line_number":243,"context_line":"* ``[libvirt]/images_type`` (rbd)"},{"line_number":244,"context_line":"* ``instance_path``"},{"line_number":245,"context_line":"\"\"\"),"},{"line_number":246,"context_line":"]"},{"line_number":247,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1f769fc5_18ff2aab","line":244,"range":{"start_line":244,"start_character":4,"end_line":244,"end_character":17},"updated":"2018-12-26 20:20:12.000000000","message":"instances_path","commit_id":"63d77bf63fd474d10fd7cac5f725784737bafa1a"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"9e85d106309a3f2c495e60223449426cc73a7453","unresolved":false,"context_lines":[{"line_number":241,"context_line":""},{"line_number":242,"context_line":"* ``compute_driver`` (libvirt)"},{"line_number":243,"context_line":"* ``[libvirt]/images_type`` (rbd)"},{"line_number":244,"context_line":"* ``instance_path``"},{"line_number":245,"context_line":"\"\"\"),"},{"line_number":246,"context_line":"]"},{"line_number":247,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1f769fc5_61220aa7","line":244,"range":{"start_line":244,"start_character":4,"end_line":244,"end_character":17},"in_reply_to":"1f769fc5_18ff2aab","updated":"2019-01-02 10:47:29.000000000","message":"Done","commit_id":"63d77bf63fd474d10fd7cac5f725784737bafa1a"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"ad10a6163313a1e636b36a61cb075cf8b17aa3e0","unresolved":false,"context_lines":[{"line_number":17143,"context_line":"            _undefine_domain, save, delete_instance_files, unfilter_instance):"},{"line_number":17144,"context_line":"        CONF.set_override(\u0027images_type\u0027, \u0027rbd\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":17145,"context_line":"        CONF.set_override(\u0027enable_libvirt_rbd_instance_dir_evac_cleanup\u0027,"},{"line_number":17146,"context_line":"                          True, group\u003d\u0027workarounds\u0027)"},{"line_number":17147,"context_line":"        instance_opts \u003d self.test_instance"},{"line_number":17148,"context_line":"        instance_opts[\u0027host\u0027] \u003d \u0027remote_host\u0027"},{"line_number":17149,"context_line":"        instance \u003d objects.Instance(self.context, **instance_opts)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_aee052f7","line":17146,"updated":"2018-12-11 18:59:19.000000000","message":"I think the usual way to set these would be:\n\n self.flags(images_type\u003d\u0027rbd\u0027, group\u003d\u0027libvirt\u0027)\n self.flags(enable_libvirt_rbd_instance_dir_evac_cleanup\u003dTrue, group\u003d\u0027workarounds\u0027)","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"2f9d7b55e6b54968c48e298d612e49065e981629","unresolved":false,"context_lines":[{"line_number":17143,"context_line":"            _undefine_domain, save, delete_instance_files, unfilter_instance):"},{"line_number":17144,"context_line":"        CONF.set_override(\u0027images_type\u0027, \u0027rbd\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":17145,"context_line":"        CONF.set_override(\u0027enable_libvirt_rbd_instance_dir_evac_cleanup\u0027,"},{"line_number":17146,"context_line":"                          True, group\u003d\u0027workarounds\u0027)"},{"line_number":17147,"context_line":"        instance_opts \u003d self.test_instance"},{"line_number":17148,"context_line":"        instance_opts[\u0027host\u0027] \u003d \u0027remote_host\u0027"},{"line_number":17149,"context_line":"        instance \u003d objects.Instance(self.context, **instance_opts)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_25ec51bc","line":17146,"in_reply_to":"3f79a3b5_aee052f7","updated":"2018-12-12 10:26:57.000000000","message":"Done","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"ced4aca33a50e3dab8dd0d10477caddcd5c3054d","unresolved":false,"context_lines":[{"line_number":17149,"context_line":"        instance \u003d objects.Instance(self.context, **instance_opts)"},{"line_number":17150,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI())"},{"line_number":17151,"context_line":"        drvr.cleanup(self.context, instance, network_info\u003d{},"},{"line_number":17152,"context_line":"                     destroy_disks\u003dFalse)"},{"line_number":17153,"context_line":"        delete_instance_files.assert_called_once_with(instance)"},{"line_number":17154,"context_line":"        self.assertEqual(1, int(instance.system_metadata[\u0027clean_attempts\u0027]))"},{"line_number":17155,"context_line":"        self.assertTrue(instance.cleaned)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_51ae08a0","line":17152,"updated":"2018-12-11 11:40:25.000000000","message":"A comment here might have been nice: destroy_disks\u003dFalse because check_instance_shared_storage_local() in the libvirt driver returns None when the image backend is rbd, which is ultimately what we\u0027re checking in init_host.","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"2f9d7b55e6b54968c48e298d612e49065e981629","unresolved":false,"context_lines":[{"line_number":17149,"context_line":"        instance \u003d objects.Instance(self.context, **instance_opts)"},{"line_number":17150,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI())"},{"line_number":17151,"context_line":"        drvr.cleanup(self.context, instance, network_info\u003d{},"},{"line_number":17152,"context_line":"                     destroy_disks\u003dFalse)"},{"line_number":17153,"context_line":"        delete_instance_files.assert_called_once_with(instance)"},{"line_number":17154,"context_line":"        self.assertEqual(1, int(instance.system_metadata[\u0027clean_attempts\u0027]))"},{"line_number":17155,"context_line":"        self.assertTrue(instance.cleaned)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_c53d5d2b","line":17152,"in_reply_to":"3f79a3b5_51ae08a0","updated":"2018-12-12 10:26:57.000000000","message":"Done","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"59c3bddbee79a32f2a37a8ff83fdea028b034ee1","unresolved":false,"context_lines":[{"line_number":1071,"context_line":"        if ((destroy_disks or is_shared_block_storage) or"},{"line_number":1072,"context_line":"            (CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027 and"},{"line_number":1073,"context_line":"             CONF.workarounds.ensure_libvirt_evac_instance_dir_cleanup_rbd and"},{"line_number":1074,"context_line":"             instance.host !\u003d CONF.host)):"},{"line_number":1075,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":1076,"context_line":"                                                        \u00270\u0027))"},{"line_number":1077,"context_line":"            success \u003d self.delete_instance_files(instance)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_04fd1b06","line":1074,"updated":"2018-12-05 17:04:10.000000000","message":"I\u0027ve been thinking about some related cleanup issues recently, and I think we can simplify the cleanup discussion by explicitly pointing out that there are (currently) 2 types of cleanup:\n\n* Migration: The workload is still present, but elsewhere. This covers cleanup after live migrate, cold migrate, and evacuate. We must not cleanup shared resources, only resources local to this hypervisor.\n\n* Deletion: The workload is going away. Cleanup everything.\n\nWe have a bug that we\u0027re not cleaning up the instance directory for a migration cleanup if the backend is rbd.\n\nFirstly we don\u0027t have a good way without a more invasive change of asserting that the operator doesn\u0027t have both rbd and nfs instance storage, hence the requirement for the workaround. The workaround is an assertion by the operator that they\u0027re not doing this, and this is safe.\n\nis_shared_block_storage isn\u0027t set when called during evacuate cleanup, and destroy_disks is wrong in general because ComputeManager attempts to second guess the hypervisor, so ignoring these 2 values is correct.\n\nThe assertion therefore is:\n\n* backend is rbd\n* operator asserts that they aren\u0027t using shared instance storage\n* it\u0027s a migration cleanup\n\nNote that we must assert that it\u0027s a migration cleanup, because we also call cleanup(destroy_disks\u003dFalse) from hard reboot, and we don\u0027t want to delete the instance directory in that case.\n\nThis looks correct to me, and a backportable workaround.\n\nIt\u0027s obviously a hack, though, and I\u0027d like to see it replaced with a better fix. I think the way forward here is to pass the migration/deletion intent to cleanup and have the virt driver decide what needs to be cleaned up, rather than second guessing in ComputeManager.","commit_id":"085fe6de688923540e13440f9189310e4cc15194"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"331efb899b74b3fe00e7ba3f5b1f247cd90a8250","unresolved":false,"context_lines":[{"line_number":1071,"context_line":"        if ((destroy_disks or is_shared_block_storage) or"},{"line_number":1072,"context_line":"            (CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027 and"},{"line_number":1073,"context_line":"             CONF.workarounds.ensure_libvirt_evac_instance_dir_cleanup_rbd and"},{"line_number":1074,"context_line":"             instance.host !\u003d CONF.host)):"},{"line_number":1075,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":1076,"context_line":"                                                        \u00270\u0027))"},{"line_number":1077,"context_line":"            success \u003d self.delete_instance_files(instance)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_590dea30","line":1074,"updated":"2018-12-10 13:23:26.000000000","message":"I\u0027ve had another look this morning and I can\u0027t see how LM could fail in a way where we call cleanup() on the source with instance.host pointing to the destination during a failure where we would end up with the instance actually running on the source. I\u0027m going to repsin to rework the comment here and add the kernel etc to the list of files removed when using this workaround.","commit_id":"085fe6de688923540e13440f9189310e4cc15194"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"f85500a0e329c24f38c994a98c5d1a52ab875012","unresolved":false,"context_lines":[{"line_number":1071,"context_line":"        if ((destroy_disks or is_shared_block_storage) or"},{"line_number":1072,"context_line":"            (CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027 and"},{"line_number":1073,"context_line":"             CONF.workarounds.ensure_libvirt_evac_instance_dir_cleanup_rbd and"},{"line_number":1074,"context_line":"             instance.host !\u003d CONF.host)):"},{"line_number":1075,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":1076,"context_line":"                                                        \u00270\u0027))"},{"line_number":1077,"context_line":"            success \u003d self.delete_instance_files(instance)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_70904598","line":1074,"range":{"start_line":1074,"start_character":13,"end_line":1074,"end_character":39},"updated":"2018-12-05 20:18:31.000000000","message":"Just a note on the instance.host/CONF.host comparison, we need to be careful here if there\u0027s a way (I don\u0027t yet know if there is) that the migration has failed before completion but instance.host has already been updated to the destination, to avoid deleting the instance directory in that case.","commit_id":"085fe6de688923540e13440f9189310e4cc15194"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"f85500a0e329c24f38c994a98c5d1a52ab875012","unresolved":false,"context_lines":[{"line_number":1071,"context_line":"        if ((destroy_disks or is_shared_block_storage) or"},{"line_number":1072,"context_line":"            (CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027 and"},{"line_number":1073,"context_line":"             CONF.workarounds.ensure_libvirt_evac_instance_dir_cleanup_rbd and"},{"line_number":1074,"context_line":"             instance.host !\u003d CONF.host)):"},{"line_number":1075,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":1076,"context_line":"                                                        \u00270\u0027))"},{"line_number":1077,"context_line":"            success \u003d self.delete_instance_files(instance)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_b0fd7d07","line":1074,"in_reply_to":"3f79a3b5_04fd1b06","updated":"2018-12-05 20:18:31.000000000","message":"Appreciate this extra note about what\u0027s going on, but unfortunately I\u0027m still confused about what is happening here.\n\nIs the situation in this bug where the backend is rbd but the rbd storage is not shared between compute hosts? And thus we want to ignore self.image_backend.backend().is_shared_block_storage() which returns true for the rbd backend?","commit_id":"085fe6de688923540e13440f9189310e4cc15194"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"6d0b7d575f1e4b879e12a99f6f81366d3e1abc74","unresolved":false,"context_lines":[{"line_number":1071,"context_line":"        if ((destroy_disks or is_shared_block_storage) or"},{"line_number":1072,"context_line":"            (CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027 and"},{"line_number":1073,"context_line":"             CONF.workarounds.ensure_libvirt_evac_instance_dir_cleanup_rbd and"},{"line_number":1074,"context_line":"             instance.host !\u003d CONF.host)):"},{"line_number":1075,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":1076,"context_line":"                                                        \u00270\u0027))"},{"line_number":1077,"context_line":"            success \u003d self.delete_instance_files(instance)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_100c1538","line":1074,"in_reply_to":"3f79a3b5_590dea30","updated":"2018-12-11 01:50:38.000000000","message":"Thanks for confirming that.","commit_id":"085fe6de688923540e13440f9189310e4cc15194"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"1f64033c2c804d43b7c0cffc9a50a926f6dec7b6","unresolved":false,"context_lines":[{"line_number":1071,"context_line":"        if ((destroy_disks or is_shared_block_storage) or"},{"line_number":1072,"context_line":"            (CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027 and"},{"line_number":1073,"context_line":"             CONF.workarounds.ensure_libvirt_evac_instance_dir_cleanup_rbd and"},{"line_number":1074,"context_line":"             instance.host !\u003d CONF.host)):"},{"line_number":1075,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":1076,"context_line":"                                                        \u00270\u0027))"},{"line_number":1077,"context_line":"            success \u003d self.delete_instance_files(instance)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_d38d997d","line":1074,"range":{"start_line":1074,"start_character":13,"end_line":1074,"end_character":39},"in_reply_to":"3f79a3b5_70904598","updated":"2018-12-06 09:48:18.000000000","message":"\u003e Just a note on the instance.host/CONF.host comparison, we need to\n \u003e be careful here if there\u0027s a way (I don\u0027t yet know if there is)\n \u003e that the migration has failed before completion but instance.host\n \u003e has already been updated to the destination, to avoid deleting the\n \u003e instance directory in that case.\n\nI don\u0027t think that we would call cleanup on the source host in that situation as we would want the instance to continue running but I\u0027m likely missing something.","commit_id":"085fe6de688923540e13440f9189310e4cc15194"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"1f64033c2c804d43b7c0cffc9a50a926f6dec7b6","unresolved":false,"context_lines":[{"line_number":1071,"context_line":"        if ((destroy_disks or is_shared_block_storage) or"},{"line_number":1072,"context_line":"            (CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027 and"},{"line_number":1073,"context_line":"             CONF.workarounds.ensure_libvirt_evac_instance_dir_cleanup_rbd and"},{"line_number":1074,"context_line":"             instance.host !\u003d CONF.host)):"},{"line_number":1075,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":1076,"context_line":"                                                        \u00270\u0027))"},{"line_number":1077,"context_line":"            success \u003d self.delete_instance_files(instance)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_b3a7bd0a","line":1074,"in_reply_to":"3f79a3b5_b0fd7d07","updated":"2018-12-06 09:48:18.000000000","message":"\u003e Appreciate this extra note about what\u0027s going on, but unfortunately\n \u003e I\u0027m still confused about what is happening here.\n \u003e \n \u003e Is the situation in this bug where the backend is rbd but the rbd\n \u003e storage is not shared between compute hosts? And thus we want to\n \u003e ignore self.image_backend.backend().is_shared_block_storage() which\n \u003e returns true for the rbd backend?\n\nNot quite, the issue is that all instance disks are shared via rbd while the instance directory itself under /var/lib/nova/instances is not and as a results needs to be removed during cleanup. I can reword the above comment to call out the difference between the disks and directory more explicitly if it would help.","commit_id":"085fe6de688923540e13440f9189310e4cc15194"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"667822fd21142ac503fbf4f1ff4021cacde1f618","unresolved":false,"context_lines":[{"line_number":1071,"context_line":"        if ((destroy_disks or is_shared_block_storage) or"},{"line_number":1072,"context_line":"            (CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027 and"},{"line_number":1073,"context_line":"             CONF.workarounds.ensure_libvirt_evac_instance_dir_cleanup_rbd and"},{"line_number":1074,"context_line":"             instance.host !\u003d CONF.host)):"},{"line_number":1075,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":1076,"context_line":"                                                        \u00270\u0027))"},{"line_number":1077,"context_line":"            success \u003d self.delete_instance_files(instance)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_ddc4b10f","line":1074,"range":{"start_line":1074,"start_character":13,"end_line":1074,"end_character":39},"in_reply_to":"3f79a3b5_d38d997d","updated":"2018-12-07 10:19:14.000000000","message":"That\u0027s a really good point about setting instance.host. I know I\u0027ve been hit in the past when it\u0027s been hasn\u0027t been set in the place which seems most obvious.\n\nWe\u0027re hopefully ok, but I think it\u0027s worth explicitly tracing to make sure.","commit_id":"085fe6de688923540e13440f9189310e4cc15194"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"ced4aca33a50e3dab8dd0d10477caddcd5c3054d","unresolved":false,"context_lines":[{"line_number":1074,"context_line":"        if ((destroy_disks or is_shared_block_storage) or"},{"line_number":1075,"context_line":"            (CONF.workarounds.enable_libvirt_rbd_instance_dir_evac_cleanup and"},{"line_number":1076,"context_line":"             CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027 and"},{"line_number":1077,"context_line":"             instance.host !\u003d CONF.host)):"},{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":1080,"context_line":"                                                        \u00270\u0027))"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_314fcc31","line":1077,"updated":"2018-12-11 11:40:25.000000000","message":"After Mel\u0027s earlier comment I did my own quick audit, too. I think the only way this instance.host check could result in unwanted loss of data is if instance.host has been set to dest, but the data is not present there, yet. The 3 opportunities for doing that are evacuation, live migration, and resize.\n\nEvacuate uses the rebuild workflow, which updates instance.host after a successful call to _do_rebuild_instance.\n\nResize updates instance.host after a successful call to migrate_disk_and_power_off.\n\nLive migration updates instance.host in post_live_migration_at_destination, which is called after the data has moved.","commit_id":"f2c6dd9767e4dfb6cf78df91df545c086cb95650"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"cd9fabbf2b0333828dbcb548bb8ba59d5047e304","unresolved":false,"context_lines":[{"line_number":1067,"context_line":"        # NOTE(lyarwood): The following workaround allows operators to ensure"},{"line_number":1068,"context_line":"        # that non-shared instance directories are removed after an evacuation"},{"line_number":1069,"context_line":"        # when using the shared RBD imagebackend."},{"line_number":1070,"context_line":"        # This workaround is not required when cleaning up migrations that"},{"line_number":1071,"context_line":"        # provide migrate_data as the existing is_shared_block_storage"},{"line_number":1072,"context_line":"        # conditional will cause the instance directory to be removed correctly"},{"line_number":1073,"context_line":"        # in such cases."},{"line_number":1074,"context_line":"        if ((destroy_disks or is_shared_block_storage) or"},{"line_number":1075,"context_line":"            (CONF.workarounds.enable_libvirt_rbd_instance_dir_evac_cleanup and"},{"line_number":1076,"context_line":"             CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027 and"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_8040ac60","line":1073,"range":{"start_line":1070,"start_character":0,"end_line":1073,"end_character":24},"updated":"2018-12-12 15:32:27.000000000","message":"As I\u0027m going to respin for the conf documentation nit I\u0027ll add a sentence here about this not working around the revert resize issue.","commit_id":"e7e1b0cb48865cd16ab7aebbd4a7aef67c86c514"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"8b4f626409587b9bb0e5418d09ee3c1f082f2b37","unresolved":false,"context_lines":[{"line_number":1077,"context_line":"        if ((destroy_disks or is_shared_block_storage) or"},{"line_number":1078,"context_line":"            (CONF.workarounds.enable_libvirt_rbd_instance_dir_evac_cleanup and"},{"line_number":1079,"context_line":"             CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027 and"},{"line_number":1080,"context_line":"             instance.host !\u003d CONF.host)):"},{"line_number":1081,"context_line":""},{"line_number":1082,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":1083,"context_line":"                                                        \u00270\u0027))"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_1784d956","line":1080,"range":{"start_line":1080,"start_character":13,"end_line":1080,"end_character":39},"updated":"2018-12-12 20:36:05.000000000","message":"Apologies if this is obvious or has otherwise been explained already, would there be any harm in removing this conditional and letting this workaround also take care of the revert resize bug?\n\nI know we have discussed the possibility of a failed start and cleanup in that case, but thinking about the current code without this patch, it does delete the instance files during a failed start regardless (that is, the current behavior is to cleanup instance files if shared storage, thus no change for the worse).\n\nRationale being, if we have a gap in cleanup for when we don\u0027t have migrate_data.is_shared_block_storage set, that applies to evacuate and resize and this patch seems like it\u0027s closing that gap.","commit_id":"e8ce4d095eee87c10e538b18a8f4b00a36d1c958"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"13c02e0eb1124933d94ad2a59f16f5444b90182d","unresolved":false,"context_lines":[{"line_number":1077,"context_line":"        if ((destroy_disks or is_shared_block_storage) or"},{"line_number":1078,"context_line":"            (CONF.workarounds.enable_libvirt_rbd_instance_dir_evac_cleanup and"},{"line_number":1079,"context_line":"             CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027 and"},{"line_number":1080,"context_line":"             instance.host !\u003d CONF.host)):"},{"line_number":1081,"context_line":""},{"line_number":1082,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":1083,"context_line":"                                                        \u00270\u0027))"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_25fadc44","line":1080,"range":{"start_line":1080,"start_character":13,"end_line":1080,"end_character":39},"in_reply_to":"3f79a3b5_1784d956","updated":"2018-12-14 10:15:55.000000000","message":"Right, I think initially I wanted to ensure this only triggered in the evacuation case, then Matt raised the revert resize bug and I had concerns that removing this line might trigger the workaround in additional cases. Having reviewed the callers to cleanup again I no longer think that\u0027s the case and so I\u0027ve removed this line. Thanks again Mel!","commit_id":"e8ce4d095eee87c10e538b18a8f4b00a36d1c958"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"adf13dfd8a9f5ea4239a77b809b7a37dad8f95b1","unresolved":false,"context_lines":[{"line_number":1072,"context_line":"        # conditional will cause the instance directory to be removed."},{"line_number":1073,"context_line":"        if ((destroy_disks or is_shared_block_storage) or"},{"line_number":1074,"context_line":"            (CONF.workarounds.ensure_libvirt_rbd_instance_dir_cleanup and"},{"line_number":1075,"context_line":"             CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027)):"},{"line_number":1076,"context_line":""},{"line_number":1077,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":1078,"context_line":"                                                        \u00270\u0027))"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_70317009","line":1075,"updated":"2018-12-14 11:14:07.000000000","message":"Nope. This is going to execute during _hard_reboot().","commit_id":"a5ff0a9d56f96a82102d64476500bd528fa50a49"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"417a4e2f11262345a1750b551420194333ce4706","unresolved":false,"context_lines":[{"line_number":1072,"context_line":"        # conditional will cause the instance directory to be removed."},{"line_number":1073,"context_line":"        if ((destroy_disks or is_shared_block_storage) or"},{"line_number":1074,"context_line":"            (CONF.workarounds.ensure_libvirt_rbd_instance_dir_cleanup and"},{"line_number":1075,"context_line":"             CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027)):"},{"line_number":1076,"context_line":""},{"line_number":1077,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":1078,"context_line":"                                                        \u00270\u0027))"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_4bea89ea","line":1075,"in_reply_to":"3f79a3b5_70317009","updated":"2018-12-14 11:39:01.000000000","message":"Added a note about this.","commit_id":"a5ff0a9d56f96a82102d64476500bd528fa50a49"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"99a088c0686f5577fa40d92cdb01dcb5135d2523","unresolved":false,"context_lines":[{"line_number":1072,"context_line":"        # conditional will cause the instance directory to be removed."},{"line_number":1073,"context_line":"        if ((destroy_disks or is_shared_block_storage) or"},{"line_number":1074,"context_line":"            (CONF.workarounds.ensure_libvirt_rbd_instance_dir_cleanup and"},{"line_number":1075,"context_line":"             CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027)):"},{"line_number":1076,"context_line":""},{"line_number":1077,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":1078,"context_line":"                                                        \u00270\u0027))"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_dca5b39d","line":1075,"updated":"2018-12-19 03:58:59.000000000","message":"Considering that we currently wipe out the instance directory if migrate_data.is_shared_block_storage with no regard for whether or not instance directory is shared, I\u0027m not sure we 100% have to have this workaround config option, but it\u0027s probably better to be explicit, plus have it as an indication that the proper fix is future work.","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5ccf21117f9195576727854e316e5b15fc0ff47a","unresolved":false,"context_lines":[{"line_number":1072,"context_line":"        # conditional will cause the instance directory to be removed."},{"line_number":1073,"context_line":"        if ((destroy_disks or is_shared_block_storage) or"},{"line_number":1074,"context_line":"            (CONF.workarounds.ensure_libvirt_rbd_instance_dir_cleanup and"},{"line_number":1075,"context_line":"             CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027)):"},{"line_number":1076,"context_line":""},{"line_number":1077,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":1078,"context_line":"                                                        \u00270\u0027))"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_c7903e43","line":1075,"in_reply_to":"3f79a3b5_dca5b39d","updated":"2018-12-21 22:46:52.000000000","message":"I\u0027m not sure I\u0027m following this comment since migrate_data isn\u0027t provided in either evacuate cleanup (on the old source evacuated-from host) or revert resize (when cleaning up the dest host).","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"}],"releasenotes/notes/bug-1414895-8f7d8da6499f8e94.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5ccf21117f9195576727854e316e5b15fc0ff47a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"other:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The ``[workarounds]/ensure_libvirt_rbd_instance_dir_cleanup`` config option"},{"line_number":5,"context_line":"    has been introduced. This can be used by operators to ensure that instance"},{"line_number":6,"context_line":"    directories are always removed during cleanup within the Libvirt driver"},{"line_number":7,"context_line":"    while using the RBD imagebackend. This in turn works around known issues"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"3f79a3b5_a7a662a7","line":4,"updated":"2018-12-21 22:46:52.000000000","message":"Somewhere in here, I think it would be good to have a checklist of sorts to help operators determine if they need to think about this, which at the most basic level is:\n\n* ``[DEFAULT]/compute_driver \u003d libvirt``\n* ``[libvirt]/images_type \u003d rbd``\n* ``[DEFAULT]/instances_path`` is on *local* storage","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"5a7fb0478fc763becfc50a8fe01552b8ccc18468","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"other:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The ``[workarounds]/ensure_libvirt_rbd_instance_dir_cleanup`` config option"},{"line_number":5,"context_line":"    has been introduced. This can be used by operators to ensure that instance"},{"line_number":6,"context_line":"    directories are always removed during cleanup within the Libvirt driver"},{"line_number":7,"context_line":"    while using the RBD imagebackend. This in turn works around known issues"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1f769fc5_50ffcd66","line":4,"in_reply_to":"3f79a3b5_a7a662a7","updated":"2018-12-24 12:14:02.000000000","message":"Done","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5ccf21117f9195576727854e316e5b15fc0ff47a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    The ``[workarounds]/ensure_libvirt_rbd_instance_dir_cleanup`` config option"},{"line_number":5,"context_line":"    has been introduced. This can be used by operators to ensure that instance"},{"line_number":6,"context_line":"    directories are always removed during cleanup within the Libvirt driver"},{"line_number":7,"context_line":"    while using the RBD imagebackend. This in turn works around known issues"},{"line_number":8,"context_line":"    such as `bug 1414895`_ when cleaning up after an evacuations and"},{"line_number":9,"context_line":"    `bug 1761062`_ when reverting from an instance resize."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":17,"id":"3f79a3b5_8796c63a","line":7,"range":{"start_line":7,"start_character":43,"end_line":7,"end_character":50},"updated":"2018-12-21 22:46:52.000000000","message":"remove \"in turn\"","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5ccf21117f9195576727854e316e5b15fc0ff47a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    The ``[workarounds]/ensure_libvirt_rbd_instance_dir_cleanup`` config option"},{"line_number":5,"context_line":"    has been introduced. This can be used by operators to ensure that instance"},{"line_number":6,"context_line":"    directories are always removed during cleanup within the Libvirt driver"},{"line_number":7,"context_line":"    while using the RBD imagebackend. This in turn works around known issues"},{"line_number":8,"context_line":"    such as `bug 1414895`_ when cleaning up after an evacuations and"},{"line_number":9,"context_line":"    `bug 1761062`_ when reverting from an instance resize."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":17,"id":"3f79a3b5_679b6a64","line":7,"range":{"start_line":7,"start_character":20,"end_line":7,"end_character":36},"updated":"2018-12-21 22:46:52.000000000","message":"same comment as in the config option help","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"5a7fb0478fc763becfc50a8fe01552b8ccc18468","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    The ``[workarounds]/ensure_libvirt_rbd_instance_dir_cleanup`` config option"},{"line_number":5,"context_line":"    has been introduced. This can be used by operators to ensure that instance"},{"line_number":6,"context_line":"    directories are always removed during cleanup within the Libvirt driver"},{"line_number":7,"context_line":"    while using the RBD imagebackend. This in turn works around known issues"},{"line_number":8,"context_line":"    such as `bug 1414895`_ when cleaning up after an evacuations and"},{"line_number":9,"context_line":"    `bug 1761062`_ when reverting from an instance resize."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1f769fc5_10f9557f","line":7,"range":{"start_line":7,"start_character":20,"end_line":7,"end_character":36},"in_reply_to":"3f79a3b5_679b6a64","updated":"2018-12-24 12:14:02.000000000","message":"Done","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"5a7fb0478fc763becfc50a8fe01552b8ccc18468","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    The ``[workarounds]/ensure_libvirt_rbd_instance_dir_cleanup`` config option"},{"line_number":5,"context_line":"    has been introduced. This can be used by operators to ensure that instance"},{"line_number":6,"context_line":"    directories are always removed during cleanup within the Libvirt driver"},{"line_number":7,"context_line":"    while using the RBD imagebackend. This in turn works around known issues"},{"line_number":8,"context_line":"    such as `bug 1414895`_ when cleaning up after an evacuations and"},{"line_number":9,"context_line":"    `bug 1761062`_ when reverting from an instance resize."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1f769fc5_7004497c","line":7,"range":{"start_line":7,"start_character":43,"end_line":7,"end_character":50},"in_reply_to":"3f79a3b5_8796c63a","updated":"2018-12-24 12:14:02.000000000","message":"Done","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5ccf21117f9195576727854e316e5b15fc0ff47a","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    such as `bug 1414895`_ when cleaning up after an evacuations and"},{"line_number":9,"context_line":"    `bug 1761062`_ when reverting from an instance resize."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    Operators will need to ensure that the instance directory itself is"},{"line_number":12,"context_line":"    not shared between computes before enabling this workaround otherwise the"},{"line_number":13,"context_line":"    console.log, kernels, ramdisks and any additional files being used by the"},{"line_number":14,"context_line":"    running instance will be lost."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    Additionally hard rebooting an instance with this workaround enabled"},{"line_number":17,"context_line":"    will result in the console.log being truncated. Also any kernels or"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"3f79a3b5_27a1f293","line":14,"range":{"start_line":11,"start_character":4,"end_line":14,"end_character":34},"updated":"2018-12-21 22:46:52.000000000","message":"I\u0027d throw this in a .. warning:: stanza.","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"5a7fb0478fc763becfc50a8fe01552b8ccc18468","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    such as `bug 1414895`_ when cleaning up after an evacuations and"},{"line_number":9,"context_line":"    `bug 1761062`_ when reverting from an instance resize."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    Operators will need to ensure that the instance directory itself is"},{"line_number":12,"context_line":"    not shared between computes before enabling this workaround otherwise the"},{"line_number":13,"context_line":"    console.log, kernels, ramdisks and any additional files being used by the"},{"line_number":14,"context_line":"    running instance will be lost."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    Additionally hard rebooting an instance with this workaround enabled"},{"line_number":17,"context_line":"    will result in the console.log being truncated. Also any kernels or"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1f769fc5_d0d99d22","line":14,"range":{"start_line":11,"start_character":4,"end_line":14,"end_character":34},"in_reply_to":"3f79a3b5_27a1f293","updated":"2018-12-24 12:14:02.000000000","message":"Done","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5ccf21117f9195576727854e316e5b15fc0ff47a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    console.log, kernels, ramdisks and any additional files being used by the"},{"line_number":14,"context_line":"    running instance will be lost."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    Additionally hard rebooting an instance with this workaround enabled"},{"line_number":17,"context_line":"    will result in the console.log being truncated. Also any kernels or"},{"line_number":18,"context_line":"    ramdisks provided to the instance as image properties will be recreated if"},{"line_number":19,"context_line":"    still available within the image service."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    .. _bug 1414895: https://bugs.launchpad.net/nova/+bug/1414895"},{"line_number":22,"context_line":"    .. _bug 1761062: https://bugs.launchpad.net/nova/+bug/1761062"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"3f79a3b5_479c2e58","line":19,"range":{"start_line":16,"start_character":4,"end_line":19,"end_character":45},"updated":"2018-12-21 22:46:52.000000000","message":"Same comments as in the config option help - I\u0027m not sure what the end user impact is of this, but I\u0027d want to know that if I\u0027m an operator reading this and trying to decide if I should enable this option.","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"5a7fb0478fc763becfc50a8fe01552b8ccc18468","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    console.log, kernels, ramdisks and any additional files being used by the"},{"line_number":14,"context_line":"    running instance will be lost."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    Additionally hard rebooting an instance with this workaround enabled"},{"line_number":17,"context_line":"    will result in the console.log being truncated. Also any kernels or"},{"line_number":18,"context_line":"    ramdisks provided to the instance as image properties will be recreated if"},{"line_number":19,"context_line":"    still available within the image service."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    .. _bug 1414895: https://bugs.launchpad.net/nova/+bug/1414895"},{"line_number":22,"context_line":"    .. _bug 1761062: https://bugs.launchpad.net/nova/+bug/1761062"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1f769fc5_30cd715d","line":19,"range":{"start_line":16,"start_character":4,"end_line":19,"end_character":45},"in_reply_to":"3f79a3b5_479c2e58","updated":"2018-12-24 12:14:02.000000000","message":"Done","commit_id":"a2d72f673603f1f6487e09c78f36c27ebcb197a4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"07d53e8ecf476586da63225728b7e95b4a723697","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"1f769fc5_aba594b7","updated":"2018-12-24 14:30:00.000000000","message":"whitespace damage","commit_id":"5f2ec710cf38be6c23e04ce40e8a298d50e3b79d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"07d53e8ecf476586da63225728b7e95b4a723697","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    `bug 1761062`_ when reverting from an instance resize."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    Operators should be aware that this workaround only applies when using the"},{"line_number":12,"context_line":"    libvirt compute driver and rbd images_type as enabled by the following"},{"line_number":13,"context_line":"    configuration options: "},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    * ``[DEFAULT]/compute_driver \u003d libvirt``"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"1f769fc5_4baac085","line":12,"range":{"start_line":12,"start_character":35,"end_line":12,"end_character":46},"updated":"2018-12-24 14:30:00.000000000","message":"``literal``","commit_id":"5f2ec710cf38be6c23e04ce40e8a298d50e3b79d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"07d53e8ecf476586da63225728b7e95b4a723697","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    * ``[libvirt]/images_type \u003d rbd``"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    .. warning: Operators will need to ensure that the instance directory"},{"line_number":19,"context_line":"    itself is not shared between computes before enabling this workaround, "},{"line_number":20,"context_line":"    otherwise files associated with running instances may be removed."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    .. _bug 1414895: https://bugs.launchpad.net/nova/+bug/1414895"},{"line_number":23,"context_line":"    .. _bug 1761062: https://bugs.launchpad.net/nova/+bug/1761062"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"1f769fc5_0b94c843","line":20,"range":{"start_line":19,"start_character":0,"end_line":20,"end_character":69},"updated":"2018-12-24 14:30:00.000000000","message":"This has to be indented by two spaces.","commit_id":"5f2ec710cf38be6c23e04ce40e8a298d50e3b79d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bd5072f1b5ee23de41d93ff81e2ea58fac2c2d97","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    * ``[DEFAULT]/compute_driver \u003d libvirt``"},{"line_number":16,"context_line":"    * ``[libvirt]/images_type \u003d rbd``"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    .. warning: Operators will need to ensure that the instance directory"},{"line_number":19,"context_line":"      itself is not shared between computes before enabling this workaround,"},{"line_number":20,"context_line":"      otherwise files associated with running instances may be removed."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":19,"id":"1f769fc5_d83212a8","line":18,"updated":"2018-12-26 20:20:12.000000000","message":"This warning doesn\u0027t show up for some reason in the rendered notes:\n\nhttp://logs.openstack.org/78/618478/19/check/build-openstack-releasenotes/dfdad4b/html/unreleased.html#other-notes","commit_id":"63d77bf63fd474d10fd7cac5f725784737bafa1a"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"9e85d106309a3f2c495e60223449426cc73a7453","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    * ``[DEFAULT]/compute_driver \u003d libvirt``"},{"line_number":16,"context_line":"    * ``[libvirt]/images_type \u003d rbd``"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    .. warning: Operators will need to ensure that the instance directory"},{"line_number":19,"context_line":"      itself is not shared between computes before enabling this workaround,"},{"line_number":20,"context_line":"      otherwise files associated with running instances may be removed."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":19,"id":"1f769fc5_8125e6ad","line":18,"in_reply_to":"1f769fc5_d83212a8","updated":"2019-01-02 10:47:29.000000000","message":"Yeah it should be `.. warning::`, updated in the latest PS.","commit_id":"63d77bf63fd474d10fd7cac5f725784737bafa1a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bd5072f1b5ee23de41d93ff81e2ea58fac2c2d97","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    * ``[DEFAULT]/compute_driver \u003d libvirt``"},{"line_number":16,"context_line":"    * ``[libvirt]/images_type \u003d rbd``"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    .. warning: Operators will need to ensure that the instance directory"},{"line_number":19,"context_line":"      itself is not shared between computes before enabling this workaround,"},{"line_number":20,"context_line":"      otherwise files associated with running instances may be removed."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    .. _bug 1414895: https://bugs.launchpad.net/nova/+bug/1414895"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"1f769fc5_b82dd647","line":19,"range":{"start_line":18,"start_character":55,"end_line":19,"end_character":12},"updated":"2018-12-26 20:20:12.000000000","message":"same nit about the ``instances_path`` option being mentioned somewhere in here","commit_id":"63d77bf63fd474d10fd7cac5f725784737bafa1a"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"9e85d106309a3f2c495e60223449426cc73a7453","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    * ``[DEFAULT]/compute_driver \u003d libvirt``"},{"line_number":16,"context_line":"    * ``[libvirt]/images_type \u003d rbd``"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    .. warning: Operators will need to ensure that the instance directory"},{"line_number":19,"context_line":"      itself is not shared between computes before enabling this workaround,"},{"line_number":20,"context_line":"      otherwise files associated with running instances may be removed."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    .. _bug 1414895: https://bugs.launchpad.net/nova/+bug/1414895"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"1f769fc5_213c12c7","line":19,"range":{"start_line":18,"start_character":55,"end_line":19,"end_character":12},"in_reply_to":"1f769fc5_b82dd647","updated":"2019-01-02 10:47:29.000000000","message":"Done","commit_id":"63d77bf63fd474d10fd7cac5f725784737bafa1a"}]}
