+
+Key-value parameters
+~~~~~~~~~~~~~~~~~~~~
+
+Multiple options take parameters that are of the form
+``key=value,key=value,...`` or ``category:key=value,...``. Examples
+are the hypervisor parameters, backend parameters, etc. For these,
+it's possible to use values that contain commas by escaping with via a
+backslash (which needs two if not single-quoted, due to shell
+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.
+
+.. vim: set textwidth=72 :
+.. Local Variables:
+.. mode: rst
+.. fill-column: 72
+.. End: