References
- CPS-1616Getting issue details... STATUS
Impl. Proposal CM Event Subscription LCM: Create
- CPS-1776Getting issue details... STATUS
Out-of-scope
- Working with wildcards and subscription update which will be taken care by a separate epic.
- Subscription create ( done as part of a different story )
- Merging of the ongoing subscriptions.
Assumptions
# | Issue | Notes | Decisions |
---|---|---|---|
1 | Delete use case works for a valid ongoing subscription only. | ||
2 | Works only for the passthrough datastores. |
Issues & Decisions
# | Issue | Notes | Decisions |
---|---|---|---|
1 | Delete the subscription from the database? |
| |
2 | What do we need to send to the DMI Plugin so that they are able to decide that how to delete the ongoing subscription. |
| |
3 | The subscription delete request should be able to retry and make sure the subscriptions are deleted from the respective DMIs managing the devices. | kieran mccarthy The agenda for the next meeting. We can decide then. More on the "DELETING" stage ( if we want to have it ) | kieran mccarthy As discussed on , The DME should be able to maintain Subscription State and make decision when to retry based on the response outcome we provide to it for create and/or delete use cases. |
4 | DME to NCMP Event to have targets and datastore-xpath-filter information for the subscription delete use case ? | kieran mccarthy As per the discussion today we agreed to use targets , datastore-xpath-filters and datastores for the subscription delete use case. | |
5 | Do we send additional properties from NCMP to DMI | Are additional properties needed to delete the subscription |
Overview
- We receive an event of type : subscriptionDeleted from the client ( DME ) containing the subscription clientId and subscription name along with datastore and dataCategory details ( DMEtoNCMP )
- We check in NCMP that we have an ongoing subscription using clientId and subscriptionName.
- If we have ongoing subscription , we forward the event to dmi-plugins so that the changes are applied in the devices managed by dmi-plugin as well. ( Impl. Proposal CM Event Subscription LCM: Delete )
- Now if the dmi-plugins have applied the request then we get an event back from dmi-plugin and NCMP will process that event and based on that it will delete the ongoing subscription request from the database itself. If the response from DMI plugins is accepted ( i.e it can delete the subscriptions from the underlying devices and no subscription delete request are in PENDING or REJECTED state )Then we delete the subscriptions from the DB as well. ( Impl. Proposal CM Event Subscription LCM: Delete )
- After processing the received event from DMI , NCMP will send the final event to the client (DME). ( Impl. Proposal CM Event Subscription LCM: Delete )
Subscription Delete Sequence Diagram
DME to NCMP
Subscription Delete Event
|
NCMP to DMI-Plugins
Produced by NCMP and Consumed by DMI Plugins
|
DMI-Plugins to NCMP
Produced by DMI Plugins and Consumed by NCMP
|
Notes
- dmiName in Output Schema is populated from application.yml of DMI-plugin.
- DMI-plugin subscribes to the topic to consume Input Schema given in application.yml of DMI-plugin.
application.yml of DMI-Plugin
|
NCMP to DME
Produced by NCMP to send it to the Client-Apps
|
DB Logic for subscription delete handling forwarding
- NCMP receives a subscription delete request
- IF subscription exists
- Set last operation enum to delete
CMHANDLE1:
CMHandle2:
CMHandle3:
DB Logic for subscription delete handling
- NCMP receives subscription delete response from DMI Plugins
- NCMP checks the existing create subscription object in db
- If cmhandle is accepted, delete cmhandle is pending
- If cmhandle is rejected, delete cmhandle is rejected with message like "create subscription was rejected originally"
- If cmhandle is pending, delete cmhandle is rejected with message like "create subscription for cmhandle is pending"
- NCMP persists subscription delete in db
- NCMP forwards subscription delete to the pending delete operation cmhandle's dmi plugins.
- NCMP listens for DMI responses and updates subscription delete in db
- If all respond then send NCMP to ClientApp response
- If not all respond then send response after 30 seconds
- Check if subscription create and subscription delete match states for all cmhandles then the subscriptions can be deleted from the db
If Delete is requested again by client apps
Create State Delete State NCMP action 1 Accepted Accepted Nothing 2 Accepted Rejected Delete for that cmhandle once 3 Accepted Pending Delete for that cmhandle once 4 Rejected Rejected Nothing 5 Pending Rejected Nothing See step 5.