.. _UC10: Use Case 10 - MN Status Reports ------------------------------- .. index:: Use Case 10, UC10, MN Status, status, health Revisions View document revision history_. Goal Coordinating Node checks "liveness" of all Member Nodes - checks ping, service x, load, space, bandwidth, transaction rate, ... Summary As part of the infrastructure monitoring process, a CN checks on the "liveness" of all Member Nodes. This operation will be performed with moderate frequency (perhaps in the order of once every few minutes). The "lite" version of this use case, implemented for V0.3, is a simple ping to each Member Node. Later, more in-depth status information will be retrieved from Member Nodes using the ``MN_health.getStatus()`` method. The responses from the MNs should report sufficient metrics to gauge their performance in absolute terms and also relative to other MNs. See ``MN_health.getStatus()`` for those metrics. Actors CN, MN Preconditions - CNs are operational - MN is registered Triggers - Timed interval - Registration change (not for V0.3) Post Conditions - Status metadata is updated at CNs .. @startuml images/10_seq.png actor Admin participant "Admin" as app_admin << Application >> Admin -> app_admin: login() participant "State of Health API" as c_health << Coordinating Node >> participant "State of Health API" as m_health << Member Node >> app_admin -> c_health: generateReport(token) loop for each MN alt V0.3 c_health -> m_health: ping() m_health --> c_health: PingResponse else after V0.3 c_health -> m_health: getStatus(token) m_health --> c_health: StatusResponse end end note right of c_health internal process, not in the CN API end note c_health -> c_health: processStatusReports() c_health --> app_admin: statusReport @enduml .. image:: images/10_seq.png *Figure 1.* Interactions for use case 10. These interactions describe a synchronous process for generating a report. Most likely, a better mechanism would be for a background process to be accumulating the necessary statistics from Member Nodes, then the generateReport function would operate on the accumulated data rather than forcing a fresh copy. .. _history: https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/UseCases/10_uc.txt