€cdocutils.nodes document q)q}q(U nametypesq}q(Xobject replication policyqNXsummary of replication processqNXreplication overviewqNXnode replication policyq NXreplicationoverviewq ˆXhistoryq ˆuUsubstitution_defsq }q Uparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUobject-replication-policyqhUsummary-of-replication-processqhUreplication-overviewqh Unode-replication-policyqh Ureplicationoverviewqh UhistoryquUchildrenq]q(cdocutils.nodes target q)q}q(U rawsourceq X.. _ReplicationOverview:Uparentq!hUsourceq"Xo/var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/design/ReplicationOverview.txtq#Utagnameq$Utargetq%U attributesq&}q'(Uidsq(]Ubackrefsq)]Udupnamesq*]Uclassesq+]Unamesq,]Urefidq-huUlineq.KUdocumentq/hh]ubcdocutils.nodes section q0)q1}q2(h Uh!hh"h#Uexpect_referenced_by_nameq3}q4h hsh$Usectionq5h&}q6(h*]h+]h)]h(]q7(hheh,]q8(hh euh.Kh/hUexpect_referenced_by_idq9}q:hhsh]q;(cdocutils.nodes title q<)q=}q>(h XReplication Overviewq?h!h1h"h#h$Utitleq@h&}qA(h*]h+]h)]h(]h,]uh.Kh/hh]qBcdocutils.nodes Text qCXReplication OverviewqD…qE}qF(h h?h!h=ubaubcsphinx.addnodes index qG)qH}qI(h Uh!h1h"h#h$UindexqJh&}qK(h(]h)]h*]h+]h,]UentriesqL]qM((UsingleqNX Use Case 09Uindex-0qOUNtqP(hNXUC09hOUNtqQ(hNX Replicate MNhOUNtqR(hNX replicatehOUNtqSeUinlineqT‰uh.Kh/hh]ubh)qU}qV(h Uh!h1h"h#h$h%h&}qW(h(]h)]h*]h+]h,]h-hOuh.Kh/hh]ubcdocutils.nodes definition_list qX)qY}qZ(h Uh!h1h"h#h3}h$Udefinition_listq[h&}q\(h*]h+]h)]h(]q]hOah,]uh.Nh/hh9}q^hOhUsh]q_cdocutils.nodes definition_list_item q`)qa}qb(h X4Revision History View document revision history_. h!hYh"h#h$Udefinition_list_itemqch&}qd(h*]h+]h)]h(]h,]uh.K h]qe(cdocutils.nodes term qf)qg}qh(h XRevision Historyqih!hah"h#h$Utermqjh&}qk(h*]h+]h)]h(]h,]uh.K h]qlhCXRevision Historyqm…qn}qo(h hih!hgubaubcdocutils.nodes definition qp)qq}qr(h Uh&}qs(h*]h+]h)]h(]h,]uh!hah]qtcdocutils.nodes paragraph qu)qv}qw(h X View document revision history_.h!hqh"h#h$U paragraphqxh&}qy(h*]h+]h)]h(]h,]uh.K h]qz(hCXView document revision q{…q|}q}(h XView document revision h!hvubcdocutils.nodes reference q~)q}q€(h Xhistory_UresolvedqKh!hvh$U referenceq‚h&}qƒ(UnameXhistoryq„Urefuriq…X™https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/ReplicationOverview.txtq†h(]h)]h*]h+]h,]uh]q‡hCXhistoryqˆ…q‰}qŠ(h Uh!hubaubhCX.…q‹}qŒ(h X.h!hvubeubah$U definitionqubeubaubhu)qŽ}q(h XòDataONE provides replication services to satisfy both data and metadata preservation needs and to provide the potential for fault-tolerance and load balancing services for data and metadata access. Tier 4 Member Nodes within the federation are set up to house replicas of content, and provide this service to other Member Nodes based on certain policy agreements. Replication is handled on a per-object basis within DataONE, with the RightsHolder and/or Authoritative Member Node controlling the ReplicationPolicy for each object, which determines whether it will be replicated. In addition, each Member Node decides whether it will accept replicas in general (by supporting the Tier 4 :class:`CNReplication` API and setting `replicate=true`), and can decide whether it will accept any given request to replicate an object. Coordinating Nodes monitor the :class:`Types.ReplicationPolicy` for each object in DataONE, and ensure that the appropriate :term:`replication target` nodes house an accurate replica of the object. Each replica of an object is recorded by the Coordinating Nodes, so when a consumer wishes to retrieve the object, they can use :func:`CNRead.resolve` to list the replicas and :func:`MNRead.get` to retrieve any of the replicas in the network.qh!h1h"h#h$hxh&}q‘(h*]h+]h)]h(]h,]uh.K h/hh]q’(hCX°DataONE provides replication services to satisfy both data and metadata preservation needs and to provide the potential for fault-tolerance and load balancing services for data and metadata access. Tier 4 Member Nodes within the federation are set up to house replicas of content, and provide this service to other Member Nodes based on certain policy agreements. Replication is handled on a per-object basis within DataONE, with the RightsHolder and/or Authoritative Member Node controlling the ReplicationPolicy for each object, which determines whether it will be replicated. In addition, each Member Node decides whether it will accept replicas in general (by supporting the Tier 4 q“…q”}q•(h X°DataONE provides replication services to satisfy both data and metadata preservation needs and to provide the potential for fault-tolerance and load balancing services for data and metadata access. Tier 4 Member Nodes within the federation are set up to house replicas of content, and provide this service to other Member Nodes based on certain policy agreements. Replication is handled on a per-object basis within DataONE, with the RightsHolder and/or Authoritative Member Node controlling the ReplicationPolicy for each object, which determines whether it will be replicated. In addition, each Member Node decides whether it will accept replicas in general (by supporting the Tier 4 h!hŽubcsphinx.addnodes pending_xref q–)q—}q˜(h X:class:`CNReplication`q™h!hŽh"h#h$U pending_xrefqšh&}q›(UreftypeXclassUrefwarnqœ‰U reftargetqX CNReplicationU refdomainXpyqžh(]h)]U refexplicit‰h*]h+]h,]UrefdocqŸXdesign/ReplicationOverviewq Upy:classq¡NU py:moduleq¢Nuh.K h]q£cdocutils.nodes literal q¤)q¥}q¦(h h™h&}q§(h*]h+]q¨(Uxrefq©hžXpy-classqªeh)]h(]h,]uh!h—h]q«hCX CNReplicationq¬…q­}q®(h Uh!h¥ubah$Uliteralq¯ubaubhCX API and setting q°…q±}q²(h X API and setting h!hŽubcdocutils.nodes title_reference q³)q´}qµ(h X`replicate=true`h&}q¶(h*]h+]h)]h(]h,]uh!hŽh]q·hCXreplicate=trueq¸…q¹}qº(h Uh!h´ubah$Utitle_referenceq»ubhCXr), and can decide whether it will accept any given request to replicate an object. Coordinating Nodes monitor the q¼…q½}q¾(h Xr), and can decide whether it will accept any given request to replicate an object. Coordinating Nodes monitor the h!hŽubh–)q¿}qÀ(h X :class:`Types.ReplicationPolicy`qÁh!hŽh"h#h$hšh&}qÂ(UreftypeXclasshœ‰hXTypes.ReplicationPolicyU refdomainXpyqÃh(]h)]U refexplicit‰h*]h+]h,]hŸh h¡Nh¢Nuh.K h]qÄh¤)qÅ}qÆ(h hÁh&}qÇ(h*]h+]qÈ(h©hÃXpy-classqÉeh)]h(]h,]uh!h¿h]qÊhCXTypes.ReplicationPolicyqË…qÌ}qÍ(h Uh!hÅubah$h¯ubaubhCX= for each object in DataONE, and ensure that the appropriate qÎ…qÏ}qÐ(h X= for each object in DataONE, and ensure that the appropriate h!hŽubh–)qÑ}qÒ(h X:term:`replication target`qÓh!hŽh"h#h$hšh&}qÔ(UreftypeXtermhœˆhXreplication targetU refdomainXstdqÕh(]h)]U refexplicit‰h*]h+]h,]hŸh uh.K h]qÖcdocutils.nodes inline q×)qØ}qÙ(h hÓh&}qÚ(h*]h+]qÛ(h©hÕXstd-termqÜeh)]h(]h,]uh!hÑh]qÝhCXreplication targetqÞ…qß}qà(h Uh!hØubah$hTubaubhCX° nodes house an accurate replica of the object. Each replica of an object is recorded by the Coordinating Nodes, so when a consumer wishes to retrieve the object, they can use qá…qâ}qã(h X° nodes house an accurate replica of the object. Each replica of an object is recorded by the Coordinating Nodes, so when a consumer wishes to retrieve the object, they can use h!hŽubh–)qä}qå(h X:func:`CNRead.resolve`qæh!hŽh"h#h$hšh&}qç(UreftypeXfunchœ‰hXCNRead.resolveU refdomainXpyqèh(]h)]U refexplicit‰h*]h+]h,]hŸh h¡Nh¢Nuh.K h]qéh¤)qê}që(h hæh&}qì(h*]h+]qí(h©hèXpy-funcqîeh)]h(]h,]uh!häh]qïhCXCNRead.resolve()qð…qñ}qò(h Uh!hêubah$h¯ubaubhCX to list the replicas and qó…qô}qõ(h X to list the replicas and h!hŽubh–)qö}q÷(h X:func:`MNRead.get`qøh!hŽh"h#h$hšh&}qù(UreftypeXfunchœ‰hX MNRead.getU refdomainXpyqúh(]h)]U refexplicit‰h*]h+]h,]hŸh h¡Nh¢Nuh.K h]qûh¤)qü}qý(h høh&}qþ(h*]h+]qÿ(h©húXpy-funcreh)]h(]h,]uh!höh]rhCX MNRead.get()r…r}r(h Uh!hüubah$h¯ubaubhCX0 to retrieve any of the replicas in the network.r…r}r(h X0 to retrieve any of the replicas in the network.h!hŽubeubh0)r}r (h Uh!h1h"h#h$h5h&}r (h*]h+]h)]h(]r hah,]r hauh.Kh/hh]r (h<)r}r(h XSummary of Replication processrh!jh"h#h$h@h&}r(h*]h+]h)]h(]h,]uh.Kh/hh]rhCXSummary of Replication processr…r}r(h jh!jubaubhu)r}r(h XîTo fulfill the :class:`Types.ReplicationPolicy` for each object, the CN schedules each object to be replicated with one of the Tier 4 MNs that are willing to host replicas. Replication is an asynchronous, multi-step process, in order to allow for non-blocking replication of objects that would take more than a few seconds to copy over the network. The process originates with 1) the CN calling :func:`MNReplication.replicate` on the target MN, which is a request for the MN to replicate a particular object. The MN responds with a HTTP 200 if it is willing and able to attempt the replication and house the object, and the CN marks the replica request as REQUESTED. See :class:`Types.ReplicationStatus` for the definition of the status values. Then, 2) the target MN calls the source :func:`MNRead.getReplica` to request the bytes of the object, and if they are transferred correctly, then 3) calls :func:`CNReplication.setReplicationStatus` to indicate that the request has been COMPLETED, or if it FAILED. At this point the replication is finished. If the replication fails, the CN then requests that it be replicated elsewhere. If it succeeds, the CN will check in periodically with the MN to verify the checksum of the object held to confirm validity.rh!jh"h#h$hxh&}r(h*]h+]h)]h(]h,]uh.Kh/hh]r(hCXTo fulfill the r…r}r(h XTo fulfill the h!jubh–)r}r(h X :class:`Types.ReplicationPolicy`r h!jh"h#h$hšh&}r!(UreftypeXclasshœ‰hXTypes.ReplicationPolicyU refdomainXpyr"h(]h)]U refexplicit‰h*]h+]h,]hŸh h¡Nh¢Nuh.Kh]r#h¤)r$}r%(h j h&}r&(h*]h+]r'(h©j"Xpy-classr(eh)]h(]h,]uh!jh]r)hCXTypes.ReplicationPolicyr*…r+}r,(h Uh!j$ubah$h¯ubaubhCX^ for each object, the CN schedules each object to be replicated with one of the Tier 4 MNs that are willing to host replicas. Replication is an asynchronous, multi-step process, in order to allow for non-blocking replication of objects that would take more than a few seconds to copy over the network. The process originates with 1) the CN calling r-…r.}r/(h X^ for each object, the CN schedules each object to be replicated with one of the Tier 4 MNs that are willing to host replicas. Replication is an asynchronous, multi-step process, in order to allow for non-blocking replication of objects that would take more than a few seconds to copy over the network. The process originates with 1) the CN calling h!jubh–)r0}r1(h X:func:`MNReplication.replicate`r2h!jh"h#h$hšh&}r3(UreftypeXfunchœ‰hXMNReplication.replicateU refdomainXpyr4h(]h)]U refexplicit‰h*]h+]h,]hŸh h¡Nh¢Nuh.Kh]r5h¤)r6}r7(h j2h&}r8(h*]h+]r9(h©j4Xpy-funcr:eh)]h(]h,]uh!j0h]r;hCXMNReplication.replicate()r<…r=}r>(h Uh!j6ubah$h¯ubaubhCXö on the target MN, which is a request for the MN to replicate a particular object. The MN responds with a HTTP 200 if it is willing and able to attempt the replication and house the object, and the CN marks the replica request as REQUESTED. See r?…r@}rA(h Xö on the target MN, which is a request for the MN to replicate a particular object. The MN responds with a HTTP 200 if it is willing and able to attempt the replication and house the object, and the CN marks the replica request as REQUESTED. See h!jubh–)rB}rC(h X :class:`Types.ReplicationStatus`rDh!jh"h#h$hšh&}rE(UreftypeXclasshœ‰hXTypes.ReplicationStatusU refdomainXpyrFh(]h)]U refexplicit‰h*]h+]h,]hŸh h¡Nh¢Nuh.Kh]rGh¤)rH}rI(h jDh&}rJ(h*]h+]rK(h©jFXpy-classrLeh)]h(]h,]uh!jBh]rMhCXTypes.ReplicationStatusrN…rO}rP(h Uh!jHubah$h¯ubaubhCXR for the definition of the status values. Then, 2) the target MN calls the source rQ…rR}rS(h XR for the definition of the status values. Then, 2) the target MN calls the source h!jubh–)rT}rU(h X:func:`MNRead.getReplica`rVh!jh"h#h$hšh&}rW(UreftypeXfunchœ‰hXMNRead.getReplicaU refdomainXpyrXh(]h)]U refexplicit‰h*]h+]h,]hŸh h¡Nh¢Nuh.Kh]rYh¤)rZ}r[(h jVh&}r\(h*]h+]r](h©jXXpy-funcr^eh)]h(]h,]uh!jTh]r_hCXMNRead.getReplica()r`…ra}rb(h Uh!jZubah$h¯ubaubhCXZ to request the bytes of the object, and if they are transferred correctly, then 3) calls rc…rd}re(h XZ to request the bytes of the object, and if they are transferred correctly, then 3) calls h!jubh–)rf}rg(h X*:func:`CNReplication.setReplicationStatus`rhh!jh"h#h$hšh&}ri(UreftypeXfunchœ‰hX"CNReplication.setReplicationStatusU refdomainXpyrjh(]h)]U refexplicit‰h*]h+]h,]hŸh h¡Nh¢Nuh.Kh]rkh¤)rl}rm(h jhh&}rn(h*]h+]ro(h©jjXpy-funcrpeh)]h(]h,]uh!jfh]rqhCX$CNReplication.setReplicationStatus()rr…rs}rt(h Uh!jlubah$h¯ubaubhCX= to indicate that the request has been COMPLETED, or if it FAILED. At this point the replication is finished. If the replication fails, the CN then requests that it be replicated elsewhere. If it succeeds, the CN will check in periodically with the MN to verify the checksum of the object held to confirm validity.ru…rv}rw(h X= to indicate that the request has been COMPLETED, or if it FAILED. At this point the replication is finished. If the replication fails, the CN then requests that it be replicated elsewhere. If it succeeds, the CN will check in periodically with the MN to verify the checksum of the object held to confirm validity.h!jubeubeubh0)rx}ry(h Uh!h1h"h#h$h5h&}rz(h*]h+]h)]h(]r{hah,]r|hauh.Kh/hh]r}(h<)r~}r(h XObject Replication Policyr€h!jxh"h#h$h@h&}r(h*]h+]h)]h(]h,]uh.Kh/hh]r‚hCXObject Replication Policyrƒ…r„}r…(h j€h!j~ubaubhu)r†}r‡(h XThe :class:`Types.ReplicationPolicy` for an object defines if replication should be attempted for this object, and if so, how many replicas should be maintained. It also permits specification of preferred and blocked nodes as potential replication targets.rˆh!jxh"h#h$hxh&}r‰(h*]h+]h)]h(]h,]uh.Kh/hh]rŠ(hCXThe r‹…rŒ}r(h XThe h!j†ubh–)rŽ}r(h X :class:`Types.ReplicationPolicy`rh!j†h"h#h$hšh&}r‘(UreftypeXclasshœ‰hXTypes.ReplicationPolicyU refdomainXpyr’h(]h)]U refexplicit‰h*]h+]h,]hŸh h¡Nh¢Nuh.Kh]r“h¤)r”}r•(h jh&}r–(h*]h+]r—(h©j’Xpy-classr˜eh)]h(]h,]uh!jŽh]r™hCXTypes.ReplicationPolicyrš…r›}rœ(h Uh!j”ubah$h¯ubaubhCXÜ for an object defines if replication should be attempted for this object, and if so, how many replicas should be maintained. It also permits specification of preferred and blocked nodes as potential replication targets.r…rž}rŸ(h XÜ for an object defines if replication should be attempted for this object, and if so, how many replicas should be maintained. It also permits specification of preferred and blocked nodes as potential replication targets.h!j†ubeubhu)r }r¡(h XIf a ReplicationPolicy is provided in the :term:`System Metadata` for an object, then that policy is followed precisely by the Coordinating Nodes when managing replication. In the absence of a defined ReplicationPolicy for an object, DataONE will by default attempt to maintain two replicas for the object, as long as the object's size is below a threshold size that would allow transfer over networks in reasonable time periods. As network transfer capabilities improve among DataONE nodes, this threshold size will be increased.r¢h!jxh"h#h$hxh&}r£(h*]h+]h)]h(]h,]uh.Kh/hh]r¤(hCX*If a ReplicationPolicy is provided in the r¥…r¦}r§(h X*If a ReplicationPolicy is provided in the h!j ubh–)r¨}r©(h X:term:`System Metadata`rªh!j h"h#h$hšh&}r«(UreftypeXtermhœˆhXsystem metadataU refdomainXstdr¬h(]h)]U refexplicit‰h*]h+]h,]hŸh uh.Kh]r­h×)r®}r¯(h jªh&}r°(h*]h+]r±(h©j¬Xstd-termr²eh)]h(]h,]uh!j¨h]r³hCXSystem Metadatar´…rµ}r¶(h Uh!j®ubah$hTubaubhCXÒ for an object, then that policy is followed precisely by the Coordinating Nodes when managing replication. In the absence of a defined ReplicationPolicy for an object, DataONE will by default attempt to maintain two replicas for the object, as long as the object's size is below a threshold size that would allow transfer over networks in reasonable time periods. As network transfer capabilities improve among DataONE nodes, this threshold size will be increased.r·…r¸}r¹(h XÒ for an object, then that policy is followed precisely by the Coordinating Nodes when managing replication. In the absence of a defined ReplicationPolicy for an object, DataONE will by default attempt to maintain two replicas for the object, as long as the object's size is below a threshold size that would allow transfer over networks in reasonable time periods. As network transfer capabilities improve among DataONE nodes, this threshold size will be increased.h!j ubeubcdocutils.nodes literal_block rº)r»}r¼(h X urn:node:KNB urn:node:PISCO urn:node:SOMEBADNODE h!jxh"h#h$U literal_blockr½h&}r¾(Ulinenosr¿‰UlanguagerÀXxmlU xml:spacerÁUpreserverÂh(]h)]h*]Uhighlight_argsrÃ}h+]h,]uh.Kh/hh]rÄhCX urn:node:KNB urn:node:PISCO urn:node:SOMEBADNODE rÅ…rÆ}rÇ(h Uh!j»ubaubeubh0)rÈ}rÉ(h Uh!h1h"h#h$h5h&}rÊ(h*]h+]h)]h(]rËhah,]rÌh auh.K"h/hh]rÍ(h<)rÎ}rÏ(h XNode Replication PolicyrÐh!jÈh"h#h$h@h&}rÑ(h*]h+]h)]h(]h,]uh.K"h/hh]rÒhCXNode Replication PolicyrÓ…rÔ}rÕ(h jÐh!jÎubaubhu)rÖ}r×(h XSNodes that wish to serve as a replication target and thereby are available to store replicas of data from around the network set :attr:`Types.Node.replicate` to 'true' in their :class:`Types.Node` description when registering their node. In addition, these nodes must support the Tier 4 :class:`CNReplication` API to allow Coordinating Nodes to perform all necessary operations. Nodes can express constraints on object size, total replication space available, source nodes, and object format types that a node will replicate by providing a :class:`Types.NodeReplicationPolicy` as part of a it's :class:`Types.Node` description. A node may choose to restrict replication from only certain peer nodes, may have file size limits, total allocated size limits, or may want to focus on being a :term:`replication target` for domain-specific object formats.rØh!jÈh"h#h$hxh&}rÙ(h*]h+]h)]h(]h,]uh.K#h/hh]rÚ(hCXNodes that wish to serve as a replication target and thereby are available to store replicas of data from around the network set rÛ…rÜ}rÝ(h XNodes that wish to serve as a replication target and thereby are available to store replicas of data from around the network set h!jÖubh–)rÞ}rß(h X:attr:`Types.Node.replicate`ràh!jÖh"h#h$hšh&}rá(UreftypeXattrhœ‰hXTypes.Node.replicateU refdomainXpyrâh(]h)]U refexplicit‰h*]h+]h,]hŸh h¡Nh¢Nuh.K#h]rãh¤)rä}rå(h jàh&}ræ(h*]h+]rç(h©jâXpy-attrrèeh)]h(]h,]uh!jÞh]réhCXTypes.Node.replicaterê…rë}rì(h Uh!jäubah$h¯ubaubhCX to 'true' in their rí…rî}rï(h X to 'true' in their h!jÖubh–)rð}rñ(h X:class:`Types.Node`ròh!jÖh"h#h$hšh&}ró(UreftypeXclasshœ‰hX Types.NodeU refdomainXpyrôh(]h)]U refexplicit‰h*]h+]h,]hŸh h¡Nh¢Nuh.K#h]rõh¤)rö}r÷(h jòh&}rø(h*]h+]rù(h©jôXpy-classrúeh)]h(]h,]uh!jðh]rûhCX Types.Noderü…rý}rþ(h Uh!jöubah$h¯ubaubhCX[ description when registering their node. In addition, these nodes must support the Tier 4 rÿ…r}r(h X[ description when registering their node. In addition, these nodes must support the Tier 4 h!jÖubh–)r}r(h X:class:`CNReplication`rh!jÖh"h#h$hšh&}r(UreftypeXclasshœ‰hX CNReplicationU refdomainXpyrh(]h)]U refexplicit‰h*]h+]h,]hŸh h¡Nh¢Nuh.K#h]rh¤)r}r (h jh&}r (h*]h+]r (h©jXpy-classr eh)]h(]h,]uh!jh]r hCX CNReplicationr…r}r(h Uh!jubah$h¯ubaubhCXè API to allow Coordinating Nodes to perform all necessary operations. Nodes can express constraints on object size, total replication space available, source nodes, and object format types that a node will replicate by providing a r…r}r(h Xè API to allow Coordinating Nodes to perform all necessary operations. Nodes can express constraints on object size, total replication space available, source nodes, and object format types that a node will replicate by providing a h!jÖubh–)r}r(h X$:class:`Types.NodeReplicationPolicy`rh!jÖh"h#h$hšh&}r(UreftypeXclasshœ‰hXTypes.NodeReplicationPolicyU refdomainXpyrh(]h)]U refexplicit‰h*]h+]h,]hŸh h¡Nh¢Nuh.K#h]rh¤)r}r(h jh&}r(h*]h+]r(h©jXpy-classreh)]h(]h,]uh!jh]rhCXTypes.NodeReplicationPolicyr …r!}r"(h Uh!jubah$h¯ubaubhCX as part of a it's r#…r$}r%(h X as part of a it's h!jÖubh–)r&}r'(h X:class:`Types.Node`r(h!jÖh"h#h$hšh&}r)(UreftypeXclasshœ‰hX Types.NodeU refdomainXpyr*h(]h)]U refexplicit‰h*]h+]h,]hŸh h¡Nh¢Nuh.K#h]r+h¤)r,}r-(h j(h&}r.(h*]h+]r/(h©j*Xpy-classr0eh)]h(]h,]uh!j&h]r1hCX Types.Noder2…r3}r4(h Uh!j,ubah$h¯ubaubhCX® description. A node may choose to restrict replication from only certain peer nodes, may have file size limits, total allocated size limits, or may want to focus on being a r5…r6}r7(h X® description. A node may choose to restrict replication from only certain peer nodes, may have file size limits, total allocated size limits, or may want to focus on being a h!jÖubh–)r8}r9(h X:term:`replication target`r:h!jÖh"h#h$hšh&}r;(UreftypeXtermhœˆhXreplication targetU refdomainXstdr<h(]h)]U refexplicit‰h*]h+]h,]hŸh uh.K#h]r=h×)r>}r?(h j:h&}r@(h*]h+]rA(h©j<Xstd-termrBeh)]h(]h,]uh!j8h]rChCXreplication targetrD…rE}rF(h Uh!j>ubah$hTubaubhCX$ for domain-specific object formats.rG…rH}rI(h X$ for domain-specific object formats.h!jÖubeubjº)rJ}rK(h Xæ 524288000 1099511627776 urn:node:KNB urn:node:ESA urn:node:SANPARKS FGDC-STD-001.1-1999 eml://ecoinformatics.org/eml-2.1.1 text/csv h!jÈh"h#h$j½h&}rL(j¿‰jÀXxmljÁjÂh(]h)]h*]jÃ}h+]h,]uh.K%h/hh]rMhCXæ 524288000 1099511627776 urn:node:KNB urn:node:ESA urn:node:SANPARKS FGDC-STD-001.1-1999 eml://ecoinformatics.org/eml-2.1.1 text/csv rN…rO}rP(h Uh!jJubaubhu)rQ}rR(h XThe :attr:`Types.NodeReplicationPolicy.maxObjectSize` indicates the maximum allowable size of an object to be replicated in bytes. The :attr:`Types.NodeReplicationPolicy.spaceAllocated` field sets an upper limit on space usage for replica storage on the given node. Once the spaceAllocated has been reached for a node, the Coordinating Nodes will no longer request that additional replicas be stored on that node. :attr:`Types.NodeReplicationPolicy.allowedNode` is used to list all nodes that are allowed to replicate to the target. If it is absent, then any node may replicate to the target. :attr:`Types.NodeReplicationPolicy.allowedObjectFormat` is used to list all object formats that may be replicated to the target. If it is absent, then any object format may be replicated to the target.rSh!jÈh"h#h$hxh&}rT(h*]h+]h)]h(]h,]uh.K2h/hh]rU(hCXThe rV…rW}rX(h XThe h!jQubh–)rY}rZ(h X1:attr:`Types.NodeReplicationPolicy.maxObjectSize`r[h!jQh"h#h$hšh&}r\(UreftypeXattrhœ‰hX)Types.NodeReplicationPolicy.maxObjectSizeU refdomainXpyr]h(]h)]U refexplicit‰h*]h+]h,]hŸh h¡Nh¢Nuh.K2h]r^h¤)r_}r`(h j[h&}ra(h*]h+]rb(h©j]Xpy-attrrceh)]h(]h,]uh!jYh]rdhCX)Types.NodeReplicationPolicy.maxObjectSizere…rf}rg(h Uh!j_ubah$h¯ubaubhCXS indicates the maximum allowable size of an object to be replicated in bytes. The rh…ri}rj(h XS indicates the maximum allowable size of an object to be replicated in bytes. The h!jQubh–)rk}rl(h X2:attr:`Types.NodeReplicationPolicy.spaceAllocated`rmh!jQh"h#h$hšh&}rn(UreftypeXattrhœ‰hX*Types.NodeReplicationPolicy.spaceAllocatedU refdomainXpyroh(]h)]U refexplicit‰h*]h+]h,]hŸh h¡Nh¢Nuh.K2h]rph¤)rq}rr(h jmh&}rs(h*]h+]rt(h©joXpy-attrrueh)]h(]h,]uh!jkh]rvhCX*Types.NodeReplicationPolicy.spaceAllocatedrw…rx}ry(h Uh!jqubah$h¯ubaubhCXæ field sets an upper limit on space usage for replica storage on the given node. Once the spaceAllocated has been reached for a node, the Coordinating Nodes will no longer request that additional replicas be stored on that node. rz…r{}r|(h Xæ field sets an upper limit on space usage for replica storage on the given node. Once the spaceAllocated has been reached for a node, the Coordinating Nodes will no longer request that additional replicas be stored on that node. h!jQubh–)r}}r~(h X/:attr:`Types.NodeReplicationPolicy.allowedNode`rh!jQh"h#h$hšh&}r€(UreftypeXattrhœ‰hX'Types.NodeReplicationPolicy.allowedNodeU refdomainXpyrh(]h)]U refexplicit‰h*]h+]h,]hŸh h¡Nh¢Nuh.K2h]r‚h¤)rƒ}r„(h jh&}r…(h*]h+]r†(h©jXpy-attrr‡eh)]h(]h,]uh!j}h]rˆhCX'Types.NodeReplicationPolicy.allowedNoder‰…rŠ}r‹(h Uh!jƒubah$h¯ubaubhCX… is used to list all nodes that are allowed to replicate to the target. If it is absent, then any node may replicate to the target. rŒ…r}rŽ(h X… is used to list all nodes that are allowed to replicate to the target. If it is absent, then any node may replicate to the target. h!jQubh–)r}r(h X7:attr:`Types.NodeReplicationPolicy.allowedObjectFormat`r‘h!jQh"h#h$hšh&}r’(UreftypeXattrhœ‰hX/Types.NodeReplicationPolicy.allowedObjectFormatU refdomainXpyr“h(]h)]U refexplicit‰h*]h+]h,]hŸh h¡Nh¢Nuh.K2h]r”h¤)r•}r–(h j‘h&}r—(h*]h+]r˜(h©j“Xpy-attrr™eh)]h(]h,]uh!jh]ršhCX/Types.NodeReplicationPolicy.allowedObjectFormatr›…rœ}r(h Uh!j•ubah$h¯ubaubhCX“ is used to list all object formats that may be replicated to the target. If it is absent, then any object format may be replicated to the target.rž…rŸ}r (h X“ is used to list all object formats that may be replicated to the target. If it is absent, then any object format may be replicated to the target.h!jQubeubcdocutils.nodes note r¡)r¢}r£(h Xz:class:`Types.NodeReplicationPolicy` is not currently implemented on the CN and so is ignored when making decisions as to which MN should be used for replication. In a future release, the CN scheduler will utilize the :class:`Types.NodeReplicationPolicy` to limit the types of objects that are scheduled to be replicated to a MN, but for now the information is not used at all.r¤h!jÈh"h#h$Unoter¥h&}r¦(h*]h+]h)]h(]h,]uh.Nh/hh]r§hu)r¨}r©(h j¤h!j¢h"h#h$hxh&}rª(h*]h+]h)]h(]h,]uh.K5h]r«(h–)r¬}r­(h X$:class:`Types.NodeReplicationPolicy`r®h!j¨h"h#h$hšh&}r¯(UreftypeXclasshœ‰hXTypes.NodeReplicationPolicyU refdomainXpyr°h(]h)]U refexplicit‰h*]h+]h,]hŸh h¡Nh¢Nuh.K5h]r±h¤)r²}r³(h j®h&}r´(h*]h+]rµ(h©j°Xpy-classr¶eh)]h(]h,]uh!j¬h]r·hCXTypes.NodeReplicationPolicyr¸…r¹}rº(h Uh!j²ubah$h¯ubaubhCX· is not currently implemented on the CN and so is ignored when making decisions as to which MN should be used for replication. In a future release, the CN scheduler will utilize the r»…r¼}r½(h X· is not currently implemented on the CN and so is ignored when making decisions as to which MN should be used for replication. In a future release, the CN scheduler will utilize the h!j¨ubh–)r¾}r¿(h X$:class:`Types.NodeReplicationPolicy`rÀh!j¨h"h#h$hšh&}rÁ(UreftypeXclasshœ‰hXTypes.NodeReplicationPolicyU refdomainXpyrÂh(]h)]U refexplicit‰h*]h+]h,]hŸh h¡Nh¢Nuh.K5h]rÃh¤)rÄ}rÅ(h jÀh&}rÆ(h*]h+]rÇ(h©jÂXpy-classrÈeh)]h(]h,]uh!j¾h]rÉhCXTypes.NodeReplicationPolicyrÊ…rË}rÌ(h Uh!jÄubah$h¯ubaubhCX{ to limit the types of objects that are scheduled to be replicated to a MN, but for now the information is not used at all.rÍ…rÎ}rÏ(h X{ to limit the types of objects that are scheduled to be replicated to a MN, but for now the information is not used at all.h!j¨ubeubaubh)rÐ}rÑ(h X¦.. _history: https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/ReplicationOverview.txtU referencedrÒKh!jÈh"h#h$h%h&}rÓ(h…h†h(]rÔhah)]h*]h+]h,]rÕh auh.K7h/hh]ubeubeubeh UU transformerrÖNU footnote_refsr×}rØUrefnamesrÙ}rÚh„]rÛhasUsymbol_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é(h Uh&}rê(h*]UlevelKh(]h)]Usourceh#h+]h,]UlineKUtypeUINFOrëuh]rìhu)rí}rî(h Uh&}rï(h*]h+]h)]h(]h,]uh!jèh]rðhCX9Hyperlink target "replicationoverview" is not referenced.rñ…rò}ró(h Uh!jíubah$hxubah$Usystem_messagerôubjç)rõ}rö(h Uh&}r÷(h*]UlevelKh(]h)]Usourceh#h+]h,]UlineKUtypejëuh]røhu)rù}rú(h Uh&}rû(h*]h+]h)]h(]h,]uh!jõh]rühCX-Hyperlink target "index-0" is not referenced.rý…rþ}rÿ(h Uh!jùubah$hxubah$jôubeUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values r or }r (Ufootnote_backlinksr KUrecord_dependenciesr NU rfc_base_urlrUhttps://tools.ietf.org/html/rU tracebackrˆUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh@NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_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_xformr0‰U source_linkr1NUrfc_referencesr2NUoutput_encodingr3Uutf-8r4U source_urlr5NUinput_encodingr6U utf-8-sigr7U_disable_configr8NU id_prefixr9UU tab_widthr:KUerror_encodingr;UUTF-8r<U_sourcer=h#Ugettext_compactr>ˆU generatorr?NUdump_internalsr@NU smart_quotesrA‰U pep_base_urlrBU https://www.python.org/dev/peps/rCUsyntax_highlightrDUlongrEUinput_encoding_error_handlerrFj!Uauto_id_prefixrGUidrHUdoctitle_xformrI‰Ustrip_elements_with_classesrJNU _config_filesrK]rLUfile_insertion_enabledrMˆU raw_enabledrNKU dump_settingsrONubUsymbol_footnote_startrPKUidsrQ}rR(hjxhjhh1hjÈhOhYhh1hjÐuUsubstitution_namesrS}rTh$h/h&}rU(h*]h(]h)]Usourceh#h+]h,]uU footnotesrV]rWUrefidsrX}rY(hO]rZhUah]r[hauub.