Enhance xenorchestra_vm to provide a method for graceful termination - #222
Enhance xenorchestra_vm to provide a method for graceful termination#222ddelnano wants to merge 5 commits into
xenorchestra_vm to provide a method for graceful termination#222Conversation
This allows the VM to terminate its work properly.
As discussed in #212 Trying to stop a VM that is not running results in an error, so we only do shutdowns for running VMs now Possible power-states are "Running, Halted, Paused, Suspended"
Add acceptance tests that verify if graceful termination was successful
ad1b03f to
5d9cfbf
Compare
|
@4censord please review this to verify it will work for your use cause. The only functional difference should be that this functionality must be opted into with a new After discovering #220, setting this to the default has the potential to significantly slow down the tests and the general case. From running the test suite a few times against #212, the default 2 min timeout for validating PV drivers are present causes more flakiness in the build and longer test times. I think it should be expected that if terraform is to destroy resources that it may not be graceful. Therefore, I think making this opt in is the best solution. |
|
This would work for me. I would still argue that it should be the default behavior.
Most other providers seem to work this way. But i understand that it is not practical to do so right now When attempting to shut down a vm without the management agent installed, this now times out. |
|
Changing the |
It seems vsphere does this, but uses a 3 min timeout by default. What other providers have you seen?
#220 may need a slightly different heuristic. I'll see if the XO api exposes the use of PV drivers rather than relying on the management agent presence. I think we should handle the case were there aren't PV drivers potentially. Allowing people to opt into a forceful stop and using that if the graceful method fails or timeouts could satisfy that, but I wanted to see how XO handles things.
Modifying Vms unfortunately relies on a 25 second sleep (source). That's another area where there is a race condition and not being able to detect the value has persisted causes problems for the test suite. I don't think I can fix that in this PR, but I can look into that early next year. |
Does or attempts graceful termination:
Does not do graceful termination:
Oh, i see. |
|
#223 will address the regression with requiring the management agent and will properly detect PV drivers |
|
I think I'd like to take another pass at this and implement things closer to how hyperv works:
Having forceful shutdown should prevent the test suite flakiness that I experienced when setting the graceful shutdown as the default. So hopefully that should be more in line what you initially were advocating for. |
This is a continuation of #212.
I discovered that #220 needed to be addressed to avoid a race condition that existed when the XO client inside the provide tried to shutdown Vms. In addition to this, I decided that this was better to provide as an opt in rather than the default behavior.
Testing
make testaccpassesxenorchestra_vmdelete behavior