Pegasus Enhancement Proposal (PEP)

PEP #: 230

Title: Release Notes for OpenPegasus 2.5

Version: 1.8

Created: 1 April 2005

Authors: Warren Grunbok, Karl Schopmeyer

Status: draft

Version History:

1.0 | 1,April 2005 | Warren Grunbok | Initial Submission
1.1 | 26, June 2005 | Warren Grunbok | revisions based on Comments
1.2 | 22, July 2005 | Warren Grunbok | fixed some broken links, added security notes.
1.3 | 23, Aug 2005 | Warren Grunbok | Revisions based on comments
1.4 | 30.Aug 2005 | Warren Grunbok | More revisions based on Aug 26 review in Architecture meeting
1.5 | 12, Sept 2005 | Warren Grunbok | Minor comment updates from 1.4 version (balloted version)
1.6 | 14,Sept 2005 | Warren Grunbok | additional comments from review
1.7 | 20, Sept 2005 | Warren Grunbok | Added Solaris back in, corrected Provider security statement, and clarified Solaris support for 2.5
1.8 | 21, Sept 2005 | Warren Grunbok | Clarified SLP enablement Paragraph and correction of Power on Linux in platform table

Abstract: This document defines the release notes for the 2.5 version of the Pegasus CIM Server.

Contents

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 www.openpegasus.org.
- OpenPegasus 2.5 binaries are available for Red Hat Enterprise Linux 3.0 and 4.2 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.5.0-1.src.rpm.
2. rpm -ih tog-pegasus-2.5.0-1.src.rpm

3. Build the rpms:

Distro | Command
RHEL3 | rpmbuild -bb /usr/src/redhat/SPECS/tog-pegasus- 2.5.0-1.spec
RHEL4 | rpmbuild -bb /usr/src/redhat/SPECS/tog-pegasus- 2.5.0-1.spec
SLES 9 | rpmbuild -bb /usr/src/packages/SPECS/tog-pegasus- 2.5.0-1.spe

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

Distro | Location of RPMs after the build is complete
RHEL3 | /usr/src/redhat/RPMS/[arch]/tog-pegasus- 2.5.0-1.[arch].rpm /usr/src/redhat/RPMS/[arch]/tog-pegasus-sdk- 2.5.0-1.[arch].rpm.
RHEL4 | /usr/src/redhat/RPMS/[arch]/tog-pegasus- 2.5.0-1.[arch].rpm /usr/src/redhat/RPMS/[arch]/tog-pegasus-sdk- 2.5.0-1.[arch].rpm.
SLES9 | /usr/src/packages/RPMS/[arch]/tog-pegasus- 2.5.0-1.[arch].rpm /usr/src/packages/RPMS/[arch]/tog-pegasus-sdk- 2.5.01-.[arch].rpm.

## Functionality of This Release

New for the Pegasus 2.5 release is a Feature Maturity Dashboard. This document shows the Pegasus users and developers the maturity of the various features found in Pegasus using a simple color coded key. That document can be found here: Feature Maturity Link
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 200 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. Additional tests have been added in 2.5 for ExecQuery.

> #### Indications

> - Process indications - 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.
> - Lifecycle indications - With the support for embedded objects, lifecycle indications (ie. those classes of indications derived from CIM_ClassIndication and CIM_InstIndication) can now be created. Pegasus 2.5 provides some enablement for the generation of lifecycle indications. For more details, refer to <src/Unsupported/LifecycleIndicationProvider/readme.LifecycleIndications.htm>.

> #### 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.

> Pegasus 2.5 includes a new standalone listener that is separate from the current standalone CIMListener and the ExportServer listener in the CIM server. The use model that this listener fits is the following:

> - The listener may be packaged as part of the CIMOM or it may be packaged independently as part of another application.
> - Consumers are developed independently of the listener and may be shipped with the listener or added to an installed listener at a future time.

> This new "Dynamic Listener" provides a solution for the above use model. It is essentially a lightweight, pluggable listener that provides a small set of management features. The DynamicListener can be run inside a daemon or a service. It is easily configurable and bypasses traditional registration procedures. See PEP 195 for details.

> #### Object Normalization

