This is an implementation of the Service Availability Forum's 
Hardware Platform Interface B.03 specification.

The following components are supported:
* OpenHPI base library
* OpenHPI utility functions
* OpenHPI Daemon
* HPI Client programs and HPI shell

* Simulator Plugin
* Dynamic Simulator Plugin
* Slave Plugin
* Test Agent Plugin
* IMPI Direct Plugin
* SNMP BladeCenter/RSA Plugin
* iLO2 RIBCL Plugin
* SOAP/XML BladeSystem c-Class Plugin
* Oneview/REST Synergy Plugin
* rtas Plugin
* sysfs Plugin
* watchdog Plugin

Feedback, as always, is welcome and encouraged:
openhpi-devel@lists.sourceforge.net

---------------------------------------------------------
PREREQUISITES
---------------------------------------------------------
The following software is required to build openhpi

autoconf >= 2.57
automake >= 1.8
gcc      >= 3.2.0
glib2    >= 2.12
gcrypt   >= 1.4
pkgconfig (may be called pkg-config depending on distro)

The follow libraries are needed to build certain plugins

sysfs plugin
  libsysfs =< 1.3

snmp_bc plugin
  net-snmp >= 5.07
  libuuid (may be found in e2fsprogs or libuuid depending on distro)

oa_soap plugin
  libssl >= 0.9.7
  libxml2

ov_rest plugin
  librabbitmq >= 0.8.0
  json-c-devel
  libcurl-devel

