Openwbem Request Handler

OpenWBEM was architected to allow plugins for extensibility in many places. One of those places is in request handlers. OpenWBEM ships with two default request handlers: cim-xml and binary. Additionally, it supports a plugin interface to allow openwbem to support other protocols as well. When the request handler loads (openwbem.conf tells openwbem where to load request handlers) it registers to handle specific content-types. In the case of wsman, the request handler registers to handle the 'application/soap+xml' content type. All of the http stack are handled by the openwbem server, and the request handler is called with the payload (soap message).

The OpenWBEM Request Handler will enable the openwbem server to 'internally / pseudo-natively' handle wsman requests, rather than having to have an application make CIM client calls. A primary goal of this implementation is to use as much from the openwsman libraries as possible, so as to not 'reinvent the wheel.' This will make much of the maintenance and bug fixes central, not in multiple sources. So, the architecture of this request handler is to mirror as closely as possible a plugin to the wsmancli client, registering a "plugin," calling 'dispatch_inbound_call' and supporting the EndPoint? callbacks.

Tips to get it working:

  • To get it to build, will need to move several .h files from library to include path. (Currently determining how to minimize the number of files needed, yet still providing all the necessary interfaces)
  • In openwbem.conf, modify the 'owcimomd.request_handler_path' option to include path to the wsman request handler (or put the wsman request handler in the openwbem/requesthandlers folder
  • in openwbem.conf, modify the 'http_server.http_port' to the wsman port (8889) or make sure to tell your wsman client of choice to make the request to port 5988 (openwbem default). If using wsmancli, add '--port 5988' to your command line.
  • run openwbem in debug mode: 'owcimomd -d' to view output. You should (currently) see lots of debug messages (if configured with --enable-debug-mode option)
  • currently will only support requests of 'http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/' resource (but allowing for any known CIM class, whether defined by that schema or not). ie, following is sample wsmancli commandline to enumerate the OpenWBEM_UnitaryComputerSystem:
    wsman enumerate -T http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/OpenWBEM_UnitaryComputerSystem --port 5988

note that the OpenWBEM_UnitaryComputerSystem is not part of the dmtf.org schema. This is a known issue. Need to determine proper way to address this: Do I require a configuration of schemas that this requesthandler will support? How to do so? etc.