Title: Overview of Pegasus An Open-Source WBEM implementation
1Overview ofPegasusAn Open-SourceWBEM
implementation
- 19 September 2001
- Karl Schopmeyer (k.schopmeyer_at_opengroup.org)
www.opengroup.org/pegasus
Version 1.0
2Agenda
- Overview -What (and why)is Pegasus?
- What is CIM / WBEM
- The Pegasus Environment
- The Pegasus Software Architecture
- Pegasus Status Today
- The Pegasus Project
- Future Directions
31. Overview
4What is Pegasus?
- Pegasus is an open-source reference
implementation of the DMTF WBEM specifications - Pegasus is a work project of the TOG Enterprise
Management Forum - Pegasus is a platform for building application
management - Pegasus is a function-rich, production-quality
open-source implementation designed to be used in
high volume server implementations.
Pegasus is real today and will be in systems next
year
5Why Produce Pegasus?
- Demonstrate manageability concepts.
- Provide additional standards for WBEM
- Provide a working implementation of WBEM
technologies - Provide an effective modular implementation
- Support other Open Group manageability standards
- Base Platform for Open Group Application
management Projects - Help make WBEM real
- Initiated in 2000 by the Open Group in
collaboration with - BMC Software
- IBM
- Tivoli Systems
6Key Pegasus Objectives
MIT License
Open Source
Standards Based
DMTF WBEM
Pegasus
Continuity
Portable
C and portable Libraries
Continuing Project
Modular And Extensible
Efficient And Lightweight
Production Quality
C Code Base
7Pegasus Working Group Philosophy
- Manageability not management
- The working groups objective is not to manage
systems but to make them manageable by promoting
a standard instrumentation environment - The actual management of systems is left to
systems management vendors - No standards without implementation
- The process of implementation provides a rigorous
process for testing the validity of standards - Therefore all standards must be validated by
implementation
8Pegasus is Open Source
- Code and documentation freely available
- Open Group and Source Forge
- MIT source license
- Open to contributions
- No commitment to Open Group to use code
9Pegasus is Portable
- Designed for multi-platform, multi-OS,
multi-compiler implementation - Platforms ported today
- UNIX (AIX, HPUX, Compaq Tru64, Solaris)
- Linux
- Windows Platforms (NT, 2000, 9x)
- Compaq Himalaya (Tandem)
10Efficient and Lightweight
- Core written in C
- Designed for execution efficiency
- Designed to be production-quality solution
11Pegasus is Standards Based
- Based on DMTF CIM and CIM-XML specifications
- Open Group is active partner in DMTF
- Growth through participation in specification
growth - Commitment to continue DMTF compliance
12Pegasus is Modular and Extensible
- Minimize core object broker.
- Maximize extensibility through plug-in components
- Component types
- Providers
- Provider interfaces
- Clients
- Repositories (additional repository handlers)
- Manageability service extensions
- Protocol Adapters
- Modules (extend and modify core functions)
Modularity is key to doing parallel development
and allowto extensibility
13Project for Continued Development
- WBEM will continue to develop functionality and
standards - Open Group will develop application management
partly around Pegasus - Pegasus Development will continue beyond current
versions - Integrate contributions
- Add basic new functionality
- Etc.
142. WBEM and CIM Standards
15The Management Standards Groups
- DMTF
- DMI
- CIM / WBEM
- The Open Group
- Unix Management Standards
- Application Management Standards
- CIM WBEM
- IETF
- SNMP
- TMF
- CMIP
- ????
SNMP
CMIP
DMI
WBEM
16WBEM Architectures
WBEM
17 What it is CIM?
- Implementation neutral schema for describing
overall management information - Facilitates the common understanding of
management data across different management
systems - Facilitates the integration of management
information from different sources - A data model not an implementation
- MOF syntax supports sharing information across
management systems - Models for both instrumentation and management
18DMTF WBEM Components
CIM Specification V2
Interoperability Specifications
- CIM Operations over HTTP
- CIM XML
19Web-based Enterprise Management (WBEM)
- Information Model
- CIM Schema (Core, System,)
- Communication Model
- CIM Operations over HTTP
- Transport Encoding
- Cim-xml CIM/XML mapping
- Event Model
- CIM indications (new in 2.5)
- CIM Object Manager (CIMOM)
- Operation Routing
- Result Aggregation
- Repository
- Class and Instance Persistence
- Resource Providers
- Instrumentation subagents
Management Applications
CIM Client
cim-xml Transport
CIM Object Manager
Schema
CIM Server
Resource Providers
20Common Information Model
- Defines the Schema used to represent real-world
objects being managed - Object oriented paradigm
- CIM Specification
- Meta model, high level concepts, and definition
language (MOF) - CIM Schema
- Core and Common Model
21WBEM Architecture Components
CIM Clients
CIM Listeners
CIM Operation Requests
CIM Operation Responses
CIM Indications
CIM Server
MOF
Providers
22Interoperability Characteristics
- XML encoding
- Definition for each operation
- HTTP Transport
- HTTP 1.0 and 1.1
- Common Operations Semantics
- Data
- Meta data
- Queries?
- Methods
CIM Client
CIM Server
Managed Resources
Managed Resources
Managed Resources
Managed Resources
Managed Resources
Managed Resources
23Managed Object Format (MOF)
24CIM Operations
- Intrinsic Operations
- Create, Modify, Delete
- Qualifiers
- Classes
- Instances
- Properties
- Invoke Query
- Extrinsic Operations
- Execute Methods
CIM Clients
CIM Operation Requests
CIM Operation Responses
CIM Server
ltinstancegt GetInstance ( IN
ltinstanceNamegt InstanceName,
IN,OPTIONAL boolean LocalOnly true,
IN,OPTIONAL boolean IncludeQualifiers false,
IN,OPTIONAL boolean IncludeClassOrigin
false, IN,OPTIONAL,NULL string
PropertyList NULL )
Providers
25CIM Indications
- Indication Types
- Process Indications
- External Events
- Lifecycle indications
- Changes to CIM Objects
CIM Listener
CIM Client
SNMP
4
1
Export Indications
Subscription
Indication Handler
Indication Handler
Indication Subscription Object
CIM Server
CIM Indication Handler Object
CIM Filter Object
Filter
Produce Indications Based on Filter
2
Indication Provider
Indication Provider
3
26Query Language - WQL
- SQL based Query Language
- Used in
- CIM Indication Filters
- CIM Queries (CIM Operation)
- 4 levels of Language
- 1 Simple queries from single tables
- 2 Adds DELETE INSERT UPDATE
- 3 Add complex expressions and specific data
constructs - 4 Add Joins, etc.
Subset of SQL supports queries in the form
SELECT ltrow setgt FROM lttable listgt
WHERE ltselection expressiongt
272. The Pegasus Environment
28Major Components
Client
Many Clients Management Applications
Client
CIM Clients
CIM-XML
Repository
CIM Object Manager
Client
Client
Many Providers per CIMOM
CIM Providers
29Key Interoperability Interfaces
Management System
Enterprise Management Console
- Manageability to Manager
- Multiple management systems
- Common open manageability
CIM Object Manager
- Object Manager / Providers
- Multiple Providers
- Encourage common providers
CIM Providers
- Provider / Resource Interface
- Protect Applications
- Make application management easy
Application
Application
Application
Application
30CIMOM Capabilities
- Respond to Operations defined in CIM Operations
spec. - Create, Modify, Delete operations on
- Class, Instance, Property, Qualifier
- Handle Provider Registration
- Forward Requests to Providers, repositories, etc.
- Read/Write access to Management Information
- Maintain Class/Instance Information
- Traversal of Associations
- Use of WBEM Query Language
- Syntax/Semantic checking (with Qualifiers)
- Available Implementations
- Microsoft (in Windows2000), Sun WBEM SDK, SNIA,
Open Group Pegasus,
31Pathways of Communication
Client
Client
CIM Clients
CIM Repository
CIM Object Manager
Client
Client
CIM Providers
32Component Location
- A component may be located in one of three places
with respect to the CIM Server. - In-process.
- Local out-of-process (on the same machine).
- Remote out-of-process (on another machine).
- For example, a provider may be in-process, local,
or remote.
33Component Location in Pegasus
Today
- Components could potentially communicate the
following mechanisms - CIM/HTTP (remote).
- Proprietary TCP-based protocol (remote).
- Direct call (in process).
- Shared memory (local).
- Named pipes (local).
Future
34The Pegasus CIMOM
Client
Client
CIM Clients
Repository
CIM Object Manager (CIMOM)
Client
Client
CIM Providers
35Operations Routing
- Class Operations
- Routed to the Class Repository
- Instance Operations
- To Provider if Provider Qualifier exists
- To Instance repository if no Provider
- Instance routing at Class Level Today
- Issues Routing at instance level
36Operation Routing
Client
- Class Operations
- Routed to the Repository
Client
CIM Clients
Repository
CIM Object Manager
Client
Client
CIM Providers
37Operation Routing
Client
- Instance Operations Routing
- Routing By Class
- To Provider if Qualifier Defined
- Default is to Instnace Repository
Client
CIM Clients
Repository
CIM Object Manager
- Future
- Routing by Instance
- Definition by provider registration
Client
Client
CIM Providers
38Indication Routing
Client
Client
Client
Client
CIM Listener
CIM Clients
Subscriptons
Handler
Handler
Handler
Repository
CIM Object Manager
Indications
Client
Client
CIM Providers
39Request Lifecycle
Outgoing Response
Incoming Request
1. Receive TCP Message
Channel
Channel
8. Transmit TCP Message
Protocol
7. Form HTTP Response
2. Process HTTP Request
Protocol
Encodings
Encodings
3. Decode XML
6. Encode to XML
Aggregator
Repository
5. Aggregate Results
Dispatcher
4. Dispatch Request
40Pegasus CIMOM Architecture Components
Cim-xml Protocol Adapter
- CIMOM
- Support
- Services
- Start
- Stop
- Log
- Statistics
Decoder/coder
Repository Interface
Indication Handlers
Delegators
Operations Dispatcher
Operations Aggregator
Indication Processor
Provider Manager
. . .
Provider Interface C
Provider Interface C
41Modularity and Extensibility
- Providers
- Grow with DMTF provider concepts
- Provider Interfaces
- Protocol Adapters (connectors)
- Client - xml-cim today (Soap, etc. in future)
- Provider, service, repository, etc.
- Modules
- Modularize core so it can be extended and
modified through attachable modules - Manageability Service Extensions
- Think super providers
42Building A Modular Manageability Environmnent
Core Object Manager
Connector
Connector
. . .
Provider
43Provider Interoperability
- In the classical architecture, interoperability
is only supported between the client and server. - In addition, the Pegasus architecture aims to
support provider/server interoperability. - Goal
- Write a provider once and run it under any CIM
server implementation. - Provider/Server Interoperability
- Participating in efforts to standardize the
Provider/Server protocol. - Proposing provider API standards.
- Writing adapters enabling Pegasus providers to
run under other CIM servers. - Adapters enabling other providers to run under
Pegasus
44Flexible Provider Interfaces
- SUN WBEM Provider Interface
- Java based
- Classes, etc. similar to Pegasus
- C Provider Interface
- Many Providers written in C
- We will support multiple provider interfaces and
language bindings. - Perl, Scripting, etc.
CIM Object Manager
Interface Adapter
Interface Adapter
Interface Adapter
Providers
Providers
Providers
Providers
Providers
Providers
Providers
45In-Process and Out-of-process Providers
- Today Pegasus based on shared Library Providers
- Extend to
- Internal Providers
- IPC based Providers
- Providers in Remotes systems
- Objectives
- Write Provider once and compile/link for
different environments - Technique
- Use connectors as basis for provider/CIMOM
communication - Issues
- Security, discovery
46Pegasus Modules
- The core server functions are organized into
loadable modules. - Standard APIs are defined for each module.
- Alternative implementations can be provided later
without recompiling the Pegasus server.
47Manageability Service Extensions
- Super Providers
- Access to the Core Broker
- Examples
- Indication Management service.
- Query engine service.
- Class repository service.
- Instance repository service.
48Connectors (Protocol Adapters)
- Functions
- Adapt to different protocols
- Characteristics
- Protocol
- Encoding
- Security
- Discovery
- Examples
- Xml-CIM
- Local Protocols
- Soap
- WMI
- Corba environment interface
Xml-cim Client
Soap Client
Xml-cim Connector
Soap Connector
External Corba Environment
Pegasus Core
Corba Connector
Pegasus Provider
Connector
Remote Provider
49Pegasus Manageability Environment
Object Browser Editor
Client SDK
Service extensions
Consumers Gateways Apps
XML/CIM Connector
Security
- CIM Object Broker Broker)
- Provider Registration
- Service Registration
- Request Routing
-
-
Broker
Queuing
Class Repository
Security
Events
MOF Compiler
Instance Repository
Provider SDK
ARM Provider
. . .
Provider SDK
Providers
Remote Provider
Interface For Spec
Resource
50Programming Language Support
- The Pegasus core is implemented in C and hence
client and provider interface are provided for
C. - An integrated JVM is planned to allow providers
to be developed in Java. - Of course it is possible to use existing Java
clients to interact with the Pegasus CIMOM.
51CIM Objects in C
- CIMClass
- CIMInstance
- CIMProperty
- CIMMethod
- CIMParameter
- CIMQualifierDecl
- CIMQualifier
52Class Declaration Example
- Consider the following MOF class declaration
- class Alarm
-
- key
- uint64 id
- string message none
-
- This class is defined in C as follows
- CIMClass alarmClass(Alarm)
- CIMProperty id(id, Uint32(0))
- id.addQualifier(CIMQualifier(key, true))
- CIMProperty message(message, none)
- alarmClass.addProperty(id)
- alarmClass.addProperty(message)
- Or more succinctly like this
- CIMClass alarmClass(Alarm)
- alarmClass
- .addProperty(CIMProperty(id, Uint32(0))
- .addQualifier(CIMQualifier(key, true)))
53Property Iteration Example
- The properties of a class may be iterated like
this - CIMClass c
-
- for (Uint32 i 0, n c.getPropertyCount()
- i lt n i)
-
- CIMProperty p c.getProperty(i)
-
54The Client Interface
- Interfaces set by WBEM Specs.
- Local and Remote
- Future Add other protocols
Client
Client
CIM Clients
Repository
CIM Server
- A C interface for interacting with the Pegasus
Server (or any CIM Server). - Uses CIM/HTTP (cim-xml) to communicate.
- Provides a method for each CIM operation defined
in the CIM Operations over DMTF HTTP, V1.0
specification.
Client
Client
CIM Providers
55The CIM Operations
- GetClass
- GetInstance
- DeleteClass
- DeleteInstance
- CreateClass
- CreateInstance
- ModifyClass
- ModifyInstance
- EnumerateClasses
- EnumerateClassNames
- EnumerateInstances
- EnumerateInstanceNames
- ExecQuery
- Associators
- AssociatorNames
- References
- ReferenceNames
- GetProperty
- SetProperty
- GetQualifier
- SetQualifier
- InvokeMethod
56CIM Operation Example
ltinstancegt GetInstance ( IN
ltinstanceNamegt InstanceName,
IN,OPTIONAL boolean LocalOnly true,
IN,OPTIONAL boolean IncludeQualifiers false,
IN,OPTIONAL boolean IncludeClassOrigin
false, IN,OPTIONAL,NULL string
PropertyList NULL )
CIM Operations Specification
virtual CIMInstance getInstance( const
String nameSpace, const CIMReference
instanceName, Boolean localOnly true,
Boolean includeQualifiers false, Boolean
includeClassOrigin false, const
ArrayltStringgt propertyList NULL_PROPERTY_L
IST)
Pegasus Class Method
57The Provider Interface
Client
- Many Providers, few CIMOMs
- Providers dynamically added, upgraded, deleted in
the environment
Client
CIM Clients
Repository
CIM Server
- Defined by the C CIMProvider class.
- Method for each CIM operation in the CIM
Operations over HTTP, V1.0 specification. - Methods for Provider control (start, stop,
status, etc.) - CIMProvider is a base provider interface (more
refined provider interfaces are being developed).
Client
Client
CIM Providers
58CIMProvider Methods
- getClass()
- getInstance()
- deleteClass()
- deleteInstance()
- createClass()
- createInstance()
- modifyClass()
- modifyInstance()
- enumerateClasses()
- enumerateClassNames()
- enumerateInstances()
- enumerateInstanceNames()
- execQuery()
- Associators()
- associatorNames()
- references()
- referenceNames()
- getProperty()
- setProperty()
- getQualifier()
- setQualifier()
- invokeMethod()
59Example of modifyInstance() Method
- The provider developer derives from CIMProvider
and overrides the modifyInstance() method. - class MyProvider public CIMProvider
-
-
-
- virtual void MyProvidermodifyInstance(
- const String nameSpace,
- CIMInstance modifiedInstance)
-
- // Modify the instance here!
-
-
60Provider Registration and Loading
- Providers are configured as dynamic libraries
with an entry point function for creating the
provider instance. - The provider() qualifier is placed on the
corresponding class in the repository (this
qualifier specifies the library name containing
the provider implementation) . - The provider is loaded on demand (when instances
of that class are requested).
61Refined Provider Interfaces
- CIM operations assigned to different types of
providers - Instance provider
- Method provider
- Query provider
- Event provider
- Association provider
- Provider Interface Managers map the base provider
interface onto one or more other provider
interfaces. This scheme may be used to - Refine the base provider interface into several
provider interfaces (as mentioned above). - Map the provider interface onto other language
provider interfaces (e.g., Java, Perl, Tcl).
62Provider Proposals
- Interoperability with SUN Wbem providers proposal
- We are extending other interoperability ideas
Pegasus CIMOM
SUN WBEM CIMOM
Microsoft CIMOM
Pegasus Providers
SUN WBEM Providers
Microsoft WMI Providers
634. The Pegasus Implementation Today And Tomorrow
64Status Today
- Version 1 complete (Beta Level Code)
- Includes
- CIMOM including
- HTTP Server and CIM-xml Protocol
- Provider interfaces and dispatch
- Repository with Instances, Classes, Associations
- C CIM Object Model representation
- Admin and support functions
- MOF Compiler
- Client Interface and test clients
- Test providers and beginning of some real
providers - Integrated unit and client server tests
(regression) - Version 2 in process
- Add CIM Indications
- Threading, message base, etc.
- Security
- Production Functions
65The Components Today
Browsing Client
Test Clients
Compiler
Instance Repository
Pegasus CIM Object Manager
Class Repository
C Interface Adapter
C Interface Adapter
C Providers
66Planned Extensions
- CIMOM Functions
- Security
- Indications
- Threading
- Async CIM Operations APIs
- More Modularity
- Enhance Service Configuration
- Expanding Provider Characteristics
- Out-of-Process Providers
- WBEM Functions
- Discovery
- CIMOM Object Manager Characteristics
- Provider Registration and Operations
- Clients
- Object Browser
- Test Clients
- Protocol Adapters
- Add protocol Adapters
- Providers
- Test
- Sample Implementations
- Java Module Interface
- Platforms
- Easier portability
- More platforms
67Phase 2 Priority tasks
- Threaded Model
- Indications Support
- CIM Object Manager Capabilities Reporting
- Discovery
- Additional Modularization
- Security
- Message based model
68Summary - Key Characteristics
- Open source
- Available Today
- Portable
- Designed to build and run on wide variety of
platforms - C core
- C CIM Objects
- C Operation/Provider/Service/Repository
interfaces - Modular and extensible
- Modular components to extend the core
- Manageability service extensions to extend
functionality - Light weight
695. The Pegasus Project
70Overview of the Project
- Active project of Enterprise Management Forum of
the Open Group - Producing
- Pegasus open-source Implementation
- Core, clients, providers, repositories
- SDKs (Provider and Client)
- Documentation for use and development
- Specifications for major Interfaces
- Continue support and growth of Pegasus
- Portability
- New functions
- New Standards requirements
- New Providers
- Tools
Pegasus Is a continuing project, not a one-shot
development
71Pegasus Status Today
- Phase 1 of 3 Phases
- Version 1.0 Available
- Source Code available today
- Preliminary documentation available
- Multiple users evaluating today
- Tested on the platforms defined
72Pegasus Project Phases
- Phase 1 (July 2001)
- Goals
- Model Validation
- Client and Provider development
- Basic Environment
- Core model
- Cim-xml Operations
- Class and instance repositories
- Providers
- Phase 2 (September)
- Goals
- Production Environment
- Additions
- Threading
- Configuration
- Security
- Service Extensions
- Indications
- Discovery
- Phase 3
- Remote Providers
- Other extensions including other Language
Interfaces (ex. Java connector)
73Participants
- BMC Software
- Compaq Computer
- Focal Point
- Hermes Softlab
- Hewlett Packard
- IBM
- SIAC
- The Open Group
- Research Institute
- Management Forum
- Tivoli
- Major Contributors
- BMC
- Compaq
- Hewlett Packard
- IBM
74Working Together
- Open Source but coordinated
- Executive Committee directs strategy
- Single Architect
- Work from Proposals
- Agree to objectives before doing the work
- Regular, Stable Releases
- Developers style guides
- Project scheduling and planning
75Immediate Activities
- CIMOM
- Security
- Indications
- Threading
- Providers
- Finalize interfaces
- Create Provider SDK
- Remote providers
- Growth of functionality with DMTF
- Discovery
- Provider standardization (registration,
interfaces) - Next generation interoperability
Pegasus will go where the contributors want it to
go
76Pegasus and Other Manageability Projects
- AIC Application and Control
- AIC as a Pegasus Provider
- ARM Applications Response Measurement
- ARM and DMTF DAP Information as Pegasus Provider
- Other possible Providers
- JMX (Java)
- SNMP (mapping already defined)
- DMI (mapping already defined)
77Open Source and WBEM
- Implementations
- Pegasus (The Open Group)
- SNIA (Storage Network Industry Assoc.)
- Caldera (Linux)
- Sun WBEM Services
- NOTE SNIA implementation to move to the Open
Group in October 2001 - Working towards Commonality through a new
Consortium WBEMSource Consortium
78WBEMSource Consortium
Create an environment of open-source WBEM
implementations
Create a library of providers and tools
- Create common interfaces and APIs
WBEMsource
Hosted by The Open Group
Create commonality between implementations and
integrate different implementations.
Create an environment of conformance
Members Today Sun, Compaq,IBM, Tivoli, Open
Group, SNIA, Caldera, Novell, Nokia, Intel
796. Future Directions
80Future Work
- Continue Pegasus Development
- Integrate Pegasus with Application Management
standards - Merge the environments of the SNIA and Pegasus
CIMOMs - Standardization and growth of Providers
- Integrated Pegasus with user needs like QOS
- Grow standards
- DMTF standards for WBEM
- Open Group standards for WBEM APIs
- Application and Service Management
81Where will you see Pegasus
- The following is a guess
- Unix Oss
- Linux
- Several other OSs
- HOWEVER
- Pegasus is not done today
- WBEM is not done today
- It needs more support
- It needs more customer interest in WBEM
- It needs more interest and support by ISVs
82CIMOMs - Basic Concepts
- Tool to create Management Interoperability
- Infrastructure for manageability
- Manageability interoperability
- Xml-cim today, ??? Tomorrow
- Instrumentation Interoperability
- Many providers, few CIMOMs
- Lots of applications limited numbers of
providers
83However
- We do not make money off of infrastructure
- If we dont have common interfaces we will not
have interoperability. - WBEM will be useful only when it becomes
ubiquitous - CIM is not Easy. Creating complete and Correct
CIM environments is not easy - There is a lot of work to do with a common
environment and much more with many different
environments
84Creating an interoperable environment
- Creating a common interoperability environment
- Management Manageability xml-cim
- Providers APIs and protocols
- Provider building Common object implementations
- The choice
- Build a common structure with contributions
- Everybody does their own thing. (Many
incompatible and incomplete WBEM Implentations
85The Challenge!!!
- Can we create a common WBEM infrastructure?
- OR
- do we all go our own way?
86Making WBEM Ubiquitous
- We are all involved.
- Suppliers
- Software/application suppliers
- End User organizations
- We will only get what we really demand
87Where to Get More Information
- Pegasus is public and Open Source
- www.opengroup.org/pegasus
- Pegasus WEB Site
- Source Code
- Builds on Linux and Windows
- Snapshots and CVS
- Binary Release
- Documentation
- Pegasus Working Group
This presentation is on the Pegasus Site
Contributors and Users of the Code are Welcome