Using SWIG to write CIM (CMPI) providers in any (scripting) language
Python Ruby C Objective-C Shell Makefile
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
cmake/modules
doc
mof
package
src
swig
test
.gitignore
ANNOUNCE
CMakeLists.txt
COPYING
ChangeLog
LICENSE.BSD
README
TODO
VERSION.cmake
install.sh

README

Swig based CMPI bindings
------------------------

This implements a CMPI-compliant provider interface for various languages 
via SWIG.

Currently supported languages

- Ruby
- Python
- Perl (beginning support)



Implementation
--------------
cmpi-bindings is implemented as a single CMPI-compliant provider (per 
supported language) that serves as a "multiplexer" to the instrumented 
language-specific providers.

Using a python provider for class Py_Foo as an example, cmpi-bindings 
project provides a cmpi-compliant provider (libpyCmpiProvider.so) that 
will be registered with the cimom as the provider that handles Py_Foo 
requests.  When libpyCmpiProvider gets the request, it will then forward 
it on to the python module that instruments the Py_Foo class.

cmpi-bindings also provides supported-language-interfaces for the Provider 
Environment and BrokerCIMOMHandle, so that providers can make "up-calls" 
into the cimom.


For the stack discussion below, use the following 'type' abbreviations:
  Ruby:    rb
  Python:  py
  Perl:    pl

The cmpi-bindings provider interfaces under CMPI consist of the following 
stack:

CIMOM
  ->
lib<type>CmpiProvider.so
  ->
cmpi_<type>wbem_bindings.<type>
  ->
<python:  pywbem/cim_provider2.py>
  ->
language-specific provider module



Build / Installation
--------------------
The build scripts will only build the modules for which you have appropriate 
devel packages.  It will skip any others.

  Requirements
  ------------
  cmake 2.4 or later
  CMPI header files, e.g. from sblim-cmpi-devel
  Python interface requires:  python-devel, pywbem-0.7.0
  Perl interface requires: perl
  Ruby interface requires: ruby ruby-devel (1.8, 1.9, or 2.0)

  Build
  -----
  From root of tarball's source tree, create a directory 'build' and move 
  (cd) into that directory
  'cmake ..'
  'make'
  'sudo make install'

  You can pass various parameters to cmake to control the build, e.g.
  cmake -DCMAKE_INSTALL_PREFIX=/usr/local
        -DCMAKE_C_FLAGS_RELEASE:STRING="-Wall -O2 -g"
        -DCMAKE_CXX_FLAGS_RELEASE:STRING="-Wall -O2 -g"
        -DCMAKE_BUILD_TYPE=Release

  Test
  ----
  For each language, there is a test/<language> directory.
  Within that directory, there should be test providers, scripts that use 
  the test providers, and scripts to register the mofs and providers with 
  CIMOMs.


Testing
-------

The test/ subdir contains a couple of tests and some sample code. If
you have Ruby, rake, sblim-sfcb, sblim-sfcc and sfcc.gem installed,
test/rake gives you a more complete testsuite.

See test/rake/README for details.


Language-specific documentation
-------------------------------

  Python
  -----
  Visit http://pywbem.wiki.sourceforge.net/Provider+Home for QuickStart Guide,
  Tutorials, sample providers, etc.