Task #2140
Feature #1764: Finalize dataoneTypes schema for public release
Add a NodeReplicationPolicy type
100%
Description
Define a NodeReplicationPolicy that lets an MN restrict replicable content or sources:
NodeReplicationPolicy {
[maxObjectSize: integer],
[spaceAllocated: integer],
[allowedNode: NodeReference],
[allowedObjectFormat: ObjectFormatIdentifier]
}
This is similar to the section of the Node, but it allows for MNs to explicitly (and optionally) state their relevant resource and policy constraints. For instance:
DEMO1
DEMO2
netCDF-4
http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2
This node will only replicate objects up to 1GB in size, up to a total of 6TB, only from DEMO1 and DEMO2, and only of netCDF-4 and ncml-2.2 types.
The idea here is that the CN can keep track of Node-level refusals along with these constraints using the LDAP node registry (which will need to be slightly extended). In the absence of maxObjectSize, spaceAllocated, allowedNode, and allowedObjectFormat attributes/elements, the CN can assume that the MN is wide open for replication. It can internally keep track of refusals/quotas in LDAP schema fields, which aren't exposed in the policy, but may be either temporary or permanent, based on the exceptions the CN receives from the call to MN.replicate().
Of course, we won't be supporting all of these features in the upcoming release, but we can get them into the schema and state that we'll be supporting the features in upcoming releases:
v1: support for Node.replicate (true/false)
v2: support for NodeReplicationPolicy.maxObjectSize, NodeReplicationPolicy.spaceAllocated
v3: support for NodeReplicationPolicy.allowedNode, NodeReplicationPolicy.allowedObjectFormat