This patch series contains the necessary changes to build virtual clusters.
I was able to initialize a cluster, create instances (diskless, file-based, using the fake hypervisor), fail-over the master role, verify the cluster, and some other things—all on the same physical machine. This implementation is still somewhat rough and will need further refinement. Regarding the Haskell code in the last patch: It compiles and appears to work on my machine. Someone with more Haskell-fu than me will have to see if there's a better way. Michael Hanselmann (7): bootstrap.SetupNodeDaemon: Stop hardcoding bind address Add new module for virtual clusters daemon-util: Support virtual clusters netutils: Use virtual hostname if set Implement virtual cluster support in Python code Add vcluster-setup utility Add support for GANETI_ROOTDIR in Haskell code .gitignore | 1 + Makefile.am | 11 ++ daemons/daemon-util.in | 7 +- htools/Ganeti/Path.hs | 26 ++-- lib/backend.py | 8 ++ lib/bootstrap.py | 14 +-- lib/hypervisor/hv_xen.py | 7 +- lib/jqueue.py | 15 ++- lib/netutils.py | 7 +- lib/pathutils.py | 20 ++-- lib/rpc.py | 5 +- lib/ssh.py | 22 +++- lib/vcluster.py | 244 ++++++++++++++++++++++++++++++++++++++ test/ganeti.vcluster_unittest.py | 237 ++++++++++++++++++++++++++++++++++++ tools/vcluster-setup.in | 167 ++++++++++++++++++++++++++ 15 files changed, 749 insertions(+), 42 deletions(-) create mode 100644 lib/vcluster.py create mode 100755 test/ganeti.vcluster_unittest.py create mode 100644 tools/vcluster-setup.in -- 1.7.6