ipmi plugin
  OpenIPMI >= 1.4.20 (http://openipmi.sf.net)


---------------------------------------------------------
RPM BUILD NOTE
---------------------------------------------------------
The library libuuid.so can be provided with e2fsprogs RPM
or with libuuid RPM.
And the header file uuid.h can be provided with
e2fsprogs-devel RPM or with libuuid-devel RPM
correspondingly.

The default RPM spec for openhpi is configured for the
first case libuuid/libuuid-devel.

If your distribution falls into the second case just
change uuid_provider in openhpi.spec.in before
running ./configure script.

---------------------------------------------------------
BUILD / INSTALLATION
---------------------------------------------------------

FOR RELEASED TARBALLS

Use standard UNIX mechanisms:
./configure && make && make install

Note: by default all plugins that *can* be built, will be built, all
other plugins will be silently disabled.

If you wish to disable a plugin, any flags you pass to configure
will be passed to the configure program.
("./configure --help" for more info on the options)

i.e. ./configure --disable-simulator will disable the simulator plugin

Note that for a production-type installation you will want to pass
the following options at the least:
./configure --prefix=/usr --sysconfdir=/etc --with-varpath=/var/lib/openhpi

then 
        make (or make rpm, but you will need to be root on some distros.)
and then (as root or with proper system install permissions)
        make install (or install from the rpm).

It will install the openhpi library, enabled plug-ins and sample 
applications that uses the library and plug-ins.

NOTE: Modify the configuration file, openhpi.conf, for your needs.
This will be in ${sysconfdir}/openhpi/openhpi.conf, where $sysconfdir is
${prefix}/etc by default (and ${prefix} is /usr/local by default) unless
you set $sysconfdir when you ran ./configure as shown above.

FOR SUBVERSION EXTRACTS

svn export https://svn.code.sf.net/p/openhpi/code/openhpi/trunk mydir

It will extract OpenHPI trunk to mydir.
First time after extracting the code:
run ./bootstrap

This will generate the configure script and all files needed by it.

Then, use the instructions provided for RELEASED TARBALLS

---------------------------------------------------------
CLEANUP
---------------------------------------------------------
To remove the temporary build files, type:

make clean

If you are a maintainer, and need to remove all autogenerated files, type:

make clean
make maintainer-clean
(will neeed to run bootstrap and configure again after that)
If bootstrap is not present (tarball does not contain it), download it using
svn export http://svn.code.sf.net/p/openhpi/code/openhpi/tags/$rtag/bootstrap .
($rtag is release version, for example 3.6.0)

---------------------------------------------------------
Active Plug-ins
---------------------------------------------------------
simulator -         plugin for simple testing. It uses a static database 
                    for hardware configuration.
dynamic_simulator - plugin for advanced testing. It uses a configuration file 
                    to simulate any hardware.
slave -             allows to aggregate resources from different domains (slave domains)
                    and to provide aggregated resources as part of the one domain (master domain).
test_agent -        plugin for advanced testing. Provides console for runtime configuration.
ipmidirect -        IPMI plugin that directly uses ipmi protocol to ipmi 
                    infrastructure, e.g. chassis managers.
snmp_bc -           IBM BladeCenter/RSA plugin (uses snmp)
ilo2_ribcl -        HP ProLiant Rack Mount Server plug-in
oa_soap -           HP BladeSystem c-Class plugin
ov_rest -           HPE Synergy plugin
rtas -              Run-Time Abstraction Services (RTAS) plug-in
sysfs -             Linux sysfs plugin (LM sensors and I2C devices exported in 
                    sysfs requires kernel 2.6 or >= 2.5.72)
watchdog -          Linux watchdog device interface


For information on recent changes, see the changelogs at
http://openhpi.org
http://openhpi.sf.net

---------------------------------------------------------
CLIENT PROGRAMS
---------------------------------------------------------

Openhpi provides a set of client programs, that can be use as examples for 
typical HPI usage. They also help testing when invoked from a command line, 
or could even be called by applications.

The hpi_shell provides are command shell for calling HPI functions 
interactively.

The following client programs are provided:

hpialarms -      show Alarm Control management instruments.
hpicrypt -       Encrypt or decrypt a file. Back up the file to a secure
                 location before encrypting the file.
hpidomain -      show information about domains or set the domain tag.
hpiel -          displays HPI event log entries
hpievents -      polls for events
hpifan -         show Fan Control management instruments
hpigensimdata -  generate data file for dynamic simulator plugin
hpiinv -         show inventory records for hardware resources
hpionIBMblade -  display and manage resources of an IBM Blade with 
                 Basedboard Management Controller (BMC)
hpipower -       Invoke HPI Power Management APIs
hpireset -       Invoke HPI Reset Management APIs
hpisensor -      display sensor info for all resources with Sensor Capability
hpisettime -     Invoke Event Log clock APIs.
hpithres -       display sensor thresholds and sensor info.
hpitop -         display highlevel topology for a managed openHPI complex.
hpitree -        show in details the resources (rpt's) and resources' 
                 management instruments (rdr's) data structures
hpiwdt -         read and enables the watchdog timer.
hpixml -         display system view in XML

ohdomainlist -   show information about domains on the level of the openhpi 
                 base library
ohhandler -      uses the openhpi additional interfaces to control openhpi 
                 configuration. That is plugins can be loaded, plugin instances
                 (handlers) created, unloaded or their configuration displayed.
ohparam -        control openhpi configuration parameters

hpi_shell -      allows a user to interactively perform a number of HPI 
                 operations in a command shell with prompting.

---------------------------------------------------------
HPI EXTENSIONS
---------------------------------------------------------

OpenHPI provides a small set of functions in addition to the SAF standard.
Mainly they are needed because of the OpenHPI architecture:
- manage plugins
- manage OpenHPI configuration dynamically

* oHpiVersionGet
* oHpiHandlerCreate 
* oHpiHandlerDestroy 
* oHpiHandlerInfo 
* oHpiHandlerGetNext
* oHpiHandlerFind
* oHpiHandlerRetry 
* oHpiGlobalParamGet 
* oHpiGlobalParamSet
* oHpiInjectEvent 
* oHpiDomainAdd 
* oHpiDomainAddById 
* oHpiDomainEntryGet 
* oHpiDomainEntryGetByDomainId 

Please find more information in the inline documentation in files:
include/oHpi.h  - function declarations
baselib/ohpi.c  - function implementation in Base Library
openhpid/ohpi.c - function implementation in OpenHPI Daemon

---------------------------------------------------------
FOR MORE INFO
---------------------------------------------------------

Please refer also to README.daemon and README.windows.

Please find more documentation in the docs subdirectory and in the 
man pages (openhpi, openhpid, clients).

For more information please see the project webiste at:
http://openhpi.org
http://openhpi.sourceforge.net

Also visit SAForum's website at http://www.saforum.org
