vsphere/internal/helper/clustercomputeresource/cluster_compute_resource_helper.go
func MoveHostsOutOf(cluster *object.ClusterComputeResource, hosts []*object.HostSystem, timeout int) error {
	for _, host := range hosts {
		if err := moveHostOutOf(cluster, host, timeout); err != nil {
			return err
		}
	}
	return nil
}
func MoveHostsOutOf(cluster *object.ClusterComputeResource, hosts []*object.HostSystem, timeout int) error {
	for _, host := range hosts {
		if err := moveHostOutOf(cluster, host, timeout); err != nil {
			return err
		}
	}
	return nil
}
// MoveHostsOutOf moves a supplied list of hosts out of the specified cluster.
// The host is moved to the root host folder for the datacenter that the
// cluster is in.
//
// The host is placed into maintenance mode with evacuate flagged on, ensuring
// that as many VMs as possible are moved out of the host before removing it
// from the cluster. The effectiveness of this operation is dictated by the
// cluster's DRS settings, which also affects if this means that the task will
// block and require manual intervention. The supplied timeout is passed to the
// maintenance mode operations, and represents the timeout in seconds.
//
// Individual hosts are taken out of maintenance mode after its operation is
// complete.