Pegasus Enhancement Proposal (PEP)
PEP #: 098
Title: Release Notes Pegasus 2.3
Created: 10 October 2003
Authors: Karl Schopmeyer
|1.0||10 October 2003||Initial Submission|
|1.1||31 October 2003||K. Schopmeyer||Update to integrate comments and complete table of PEPs|
|1.2||19 November 2003||K. Schopmeyer||Update to reflect comments from review Nov 2003. Approved with comments|
Abstract: This document defines the release notes that support release 2.3.0 of the Pegasus platform
The Pegasus 2.3 release is available as a source release in both ZIP and TAR
formats. The release can be downloaded from the OpenPegaus Web site at
In addition, the release is available through Pegasus CVS as the branch tag RELEASE_2_3_0-branch. This defines the current released version of Pegasus 2.3 . In addition, the following tags exist for the release. RELEASE_2_3_0-root which defines the initial release point of Pegasus 2.3 and the point at which it branched from the trunk.. Other tags may exist to mark release candidate snapshots, etc. These will be announced on the web site and the Pegasus mailing list.
The instructions for acquiring the released code are on the WEB site. Installation instructions are part of the readme in the root of the source tree.
The OpenPegasus project is currently not providing binary releases. However, binary releases may be available of selected ports and are documented on the OpenPegasus web site.
There may be point releases to the Pegasus 2.3 release and these will be announced on the Pegasus web site.
The overall level of functionality in the Pegasus environment effective with this release is as follows:
CIM Operations over HTTP
- Class Operations (getClass, deleteClass, modifyClass, enumerateClass, enuerateClassNames) - Operational
- Qualifier Operations - Operational
- Instance Operations (getInstance, deleteInstance, modifyInstance, enumerateInstance, enumerateInstanceNames, getProperty, setProperty) - Operational
- Association Operations (references, referencenames, associators, associatornames - Operational
- Methods- Operational
- Query operation (Not Operational)
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. The Pegasus sever can be used as an Indication client. The Client indication API support is complete but the interfaces are marked experimental for version 2.3 because this is the first version of Pegasus in which these APIs were available.
The query language today is based on WQL and is implemented and used for filters. However, the executeQuery operation has not been implemented pending the availability of a standard DMTF Query language.
XML based file/directory Class repository.
XML based file/directory Instance repository. The instance repository is used as the default repository unless a flag is set disabling this repository for client operations.
- Basic Security (Note that Digest based security is not implemented)
- 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.
Platform Management Functions
- Configuration through the defined configuration parameters.
- Daemon operation on all supported platforms
- User management utilities
- Provider management. The CIM Server provides dynamic registration of providers and automatic load and unload functionality.
SLP support is enabled in the platform but is conditionally compiled with the default to not compile it today pending further testing.
There are a number of standard providers available in Pegasus release. This includes providers in the following categories:
- __Namespace provider - Serves the __Namespace class to allow manipulation of namespaces.
- Subscription Classes Providers - These provide subscription, filter, and indication handler processing.
- Provider registration Providers - This provide registration of providers using the PG_Provider classes.
- ConfigProvider - Manages Pegasus configuraton information.
- UserAuthProvider - Manages password, etc.
- ShutdownProvider - Provides support for Pegasus shutdown.
- Interop Provider - Supports many of the DMTF Interop Schema Classes including CIM_Namespace, CIM_ObjectManager, etc. (Note that this provider is part of the SLP work package so is not compiled as part of the default compile)
Generic OperatingSystem provider. See the directory src/Providers/generic.
See the directories src/Providers/TestProviders and src/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
CIMOM Statistics Providers
IBMStatisticalData - This is an early version of the work that became CIM_StatisticalData. It is similar to CIM_StatisticalData and provides the same data but the structure of the Classes is slightly different.
Linux Specific Providers
There are a number of providers in this category including DiskDrive, CDROMDrive, Interrupt, IOPOrt, IPROute, NetworkAdapter, Operating System, PCI Controller, Processor, ProviderData, ProviderSupport, SoftwareElement. For more information about these providers see the documentation in the directory src/Providers/linux
The default CIM_Schema loaded with the Pegasus 2.2 release is the DMTF CIM 2.7 Final release. In addition, Pegasus includes a number of local classes defined for Pegasus. These are visible in the Schemas directory.
Pegasus MOF Compiler
Pegasus implements a MOF compiler that can operate either at the client interface (cimmof) or directly interfacing with a CIM repository (cimmofl).
The direct interface compiler is used primarily to provide an initial class/instance repository. Note that use of cimmofl to manipulate instances in the repository bypasses any provider that is registered to serve the instances and simply installs the instances in the instance repository; this may result in corruption if providers are using the repository. Use of cimmofl to manipulate instances served by a registered providers is therefore discouraged. Use of cimmof rather that cimmofl is encouraged.
Pegasus CIM Server Adminstration
Information client tools
These tools provide information on the objects managed by the server.
Test support Tools
Pegasus Interface APIs
Details of the Pegasus public interfaces for release 2.3 is listed in PEP 96 available from the web site(www.openpegasus.org). This 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 release 2.3 (clients and providers compiled to the Pegasus 2.1 or 2.2 interfaces should be compatible with Pegasus 2.3 without compilation) but there have been extensions and new interfaces added for release 2.3 The public interfaces includes the following major functions
The functions are documented in their respective header files and HTML documentation based on the information in the header files extracted with the doc++ tool will be available on the OpenPegasus web site.
A version of of the Pegasus platform that specifically communicates with Microsoft WMI implementations and interfaces with WMI object is provided as a separately compilable code set in the CVS.
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 current release are:
|Platform and OS||Compilers|
|AIX 5.2||VisualAge C++ Version 18.104.22.168|
|HP-UX||HP aC++ B3910B|
|Linux IA-32||gcc (versions 2.9x and 3.xx)|
|Windows 2000||Microsoft Visual C++ Ver 6 and Microsoft .Net compiler Version V7 and 7.1|
|Windows XP||Microsoft Visual C++ Ver. 6 and Microsoft .Net compiler Version V7 and 7.1|
Further information regarding Pegasus support on IBM platforms can be found at: http://publib.boulder.ibm.com/eserver/v1r1/en_US/info/ciminf o/eicahkickoff.htm. This site is expected to have information available starting in December.
Further information regarding Pegasus support on HP platforms can be found at: http://www.hp.com/large/infrastructure/management/wbem/.
Pegasus tries to conform to the CIM 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 differences. As of Pegasus 2.3, some of the differences include the following:
1. Provider Registration - Pegasus supports registration through a set of Provider registration classes similar to the CIM Classes defined as experimental in the CIM 2.8 preliminary Schema release and does not support the Provider Qualifier. Note that there are differences that must still be worked out between the Pegasus PG provider registration classes and the CIM classes as part of the move to release of the CIM classes.
2. Indications -Pegasus supports process indications but does not include any specific support for lifecycle indications.
3. Interop Schema - Today Pegasus provides alternatives to some of the classes in the Interop Schema including CIM_StatisticalData.
4. execQuery operaiton - Today Pegasus does not support the execQuery pending the availability of a standard for the query language.
5. Pegasus differs from some other implementations in the delivery of instance and class qualifiers on some operations.
6. Pegasus has not implemented the alias functions defined in the CIM specification in the MOF compiler.
The development and release of each version of Pegasus is defined and controlled through Pegasus PEP documents. PEP 57 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 changes implemented for this release were:
Note that there were a number of objectives that were not completely achieved including:
The set of PEPs defined for this release is summarized below along with the final implementation status because not all of the PEPs originally defined for this version were implemented:
|PEP #||PEP Description||Status||Comments|
|56||Unicode Support in Infrastructure||Implemented|
|58||Unicode Support in Infrastructure||Implemented|
|68||Provider Manager Interface - Multiple provider support||Implemented - but requires compile flag to integrate.|
|84||Provider Manager Interface, Pluggable provider manager configuration||Implemented - see above.|
|86||Provider Manager Interface, pluggable provider manager.||Implemented - see above.|
|60||Secure connections between CIM Listener and CIM server||Implemented|
|62||SNMP Mapper Indication Handler||Implemented|
|67||Indication Consumer registration|
|76||CIM Listener Client API, Libraries, SDK||Implemented - Experimental|
|75||Indication Subscription Performance Enhancements||Implemented|
|30||SLP support||Implemented - Optional compile|
|52||Interop Schema provider support||Implemented - Optional compile|
|80||Change to use CIM_Statistics rather than IBM Statistics class for Interop statistics||Delayed for future work|
|64||Java implementation of CIM Client and Listener Interface||Included in Pegasus based SNIA OpenCimom Java Classes.|
|65||Benchmark test utility||Implemented|
|74||SSL certificate verification callback enhancement||Implemented|
|78||WMI mapper changes on authentication process||Implemented|
|73||Support CIM Schema 2.8 preliminary||CIM 2.7 is the default tested schema but the code was added to support 2.8 preliminary specifically becasue of requirements from SNIA.|
|79||WMI Mapper - local connection enhancements|
|77||Default instance provider||Implemented|
|88||Monitor Optimization||Implemented but with compile flag. Default is old monitor|
|85||Configuration Property Table Enhancement||Implemented|
|90||Add IO trace diagnostics to CIMClient||Implemented|
|54||Statistical data change to use CIM classes||Deferred|
|81/82||Enhance operations performance||Deferred|
|71||Security Plugin Enablement||deferred|
|69||Kerberos Based Security||TBD|
|70||Kerberos Based Security proposal to DMTF||Deferred because of problems with Kerberos Specifications|
|72||Out of Process Providers||Deferred|
|30||SLP support||Implemente but not compiled by default|
|52||Interop Classes Support||Implemented but not compiled by default|
|89||SLP Client Integration||Implemented but not compiled by default|
The current bug list for Pegasus is openly available on the OpenPegasus web site. As of the release of 2.3.0, the open bug list was as follows:
138 bugs found.
|3||Weak association qualifier check missed|
|42||Windows OS provider doesn't fill in CSName and Name keys|
|68||cimom allows providers to deliver invalid properties|
|70||Client API should support socks|
|71||Statistics MOF included in ManagedSystem Schema|
|85||Need a way to manage currently executing requests|
|89||HTTPConnection must return 413 response on oversized requ...|
|90||Deep Inheritance and Local Only Flags Do Not Work|
|120||CIMClassRep::addProperty() sets ClassOrigin incorrectly.|
|126||CIMDateTime::getDifference returns incorrect result for s...|
|133||Pegasus compiler converts Schema Qualifer decl to CLASS|
|141||ObjectPath MalformedObjectPath exceptions leak back throu...|
|144||cimserver writes on console even when started in daemon mode|
|146||There is no way to do pre-build or post-build stuff with ...|
|148||CGIClient.cpp changes '-' to '.'|
|149||src/Clients/ToMofClient/ToMofClient.cpp warning during build|
|150||warnings compiling src/Server/cimserver.cpp|
|168||Incomplete CIMObjectPath wen calling providers|
|202||Porting changes for HP-UX|
|203||Porting changes for IA64 Linux|
|206||Client requests time out with PERFINST enabled|
|210||MOF output for Reference values generates XML not mof|
|211||CIMObjectPath Legal Host name incomplete|
|212||Cimserver uses lots of cpu "idle time" when the cimserver...|
|213||Insufficient Code Coverage|
|217||Error in CIMClass Create on some Linux Platforms|
|237||Incorrect use of statistic macros|
|243||Compiler misses MOF syntax error in value|
|246||Security issues with CIMOMHandle|
|249||cimmof returns code of 0 on error|
|267||ComputerSystem provider does not set path in enumerateIns...|
|279||CIMDateTime::getDifference returns incorrect result on so...|
|281||setQualifier throws CIM_ERR_ALREADY_EXISTS|
|296||pegasus/src/Pegasus/Server/tests accidently disabled Feb '02|
|298||dispatcher lookup optimization|
|306||cimconfig -s property=value -p allows you to set non-vali...|
|323||TestClient Failure - Associations|
|329||tomof client fails on call - cannot find repository|
|338||Condition doesn't CloseHandle() on _condition|
|347||typos throughout the code|
|348||Association test SampleFamilyProvider fails intermittently|
|353||cimserver silently creates new repositories|
|354||Test EnumerateClasses fails when classes are in a differe...|
|355||PropertyList parameter specified in the EnumerateInstance...|
|357||pegasus/mak/library-windows.mak should be using variables|
|359||cimserver does not report cimserver_planned.conf errors|
|360||Invalid XML return on what appears to be keepalive.|
|364||No method to recreate SSL certs, except reading the readm...|
|365||MOF Compiler sets ToInstance Flavor when ToSubclass is sp...|
|367||EnumerateInstance and EnumerateInstanceNames methods not ...|
|371||mu should build to $PEGASUS_HOME/bin|
|372||Posix signals can interrupt blocking calls and cause them...|
|373||"Pegasus CIM Server Demonstration" cannot enumerate clas...|
|376||SetProperty returns "CIM_ERR_NOT_SUPPORTED"|
|377||Multireq not supported|
|378||GetClass returns CIM_ERR_NOT_SUPPORTED with invalid args|
|379||CreateInstances errors with property types real32 and real64|
|384||use of Tracer in ThreadPool test causes coredump when tra...|
|390||Compiler Errors in serveral Linux Providers|
|393||Definition of cimconfig parameters|
|398||Infinite re-acking of CIM_STOPPED message during shutdown.|
|410||Placement of the PEGASUS_HAS_PERFINST compile param|
|416||TestMakefile for Linux uses 'kill -9' to terminate cimser...|
|424||XMLParser removes whitespace|
|426||There is no inserter operation for Uint64 on the windows ...|
|427||Loading testrepository issues message stating loading CIM...|
|428||xml parsing problem regarding REFERENCECLASS|
|439||Corrupt newlines CVS repository|
|441||CIMOM Authentication on Windows XP|
|456||Adding TEST CASES to the String test bucket.|
|463||SampleFamilyProvider Shows Warnings in TestClient|
|473||System.cpp getSystemCreationClassName() returns empty|
|477||Coredump in Tracer|
|482||Gives internal server error( Error Code:500) while creati...|
|490||ProviderManager looks up instance provider for InvokeMethod|
|493||Dispatcher's result aggregation selects arbitrary exception|
|512||File open error lost in Repository|
|518||Remove DNSAdminDomain and NTPAdminDomain|
|533||mu does not build on Linux|
|535||cimserver hangs when subjected to bursts of individual re...|
|537||XmlReader accepts CLASSORIGIN=""|
|539||Pegasus DLLs on windows do not contain version numbers|
|544||MOF compiler does not convert escape characters|
|548||Redundant error message from WQLParser|
|556||wbem exec tests error|
|558||cimserver failure when running multiple client tests|
|562||tests/config.mak always outputs test passed even if failed|
|577||ComputerSystem_Linux Provider Generates File Error|
|581||Microsoft Visual C++ .NET compile issues|
|590||Unreachable error conditions in CIMOperationRequestDecoder|
|596||LocalizedProvider does not set path in enumerateInstances|
|597||Sample Association Provider Cannot Register|
|600||MOF Output generates error for Override flavor on qualifiers|
|604||FamilyProvider Needed in repositoryServer Make|
|606||Quesiton: use of cimobjectPath instead of CIMInstanceName...|
|607||Provider Interface Documentation (instance Provider)|
|611||Malformed Object path exception should have more information|
|623||IndicationService should be stopped before other services...|
|624||IndicationHandlerService sends incorrect response type|
|625||IndicationService should call _terminate before handle_Ci...|
|626||IndicationService needs to handle provider enable notific...|
|627||IndicationService should not accept value of Other for On...|
|628||IndicationService should honor FailureTriggerTimeInterval|
|629||IndicationService should send DisableIndications request ...|
|631||IndicationService should handle DateTimeOutOfRangeExcepti...|
|632||Eliminate all repository access by Indication Service on...|
|639||Spelling Mistake in cimserver.passwd|
|645||For Linux Release-only Use rpath-link|
|647||Timing Window in Trace Code causes CIM Server fault|
|651||Remove unneccessary line from Linux IA64 from Platform_LI...|
|653||Unreachable condition in HTTPConnection2::_handleReadEvent|
|666||Instance not found when using CIMOMHandle::getInstance()|
|667||Inappropriate string match in getAssociatorNames()|
|671||WQLSelectStatement is only valid on first call to evaluat...|
|680||For M-POST request, CIMServer sends Incorrect Extention ...|
|682||enableIndications called multiple times|
|745||Fixes needed for OS/400 Authentication (V2.3)|
|753||Remove deprecated interfaces|
|755||CIMObjectPath to handle "http://"|
|764||Solaris build using gcc broken|
|770||getInstance() calls using CIMClient class result in 'inva...|
|777||Sample/familyprovider did not honor propertylist.|
|796||cimmof error when tring to dynicall add a mof to the repo...|
|811||Allow any form for destination for an indication|
|812||ProviderManager2 only routes to Default PM|
|828||slpclient has unresolved externals|
|829||Logger traces of xml written to standard log. Should prob...|
|846||InstanceDecl test should test removeQualifier|
|847||Request being sent to wrong provider - Client timeout|
|929||openpegasus.org-wbem-2.2.spec fails due to SLP absence|
|933||Indication subscription memory leaks|
|934||Java Client, numeric keybindings changed to strings|
|942||Indication provider does not be disabled properly|
|943||CIMON not verifying that the instance exist|
|946||Double error text from cim opperation errors|
The following documentation is available for the this Pegasus release:
Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.; IBM Corp.; The Open Group
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.