Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "COSMOS Design 200222"
(→''' Use Cases ''') |
(→''' Use Cases ''') |
||
Line 126: | Line 126: | ||
Use Case 4: User submits a query to retrieve the serial numbers and disk drive capacities of all computers. | Use Case 4: User submits a query to retrieve the serial numbers and disk drive capacities of all computers. | ||
− | Use Case 5: User submits a query to retrieve all software installed on Linux machines that is | + | Use Case 5: User submits a query to retrieve all software installed on Linux machines that is not a relational database. |
== ''' Class Diagram and Implementation Details''' == | == ''' Class Diagram and Implementation Details''' == |
Revision as of 15:53, 27 August 2007
Contents
- 1 Adding support for the CMDBf query service on top of the SML repository
- 2 Workload Estimation
- 3 Terminologies/Acronyms
- 4 Purpose
- 5 Requirements
- 6 Use Cases
- 7 Class Diagram and Implementation Details
- 8 Class Diagrams (optional)
- 9 Extension Points (optional)
- 10 Test Coverage (required)
- 11 Task Breakdown (required)
- 12 Open Issues/Questions
Adding support for the CMDBf query service on top of the SML repository
Change History
Name: | Date: | Revised Sections: |
---|---|---|
David Whiteman | 8/21/2007 | Initial version |
Workload Estimation
Process | Sizing | Names of people doing the work |
---|---|---|
Design | 1 | David/Ali |
Code | 2 | |
Test | 1 | |
Documentation | 0.4 | |
Build and infrastructure | 0.2 | |
Code review, etc.* | 0.2 | |
TOTAL | 4.8 |
- - 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:
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 |
SML Repository | repository of SML documents hosted in COSMOS with an established API (see bugzilla 179828) |
Query service | MDRs make data available to Clients via a Query service. Queries may select and return items, relationships, and/or graphs containing items and relationships. |
Service description | Description of query service supplied to the federating CMDB. This includes ID, descriptive text, supported record types, and other capabilities |
Purpose
According to the CMDBf specification, a repository will need to provide two services for it to be considered as an MDR:
- Registeration
- Query
The implementation of these services is the minimum requirement for a repository to be integrated with a federating CMDB. During the i6 time-frame a query service will be implemented for the SML repository. The service will allow clients to query the available data with the XML query language detailed out in the CMDBf specification. The output of the query will also be in XML format, which the client is expected to understand.
Currently clients are expected to interact with the SML repository via a set of convenience APIs. This enhancement does not imply the removal of such APIs. They may need to slightly be modified to accompany the new changes but they can still be reused by clients who have no intentions of leveraging the new query service.
There will likely be common set of code between the COSMOS client and the SML repository. It's expected that this common set will reside under the data collection subproject. One of the primary objectives of this document is to identify this reusable set of common code.
Requirements
This section lists the requirements of this enhancement:
- Querying the SML repository using the XML query format specified in the CMDBf specification
- Producing query results to clients using the XML response format specified in the CMDBf specification
Use Cases
The following use cases use the example data center as the contents of the MDR.
Use Case 1: User submits a query to retrieve all computers that have an installed OS with a brand name of "Red Hat 8"
Use Case 2: User submits a query to retrieve all computers with a RAM value greater than or equal to 2000 MB.
Use Case 3: User submits a query to retrieve all server software.
Use Case 4: User submits a query to retrieve the serial numbers and disk drive capacities of all computers.
Use Case 5: User submits a query to retrieve all software installed on Linux machines that is not a relational database.
Class Diagram and Implementation Details
Class Diagrams (optional)
<This section is only required for features that are introducing APIs that will be leveraged by other components>
Extension Points (optional)
<This section should only be included if new extension points are being introduced>
<Include any additional topics that will help in completing the implementation>
<Content related to the topic above>
Test Coverage (required)
<Include a description of the unit, functional, and system test cases that will be required to test the overall quality of the feature>
- We will need a test that makes the same kind of pull request to the MDR as if it were a federating CMDB. The assumed contents of the SML repository will be the data center example.
Here is a graph query that can be used for a unit test, to retrieve all computers that have an installed OS with a brand name of "Red Hat 8":
<query> <itemTemplate id="software"> <propertyValueSelector namespace="http://www.cosmos.rm/dataCenter/os" localName="brand"> <equal>Redhat 8</equal> </propertyValueSelector> <recordTypeSelector namespace="http://www.cosmos.rm/dataCenter/os" localName="WHAT GOES HERE?"/> </itemTemplate> <itemTemplate id="computer"> <recordTypeSelector namespace="http://www.cosmos.rm/dataCenter/machine" localName="WHAT GOES HERE?"/> </itemTemplate> <relationshipTemplate id="runsWithOS"> <recordTypeSelector namespace="http://www.cosmos.rm/dataCenter/machine" localName="WHAT GOES HERE?"/> <source ref="computer"/> <target ref="software"/> </relationshipTemplate> </query>
Question: relationship labels don't exist in the SML repository. Do these have to have any significance?
The resultant graph should be as follows:
something something