powerman.dev(5)


NAME

   powerman.dev - PowerMan device specification files

DESCRIPTION

   PowerMan  device  specifications are rather wierd.  For this reason, we
   suggest that you leave the writing of these  scripts  to  the  PowerMan
   authors.  However, if you insist, here is how they work.

   Note:  the  authors  do  not  guarantee that the PowerMan specification
   language will not change, however we are open to taking on  maintenance
   of  scripts submitted by PowerMan users.  We can't guarantee that we'll
   be able to test new releases against all devices but we'll do our  best
   not  to break anything.  NOTE: the best way to help us in this endeavor
   is to provide a ``simulator'' for your power controller and  associated
   tests  in  the  test subdirectory of the powerman source code.  See the
   examples in that directory.

   By convention, device scripts are one device per file and are  included
   as needed from a powerman.conf file, like this:

          include "/etc/powerman/icebox3.dev"

   A device script is surrounded by an outer block:

          specification "my_device_name" {
              # configuration settings
              # script blocks
          }

   The possible configuration settings are:

   timeout <float>
          (optional)  device  script  timeout in seconds - applies to each
          script, the whole thing, not just a particular "expect".

   plug name { <string list> }
          (optional) if plug names are static,  they  should  be  defined.
          Any reference to a plug name in the powerman.conf must match one
          of the defined plug names.

   pingperiod <float>
          (optional) if a  ping  script  is  defined,  and  pingperiod  is
          nonzero,  the  ping  script will be executed periodically, every
          <float> seconds.

   Script blocks have the form:

          script <script_name> {
              # statements
          }

   Script blocks should all be grouped together with no  config  lines  in
   between.   Scripts  are  for  performing  particular operations such as
   power on, get power status, etc.  The various script names  are  listed
   below.   Those marked with [%s] are called with a plug name "argument",
   which can be included in a send statements by including  a  %s  (printf
   style).   Warning:  all  the send strings are processed with printf and
   you can cause powermand to segfault if you include  any  printf  tokens
   other than the appropriate zero or one %s.

   login  Executed  immediately  on (re-)connect.  If you need to login to
          the box, do it here.  This is  also  a  good  place  to  descend
          through  a  first  layer  of  menus.   Caveat:  %  occurring  in
          passwords must be escaped as  %%.   Caveat:  occurs  outside  of
          client  session  so  cannot  be  debugged with -T.  A trick when
          debugging  is  to  move  this  code  into  the   status   script
          temporarily so you can see what is going on.

   logout Executed  prior  to  disconnect.  Get device in a state so login
          script will work (though hopefully disconnecting  will  do  that
          too).

   status_all, status[%s]
          Obtain  plug  state  for  all  plugs or only the specified plug.
          When all plugs of a device are involved in a plug status  query,
          the  status_all script, if defined, will be called in preference
          to the status script; otherwise the status script is called  for
          each plug.

   on_all, on_range[%s], on[%s]
          Power on all plugs, a range of plugs, or the specified plug.

   off_all, off_range[%s], off[%s]
          Power off all plugs, a range of plugs, or the specified plug.

   cycle_all, cycle_range[%s], cycle[%s]
          Power  cycle all plugs, a range of plugs, or the specified plug.
          The intent of this  command  was  to  map  to  the  RPC's  cycle
          command;  however,  device  script are increasingly implementing
          this in terms of a power off/delay/power so the off time can  be
          controlled by the script.

   status_soft_all, status_soft[%s]
          Obtain  soft  power  state  for  all plugs or only the specified
          plug.  Soft Power refers to the "standby state" of the node.  On
          means  the  node  is  powered  up.  Off means either the node is
          powered off at the plug or is powered on  at  the  plug  and  in
          standby  mode.   This  is  really  only  useful  on devices that
          include both a plug relay and a probe into the node attached  to
          a non-standby power source.

   status_temp_all, status_temp[%s]
          Obtain  temperature  reading for all plugs or only the specified
          plug.  Temperature is obtained by sampling a thermocouple in the
          node.   Results  are reported as a text string - not interpreted
          by Powerman beyond any regex chopping done by the script.

   status_beacon_all, status_beacon[%s]
          Obtain beacon state for all plugs or only  the  specified  plug.
          Some RPC's include a way to flash a light on a node.

   beacon_on[%s]
          Flash beacon on the specified plug.

   beacon_off[%s]
          Clear beacon on the specified plug.

   reset_all, reset_range[%s], reset[%s]
          Reset  all  plugs, a range of plugs, or only the specified plug.
          Reset refers to signaling a motherboard reset butten header, not
          a plug cycle.

   Within a script, the following statements can be used:

   send <string>
          Send <string> to the device.

   delay <float>
          Pause script for <float> seconds.

   expect <string>
          <string>  is  compiled  as a regular expression with regcomp(3).
          The regular expression is matched  against  device  input.   The
          script  blocks  until the regex is matched or the device timeout
          occurs (in which case the script is  aborted).   Upon  matching,
          any parenthesized expressiones are assigned to variables: $1 for
          the first match, $2 for the second match, and so  on.   Warning:
          some  implementations  of  regex(3) silently fail if the regular
          expression exceeds available static storage.

   setplugstate    [<string>|<regmatch>]     <regmatch>     [off=<string>]
   [on=<string>]
          Set  the  plug  state.   The  first argument, if present, is the
          literal plug name or a <regmatch> from the previous expect which
          contains  the  plug name.  If omitted, the plug name is presumed
          to be the script argument.  The off and on strings are  compiled
          regexes,  which if matched by the second argument, result in the
          plug state being set to off or on.  Yes we are applying  regexes
          to regmatches!  If no off or on strings are provided, state will
          be unknown.

   ifoff, ifon
          Script  statements  enclosed  in   an   ifon/ifoff   block   are
          conditional executed based on the state of the plug passed in as
          an argument.  Ifon/ifoff blocks can only be used in single  plug
          scripts that take an argument.

   foreachplug
          Script  statements  enclosed in a foreachplug block are executed
          iteratively with a %s argument defined  for  each  target  plug.
          Foreachplug  blocks  can  only  be used in all plug scripts that
          take no argument.

   Script terminals are  defined as follows:

   <float>
          decimal number - exponent forms not supported

   <string>
          Text  surrounded  by  double  quotes.   May  contain   C   style
          backslash-escaped   characters,   including  three  digit  octal
          values,  and  most  common  backslash-escaped  single  character
          values.

   <string list>
          Multiple <string> values separated by white space.

   <script_name>
          Name of script (see above).

   <regmatch>
          Results of a parenthesized regular expression match are assigned
          to $1, $2, ... $N.

FILES

   /etc/powerman/*.dev

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), powerman-devices(7).

   http://sourceforge.net/projects/powerman





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.