Currently, in CPS, it is only possible to create a dataspace that will hold YANG modules and allow the service to create instances of the models via anchors.
It will be advantageous to provide a function that allows the deletion of the created dataspace provided that all anchors in that dataspace have also been deleted.
To realise 'Delete dataspace' functionality, the following must be implemented:
REST Endpoint in CPS-Core
Java API method in CPS-Service
Data Persistence Service
Implementation Proposal
REST layers
cpsAdmin.yml
- Create delete function to endpoint
AdminRestController.java
- Implement a method to delete a dataspace with a dataspace name of type String as a parameter
- Invokes cpsAdminService
- Returns code 404 if the dataspace given does not exist
Service layers
cpsAdminService.java
- Create abstract method
void deleteDataspace {String dataspaceName)
cpsAdminServiceImpl.java
- Invokes cpsAdminPersistenceService for method deleteDataspace
Persistence layers
cpsAdminPersistenceService.java
- Create abstract method
void deleteDataspace {String dataspaceName)
cpsAdminPersistenceServiceImpl.java
- Invoke method dataspaceRepository.getByName(String dataspaceName) to get dataspace entity
- Throws 'DataspaceNotFoundException' if dataspace does not exist
- Invoke method 'getAnchors()' to confirm that dataspace has no anchors
- If dataspace is not empty, throw exception 'DataspaceNotEmptyException' (?)
- Using JPA, delete dataspace
- Invoke method dataspaceRepository.getByName(String dataspaceName) to get dataspace entity
Issues
# | Issue | Notes | Decision |
---|---|---|---|
1 | Abandoned SchemaSets | Question: Will the SchemaSets be automatically deleted once all anchors using them have been deleted? SchemaSets are not automatically deleted once the anchors using them have been deleted |