We have developed an OpenStack plugin for QB for some time and to move to QB8 we had to update it to match the API changes.
While doing this I've seen a behavior that I think could be improved.
Right now, when we go through the LaunchNode to prevent QB for waiting for ever we return after asking the OpenStack platform to create a new machine.
This works fine unless the actual spawn/boot of the machine itself takes longer than the "idle timeout" you set in the cloudProfile.
Let's say you to only wait 15 min before a cloud computer is idle in QB and it takes 20 min to have a new machine up and ready then the terminateNode will be triggered before the machine is ready.
I was wondering if you could introduce a isNodeReady or something like that on the cloud profile ?
So one can either always return true is the node is ready as soon as launchNode has return, and others could implement something to make sure the node is up and ready.
Then the idle timeout would be only checked after the isNodeReady is set to true ?
We could also introduce a global "unresponsive" timeout, so if a machine doesn't say it's ready after this timeout we remove / terminate the node (for instance if we return from the launchNode and a node is spawn, but doesn't properly boot we could automatically kill them)