Added: mesos/site/publish/documentation/latest/mesos-containerizer/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/mesos-containerizer/index.html?rev=1638021&view=auto
==============================================================================
--- mesos/site/publish/documentation/latest/mesos-containerizer/index.html 
(added)
+++ mesos/site/publish/documentation/latest/mesos-containerizer/index.html Tue 
Nov 11 04:11:00 2014
@@ -0,0 +1,181 @@
+<!DOCTYPE html>
+<!--
+
+                ______                           __                
+               /\  _  \                         /\ \               
+               \ \ \L\ \  _____      __      ___\ \ \___      __   
+                \ \  __ \/\ '__`\  /'__`\   /'___\ \  _ `\  /'__`\ 
+                 \ \ \/\ \ \ \L\ \/\ \L\.\_/\ \__/\ \ \ \ \/\  __/ 
+                  \ \_\ \_\ \ ,__/\ \__/.\_\ \____\\ \_\ \_\ \____\
+                   \/_/\/_/\ \ \/  \/__/\/_/\/____/ \/_/\/_/\/____/
+                            \ \_\                                  
+                             \/_/                                  
+                                                    
+                      /'\_/`\                                      
+                     /\      \     __    ____    ___     ____      
+                     \ \ \__\ \  /'__`\ /',__\  / __`\  /',__\     
+                      \ \ \_/\ \/\  __//\__, `\/\ \L\ \/\__, `\    
+                       \ \_\\ \_\ \____\/\____/\ \____/\/\____/    
+                        \/_/ \/_/\/____/\/___/  \/___/  \/___/     
+
+-->
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title></title>
+                   <meta name="viewport" content="width=device-width, 
initial-scale=1.0">
+                   <meta name="description" content="">
+                   <meta name="author" content="">
+
+                   <!-- Le styles -->
+                               <link 
href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" 
rel="stylesheet">
+                   
+                   <link href="../../../assets/css/main.css" media="screen" 
rel="stylesheet" type="text/css" />
+                               
+                               
+                       
+                       <!-- Google Analytics Magic -->
+                       <script type="text/javascript">
+                         var _gaq = _gaq || [];
+                         _gaq.push(['_setAccount', 'UA-20226872-1']);
+                         _gaq.push(['_setDomainName', 'apache.org']);
+                         _gaq.push(['_trackPageview']);
+
+                         (function() {
+                           var ga = document.createElement('script'); ga.type 
= 'text/javascript'; ga.async = true;
+                           ga.src = ('https:' == document.location.protocol ? 
'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+                           var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+                         })();
+                       </script>
+    </head>
+    <body>
+                       <!-- magical breadcrumbs -->
+                       <div class="topnav">
+                       <ul class="breadcrumb">
+                         <li>
+                                       <div class="dropdown">
+                                         <a data-toggle="dropdown" 
href="#">Apache Software Foundation <span class="caret"></span></a>
+                                         <ul class="dropdown-menu" role="menu" 
aria-labelledby="dLabel">
+                                                       <li><a 
href="http://www.apache.org";>Apache Homepage</a></li>
+                                                       <li><a 
href="http://www.apache.org/licenses/";>License</a></li>
+                                               <li><a 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li>  
+                                               <li><a 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li>
+                                                       <li><a 
href="http://www.apache.org/security/";>Security</a></li>
+                                         </ul>
+                                       </div>
+                               </li>
+                               <li><a href="http://mesos.apache.org";>Apache 
Mesos</a></li>
+                               
+                               
+                                       <li><a href="/documentation
+/">Documentation
+</a></li>
+                               
+                               
+                       </ul><!-- /breadcrumb -->
+                       </div>
+                       
+                       <!-- navbar excitement -->
+           <div class="navbar navbar-static-top" role="navigation">
+             <div class="navbar-inner">
+               <div class="container">
+                                               <a href="/" class="logo"><img 
src="/assets/img/mesos_logo.png" alt="Apache Mesos logo" /></a>
+                                       <div class="nav-collapse">
+                                               <ul class="nav nav-pills 
navbar-right">
+                                                 <li><a 
href="/gettingstarted/">Getting Started</a></li>
+                                                 <li><a 
href="/documentation/latest/">Documentation</a></li>
+                                                 <li><a 
href="/downloads/">Downloads</a></li>
+                                                 <li><a 
href="/community/">Community</a></li>
+                                               </ul>
+                                       </div>
+               </div>
+             </div>
+           </div><!-- /.navbar -->
+
+      <div class="container">
+
+                       <div class="row-fluid">
+       <div class="col-md-4">
+               <h4>If you're new to Mesos</h4>
+               <p>See the <a href="/gettingstarted/">getting started</a> page 
for more information about downloading, building, and deploying Mesos.</p>
+               
+               <h4>If you'd like to get involved or you're looking for 
support</h4>
+               <p>See our <a href="/community/">community</a> page for more 
details.</p>
+       </div>
+       <div class="col-md-8">
+               <h1>Mesos Containerizer</h1>
+
+<p>The MesosContainerizer provides lightweight containerization and
+resource isolation of executors using Linux-specific functionality
+such as control cgroups and namespaces. It is composable so operators
+can selectively enable different isolators.</p>
+
+<p>It also provides basic support for POSIX systems (e.g., OSX) but
+without any actual isolation, only resource usage reporting.</p>
+
+<h3>Shared Filesystem</h3>
+
+<p>The SharedFilesystem isolator can optionally be used on Linux hosts to
+enable modifications to each container&rsquo;s view of the shared
+filesystem.</p>
+
+<p>The modifications are specified in the ContainerInfo included in the
+ExecutorInfo, either by a framework or by using the
+&ndash;default_container_info slave flag.</p>
+
+<p>ContainerInfo specifies Volumes which map parts of the shared
+filesystem (host_path) into the container&rsquo;s view of the filesystem
+(container_path), as read-write or read-only. The host_path can be
+absolute, in which case it will make the filesystem subtree rooted at
+host_path also accessible under container_path for each container.
+If host_path is relative then it is considered as a directory
+relative to the executor&rsquo;s work directory. The directory will be
+created and permissions copied from the corresponding directory (which
+must exist) in the shared filesystem.</p>
+
+<p>The primary use-case for this isolator is to selectively make parts of
+the shared filesystem private to each container. For example, a
+private &ldquo;/tmp&rdquo; directory can be achieved with 
host_path=&ldquo;tmp&rdquo; and
+container_path=&ldquo;/tmp&rdquo; which will create a directory 
&ldquo;tmp&rdquo; inside the
+executor&rsquo;s work directory (mode 1777) and simultaneously mount it as
+/tmp inside the container. This is transparent to processes running
+inside the container. Containers will not be able to see the host&rsquo;s
+/tmp or any other container&rsquo;s /tmp.</p>
+
+<h3>Pid Namespace</h3>
+
+<p>The Pid Namespace isolator can be used to isolate each container in
+a separate pid namespace with two main benefits:
+1. Visibility: Processes running in the container (executor and
+   descendants) are unable to see or signal processes outside the
+   namespace.
+2. Clean termination: Termination of the leading process in a pid
+   namespace will result in the kernel terminating all other processes
+   in the namespace.</p>
+
+<p>The Launcher will use (2) during destruction of a container in
+preference to the freezer cgroup, avoiding known kernel issues related
+to freezing cgroups under OOM conditions.</p>
+
+<p>/proc will be mounted for containers so tools such as &lsquo;ps&rsquo; will 
work
+correctly.</p>
+
+       </div>
+</div>
+
+                       
+             <hr>
+
+                               <!-- footer -->
+             <div class="footer">
+               <p>&copy; 2012-2014 <a href="http://apache.org";>The Apache 
Software Foundation</a>.
+               Apache Mesos, the Apache feather logo, and the Apache Mesos 
project logo are trademarks of The Apache Software Foundation.<p>
+             </div><!-- /footer -->
+
+           </div> <!-- /container -->
+
+           <!-- JS -->
+           <script src="//code.jquery.com/jquery-1.11.0.min.js" 
type="text/javascript"></script>
+                       <script 
src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js" 
type="text/javascript"></script>
+    </body>
+</html>
\ No newline at end of file

Added: mesos/site/publish/documentation/latest/modules/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/modules/index.html?rev=1638021&view=auto
==============================================================================
--- mesos/site/publish/documentation/latest/modules/index.html (added)
+++ mesos/site/publish/documentation/latest/modules/index.html Tue Nov 11 
04:11:00 2014
@@ -0,0 +1,483 @@
+<!DOCTYPE html>
+<!--
+
+                ______                           __                
+               /\  _  \                         /\ \               
+               \ \ \L\ \  _____      __      ___\ \ \___      __   
+                \ \  __ \/\ '__`\  /'__`\   /'___\ \  _ `\  /'__`\ 
+                 \ \ \/\ \ \ \L\ \/\ \L\.\_/\ \__/\ \ \ \ \/\  __/ 
+                  \ \_\ \_\ \ ,__/\ \__/.\_\ \____\\ \_\ \_\ \____\
+                   \/_/\/_/\ \ \/  \/__/\/_/\/____/ \/_/\/_/\/____/
+                            \ \_\                                  
+                             \/_/                                  
+                                                    
+                      /'\_/`\                                      
+                     /\      \     __    ____    ___     ____      
+                     \ \ \__\ \  /'__`\ /',__\  / __`\  /',__\     
+                      \ \ \_/\ \/\  __//\__, `\/\ \L\ \/\__, `\    
+                       \ \_\\ \_\ \____\/\____/\ \____/\/\____/    
+                        \/_/ \/_/\/____/\/___/  \/___/  \/___/     
+
+-->
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title></title>
+                   <meta name="viewport" content="width=device-width, 
initial-scale=1.0">
+                   <meta name="description" content="">
+                   <meta name="author" content="">
+
+                   <!-- Le styles -->
+                               <link 
href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" 
rel="stylesheet">
+                   
+                   <link href="../../../assets/css/main.css" media="screen" 
rel="stylesheet" type="text/css" />
+                               
+                               
+                       
+                       <!-- Google Analytics Magic -->
+                       <script type="text/javascript">
+                         var _gaq = _gaq || [];
+                         _gaq.push(['_setAccount', 'UA-20226872-1']);
+                         _gaq.push(['_setDomainName', 'apache.org']);
+                         _gaq.push(['_trackPageview']);
+
+                         (function() {
+                           var ga = document.createElement('script'); ga.type 
= 'text/javascript'; ga.async = true;
+                           ga.src = ('https:' == document.location.protocol ? 
'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+                           var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+                         })();
+                       </script>
+    </head>
+    <body>
+                       <!-- magical breadcrumbs -->
+                       <div class="topnav">
+                       <ul class="breadcrumb">
+                         <li>
+                                       <div class="dropdown">
+                                         <a data-toggle="dropdown" 
href="#">Apache Software Foundation <span class="caret"></span></a>
+                                         <ul class="dropdown-menu" role="menu" 
aria-labelledby="dLabel">
+                                                       <li><a 
href="http://www.apache.org";>Apache Homepage</a></li>
+                                                       <li><a 
href="http://www.apache.org/licenses/";>License</a></li>
+                                               <li><a 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li>  
+                                               <li><a 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li>
+                                                       <li><a 
href="http://www.apache.org/security/";>Security</a></li>
+                                         </ul>
+                                       </div>
+                               </li>
+                               <li><a href="http://mesos.apache.org";>Apache 
Mesos</a></li>
+                               
+                               
+                                       <li><a href="/documentation
+/">Documentation
+</a></li>
+                               
+                               
+                       </ul><!-- /breadcrumb -->
+                       </div>
+                       
+                       <!-- navbar excitement -->
+           <div class="navbar navbar-static-top" role="navigation">
+             <div class="navbar-inner">
+               <div class="container">
+                                               <a href="/" class="logo"><img 
src="/assets/img/mesos_logo.png" alt="Apache Mesos logo" /></a>
+                                       <div class="nav-collapse">
+                                               <ul class="nav nav-pills 
navbar-right">
+                                                 <li><a 
href="/gettingstarted/">Getting Started</a></li>
+                                                 <li><a 
href="/documentation/latest/">Documentation</a></li>
+                                                 <li><a 
href="/downloads/">Downloads</a></li>
+                                                 <li><a 
href="/community/">Community</a></li>
+                                               </ul>
+                                       </div>
+               </div>
+             </div>
+           </div><!-- /.navbar -->
+
+      <div class="container">
+
+                       <div class="row-fluid">
+       <div class="col-md-4">
+               <h4>If you're new to Mesos</h4>
+               <p>See the <a href="/gettingstarted/">getting started</a> page 
for more information about downloading, building, and deploying Mesos.</p>
+               
+               <h4>If you'd like to get involved or you're looking for 
support</h4>
+               <p>See our <a href="/community/">community</a> page for more 
details.</p>
+       </div>
+       <div class="col-md-8">
+               <h1>Mesos Modules</h1>
+
+<p>Experimental support for Mesos modules was introduced in Mesos 0.21.0.</p>
+
+<h3>Disclaimer</h3>
+
+<ul>
+<li><p>Use and development of Mesos modules is at own risk! Only graced modules
+(modules that are part of Mesos distribution) are maintained by the Mesos
+project.</p></li>
+<li><p>Please direct all questions to the relevant module writer and/or write 
to
[email protected]. Questions related to modules sent to user and dev 
list
+will be redirected to the modules list.</p></li>
+</ul>
+
+
+<h2>What are Mesos modules?</h2>
+
+<p>Mesos modules provide a way to easily extend inner workings of Mesos by 
creating
+and using shared libraries that are loaded on demand.  Modules can be used to
+customize Mesos without having to recompiling/relinking for each specific use
+case.  Modules can isolate external dependencies into separate libraries, thus
+resulting into a smaller Mesos core.
+Modules also make it easy to experiment with new features.
+For example, imagine loadable allocators that contain a VM (Lua, Python, 
&hellip;)
+which makes it possible to try out new allocator algorithms written in
+scripting languages without forcing those dependencies into the project.
+Finally, modules provide an easy way for third parties to easily extend Mesos
+without having to know all the internal details.</p>
+
+<h2>Invoking Mesos modules</h2>
+
+<p>The command-line flag <code>--modules</code> is available for Mesos master, 
slave, and
+tests to specify a list of modules to be loaded and be available to the 
internal
+subsystems.</p>
+
+<p>Use <code>--modules=filepath</code> to specify the list of modules via a
+file containing a JSON formatted string. &lsquo;filepath&rsquo; can be
+of the form &lsquo;file:///path/to/file&rsquo; or 
&lsquo;/path/to/file&rsquo;.</p>
+
+<p>Use <code>--modules="{...}"</code> to specify the list of modules 
inline.</p>
+
+<h3>Example JSON strings:</h3>
+
+<ol>
+<li><p>Load a library <code>libfoo.so</code> with two modules 
<code>org_apache_mesos_bar</code> and
+<code>org_apache_mesos_baz</code>.</p>
+
+<pre><code>{
+  "libraries": [
+    {
+      "file": "/path/to/libfoo.so",
+      "modules": [
+        {
+          "name": "org_apache_mesos_bar",
+        },
+        {
+          "name": "org_apache_mesos_baz"
+        }
+      ]
+    }
+  ]
+}
+</code></pre></li>
+<li><p>Load the module <code>org_apache_mesos_bar</code> from the library 
<code>foo</code> and pass
+the command-line argument <code>X</code> with value <code>Y</code> (module 
<code>org_apache_mesos_baz</code>
+is loaded without any command-line parameters):</p>
+
+<pre><code>{
+  "libraries": [
+    {
+      "name": "foo",
+      "modules": [
+        {
+          "name": "org_apache_mesos_bar"
+          "parameters": [
+            {
+              "key": "X",
+              "value": "Y",
+            }
+          ]
+        },
+        {
+          "name": "org_apache_mesos_bar"
+        }
+      ]
+    }
+  ]
+}
+</code></pre></li>
+<li><p>Specifying modules inline:</p>
+
+<pre><code>--modules='{"libraries":[{"file":"/path/to/libfoo.so", 
"modules":[{"name":"org_apache_mesos_bar"}]}]}'
+</code></pre></li>
+</ol>
+
+
+<h3>Library names</h3>
+
+<p>For each library, at least one of the &ldquo;file&rdquo; or 
&ldquo;path&rdquo; parameter must be
+specified.  The &ldquo;file&rdquo; parameter may refer to a filename (e.g., 
&ldquo;libfoo.so&rdquo;), a
+relative path (e.g., &ldquo;myLibs/libfoo.so&rdquo;), or an absolute path 
(e.g.,
+&ldquo;/home/mesos/lib/libfoo.so&rdquo;).  The &ldquo;name&rdquo; parameter 
refers to a library name
+(e.g., &ldquo;foo&rdquo;).  If &ldquo;name&rdquo; is specified, it is 
automatically expanded to a proper
+library name for the current platform (e.g., &ldquo;foo&rdquo; gets expanded 
to &ldquo;libfoo.so&rdquo;
+on Linux, and &ldquo;libfoo.dylib&rdquo; on OS X).</p>
+
+<p>If a library path is not specified in the &ldquo;file&rdquo; parameter, the 
library is
+searched in the standard library paths or directories pointed to by the
+<code>LD_LIBRARY_PATH</code> (<code>DYLD_LIBRARY_PATH</code> on OS X) 
environment variable.</p>
+
+<p>If both &ldquo;file&rdquo; and &ldquo;name&rdquo; are specified, 
&ldquo;name&rdquo; is ignored.</p>
+
+<h2>What kinds of modules are supported?</h2>
+
+<p>Mesos currently only provides Isolator and Authentication modules.  
Additional
+graced modules will be added in the near future.</p>
+
+<h2>Writing Mesos modules</h2>
+
+<h3>A HelloWorld module</h3>
+
+<p>The following snippet describes the implementation of a module named
+&ldquo;org_apache_mesos_bar&rdquo; of &ldquo;TestModule&rdquo; kind:</p>
+
+<pre><code>  #include &lt;iostream&gt;
+  #include "test_module.hpp"
+
+  class TestModuleImpl : public TestModule
+  {
+  public:
+    TestModuleImpl()
+    {
+      std::cout &lt;&lt; "HelloWorld!" &lt;&lt; std::endl;
+    }
+
+    virtual int foo(char a, long b)
+    {
+      return a + b;
+    }
+
+    virtual int bar(float a, double b)
+    {
+      return a * b;
+    }
+  };
+
+  static TestModule* create()
+  {
+      return new TestModule();
+  }
+
+  static bool compatible()
+  {
+    return true;
+  }
+
+  // Declares a module named 'example' of 'TestModule' kind.
+  // Mesos core binds the module instance pointer as needed.
+  // The compatible() hook is provided by the module for compatibility checks.
+  // The create() hook returns an object of type 'TestModule'.
+  mesos::modules::Module&lt;TestModule&gt; org_apache_mesos_TestModule(
+      MESOS_MODULE_API_VERSION,
+      MESOS_VERSION,
+      "Apache Mesos",
+      "[email protected]",
+      "This is a test module.",
+      compatible,
+      create);
+</code></pre>
+
+<h3>Building a module</h3>
+
+<p>  The following assumes that Mesos is installed in the standard location, 
i.e.
+  the Mesos dynamic library and header files are available.
+<code>
+  g++ -lmesos -fpic -o test_module.o test_module.cpp
+  $ gcc -shared -o libtest_module.so test_module.o
+</code></p>
+
+<h3>Testing a modules</h3>
+
+<p>Apart from testing the module by hand with explicit use of &ndash;modules 
flag, one
+can run the entire mesos test suite with the given module. For example, the
+following command will run the mesos test suite with the
+<code>org_apache_mesos_TestCpuIsolator</code> module selected for isolation:
+<code>
+./bin/mesos-tests.sh 
--modules="/home/kapil/mesos/isolator-module/modules.json" 
--isolation="org_apache_mesos_TestCpuIsolator"
+</code></p>
+
+<h3>Module naming convention</h3>
+
+<p>Each module name should be unique.  Having duplicate module names in the 
Json
+string will cause the process to abort.</p>
+
+<p>Therefore, we encourage module writers to name their modules according to 
Java
+package naming scheme
+(http://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html).</p>
+
+<p>For example:</p>
+
+<table>
+<tr>
+<th> Module Name </th> <th> Module Domain name </th> <th> Module Symbol Name 
</th>
+</tr>
+
+<tr>
+<td> foobar      </td> <td> mesos.apache.org   </td> <td> 
org_apache_mesos_foobar </td>
+</tr>
+
+<tr>
+<td> barBaz      </td> <td> example.com        </td> <td> com_example_barBaz   
    </td>
+</table>
+
+
+<p>In short:
+- Keep case of module name.
+- Lower case and reverse domain.
+- Separate with underscore.
+- Do not simply use the kind name as module name.
+- Different modules from the same organization still need different names.</p>
+
+<h2>Module Versioning and backwards compatibility</h2>
+
+<p>Before loading the above module, a dynamic library that contains the module
+needs to be loaded into Mesos. This happens early in Mesos startup code. The
+Mesos developer does not need to touch that code when introducing new module
+kinds.  However, the developer is responsible for registering what versions of
+any given module are expected to remain compatible with Mesos as it progresses.
+This information is maintained in a table in 
<code>src/module/manager.cpp</code>. It
+contains an entry for every possible module kind that Mesos recognizes, each
+with a corresponding Mesos release version number. This number needs to be
+adjusted by the Mesos developer to reflect the current Mesos version whenever
+compatibility between Mesos and modules that get compiled against it gets
+broken. Given that module implementation for older Mesos versions can still be
+written in the future, this may be impossible to tell and so in doubt it is 
best
+to just bump the required module version to the current Mesos version. But if
+one can be reasonably sure, assuming cooperative module developers, that a
+certain kind of module will continue to function across several Mesos versions,
+the table provides an easy way to specify this.</p>
+
+<p>For successfully loading the module, the following relationship
+must exist between the various versions:</p>
+
+<p><code> kind version &lt;= Library version &lt;= Mesos version</code></p>
+
+<table>
+<tr>
+<td>Mesos </td> <td>kind version </td> <td> Library </td> <td>Is module 
loadable </td> <td>Reason </td>
+</tr>
+
+<tr>
+<td>0.18.0 </td> <td> 0.18.0 </td> <td> 0.18.0  </td> <td> yes </td> <td> </td>
+</tr>
+
+<tr>
+<td>0.29.0 </td> <td> 0.18.0 </td> <td> 0.18.0  </td> <td> yes </td> <td> </td>
+</tr>
+
+<tr>
+<td>0.29.0 </td> <td> 0.18.0 </td> <td> 0.21.0  </td> <td> yes </td> <td> </td>
+</tr>
+
+<tr>
+<td>0.18.0 </td> <td> 0.18.0 </td> <td> 0.29.0  </td> <td> NO </td> <td> 
Library compiled against a newer Mesos release.                </td>
+</tr>
+
+<tr>
+<td>0.29.0 </td> <td> 0.21.0 </td> <td> 0.18.0  </td> <td> NO </td> <td> 
Module/Library older than the kind version supported by Mesos. </td>
+<tr>
+</tr>
+
+<tr>
+<td>0.29.0 </td> <td> 0.29.0 </td> <td> 0.18.0  </td> <td> NO </td> <td> 
Module/Library older than the kind version supported by Mesos. </td>
+</tr>
+</table>
+
+
+<h2>Mesos module API changes</h2>
+
+<p>Record of incompatible changes to the modules API.</p>
+
+<h3>Version 2</h3>
+
+<ul>
+<li>Added support for module-specific command-line parameters.</li>
+<li>Changed function signature for create().</li>
+</ul>
+
+
+<h3>Version 1</h3>
+
+<p>Initial version of the modules API.</p>
+
+<h2>Appendix:</h2>
+
+<h3>JSON Schema:</h3>
+
+<pre><code>  {
+    "type":"object",
+    "required":false,
+    "properties":{
+      "libraries": {
+        "type":"array",
+        "required":false,
+        "items":
+        {
+          "type":"object",
+          "required":false,
+          "properties":{
+            "file": {
+              "type":"string",
+              "required":false
+            },
+            "name": {
+              "type":"string",
+              "required":false
+            },
+            "modules": {
+              "type":"array",
+              "required":false,
+              "items":
+              {
+                "type":"object",
+                "required":false,
+                "properties":{
+                  "name": {
+                    "type":"string",
+                    "required":true
+                  },
+                  "parameters": {
+                    "type":"array",
+                    "required":false,
+                    "items":
+                    {
+                      "type":"object",
+                      "required":false,
+                      "properties":{
+                        "key": {
+                          "type":"string",
+                          "required":true
+                        },
+                        "value": {
+                          "type":"string",
+                          "required":true
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+</code></pre>
+
+       </div>
+</div>
+
+                       
+             <hr>
+
+                               <!-- footer -->
+             <div class="footer">
+               <p>&copy; 2012-2014 <a href="http://apache.org";>The Apache 
Software Foundation</a>.
+               Apache Mesos, the Apache feather logo, and the Apache Mesos 
project logo are trademarks of The Apache Software Foundation.<p>
+             </div><!-- /footer -->
+
+           </div> <!-- /container -->
+
+           <!-- JS -->
+           <script src="//code.jquery.com/jquery-1.11.0.min.js" 
type="text/javascript"></script>
+                       <script 
src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js" 
type="text/javascript"></script>
+    </body>
+</html>
\ No newline at end of file

Modified: mesos/site/publish/documentation/latest/powered-by-mesos/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/powered-by-mesos/index.html?rev=1638021&r1=1638020&r2=1638021&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/powered-by-mesos/index.html 
(original)
+++ mesos/site/publish/documentation/latest/powered-by-mesos/index.html Tue Nov 
11 04:11:00 2014
@@ -116,6 +116,8 @@
 <li><a href="http://cloudphysics.com";>CloudPhysics</a></li>
 <li><a href="http://www.conviva.com";>Conviva</a></li>
 <li><a href="http://www.corvisacloud.com/";>CorvisaCloud</a></li>
+<li><a href="http://www.crpgl.lu";>CRP-Gabriel Lippmann</a></li>
+<li><a href="http://www.daemon.com.au";>Daemon</a></li>
 <li><a href="http://www.devicescape.com";>Devicescape</a></li>
 <li><a href="http://www.duedil.com";>DueDil</a></li>
 <li><a href="http://www.ebay.com";>eBay</a></li>
@@ -140,6 +142,7 @@
 <li><a href="http://www.pinkbike.com";>Pinkbike</a></li>
 <li><a href="http://www.profitstars.com";>ProfitStars</a></li>
 <li><a href="http://www.qubitproducts.com";>Qubit</a></li>
+<li><a href="http://revise.ly";>Revisely</a></li>
 <li><a href="http://www.sailthru.com";>Sailthru</a></li>
 <li><a href="http://www.sharethrough.com";>Sharethrough</a></li>
 <li><a href="http://www.sigmoidanalytics.com/";>Sigmoid Analytics</a></li>

Modified: mesos/site/publish/documentation/latest/release-guide/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/release-guide/index.html?rev=1638021&r1=1638020&r2=1638021&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/release-guide/index.html (original)
+++ mesos/site/publish/documentation/latest/release-guide/index.html Tue Nov 11 
04:11:00 2014
@@ -112,6 +112,39 @@
 <h2>Prerequisites</h2>
 
 <ol>
+<li><p>Ensure that you have a GPG key or generate a new one, e.g., using 
<code>gpg --gen-key</code>.</p></li>
+<li><p>Add your GPG public key to the Apache Mesos dist repository in the KEYS 
file.</p></li>
+<li>Fetch the svn repository <code>svn co 
https://dist.apache.org/repos/dist/release/mesos</code></li>
+<li>Append your public key using one of methods described in KEYS,
+e.g., <code>(gpg --list-sigs &lt;your name&gt; &amp;&amp; gpg --armor --export 
&lt;your name&gt;) &gt;&gt; KEYS</code>.</li>
+<li><p>Push the commit: <code>svn ci</code></p></li>
+<li><p>Submit your GPG public key to a keyserver, e.g., <a 
href="https://pgp.mit.edu";>MIT PGP Public Key Server</a>.</p></li>
+<li><p>Add your GPG fingerprint to your <a 
href="https://id.apache.org/";>Apache account</a>.</p></li>
+<li><p>Create a Maven settings file (<code>~/.m2/settings.xml</code>) for the 
Apache
+servers. Encrypt your Apache password using <code>mvn 
--encrypt-password</code>.
+<code>
+&lt;settings&gt;
+&lt;servers&gt;
+ &lt;server&gt;
+   &lt;id&gt;apache.snapshots.https&lt;/id&gt;
+   &lt;username&gt;APACHE USERNAME&lt;/username&gt;
+   &lt;password&gt;APACHE ENCRYPTED PASSWORD&lt;/password&gt;
+ &lt;/server&gt;
+ &lt;server&gt;
+   &lt;id&gt;apache.releases.https&lt;/id&gt;
+   &lt;username&gt;APACHE USERNAME&lt;/username&gt;
+   &lt;password&gt;APACHE ENCRYPTED PASSWORD&lt;/password&gt;
+ &lt;/server&gt;
+&lt;/servers&gt;
+&lt;/settings&gt;
+</code></p></li>
+<li><p>Use <code>gpg-agent</code> to avoid typing your passphrase 
repeatedly.</p></li>
+</ol>
+
+
+<h2>Preparation</h2>
+
+<ol>
 <li><p>Go to <a href="https://issues.apache.org/jira/browse/MESOS";>Apache 
Jira</a> and make sure that
 the CHANGELOG for the release version is up to date.</p>
 
@@ -125,8 +158,10 @@ the CHANGELOG for the release version is
 <blockquote><p>NOTE: You should use JIRA to generate the CHANGELOG for you. 
Click on the release
   version in <a 
href="https://issues.apache.org/jira/browse/MESOS#selectedTab=com.atlassian.jira.plugin.system.project%3Aversions-panel";>JIRA</a>
 and click
   on the <code>Release Notes</code>. Make sure to configure the release notes 
in text format.</p></blockquote></li>
-<li><p>If not already done, update and commit &lsquo;configure.ac&rsquo; for 
the release.</p></li>
-<li><p>Update and commit the <code>docs/upgrades.md</code> with instructions 
about how to upgrade
+<li><p>If not already done, update and commit <code>configure.ac</code> for 
the release.</p></li>
+<li><p>Update and commit <code>docs/configuration.md</code> to reflect the 
current state of
+the master, slave, and configure flags.</p></li>
+<li><p>Update and commit <code>docs/upgrades.md</code> with instructions about 
how to upgrade
 a live cluster from the previous release version to this release 
version.</p></li>
 <li><p>If this is a major release please write and commit documentation for 
this feature.</p></li>
 </ol>
@@ -156,6 +191,7 @@ It is recommended to use the <code>suppo
    instructions on how to set it up, please refer to 
<code>src/java/MESOS-MAVEN-README</code>.</p></blockquote></li>
 <li><p>It is not uncommon to release multiple release candidates, with 
increasing release candidate
 version, if there are bugs found.</p></li>
+<li><p>Update to the <em>next</em> Mesos version in <code>configure.ac</code>: 
change <code>AC_INIT([mesos], [X.Y.Z]))</code> and commit.</p></li>
 </ol>
 
 

Modified: mesos/site/publish/documentation/latest/upgrades/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/upgrades/index.html?rev=1638021&r1=1638020&r2=1638021&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/upgrades/index.html (original)
+++ mesos/site/publish/documentation/latest/upgrades/index.html Tue Nov 11 
04:11:00 2014
@@ -107,6 +107,21 @@
 
 <p>This document serves as a guide for users who wish to upgrade an existing 
mesos cluster. Some versions require particular upgrade techniques when 
upgrading a running cluster. Some upgrades will have incompatible changes.</p>
 
+<h2>Upgrading from 0.20.x to 0.21.x</h2>
+
+<p><strong>NOTE</strong> Disabling slave checkpointing has been deprecated; 
the slave &ndash;checkpoint flag has been deprecated and will be removed in a 
future release.</p>
+
+<p>In order to upgrade a running cluster:</p>
+
+<ul>
+<li>Install the new master binaries and restart the masters.</li>
+<li>Install the new slave binaries and restart the slaves.</li>
+<li>Upgrade the schedulers by linking the latest native library (mesos jar 
upgrade not necessary).</li>
+<li>Restart the schedulers.</li>
+<li>Upgrade the executors by linking the latest native library and mesos jar 
(if necessary).</li>
+</ul>
+
+
 <h2>Upgrading from 0.19.x to 0.20.x.</h2>
 
 <p><strong>NOTE</strong>: The Mesos API has been changed slightly in this 
release. The CommandInfo has been changed (see below), which makes launching a 
command more flexible. The &lsquo;value&rsquo; field has been changed from 
<em>required</em> to <em>optional</em>. However, it will not cause any issue 
during the upgrade (since the existing schedulers always set this field).</p>

Added: mesos/site/publish/documentation/mesos-containerizer/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/mesos-containerizer/index.html?rev=1638021&view=auto
==============================================================================
--- mesos/site/publish/documentation/mesos-containerizer/index.html (added)
+++ mesos/site/publish/documentation/mesos-containerizer/index.html Tue Nov 11 
04:11:00 2014
@@ -0,0 +1,181 @@
+<!DOCTYPE html>
+<!--
+
+                ______                           __                
+               /\  _  \                         /\ \               
+               \ \ \L\ \  _____      __      ___\ \ \___      __   
+                \ \  __ \/\ '__`\  /'__`\   /'___\ \  _ `\  /'__`\ 
+                 \ \ \/\ \ \ \L\ \/\ \L\.\_/\ \__/\ \ \ \ \/\  __/ 
+                  \ \_\ \_\ \ ,__/\ \__/.\_\ \____\\ \_\ \_\ \____\
+                   \/_/\/_/\ \ \/  \/__/\/_/\/____/ \/_/\/_/\/____/
+                            \ \_\                                  
+                             \/_/                                  
+                                                    
+                      /'\_/`\                                      
+                     /\      \     __    ____    ___     ____      
+                     \ \ \__\ \  /'__`\ /',__\  / __`\  /',__\     
+                      \ \ \_/\ \/\  __//\__, `\/\ \L\ \/\__, `\    
+                       \ \_\\ \_\ \____\/\____/\ \____/\/\____/    
+                        \/_/ \/_/\/____/\/___/  \/___/  \/___/     
+
+-->
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title></title>
+                   <meta name="viewport" content="width=device-width, 
initial-scale=1.0">
+                   <meta name="description" content="">
+                   <meta name="author" content="">
+
+                   <!-- Le styles -->
+                               <link 
href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" 
rel="stylesheet">
+                   
+                   <link href="../../assets/css/main.css" media="screen" 
rel="stylesheet" type="text/css" />
+                               
+                               
+                       
+                       <!-- Google Analytics Magic -->
+                       <script type="text/javascript">
+                         var _gaq = _gaq || [];
+                         _gaq.push(['_setAccount', 'UA-20226872-1']);
+                         _gaq.push(['_setDomainName', 'apache.org']);
+                         _gaq.push(['_trackPageview']);
+
+                         (function() {
+                           var ga = document.createElement('script'); ga.type 
= 'text/javascript'; ga.async = true;
+                           ga.src = ('https:' == document.location.protocol ? 
'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+                           var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+                         })();
+                       </script>
+    </head>
+    <body>
+                       <!-- magical breadcrumbs -->
+                       <div class="topnav">
+                       <ul class="breadcrumb">
+                         <li>
+                                       <div class="dropdown">
+                                         <a data-toggle="dropdown" 
href="#">Apache Software Foundation <span class="caret"></span></a>
+                                         <ul class="dropdown-menu" role="menu" 
aria-labelledby="dLabel">
+                                                       <li><a 
href="http://www.apache.org";>Apache Homepage</a></li>
+                                                       <li><a 
href="http://www.apache.org/licenses/";>License</a></li>
+                                               <li><a 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li>  
+                                               <li><a 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li>
+                                                       <li><a 
href="http://www.apache.org/security/";>Security</a></li>
+                                         </ul>
+                                       </div>
+                               </li>
+                               <li><a href="http://mesos.apache.org";>Apache 
Mesos</a></li>
+                               
+                               
+                                       <li><a href="/documentation
+/">Documentation
+</a></li>
+                               
+                               
+                       </ul><!-- /breadcrumb -->
+                       </div>
+                       
+                       <!-- navbar excitement -->
+           <div class="navbar navbar-static-top" role="navigation">
+             <div class="navbar-inner">
+               <div class="container">
+                                               <a href="/" class="logo"><img 
src="/assets/img/mesos_logo.png" alt="Apache Mesos logo" /></a>
+                                       <div class="nav-collapse">
+                                               <ul class="nav nav-pills 
navbar-right">
+                                                 <li><a 
href="/gettingstarted/">Getting Started</a></li>
+                                                 <li><a 
href="/documentation/latest/">Documentation</a></li>
+                                                 <li><a 
href="/downloads/">Downloads</a></li>
+                                                 <li><a 
href="/community/">Community</a></li>
+                                               </ul>
+                                       </div>
+               </div>
+             </div>
+           </div><!-- /.navbar -->
+
+      <div class="container">
+
+                       <div class="row-fluid">
+       <div class="col-md-4">
+               <h4>If you're new to Mesos</h4>
+               <p>See the <a href="/gettingstarted/">getting started</a> page 
for more information about downloading, building, and deploying Mesos.</p>
+               
+               <h4>If you'd like to get involved or you're looking for 
support</h4>
+               <p>See our <a href="/community/">community</a> page for more 
details.</p>
+       </div>
+       <div class="col-md-8">
+               <h1>Mesos Containerizer</h1>
+
+<p>The MesosContainerizer provides lightweight containerization and
+resource isolation of executors using Linux-specific functionality
+such as control cgroups and namespaces. It is composable so operators
+can selectively enable different isolators.</p>
+
+<p>It also provides basic support for POSIX systems (e.g., OSX) but
+without any actual isolation, only resource usage reporting.</p>
+
+<h3>Shared Filesystem</h3>
+
+<p>The SharedFilesystem isolator can optionally be used on Linux hosts to
+enable modifications to each container&rsquo;s view of the shared
+filesystem.</p>
+
+<p>The modifications are specified in the ContainerInfo included in the
+ExecutorInfo, either by a framework or by using the
+&ndash;default_container_info slave flag.</p>
+
+<p>ContainerInfo specifies Volumes which map parts of the shared
+filesystem (host_path) into the container&rsquo;s view of the filesystem
+(container_path), as read-write or read-only. The host_path can be
+absolute, in which case it will make the filesystem subtree rooted at
+host_path also accessible under container_path for each container.
+If host_path is relative then it is considered as a directory
+relative to the executor&rsquo;s work directory. The directory will be
+created and permissions copied from the corresponding directory (which
+must exist) in the shared filesystem.</p>
+
+<p>The primary use-case for this isolator is to selectively make parts of
+the shared filesystem private to each container. For example, a
+private &ldquo;/tmp&rdquo; directory can be achieved with 
host_path=&ldquo;tmp&rdquo; and
+container_path=&ldquo;/tmp&rdquo; which will create a directory 
&ldquo;tmp&rdquo; inside the
+executor&rsquo;s work directory (mode 1777) and simultaneously mount it as
+/tmp inside the container. This is transparent to processes running
+inside the container. Containers will not be able to see the host&rsquo;s
+/tmp or any other container&rsquo;s /tmp.</p>
+
+<h3>Pid Namespace</h3>
+
+<p>The Pid Namespace isolator can be used to isolate each container in
+a separate pid namespace with two main benefits:
+1. Visibility: Processes running in the container (executor and
+   descendants) are unable to see or signal processes outside the
+   namespace.
+2. Clean termination: Termination of the leading process in a pid
+   namespace will result in the kernel terminating all other processes
+   in the namespace.</p>
+
+<p>The Launcher will use (2) during destruction of a container in
+preference to the freezer cgroup, avoiding known kernel issues related
+to freezing cgroups under OOM conditions.</p>
+
+<p>/proc will be mounted for containers so tools such as &lsquo;ps&rsquo; will 
work
+correctly.</p>
+
+       </div>
+</div>
+
+                       
+             <hr>
+
+                               <!-- footer -->
+             <div class="footer">
+               <p>&copy; 2012-2014 <a href="http://apache.org";>The Apache 
Software Foundation</a>.
+               Apache Mesos, the Apache feather logo, and the Apache Mesos 
project logo are trademarks of The Apache Software Foundation.<p>
+             </div><!-- /footer -->
+
+           </div> <!-- /container -->
+
+           <!-- JS -->
+           <script src="//code.jquery.com/jquery-1.11.0.min.js" 
type="text/javascript"></script>
+                       <script 
src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js" 
type="text/javascript"></script>
+    </body>
+</html>
\ No newline at end of file

Added: mesos/site/publish/documentation/modules/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/modules/index.html?rev=1638021&view=auto
==============================================================================
--- mesos/site/publish/documentation/modules/index.html (added)
+++ mesos/site/publish/documentation/modules/index.html Tue Nov 11 04:11:00 2014
@@ -0,0 +1,483 @@
+<!DOCTYPE html>
+<!--
+
+                ______                           __                
+               /\  _  \                         /\ \               
+               \ \ \L\ \  _____      __      ___\ \ \___      __   
+                \ \  __ \/\ '__`\  /'__`\   /'___\ \  _ `\  /'__`\ 
+                 \ \ \/\ \ \ \L\ \/\ \L\.\_/\ \__/\ \ \ \ \/\  __/ 
+                  \ \_\ \_\ \ ,__/\ \__/.\_\ \____\\ \_\ \_\ \____\
+                   \/_/\/_/\ \ \/  \/__/\/_/\/____/ \/_/\/_/\/____/
+                            \ \_\                                  
+                             \/_/                                  
+                                                    
+                      /'\_/`\                                      
+                     /\      \     __    ____    ___     ____      
+                     \ \ \__\ \  /'__`\ /',__\  / __`\  /',__\     
+                      \ \ \_/\ \/\  __//\__, `\/\ \L\ \/\__, `\    
+                       \ \_\\ \_\ \____\/\____/\ \____/\/\____/    
+                        \/_/ \/_/\/____/\/___/  \/___/  \/___/     
+
+-->
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title></title>
+                   <meta name="viewport" content="width=device-width, 
initial-scale=1.0">
+                   <meta name="description" content="">
+                   <meta name="author" content="">
+
+                   <!-- Le styles -->
+                               <link 
href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" 
rel="stylesheet">
+                   
+                   <link href="../../assets/css/main.css" media="screen" 
rel="stylesheet" type="text/css" />
+                               
+                               
+                       
+                       <!-- Google Analytics Magic -->
+                       <script type="text/javascript">
+                         var _gaq = _gaq || [];
+                         _gaq.push(['_setAccount', 'UA-20226872-1']);
+                         _gaq.push(['_setDomainName', 'apache.org']);
+                         _gaq.push(['_trackPageview']);
+
+                         (function() {
+                           var ga = document.createElement('script'); ga.type 
= 'text/javascript'; ga.async = true;
+                           ga.src = ('https:' == document.location.protocol ? 
'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+                           var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+                         })();
+                       </script>
+    </head>
+    <body>
+                       <!-- magical breadcrumbs -->
+                       <div class="topnav">
+                       <ul class="breadcrumb">
+                         <li>
+                                       <div class="dropdown">
+                                         <a data-toggle="dropdown" 
href="#">Apache Software Foundation <span class="caret"></span></a>
+                                         <ul class="dropdown-menu" role="menu" 
aria-labelledby="dLabel">
+                                                       <li><a 
href="http://www.apache.org";>Apache Homepage</a></li>
+                                                       <li><a 
href="http://www.apache.org/licenses/";>License</a></li>
+                                               <li><a 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li>  
+                                               <li><a 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li>
+                                                       <li><a 
href="http://www.apache.org/security/";>Security</a></li>
+                                         </ul>
+                                       </div>
+                               </li>
+                               <li><a href="http://mesos.apache.org";>Apache 
Mesos</a></li>
+                               
+                               
+                                       <li><a href="/documentation
+/">Documentation
+</a></li>
+                               
+                               
+                       </ul><!-- /breadcrumb -->
+                       </div>
+                       
+                       <!-- navbar excitement -->
+           <div class="navbar navbar-static-top" role="navigation">
+             <div class="navbar-inner">
+               <div class="container">
+                                               <a href="/" class="logo"><img 
src="/assets/img/mesos_logo.png" alt="Apache Mesos logo" /></a>
+                                       <div class="nav-collapse">
+                                               <ul class="nav nav-pills 
navbar-right">
+                                                 <li><a 
href="/gettingstarted/">Getting Started</a></li>
+                                                 <li><a 
href="/documentation/latest/">Documentation</a></li>
+                                                 <li><a 
href="/downloads/">Downloads</a></li>
+                                                 <li><a 
href="/community/">Community</a></li>
+                                               </ul>
+                                       </div>
+               </div>
+             </div>
+           </div><!-- /.navbar -->
+
+      <div class="container">
+
+                       <div class="row-fluid">
+       <div class="col-md-4">
+               <h4>If you're new to Mesos</h4>
+               <p>See the <a href="/gettingstarted/">getting started</a> page 
for more information about downloading, building, and deploying Mesos.</p>
+               
+               <h4>If you'd like to get involved or you're looking for 
support</h4>
+               <p>See our <a href="/community/">community</a> page for more 
details.</p>
+       </div>
+       <div class="col-md-8">
+               <h1>Mesos Modules</h1>
+
+<p>Experimental support for Mesos modules was introduced in Mesos 0.21.0.</p>
+
+<h3>Disclaimer</h3>
+
+<ul>
+<li><p>Use and development of Mesos modules is at own risk! Only graced modules
+(modules that are part of Mesos distribution) are maintained by the Mesos
+project.</p></li>
+<li><p>Please direct all questions to the relevant module writer and/or write 
to
[email protected]. Questions related to modules sent to user and dev 
list
+will be redirected to the modules list.</p></li>
+</ul>
+
+
+<h2>What are Mesos modules?</h2>
+
+<p>Mesos modules provide a way to easily extend inner workings of Mesos by 
creating
+and using shared libraries that are loaded on demand.  Modules can be used to
+customize Mesos without having to recompiling/relinking for each specific use
+case.  Modules can isolate external dependencies into separate libraries, thus
+resulting into a smaller Mesos core.
+Modules also make it easy to experiment with new features.
+For example, imagine loadable allocators that contain a VM (Lua, Python, 
&hellip;)
+which makes it possible to try out new allocator algorithms written in
+scripting languages without forcing those dependencies into the project.
+Finally, modules provide an easy way for third parties to easily extend Mesos
+without having to know all the internal details.</p>
+
+<h2>Invoking Mesos modules</h2>
+
+<p>The command-line flag <code>--modules</code> is available for Mesos master, 
slave, and
+tests to specify a list of modules to be loaded and be available to the 
internal
+subsystems.</p>
+
+<p>Use <code>--modules=filepath</code> to specify the list of modules via a
+file containing a JSON formatted string. &lsquo;filepath&rsquo; can be
+of the form &lsquo;file:///path/to/file&rsquo; or 
&lsquo;/path/to/file&rsquo;.</p>
+
+<p>Use <code>--modules="{...}"</code> to specify the list of modules 
inline.</p>
+
+<h3>Example JSON strings:</h3>
+
+<ol>
+<li><p>Load a library <code>libfoo.so</code> with two modules 
<code>org_apache_mesos_bar</code> and
+<code>org_apache_mesos_baz</code>.</p>
+
+<pre><code>{
+  "libraries": [
+    {
+      "file": "/path/to/libfoo.so",
+      "modules": [
+        {
+          "name": "org_apache_mesos_bar",
+        },
+        {
+          "name": "org_apache_mesos_baz"
+        }
+      ]
+    }
+  ]
+}
+</code></pre></li>
+<li><p>Load the module <code>org_apache_mesos_bar</code> from the library 
<code>foo</code> and pass
+the command-line argument <code>X</code> with value <code>Y</code> (module 
<code>org_apache_mesos_baz</code>
+is loaded without any command-line parameters):</p>
+
+<pre><code>{
+  "libraries": [
+    {
+      "name": "foo",
+      "modules": [
+        {
+          "name": "org_apache_mesos_bar"
+          "parameters": [
+            {
+              "key": "X",
+              "value": "Y",
+            }
+          ]
+        },
+        {
+          "name": "org_apache_mesos_bar"
+        }
+      ]
+    }
+  ]
+}
+</code></pre></li>
+<li><p>Specifying modules inline:</p>
+
+<pre><code>--modules='{"libraries":[{"file":"/path/to/libfoo.so", 
"modules":[{"name":"org_apache_mesos_bar"}]}]}'
+</code></pre></li>
+</ol>
+
+
+<h3>Library names</h3>
+
+<p>For each library, at least one of the &ldquo;file&rdquo; or 
&ldquo;path&rdquo; parameter must be
+specified.  The &ldquo;file&rdquo; parameter may refer to a filename (e.g., 
&ldquo;libfoo.so&rdquo;), a
+relative path (e.g., &ldquo;myLibs/libfoo.so&rdquo;), or an absolute path 
(e.g.,
+&ldquo;/home/mesos/lib/libfoo.so&rdquo;).  The &ldquo;name&rdquo; parameter 
refers to a library name
+(e.g., &ldquo;foo&rdquo;).  If &ldquo;name&rdquo; is specified, it is 
automatically expanded to a proper
+library name for the current platform (e.g., &ldquo;foo&rdquo; gets expanded 
to &ldquo;libfoo.so&rdquo;
+on Linux, and &ldquo;libfoo.dylib&rdquo; on OS X).</p>
+
+<p>If a library path is not specified in the &ldquo;file&rdquo; parameter, the 
library is
+searched in the standard library paths or directories pointed to by the
+<code>LD_LIBRARY_PATH</code> (<code>DYLD_LIBRARY_PATH</code> on OS X) 
environment variable.</p>
+
+<p>If both &ldquo;file&rdquo; and &ldquo;name&rdquo; are specified, 
&ldquo;name&rdquo; is ignored.</p>
+
+<h2>What kinds of modules are supported?</h2>
+
+<p>Mesos currently only provides Isolator and Authentication modules.  
Additional
+graced modules will be added in the near future.</p>
+
+<h2>Writing Mesos modules</h2>
+
+<h3>A HelloWorld module</h3>
+
+<p>The following snippet describes the implementation of a module named
+&ldquo;org_apache_mesos_bar&rdquo; of &ldquo;TestModule&rdquo; kind:</p>
+
+<pre><code>  #include &lt;iostream&gt;
+  #include "test_module.hpp"
+
+  class TestModuleImpl : public TestModule
+  {
+  public:
+    TestModuleImpl()
+    {
+      std::cout &lt;&lt; "HelloWorld!" &lt;&lt; std::endl;
+    }
+
+    virtual int foo(char a, long b)
+    {
+      return a + b;
+    }
+
+    virtual int bar(float a, double b)
+    {
+      return a * b;
+    }
+  };
+
+  static TestModule* create()
+  {
+      return new TestModule();
+  }
+
+  static bool compatible()
+  {
+    return true;
+  }
+
+  // Declares a module named 'example' of 'TestModule' kind.
+  // Mesos core binds the module instance pointer as needed.
+  // The compatible() hook is provided by the module for compatibility checks.
+  // The create() hook returns an object of type 'TestModule'.
+  mesos::modules::Module&lt;TestModule&gt; org_apache_mesos_TestModule(
+      MESOS_MODULE_API_VERSION,
+      MESOS_VERSION,
+      "Apache Mesos",
+      "[email protected]",
+      "This is a test module.",
+      compatible,
+      create);
+</code></pre>
+
+<h3>Building a module</h3>
+
+<p>  The following assumes that Mesos is installed in the standard location, 
i.e.
+  the Mesos dynamic library and header files are available.
+<code>
+  g++ -lmesos -fpic -o test_module.o test_module.cpp
+  $ gcc -shared -o libtest_module.so test_module.o
+</code></p>
+
+<h3>Testing a modules</h3>
+
+<p>Apart from testing the module by hand with explicit use of &ndash;modules 
flag, one
+can run the entire mesos test suite with the given module. For example, the
+following command will run the mesos test suite with the
+<code>org_apache_mesos_TestCpuIsolator</code> module selected for isolation:
+<code>
+./bin/mesos-tests.sh 
--modules="/home/kapil/mesos/isolator-module/modules.json" 
--isolation="org_apache_mesos_TestCpuIsolator"
+</code></p>
+
+<h3>Module naming convention</h3>
+
+<p>Each module name should be unique.  Having duplicate module names in the 
Json
+string will cause the process to abort.</p>
+
+<p>Therefore, we encourage module writers to name their modules according to 
Java
+package naming scheme
+(http://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html).</p>
+
+<p>For example:</p>
+
+<table>
+<tr>
+<th> Module Name </th> <th> Module Domain name </th> <th> Module Symbol Name 
</th>
+</tr>
+
+<tr>
+<td> foobar      </td> <td> mesos.apache.org   </td> <td> 
org_apache_mesos_foobar </td>
+</tr>
+
+<tr>
+<td> barBaz      </td> <td> example.com        </td> <td> com_example_barBaz   
    </td>
+</table>
+
+
+<p>In short:
+- Keep case of module name.
+- Lower case and reverse domain.
+- Separate with underscore.
+- Do not simply use the kind name as module name.
+- Different modules from the same organization still need different names.</p>
+
+<h2>Module Versioning and backwards compatibility</h2>
+
+<p>Before loading the above module, a dynamic library that contains the module
+needs to be loaded into Mesos. This happens early in Mesos startup code. The
+Mesos developer does not need to touch that code when introducing new module
+kinds.  However, the developer is responsible for registering what versions of
+any given module are expected to remain compatible with Mesos as it progresses.
+This information is maintained in a table in 
<code>src/module/manager.cpp</code>. It
+contains an entry for every possible module kind that Mesos recognizes, each
+with a corresponding Mesos release version number. This number needs to be
+adjusted by the Mesos developer to reflect the current Mesos version whenever
+compatibility between Mesos and modules that get compiled against it gets
+broken. Given that module implementation for older Mesos versions can still be
+written in the future, this may be impossible to tell and so in doubt it is 
best
+to just bump the required module version to the current Mesos version. But if
+one can be reasonably sure, assuming cooperative module developers, that a
+certain kind of module will continue to function across several Mesos versions,
+the table provides an easy way to specify this.</p>
+
+<p>For successfully loading the module, the following relationship
+must exist between the various versions:</p>
+
+<p><code> kind version &lt;= Library version &lt;= Mesos version</code></p>
+
+<table>
+<tr>
+<td>Mesos </td> <td>kind version </td> <td> Library </td> <td>Is module 
loadable </td> <td>Reason </td>
+</tr>
+
+<tr>
+<td>0.18.0 </td> <td> 0.18.0 </td> <td> 0.18.0  </td> <td> yes </td> <td> </td>
+</tr>
+
+<tr>
+<td>0.29.0 </td> <td> 0.18.0 </td> <td> 0.18.0  </td> <td> yes </td> <td> </td>
+</tr>
+
+<tr>
+<td>0.29.0 </td> <td> 0.18.0 </td> <td> 0.21.0  </td> <td> yes </td> <td> </td>
+</tr>
+
+<tr>
+<td>0.18.0 </td> <td> 0.18.0 </td> <td> 0.29.0  </td> <td> NO </td> <td> 
Library compiled against a newer Mesos release.                </td>
+</tr>
+
+<tr>
+<td>0.29.0 </td> <td> 0.21.0 </td> <td> 0.18.0  </td> <td> NO </td> <td> 
Module/Library older than the kind version supported by Mesos. </td>
+<tr>
+</tr>
+
+<tr>
+<td>0.29.0 </td> <td> 0.29.0 </td> <td> 0.18.0  </td> <td> NO </td> <td> 
Module/Library older than the kind version supported by Mesos. </td>
+</tr>
+</table>
+
+
+<h2>Mesos module API changes</h2>
+
+<p>Record of incompatible changes to the modules API.</p>
+
+<h3>Version 2</h3>
+
+<ul>
+<li>Added support for module-specific command-line parameters.</li>
+<li>Changed function signature for create().</li>
+</ul>
+
+
+<h3>Version 1</h3>
+
+<p>Initial version of the modules API.</p>
+
+<h2>Appendix:</h2>
+
+<h3>JSON Schema:</h3>
+
+<pre><code>  {
+    "type":"object",
+    "required":false,
+    "properties":{
+      "libraries": {
+        "type":"array",
+        "required":false,
+        "items":
+        {
+          "type":"object",
+          "required":false,
+          "properties":{
+            "file": {
+              "type":"string",
+              "required":false
+            },
+            "name": {
+              "type":"string",
+              "required":false
+            },
+            "modules": {
+              "type":"array",
+              "required":false,
+              "items":
+              {
+                "type":"object",
+                "required":false,
+                "properties":{
+                  "name": {
+                    "type":"string",
+                    "required":true
+                  },
+                  "parameters": {
+                    "type":"array",
+                    "required":false,
+                    "items":
+                    {
+                      "type":"object",
+                      "required":false,
+                      "properties":{
+                        "key": {
+                          "type":"string",
+                          "required":true
+                        },
+                        "value": {
+                          "type":"string",
+                          "required":true
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+</code></pre>
+
+       </div>
+</div>
+
+                       
+             <hr>
+
+                               <!-- footer -->
+             <div class="footer">
+               <p>&copy; 2012-2014 <a href="http://apache.org";>The Apache 
Software Foundation</a>.
+               Apache Mesos, the Apache feather logo, and the Apache Mesos 
project logo are trademarks of The Apache Software Foundation.<p>
+             </div><!-- /footer -->
+
+           </div> <!-- /container -->
+
+           <!-- JS -->
+           <script src="//code.jquery.com/jquery-1.11.0.min.js" 
type="text/javascript"></script>
+                       <script 
src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js" 
type="text/javascript"></script>
+    </body>
+</html>
\ No newline at end of file

Modified: mesos/site/publish/documentation/powered-by-mesos/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/powered-by-mesos/index.html?rev=1638021&r1=1638020&r2=1638021&view=diff
==============================================================================
--- mesos/site/publish/documentation/powered-by-mesos/index.html (original)
+++ mesos/site/publish/documentation/powered-by-mesos/index.html Tue Nov 11 
04:11:00 2014
@@ -116,6 +116,8 @@
 <li><a href="http://cloudphysics.com";>CloudPhysics</a></li>
 <li><a href="http://www.conviva.com";>Conviva</a></li>
 <li><a href="http://www.corvisacloud.com/";>CorvisaCloud</a></li>
+<li><a href="http://www.crpgl.lu";>CRP-Gabriel Lippmann</a></li>
+<li><a href="http://www.daemon.com.au";>Daemon</a></li>
 <li><a href="http://www.devicescape.com";>Devicescape</a></li>
 <li><a href="http://www.duedil.com";>DueDil</a></li>
 <li><a href="http://www.ebay.com";>eBay</a></li>
@@ -140,6 +142,7 @@
 <li><a href="http://www.pinkbike.com";>Pinkbike</a></li>
 <li><a href="http://www.profitstars.com";>ProfitStars</a></li>
 <li><a href="http://www.qubitproducts.com";>Qubit</a></li>
+<li><a href="http://revise.ly";>Revisely</a></li>
 <li><a href="http://www.sailthru.com";>Sailthru</a></li>
 <li><a href="http://www.sharethrough.com";>Sharethrough</a></li>
 <li><a href="http://www.sigmoidanalytics.com/";>Sigmoid Analytics</a></li>

Modified: mesos/site/publish/documentation/release-guide/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/release-guide/index.html?rev=1638021&r1=1638020&r2=1638021&view=diff
==============================================================================
--- mesos/site/publish/documentation/release-guide/index.html (original)
+++ mesos/site/publish/documentation/release-guide/index.html Tue Nov 11 
04:11:00 2014
@@ -112,6 +112,39 @@
 <h2>Prerequisites</h2>
 
 <ol>
+<li><p>Ensure that you have a GPG key or generate a new one, e.g., using 
<code>gpg --gen-key</code>.</p></li>
+<li><p>Add your GPG public key to the Apache Mesos dist repository in the KEYS 
file.</p></li>
+<li>Fetch the svn repository <code>svn co 
https://dist.apache.org/repos/dist/release/mesos</code></li>
+<li>Append your public key using one of methods described in KEYS,
+e.g., <code>(gpg --list-sigs &lt;your name&gt; &amp;&amp; gpg --armor --export 
&lt;your name&gt;) &gt;&gt; KEYS</code>.</li>
+<li><p>Push the commit: <code>svn ci</code></p></li>
+<li><p>Submit your GPG public key to a keyserver, e.g., <a 
href="https://pgp.mit.edu";>MIT PGP Public Key Server</a>.</p></li>
+<li><p>Add your GPG fingerprint to your <a 
href="https://id.apache.org/";>Apache account</a>.</p></li>
+<li><p>Create a Maven settings file (<code>~/.m2/settings.xml</code>) for the 
Apache
+servers. Encrypt your Apache password using <code>mvn 
--encrypt-password</code>.
+<code>
+&lt;settings&gt;
+&lt;servers&gt;
+ &lt;server&gt;
+   &lt;id&gt;apache.snapshots.https&lt;/id&gt;
+   &lt;username&gt;APACHE USERNAME&lt;/username&gt;
+   &lt;password&gt;APACHE ENCRYPTED PASSWORD&lt;/password&gt;
+ &lt;/server&gt;
+ &lt;server&gt;
+   &lt;id&gt;apache.releases.https&lt;/id&gt;
+   &lt;username&gt;APACHE USERNAME&lt;/username&gt;
+   &lt;password&gt;APACHE ENCRYPTED PASSWORD&lt;/password&gt;
+ &lt;/server&gt;
+&lt;/servers&gt;
+&lt;/settings&gt;
+</code></p></li>
+<li><p>Use <code>gpg-agent</code> to avoid typing your passphrase 
repeatedly.</p></li>
+</ol>
+
+
+<h2>Preparation</h2>
+
+<ol>
 <li><p>Go to <a href="https://issues.apache.org/jira/browse/MESOS";>Apache 
Jira</a> and make sure that
 the CHANGELOG for the release version is up to date.</p>
 
@@ -125,8 +158,10 @@ the CHANGELOG for the release version is
 <blockquote><p>NOTE: You should use JIRA to generate the CHANGELOG for you. 
Click on the release
   version in <a 
href="https://issues.apache.org/jira/browse/MESOS#selectedTab=com.atlassian.jira.plugin.system.project%3Aversions-panel";>JIRA</a>
 and click
   on the <code>Release Notes</code>. Make sure to configure the release notes 
in text format.</p></blockquote></li>
-<li><p>If not already done, update and commit &lsquo;configure.ac&rsquo; for 
the release.</p></li>
-<li><p>Update and commit the <code>docs/upgrades.md</code> with instructions 
about how to upgrade
+<li><p>If not already done, update and commit <code>configure.ac</code> for 
the release.</p></li>
+<li><p>Update and commit <code>docs/configuration.md</code> to reflect the 
current state of
+the master, slave, and configure flags.</p></li>
+<li><p>Update and commit <code>docs/upgrades.md</code> with instructions about 
how to upgrade
 a live cluster from the previous release version to this release 
version.</p></li>
 <li><p>If this is a major release please write and commit documentation for 
this feature.</p></li>
 </ol>
@@ -156,6 +191,7 @@ It is recommended to use the <code>suppo
    instructions on how to set it up, please refer to 
<code>src/java/MESOS-MAVEN-README</code>.</p></blockquote></li>
 <li><p>It is not uncommon to release multiple release candidates, with 
increasing release candidate
 version, if there are bugs found.</p></li>
+<li><p>Update to the <em>next</em> Mesos version in <code>configure.ac</code>: 
change <code>AC_INIT([mesos], [X.Y.Z]))</code> and commit.</p></li>
 </ol>
 
 

Modified: mesos/site/publish/documentation/upgrades/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/upgrades/index.html?rev=1638021&r1=1638020&r2=1638021&view=diff
==============================================================================
--- mesos/site/publish/documentation/upgrades/index.html (original)
+++ mesos/site/publish/documentation/upgrades/index.html Tue Nov 11 04:11:00 
2014
@@ -107,6 +107,21 @@
 
 <p>This document serves as a guide for users who wish to upgrade an existing 
mesos cluster. Some versions require particular upgrade techniques when 
upgrading a running cluster. Some upgrades will have incompatible changes.</p>
 
+<h2>Upgrading from 0.20.x to 0.21.x</h2>
+
+<p><strong>NOTE</strong> Disabling slave checkpointing has been deprecated; 
the slave &ndash;checkpoint flag has been deprecated and will be removed in a 
future release.</p>
+
+<p>In order to upgrade a running cluster:</p>
+
+<ul>
+<li>Install the new master binaries and restart the masters.</li>
+<li>Install the new slave binaries and restart the slaves.</li>
+<li>Upgrade the schedulers by linking the latest native library (mesos jar 
upgrade not necessary).</li>
+<li>Restart the schedulers.</li>
+<li>Upgrade the executors by linking the latest native library and mesos jar 
(if necessary).</li>
+</ul>
+
+
 <h2>Upgrading from 0.19.x to 0.20.x.</h2>
 
 <p><strong>NOTE</strong>: The Mesos API has been changed slightly in this 
release. The CommandInfo has been changed (see below), which makes launching a 
command more flexible. The &lsquo;value&rsquo; field has been changed from 
<em>required</em> to <em>optional</em>. However, it will not cause any issue 
during the upgrade (since the existing schedulers always set this field).</p>


Reply via email to