> The Object Normalizer is an entity introduced in Pegasus 2.4 that ensures objects delivered from providers are complete and accurate. Two major issues were identified with the initial implementation: 1) the Object Normalizer drops instances it considers bad, and 2) the Object Normalizer code slows performance. These issues are now addressed by moving the Object Normalizer from the Dispatcher to the Response Handler (or equivalent) and optimizing the existing implementation. The move allows errors to be reported to the provider at the point of delivery and ensures that only a single copy is made to preserve the CIMOM/provider boundary.
> Two new configuration properties were added to control object normalization.
> 1. enableNormalization (true|false) - Enables or disables object normalization for provider objects.
> 2. excludeModulesFromNormalization (colon delimited list of provider modules) - List the provider modules by name (as specified in PG_ProviderModule.Name) to exclude from normalization. Keep in mind that all objects managed by all providers will be excluded from normalization if its module name appears in this list.

> #### Embedded Object support

> Pegasus 2.5 now provides embedded object support. The proposed solution is restricted to the following:
> The only representation for embedded objects supported by this PEP is CIM-XML.
> CIMObject is implemented as a new CIMValue type. This type will be used internally to represent embedded objects. When externalized (via CIM-XML) these objects will be converted to strings representing valid INSTANCE or CLASS elements, in accordance with the CIM Infrastructure Specification. Embedded instances will also carry the EmbeddedObject attribute with the value "object", as specified by CR Interop-00217.001.

> #### Query Language

> The query language today is based on WQL and is implemented and used for filters and in 2.4 for execQuery.

> CQL Stage 1 has been included for Pegasus 2.5. PEPs 138, 193, 205 combine to describe the function submitted.

> #### Schema Repository

> By default, Pegasus uses an XML-based schema repository. A binary encoding option is also available.
> To use the binary encoding feature a new configuration properties was added:

> enableBinaryRepository (true|false) - Enables or disables binary repository.

> In addition to the binary repository, the compressed repository functionality has been added as a build time conditional compile. It defaults to not support compression. When enabled the zlib library, used for the compression algorithims, must be installed on the build and target systems. With compression enabled records are always written compressed but both compressed and non-compressed records can be read allowing an easy migration path.
> Note: Note: Users may experience an incompatibility moving a binary repository from Pegasus 2.4 to 2.5. In Pegasus 2.5, measures have been taken to improve the ability to maintain compatibility with subsequent releases. (See bugzilla 3642 for details.) See bugzilla 3642 for details.

> #### Compressed Repository

> A compressed repository feature has been added for pegasus 2.5 that compresses the repository written to disk. This allows the repository to be as much as 50% smaller on disk. It uses an external compression library (zlib) and has been tested with zlib 1.2.2. This feature is documented in PEP 214 and also in a Readme (readme.compressed_repository). It is considered experimental today because it is not in the automated tests. Note that the tests for this feature are in the test suite but not activiated for automatic tests.

> #### Instance Repository

> The Pegasus schema repository may also be configured to hold instance data. Although instances may be place in the repository it was not designed as a high volume data store.

> #### Security Considerations

> OpenPegasus 2.5 (and prior) contains several mechanisms to perform authorization, but none of these authorization checks are performed by default. By registering any provider which fails to do appropriate authorization checks, the consequences may include information leakage, data corruption, or unintended elevation of privilege. Please ensure that one of the following mechanisms is used to ensure appropriate access to your systems and data:
> 1. Only install/register providers which perform authorization appropriate for your environment.
> a. For providers, this may include registering to 'Run-as-requestor' (not available prior to Pegasus 2.5) and/or performing authorization checks within the provider.
> b. For administrators, ensure that the providers you have registered in your environment have performed sufficient authorization checks. Also, monitor announcements of security defects in those providers and follow the recommendations in those announcements as soon as possible.
> c. For distributors of Pegasus or providers, ensure that the providers you are shipping have performed appropriate authorization checks, and relay announcements of discovered security defects to your users.
> 2. Restrict users with access to Pegasus to a specific authorized user group of trusted individuals.
> 3. Namespace authorization is also available.
> For administration issues please refer to the SSL Admin Guide found at: pegasus/doc/PegasusSSLGuidelines.htm

> #### Server Security

> 1. Basic Authentication (Note that Digest based security is not implemented)
> 2. PAM authentication
> 3. 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 openssl.org for OpenSSL release information.
> 4. SSL levels
>    SSLv3 and TLSv1 by default. SSLv2 is disabled by default and only enabled by a compile time option. See PEP 200 for details on configuration.

> #### Client Security

> Certificate management and User-based certificate authentication . A new control provider and CLI for certificate management tasks. It expands upon the existing SSL client verification support by providing a robust solution to managing client certificates and certificate revocation lists via standard CIM operations. It allows certificates to be associated with particular system users for enhanced authorization capabilities.
> CN/ Host name checks are not performed as a function of SSL or client libraries and are the responsibility of the client to implement on their own. See the SSL guide found in the /pegasus/doc directory for more details on client security.
> Note: WBEM clients are responsible for SSL certificate verification using Pegasus and/or SSL libraries as appropriate. Consequences of not doing so include leakage of authentication credentials to unauthorized parties.

> #### Platform Management Functions

> 1. Configuration through the defined configuration parameters (cimconfig) and server command line options. NOTE: When installed as a service on Windows, setting the run-time config option enableAuthentication to true can result in improper operation of the SLP provider and other providers. In order to circumvent this defect, an Administrator should change the user that the service runs under from the Local System user to a local, privileged user (e.g. Administrator). See bugzilla 4142 for details.
> 2. Daemon/service operation of the Pegasus CIM Server on all supported platforms with the exception of HP OpenVMS.
> 3. Operation statistics capture using the CIM_StatisticalData classes in the DMTF Interop model. This function is considered alpha quality and conditionally 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 multiple languages using the open source ICU libraries (http://oss.software.ibm.com/icu/). 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 in or out on a platform basis. PEP 200 describes the use of proper environment variable use to enable or disable this code. PEGASUS_DISABLE_SLP and PEGASUS_ENABLE_SLP are the environment variables that control inclusion of this feature. Once compiled, SLP support is enabled with the slp configuration parameter (slp=true). SLP support includes an SLP service agent in the Pegasus CIM sever 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).
> Note: Pegasus on Windows is built with SLP support on by default and to exclude it from the build, then PEGASUS_DISABLE_SLP must be set.

> #### Provider Managers

> Pegasus is designed to support multiple Provider Managers to allow multiple provider interfaces to the CIMOM. The two default provider managers are the Pegasus C++ Interface and Common Manageability Programming Interface (CMPI) Interface.

> > ##### CMPI C interface Provider Manager

> > Pegasus 2.5 includes a provider manager for the CMPI C interfaces. This C interface is the result of a project by the IBM SBLIM team (see http://sblim.sourceforge.net) and is written to the Common Manageability Programming Interface, which is an OpenGroup standard. The CMPI specification is available at: http://www.opengroup.org/bookstore/catalog/c051.htm. 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. The ability for CMPI providers to do user authorization is now available in Pegasus 2.5.
> > Information on writing providers with the CMPI interface is available in the specification today (see above) and in the following documents (http://sblim.sourceforge.net/whitepaper.html and http://sblim.sourceforge.net/presentations.html) 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.

### Providers

New for 2.5 is the ability of Providers to run out of process at request user- level and running CMPI providers remotely or out of process space.
Administrators should check the providers to ensure that the provider vendor has made use of available authorization capability.

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.

> #### CMPI Remote

> ####

> Pegasus includes an experimental support for running CMPI providers to be run on remote systems without the need for an extra CIMOM. It uses a special proxying provider to relay requests to a remote location using so-called communication layers. The remote side has to start a CMPIRDaemon process, which accepts remote requests and passes them on to CMPI style providers.

> #### 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

> #### Server Statistics

> CIM Server statistics, based on the DMTF 'CIM_StatisticalData' class, are implemented in this release. The statistics gathering is disabled by default. It may be enabled or disabled by performing a ModifyInstance operation on the singleton 'CIM_ObjectManager' instance in the 'PG_InterOp' namespace to set the GatherStatisticalData property to 'true' or 'false'. This property setting is persistent across CIM Server restarts. A statistics display test tool, cimperf, is available from the Pegasus CVS repository.

> ####

> #### 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)

### CIM_Schema

The default CIM_Schema loaded with this release is the DMTF CIM 2.9, Final release. In addition, Pegasus includes a number of local classes defined for Pegasus. These are defined in the pegasus/Schemas directory. 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).

### Client Tools

Lightweight statistics are now implemented for the client. The client statistics surfaces the elapsed time spent in the client, and the elapsed time spent on the network between client and server.

### Pegasus CIM Server Administration

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 .

Server admin note:
The default behavior for determining the CIM server's HTTP and HTTPS ports has changed. In previous releases, any value in /etc/services would override a port explicitly specified in the configuration. The new order for determining the CIM server's HTTP and HTTPS ports is as follows:
1) An explicitly specified port value takes precedence over any other values.
2) If no port is specified, the value in /etc/services is used.
3) If no value is specified in /etc/services, the default WBEM port is used.

### 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)
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 209 available from the web site( www.openpegasus.org). 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

- CIM Listener is a component that can be used to consume indications without a dependency on the Pegasus CIMOM. In environments where no CIMOM is running or a physical separation between the indication listener and the CIMOM is desired, CIM Listener fits the bill. Still, there are several enhancements that are necessary to make CIM Listener scalable. Enhancements were deemed significant enough to propose a new listener that builds off CIMListener's basic capabilities, yet allows the existing CIMListener to remain the same.

- New CIM Listener now provides selective indication delivery.
- New CIM Listener keeps all consumer libraries in memory for the duration of its execution.
- New CIM Listener is now pluggable.
- New CIM Listener now provides reliable indication delivery.

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.

### Indication Handlers

System Log Indication Handler
The SysLog Indication Handler is a new for 2.5 type of Indication Handler which allows CIM Indications to be delivered to the system syslog file. It has following features:

- Each syslog file entry has a tag 'CIM Indication' to distinguish an entry made by Syslog Indication Handler.

- If a subscriber includes PerceivedSeverity property in the SELECT list of the filter condition for the indication, the PerceivedSeverity will be mapped to syslog error severity. Otherwise, syslog error severity 'LOG_INFO' is used.
- See PEP 206 for details.

Email Indicaiton Handler
The Email Indication Handler is a new for 2.5 type of Indication Handler that allows CIM Indications to be delivered to a specified e-mail address. See PEP 207 for details.

## 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.9 Final, Jan. 2005

## Supported Platforms

Each Pegasus release lists as 'active' 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 document issues and/or fix defects 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, correct operation of Pegasus cannot be assured. In all cases, including the active platforms, it is the responsibility of the entity that packages and/or compiles OpenPegasus for shipment or deployment, to read, and actively monitor the Pegasus bugzilla database for a list of relevant defects that affect their platform. The platforms that are considered 'active' for this Pegasus release are:

Platform and OS | Compilers
HP-UX | HP aC++ B3910B
Linux on Power | gcc
zLinux | gcc
Linux Itanium | gcc
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
MacOS version 10.2 and higher | gcc 3.3
HP OpenVMS Alpha | HP C++ V6.5-042 for OpenVMS Alpha and above
HP OpenVMS IA64 | HP C++ V7.1-011 on OpenVMS IA64 and above
Solaris 8 * See below for additional info | GNU 2.95.3

Solaris: Solaris testing began late in the 2.5 release cycle, thus has not been thoroughly tested. In order for Pegasus 2.5 to function properly on that platform, changes documented in OpenPegasus Bugzilla 4179 must be applied.

## Platform patches

The following is a list of platform patches Pegasus requires.
RHAS 2.1 needs the update to fix Red Hat Bugzilla 98815.

Further information regarding Pegasus support on IBM platforms can be found at: http://publib.boulder.ibm.com/infocenter/eserver/v1r1/en_US/index.htm?info/icmain.htm

Further information regarding Pegasus support on HP platforms can be found at: http://www.hp.com/go/wbem.

## 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. IncludeQualifiers option on Instance 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. LocalOnly option on 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.

5. 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.

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

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 180 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. Addition of CQL stage 1 support

2. Refactoring of Object Normalizer function to improve performance.

3. Out of Process Provider user level request.

4. Embedded Object support.

5. Command Line Utilities

6. CIMDateTime enhancements

7. Completion of AutoPtr enhancements.

8. Certificate management and user-based certificate authentication

9. Completion of HTTP chunking. Pegasus now supports HTTP V1.1 transfer encoding otherwise known as chunking . PEP 140 describes the implementation details.

10. Client side performance statistics
11. Syslog Indication handler.
12. Email Indication handler.
13. Port to OpenVMS.

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

## Pegasus defects

The Pegasus bugzilla database documents any defects found in Pegasus and is available through the following link: OpenPegasus bugzilla database.

## 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 209 - OpenPegaus 2.5 External Interfaces (as of this document verion of PEP 230, PEP 209 is listed as draft status)
2. PEP 200 - OpenPegaus 2.5 Build and Configuration Option for Selected Platforms
3. PEP 230 - Pegasus 2.5 Release Notes (This document)
4. PEP 227 - Pegasus 2.5 Runtime Packaging Definition
5. PEP 210 - OpenPegasus 2.5 SDK Packaging Definition
6. PEP 235 - Pegasus readme.txt for 2.5 (also in the Pegasus source tree root directory).
7. PEP 180 - 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.5 functionality changes. (as of this document verion of PEP 230, PEP 180 is listed as draft status)

## 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) 2005 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:
THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.