Presentation is loading. Please wait.

Presentation is loading. Please wait.

Pegasus Concepts and Programmatic Interfaces. Part I: Concepts.

Similar presentations


Presentation on theme: "Pegasus Concepts and Programmatic Interfaces. Part I: Concepts."— Presentation transcript:

1 Pegasus Concepts and Programmatic Interfaces

2 Part I: Concepts

3 What is Pegasus? Pegasus is a CIM Server reference implementation whose main goal is to demonstrate certain manageability concepts.

4 Implementation Languages The CIM Server is implemented in C++. CIM Providers may be implemented in either C++ or Java (Pegasus will contain and embedded JVM). Consumers may be implemented in either C++ or Java.

5 Targeted Platforms (Initial) Linux FreeBSD Solaris AIX HP Windows

6 Key Concepts (Part I) Providers may reside in their own process. Providers communicate with CIM servers using an extended “CIM over HTTP”. Consumers may communicate directly with out of process providers. Providers are special CIM servers with no repository and no provider delegation mechanism.

7 Key Concepts (Part II) Providers may be developed without regard to whether they are in-proc or not. A repository is a special kind of provider. Alternative repository implementations can be plugged in to the CIM server (Pegasus provides a simple default repository). Repositories may reside in a distinct process from the CIM server.

8 Part II: Programmatic Interfaces

9 CIM Data Types (C++ Types) Boolean Uint8 Sint8 Uint32 Sint32 Uint64 Sint64 Real32 Real64 Char16 String DateTime String Reference

10 CIM Data Types (String) Pegasus provides a simple Unicode String class to represent CIM strings: String m = “Hello World”; for (Uint32 i = 0; i < m.getLength(); i++) cout << m[I];

11 CIM Data Types (Arrays) Pegasus provides a simple Array class for defining arrays of any CIM data type: Array a; a.append(1.5); a.append(2.5); a.append(3.5); for (Uint32 i = 0; i < a.getSize(); i++) cout << a[i];

12 CIM Data Types (Value) Any CIM data type can be represented using the Value class: Value v1(Uint32(99)); Value v2(“Hello World”); Value v3(true); Boolean flag; v3.get(flag);

13 CIM Object Types In Pegasus, the CIM object types are represented by these classes: ClassDecl (ConstClassDecl) QualifierDecl (ConstQualifierDecl) InstanceDecl (ConstInstanceDecl) Property (ConstProperty) Qualifier (ConstQualifier) Method (ConstMethod) Parameter (ConstParameter)

14 CIM Object Types (Property) Properties are defined like this: Property prop(“ssn”, Uint32(99)); prop.addQualifier(Qualifier(“key”, true));

15 CIM Object Types (ClassDecl) Class declarations are defined like this: ClassDecl c(“MyClass”, “SuperClass”); c.addQualifier(Qualifier(“abstract”, true)); c.addProperty(Property(“count”, Uint32(99)); c.addProperty(Property(“msg”, “Hello”)); c.addMethod(Method(“f”, Type::UINT32));

16 Pegasus Interfaces Consumer Interface Provider Interface

17 The Consumer Interface The consumer interface was derived nearly verbatim from the “CIM over HTTP” DMTF specification.

18 Class Related Methods Consumer::createClass() Consumer::deleteClass() Consumer::getClass() Consumer::modifyClass() Consumer::enumerateClasses() Consumer::enumerateClassNames()

19 Instance Related Methods Consumer::createInstance() Consumer::deleteInstance () Consumer::getInstance () Consumer::modifyInstance () Consumer::enumerateInstance () Consumer::enumerateInstanceNames()

20 Query Related Methods Consumer::execQuery()

21 Association Related Methods Consumer::associators() Consumer::associatorsNames() Consumer::references() Consumer::referenceNames()

22 Property Related Methods Consumer::getProperty() Consumer::setProperty()

23 Qualifier Related Methods Consumer::getQualifier() Consumer::setQualifier() Consumer::deleteQualifier() Consumer::enumerateQualifiers()

24 Method Related Methods Consumer::invokeMethod()

25 The getClass() Method ConstClassDecl Consumer::getClass( const String& nameSpace, const String& className, Boolean localOnly = true, Boolean includeQualifiers = true, Boolean includeClassOrigin = false, const Array & propertyList = Array ());

26 The getInstance() Method void Consumer::createInstance( const String& nameSpace, InstanceDecl& newInstance);

27 The Provider Interface The provider interface may be identical to the consumer interface. Although other CIM implementations opted to have several different provider interfaces (depending on the kind of provider), we may make keep them identical (except that with the provider interface, the provider is the callee rather than the caller).


Download ppt "Pegasus Concepts and Programmatic Interfaces. Part I: Concepts."

Similar presentations


Ads by Google