Member Node Prototype API ------------------------- - get(token, ID) - synchronize(token, ID) - trust required - need to verify identity of caller - should only be called by CN - for prototype, the trust can be specified at the network level (buy time for feedback from distributed identity group) - heartbeat() - listObjects(date...) - getSystemMetadata() - returns a subset of the system metadata Coordinating Node Prototype APIs -------------------------------- - synchronizeCompleted() - taskStatusUpdate() - completed, failed with error, still in progress, pct complete, timed out - reserveIdentifier(ID) -> T/F - reserves identifier for pending retrieval of new object from MN - getSystemMetadata(token) - search(token, query) -> resultset - resolve(ID) -> location(s) - login() - username, password or certificate - DAAC data retrieval requires username passwd. trusted location for submission of metadata - define query syntax - resultset = list of IDs - three roles: admin, anonymous, authenticated - token should include some encoding of the user identity - potential privacy concerns - explicit privacy agreement -> governance group Versions -------- Two streams of development. a. implements: - shared search - replication of data and metadata - 3 CNs synchronized - no authentication or access control - metadata interoperability (harvest and make accessible through search) b. implements: - a) plus - authentication - access control - V0.3 (minimal internal prototype) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Aim for February 16 minimal functionality Functionality - CNs read content from MNs - CNs implement resolve() - CNs synchronize content (science metadata) between themselves - System Metadata defined - Search using Mercury - client library (proto ITK) - logging (debug style) Tasks - general documentation cleanup - clarify API documentation - for listObjects(), evaluate correspondence with OAI-PMH - comms = REST(ish), but RPC (e.g. protobuf) can be simpler - define REST URI encoding patterns for all operations (e.g. Serhan Akin) - Define error messages and handling for all APIs - Review subset of use cases that apply here and ensure that all API calls are considered - Review list of use cases for applicability (1, 2, 6, 9, 24, 10, 16) and map to Feb and July targets - set up unit tests for APIs - testing MN implementation of APIs - Testing CN implementation - build stubbed out MN APIs - generate client side and server side stub libraries for CN and MN - java, perl, python - MNs implement get(), heartbeat(), listObjects(), getSystemMetadata() - ORNL DAAC - Dryad - KNB - CDL [-NBII] - Spec hardware requirements for CNs - order + deploy hardware where necessary - evaluate deployment on EC2 (Eucalyptus?) Budget constraints? - Deploy metacat + mercury on VM images - Adapt mercury to use metacat documents - Trigger mercury to update index - Dependencies - Incompatibilities? - Implement CN API methods - Architecture details of hybrid - message bus, dispatching calls to metacat | mercury - Mule-ESB - Network level security (CN-CN and CN-MN) - IP + host based? - Certificates? - Evaluation of search possibilities (e.g. THUMP, SRU, OpenSearch, SPARQL, XQuery) - What are the requirements for search systems over time - kw over metadata -> sophisticated search over data - What existing query languages map well to the search requirements - Generate a draft document that covers the range of available query languages / systems and their utility towards providing suitable search + discovery for scientific use of DataONE - Trajectory / longer term goals for search operations (e.g. search of data) V0.5 July 31 2010 ~~~~~~~~~~~~~~~~~ - MNs implement synchronize() - CNs implement taskStatusUpdate() - CN scheduler for directing MN replication operations - System metadata replicated between CNs - API for search standardized (cross mercury and metacat) - logging V0.9 ~~~~ - Authentication - Access control - Re-engineer problems in previous iterations - more MN types - ITK - event notification / subscription V1.0 (Year 3 Public release) V2.0 (Final year 5 deliverable)