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 Apr 2, 2018