Reuse current spindles in design for partitioned
[ganeti-local] / man / ganeti.rst
index 52721d4..e3efff9 100644 (file)
@@ -40,7 +40,7 @@ Cluster architecture
 
 In Ganeti 2.0, the architecture of the cluster is a little more
 complicated than in 1.2. The cluster is coordinated by a master daemon
-(**ganeti-masterd**(8)), running on the master node. Each node runs
+(**ganeti-masterd**\(8)), running on the master node. Each node runs
 (as before) a node daemon, and the master has the RAPI daemon running
 too.
 
@@ -99,8 +99,8 @@ vm_capable
 Node Parameters
 ~~~~~~~~~~~~~~~
 
-These parameters are node specific and can be preseeded on node-group
-and cluster level.
+The ``ndparams`` refer to node parameters. These can be set as defaults
+on cluster and node group levels, but they take effect for nodes only.
 
 Currently we support the following node parameters:
 
@@ -109,6 +109,77 @@ oob_program
     the `Ganeti Node OOB Management Framework <design-oob.rst>`_ design
     document.
 
+spindle_count
+    This should reflect the I/O performance of local attached storage
+    (e.g. for "file", "plain" and "drbd" disk templates). It doesn't
+    have to match the actual spindle count of (any eventual) mechanical
+    hard-drives, its meaning is site-local and just the relative values
+    matter.
+
+exclusive_storage
+    When this Boolean flag is enabled, physical disks on the node are
+    assigned to instance disks in an exclusive manner, so as to lower I/O
+    interference between instances. See the `Partitioned Ganeti
+    <design-partitioned.rst>`_ design document for more details. This
+    parameter cannot be set on individual nodes, as its value must be
+    the same within each node group.
+
+
+Hypervisor State Parameters
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Using ``--hypervisor-state`` you can set hypervisor specific states as
+pointed out in ``Ganeti Resource Model <design-resource-model.rst>``.
+
+The format is: ``hypervisor:option=value``.
+
+Currently we support the following hypervisor state values:
+
+mem_total
+  Total node memory, as discovered by this hypervisor
+mem_node
+  Memory used by, or reserved for, the node itself; note that some
+  hypervisors can report this in an authoritative way, other not
+mem_hv
+  Memory used either by the hypervisor itself or lost due to instance
+  allocation rounding; usually this cannot be precisely computed, but
+  only roughly estimated
+cpu_total
+  Total node cpu (core) count; usually this can be discovered
+  automatically
+cpu_node
+  Number of cores reserved for the node itself; this can either be
+  discovered or set manually. Only used for estimating how many VCPUs
+  are left for instances
+
+Note that currently this option is unused by Ganeti; values will be
+recorded but will not influence the Ganeti operation.
+
+
+Disk State Parameters
+~~~~~~~~~~~~~~~~~~~~~
+
+Using ``--disk-state`` you can set disk specific states as pointed out
+in ``Ganeti Resource Model <design-resource-model.rst>``.
+
+The format is: ``storage_type/identifier:option=value``. Where we
+currently just support ``lvm`` as storage type. The identifier in this
+case is the LVM volume group. By default this is ``xenvg``.
+
+Currently we support the following hypervisor state values:
+
+disk_total
+  Total disk size (usually discovered automatically)
+disk_reserved
+  Reserved disk size; this is a lower limit on the free space, if such a
+  limit is desired
+disk_overhead
+  Disk that is expected to be used by other volumes (set via
+  ``reserved_lvs``); usually should be zero
+
+Note that currently this option is unused by Ganeti; values will be
+recorded but will not influence the Ganeti operation.
+
 
 Cluster configuration
 ~~~~~~~~~~~~~~~~~~~~~
@@ -168,7 +239,8 @@ Many Ganeti commands provide the following options. The
 availability for a certain command can be checked by calling the
 command using the ``--help`` option.
 
-**gnt-...** *command* [--dry-run] [--priority {low | normal | high}]
+| **gnt-...** *command* [\--dry-run] [\--priority {low | normal | high}]
+| [\--submit]
 
 The ``--dry-run`` option can be used to check whether an operation
 would succeed.
@@ -176,6 +248,41 @@ would succeed.
 The option ``--priority`` sets the priority for opcodes submitted
 by the command.
 
