Browse Source

[3800] Remaing documentation written.

Tomek Mrugalski 10 years ago
parent
commit
f603a0dbce
3 changed files with 158 additions and 7 deletions
  1. 146 2
      doc/guide/ctrl-channel.xml
  2. 9 0
      doc/guide/dhcp4-srv.xml
  3. 3 5
      src/lib/config/command-socket.dox

+ 146 - 2
doc/guide/ctrl-channel.xml

@@ -8,8 +8,152 @@
 
 
   <chapter id="ctrl-channel">
   <chapter id="ctrl-channel">
     <title>Management API</title>
     <title>Management API</title>
-    <para>
-      @todo: To be implemented in ticket 3880.
+
+    <para>A classic approach to the daemon configuration assumes that
+    the server's configuration is stored in the configuration files
+    and when the configuration is changed, the daemon is restarted.
+    This approach has significant disadvantage of introducing periods
+    of downtime, where client traffic is not handled. Another risk
+    is that if the new configuration is invalid for whatever reason,
+    the server may refuse to start, which will further extend the
+    downtime period, until the issue is resolved.</para>
+
+    <para>To avoid such problems, both DHCPv4 and DHCPv6 servers
+    support introduced support for a mechanism that will allow
+    on-line reconfiguration, without requiring server shutdown.
+    Both servers can be instructed to open control sockets, which
+    is a communication channel. The server is able to receive
+    commands on that channel, act on them and report back status.
+    While the set of commands supported in Kea 0.9.2 is limited,
+    the number is expected to grow over time.</para>
+
+    <para>Currently the only supported type of control channel
+    is UNIX stream socket. For details how to configure it, see
+    <xref linkend="dhcp4-ctrl-channel" /> and <xref
+    linkend="dhcp6-ctrl-channel" />. It is likely that support
+    for other control channel types will be added in the future.
     </para>
     </para>
 
 
+    <section id="ctrl-channel-syntax">
+    <title>Data syntax</title>
+    <para>Communication over Control Channel is conducted using JSON
+    structures. If configured, Kea will open a socket and will listen
+    for any incoming connections. A process connecting to this socket
+    is expected to send JSON commands structured as follows:
+
+<screen>
+{
+    "command": "foo",
+    "arguments": {
+	"param1": "value1",
+	"param2": "value2",
+	...
+    }
+}
+</screen>
+
+    <command>command</command> is the name of command to execute and
+    is mandatory. <command>arguments</command> is a map of parameters
+    required to carry out the given command.  The exact content and
+    format is command specific.</para>
+
+    <para>The server will process the incoming command and then send a
+    response of the form:
+<screen>
+{
+    "result": 0|1,
+    "text": "textual description",
+    "arguments": {
+	"argument1": "value1",
+	"argument2": "value2",
+	...
+    }
+}
+</screen>
+    <command>result</command> indicates the outcome of the command. A value of 0
+    means a success while any non-zero value designates an error. Currently 1 is
+    used as a generic error, but additional error codes may be added in the
+    future.<command>text</command> field typically appears when result is
+    non-zero and contains description of the error encountered, but it may also
+    appear for success results. That's command specific.
+    <command>arguments</command> is a map of additional data values returned by
+    the server, specific to the command issue. The map is always present, even
+    if it contains no data values.</para>
+    </section>
+
+    <section id="ctrl-channel-client">
+    <title>Using control channel</title>
+
+    <para>ISC does not provide a client for using control channel.  The primary
+    reason for that is the expectation is that the entity using control channel
+    is typically an IPAM or similar network management/monitoring software which
+    may have quite varied expectations regarding the client and even likely to
+    be written in languages different than C or C++. Therefore we only provide
+    examples how one can take advantage of the API.</para>
+
+    <para>The easiest way is to use a tool called <command>socat</command>,
+    a tool available from <ulink url="http://www.dest-unreach.org/socat/">socat
+    homepage</ulink>, but is also widely available in Linux and BSD
+    distributions. Once Kea is started, one could connect to the control
+    interface using the following command:
+<screen>
+$ socat UNIX:/path/to/the/kea/socket -
+</screen>
+where <command>/path/to/the/kea/socket</command> is the path specified in
+<command>Dhcp4/control-socket/socket-name</command> parameter in Kea
+configuration file.</para>
+
+    <para>It is also easy to open UNIX socket programmatically. An example of
+    such simplistic client written in C is available in the Kea Developer's
+    Guide, chapter Control Channel Overview, section Using Control Channel.</para>
+
+    </section>
+
+    <section id="commands-common">
+      <title>Commands supported by both DHCPv4 and DHCPv6 servers</title>
+
+      <section id="command-list-commands">
+      <title>list-commands command</title>
+
+      <para>
+	<emphasis>list-commands</emphasis> command retrieves a list of all
+	supported commands by the server. It does not take any arguments.
+	An example command may look like this:
+<screen>
+{
+    "command": "list-commands",
+    "arguments": { }
+}
+</screen>
+      </para>
+      <para>
+	The server will respond with a list of all supported commands. The
+	arguments element will be a list strings. Each string will convey
+	one supported command.
+      </para>
+    </section> <!-- end of command-list-commands -->
+
+    <section id="command-shutdown">
+      <title>shutdown command</title>
+
+      <para>
+	<emphasis>shutdown</emphasis> command instructs the server to initiate
+	its shutdown procedure. It is an equivalent of sending SIGTERM singal
+	to the process. This command does not take any arguments.  An example
+	command may look like this:
+<screen>
+{
+    "command": "shutdown",
+    "arguments": { }
+}
+</screen>
+      </para>
+      <para>
+	The server will respond with a confirmation that the shutdown procedure
+	has been initiated.
+      </para>
+    </section> <!-- end of command-shutdown -->
+
+    </section> <!-- end of commands supported by both servers -->
+
   </chapter>
   </chapter>

+ 9 - 0
doc/guide/dhcp4-srv.xml

@@ -2888,6 +2888,15 @@ appropiately -->
         Communication over control channel is conducted using JSON structures.
         Communication over control channel is conducted using JSON structures.
         See the Control Channel section in the Kea Developer's Guide for more details.
         See the Control Channel section in the Kea Developer's Guide for more details.
       </para>
       </para>
+
+      <para>DHCPv4 server supports <command>statistic-get</command>,
+      <command>statistic-reset</command>, <command>statistic-remove</command>,
+      <command>statistic-get-all</command>, <command>statistic-reset-all</command>
+      and <command>statistic-remove-all</command>, specified in
+      <xref linkend="command-stats"/>. It also supports
+      <command>list-commands</command> and <command>shutdown</command>,
+      specified in <xref linkend="command-list-commands" /> and
+      <xref linkend="command-shutdown" />, respectively.</para>
     </section>
     </section>
 
 
     <section id="dhcp4-std">
     <section id="dhcp4-std">

+ 3 - 5
src/lib/config/command-socket.dox

@@ -24,12 +24,10 @@ or a script) to issue commands to the server which can influence the its
 behavior or retreive information from it. Several notable examples
 behavior or retreive information from it. Several notable examples
 envisioned are: reconfiguration, statistics retrival and manipulation,
 envisioned are: reconfiguration, statistics retrival and manipulation,
 and shutdown.
 and shutdown.
-@note Currently, only the DHCPv4 component supports Control Channel.
-@todo: Update this text once Control Channel support in DHCPv6 is added.
 
 
 Communication over Control Channel is conducted using JSON structures.
 Communication over Control Channel is conducted using JSON structures.
-Currently (Kea 0.9.2) the only supported communication channel is UNIX stream
-sockets, but additional types may be added in the future.
+As of Kea 0.9.2, the only supported communication channel is UNIX stream
+socket, but additional types may be added in the future.
 
 
 If configured, Kea will open a socket and will listen for any incoming
 If configured, Kea will open a socket and will listen for any incoming
 connections. A process connecting to this socket is expected to send JSON
 connections. A process connecting to this socket is expected to send JSON
@@ -47,7 +45,7 @@ commands structured as follows:
 @endcode
 @endcode
 
 
 - command - is the name of command to execute and is mandatory.
 - command - is the name of command to execute and is mandatory.
-- arguments - it may be absent, contain a single parameter or a map or parameters
+- arguments - contain a single parameter or a map or parameters
 required to carry out the given command.  The exact content and format is command specific.
 required to carry out the given command.  The exact content and format is command specific.
 
 
 The server will process the incoming command and then send a response of the form:
 The server will process the incoming command and then send a response of the form: