|
NAMElibpowerman - PowerMan Client APISYNOPSIS#include <libpowerman.h> pm_err_t pm_connect (char *server, void *arg, pm_handle_t *hp, int flags); void pm_disconnect (pm_handle_t h); pm_err_t pm_node_on (pm_handle_t h, char *node); pm_err_t pm_node_off (pm_handle_t h, char *node); pm_err_t pm_node_cycle (pm_handle_t h, char *node); pm_err_t pm_node_status (pm_handle_t h, char *node, pm_node_state_t sp); pm_err_t pm_node_iterator_create (pm_handle_t h, pm_node_iterator_t *ip); void pm_node_iterator_destroy (pm_node_iterator_t i); char * pm_node_next (pm_node_iterator_t i); void pm_node_iterator_reset (pm_node_iterator_t i); char * pm_strerror (pm_err_t err, char * str, int len); cc ... -lpowerman DESCRIPTIONThe pm_connect() function establishes a connection with server, a string containing host[:port] or NULL for defaults; and returns a handle in hp. The arg parameter is currently unused. The flags parameter should be zero or one or more logically-OR'ed flags:
The pm_disconnect() function tears down the server connection and frees storage associated with handle h. The pm_node_on(), pm_node_off(), and pm_node_cycle() functions issue on, off, and cycle commands acting on node to the server on handle h. The pm_node_status() function issues a status query acting on node to the server on handle h. The result is resturned in sp which will be one of the values:
To use the above functions you must know the name of the node you wish to control. Calling pm_node_iterator_create() on handle h returns an iterator ip which can be used to walk the list of valid node names. pm_node_next() returns the next node in the list, or NULL when the end of the list is reached. pm_node_iterator_reset() rewinds iterator i to the beginning of the list. Finally, pm_node_iterator_destroy() destroys an iterator and reclaims its storage. RETURN VALUEMost functions have a return type of pm_err_t. pm_strerror() is available to convert an error code err to a human-readable string using storage str of length len passed in by the caller.ERRORS
EXAMPLEThis example program queries the list of valid nodes and turns them all on.#include <stdio.h> #include <stdlib.h> #include <libpowerman.h> int main(int argc, char *argv[]) { pm_err_t err; pm_node_state_t s; pm_handle_t h; pm_node_iterator_t i; char ebuf[64], *node; if ((err = pm_connect (NULL, NULL, &h, 0)) != PM_ESUCCESS) { fprintf (stderr, "pm_connect: %s\n", pm_strerror (err, ebuf, sizeof (ebuf))); exit(1); } if ((err = pm_node_iterator_create (h, &i)) != PM_ESUCCESS) { fprintf (stderr, "pm_node_iterator_create: %s\n", pm_strerror (err, ebuf, sizeof (ebuf))); exit(1); } while ((node = pm_node_next (i))) { if ((err = pm_node_on (h, node)) != PM_ESUCCESS) { fprintf (stderr, "pm_node_on: %s\n", pm_strerror (err, ebuf, sizeof(ebuf))); exit (1); } } pm_node_iterator_destroy (i); pm_disconnect (h); exit (0); } FILES/usr/local/lib/libpowerman.*/usr/local/include/libpowerman.h ORIGINPowerMan was originally developed by Andrew Uselton on LLNL's Linux clusters. This software is open source and distributed under the terms of the GNU GPL.SEE ALSOpowerman(1), powermand(8), httppower(8), plmpower(8), vpcd(8), powerman.conf(5), powerman.dev(5).http://code.google.com/p/powerman
Visit the GSP FreeBSD Man Page Interface. |