<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Infrastructure Versions — v2.1.0-beta</title> <link rel="stylesheet" href="../_static/dataone.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '../', VERSION: '2.1.0-beta', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true, SOURCELINK_SUFFIX: '.txt' }; </script> <script type="text/javascript" src="../_static/mathjax_pre.js"></script> <script type="text/javascript" src="../_static/jquery.js"></script> <script type="text/javascript" src="../_static/underscore.js"></script> <script type="text/javascript" src="../_static/doctools.js"></script> <script type="text/javascript" src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML"></script> <script type="text/javascript" src="../_static/sidebar.js"></script> <link rel="author" title="About these documents" href="../about.html" /> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> <link rel="next" title="General Design and Implementation Notes" href="../notes/index.html" /> <link rel="prev" title="Integration Testing" href="integration-testing.html" /> <link media="only screen and (max-device-width: 480px)" href="../_static/small_dataone.css" type= "text/css" rel="stylesheet" /> </head> <body role="document"> <div class="version_notice"> <p> <span class='bold'>Warning:</span> These documents are under active development and subject to change (version 2.1.0-beta).<br /> The latest release documents are at: <a href="https://purl.dataone.org/architecture">https://purl.dataone.org/architecture</a> </p> </div> <div class="related" role="navigation" aria-label="related navigation"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../genindex.html" title="General Index" accesskey="I">index</a></li> <li class="right" > <a href="../py-modindex.html" title="Python Module Index" >modules</a> |</li> <li class="right" > <a href="../notes/index.html" title="General Design and Implementation Notes" accesskey="N">next</a> |</li> <li class="right" > <a href="integration-testing.html" title="Integration Testing" accesskey="P">previous</a> |</li> <li class="nav-item nav-item-0"><a href="../index.html"></a> »</li> <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Implementation Notes</a> »</li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body"> <div class="section" id="infrastructure-versions"> <h1>Infrastructure Versions<a class="headerlink" href="#infrastructure-versions" title="Permalink to this headline">¶</a></h1> <p>Outline of functionality to be implemented in versions of the DataONE cyber-infrastructure. Version numbers are expressed in three parts: Major.Minor.Revision to reflect official releases of the software, where:</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Major:</th><td class="field-body">Is a significantly different release from the previous version number, may provide significant additional features and may implement functionality that is not backwards compatible with prior releases.</td> </tr> <tr class="field-even field"><th class="field-name">Minor:</th><td class="field-body">Adds additional features to an existing release and maintains compatibility within the current major version.</td> </tr> <tr class="field-odd field"><th class="field-name">Revision:</th><td class="field-body">Indicates a minor change from the current version, typically used to provide bug fix releases. Will not usually add additional functionality.</td> </tr> </tbody> </table> <p>Three major versions are planned for the first five years of the DataONE project. These versions refer to the general implementation of the overall cyber-infrastructure, though for specific components (e.g. the Coordinating Node software stack or the Investigator Toolkit), it may be more appropriate for them to evolve their own versions (with some mapping between those and the general version of DataONE).</p> <p><strong>Version 0.x</strong> represents the prototype implementations to be developed prior to the first public release of the infrastructure. The general progression of features for this series beyond the initial specifications involves configuration of test environments and core API implementation libraries that are then used to add DataONE features and functionality to various existing data resources and component applications. The end result of the 0.x series will be three Coordinating Nodes and at least three Member Nodes that implement DataONE functionality to replicate metadata and data, enable search and discovery, and supports remote administration and monitoring. Another important output from the prototyping activities will be documentation and guidelines for further implementation, detailing the results of stress tests and evaluation of simulated failures such as node failures and connectivity issues.</p> <p><strong>Version 1.x</strong> is the first public release of the DataONE cyber-infrastructure and will represent a hardened and well-tested system that can reliably be placed in a core infrastructure role. Additional features will be added to the infrastructure throughout the 1.x series, with the majority of focus addressing the remaining performance and reliability questions as well the science use cases developed by various working groups during the first year of activity.m</p> <p><strong>Version 2.x</strong> represents more advanced functionality that builds upon the capabilities of the version 1.x series. Anticipated features of the 2.x series include content validation and quality control services (extending basic services implemented previously), more sophisticated event and notification facilities, support for content version migration strategies, and several service enhancements such as various data extraction, analysis, visualization and integration operations. An important aspect of the 2.x series development activities will be ensuring the system being implemented supports as far as possible the requirements of the scientific use cases identified throughout project.</p> <div class="section" id="general-schedule-for-infrastructure-version-0-x"> <h2>General Schedule for Infrastructure Version 0.x<a class="headerlink" href="#general-schedule-for-infrastructure-version-0-x" title="Permalink to this headline">¶</a></h2> <table border="1" class="docutils" id="id1"> <caption><span class="caption-text">Approximate timeline and functionality for version releases.</span><a class="headerlink" href="#id1" title="Permalink to this table">¶</a></caption> <colgroup> <col width="6%" /> <col width="6%" /> <col width="56%" /> <col width="22%" /> <col width="11%" /> </colgroup> <thead valign="bottom"> <tr class="row-odd"><th class="head">Version</th> <th class="head">Date</th> <th class="head">Description</th> <th class="head">Use Cases</th> <th class="head">API Methods</th> </tr> </thead> <tbody valign="top"> <tr class="row-even"><td>0.1</td> <td>2009/09</td> <td><div class="first last line-block"> <div class="line">* General architecture laid out</div> <div class="line">* Initial set of user requirements identified</div> <div class="line">* Functional use cases for user requirements drafted</div> </div> </td> <td></td> <td></td> </tr> <tr class="row-odd"><td>0.2</td> <td>2009/11</td> <td><div class="first last line-block"> <div class="line">* Major system components identified</div> <div class="line">* Service interfaces specified</div> <div class="line">* Functional uses cases fleshed out, edited for consistency</div> <div class="line">* High level component interactions documented</div> </div> </td> <td></td> <td></td> </tr> <tr class="row-even"><td>0.3</td> <td>2010/04</td> <td><div class="first last line-block"> <div class="line">* Initial coding on low level functionality and shemas</div> <div class="line">* Prototype specfications documented</div> <div class="line">* Initial core software components identified</div> <div class="line">* System metadata schema defined</div> <div class="line">* CN library incompatibilities evaluatated</div> <div class="line">* Base inter-process communications enabled (Mercury - Metacat)</div> <div class="line">* CN, MN API wrappers generated</div> <div class="line">* Reference implementations for CN and MN initiated</div> <div class="line">* Low level logging incorporated into API wrappers</div> </div> </td> <td><div class="first last line-block"> <div class="line">* <a class="reference internal" href="../design/UseCases/01_uc.html"><span class="doc">Use Case 01 - Get Object Identified by PID</span></a></div> <div class="line">* <a class="reference internal" href="../design/UseCases/36_uc.html"><span class="doc">Use Case 36 - Resolve an Object Location</span></a></div> </div> </td> <td><div class="first last line-block"> <div class="line">* X <code class="xref py py-func docutils literal"><span class="pre">MN_crud.get()</span></code></div> <div class="line">* done for GMN <code class="xref py py-func docutils literal"><span class="pre">MN_crud.log()</span></code></div> <div class="line">* X <code class="xref py py-func docutils literal"><span class="pre">CN_crud.get()</span></code></div> <div class="line">* X <code class="xref py py-func docutils literal"><span class="pre">CN_crud.getSystemMetadata()</span></code></div> <div class="line">* X <code class="xref py py-func docutils literal"><span class="pre">CN_query.search()</span></code></div> </div> </td> </tr> <tr class="row-odd"><td>0.4</td> <td>2010/05</td> <td><div class="first last line-block"> <div class="line">* Initial implementation of metadata replication and indexing</div> <div class="line">* Initial implementation of selected MNs</div> <div class="line">* CN Hardware procured</div> <div class="line">* CN implemetation using Metacat + Mercury with API wrapper</div> <div class="line">* MN - CN communication secured</div> <div class="line">* Mercury search index population trigger implemented</div> <div class="line">* CN - CN replication of metadata</div> <div class="line">* Design initial web interface for user interaction</div> <div class="line">* Design monitoring functionality to track services and objects</div> </div> </td> <td><div class="first last line-block"> <div class="line">* <a class="reference internal" href="../design/UseCases/02_uc.html"><span class="doc">Use Case 02 - List PIDs By Search</span></a></div> <div class="line">* <a class="reference internal" href="../design/UseCases/03_uc.html"><span class="doc">Use Case 03 - Register MN</span></a></div> <div class="line">* <a class="reference internal" href="../design/UseCases/06_uc.html"><span class="doc">Use Case 06 - MN Synchronize</span></a></div> <div class="line">* <a class="reference internal" href="../design/UseCases/10_uc.html"><span class="doc">Use Case 10 - MN Status Reports</span></a></div> <div class="line">* <a class="reference internal" href="../design/UseCases/16_uc.html"><span class="doc">Use Case 16 - Log CRUD Operations</span></a></div> </div> </td> <td><div class="first last line-block"> <div class="line">* X <code class="xref py py-func docutils literal"><span class="pre">MN_crud.getSystemMetadata()</span></code></div> <div class="line">* X <code class="xref py py-func docutils literal"><span class="pre">MN_replication.listObjects()</span></code></div> <div class="line">* X <code class="xref py py-func docutils literal"><span class="pre">CN_crud.create()</span></code></div> <div class="line">* <code class="xref py py-func docutils literal"><span class="pre">CN_crud.log()</span></code></div> <div class="line">* <code class="xref py py-func docutils literal"><span class="pre">CN_crud.resolve()</span></code></div> </div> </td> </tr> <tr class="row-even"><td>0.5</td> <td>2010/06</td> <td><div class="first last line-block"> <div class="line">* Initial data replication implemented</div> <div class="line">* MN - MN transfer implemented</div> <div class="line">* Basic search interface available</div> <div class="line">* Basic log reporting available</div> <div class="line">* Search and retrieval supported by ITK</div> <div class="line">* Initial implementation of centralized user authentication</div> <div class="line">* Identity and credentials propagated through system</div> <div class="line">* Implement web interface for user interaction with CNs</div> <div class="line">* Implement initial mechanisms for tracking objects and service uptime</div> </div> </td> <td><div class="first last line-block"> <div class="line">* <a class="reference internal" href="../design/UseCases/06_uc.html"><span class="doc">Use Case 06 - MN Synchronize</span></a></div> <div class="line">* <a class="reference internal" href="../design/UseCases/17_uc.html"><span class="doc">Use Case 17 - CRUD Logs Aggregated at CNs</span></a></div> <div class="line">* <a class="reference internal" href="../design/UseCases/12_uc.html"><span class="doc">Use Case 12 - User Authentication</span></a></div> <div class="line">* <a class="reference internal" href="../design/UseCases/13_uc.html"><span class="doc">Use Case 13 - User Authorization</span></a></div> </div> </td> <td><div class="first last line-block"> <div class="line">* <code class="xref py py-func docutils literal"><span class="pre">CN_authentication.login()</span></code> (will use IP based auth)</div> <div class="line">* <code class="xref py py-func docutils literal"><span class="pre">CN_authentication.verifyToken()</span></code></div> <div class="line">* <code class="xref py py-func docutils literal"><span class="pre">CN_authorization.isAuthorized()</span></code></div> </div> </td> </tr> <tr class="row-odd"><td>0.6</td> <td>2010/07</td> <td><div class="first last line-block"> <div class="line">* System self manages replication</div> <div class="line">* CN controlling replication between MNs</div> <div class="line">* Reporting interface for system status</div> </div> </td> <td><div class="first last line-block"> <div class="line">* <a class="reference internal" href="../design/UseCases/09_uc.html"><span class="doc">Use Case 09 - Replicate MN to MN</span></a></div> <div class="line">* <a class="reference internal" href="../design/UseCases/24_uc.html"><span class="doc">Use Case 24 - MNs and CNs Support Transactions</span></a></div> </div> </td> <td></td> </tr> <tr class="row-even"><td>0.7</td> <td>2010/08</td> <td><div class="first last line-block"> <div class="line">* Basic authorization and access control</div> <div class="line">* Initial authorization subsystem implemented</div> <div class="line">* Initial object access control implemented</div> </div> </td> <td><div class="first last line-block"> <div class="line">* <a class="reference internal" href="../design/UseCases/14_uc.html"><span class="doc">Use Case 14 - System Authentication and Authorization</span></a></div> </div> </td> <td></td> </tr> <tr class="row-odd"><td>0.8</td> <td>2010/09</td> <td><div class="first last line-block"> <div class="line">* Stress testing</div> <div class="line">* Failure recovery test and evaluation</div> <div class="line">* Writeup, lessons learned</div> <div class="line">* Re-design, select alternative components as necessary</div> </div> </td> <td></td> <td></td> </tr> </tbody> </table> </div> <div class="section" id="detail-for-version-0-3"> <h2>Detail for Version 0.3<a class="headerlink" href="#detail-for-version-0-3" title="Permalink to this headline">¶</a></h2> <p>Major goals for this target are functional prototype implementations of the CN, MN and a simple client suitable for testing interactions.</p> <p>This version of the software represents the initial implementation of the CN and MN services, and should support at least use cases <a class="reference internal" href="../design/UseCases/01_uc.html"><span class="doc">Use Case 01 - Get Object Identified by PID</span></a> and <a class="reference internal" href="../design/UseCases/36_uc.html"><span class="doc">Use Case 36 - Resolve an Object Location</span></a>.</p> <p>The MN implementation will be a Django application that can stand alone, or interact with Metacat, Dryad, or ORNL DAAC for retrieving data and science metadata objects. The MN will implement the APIs described in <a class="reference internal" href="../apis/MN_APIs.html"><span class="doc">Member Node APIs</span></a> using a REST interface approach as described in <span class="xref doc">/apis/REST_interface</span>. The MN should be able to operate on any Linux, OS X or Windows platform that supports python 2.6. External dependencies beyond the standard python install should be clearly documented.</p> <p>The CN implementation will be a combination of Java servlet applications including Metacat for object storage, Mercury for object indexing for basic search and browse, and “cn_service” which will implement the necessary CN APIs and the logic to interact with the object store and search index. The CN should implement the APIs described in <a class="reference internal" href="../apis/CN_APIs.html"><span class="doc">Coordinating Node APIs</span></a> using a REST interface approach as described in <span class="xref doc">/apis/REST_interface</span>.</p> <p>The simple client will be implemented in Python and should support the external APIs provided by both the CN and MN implementations. The client will be developed primarily to support test operations against the CN and MN, though should be developed with consideration as a general DataONE client tool.</p> </div> <div class="section" id="detail-for-version-0-4"> <h2>Detail for Version 0.4<a class="headerlink" href="#detail-for-version-0-4" title="Permalink to this headline">¶</a></h2> <p>The major change for this target is replication of content across CNs.</p> <p>Version 0.4 will extend the implementations developed in version 0.3 by adding support for use cases <a class="reference internal" href="../design/UseCases/02_uc.html"><span class="doc">Use Case 02 - List PIDs By Search</span></a>, <a class="reference internal" href="../design/UseCases/03_uc.html"><span class="doc">Use Case 03 - Register MN</span></a>, <a class="reference internal" href="../design/UseCases/06_uc.html"><span class="doc">Use Case 06 - MN Synchronize</span></a>, and <a class="reference internal" href="../design/UseCases/10_uc.html"><span class="doc">Use Case 10 - MN Status Reports</span></a>.</p> <p>This MN implementation for this release should support basic interaction with at least one of the specified MN targets (i.e. Metacat, Dryad, ORNL DAAC) and provide access to real data from that service.</p> <p>The CN implementation will need to support replication between CN (Metacat) instances.</p> </div> <div class="section" id="detail-for-version-0-5"> <h2>Detail for Version 0.5<a class="headerlink" href="#detail-for-version-0-5" title="Permalink to this headline">¶</a></h2> <p>The major change for this target is CN driven data replication across MNs.</p> <p>Version 0.5 will extend the implementation developed in version 0.4 by adding support for the use cases <a class="reference internal" href="../design/UseCases/06_uc.html"><span class="doc">Use Case 06 - MN Synchronize</span></a>, <a class="reference internal" href="../design/UseCases/16_uc.html"><span class="doc">Use Case 16 - Log CRUD Operations</span></a>, and <a class="reference internal" href="../design/UseCases/17_uc.html"><span class="doc">Use Case 17 - CRUD Logs Aggregated at CNs</span></a>.</p> <p>At completion of this milestone, the infrastructure will support the basic functionality of DataONE except with no integration of identity, authentication, and minimal authorization (dictated by machine connections rather than user identities).</p> </div> </div> </div> </div> </div> <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> <div class="sphinxsidebarwrapper"> <p class="logo"><a href="http://dataone.org"> <img class="logo" src="../_static/dataone_logo.png" alt="Logo"/> </a></p> <h3><a href="../index.html">Table Of Contents</a></h3> <ul> <li><a class="reference internal" href="#">Infrastructure Versions</a><ul> <li><a class="reference internal" href="#general-schedule-for-infrastructure-version-0-x">General Schedule for Infrastructure Version 0.x</a></li> <li><a class="reference internal" href="#detail-for-version-0-3">Detail for Version 0.3</a></li> <li><a class="reference internal" href="#detail-for-version-0-4">Detail for Version 0.4</a></li> <li><a class="reference internal" href="#detail-for-version-0-5">Detail for Version 0.5</a></li> </ul> </li> </ul> <h3>Related Topics</h3> <ul> <li><a href="../index.html">Documentation Overview</a><ul> <li><a href="index.html">Implementation Notes</a><ul> <li>Previous: <a href="integration-testing.html" title="previous chapter">Integration Testing</a></li> <li>Next: <a href="../notes/index.html" title="next chapter">General Design and Implementation Notes</a></li> </ul></li> </ul></li> </ul> <div id="searchbox" style="display: none" role="search"> <h3>Quick search</h3> <form class="search" action="../search.html" method="get"> <div><input type="text" name="q" /></div> <div><input type="submit" value="Go" /></div> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> <script type="text/javascript">$('#searchbox').show(0);</script> </div> </div> <div class="clearer"></div> </div> <div class="footer"> <div id="copyright"> © Copyright <a href="http://www.dataone.org">2009-2017, DataONE</a>. [ <a href="../_sources/implementation/versions.txt" rel="nofollow">Page Source</a> | <a href='https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/implementation/versions.txt' rel="nofollow">Revision History</a> ] </div> <div id="acknowledgement"> <p>This material is based upon work supported by the National Science Foundation under Grant Numbers <a href="http://www.nsf.gov/awardsearch/showAward?AWD_ID=0830944">083094</a> and <a href="http://www.nsf.gov/awardsearch/showAward?AWD_ID=1430508">1430508</a>.</p> <p>Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.</p> </div> </div> <!-- <hr /> <div id="HCB_comment_box"><a href="http://www.htmlcommentbox.com">HTML Comment Box</a> is loading comments...</div> <link rel="stylesheet" type="text/css" href="_static/skin.css" /> <script type="text/javascript" language="javascript" id="hcb"> /*<! -*/ (function() {s=document.createElement("script"); s.setAttribute("type","text/javascript"); s.setAttribute("src", "http://www.htmlcommentbox.com/jread?page="+escape((typeof hcb_user !== "undefined" && hcb_user.PAGE)||(""+window.location)).replace("+","%2B")+"&mod=%241%24wq1rdBcg%24Gg8J5iYSHJWwAJtlYu/yU."+"&opts=21407&num=10"); if (typeof s!="undefined") document.getElementsByTagName("head")[0].appendChild(s);})(); /* ->*/ </script> --> </body> </html>