Pegasus Enhancement Proposal (PEP)

PEP #: 185

Title: Release Notes for OpenPegasus 2.4

Version: 1.4

Created: 23 July 2004

Authors: Karl Schopmeyer

Status:  draft

Version History:






23 July 3004


Initial Submission (Incomplete)

1.1 26 August 2004


Incorporate comments from 1.0
1.2 6  October 2004 KS Incorporate comments from Review of 1.1


24 October 2004 KS Update with comments from Version 1.2


1 November 2004 KS Comments from 1.3


Abstract: This document defines the release notes that support release 2.4 of the Pegasus platform.


  1. Availability of this Release
  2. Functionality of This Release
  3. Relationship to CIM/WBEM Standards
  4. Supported Platforms
  5. Conformance with DMTF Specifications
  6. Changes in This Release
  7. PEGASUS Bugs
  8. Pegasus Release Control and Version Definition Documentation
  9. General Documentation

Availability of this Release

This release is available in a number of forms including:

  • source release in both ZIP and TAR formats. These can be downloaded from the OpenPegasus Web site at
  • OpenPegasus 2.4 binaries are available for Red Hat Enterprise Linux 3.0 and SUSE LINUX Enterprise Server 9.0. A Source RPM is also available that can be used to build binaries for most LSB-compliant RPM-based Linux distributions and versions.
  • The Pegasus CVS. The CVS tags representing this release and subsequent snapshots that are made available in the Pegasus CVS are defined on the OpenPegasus CVS repository web page (see the OpenPegasus CVS page for information) using the tags defined on the release snapshots page.

The instructions for acquiring the released code are on the Pegasus WEB site. Installation instructions are part of the README in the root of the Pegasus source tree.

Instructions for building the Linux RPMs:

  1. Download tog-pegasus-2.4.0-1.src.rpm.
  2. rpm -ih tog-pegasus-2.4.0-1.src.rpm
  3. Build the rpms:

    For RHEL3 - rpmbuild -bb /usr/src/redhat/SPECS/tog-pegasus- 2.4.0-1.spec

    For SLES9 - rpmbuild -bb /usr/src/packages/SPECS/tog-pegasus- 2.4.0-1.spec

  4. After the build the rpms will be in the following locations:

    For RHEL3 - /usr/src/redhat/RPMS/[arch]/tog-pegasus- 2.4.0-1.[arch].rpm /usr/src/redhat/RPMS/[arch]/tog-pegasus-sdk- 2.4.0-1.[arch].rpm.

    For SLES9 - /usr/src/packages/RPMS/[arch]/tog-pegasus- 2.4.0-1.[arch].rpm /usr/src/packages/RPMS/[arch]/tog-pegasus-sdk- 2.4.01-.[arch].rpm.

Functionality of This Release

The overall level of functionality in the Pegasus environment effective with this release is as follows:

CIM Server Functionality

The following paragraphs list the functions in this release.  All functions are considered community tested and operational unless specifically noted below. Features that are marked alpha or beta are not generally of the quality or completeness for production usage.  Interfaces that are part of the Pegasus public interface definitions but that the Pegasus team feels may change are marked experimental. In many cases these features  and interfaces are conditionally compiled with special environment variables. PEP 174 provides more detailed information on how to enable functionality that is conditionally compiled in this release.

CIM Operations over HTTP support

  1. Class Operations (getClass, deleteClass, modifyClass, enumerateClass, enumerateClassNames)
  2. Qualifier Operations (getQualifier, setQualifier, deleteQualifier)
  3. Instance Operations (getInstance, deleteInstance, modifyInstance, enumerateInstance, enumerateInstanceNames, getProperty, setProperty)
  4. Association Operations (references, referencenames, associators, associatornames)
  5. Methods Operations (invokeMethod)
  6. Query operation - Support for ExecQuery was added in 2.4 with WQL as query language and is defined in PEP 119. This feature is considered at alpha quality because it has only been contributor tested and there is no test in the test suite to confirm the functionality.


Process indications are operational in the Server.  This includes support for subscriptions, filters, and indication handlers, the provider API for indications and the CIMXML indication handler.

Indication Listener

The generic components for a CIM Listener and a listener API are operational.  This includes the functions for HTTP, XML indication input and response, and consumers of indications. This code can be used to define a separate listener package and is used as an indication listener in the Pegasus server. 

Query Language

The query language today is based on WQL and is implemented and used for filters and in 2.4 for execQuery.  The execQuery support  for WQL has been implemented in Pegasus 2.4 but is considered alpha quality.

