Äcdocutils.nodes
document
q)Åq}q(U	nametypesq}q(X���use case 10 - mn status reportsqNX���uc10qàX���historyqà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,(hU�hhhhUexpect_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(hX���Use Case 10 - MN Status Reportsq9hh+hhhUtitleq:h }q;(h$]h%]h#]h"]h&]uh(Kh)hh]q<cdocutils.nodes
Text
q=X���Use Case 10 - MN Status Reportsq>ÖÅq?}q@(hh9hh7ubaubcsphinx.addnodes
index
qA)ÅqB}qC(hU�hh+hhhUindexqDh }qE(h"]h#]h$]h%]h&]UentriesqF]qG((UsingleqHX���Use Case 10Uindex-0qIU�NtqJ(hHX���UC10hIU�NtqK(hHX	���MN StatushIU�NtqL(hHX���statushIU�NtqM(hHX���healthhIU�NtqNeUinlineqOâuh(Kh)hh]ubh)ÅqP}qQ(hU�hh+hhhhh }qR(h"]h#]h$]h%]h&]h'hIuh(Kh)hh]ubcdocutils.nodes
definition_list
qS)ÅqT}qU(hU�hh+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(hU�h }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=X���View document revision qvÖÅqw}qx(hX���View document revision hhqubcdocutils.nodes
reference
qy)Åqz}q{(hX���history_Uresolvedq|KhhqhU	referenceq}h }q~(UnameX���historyqUrefuriqÄXî���https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/UseCases/10_uc.txtqÅh"]h#]h$]h%]h&]uh]qÇh=X���historyqÉÖÅqÑ}qÖ(hU�hhzubaubh=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é(hX���Goalqèhhâhhhheh }qê(h$]h%]h#]h"]h&]uh(K
h]qëh=X���GoalqíÖÅqì}qî(hhèhhçubaubhk)Åqï}qñ(hU�h }qó(h$]h%]h#]h"]h&]uhhâh]qòhp)Åqô}qö(hX���Coordinating 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]qùh=X���Coordinating 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¢(hXm��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.

hhThhhh^h }q£(h$]h%]h#]h"]h&]uh(Kh)hh]q§(ha)Åq•}q¶(hX���Summaryqßhh°hhhheh }q®(h$]h%]h#]h"]h&]uh(Kh]q©h=X���Summaryq™ÖÅq´}q¨(hhßhh•ubaubhk)Åq≠}qÆ(hU�h }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=X���MN_health.getStatus()qΩÖÅqæ}qø(hU�hhπ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=Xç���The 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 (hXç���The 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=X���MN_health.getStatus()qœÖÅq–}q—(hU�hhÀubahh¿ubh=X��� for those metrics.q“ÖÅq”}q‘(hX��� for those metrics.hhƒubeubehhàubeubh[)Åq’}q÷(hX���Actors
CN, MN
hhThhhh^h }q◊(h$]h%]h#]h"]h&]uh(Kh)hh]qÿ(ha)ÅqŸ}q⁄(hX���Actorsq€hh’hhhheh }q‹(h$]h%]h#]h"]h&]uh(Kh]q›h=X���ActorsqfiÖÅqfl}q‡(hh€hhŸubaubhk)Åq·}q‚(hU�h }q„(h$]h%]h#]h"]h&]uhh’h]q‰hp)ÅqÂ}qÊ(hX���CN, MNqÁhh·hhhhsh }qË(h$]h%]h#]h"]h&]uh(Kh]qÈh=X���CN, MNqÍÖÅqÎ}qÏ(hhÁhhÂubaubahhàubeubh[)ÅqÌ}qÓ(hX8���Preconditions
- 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˙(hU�h }q˚(h$]h%]h#]h"]h&]uhhÌh]q¸cdocutils.nodes
bullet_list
q˝)Åq˛}qˇ(hU�h }r���(Ubulletr��X���-h"]h#]h$]h%]h&]uhh˘h]r��(cdocutils.nodes
list_item
r��)År��}r��(hX���CNs are operational
h }r��(h$]h%]h#]h"]h&]uhh˛h]r��hp)År��}r	��(hX���CNs are operationalr
��hj��hhhhsh }r��(h$]h%]h#]h"]h&]uh(K h]r��h=X���CNs are operationalr
��ÖÅr��}r��(hj
��hj��ubaubahU	list_itemr��ubj��)År��}r��(hX���MN is registered
h }r��(h$]h%]h#]h"]h&]uhh˛h]r��hp)År��}r��(hX���MN is registeredr��hj��hhhhsh }r��(h$]h%]h#]h"]h&]uh(K"h]r��h=X���MN is registeredr��ÖÅr��}r��(hj��hj��ubaubahj��ubehUbullet_listr��ubahhà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#��(hX���Triggersr$��hj��hhhheh }r%��(h$]h%]h#]h"]h&]uh(K'h]r&��h=X���Triggersr'��ÖÅr(��}r)��(hj$��hj"��ubaubhk)År*��}r+��(hU�h }r,��(h$]h%]h#]h"]h&]uhj��h]r-��h˝)År.��}r/��(hU�h }r0��(j��X���-h"]h#]h$]h%]h&]uhj*��h]r1��(j��)År2��}r3��(hX���Timed interval
h }r4��(h$]h%]h#]h"]h&]uhj.��h]r5��hp)År6��}r7��(hX���Timed intervalr8��hj2��hhhhsh }r9��(h$]h%]h#]h"]h&]uh(K%h]r:��h=X���Timed intervalr;��ÖÅr<��}r=��(hj8��hj6��ubaubahj��ubj��)År>��}r?��(hX#���Registration change (not for V0.3)
h }r@��(h$]h%]h#]h"]h&]uhj.��h]rA��hp)ÅrB��}rC��(hX"���Registration change (not for V0.3)rD��hj>��hhhhsh }rE��(h$]h%]h#]h"]h&]uh(K'h]rF��h=X"���Registration change (not for V0.3)rG��ÖÅrH��}rI��(hjD��hjB��ubaubahj��ubehj��ubahhàubeubh[)ÅrJ��}rK��(hX5���Post Conditions
- Status metadata is updated at CNs

