Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Currently only supporting NONE and COMPLETE. PARTIAL and POOR may be added later as below.

Changes to DMI Registry Model

We will not be making changes to the DMI Registry Model, Public Properties of the CMHandle will be used where needed.

Triggers of CMHandle trust level change

Image Removed

DMI Availability

Ping every 30 seconds configurable or (every communication with DMI OOS)

Health check endpoint already exists 

http://'$1'/manage/health/readiness

Hazelcast Map

When DMI comes back up, DMI does audit and provides list of Trustworthy CM Handles

Audit triggered by NCMP with list of CMHandles IDs and for DMI to reregister HTTP

Deltas: DMI handling, properties; Delete all under a DMI? Performance?

...

Device Heart Beat

Assumed functionality is that this will be defined by the DMI Plugin as NCMP does not communicate with device directly

Interface in NCMP for DMI Plugin to be able to tell when device HB has been lost?

10 minute limit should be configurable with 10 as default.

Probably event based

...

DMI-I-01

/health

/v1/ch/trustlevel

{

"Trust":

}

Reregistration

  1. This process occurs when the DMI Plugin Availability is down and then comes back up.
  2. NCMP makes a synchronous call to the DMI Plugin (New Audit Endpoint) to trigger a reregistration
  3. DMI Plugin then reregisters its CMHandles with NCMP (new reregistaration Endpoint?)
  4. NCMP then compares the CMHandles which are being reregistered with the CMHandles which already exist.
  5. CMHandles which are in NCMP but not in DMI reregistration request are kept as trust level none
  6. What happens if there is conflict between the old and new properties of a CMHandle, just take the new properties?
  7. New CMHandles could be registered

...

Hazelcast for Trust Level

...

Set Trust level for untrustworthy CMHandles
Key: CmHandleId

When checking the trust level for a CMHandle first check the trust level of that CMHandle's DMI Plugin
If None return None
If Full check trust level for the CMHandle and return that


High Level Interactions

draw.io Diagram
bordertrue
diagramNameStaleness Freshness Overview
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth939
revision1

InterfaceNameTriggerDescriptionTypeEndpoint or TopicSchema
1HealthCheck30 second interval (configurable)NCMP is to perform a health check against each of the DMI PluginsRESThttp://'$1'/manage/health/readiness
2Reregistration requestDMI Plugin has gone down and comes back upNCMP makes a call to that DMI Plugin telling it to reregisterRESTTBD
3ReregistrationDMI Plugin received a reregistration requestDMI Plugin makes a call to NCMP to reregister its CM HandlesREST/v1/ch/reregistration
{
  "dmiPlugin": "my-dmi-plugin",
  "dmiModelPlugin": "my-dmi-model-plugin",
  "cmHandles": [
    {
      "cmHandle": "my-cm-handle",
      "publicCmHandleProperties": {
        "key": "my-property"
      },
      "cmHandleProperties": {
        "key": "my-property"
      }
    },
    {
      "cmHandle": "my-cm-handle",
      "publicCmHandleProperties": {
        "key": "my-property"
      },
      "cmHandleProperties": {
        "key": "my-property"
      }
    }
  ],
  "dmiDataPlugin": "my-dmi-data-plugin"
}
4CMHandle trust level changeA CMHandle managed by DMI Plugin's trust level has changed

data contains {trustLevel: ENUM} 

event id is cmhandle id

KafkaTBD

<cloudEvents-header>

  id : <cmhandleId>

  type : org.onap.cm.events.trustlevel-notification


  data : {

                                trustlevel : "COMPLETE"

  }

5TrustLevel RequestClient RequestTrustLevel is to be returned based on the values in above MapsRESTTBD

Managing TrustLevels

DMI Plugins

  1. NCMP is checking every DMI Plugin for health at interface 1 every 30 seconds using the DMI Trust Map
  2. IF a DMI Plugin goes down, that DMI Plugin's trust level is updated to NONE in the DMI Trust Map
  3. IF a DMI Plugin comes back up, NCMP requests that DMI Plugin to do a reregistration via interface 2
    1. That DMI reregisters itself using interface 3
    2. NCMP analyses the registration and compares the CMHandles it knows about to the CMHandles which have been reregistered, any CMHandles which did exist and are not reregistered are now added to the untrustworthy CMHandles Map. Existing CMHandles are updated and new ones are created.
    3. After the reregistration is complete, the DMI Plugin TrustMap is updated to set the trust level for that DMI to complete.

CMHandles HB

  1. It is the responsibility of the DMI Plugins to update NCMP about the HBs of CMHandles
  2. Through interface 4, DMI Plugins will provide a kafka event on the changing of trustworthiness state of a CMHandle.
    1. NCMP receives this event and updates the Untrustworthy CMHandles Map accordingly

Reading Trust Level

  1. Body of request to be discussed, Will the request provide a DMI or a list of CMHandles?
  2. Interface 5
  3. NCMP will first check DMI Trust Map for the CMHandle
    1. If that DMI which is managing the CMHandle is marked as untrustworthy then we return NONE without checking the Untrustworthy CMHandles Map
    2. If that DMI is trustworthy, we check the individual CMHandles Map, if the CMHandle is in the Map then return NONE.
  4. Logically IF (DMITrustMap.getDMIPlugin.getTrustLevel ==  NONE) Return NONE
    1. ELSE (IF UntrustworthyCMHandlesMap.getDMIPlugin.contains(CMHandle) RETURN NONE
    2. ELSE return COMPLETE