TWiki> EGEE Web>ProviderSpecification (revision 3)EditAttachPDF

Information Provider Specification Proposal

Aim

The am of this proposal is to recommmend a specifiction for information providers and to define the framework in which they are used. We require this specification so that information providers can be easily written by the many different developers of the systems we use. By having a specification we can ensure that all the information providers can be used in the same framework. A framework is also needed to manage the information providers. The different systems that many require information, eg local fabric management systems, grid information systems or grid monitoring systems should all be able to interface with the framework. This proposal advocates the use of existing open standards, in particular the standards from the The Distributed Management Task Force DMTF.

DMTF Standards

The DMTF is a standards body which his heavly backed by major industrial players. At the core of the DMTF standards is the Common Information Model (CIM) schema and Web-Based Enterprise Management (WBEM).

The CIM schema is made up of two parts, the CIM meta schema of the CIM schema. The schema meta is a specification for descrbing schema. The CIM schema is a collection of defined schema which can be used for system management. The CIM schmea can easily be extendended by defining vendor extension. Profile are used to focus on a subset of the schema which is required for a particular task.

WBEM is a set of management and Internet standard technologies developed to unify the management of distributed computing environments. WBEM provides the ability for the industry to deliver a well-integrated set of standard-based management tools, facilitating the exchange of data across otherwise disparate technologies and platforms CIM-XML is a WBEM protocol that uses XML over HTTP to exchange CIM information. Theere also exists a specification for the CIM Query Language (CQL) which is heavliy influenced by SQL.

WBEM/CIM implementations are based on a server (usually referred to as CIMOM) running on the managed system and providing access to the system resources via the CIM Operations over HTTP protocol. Currently there are a few open source CIMOMs available, most of them under the umbrella of the WBEMsource initiative. All of them use architected provider interfaces to access and map the real system resources to the CIM object world. The code written to the provider interfaces is usually called instrumentation code and can be thought of being similar to a device driver. Thus, SBLIM will eventually implement the CIM Schema (and possible necessary extensions to it) thereby enabling GNU/Linux for WBEM management.

cmpi

There exsits a number of open source implementations of the DMTF specification.

Open Pegasus

Open Pegasus is an open-source implementationof the DMTF CIM and WBEM standards. It is designed to be portable and highly modular. It is coded in C++ so that it effectively translates the object concepts of the CIM objects into a programming model but still retains the speed and efficiency of a compiled language. Pegasus is designed to be inherently portable and builds and runs today on most versionsof UNIX(R), Linux, and Microsoft Windows. In addition, Open Pegasus is part of the Redhat Enterprise Linux Distribution.

Investigation into Open Pegasus

Setting up Open Pegasus on SLC4

Use apt-get to install the rpm from the SCL4 distribution

apt-get install tog-pegasus
Start the service
/etc/rc.d/init.d/tog-pegasus start

The file /etc/Pegasus/access.conf can be used to to restrict acess to the service.

Adding a provider to Open Pegasus

Open Pegasus requires two files; one MOF file which describes the information the provider producers and the information provider itself. Open Pegaus specifies and C++ API for information providers.

The MOF files are located in /usr/share/Pegasus/mof/ and the information providers are located in /usr/lib/Pegasus/providers/

Open Pegasus comes with

Testing Open Pegasus

