(file) Return to architecture.dxx CVS log (file) (dir) Up to [Pegasus] / pegasus / doc / DevManual

  1 karl  1.1 /*
  2 karl  1.2 $Log: architecture.dxx,v $
  3           Revision 1.1  2001/01/24 14:18:49  karl
  4           import Dev Doc Files
  5           
  6 karl  1.1 */
  7           /** @name Architecture
  8           
  9           
 10 karl  1.2 ATTN: Not complete
 11 karl  1.1 
 12 karl  1.2 This section defines the overall architecture of the Pegasus implementation.
 13 karl  1.1 
 14           
 15           */
 16           
 17           //@{
 18           /** @name Manageability Services Broker (MSB).
 19 karl  1.2 
 20           The Common Information Model Object Broker (often known as the CIM Information
 21           manager or CIMOM) brokers CIM objects between a number of sources and
 22           destinations. A CIM object should be a representation, or model, of
 23           a managed resource, such as a printer, disk drive, or central processing unit
 24           (CPU). In the Pegasus implementation, CIM objects are represented
 25           internally as C++ classes. The CIMOM transfers information
 26           between WBEM clients, the CIM Object Manager Repository, and managed
 27           resources.
 28 karl  1.1 
 29           */
 30           
 31 karl  1.2 /** @name Pegasus Providers.
 32 karl  1.1 ATTN: Define in more detail
 33           
 34           */
 35           
 36           /** @name Extension Services
 37           ATTN: Document this as an architectural component
 38           */
 39           
 40           
 41           /** @name Pegasus Clients.
 42           ATTN: define in more detail
 43 karl  1.2 
 44           */
 45           
 46           /** @name Description of the CIMOM and WEBM
 47           
 48           The Common Information Model Object Broker (often known as the CIM Information
 49           manager or CIMOM) brokers CIM objects between a number of sources and
 50           destinations. A CIM object should be a representation, or model, of
 51           a managed resource, such as a printer, disk drive, or central processing unit
 52           (CPU). In the Pegasus implementation, CIM objects are represented
 53           internally as C++ classes. The CIMOM transfers information
 54           between WBEM clients, the CIM Object Manager Repository, and managed
 55           resources.
 56           
 57           NOTE: We are very careful in the use of CIM and WBEM.  These are terms defined
 58           and controled by the DMTF and they have specific meanings both technically and
 59           legally. Thus, the objects are CIM objects.  However, the client is a WBEM
 60           client because it uses the DMTF XML/HTTP specificaitons to transfer
 61           information and that specification and CIM form WBEM.
 62           
 63           When a WBEM client application accesses information about a managed
 64 karl  1.2 resource, the CIM Object Manager contacts either the appropriate provider
 65           for the CIM object that represents that managed resource or the CIM Object
 66           Manager Repository. Providers are classes that communicate with managed
 67           objects to retrieve data. If the requested data is not available from the CIM
 68           Object manager Repository, the CIM Object Manager forwards the request to
 69           the provider for that managed resource.
 70           
 71           Using the Repository.
 72           
 73           The provider dynamically retrieves the requested information, which is sent back to the requester. The CIM Object Manager Repository only contains static data. Classes that are handled by a provider must have a Provider qualifier that identifies the provider to contact for the class. When the CIM Object Manager receives a request for a class that has a Provider qualifier, it should route the request to the specified provider. If no provider is specified, it should route the request to the CIM Object Manager Repository.
 74           
 75           When a WBEM client connects to a CIM Object Manager, it will get a handle to the CIM Object Manager. The client can then perform WBEM operations.using this reference. At startup, the CIM Object Manager should perform the following functions: Listen for RMI connections on RMI port 5987 and for XML/HTTP connections on HTTP.
 76           
 77           NOTE: The current version of the CIMOM does not incorporate events.  Therefore, this description is written around a CIMOM without events functionality.
 78           
 79           Note - The listener for connections may not be the Object Manager; it could
 80           be another entity that is performing the operation for the Object Manager.
 81           This could be a servlet in a Web server. Conformant object managers are
 82           required to support XML over HTTP - Pegasus is conformant.
 83           
 84           The CIMOM accepts requests called WBEM Operations from the WBEM client. These operations are explicitly defined in the WBEM specification. They represent the operations possible on CIM objects (ex. create/modify/delete class/instance, etc.) During normal operations, the CIMOM performs the following for each operation request received:
 85 karl  1.2 <UL>
 86           <LI>Security checks to authenticate user login and authorization to
 87           access the CIMOM information.
 88           <LI>Syntactic and semantic checks of the CIM data operations to
 89           ensure that they comply with the current version of the CIM
 90           specification.
 91           <LI>Route requests to the appropriate provider orthe Repository.
 92           The CIMOM iteself does not serve as a Repository for CIM class definitions and instance data. Persistence is provided by the Repository; however, the contact point is the CIMOM. Thus, the Repository could be considered as an option except that the CIMIM is required to keep class information for all semantic and syntatic confirmation and therefore the class repository is a requirement of a working CIMOM, not an option.
 93           <LI>Deliver data from providers and from the CIM Object Manager
 94           Repository to the originating WBEM client application.
 95           </UL>
 96           The CIMOM should be a process that accepts requests for CIM
 97           operations, as defined by the DMTF, and carries out these operations.  The
 98           Pegasus CIMOM runs as a daemon process that waits for requests.
 99           
100           <B>Authentication</B>
101           
102           Before any requests can be made to the CIM Object Manager, an
103           authenticated session must be established.  
104           
105           NOTE:The current version of Pegasus does not
106 karl  1.2 have any authentication.  However, it is planned for version 1.1.
107           
108           An identifier for the user and optionally a role will be associated with the authenticated session. A role is a principal identity associated with the current session, in addition to the user identity. Systems that do not support roles can ignore them as described in the Security Interface. These can be maintained in an internal Hash map.
109           
110           <B>Request Reception</B>
111           
112           The CIMOM receives requests through CIM operations over HTTP. Each request will be associated with a session that is set up as part of the initial authentication exchange. Since the session has an associated user, each request automatically has a user associated with it. This should be useful for authorization checking for a given request. Once the request has been received, the appropriate components for handling the specific request will be invoked. The Pegasus implementation has methods for each of the major CIM operations over HTTP. Once the request is received, the appropriate method will be called..
113           
114           <B>Authorization</B>
115           
116           The default implementation is Access Control List (ACL) based. Access
117           control lists can be maintained per namespace or on a per namespace/user
118           basis. These lists will be maintained in the root/security namespace. The CIM
119           Object Manager will grant read or write permissions within a namespace
120           based on the access control list. Since CIM operations are done within the
121           context of a namespace, these ACLs will enforce rules on whether an
122           operation should be allowed. For operations that will ultimately be handled by
123           a provider, the appropriate provider can replace the authorization scheme.
124           This will allow providers to enforce finer grained control if desired. A
125           provider
126           can replace the default authorization checking scheme by implementing the
127 karl  1.2 Authorizable interface. If implemented, no calls are made to the CIM Object
128           Manager.
129           
130           <B>Provider</B>
131           
132           <B>Provider RegistrationB/B>
133           
134           The Pegasus CIMOM enables developers to write providers, which serve dynamic information to the CIMOM (see Providers).  Providers register themselves by specifying their location in a Provider qualifier. Providers can be set up on a class, property, or method basis. Providers can have one or more of the different provider types. The DMTF CIM specification allows the Provider qualifier to have an implementation specific interpretation. For Pegasus, the Provider qualifier constitutes the executable name of a provider executable implementing the provider functions for the class. 
135           
136           
137           There are a number of conceptual interfaces that can be implemented by providers:
138           <UL>
139           <LI>InstanceProvider
140           <LI>MethodProvider
141           <LI>PropertyProvider
142           <LI>AssociatorProvider
143           </UL>
144           .
145           Each conceptual interface provides a subset of the WBEM Operations as follows:
146           
147           NOTE: ATTN: Table defining the types vs. operations
148 karl  1.2 
149           However
150           
151           Providers should be loaded "on
152           demand" by the CIMOM. Classes and properties marked by the
153           provider qualifier will be an indication to the object manager that the
154           associated information is dynamic and must be obtained from the providers
155           rather than the repository. When the object manager determines that a
156           specific request needs dynamic data, provider should be
157           loaded and instantiated. Additionally, the "initialize" method of the Provider
158           will be invoked. There should be only a single instance of the provider.
159           
160           ATTN: Review the following:  In the reference implementation, the ProviderChecker maintains a hash map of all the providers. This will enable the CIM Object Manager to load a provider only if it has not been loaded previously. There should be no specified time when a provider can be "unloaded", however providers have a "cleanup" method that can be invoked if, and when, this behavior is specified for the object manager.
161           
162           The CIM Object Manager will not act as as a provider for
163           classes. However, there are instances where classes must interact with the CIMOM itself. These might include authentication classes, authorization classes, namespace classes, and classes that provide information on the CIMOM iteslf.
164           
165           These classes will be handled by providers but these will be specialized providers that have access back to the CIMOM itself.  All of this is being defined as part of a services extension interface to PEGASUS.  This interface will be discussed in a future version of this document:
166           
167           ATTN: add the services interfaces.
168           
169 karl  1.2 
170           
171           
172           ATTN: Dealing with multiple providers per class.
173           
174           
175           <B>Request Routing</B>
176           
177           One of the main functions of the CIMOM is operation request routing.
178           Depending on the request, the request may need to be authorized and passed to
179           semantic checkers, providers, and the repository.
180           
181           Requests may be for static information such as schema
182           definitions or static instances. In this case, the CIMOM should
183           route the request to the proper repository.
184           
185           The more complex routing will involve operations that can traverse multiple
186           classes and their instances. An example of such an operation is association
187           traversal. In order to determine the associated instances of a given input
188           instance, the CIMOM should first determine the associations
189           that the given instance class participates in. It will obtain this from the
190 karl  1.2 associations that have been compiled and stored in the repository. Once
191           these associations are determined, the CIM Object Manager should find
192           those instances of the associations in which the given input instance plays a
193           role. These associations may, or may not be, dynamic. Depending on
194           whether the associations are dynamic or not, the CIM Object Manager may
195           route the requests to providers or the repository. Once the results are
196           returned, they should be concatenated together and returned because of the
197           request. The CIM Object Manager will use schema information to determine
198           which providers to contact. As can be seen, a given request can result in
199           multiple sub-requests to the providers or the repository.
200           A similar situation will occur when a deep enumeration is performed on
201           instances of a class.
202           
203           <B>Semantic Checking</B>
204           
205           The CIMOM performs semantic checks before classes or
206           instances can be set or createdusing internal class,
207           property, instance, method, and qualifier checkers and the rules ov validation defined by the CIM specification. These verifiers ensure that the CIM rules are enforced. This includes type verification,type conversions, verification of proper key usage, and other checks.,
208 karl  1.1 
209           */
210           
211           //@}

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2