hhThhhh^h }rL��(h$]h%]h#]h"]h&]uh(K+h)hh]rM��(ha)ÅrN��}rO��(hX���Post ConditionsrP��hjJ��hhhheh }rQ��(h$]h%]h#]h"]h&]uh(K+h]rR��h=X���Post ConditionsrS��ÖÅrT��}rU��(hjP��hjN��ubaubhk)ÅrV��}rW��(hU�h }rX��(h$]h%]h#]h"]h&]uhjJ��h]rY��h˝)ÅrZ��}r[��(hU�h }r\��(j��X���-h"]h#]h$]h%]h&]uhjV��h]r]��j��)År^��}r_��(hX#���Status metadata is updated at CNs

h }r`��(h$]h%]h#]h"]h&]uhjZ��h]ra��hp)Årb��}rc��(hX!���Status metadata is updated at CNsrd��hj^��hhhhsh }re��(h$]h%]h#]h"]h&]uh(K*h]rf��h=X!���Status metadata is updated at CNsrg��ÖÅrh��}ri��(hjd��hjb��ubaubahj��ubahj��ubahhà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+hhhUcommentrm��h }rn��(U	xml:spacero��Upreserverp��h"]h#]h$]h%]h&]uh(KEh)hh]rq��h=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��(hU�hjk��ubaubcdocutils.nodes
image
ru��)Årv��}rw��(hX���.. image:: images/10_seq.png
hh+hhhUimagerx��h }ry��(UuriX!���design/UseCases/images/10_seq.pngrz��h"]h#]h$]h%]U
candidatesr{��}r|��U*jz��sh&]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à��(hU�hjÇ��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
referencedrè��Khh+hhhhh }rê��(hÄhÅh"]rë��hah#]h$]h%]h&]rí��hauh(KOh)hh]ubeubehU�Utransformerrì��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¶��(hU�h }rß��(h$]UlevelKh"]h#]Usourcehh%]h&]UlineKUtypeUINFOr®��uh]r©��hp)År™��}r´��(hU�h }r¨��(h$]h%]h#]h"]h&]uhj•��h]r≠��h=X*���Hyperlink target "uc10" is not referenced.rÆ��ÖÅrØ��}r∞��(hU�hj™��ubahhsubahUsystem_messager±��ubj§��)År≤��}r≥��(hU�h }r¥��(h$]UlevelKh"]h#]Usourcehh%]h&]UlineKUtypej®��uh]rµ��hp)År∂��}r∑��(hU�h }r∏��(h$]h%]h#]h"]h&]uhj≤��h]rπ��h=X-���Hyperlink target "index-0" is not referenced.r∫��ÖÅrª��}rº��(hU�hj∂��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›��Ustrictrfi��U
sectnum_xformrfl��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Ì��âUsource_linkrÓ��NUrfc_referencesrÔ��NUoutput_encodingr��Uutf-8rÒ��U
source_urlrÚ��NUinput_encodingrÛ��U	utf-8-sigrÙ��U_disable_configrı��NU	id_prefixrˆ��U�U	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/r���Usyntax_highlightr��Ulongr��Uinput_encoding_error_handlerr��jfi��Uauto_id_prefixr��Uidr��Udoctitle_xformr��âUstrip_elements_with_classesr��NU
_config_filesr��]Ufile_insertion_enabledr	��àUraw_enabledr
��KU
dump_settingsr��NubUsymbol_footnote_startr��K�Uidsr
��}r��(hh+hh+hIhThj�uUsubstitution_namesr��}r��hh)h }r��(h$]h"]h#]Usourcehh%]h&]uU	footnotesr��]r��Urefidsr��}r��(h]r��hahI]r��hPauub.