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
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 SchemaSets are deleted once dataspace holding it is deleted | To delete the anchor under the dataspace we first need to delete the fragment associated with this anchor. If we delete the schema set for the anchor and dataspace, we will delete the associated schemaset yang resource, however, the yang resource table does not change. |
2 | Dataspace not empty exception | If dataspace is not empty, throw exception 'DataspaceNotEmptyException' (?) | We decided to use the CPS Exception |
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