Open Pegasus comes with an few example information providers, one of which is osinfo .
# /usr/bin/osinfo
OperatingSystem Information
  Host: pcitgd10.dyndns.cern.ch
  Name: Scientific Linux CERN SLC
   ( 2.6.9-22.0.1.EL.cern #1 Thu Nov 3 20:19:44 CET 2005 )
  Version: 2.6.9-22.0.1.EL.cern
  UserLicense: Unlimited user license
  Number of Users: 2 users
  Number of Processes: 96 processes
  OSCapability: 32 bit
  LastBootTime: Nov 23, 2006  9:34:41 (00100)
  LocalDateTime: Nov 23, 2006  16:14:29 (00100)
  SystemUpTime: 23988 seconds =  6 hrs, 39 mins, 48 secs

Experimenting with the Web Service Interface.

The command wbemexec can be used to experment with various XML requests. Using the osinfo get information from the osinfo information provider, create a file called request.xml with the following content.

<?xml version="1.0" ?>
<CIM CIMVERSION="2.0" DTDVERSION="2.0">
 <MESSAGE ID="3075" PROTOCOLVERSION="1.0">
  <SIMPLEREQ>
   <IMETHODCALL NAME="EnumerateInstanceNames">
    <LOCALNAMESPACEPATH>
     <NAMESPACE NAME="root"/>
     <NAMESPACE NAME="cimv2"/>
    </LOCALNAMESPACEPATH>
    <IPARAMVALUE NAME="CLASSNAME">
     <CLASSNAME NAME="PG_OperatingSystem"/>
    </IPARAMVALUE>
   </IMETHODCALL>
  </SIMPLEREQ>
 </MESSAGE>
</CIM>

Running the command /usr/bin/wbemexec request.xml will generate the following response.

<?xml version="1.0" encoding="utf-8"?>
<CIM CIMVERSION="2.0" DTDVERSION="2.0">
<MESSAGE ID="3075" PROTOCOLVERSION="1.0">
<SIMPLERSP>
<IMETHODRESPONSE NAME="EnumerateInstanceNames">
<IRETURNVALUE>
<INSTANCENAME CLASSNAME="PG_OperatingSystem">
<KEYBINDING NAME="CreationClassName">
<KEYVALUE VALUETYPE="string">
CIM_OperatingSystem
</KEYVALUE>
</KEYBINDING>
<KEYBINDING NAME="CSCreationClassName">
<KEYVALUE VALUETYPE="string">
CIM_UnitaryComputerSystem
</KEYVALUE>
</KEYBINDING>
<KEYBINDING NAME="CSName">
<KEYVALUE VALUETYPE="string">
pcitgd10.dyndns.cern.ch
</KEYVALUE>
</KEYBINDING>
<KEYBINDING NAME="Name">
<KEYVALUE VALUETYPE="string">
Scientific Linux CERN SLC
</KEYVALUE>
</KEYBINDING>
</INSTANCENAME>
</IRETURNVALUE>
</IMETHODRESPONSE>
</SIMPLERSP>
</MESSAGE>
</CIM>

Extensions to Open Pegasus

One of the limitations to Open Pegasus is that information provider interface is a C++ API. The API is quite complex and limited to one language. Another limitation of the inferface is that it is not standardized.

CMPI standard from the open group

CIMPLE Cimbiote Perl one

Query

his language limitation has been extended by a number of open source projects. For example Cimbiote is an API for writing CIM informaiton providers in python.

SBLIM

SBLIM (pronounced "sublime"), the Standards Based Linux Instrumentation for Manageability is an IBM-initiated Open Source project, intended to enhance the manageability of GNU/Linux systems. It does so by enabling WBEM, Web Based Enterprise Management.

he SBLIM project covers different aspects of an CIM enabled system. It depends on the intention of the user and the use case, which category is of interest. The available SBLIM packages can be subdivided into different categories.

The Programming Interfaces allow a provider programmer to write CIMOM neutral instrumentation. Based on our history we offer two different programming interfaces. But the intention of both is the same. We recommend to write new instrumentation against the latest one - CMPI. CMPI has been standardized by The Open Group and is an industry accepted Standard now.

The CIM Instrumentation packages contain the CIM provider to access system resources. Each package covers the modeling aspect and the resource access.

Several packages are located in the category of CIM Client Applications. We offer a client application and framework for CIM based Linux Systems Management, a CIM client command line tool and a small applications for event handling.

The packages, which are based on our experiences how an CIM development environment can be enhanced, is covered by the Development Tools section. We offer support to automate the creation of provider skeletons for certain interface types and a test suite to automate the function verification test of CIM instrumentation.

One package opens up a complete new, and partly CIM independent category - the data gatherer covered by the Monitoring section. The data gatherer combines infrastructure to collect performance data of a Linux system and CIM provider, to enable remote accessability to the performance metrics.

The package which tries to integrate end-to-end many (if not all) of the layers of a CIM application into a management task both from a solution view point and fom a development view is covered by the WBEM System Management Tasks section. It contains both complete tasks and help to create new tasks.

SBLIM CIM Client

The SBLIM CIM Client is a Java based package that enables CIM/XML based communication with CIM Object Managers/Agents. It is intended to be used by management applications in all areas that leverage CIM technology such as SMI-S, SMASH etc.

The code is governed by the Common Public License (CPL). The design of the SBLIM Client has put emphasis on low memory consumption and high performance. It offers different options to use the implemented XML parser (SAX, DOM, Pull). Furthermore, a comfortable way to debug interoperability issues by dumping the XML request and response to a log file is provided.

The SBLIM CIM Client is aligned with the draft version JSR48. JSR48 compliance will be implemented as soon as the final version of JSR48 is available.

See also the API Documentation

CMPI - Common Manageability Programming Interface

The Common Manageablity Programming Interface (CMPI) defines a common standard of interfacing Manageability Instrumentation (providers, instrumentation) to Management Brokers (CIM Object Manager). The purpose of CMPI is to standardize Manageability Instrumentation. This allows to write and build instrumentation once run it in different CIM environments (on one platform).

CMPI has been standardized by The Open Group. Get the CMPI Specification.

The following CIM Object Manager offer CMPI support:

* openPegasus * OpenWBEM * openCimom (former SNIA CIMOM) by installing the SBLIM package cmpi-adapter

CMPI is the successor for NPI. NPI itself was extended with a CMPI compatibility interface allowing to run old, NPI-based instrumentation on CMPI-capable CIMOMs

http://sblim.sourceforge.net/

WBEMCLI

The WBEM Command Line Interface is a standalone, convenient systems management utility for CIMOM access. Invocation and output syntax are problem-oriented and well suited for interactively inclusion in Shell and Perl scripts. It is especially suited for administrators writing their own management scripts or for WBEM developers that want to test their providers.

It does not require a CIM client library and has been tested with openCimom (former SNIA CIMOM) and openPegasus so far.

Get the sources from CVS (module wbemcli) or as tarball (package sblim-wbemcli).

SBLIM Reference Application

The SBLIM Reference Application (SRI) provides a frontend to WBEM based systems (and more). To find out more about SRI browse the SRI documentation.

Get the SRI sources from CVS (module sri) or as tarball (package sblim-sri).

Event Subscription Tool

The Event Subscription Tool is a small CIM client application for Event Handling. Intention of this tool is to facilitate the process of Client Subscription and Reaction to certain Events. A user can configure the subscription for his needs, e.g. which CIMOM and which Event type has to be monitored. The user configures the module by an xml-file. Supported pre-defined reactions are:

* a PopUp-Handler to inform via a Pop Menu, * an E-mail-Handler to send an e-mail, * a Shell-Handler to execute shell commands, * a Method-Invocation-Handler to call a certain method of a class.

This combination offers the user a very flexible and extendable Event framework.

Get the sources from CVS (module evsub).

CIM JDBC Mapper

The CIM JDBC Mapper is the result of a diploma thesis, which was written during april and june 2004 at the IBM laboratory in Boeblingen, Germany. It is a prototype and comes as is with no garranty at all.

The Common Information Modell is transformed to a relational view so that all informations are presented in two-dimensional tables. The transformation is done in the following way:

* a CIMClass is a table * an instance of a class is a row in the table * the namespace identifies a database * a class property is a column in the table

All operations are taking place on the client side. A SQL Statement is transformed in the semantic of the CIM Operations over HTTP protocoll and sent to the connected CIMOM. Any given SQL Statement (must be supported) is processed afterwards and the results are passed to the classes of the JBDC Interface.

Get the sources from CVS (module cimjdbc) or as tarball (package sblim-cimjdbc). Last Modified 2005-02-22

apt-get install sblim-wbemc

 wbemcli ei https://user:passwd@localhost/root/cimv2:PG_OperatingSystem
localhost:5989/root/cimv2:PG_OperatingSystem.CreationClassName="CIM_OperatingSystem",CSCreationClassName="CIM_UnitaryComputerSystem",CSName="pcitgd10.dyndns.cern.ch",Name="Scientific Linux CERN SLC" CSCreationClassName="CIM_UnitaryComputerSystem",CSName="pcitgd10.dyndns.cern.ch",CreationClassName="CIM_OperatingSystem",Name="Scientific Linux CERN SLC",Caption="Scientific Linux CERN SLC release 4.4 (Beryllium)",Description="Scientific Linux CERN SLC release 4.4 (Beryllium)",Status="Unknown",OSType=36,OtherTypeDescription="2.6.9-22.0.1.EL.cern #1 Thu Nov 3 20:19:44 CET 2005",Version="2.6.9-22.0.1.EL.cern",LastBootUpTime=20061124092538.000000+060,LocalDateTime=20061124102328.000000+060,CurrentTimeZone=60,NumberOfLicensedUsers=0,NumberOfUsers=3,NumberOfProcesses=101,MaxNumberOfProcesses=8189,TotalSwapSpaceSize=524280,TotalVirtualMemorySize=779940,FreeVirtualMemory=524120,FreePhysicalMemory=6788,TotalVisibleMemorySize=255660,MaxProcessMemorySize=524280,Distributed=FALSE,MaxProcessesPerUser=8189,SystemUpTime=3470,OperatingSystemCapability="32 bit"

wbemcli ei https://user:passwd@localhost/root/cimv2:Syslog_LogRecord

Summary

WBEM is an industrial backed standard for ...

Implementations of WBEM are maturing

Advantages

  1. Real Standard
    • Back by industry
  2. Mature implementations exist
    • Reduce development and maintainance effort.
    • Already in the RHEL distribution
      • Packages supported externally

Disadvantages

  1. No caching or throtle control for providers.
    • Could extend the existing provider interface to add this functionality.
    • Become invoved in the existing projects and suggest adding this feature.
  2. Provider inteface can be complex
    • Use other projects which
    • Create a generic provider for use within our project.
      • Use CIM/XML as the inteface between scripts and providers.

Conclusion

-- LaurenceField - 23 Nov 2006

Edit | Attach | Watch | Print version | History: r6 < r5 < r4 < r3 < r2 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r3 - 2006-11-24 - LaurenceField
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    EGEE All webs login

This site is powered by the TWiki collaboration platform Powered by Perl This site is powered by the TWiki collaboration platformCopyright & by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Ask a support question or Send feedback