Class Repository

Pegasus uses an XML based file/directory class repository. All class and qualifier operations access this repository. The repository was modified to improve efficiency in 2.4 by adding a binary repository option to reduce repository size. The binary repository functions are considered alpha level because they have only been contributor tested and there is no test function in the automated Pegasus test suite.

Instance Repository

Pegasus uses an XML based file/directory Instance repository.  The instance  repository may be conditionally used as the default repository with a Pegasus configuration flag ( As defined in PEP 174, it is normally set  to NOT use the instance repository as default).

Server Security

  1. Basic Authentication (Note that Digest based security is not implemented)
  2. SSL support - SSL is implemented in Pegasus using the OpenSSL libraries. Pegasus does not provide the OpenSSL libraries but SSL can be used on any platform supported by OpenSSL.  Minimum level known to work is  0.9.6c .   This release of Pegasus was tested with 0.9.6k.  See for OpenSSL release information.

 Platform Management Functions

  1. Configuration through the defined configuration parameters (cimconfig) and server command line options.
  2. Daemon/service operation of the Pegasus CIM Server on all supported platforms.
  3. Operation statistics capture using the CIMStatistics classes in the DMTF Interop model. This function is considered alpha quality and conditionally compiled.  The default is that this function is not compiled.
  4. Multiple pluggable provider managers.  Provider managers are provided for the Pegasus C++ provider interface, the CMPI C provider interface and an alpha quality Java provider interface (JMPI).
  5. Platform Globalization - Pegasus includes support for unicode data transfers and includes a mechanism for message support in mulitple languages using the open source ICU libraries ( Note that this is still marked experimental.
  6. Out-of-process providers (Experimental) - See PEP 072 for more information on use of this feature
  7. Shared class namespaces (Experimental) - See PEP 129 for more information on use of this feature
  8. Remote providers for the CMPI provider interface (Experimental) - See PEP 130 for more information on use of this feature

SLP Discovery

SLP support is included but is conditionally compiled with the default.  This code can be enabled by setting the compile environment variable PEGASUS_ENABLE_SLP.   Once compiled, SLP support is enabled with the slp configuration parameter (slp=true). SLP support includes an SLP service agent in the Pegasus CIM severas and generates SLP advertisements compatible with the DMTF slp template specification. The SLP support also includes  extensions to the CIM Client libraries to execute SLP User Agent requests and analyze the results (note that these interfaces are not yet part of the Pegasus public SDK).

Provider Managers

Pegasus is designed to support multiple Provider Managers to allow multiple provider interfaces to the CIMOM.  The default provider manager is the C++ Interface.  This section defines the additional provider managers available with Pegasus 2.4.

CMPI C interface Provider Manager

Pegasus 2.4 includes a provider manager for the CMPI C interfaces. This C interface is the result of a project by the IBM SBLIM team (see and also the working draft of the Open Group specification for these interfaces which is in review now within the WBEMSource Initiative ( This provides a standardized C level interface for creating providers that can be registered with the Pegasus CIM Server in the same manner as the current C++ providers.

Today, the CMPI provider manager and interfaces are considered experimental and are subject to change in future versions of Pegasus  until the CMPI specification is released. Information on writing providers with the CMPI interface is available in the draft version of the specification today (see above) and in the following documents ( and and readme.cmpi in the Pegasus source root directory.

JMPI Java Interface Provider Manager

Pegasus includes an experimental provider manager for Java provider interfaces based on the SNIA provider interface definitions.  This provider manager is  considered alpha quality and is not compiled in the default build.   See readme.jmpi in the Pegasus source root directory for more information.


There are a number of providers available in the Pegasus release. This includes providers in the following categories:

Pegasus Internal Providers

Pegasus provides a set of "internal" providers that have direct access to the CIMOM for information and provide information and services to support the CIMOM and its administration.    The providers in this category are mostly defined in the directory src/pegasus/controlproviders and include support for the following classes:

  • DMTF Interop classes including __Namespace,  CIM_Namespace, CIM_ObjectManager, CIM_CommunicationMechanism, and CIMOMStatistics.

Generic Providers

Generic OperatingSystem provider. See the directory src/Providers/generic.

Test/Sample Providers

See the directories src/Providers/TestProviders and src/Providers/Sample for more information about test and sample providers.

Managed System Providers

ComputerSystem, DNSAdmin, DNSService, Operating System, Process, Processor. For more information on these providers see the documentation for each provider in the directory src/Providers/ManagedSystem

SLP Provider

This provider acts as the definer of  SLP information for SLP registration and also controls the Pegasus SLP Service Agent. It is treated as a normal provider rather than a control provider because it does not use internal functions of the CIMOM to generate any of its information today. (conditionally compiled today)


The default CIM_Schema loaded with this release is the DMTF CIM 2.8, Final release.  In addition, Pegasus includes a number of local classes defined for Pegasus.  These are defined in the pegasus/Schemas directory.   CIM 2.9 preliminary schema is also available in the CVS but is not the default schema for compile.  There are also a number of older schema available in the CVS.

The mechanism to install other schemas than the default is defined in the mak/config.mak

NOTE: The CIM 2.5 schema is maintained in the CVS repository because it remains the basis for parts of the Pegasus test environment.

Pegasus MOF Compilers

Pegasus implements a MOF compiler that can operate either at the client interface to the Pegasus CIM Server (cimmof) or directly interfacing with a CIM repository (cimmofl).

The direct interface compiler is used primarily to provide an initial class/instance repository. WARNING:  the use of cimmofl to manipulate instances in the repository bypasses any provider that is registered to serve these  instances and simply installs the instances in the instance repository; this may result in 1) bad data in the repository if there are registered providers, 2) corruption of the repository if the CIM Server is running or, 3) MOF data that is loaded but not available until the server is stopped and restarted in some cases.  Use of cimmofl in general is discouraged and particularly  to manipulate instances served by a registered providers (ex. Provider registration). Use of cimmof rather that cimmofl is encouraged wherever possible.

Client Tools

   Pegasus CIM Server Adminstration

  1. cimuser - Manage Pegasus CIM Server Users.
  2. cimconfig - Manage the Pegasus CIM Server configuration parameters.
  3. cimauth - Manage the CIM Server authorization characteristics. Today this is authorizing users to namespaces.
  4. cimprovider - Manage information about the providers .

Information client tools

These tools provide information on the objects managed by the server.

  1. tomof - output classes and/or instance information from the Pegasus repository in MOF or XML format.
  2. dnsinfo - Generate a set of standard information on the Domain Name System (DNS) configuration from CIM Classes. Note that the information generated is dependent on the information available from providers and differs from system to system.
  3. ipinfo - Generates a set of standard information from the Network Schema.  Information generated varies by system because of the level of provider support.
  4. osinfo - Generate a set of standard information on the Operating System from CIM Classes. Note that the information generated is dependent on the information available from providers and differs from system to system

Test support Tools

  1. Pegasus unit tests (available through the "tests" option on the Pegasus make files) these tests are defined throughout the Pegasus source tree typically in "tests" directories.       
  2. The Pegasus test suite (see the pegasus/tests directory and the Pegasus/TestBuildMakeFile)
  3. TestClient - Basic client for overall platform operation testing.
  4. wbemexec - Test tool that sends/receives XML from XML input.
  5. CLI - Command line interface for Client commands.
  6. Benchmark Test - A benchmark test environment is provided which includes both a client and provider component. See src/clients/benchmarkTest for more information.

Pegasus Interface APIs

Details of the Pegasus public interfaces for this release are listed in PEP 189 available from the web site( That document is the authorative source for the list of publicly supported Pegasus APIs.   The Client and Provider API were originally frozen at the Pegasus version 2.1 release. The interfaces in the release of Pegasus 2.1 are forward compatible to this release. Well-behaved clients and providers compiled to the Pegasus 2.1 or 2.2 interfaces should be compatible with this release without compilation.  There have been extensions and new interfaces added for this release and these are marked as experimental.   The Pegasus public interfaces includes the following major functions

  1. Client APIs
  2. Provider APIs
  3. CIM Object and System function APIs

In addition, there are other client interfaces which are not today in the public SDK including:

  1. CIM Listener APIs
  2. SLP Client (User Agent) APIs which are extensions to the Client APIs


The APIs are documented in their respective header files and  in HTML documentation based on the information in the header files extracted with the doc++ tool will be available on the OpenPegasus web site.

WMI Mapper

The WBEM to WMI Mapper provides a way to access WMI data from Windows platform systems. It converts incoming XML/CIM requests to Microsoft WMI requests, executes the requests, converts the results to XML/CIM and returns the results to the client. WMI Mapper receives an HTTP message containing the XML/CIM request. It decodes the XML message and extracts from the HTTP message header the user credentials provided on the connection (username and password). The WMI Mapper authenticates these credentials, verifying if the provided credentials have access to the desired WMI data. This is done because the WMI Mapper runs as a service, logged on using an account with administrative rights (which has all access to WMI data). Because of this, the WMI Mapper impersonates the user credentials provided on the HTTP message to ensure that the calling user has rights to browse WMI data. Hence, ALL requests made to the WMI Mapper MUST contain user credentials.

Relationship to CIM/WBEM Standards

Pegasus was designed and implemented to comply with the DMTF specifications The following table defines the level of the DMTF specifications which which Pegasus conforms today.

DMTF Specification Specification Version
DSP 0004 CIM Specification Version 2.2 with Addendum
DSP 0200 - CIM Operations over HTTP 1.1, final, 6  January 2002
DSP 0201 - Representation of CIM in XML 2.1, preliminary, May 2, 2002
DSP 0205 - WBEM Discovery using SLP 1.0, preliminary, 27 January 2004
WBEM SLP Template 1.0.0
CIM Schema 2.8 Final, June 2004

Supported Platforms

Each Pegasus release lists as supported platforms those hardware/software platforms that have recognized ports for the Pegasus code base including a maintainer for the platform that will be willing to regularly assure that the port is maintained as the Pegasus code base is changed.  Pegasus may be operable on other platforms (ex. Windows 98) but without a group to provide the role of test and maintenance, the Pegasus project cannot assure operation. The supported platforms for this Pegasus release are:

Platform and OS



HP aC++ B3910B





Linux Itanium


Linux IA-32

gcc (versions 2.9x and 3.xx)

Windows 2000

Microsoft Visual C++ Ver 6 and Microsoft .Net compiler Version.   Works on VC .NET 2003 (aka v7.1)

Windows XP

Microsoft Visual C++ Ver. 6 and Microsoft .Net compiler Version 7.1

Sun Solaris 9 Sun workshop 6, update 2
MacOS version 10.2 and higher gcc 3.3

Further information regarding Pegasus support on IBM platforms can be found at:

Further information regarding Pegasus support on HP platforms can be found at:


Conformance with DMTF Specifications

It is a major goal of the OpenPegasus project to both drive and utilize the DMTF CIM/WBEM specifications.  However, today there are a number of known differences.  As of this release, some of the differences include the following:

  1. Provider Registration - Pegasus supports registration through a set of Pegasus Provider registration classes rather than support the DMTF defined Provider Qualifier. Pegasus will not support this qualifier in the future. See the readme for more information on provider registration.
  2.  Indications -Today Pegasus supports process indications but does not include any specific support for lifecycle indications.
  3.  Instance qualifiers and class qualifiers on some Operations - The DMTF specifications are unclear regarding the inclusion of qualifiers on CIM instances.  Some CIM Client implementations expect instances returned from the CIM Server to include the qualifiers defined in the class definition (such as KEY qualifiers on properties).   Pegasus today expects the provider to complete the qualifiers on instances in accordance with the specification and generally the interpretation is that Pegasus applies class level qualifiers when the includeInstance parameter is supplied on instance operations.  However, Pegasus today is inconsistent in the return of qualifiers so that the user should NOT depend on Pegasus accurately honoring the includeQualifier parameter for instance operations.  In the future it is expected that Pegasus will deprecate the use of qualifiers on instance operations completely.

  4.  CIM MOF compiler function for instance aliasing - The Pegasus MOF compiler does not today support this function.  This function is planned for a future version.

  5.  MultiRequest Oprations - Pegasus does not support the DMTF defined MultiRequest Operation option.

  6.  LocalOnly option on some instance Operations - With the 1.1 version of Specification for CIM Operations over HTTP, the definition of the LocalOnly parameter for the GetInstance and EnumerateInstances operations was modified. This change was incorrect, resulted in reduced functionality and introduced a number of backward compatibility issues. As a result of issues introduced by this change, we strongly recommend that CIM Clients set LocalOnly = false and do not rely on the use of this parameter to filter the set of set of properties returned.

  7. MOFCompiler namespace pragma - The Pegasus compiler does not support the namespace pragma.

Changes in This Release

The development and release of each version of Pegasus is defined and controlled through Pegasus PEP documents.  PEP 97 is the controlling document this release and lists the original set of changes proposed and the status of each of those changes. Note that not all of the originally defined functionality was completed for this release.

In general, the areas of development for this release were:

  1. Expansion of platform globalization.

  2. Expansion of SLP support (still experimental and by default not compiled in the 2.4 release).

  3. Inclusion of the Pluggable Provider   manager (Providermanager2)as the default provider manager. Note that the original provider manager will NOT be supported in the future.

  4. Inclusion of Pluggable CMPI provider manager and the JMPI provider. 

  5. Inclusion of the out-of-process provider mechanism and the remote provider mechanism for CMPI. (Experimental)

  6. Addition of the binary repository option. (Experimental)

  7. Addition of the shared namespace concept so that class and qualifier definitions can be shared between multiple namespaces. (Experimental)

  8. Refactoring of the HTTP monitor.

  9. Addition of HTTP chunking.  Note that the internal segmenentation of operation responses allowing better control of memory within the cimom is planned for the future.


Note that there were a number of objectives that were not completely achieved including:

  1. Complete move to segmented operation responses and positive control of memory for operations.   The chunking code has been incorporated and the Pegasus client and the Server HTTP components handle chunking.  The components necessary to segment operation responses from the providers was not completed and will be included in a future version.

The complete set of PEPs defined for this release is defined in PEP 97.


The current bug list for Pegasus is openly available on the OpenPegasus web site.  As of the release of 2.4 release date, the following list represents what the Pegasus community feels are a subset of  open bugs with OpenPegasus 2.4 that may be of particular interest to users. Please see the bug reports (the number is a link to the report) to determine if there are any workarounds, patches, etc. for particular bugs.










MOF Compiler does not support aliasing





Multirequest operations not supported





XMLParser removes whitespace





Absence of REFERENCECLASSNAME in XML causes error





CIMRepository enumerateinstances deepInheritance, etc. procesing





ResponseHandler should clone CIM* objects before modifying them





EnumerateInstanceNames generates namespace error CIMException





Functionality on errors with Enumerate Functions. Should we generate error or send existing data. Today we pass data.



Bugs Corrected in This Release

The current bug list for Pegasus is openly available on the OpenPegasus web site bug database.  The database can be searched for bugs fixed based on date and Pegasus version.

Specifically the following Bugs which were listed in the release notes for Pegasus 2.3.2 have been fixed.










MOF compiler does not convert escape characters





cimserver stop responding after stress query of repository

1179 nor P2 All Sample providers should not be declared in Pegasus namespace
1330 nor nor PC MOF compiler does not handle "/* ... */" comments.





Disabling https prevents indication delivery through http.

Pegasus Release Control and Version Definition Documentation

The Pegasus project is controlled largely through a set of documents (PEPs) that serve as the definition and review mechanism for new and modified Pegasus functionality and for the definition and documentation of releases.

Specifically the following PEPs define the characteristics of this Pegasus release.

  1. PEP 189 - OpenPegaus 2.4 External Interfaces
  2. PEP 188 - OpenPegaus 2.4 Packaging Definition for Selected Platforms
  3. PEP 185 - Pegasus 2.4 Release Notes (This document)
  4. PEP 181 - OpenPegasus 2.4 SDK Packaging Definition
  5. PEP 175 - Pegasus readme.txt for 2.4 (also in the Pegasus source tree root directory).
  6. PEP 97 - OpenPegasus Release Definition - This PEP is used throughout the development of this version as the control point for functionality that will go into the release and points to all of the PEPs that represent the Pegasus 2.4 functionality changes.

General Documentation

The following documentation is available for the this Pegasus release:

  • Utilities - A combination of help generally available with the -h option for each command and HTML documentation for most of the tools.
  • API and  usage documentation - See the header files and the HTML  API documentation that is on the web site. The best API usage documentation is the existing utilities and test programs and the examples in the API documentation.  In particular the Common/tests unit tests contain extensive examples of the use of the Common APIs.
  • Building and Debugging Providers - Readme.html in the Pegasus Root Directory, API documentation, and documentation from the Pegasus Technical Workshop which is available on the Pegasus web site.
  • Building and Debugging Clients - API documentation and the documentation on the Pegasus Technical Workshop which is available on the Pegasus web site.
  • Compiler operation and commands - compiler help (cimmofl -h)
  • PEPs - The features of Pegasus that have been installed in this and the previous few versions are defined by Pegasus PEPs that are available on the OpenPegasus web site.  While these are the original design documents largely and use in the process of defining and approving the overall characteristics of new functionality, they serve as a guide to the design and implementation of these features.


Copyright (c) 2004 EMC Corporation; Hewlett-Packard Development Company, L.P.; IBM Corp.; The Open Group; VERITAS Software Corporation

Permission is hereby granted, free of charge, to any person obtaining a copy  of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: