€cdocutils.nodes document q)q}q(U nametypesq}q(XgoalqNXtriggersqNXprocessqNXsummaryq NX preconditionsq NXuc41q ˆXuse case 41 - archive an objectq NXpost conditionsq NXactorsqNXexampleqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUgoalqhUtriggersqhUprocessqh Usummaryqh U preconditionsqh Uuc41qh Uuse-case-41-archive-an-objectqh Upost-conditionsq hUactorsq!hUexampleq"uUchildrenq#]q$(cdocutils.nodes target q%)q&}q'(U rawsourceq(X .. _UC41:Uparentq)hUsourceq*Xj/var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/design/UseCases/41_uc.txtq+Utagnameq,Utargetq-U attributesq.}q/(Uidsq0]Ubackrefsq1]Udupnamesq2]Uclassesq3]Unamesq4]Urefidq5huUlineq6KUdocumentq7hh#]ubcdocutils.nodes section q8)q9}q:(h(Uh)hh*h+Uexpect_referenced_by_nameq;}q(h2]h3]h1]h0]q?(hheh4]q@(h h euh6Kh7hUexpect_referenced_by_idqA}qBhh&sh#]qC(cdocutils.nodes title qD)qE}qF(h(XUse Case 41 - Archive an ObjectqGh)h9h*h+h,UtitleqHh.}qI(h2]h3]h1]h0]h4]uh6Kh7hh#]qJcdocutils.nodes Text qKXUse Case 41 - Archive an ObjectqL…qM}qN(h(hGh)hEubaubcsphinx.addnodes index qO)qP}qQ(h(Uh)h9h*h+h,UindexqRh.}qS(h0]h1]h2]h3]h4]UentriesqT]qU((UsingleqVX Use Case 41Uindex-0qWUNtqX(hVXarchivehWUNtqY(hVXUC41hWUNtqZeUinlineq[‰uh6Kh7hh#]ubh%)q\}q](h(Uh)h9h*h+h,h-h.}q^(h0]h1]h2]h3]h4]h5hWuh6Kh7hh#]ubh8)q_}q`(h(Uh)h9h*h+h;}h,h=h.}qa(h2]h3]h1]h0]qb(hhWeh4]qchauh6K h7hhA}qdhWh\sh#]qe(hD)qf}qg(h(XGoalqhh)h_h*h+h,hHh.}qi(h2]h3]h1]h0]h4]uh6K h7hh#]qjhKXGoalqk…ql}qm(h(hhh)hfubaubcdocutils.nodes paragraph qn)qo}qp(h(X|Archive an object so that it is no longer discoverable, but remains accessible by those that already have a reference to it.qqh)h_h*h+h,U paragraphqrh.}qs(h2]h3]h1]h0]h4]uh6K h7hh#]qthKX|Archive an object so that it is no longer discoverable, but remains accessible by those that already have a reference to it.qu…qv}qw(h(hqh)houbaubeubh8)qx}qy(h(Uh)h9h*h+h,h=h.}qz(h2]h3]h1]h0]q{hah4]q|h auh6Kh7hh#]q}(hD)q~}q(h(XSummaryq€h)hxh*h+h,hHh.}q(h2]h3]h1]h0]h4]uh6Kh7hh#]q‚hKXSummaryqƒ…q„}q…(h(h€h)h~ubaubhn)q†}q‡(h(X A content owner or manager would like to prevent further discovery of an object though ensure that references to the object (using its identifier) remain valid.qˆh)hxh*h+h,hrh.}q‰(h2]h3]h1]h0]h4]uh6Kh7hh#]qŠhKX A content owner or manager would like to prevent further discovery of an object though ensure that references to the object (using its identifier) remain valid.q‹…qŒ}q(h(hˆh)h†ubaubhn)qŽ}q(h(X2Transition to an archived state is not reversible.qh)hxh*h+h,hrh.}q‘(h2]h3]h1]h0]h4]uh6Kh7hh#]q’hKX2Transition to an archived state is not reversible.q“…q”}q•(h(hh)hŽubaubhn)q–}q—(h(X`Functionally, archiving an object sets the :attr:`Types.SystemMetadata.archived` property of the associated System Metadata to *True*. The operation is performed by calling :func:`MNStorage.archive` or :func:`CNCore.archive`. Since this operation is an update to System Metadata, :doc:`42_uc` is invoked and the change is propogated through the system.h)hxh*h+h,hrh.}q˜(h2]h3]h1]h0]h4]uh6Kh7hh#]q™(hKX+Functionally, archiving an object sets the qš…q›}qœ(h(X+Functionally, archiving an object sets the h)h–ubcsphinx.addnodes pending_xref q)qž}qŸ(h(X%:attr:`Types.SystemMetadata.archived`q h)h–h*h+h,U pending_xrefq¡h.}q¢(UreftypeXattrUrefwarnq£‰U reftargetq¤XTypes.SystemMetadata.archivedU refdomainXpyq¥h0]h1]U refexplicit‰h2]h3]h4]Urefdocq¦Xdesign/UseCases/41_ucq§Upy:classq¨NU py:moduleq©Nuh6Kh#]qªcdocutils.nodes literal q«)q¬}q­(h(h h.}q®(h2]h3]q¯(Uxrefq°h¥Xpy-attrq±eh1]h0]h4]uh)hžh#]q²hKXTypes.SystemMetadata.archivedq³…q´}qµ(h(Uh)h¬ubah,Uliteralq¶ubaubhKX/ property of the associated System Metadata to q·…q¸}q¹(h(X/ property of the associated System Metadata to h)h–ubcdocutils.nodes emphasis qº)q»}q¼(h(X*True*h.}q½(h2]h3]h1]h0]h4]uh)h–h#]q¾hKXTrueq¿…qÀ}qÁ(h(Uh)h»ubah,UemphasisqÂubhKX(. The operation is performed by calling qÃ…qÄ}qÅ(h(X(. The operation is performed by calling h)h–ubh)qÆ}qÇ(h(X:func:`MNStorage.archive`qÈh)h–h*h+h,h¡h.}qÉ(UreftypeXfunch£‰h¤XMNStorage.archiveU refdomainXpyqÊh0]h1]U refexplicit‰h2]h3]h4]h¦h§h¨Nh©Nuh6Kh#]qËh«)qÌ}qÍ(h(hÈh.}qÎ(h2]h3]qÏ(h°hÊXpy-funcqÐeh1]h0]h4]uh)hÆh#]qÑhKXMNStorage.archive()qÒ…qÓ}qÔ(h(Uh)hÌubah,h¶ubaubhKX or qÕ…qÖ}q×(h(X or h)h–ubh)qØ}qÙ(h(X:func:`CNCore.archive`qÚh)h–h*h+h,h¡h.}qÛ(UreftypeXfunch£‰h¤XCNCore.archiveU refdomainXpyqÜh0]h1]U refexplicit‰h2]h3]h4]h¦h§h¨Nh©Nuh6Kh#]qÝh«)qÞ}qß(h(hÚh.}qà(h2]h3]qá(h°hÜXpy-funcqâeh1]h0]h4]uh)hØh#]qãhKXCNCore.archive()qä…qå}qæ(h(Uh)hÞubah,h¶ubaubhKX8. Since this operation is an update to System Metadata, qç…qè}qé(h(X8. Since this operation is an update to System Metadata, h)h–ubh)qê}që(h(X :doc:`42_uc`qìh)h–h*h+h,h¡h.}qí(UreftypeXdocqîh£ˆh¤X42_ucU refdomainUh0]h1]U refexplicit‰h2]h3]h4]h¦h§uh6Kh#]qïcdocutils.nodes inline qð)qñ}qò(h(hìh.}qó(h2]h3]qô(h°hîeh1]h0]h4]uh)hêh#]qõhKX42_ucqö…q÷}qø(h(Uh)hñubah,h[ubaubhKX< is invoked and the change is propogated through the system.qù…qú}qû(h(X< is invoked and the change is propogated through the system.h)h–ubeubeubh8)qü}qý(h(Uh)h9h*h+h,h=h.}qþ(h2]h3]h1]h0]qÿh!ah4]rhauh6Kh7hh#]r(hD)r}r(h(XActorsrh)hüh*h+h,hHh.}r(h2]h3]h1]h0]h4]uh6Kh7hh#]rhKXActorsr…r}r (h(jh)jubaubcdocutils.nodes bullet_list r )r }r (h(Uh)hüh*h+h,U bullet_listr h.}r(UbulletrX-h0]h1]h2]h3]h4]uh6K!h7hh#]r(cdocutils.nodes list_item r)r}r(h(XAClient, a content manager or owner (must have *write* permission)rh)j h*h+h,U list_itemrh.}r(h2]h3]h1]h0]h4]uh6Nh7hh#]rhn)r}r(h(jh)jh*h+h,hrh.}r(h2]h3]h1]h0]h4]uh6K!h#]r(hKX.Client, a content manager or owner (must have r…r}r(h(X.Client, a content manager or owner (must have h)jubhº)r}r (h(X*write*h.}r!(h2]h3]h1]h0]h4]uh)jh#]r"hKXwriter#…r$}r%(h(Uh)jubah,hÂubhKX permission)r&…r'}r((h(X permission)h)jubeubaubj)r)}r*(h(XCoordinating Noder+h)j h*h+h,jh.}r,(h2]h3]h1]h0]h4]uh6Nh7hh#]r-hn)r.}r/(h(j+h)j)h*h+h,hrh.}r0(h2]h3]h1]h0]h4]uh6K"h#]r1hKXCoordinating Noder2…r3}r4(h(j+h)j.ubaubaubj)r5}r6(h(X Member Node h)j h*h+h,jh.}r7(h2]h3]h1]h0]h4]uh6Nh7hh#]r8hn)r9}r:(h(X Member Noder;h)j5h*h+h,hrh.}r<(h2]h3]h1]h0]h4]uh6K#h#]r=hKX Member Noder>…r?}r@(h(j;h)j9ubaubaubeubcsphinxcontrib.plantuml plantuml rA)rB}rC(h(X9.. uml:: @startuml images/41_uc.png actor "Owner" as client usecase "12. Authentication" as authen note top of authen Authentication may be provided by an external service end note actor "<>" as CN actor "<>" as MN usecase "13. Authorization" as author usecase "41. Archive Object" as archive usecase "42. Update System Metadata" as update client -- archive CN -- archive MN -- archive archive ..> author: <> archive ..> authen: <> archive ..> update: <> @enduml h)hüh*h+h,UplantumlrDh.}rE(h0]h1]h2]h3]h4]UumlrFX@startuml images/41_uc.png actor "Owner" as client usecase "12. Authentication" as authen note top of authen Authentication may be provided by an external service end note actor "<>" as CN actor "<>" as MN usecase "13. Authorization" as author usecase "41. Archive Object" as archive usecase "42. Update System Metadata" as update client -- archive CN -- archive MN -- archive archive ..> author: <> archive ..> authen: <> archive ..> update: <> @endumluh6K;h7hh#]ubhn)rG}rH(h(XX**Figure 1.** Use case 41 diagram showing actors and components involved in this action.h)hüh*h+h,hrh.}rI(h2]h3]h1]h0]h4]uh6K> participant "Replica" as mn <> participant "Coordinating Node" as cn <> app_client -> app_client: Use Case 12.\nAuthenticate note right of mn System Metadata serialVersion = 1 dateSyMetadataModified = t1 end note app_client -> mn:archive(PID) activate app_client activate mn mn -> mn: check write access mn -> mn: archive=true\ndatesysMetadataModified = now() note right of mn System Metadata serialVersion = 1 dateSyMetadataModified = t2 end note mn -> app_client: ack deactivate app_client deactivate mn ... __Possibly Long Wait__ ... note right of cn Coordinating Node detects newere version of System Metadata during the synchronization process, retrieves the updated information, verifies acceptable changes, then updates own copy. This process is documented in Use Case 06. end note mn -> cn: Use Case 06, Synchronization cn ->o]: Use Case 42, Update System Metadata note right of cn The CN ensures that the System Metadata for replicas is updated with the current revision. This is documented in Use Case 42. end note @enduml h)jh*h+h,jDh.}r'(h0]h1]h2]h3]h4]jFX@startuml images/41_seq.png Actor "Client" as app_client << Application >> participant "Replica" as mn <> participant "Coordinating Node" as cn <> app_client -> app_client: Use Case 12.\nAuthenticate note right of mn System Metadata serialVersion = 1 dateSyMetadataModified = t1 end note app_client -> mn:archive(PID) activate app_client activate mn mn -> mn: check write access mn -> mn: archive=true\ndatesysMetadataModified = now() note right of mn System Metadata serialVersion = 1 dateSyMetadataModified = t2 end note mn -> app_client: ack deactivate app_client deactivate mn ... __Possibly Long Wait__ ... note right of cn Coordinating Node detects newere version of System Metadata during the synchronization process, retrieves the updated information, verifies acceptable changes, then updates own copy. This process is documented in Use Case 06. end note mn -> cn: Use Case 06, Synchronization cn ->o]: Use Case 42, Update System Metadata note right of cn The CN ensures that the System Metadata for replicas is updated with the current revision. This is documented in Use Case 42. end note @endumluh6K…h7hh#]ubhn)r(}r)(h(X„*Figure 2.* Sequence diagram for Use Case 41 illustrating the high level sequence of operations associated with archiving an object.h)jh*h+h,hrh.}r*(h2]h3]h1]h0]h4]uh6K†h7hh#]r+(hº)r,}r-(h(X *Figure 2.*h.}r.(h2]h3]h1]h0]h4]uh)j(h#]r/hKX Figure 2.r0…r1}r2(h(Uh)j,ubah,hÂubhKXy Sequence diagram for Use Case 41 illustrating the high level sequence of operations associated with archiving an object.r3…r4}r5(h(Xy Sequence diagram for Use Case 41 illustrating the high level sequence of operations associated with archiving an object.h)j(ubeubeubh8)r6}r7(h(Uh)h9h*h+h,h=h.}r8(h2]h3]h1]h0]r9h"ah4]r:hauh6K‹h7hh#]r;(hD)r<}r=(h(XExampler>h)j6h*h+h,hHh.}r?(h2]h3]h1]h0]h4]uh6K‹h7hh#]r@hKXExamplerA…rB}rC(h(j>h)j<ubaubhn)rD}rE(h(XtUsing ``curl`` to archive an object. ``ANODE`` can be any Member or Coordinating Node that has a copy of the object:h)j6h*h+h,hrh.}rF(h2]h3]h1]h0]h4]uh6Kh7hh#]rG(hKXUsing rH…rI}rJ(h(XUsing h)jDubh«)rK}rL(h(X``curl``h.}rM(h2]h3]h1]h0]h4]uh)jDh#]rNhKXcurlrO…rP}rQ(h(Uh)jKubah,h¶ubhKX to archive an object. rR…rS}rT(h(X to archive an object. h)jDubh«)rU}rV(h(X ``ANODE``h.}rW(h2]h3]h1]h0]h4]uh)jDh#]rXhKXANODErY…rZ}r[(h(Uh)jUubah,h¶ubhKXF can be any Member or Coordinating Node that has a copy of the object:r\…r]}r^(h(XF can be any Member or Coordinating Node that has a copy of the object:h)jDubeubcdocutils.nodes literal_block r_)r`}ra(h(Xª# The member node base URL NODE="https://my.mn.org/base/url" # A client certificate with a subject that has write permission on the object CERT="my_client_certificate.pem" # The identifier of the object to be archived. PID="object.identifier" # The provided identifier must be properly URL path encoded EPID=URL_Encode(PID) # Invoke the archive operation on the identifier curl -E ${CERT} -X PUT "$NODE/V1/archive/${EPID}"h)j6h*h+h,U literal_blockrbh.}rc(Ulinenosrd‰UlanguagereXbashU xml:spacerfUpreservergh0]h1]h2]Uhighlight_argsrh}h3]h4]uh6Kh7hh#]rihKXª# The member node base URL NODE="https://my.mn.org/base/url" # A client certificate with a subject that has write permission on the object CERT="my_client_certificate.pem" # The identifier of the object to be archived. PID="object.identifier" # The provided identifier must be properly URL path encoded EPID=URL_Encode(PID) # Invoke the archive operation on the identifier curl -E ${CERT} -X PUT "$NODE/V1/archive/${EPID}"rj…rk}rl(h(Uh)j`ubaubeubeubeh(UU transformerrmNU footnote_refsrn}roUrefnamesrp}rqUsymbol_footnotesrr]rsUautofootnote_refsrt]ruUsymbol_footnote_refsrv]rwU citationsrx]ryh7hU current_linerzNUtransform_messagesr{]r|(cdocutils.nodes system_message r})r~}r(h(Uh.}r€(h2]UlevelKh0]h1]Usourceh+h3]h4]UlineKUtypeUINFOruh#]r‚hn)rƒ}r„(h(Uh.}r…(h2]h3]h1]h0]h4]uh)j~h#]r†hKX*Hyperlink target "uc41" is not referenced.r‡…rˆ}r‰(h(Uh)jƒubah,hrubah,Usystem_messagerŠubj})r‹}rŒ(h(Uh.}r(h2]UlevelKh0]h1]Usourceh+h3]h4]UlineKUtypejuh#]rŽhn)r}r(h(Uh.}r‘(h2]h3]h1]h0]h4]uh)j‹h#]r’hKX-Hyperlink target "index-0" is not referenced.r“…r”}r•(h(Uh)jubah,hrubah,jŠubeUreporterr–NUid_startr—KU autofootnotesr˜]r™U citation_refsrš}r›Uindirect_targetsrœ]rUsettingsrž(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±NhHNUerror_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Óh+Ugettext_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Üj·Uauto_id_prefixrÝUidrÞUdoctitle_xformr߉Ustrip_elements_with_classesràNU _config_filesrá]Ufile_insertion_enabledrâˆU raw_enabledrãKU dump_settingsräNubUsymbol_footnote_startråKUidsræ}rç(h jÅhh_hj™hjhh9hhxh!hühh9hWh_hjWh"j6uUsubstitution_namesrè}réh,h7h.}rê(h2]h0]h1]Usourceh+h3]h4]uU footnotesrë]rìUrefidsrí}rî(hW]rïh\ah]rðh&auub.