Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
COSMOS Design 215123
Contents
Complete CMDBf 1.0 Service Metadata implementation
This is the design for Bugzilla 215123.
Change History
Name: | Date: | Revised Sections: |
---|---|---|
Bill Muldoon | 1/28/2008 |
|
Workload Estimation
Process | Sizing | Names of people doing the work |
---|---|---|
Design | 0.2 week | Bill Muldoon |
Code | 1 week | Joel/Bill |
Test | 0 | Bill/QA team |
Documentation | 0 | N/A |
Build and infrastructure | 0 | N/A |
Code review, etc.* | 0 | N/A |
TOTAL | 1.2 weeks |
* - includes other committer work (e.g. check-in, contribution tracking)
Terminologies/Acronyms
The terminologies/acronyms below are commonly used throughout this document. The list below defines each term regarding how it is used in this document:
Term | Definition |
---|---|
MDR | management data repository |
CMDBf | specification for a CMDB that federates between multiple MDRs [1] |
federating CMDB | the CMDB that federates between MDRs, offering a common access point to clients and correlating identifying record data |
CMDB | configuration management database |
Purpose
CMDBf 1.0 introduced metadata to describe MDR query and registration metadata. This metadata is exposed as WS-Policy elements in WSDL. The purpose of this enhancement is to enable COSMOS MDRs to expose their metadata in WSDL.
External Implementation
How does a COSMOS MDR expose its metadata?
A COSMOS MDR exposes its metadata by implementing the IPolicyAssertion interface:
public interface IPolicyAssertion { String getPolicyId(); Element toXml(); String toXmlString(); }
The getPolicyId() operation returns the policy identification. The toXml() and toXmlString() operations return the actual metadata.
For example, the Example MDR will support the IPolicyAssertion interface:
public class ExampleMdr extends AbstractMdr implements IDataManager, IMdrQuery, IPolicyAssertion
How does the client application obtain the MDR metadata?
First the client application must obtain the WSDL. The mechanism to obtain the WSDL is dependent on the container.
- In Axis2, the "?WSDL" operation can be used.
- In MUWS, Metadata Exchange (MEX) can be used.
Then the client application can extract the metadata from the WSDL. As a convenience, it may use the COSMOS CMDBf metadata transformations to convert the metadata into POJOs.
Internal Implementation
When the WSDL is requested from a COSMOS Data Manager, the COSMOS Contribution Manager searches for the IPolicyAssertion interface in the annotations of the Data Manager. If found, it invokes its operations to retrieve the policy data and then includes it when generating the WSDL.
Test Coverage
A JUnit test will obtain the metadata from the Example MDR using MEX.
Also the COSMOS UI will be able to display the metadata from an MDR. Refer to related Bugzilla 215521
Open Issues
How does the client obtain the WSDL in the JAX-WS environment?
All reviewer feedback should go in the Talk page for 215123.