Change the node N+1 check model
Change the node N+1 check model

Currently, we fail a new instance placement if the new node status is
not N+1 compliant. This means that an allocation on an already N+1
failed node still fails, even though (conceptually) we're not worse than
before.

This patch changes this model to fail the allocation *only* if the node
was N+1 compliant before. This allows balancing to work on non-N+1 happy
clusters, with the caveat that they probably won't be N+1 happy at the
end.

Since we skip N+1 check in some cases, we add a new “failHealth” check
that verifies the node still has strict positive free memory and disk
space.
grnet/snf-ganeti,ganeti-github-testing/ganeti-test-1,dimara/ganeti,grnet/snf-ganeti,yiannist/ganeti,onponomarev/ganeti,andir/ganeti,apyrgio/ganeti,apyrgio/ganeti,ganeti/ganeti,apyrgio/snf-ganeti,yiannist/ganeti,andir/ganeti,mbakke/ganeti,andir/ganeti,leshchevds/ganeti,dimara/ganeti,ganeti/ganeti,leshchevds/ganeti,onponomarev/ganeti,mbakke/ganeti,ganeti-github-testing/ganeti-test-1,bitemyapp/ganeti,leshchevds/ganeti,apyrgio/snf-ganeti,yiannist/ganeti,ganeti/ganeti,bitemyapp/ganeti,mbakke/ganeti