A subsystem is needed to track the history of the A&AI real-time database at an attribute/entity level for every resource (nodes & edges). The following is what would need to be tracked for the attribute value and entity assertions
source of change (provenance)
timestamp of when the change (add/update/delete) was made in the database
timestamp of when the change (add/update/delete) was made in the network as per provided by the client (preferred that client sends this but not mandatory)
The client will need a streamlined way to access this history via URIs and a GUI. For Casablanca only singular entity history queries will be supported showing the state of the entity at a given time. The design needs to be extensible enough to easily support history queries over a range of time, retrieving complicated topology history, traversal mS endpoints (custom query/dsl), and aggregations post Casablanca. Any data populated in A&AI before this feature was implemented, would not have historical information. If the results have a subset of attributes that did not exist in the range of the data requested, A&AI will display the partial history available Data retention limits will be enforced on the historical database to truncate history, this data retention timeframe will be configurable
Create the A&AI history subsystem framework (scaffolding)
Develop functionality for the history subsystem to handle storing the historical data within the database layer, recording the database entry time as a meta property on a value/entity/relationship update along with the source of the update
Develop functionality for the history subsystem to handle storing the network sequence time as a meta property on a value/entity/relationship update (if the network sequence timestamp was passed in), also store the source of the update
Develop functionality for the history subsystem to retrieve the state of an entity/relationship at a given database timestamp
Develop functionality for the history subsystem to retrieve the state of an entity/relationship at a given network sequence timestamp (will only pull entity/relationships that have a network sequence timestamp)
Develop functionality for the history subsystem to truncate history data after a configurable range of time
Update the existing A&AI GUI to include functionality to query historical data for an entity/relationship at a particular point in time
Ensure the history subsystem is properly updating the logs per ONAP guidelines
Action items
James Forsyth will create the epic and skeleton stories for this initiative, Due