+The ``--submit`` option is used to send the job to the master daemon but
+not wait for its completion. The job ID will be shown so that it can be
+examined using **gnt-job info**.
+
+Defaults
+~~~~~~~~
+
+For certain commands you can use environment variables to provide
+default command line arguments. Just assign the arguments as a string to
+the corresponding environment variable. The format of that variable
+name is **binary**_*command*. **binary** is the name of the ``gnt-*``
+script all upper case and dashes replaced by underscores, and *command*
+is the command invoked on that script.
+
+Currently supported commands are ``gnt-node list``, ``gnt-group list``
+and ``gnt-instance list``. So you can configure default command line
+flags by setting ``GNT_NODE_LIST``, ``GNT_GROUP_LIST`` and
+``GNT_INSTANCE_LIST``.
+
+Debug options
+~~~~~~~~~~~~~
+
+If the variable ``FORCE_LUXI_SOCKET`` is set, it will override the
+socket used for LUXI connections by command-line tools
+(``gnt-*``). This is useful mostly for debugging, and some operations
+won't work at all if, for example, you point this variable to the
+confd-supplied query socket and try to submit a job.
+
+If the variable is set to the value ``master``, it will connect to the
+correct path for the master daemon (even if, for example, split
+queries are enabled and this is a query operation). If set to
+``query``, it will always (try to) connect to the query socket, even
+if split queries are disabled. Otherwise, the value is taken to
+represent a filesystem path to the socket to use.
+
 Field formatting
 ----------------
 
@@ -185,7 +292,7 @@ list**, **gnt-debug locks**, etc.). For these commands, special states
 are denoted via a special symbol (in terse mode) or a string (in
 verbose mode):
 
-*, (offline)
+\*, (offline)
     The node in question is marked offline, and thus it cannot be
     queried for data. This result is persistent until the node is
     de-offlined.
@@ -224,8 +331,116 @@ behaviour)::
   # gnt-instance modify -H kernel_path=an\\,example instance1
   # gnt-instance modify -H kernel_path='an\,example' instance1
 
+Query filters
+~~~~~~~~~~~~~
+
+Most commands listing resources (e.g. instances or nodes) support filtering.
+The filter language is similar to Python expressions with some elements from
+Perl. The language is not generic. Each condition must consist of a field name
+and a value (except for boolean checks), a field can not be compared to another
+field. Keywords are case-sensitive.
+
+Examples (see below for syntax details):
+
+- List webservers::
+
+    gnt-instance list --filter 'name =* "web*.example.com"'
+
+- List instances with three or six virtual CPUs and whose primary
+  nodes reside in groups starting with the string "rack"::
+
+    gnt-instance list --filter
+      '(be/vcpus == 3 or be/vcpus == 6) and pnode.group =~ m/^rack/'
+
+- Nodes hosting primary instances::
+
+    gnt-node list --filter 'pinst_cnt != 0'
+
+- Nodes which aren't master candidates::
+
+    gnt-node list --filter 'not master_candidate'
+
+- Short version for globbing patterns::
+
+    gnt-instance list '*.site1' '*.site2'
+
+Syntax in pseudo-BNF::
+
+  <quoted-string> ::= /* String quoted with single or double quotes,
+                         backslash for escaping */
+
+  <integer> ::= /* Number in base-10 positional notation */
+
+  <re> ::= /* Regular expression */
+
+  /*
+    Modifier "i": Case-insensitive matching, see
+    http://docs.python.org/library/re#re.IGNORECASE
+
+    Modifier "s": Make the "." special character match any character,
+    including newline, see http://docs.python.org/library/re#re.DOTALL
+  */
+  <re-modifiers> ::= /* empty */ | i | s
+
+  <value> ::= <quoted-string> | <integer>
+
+  <condition> ::=
+    { /* Value comparison */
+      <field> { == | != | < | <= | >= | > } <value>
+
+      /* Collection membership */
+      | <value> [ not ] in <field>
+
+      /* Regular expressions (recognized delimiters
+         are "/", "#", "^", and "|"; backslash for escaping)
+      */
+      | <field> { =~ | !~ } m/<re>/<re-modifiers>
+
+      /* Globbing */
+      | <field> { =* | !* } <quoted-string>
+
+      /* Boolean */
+      | <field>
+    }
+
+  <filter> ::=
+    { [ not ] <condition> | ( <filter> ) }
+    [ { and | or } <filter> ]
+
+Operators:
+
+*==*
+  Equality
+*!=*
+  Inequality
+*<*
+  Less than
+*<=*
+  Less than or equal
+*>*
+  Greater than
+*>=*
+  Greater than or equal
+*=~*
+  Pattern match using regular expression
+*!~*
+  Logically negated from *=~*
+*=\**
+  Globbing, see **glob**\(7), though only * and ? are supported
+*!\**
+  Logically negated from *=\**
+*in*, *not in*
+  Collection membership and negation
+
+
 Common daemon functionality
 ---------------------------
 
 All Ganeti daemons re-open the log file(s) when sent a SIGHUP signal.
-**logrotate**(8) can be used to rotate Ganeti's log files.
+**logrotate**\(8) can be used to rotate Ganeti's log files.
+
+.. vim: set textwidth=72 :
+.. Local Variables:
+.. mode: rst
+.. fill-column: 72
+.. End: