bionic (3) libwulf.3.gz

Provided by: libwulf-dev_2.6.0-0ubuntu4_amd64 bug

NAME

       libwulf - xmlsysd client library

SYNOPSIS

       libwulf.a

DESCRIPTION

       libwulf.a  is  the core common library required by wulfstat and wulflogger, two xmlsysd clients that poll
       and display various statistics from a cluster in a user-controllable  loop.   libwulf  contains  routines
       that  open  and  parse  a  wulfhosts  (cluster/lan  descriptor)  file, establish xmlsysd connections in a
       threaded subtask to all hosts in the wulfhosts file, and in parallel  with  this  initialize  and  update
       selected  statistics.   libwulf  functions form an API adequate to support many kinds of toplevel log and
       gui applications reasonably efficiently.

       The best way to develop an application using libwulf is to examine one of the existing applications  such
       as wulflogger.  The steps are roughly as follows:

         * Initialize libxml

         * Allocate various linked lists using the provided linked list routines

         * Read and parse the wulfhosts file

         *  Set the dctl (display control) state for all hosts.  This struct MUST correspond to the state of the
       xmlsysd on the hosts.

         * Connect to all hosts, generally in a threaded loop that runs in parallel with any display process (so
       that if a host goes down the display task does not block).

         * Initialize all host-derived values from an initial xmlsysd return

         *  Enter  a polling work loop that sends all hosts the "send" commmand, updates all host derived values
       and then sleeps.  This loop can contain branches that alter dctl state, alter the display, or  do  pretty
       much whatever you want with the data retrieved.

         * Display or otherwise utilize the per-host data.

         * Exit (cleanly or otherwise) on request.

DCTL FLAGS

       The  following is the dctl struct currently used by libwulf.  The contents are all flags that can take on
       values of 0 (no or false) or not-zero (yes or true).  There is a  fairly  straightforward  correspondance
       between dctl state flags and throttleable xmlsysd tags and their (possibly sub-tagged) contents.

        typedef struct {

          int compress;    /* Do we compress xml output? */
          int whitespace;  /* Do we squeeze out whitespace? */

          /*
           * All the following toggle various components of the return.  Some of
           * these are only needed "once" in a typical monitoring session anyway
           * and can be pulled from the init return (which always sends
           * "everything").  Future developers should note the 1:1 correspondance
           * between many of these flags and "init_XXXX.c" and "update_XXXX.c"
           * sources and calls.
           */

          /* system call stuff */
          int identity;    /* Do we update system identity? */
          int time;        /* Do we update system time? */
          int users;       /* Do we update system pids? */
          /* proc-derived stuff */
          int cpuinfo;          /* Do we update proc cpuinfo? */
          int loadavg;          /* Do we update proc loadavg? */
          int meminfo;          /* Do we update proc meminfo? */
          int net;         /* Do we update proc net? */
          int stat;        /* Do we update proc stat? */
          int sysvipc;          /* Do we update proc shared memory stuff? */
          int uptime;      /* Do we update proc uptime? */
          int version;          /* Do we update proc (kernel) version? */
          /* Processes (in /proc/XXXXX where XXXXX is a pid) */
          int pids;        /* Do we update pids at all? */
          int running;          /* Running PIDs or all? */
          int root;        /* Including those owned by root? */
          List *userlist;  /* A linked list of usernames to watch */
          List *tasklist;  /* A linked list of tasknames to watch */

        } Dctl;

SEE ALSO:

       wulfstat(1), wulflogger(1)

PUBLICATION RULES

       libwulf.a can be modified and used at will by any user, provided that:

         a)  The  original copyright notices are maintained and that the source, including all modifications, is
       made publically available at the time of any derived publication.  This is open source software according
       to the precepts and spirit of the Gnu Public License.  See the accompanying file COPYING, which also must
       accompany any redistribution.

         b) The author of the code (Robert G. Brown) is appropriately acknowledged and referenced in any derived
       use or publication.

         c)  Full  responsibility for the accuracy, suitability, and effectiveness of the program rests with the
       users and/or modifiers.  As is clearly stated in the accompanying copyright.h:

       THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES  WITH  REGARD  TO  THIS  SOFTWARE,  INCLUDING  ALL  IMPLIED
       WARRANTIES  OF  MERCHANTABILITY  AND  FITNESS,  IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
       SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA  OR
       PROFITS,  WHETHER  IN  AN  ACTION  OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
       CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

ACKNOWLEDGEMENTS

       None to speak of now, but a good place to comply with b) above later, if you hack  this  code.   Well,  I
       should  probably acknowledge the essential help of Icon (Konstantin Raibetsev) and Seth Vidal, the entire
       beowulf list, and various books on xml, network programming (e.g. Stevens) and a cast of  thousands.   So
       let's assume that I just did;-)

       GPL  2b;  see  the  file  COPYING that accompanies the source of this program.  This is the "standard Gnu
       General Public License version 2 or  any  later  version",  with  the  one  minor  (humorous)  "Beverage"
       modification  listed  below.   Note  that this modification is probably not legally defensible and can be
       followed really pretty much according to the honor rule.

       As to my personal preferences in beverages, red wine is great, beer  is  delightful,  and  Coca  Cola  or
       coffee  or  tea  or  even  milk  acceptable  to those who for religious or personal reasons wish to avoid
       stressing my liver.

       The Beverage Modification to the GPL:

       Any satisfied user of this software shall, upon meeting the primary author(s) of this  software  for  the
       first  time  under  the  appropriate  circumstances,  offer  to  buy him or her or them a beverage.  This
       beverage may or may not be alcoholic, depending on the personal ethical and moral views of  the  offerer.
       The  beverage  cost  need  not  exceed  one  U.S.  dollar  (although  it certainly may at the whim of the
       offerer:-) and may be accepted or declined with no further obligation on the part of the offerer.  It  is
       not necessary to repeat the offer after the first meeting, but it can't hurt...