690 likes | 913 Views
CIMOM Implementation. What 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
E N D
What 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.
Why 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 Pegasus was Initiated in 2000 by the Open Group in collaboration with: • BMC Software • IBM • Tivoli Systems
Key Pegasus Objectives Open Source Standards Based Pegasus Continuity Portable Modular And Extensible Efficient And Lightweight Production Quality
Pegasus Working Group Philosophy • Manageability not management • The Pegasus working group’s 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
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
Portable • Designed for multi-platform, multi-OS, multi-compiler implementation • Platforms ported today • UNIX (AIX, HPUX, Solaris, Tru-Unix) • Linux • Windows Platforms (NT, 2000, 9x) • Compaq Himalaya (Tandem)
Efficient and Lightweight • Core written in C++ • Designed for execution efficiency • Designed to be production-quality solution
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
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
Project 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.
The Open Group • Enterprise Management Forum • Projects include: • Pegasus • Ex-SNIA Java Based open-source Implementation • Application Management APIs • ARM • AIC • Software Licensing Standards • QoS Task Force • User/Supplier interaction forum to advance QoS and Service Level Standards • Working with DMTF, IETF, TMN
Consumers Consumers Services Clients CIM/HTTP Consumers Consumers Providers Pegasus Architecture Standard Interfaces Interoperable* MOF Compiler CIM Server Interoperable* In-Process CIM/HTTP
CIMOM 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, …
Key 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
Consumers Consumers Services Clients CIM/HTTP Consumers Consumers Providers The CIM Operations Standard Interfaces CIM Operations Interoperable* CIM Object Mgr Repository Repository Interoperable* In-Process CIM/HTTP
Operations 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
Consumers Consumers Services Clients CIM/HTTP Consumers Consumers Providers The CIM Indications Standard Interfaces Interoperable* Indication Handlers SNMP, cim-xml, etc. CIM Object Mgr Repository Repository Interoperable* In-Process CIM/HTTP Indicators
Modularity 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
CIM Client Connector XML-CIM CIM Client CIM Client Connector Service Extension Service Extension Module Service Extension Service Extension Service Extension Service Extension Module Service Extension Service Extension Module Module Repository Repository Repository Repository Repository Repository Undefined Provider Resources Resources Resources Building A Modular Manageability Environment Core Object Broker Connector Connector . . . Provider
Consumers Providers Pegasus Manageability Environment Management System Management System CIMOM Application Consumer Services core*** additional Application Consumer Management System Connector Application Consumer XML/CIM Connector Management System Connector Consumers Gateways Apps • CIM Object Broker • Provider Registration • Service Registration • Request Routing • Securiy Broker Class Repository Instance Repository AIC Provider ARM Provider SNMP Provider . . . Providers Interface For Spec Apps OS Etc. Resource
Provider 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
Important Provider Interfaces • SUN WBEM Provider Interface • Java based • Classes, etc. “similar” to Pegasus • C Provider Interface • Sun has a specification here. • We will support multiple provider interfaces and language bindings.
In-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
Super Providers Access to the Core Broker Examples Indication Subscription service. Class repository service. Instance repository service. Manageability Service Extensions
Connectors (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 External Corba Environment Xml-cim Connector Soap Connector Pegasus Core Corba Connector Pegasus Provider Connector Remote Provider
CIM Client Connector Connector Service Extension Service Extension Service Extension Service Extension Repository Repository Provider Pegasus Interfaces • Common Interface base for • Clients, providers, services, connectors • Based on CIM Operations over HTTP • Additional functions for each interface • Interfaces separated from implementation Core Object Broker
Major Components Client Client CIM Clients Repository CIM Server Client Client CIM Providers
Topics • Communication. • Representation of CIM Elements. • The Client Interface. • The CIM Object Manager. • The Provider Interface. • The Repository Interface.
Client Client CIM Clients CIM Repository CIM Server Client Client CIM Providers Pathways of Communication
Component Location • A component may belocated 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.
Possible Communication Mechanisms • Components could potentially communicate with the CIM Server using the following mechanisms: • CIM/HTTP (remote). • Proprietary TCP-based protocol (remote). • Direct call (in process). • Shared memory (local). • Named pipes (local).
Client Communication • Uses CIM/HTTP as sole protocol. • Asynchronous socket I/O. • An efficient XML parser. • Fast enough to eliminate the need for a proprietary protocol.
An Efficient XML Parser • No memory heap usage during parsing. • Modifies message in place to avoid copying. • Non-validating parser (“loose validation”).
HTTP Implementation • Uses asynchronous socket I/O in conjunction with message queues to achieve optimal throughput. • Provides entry points to adding web server capabilities such as putting and getting of documents (to support remote upgrade and deployment later on).
Proposals • Support out-of-process providers (local and remote). • Support out-of-process repositories (local and remote). • Location independent provider development.
Representation of CIM Elements Representing CIM Elements in Pegasus with C++
Uint8 Sint8 Uint16 Sint16 Uint32 Sint32 Uint64 Sint64 Real32 Real64 Boolean Char16 String CIMDateTime CIMReference CIM Data Types in C++
CIM Values in C++ • CIM values (property, parameter, and qualifier values) are represented using the CIMValue class. This class: • Encapsulates a union of all CIM data types. • Has a type member indicating the type currently being represented. • Provides access/modifier methods overloaded for each CIM data type.
CIMClass CIMInstance CIMProperty CIMMethod CIMParameter CIMQualifierDecl CIMQualifier CIM Elements in C++
Class Declaration Example (Part 1) • 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))) .addProperty(CIMProperty(“message”, “none”));
Property Iteration Example: • The properties of a class may be iterated like this: CIMClass c; … for (Uint32 i = 0, n = c.getPropertyCount(); i < n; i++) { CIMProperty p = c.getProperty(i); }
Client Client CIM Clients Repository CIM Server Client Client CIM Providers The Client Interface
The Client Interface • A C++ interface for interacting with the Pegasus Server (or any CIM Server). • Uses CIM/HTTP to communicate. • Provides a method for each CIM operation defined in the “CIM Operations over HTTP, V1.0” specification.
GetClass GetInstance DeleteClass DeleteInstance CreateClass CreateInstance ModifyClass ModifyInstance EnumerateClasses EnumerateClassNames EnumerateInstances EnumerateInstanceNames ExecQuery Associators AssociatorNames References ReferenceNames GetProperty SetProperty GetQualifier SetQualifier InvokeMethod The CIM Operations
CIM Operation Example <instance> GetInstance ( [IN] <instanceName> 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 Array<String>& propertyList = NULL_PROPERTY_LIST); Pegasus Class Method