Story #3729: Member Nodes should be the authoritative source of System Metadata
Add MN API calls to update system metadata
With the MN becoming the authority for system metadata, the following calls will need to be changed:
MNCore.archive() - add
MNCore.setObsoletedBy() - add
MNAuthorization.setRightsHolder() - add
MNAuthorization.setAccessPolicy() - add
CNCore.archive() - deprecate
CNCore.setObsoletedBy() - deprecate
CNAuthorization.setRightsHolder() - deprecate
CNAuthorization.setAccessPolicy() - deprecate
These changes will affect the following components:
and other MN stacks that will need to implement the new API calls
#1 Updated by Ben Leinfelder over 9 years ago
- Status changed from New to In Progress
A couple questions:
Why not include a catch-all MNStorage.updateSystemMetadata() method instead of targeting specific fields in the SystemMetadata? For example, how would I change the formatId of an object unless there were an MN.updateSystemMetadata() method or a specific MNStorage.setFormatId() method. I prefer the former.
I don't think we can support MNCore operations that mutate data since there is no authentication in Tier 1. (So archive() will have to stay in MNStorage)
What about CN.updateReplicationPolicy() - should that be deprecated as well since we will be using CN.updateSystemMetadata() to change all the other mutable fields?
#6 Updated by Chris Jones over 8 years ago
- % Done changed from 30 to 100
- Status changed from In Progress to Closed
- translation missing: en.field_remaining_hours changed from 160.0 to 0.0
We made the decision to use MNStorage.updateSystemMetadata() instead of all of the individual API methods above. This is now in the architecture documentation. See http://jenkins-1.dataone.org/jenkins/job/API%20Documentation%20-%20trunk/ws/api-documentation/build/html/apis/MN_APIs.html#MNStorage.updateSystemMetadata .