CPS-313 Delete DataNode (xpath) for a given Anchor
Currently within CPS it is possible to delete child list-nodes on a given anchor and xpath, or deleting the anchor which subsequently deletes all related list-nodes under that anchor.
There is no functionality right now to delete the data-node at the highest level, and subsequently the list-nodes for this data-node.
CPS should provide the functionality to delete data-nodes as part available within the CPS-REST API, and the NCMP-REST API.
Implementation Proposal
Implement an endpoint which provides functionality to support data-node removal using the data-node xpath.
REST layer
URI
(CPS-Core) DELETE dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes
REST layer (DataRestController.java)
Implement method to delete data-nodes with anchor, dataspace and xpath as string parameters.
Call cpsDataService.
return 204.
REST layer (cpsData.yml)
Add delete operation to endpoint functionality within CPS-Core
REST layer (DataRestControllerSpec.groovy)
Ensure appropriate response in tests on invocation.
Service layer (CPSDataService.java)
Create new abstract method deleteDataNode.
Service layer (CpsDataServiceImpl.java)
validate xpath of the data-node.
call cpsDataPersistence.deleteDataNodes(rename method)
notificationService.processDataUpdatedEvent(dataspaceName, anchorName)
Service layer (CPSDataServiceImplSpec.groovy)
delete data-node under xpath.
Persistence layer (CpsDataPeristenceService.java)
Create new abstract method, deleteDataNodes()
Persistence layer(CpsDataPersistenceServiceImpl.java)
Use method getFragmentByXpath() to the get the parentEntity of the data-node.
Check if it is a data-node or a list-node to be deleted.
If it is a data-node call removeDataNode().
If it is a list-node call deleteListDataNodes(). (See https://lf-onap.atlassian.net/browse/CPS-361)
Persistence layer (CpsDataPersistenceServiceSpec.groovy)
Verify data-node is deleted successfully.
Verify list-node is deleted successfully
Error thrown when the xpath does not exist.
Error is thrown if data node or list node don't exist.
https://lf-onap.atlassian.net/browse/CPS-313
Issues & Decisions
# | Issue | Notes | Decision |
|---|---|---|---|
1 | Empty Anchors | If top level data-node is removed, it could potentially leave an empty anchor. | Check with stakeholders (Peter and Kieran) |