Change fromObj error messages
[ganeti-local] / README
diff --git a/README b/README
index 6e86e79..25b152a 100644 (file)
--- a/README
+++ b/README
@@ -1,62 +1,85 @@
-Ganeti Cluster tools (htools)
-=============================
+Ganeti Cluster tools (ganeti-htools)
+====================================
 
-These are some simple cluster tools for fixing common problems. Right
-now N+1 and rebalancing are included. Starting with version 0.1.0,
-only Ganeti 2.0 is supported.
+These are some simple cluster tools for fixing common allocation
+problems on Ganeti 2.0 clusters.
 
+Note that these tools are most useful for bigger cluster sizes
+(e.g. more than five or ten machines); at lower sizes, the computations
+they do can also be done manually.
+
+Most of the tools revolve around the concept of keeping the cluster N+1
+compliant: this means that in case of failure of any node, the instances
+affected can be failed over (via ``gnt-node failover`` or ``gnt-instance
+failover``) to their secondary node, and there is enough memory reserved
+for this operation without needing to shutdown other instances or
+rebalance the cluster.
+
+**Quick start** (see the installation section for more details):
+
+- (have the ghc compiler and the prerequisite libraries installed)
+- make
+- ./hbal -m $cluster -C -p
+- look at the original and final cluster layout, and if acceptable,
+  execute the given commands
+
+
+Available tools
+---------------
 
 Cluster rebalancer
-------------------
+~~~~~~~~~~~~~~~~~~
 
-Compared to the N+1 solver, the rebalancer uses a very simple algorithm:
-repeatedly try to move each instance one step, so that the cluster score
+The rebalancer uses a simple algorithm to try to get the nodes of the
+cluster as equal as possible in their resource usage. It tries to
+repeatedly move each instance one step, so that the cluster score
 becomes better. We stop when no further move can improve the score.
 
 For algorithm details and usage, see the man page hbal(1).
 
-Cluster N+1 solver
-------------------
+IAllocator plugin
+~~~~~~~~~~~~~~~~~
 
-This program runs a very simple brute force algorithm over the instance
-placement space in order to determine the shortest number of replace-disks
-needed to fix the cluster. Note this means we won't get a balanced cluster,
-just one that passes N+1 checks.
+The ``hail`` iallocator plugin can be used for allocations of mirrored
+and non-mirrored instances and for relocations of mirrored instances. It
+needs to be installed in Ganeti's iallocator search path—usually
+``/usr/lib/ganeti/iallocators`` or
+``/usr/local/lib/ganeti/iallocators``, and after that it can be used via
+ganeti's ``--iallocator`` option (in various gnt-node/gnt-instance
+commands). See the man page hail(1) for more details.
 
-For algorithm details and usage, see the man page hn1(1). **Note**:
-this program is deprecated, hbal should be used instead.
+Cluster capacity estimator
+~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-IAllocator plugin
------------------
+The ``hspace`` program will, given an input instance specification,
+estimate how many instances of those type can be place on the cluster
+before it will become full (as in any new allocation would fail N+1
+checks). For more details, see the man page hspace(1).
 
-The ``hail`` iallocator plugin can be used for allocations of mirrored
-and non-mirrored instances and for relocations of mirrored
-instances. It needs to be installed in Ganeti's iallocator search
-path—usually ``/usr/lib/ganeti/iallocators`` or
-``/usr/local/lib/ganeti/iallocators``.
 
 Integration with Ganeti
 -----------------------
 
-The ``hbal`` and ``hn1`` programs can either get their input from text
-files, or online from a cluster via RAPI. For online collection via
-RAPI, the "-m" argument to both hn1 and hbal should specify the
-cluster or master node name. ``hail`` uses the standard iallocator API
-and thus doesn't need any special setup (just needs to be installed in
-the right directory).
+The ``hbal`` and ``hspace`` programs can either get their input from
+text files, locally from the master daemon (when run on the master node
+of a cluster), or remote from a cluster via RAPI. The "-L" argument
+enables local collection (with an optional path to the unix socket). For
+online collection via RAPI, the "-m" argument should specify the cluster
+or master node name. Only ``hbal`` and ``hspace`` use these arguments,
+``hail`` uses the standard iallocator API and thus doesn't need any
+special setup (just needs to be installed in the right directory).
 
-For text files, a separate tool (hscan) is provided to automate their
-gathering if RAPI is available, which is better since it can extract
-more precise information. In case RAPI is not usable for whatever
-reason, the following two commands should be run::
+For generating the text files, a separate tool (``hscan``) is provided
+to automate their gathering if RAPI is available, which is better since
+it can extract more precise information. In case RAPI is not usable for
+whatever reason, ``gnt-node list`` and ``gnt-instance list`` could be
+used, and their output concatenated in a single file, separated by one
+blank line. If you need to do this manually, you'll need to check the
+sources to see which fields are needed exactly.
 
-    gnt-node list -oname,mtotal,mnode,mfree,dtotal,dfree,offline \
-      --separator '|' --no-headers > nodes
-    gnt-instance list -oname,admin_ram,sda_size,status,pnode,snodes \
-      --separator '|' --no-head > instances
 
-These two files should be saved under the names of *nodes* and
-*instances*.
+The ``hail`` program gets its data automatically from Ganeti when used
+as described in its section.
 
 Installation
 ------------
@@ -65,11 +88,24 @@ If installing from source, you need a working ghc compiler (6.8 at
 least) and some extra Haskell libraries which usually need to be
 installed manually:
 
-- json
-- curl
+- json (http://hackage.haskell.org/package/json)
+- curl (http://hackage.haskell.org/package/curl)
+- network (http://hackage.haskell.org/package/network)
 
-Once these are available, just typing *make* in the top-level
-directory should be enough.
+Once these are installed, just typing *make* in the top-level directory
+should be enough.
+
+Only the ``hail`` program needs to be installed in a specific place, the
+other tools are not location-dependent.
+
+For running the (admittedly small) unittest suite (via *make check*),
+the QuickCheck version 1 library is needed.
 
 Internal (implementation) documentation is available in the ``apidoc``
 directory.
+
+.. vim: set textwidth=72 :
+.. Local Variables:
+.. mode: rst
+.. fill-column: 72
+.. End: