Man page - libpowerman(3)
Packages contains this manual
Manual
libpowerman
NAMESYNOPSIS
DESCRIPTION
RETURN VALUE
ERRORS
EXAMPLE
FILES
ORIGIN
SEE ALSO
NAME
libpowerman - PowerMan Client API
SYNOPSIS
#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
DESCRIPTION
The
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:
PM_CONN_INET6
Establish connection to the powerman server using (only) IPv6 protocol. Without this flag, any available address family will be used.
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:
|
PM_ON |
Node is powered on. |
|||
|
PM_OFF |
Node is powered off. |
PM_UNKNOWN
Node state is unknown. Some devices may return this even when the query is successful, for example X10 devices controlled by plmpower .
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 VALUE
Most 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
PM_ESUCCESS
Success.
PM_ERRNOVALID
System call failed, see system errno.
PM_ENOADDR
Failed to get address info for server.
PM_ECONNECT
Connect failed.
PM_ENOMEM
Out of memory.
PM_EBADHAND
Bad server handle.
PM_EBADARG
Bad argument.
PM_ESERVEREOF
Received unexpected EOF from server.
PM_ESERVERPARSE
Received unexpected response from server.
PM_EUNKNOWN
Server responded with ââunknown commandââ.
PM_EPARSE
Server responded with ââparse errorââ.
PM_ETOOLONG
Server responded with ââcommand too longââ.
PM_EINTERNAL
Server responded with ââinternal errorââ.
PM_EHOSTLIST
Server responded with ââhostlist errorââ.
PM_EINPROGRESS
Server responded with ââcommand in progressââ.
PM_ENOSUCHNODES
Server responded with ââno such nodesââ.
PM_ECOMMAND
Server responded with ââcommand completed with errorsââ.
PM_EQUERY
Server responded with ââquery completed with errorsââ.
PM_EUNIMPL
Server responded with âânot implemented by deviceââ.
EXAMPLE
This 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/lib/x86_64-linux-gnu/libpowerman.*
/usr/include/libpowerman.h
ORIGIN
PowerMan 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 ALSO
powerman (1), powermand (8), httppower (8), plmpower (8), vpcd (8), powerman.conf (5), powerman.dev (5).
http://github.com/chaos/powerman