€cdocutils.nodes document q)q}q(U nametypesq}q(Xuse case 10 - mn status reportsqNXuc10qˆXhistoryqˆuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hUuse-case-10-mn-status-reportsqhUuc10qhUhistoryquUchildrenq]q(cdocutils.nodes target q)q}q(U rawsourceqX .. _UC10:UparentqhUsourceqXj/var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/design/UseCases/10_uc.txtqUtagnameqUtargetqU attributesq }q!(Uidsq"]Ubackrefsq#]Udupnamesq$]Uclassesq%]Unamesq&]Urefidq'huUlineq(KUdocumentq)hh]ubcdocutils.nodes section q*)q+}q,(hUhhhhUexpect_referenced_by_nameq-}q.hhshUsectionq/h }q0(h$]h%]h#]h"]q1(hheh&]q2(hheuh(Kh)hUexpect_referenced_by_idq3}q4hhsh]q5(cdocutils.nodes title q6)q7}q8(hXUse Case 10 - MN Status Reportsq9hh+hhhUtitleq:h }q;(h$]h%]h#]h"]h&]uh(Kh)hh]q…q?}q@(hh9hh7ubaubcsphinx.addnodes index qA)qB}qC(hUhh+hhhUindexqDh }qE(h"]h#]h$]h%]h&]UentriesqF]qG((UsingleqHX Use Case 10Uindex-0qIUNtqJ(hHXUC10hIUNtqK(hHX MN StatushIUNtqL(hHXstatushIUNtqM(hHXhealthhIUNtqNeUinlineqO‰uh(Kh)hh]ubh)qP}qQ(hUhh+hhhhh }qR(h"]h#]h$]h%]h&]h'hIuh(Kh)hh]ubcdocutils.nodes definition_list qS)qT}qU(hUhh+hhh-}hUdefinition_listqVh }qW(h$]h%]h#]h"]qXhIah&]uh(Nh)hh3}qYhIhPsh]qZ(cdocutils.nodes definition_list_item q[)q\}q](hX+Revisions View document revision history_. hhThhhUdefinition_list_itemq^h }q_(h$]h%]h#]h"]h&]uh(K h]q`(cdocutils.nodes term qa)qb}qc(hX Revisionsqdhh\hhhUtermqeh }qf(h$]h%]h#]h"]h&]uh(K h]qgh=X Revisionsqh…qi}qj(hhdhhbubaubcdocutils.nodes definition qk)ql}qm(hUh }qn(h$]h%]h#]h"]h&]uhh\h]qocdocutils.nodes paragraph qp)qq}qr(hX View document revision history_.hhlhhhU paragraphqsh }qt(h$]h%]h#]h"]h&]uh(K h]qu(h=XView document revision qv…qw}qx(hXView document revision hhqubcdocutils.nodes reference qy)qz}q{(hXhistory_Uresolvedq|KhhqhU referenceq}h }q~(UnameXhistoryqUrefuriq€X”https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/UseCases/10_uc.txtqh"]h#]h$]h%]h&]uh]q‚h=Xhistoryqƒ…q„}q…(hUhhzubaubh=X.…q†}q‡(hX.hhqubeubahU definitionqˆubeubh[)q‰}qŠ(hX…Goal Coordinating Node checks "liveness" of all Member Nodes - checks ping, service x, load, space, bandwidth, transaction rate, ... hhThhhh^h }q‹(h$]h%]h#]h"]h&]uh(K h)hh]qŒ(ha)q}qŽ(hXGoalqhh‰hhhheh }q(h$]h%]h#]h"]h&]uh(K h]q‘h=XGoalq’…q“}q”(hhhhubaubhk)q•}q–(hUh }q—(h$]h%]h#]h"]h&]uhh‰h]q˜hp)q™}qš(hXCoordinating Node checks "liveness" of all Member Nodes - checks ping, service x, load, space, bandwidth, transaction rate, ...q›hh•hhhhsh }qœ(h$]h%]h#]h"]h&]uh(K h]qh=XCoordinating Node checks "liveness" of all Member Nodes - checks ping, service x, load, space, bandwidth, transaction rate, ...qž…qŸ}q (hh›hh™ubaubahhˆubeubh[)q¡}q¢(hXmSummary 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. hhThhhh^h }q£(h$]h%]h#]h"]h&]uh(Kh)hh]q¤(ha)q¥}q¦(hXSummaryq§hh¡hhhheh }q¨(h$]h%]h#]h"]h&]uh(Kh]q©h=XSummaryqª…q«}q¬(hh§hh¥ubaubhk)q­}q®(hUh }q¯(h$]h%]h#]h"]h&]uhh¡h]q°(hp)q±}q²(hX¨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.hh­hhhhsh }q³(h$]h%]h#]h"]h&]uh(Kh]q´(h=X‡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 qµ…q¶}q·(hX‡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 hh±ubcdocutils.nodes literal q¸)q¹}qº(hX``MN_health.getStatus()``h }q»(h$]h%]h#]h"]h&]uhh±h]q¼h=XMN_health.getStatus()q½…q¾}q¿(hUhh¹ubahUliteralqÀubh=X method.qÁ…qÂ}qÃ(hX method.hh±ubeubhp)qÄ}qÅ(hX¹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.hh­hhhhsh }qÆ(h$]h%]h#]h"]h&]uh(Kh]qÇ(h=XThe responses from the MNs should report sufficient metrics to gauge their performance in absolute terms and also relative to other MNs. See qÈ…qÉ}qÊ(hXThe responses from the MNs should report sufficient metrics to gauge their performance in absolute terms and also relative to other MNs. See hhÄubh¸)qË}qÌ(hX``MN_health.getStatus()``h }qÍ(h$]h%]h#]h"]h&]uhhÄh]qÎh=XMN_health.getStatus()qÏ…qÐ}qÑ(hUhhËubahhÀubh=X for those metrics.qÒ…qÓ}qÔ(hX for those metrics.hhÄubeubehhˆubeubh[)qÕ}qÖ(hXActors CN, MN hhThhhh^h }q×(h$]h%]h#]h"]h&]uh(Kh)hh]qØ(ha)qÙ}qÚ(hXActorsqÛhhÕhhhheh }qÜ(h$]h%]h#]h"]h&]uh(Kh]qÝh=XActorsqÞ…qß}qà(hhÛhhÙubaubhk)qá}qâ(hUh }qã(h$]h%]h#]h"]h&]uhhÕh]qähp)qå}qæ(hXCN, MNqçhháhhhhsh }qè(h$]h%]h#]h"]h&]uh(Kh]qéh=XCN, MNqê…që}qì(hhçhhåubaubahhˆubeubh[)qí}qî(hX8Preconditions - CNs are operational - MN is registered hhThhhh^h }qï(h$]h%]h#]h"]h&]uh(K"h)hh]qð(ha)qñ}qò(hX Preconditionsqóhhíhhhheh }qô(h$]h%]h#]h"]h&]uh(K"h]qõh=X Preconditionsqö…q÷}qø(hhóhhñubaubhk)qù}qú(hUh }qû(h$]h%]h#]h"]h&]uhhíh]qücdocutils.nodes bullet_list qý)qþ}qÿ(hUh }r(UbulletrX-h"]h#]h$]h%]h&]uhhùh]r(cdocutils.nodes list_item r)r}r(hXCNs are operational h }r(h$]h%]h#]h"]h&]uhhþh]rhp)r}r (hXCNs are operationalr hjhhhhsh }r (h$]h%]h#]h"]h&]uh(K h]r h=XCNs are operationalr …r}r(hj hjubaubahU list_itemrubj)r}r(hXMN is registered h }r(h$]h%]h#]h"]h&]uhhþh]rhp)r}r(hXMN is registeredrhjhhhhsh }r(h$]h%]h#]h"]h&]uh(K"h]rh=XMN is registeredr…r}r(hjhjubaubahjubehU bullet_listrubahhˆubeubh[)r}r(hX@Triggers - Timed interval - Registration change (not for V0.3) hhThhhh^h }r (h$]h%]h#]h"]h&]uh(K'h)hh]r!(ha)r"}r#(hXTriggersr$hjhhhheh }r%(h$]h%]h#]h"]h&]uh(K'h]r&h=XTriggersr'…r(}r)(hj$hj"ubaubhk)r*}r+(hUh }r,(h$]h%]h#]h"]h&]uhjh]r-hý)r.}r/(hUh }r0(jX-h"]h#]h$]h%]h&]uhj*h]r1(j)r2}r3(hXTimed interval h }r4(h$]h%]h#]h"]h&]uhj.h]r5hp)r6}r7(hXTimed intervalr8hj2hhhhsh }r9(h$]h%]h#]h"]h&]uh(K%h]r:h=XTimed intervalr;…r<}r=(hj8hj6ubaubahjubj)r>}r?(hX#Registration change (not for V0.3) h }r@(h$]h%]h#]h"]h&]uhj.h]rAhp)rB}rC(hX"Registration change (not for V0.3)rDhj>hhhhsh }rE(h$]h%]h#]h"]h&]uh(K'h]rFh=X"Registration change (not for V0.3)rG…rH}rI(hjDhjBubaubahjubehjubahhˆubeubh[)rJ}rK(hX5Post Conditions - Status metadata is updated at CNs hhThhhh^h }rL(h$]h%]h#]h"]h&]uh(K+h)hh]rM(ha)rN}rO(hXPost ConditionsrPhjJhhhheh }rQ(h$]h%]h#]h"]h&]uh(K+h]rRh=XPost ConditionsrS…rT}rU(hjPhjNubaubhk)rV}rW(hUh }rX(h$]h%]h#]h"]h&]uhjJh]rYhý)rZ}r[(hUh }r\(jX-h"]h#]h$]h%]h&]uhjVh]r]j)r^}r_(hX#Status metadata is updated at CNs h }r`(h$]h%]h#]h"]h&]uhjZh]rahp)rb}rc(hX!Status metadata is updated at CNsrdhj^hhhhsh }re(h$]h%]h#]h"]h&]uh(K*h]rfh=X!Status metadata is updated at CNsrg…rh}ri(hjdhjbubaubahjubahjubahhˆubeubeubcdocutils.nodes comment rj)rk}rl(hX¡@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 @endumlhh+hhhUcommentrmh }rn(U xml:spaceroUpreserverph"]h#]h$]h%]h&]uh(KEh)hh]rqh=X¡@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 @endumlrr…rs}rt(hUhjkubaubcdocutils.nodes image ru)rv}rw(hX.. image:: images/10_seq.png hh+hhhUimagerxh }ry(UuriX!design/UseCases/images/10_seq.pngrzh"]h#]h$]h%]U candidatesr{}r|U*jzsh&]uh(KGh)hh]ubhp)r}}r~(hX^*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.hh+hhhhsh }r(h$]h%]h#]h"]h&]uh(KHh)hh]r€(cdocutils.nodes emphasis r)r‚}rƒ(hX *Figure 1.*h }r„(h$]h%]h#]h"]h&]uhj}h]r…h=X Figure 1.r†…r‡}rˆ(hUhj‚ubahUemphasisr‰ubh=XS 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.rŠ…r‹}rŒ(hXS 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.hj}ubeubh)r}rŽ(hX¡.. _history: https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/UseCases/10_uc.txtU referencedrKhh+hhhhh }r(h€hh"]r‘hah#]h$]h%]h&]r’hauh(KOh)hh]ubeubehUU transformerr“NU footnote_refsr”}r•Urefnamesr–}r—h]r˜hzasUsymbol_footnotesr™]ršUautofootnote_refsr›]rœUsymbol_footnote_refsr]ržU citationsrŸ]r h)hU current_liner¡NUtransform_messagesr¢]r£(cdocutils.nodes system_message r¤)r¥}r¦(hUh }r§(h$]UlevelKh"]h#]Usourcehh%]h&]UlineKUtypeUINFOr¨uh]r©hp)rª}r«(hUh }r¬(h$]h%]h#]h"]h&]uhj¥h]r­h=X*Hyperlink target "uc10" is not referenced.r®…r¯}r°(hUhjªubahhsubahUsystem_messager±ubj¤)r²}r³(hUh }r´(h$]UlevelKh"]h#]Usourcehh%]h&]UlineKUtypej¨uh]rµhp)r¶}r·(hUh }r¸(h$]h%]h#]h"]h&]uhj²h]r¹h=X-Hyperlink target "index-0" is not referenced.rº…r»}r¼(hUhj¶ubahhsubahj±ubeUreporterr½NUid_startr¾KU autofootnotesr¿]rÀU citation_refsrÁ}rÂUindirect_targetsrÃ]rÄUsettingsrÅ(cdocutils.frontend Values rÆorÇ}rÈ(Ufootnote_backlinksrÉKUrecord_dependenciesrÊNU rfc_base_urlrËUhttps://tools.ietf.org/html/rÌU tracebackr͈Upep_referencesrÎNUstrip_commentsrÏNU toc_backlinksrÐUentryrÑU language_coderÒUenrÓU datestamprÔNU report_levelrÕKU _destinationrÖNU halt_levelr×KU strip_classesrØNh:NUerror_encoding_error_handlerrÙUbackslashreplacerÚUdebugrÛNUembed_stylesheetr܉Uoutput_encoding_error_handlerrÝUstrictrÞU sectnum_xformrßKUdump_transformsràNU docinfo_xformráKUwarning_streamrâNUpep_file_url_templaterãUpep-%04dräUexit_status_levelråKUconfigræNUstrict_visitorrçNUcloak_email_addressesrèˆUtrim_footnote_reference_spaceré‰UenvrêNUdump_pseudo_xmlrëNUexpose_internalsrìNUsectsubtitle_xformrí‰U source_linkrîNUrfc_referencesrïNUoutput_encodingrðUutf-8rñU source_urlròNUinput_encodingróU utf-8-sigrôU_disable_configrõNU id_prefixröUU tab_widthr÷KUerror_encodingrøUUTF-8rùU_sourcerúhUgettext_compactrûˆU generatorrüNUdump_internalsrýNU smart_quotesrþ‰U pep_base_urlrÿU https://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjÞUauto_id_prefixrUidrUdoctitle_xformr‰Ustrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledr ˆU raw_enabledr KU dump_settingsr NubUsymbol_footnote_startr KUidsr }r(hh+hh+hIhThjuUsubstitution_namesr}rhh)h }r(h$]h"]h#]Usourcehh%]h&]uU footnotesr]rUrefidsr}r(h]rhahI]rhPauub.