ClusterGenerator generates a cluster.xml file given either a list of hosts or a list of ClusterNodeDescriptor instances.
This is largely the same as the generate_cluster_xml.py script, but was created because we need to be able to create new cluster.xml files dynamically from JUnit. It seemed overly kludgey to have a script that calls Java that then calls Python.
A note about host names: the host name that is referred to in this class is a system's
internal host name, rather than its external name. That is, depending on the network topology, a system may have an internal host name by which it is known by in its local network and an external host name by which it's known by systems external to that network.
For example, EC2 systems have both internal host names and external host names. When a system external to EC2 (e.g. a developer's machine or a machine running a testing framework) wants to communicate with EC2 (via SSH, et al.), he must use the EC2 instance's external host name. However, for the EC2 instances to communicate amongst themselves (e.g. when running the Voldemort tests), the Voldemort cluster nodes and Voldemort test nodes must use the internal host name. The external host name is used by the development/testing system to reach EC2 for orchestrating the testing. But the communication of the test and server nodes in the test are all on the same network, using the internal host name.
@see ClusterNodeDescriptor