Contributors:
Harish, Robby, William Reehil, CT Paterson, Steven Blimkie
Overview:
- Currently, changes in schema are delivered via new builds of microservices that consume them
- Tracking and testing changes via new builds takes longer
Requirements:
- AAI should support the ability to centrally persist and serve schema
- AAI should support the ability to centrally persist and serve custom queries
- AAI should support the ability to provide schema documents via a loosely coupled REST contract
- AAI should support the ability to provide the schema via flexible document formats (OXM, TOSCA etc.)
- AAI should support the ability to provide a complete schema as one document even if persisted via multiple files
- AAI should support the ability to provide a list of documents stored
- AAI should support the ability to provide an individual document
- AAI should support the ability to provide associations between documents (eg. an OXM and Edgerules)
- AAI should continue to support clients that consume the schema via XSDs and POJOs
- AAI should support the ability to consume new schema dynamically, without downtime (eg. when distributed by SDC)
- AAI should support the ability to notify consumers of schema when new updates are available
Scope for Dublin:
R1-R9
Design:
- A mS called Schema Service will load all the schema (OXM and edge rules) at start up
- The Schema Service will load all the custom queries at start up
- The mS will provide REST endpoints via GETs such as /aai/schema-service/{api-version}. Consumer mS should use the updated ingest library to make REST calls to the Schema Service
- The REST endpoint for providing the schema will support a "format" query parameter which will describe what format it is requested in eg. GET /aai/schema-service/v1/nodes?version={version}&format=OXM
- The REST endpoints such as /aai/schema-service/v1/nodes?version={version} and /aai/schema-service/v1/edgerules?vesrion={version} will provide a complete schema
- The REST endpoint such as /aai/schema-service/v1/list?type={type} where type can be "versions" (eg. v10, v11 etc.) or "endpoints" (ex. nodes, edgerules and stored-query, will provide the list of documents stored
- The REST endpoint such as /aai/schema-service/v1/stored-query will provide the individual document
- The REST endpoint will provide the associations between documents via query parameter "version"
- The schema jar will continue to be provided as an artifact for consumers of XSD and POJOs