COSMOS Design 233690
Configuring and retrieving data manager configuration values
|Hubert Leung||June 19, 2008|
|Process||Sizing||Names of people doing the work|
|Build and infrastructure||0||Saurabh Dravid|
|Code review, etc.*|
'* - includes other committer work (e.g. check-in, contribution tracking)
Each data manager have configuration values that can be used as identifiers, or attributes that indicate their functions. This enhancement is to provide the mechanism to configure these values at deployment time, and expose these values through web services.
Identifier of a data manager
The current implementation (as of i10) uses the Axis2 service group name and hostname together to uniquely identify a data manager.
A data manager can be an MDR or a federating CMDB. The CMDBf specification has the notion of an "MDR ID", which is a URI that can uniquely identify a MDR. Each configuration item and relationship is associated with an MDR ID to indicate which MDR manages it.
The goal is to consolidate the approach for identifying an MDR and a data manager that is not an MDR so that we don't need multiple ways to identify a data manager.
Descriptions of the data manager
There are attributes about a data manager that provide information about the services it provides. These values can be displayed by the UI or used programmatically by a client application. These values include the display name, description, and other application specific name-value pairs. One requirement about these values is that they may be locale specific.
SOAP version of web services
Axis2 supports web services using SOAP 1.1 or 1.2. While it is possible to deduce the SOAP version by getting the whole WSDL from the server, it is more efficient to get the SOAP version from the server without transfering the whole WSDL to the client.
Data manager identifier
We will consolidate the MDR ID and the way we identify other data managers (those that don't support the CMDBf query service). The identifier is a URI that is globally unique. The value is configured at deployment time. It is the responsibility of the administrator to ensure the uniqueness of the URI.
Example of a URI: http://www.ibm.com/ccmdb/mdr/1
We will use a properties file (cosmos.properties) to configure the name value pairs. The reaoson why a properties is used instead of using the axis2 services.xml configuration file is because these values will need to be shared between web services. The parameters configured in the services.xml are specific to a web service.
Another advantage of putting values in the properties file is to make the values more easily translated. Translating XML files is difficult.
[Concern to address: Since the URI doesn't need to be translated, we may want to keep it separate from the properties file.]
Getting values from configurations by web services of the same service group
A java class (ConfigurationManager) will be provided that will retrieve values from this configuration file. This class will be part of the org.eclipse.cosmos.datamanager project. The class will be packaged in all data manager projects. The class can be invoked by multiple web services within the same service group. Implementation classes of the query service will need to invoke the getId() method of this class to get the MDR ID to populate values in the CMDBf query response or the registration request. The COSMOS web service will also need to get values from the configuration file.
Web service operations
New web service operations will be added to the COSMOS web service to expose the configuration values to remote clients.
getDataManagerInfo: returns the ID, display name, description and properties of the data manager. Provide the locale as an optional parameter in the request.
Pseudo-schema of the response:
<getDataManagerInfo locale="xs:string"> <id>xs:anyURI</id> <displayName>xs:string</displayName> ? <description>xs:string</description> ? <property name="xs:string" value="xs:string"/> * </getDataManagerInfo>
- getSoapVersion: Gets the soap version given the name of a service.
Impacts of this enhancement
- The new values for the data manager (service group) need to be retrieved by the service finder web service.
- The tooling need to add a stub properties file in the META-INF directory of the data manager web project. Since the values are to be configured at deployment time, we don't need eclipse UI to set the values.
- UI can utilize the new web service operations to get locale specific display name and description from data managers.