Added: mesos/site/publish/documentation/markdown-style-guide/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/markdown-style-guide/index.html?rev=1707725&view=auto
==============================================================================
--- mesos/site/publish/documentation/markdown-style-guide/index.html (added)
+++ mesos/site/publish/documentation/markdown-style-guide/index.html Fri Oct  9 
13:33:18 2015
@@ -0,0 +1,213 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title></title>
+                   <meta name="viewport" content="width=device-width, 
initial-scale=1.0">
+
+                   <link 
href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" 
rel="stylesheet">
+                   <link rel="alternate" type="application/atom+xml" 
title="Apache Mesos Blog" href="/blog/feed.xml">
+                   
+                   <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 Markdown Style Guide</h1>
+
+<p>This guide introduces a consistent documentation style to be used across 
the entire non-code documentation.
+User guides and non-code technical documentation are stored in markdown files 
in the <code>docs/</code> folder. These files get rendered for the <a 
href="http://mesos.apache.org/documentation/latest/";>online 
documentation</a>.</p>
+
+<p><strong>NOTE:</strong> As of right now this is work in progress and the 
existing documentation might not yet comply to this style.</p>
+
+<h2>What to document?</h2>
+
+<p>Any new substantial feature should be documented in its own markdown file.
+If the link between source code and documentation is not obvious, consider 
inserting a short code comment stating that there is non-code documentation 
that needs to be kept in sync and indicating where it is located.</p>
+
+<h2>Keep documentation and style-guides in sync with code.</h2>
+
+<p>When changing code consider whether you need to update the documentation.
+This is especially relevant when introducing new or updating existing command 
line flags.
+These should be reflected in <code>configuration.md</code>!</p>
+
+<h2>Code Examples</h2>
+
+<p>Code examples should be specified as follows:</p>
+
+<pre><code>~~~{.cpp}
+int main(int argc, char** argv)
+{
+  ....
+}
+~~~
+</code></pre>
+
+<p><strong>NOTE:</strong> Because of shortcomings of Doxygen&rsquo;s markdown 
parser we currently use indentation for wrapping all non C++ code blocks.</p>
+
+<h2>Notes/Emphasis</h2>
+
+<p>Notes are used to highlight important parts of the text and should be 
specified as follows.</p>
+
+<pre><code class="{.txt}">**NOTE:**  Short note.
+Continued longer note.
+</code></pre>
+
+<p>We use single backticks to highlight individual words in a sentence such as 
certain identifiers:</p>
+
+<pre><code class="{.txt}">Use the default `HierarchicalDRF` allocator....
+</code></pre>
+
+<h2>Commands</h2>
+
+<p>We use single backticks to highlight sample commands as follows:</p>
+
+<pre><code class="{.txt}">`mesos-master --help`
+</code></pre>
+
+<h2>Files/Path</h2>
+
+<p>Files and path references should be specified as follows:</p>
+
+<pre><code class="{.text}">Remember you can also use the 
`file:///path/to/file` or `/path/to/file`
+</code></pre>
+
+<h2>Tables</h2>
+
+<p>In order to avoid problems with markdown formatting we should specify 
tables in html directly:</p>
+
+<p>~~~{.html}</p>
+
+<table class="table table-striped">
+  <thead>
+    <tr>
+      <th width="30%">
+        Flag
+      </th>
+      <th>
+        Explanation
+      </th>
+  </thead>
+  <tr>
+    <td>
+      --ip=VALUE
+    </td>
+    <td>
+      IP address to listen on
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --[no-]help
+    </td>
+    <td>
+      Prints this help message (default: false)
+
+    </td>
+  </tr>
+</table>
+
+
+<pre><code>
+
+## Indendation and Whitespace
+
+We use no extra indentation in markdown files.
+We have one new line after section headings and two blank lines
+in between sections.
+</code></pre>
+
+<p>&hellip; end of previous section.</p>
+
+<h2>New Section</h2>
+
+<p>Beginning of new section &hellip;.
+~~~</p>
+
+       </div>
+</div>
+
+                       
+             <hr>
+
+                               <!-- footer -->
+             <div class="footer">
+               <p>&copy; 2012-2015 <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>

Modified: mesos/site/publish/documentation/mesos-documentation-guide/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/mesos-documentation-guide/index.html?rev=1707725&r1=1707724&r2=1707725&view=diff
==============================================================================
--- mesos/site/publish/documentation/mesos-documentation-guide/index.html 
(original)
+++ mesos/site/publish/documentation/mesos-documentation-guide/index.html Fri 
Oct  9 13:33:18 2015
@@ -94,6 +94,8 @@
 
 <p>  User guides and non-code technical documentation are stored in markdown 
files in the <code>docs/</code> folder. These files get rendered for the <a 
href="http://mesos.apache.org/documentation/latest/";>online 
documentation</a>.</p>
 
+<p>  We will accept small documentation changes on <a 
href="https://github.com/apache/mesos";>Github via a pull request</a>, larger 
documentation changes should go through the 
(reviewboard)[https://reviews.apache.org/groups/mesos/]</p>
+
 <ol>
 <li><a href="/documentation/latest/mesos-doxygen-style-guide/">Doxygen API 
Documentation and Developer Guides as part of source code</a></li>
 </ol>

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=1707725&r1=1707724&r2=1707725&view=diff
==============================================================================
--- mesos/site/publish/documentation/powered-by-mesos/index.html (original)
+++ mesos/site/publish/documentation/powered-by-mesos/index.html Fri Oct  9 
13:33:18 2015
@@ -177,7 +177,7 @@
 
 <h2>Software projects built on Mesos</h2>
 
-<p>See the <a href="/documentation/latest/mesos-frameworks/">Mesos frameworks 
page</a> for a list of apps built on top of Mesos, and instructions on how to 
use them.</p>
+<p>See the <a href="/documentation/latest/frameworks/">Mesos frameworks 
page</a> for a list of apps built on top of Mesos, and instructions on how to 
use them.</p>
 
 <p>If you&rsquo;re using Mesos, please add yourself to the list above, or 
email [email protected] and we&rsquo;ll add you!</p>
 

Added: mesos/site/publish/documentation/presentations/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/presentations/index.html?rev=1707725&view=auto
==============================================================================
--- mesos/site/publish/documentation/presentations/index.html (added)
+++ mesos/site/publish/documentation/presentations/index.html Fri Oct  9 
13:33:18 2015
@@ -0,0 +1,212 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title></title>
+                   <meta name="viewport" content="width=device-width, 
initial-scale=1.0">
+
+                   <link 
href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" 
rel="stylesheet">
+                   <link rel="alternate" type="application/atom+xml" 
title="Apache Mesos Blog" href="/blog/feed.xml">
+                   
+                   <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>Video and Slides of Mesos Presentations</h1>
+
+<p><em>(Listed in date descending order)</em></p>
+
+<h2>Building and Deploying Applications to Apache Mesos</h2>
+
+<p>(<a 
href="https://www.slideshare.net/charmalloc/buildingdeployingapplicationsmesos";>Slides</a>)
+Joe Stein
+Presented February 26, 2015 at <a 
href="http://www.meetup.com/DigitalOcean_Community/events/220580767/";>DigitalOcean
 Community Meetup</a></p>
+
+<h2>MesosCon 2014</h2>
+
+<p> <a 
href="https://www.youtube.com/playlist?list=PLDVc2EaAVPg9kp8cFzjR1Yxj96I4U5EGN";>Video
 playlist</a></p>
+
+<h2>Datacenter Computing with Apache Mesos</h2>
+
+<p>(<a 
href="http://www.slideshare.net/pacoid/datacenter-computing-with-apache-mesos";>Slides</a>)
+Paco Nathan
+Presented April 15, 2014 at <a 
href="http://www.meetup.com/bigdatadc/events/172610652/";>Big Data DC 
Meetup</a></p>
+
+<h2>Apache Spark at Viadeo (Running on Mesos)</h2>
+
+<p>(<a 
href="https://speakerdeck.com/ecepoi/apache-spark-at-viadeo";>Slides</a>, <a 
href="http://www.youtube.com/watch?v=shaZslr49vQ&amp;t=16m55s";>Video</a>)
+Eugen Cepoi
+Presented April 9, 2014 at Paris Hadoop User Group</p>
+
+<h2>Mesos, HubSpot, and Singularity</h2>
+
+<p>(<a href="https://www.youtube.com/watch?v=ROn14csiikw";>Video</a>)
+Tom Petr
+Presented April 3rd, 2014 at @TwitterOSS #conf</p>
+
+<h2>Building Distributed Frameworks on Mesos</h2>
+
+<p>(<a href="https://www.youtube.com/watch?v=n5GT7OFSh58";>Video</a>)
+Benjamin Hindman
+Presented March 25th, 2014 at <a 
href="https://www.eventbrite.com/e/aurora-and-mesosframeworksmeetup-tickets-10850994617";>Aurora
 and Mesos Frameworks Meetup</a></p>
+
+<h2>Introduction to Apache Aurora</h2>
+
+<p>(<a href="https://www.youtube.com/watch?v=asd_h6VzaJc";>Video</a>)
+Bill Farner
+Presented March 25th, 2014 at <a 
href="https://www.eventbrite.com/e/aurora-and-mesosframeworksmeetup-tickets-10850994617";>Aurora
 and Mesos Frameworks Meetup</a></p>
+
+<h2>Improving Resource Efficiency with Apache Mesos</h2>
+
+<p>(<a href="https://www.youtube.com/watch?v=YpmElyi94AA";>Video</a>)
+Christina Delimitrou
+Presented April 3rd, 2014 at @TwitterOSS #conf</p>
+
+<h3>Apache Mesos as an SDK for Building Distributed Frameworks (<a 
href="http://www.slideshare.net/pacoid/strata-sc-2014-apache-mesos-as-an-sdk-for-building-distributed-frameworks";>Slides</a>)</h3>
+
+<p>Paco Nathan
+Presented February 13th, 2014 at <a 
href="http://strataconf.com/";>Strata</a></p>
+
+<h3>Run your data center like Google&rsquo;s with Apache Mesos (<a 
href="https://www.youtube.com/watch?v=2YWVGMuMTrg";>Video + Demo</a>)</h3>
+
+<p>Abhishek Parolkar
+Presented November 14th, 2013 at <a href="http://www.cloudexpoasia.com/";>Cloud 
Expo Asia 2013</a></p>
+
+<h3>Datacenter Management with Mesos (<a 
href="http://www.youtube.com/watch?v=YB1VW0LKzJ4";>Video</a>)</h3>
+
+<p>Benjamin Hindman
+Presented August 29th, 2013 at <a href="http://ampcamp.berkeley.edu/3/";>AMP 
Camp</a></p>
+
+<h3>Building a Framework on Mesos: A Case Study with Jenkins (<a 
href="http://www.youtube.com/watch?v=TPXw_lMTJVk";>Video</a>)</h3>
+
+<p>Vinod Kone
+Presented July 25, 2013 at <a 
href="http://www.meetup.com/Distributed-data-processing-with-Mesos/events/128585772/";>SF
 Mesos Meetup</a></p>
+
+<h3>Hadoop on Mesos (<a 
href="http://www.youtube.com/watch?v=SFj5EMw8THk";>Video</a>)</h3>
+
+<p>Brenden Matthews
+Presented July 25, 2013 at <a 
href="http://www.meetup.com/Distributed-data-processing-with-Mesos/events/128585772/";>SF
 Mesos Meetup</a></p>
+
+<h3>Introduction to Apache Mesos (<a 
href="https://speakerdeck.com/benh/apache-mesos-nyc-meetup";>Slides</a>)</h3>
+
+<p>Benjamin Hindman
+Presented August 20, 2013 at <a 
href="https://mesos-nyc-aug2013.eventbrite.com/";>NYC Mesos Meetup</a></p>
+
+<h3>Chronos: A distributed, fault-tolerant and highly available job 
orchestration framework for Mesos (<a 
href="https://speakerdeck.com/mesos/chronos-august-2013-nyc-meetup";>Slides</a>)</h3>
+
+<p>Florian Leibert
+Presented August 20, 2013 at <a 
href="https://mesos-nyc-aug2013.eventbrite.com/";>NYC Mesos Meetup</a></p>
+
+<h3>Airbnb tech talk (<a 
href="http://www.youtube.com/watch?v=Hal00g8o1iY";>Video</a>)</h3>
+
+<p>Benjamin Hindman
+Presented September 6, 2012 at <a href="http://airbnb.com";>Airbnb</a></p>
+
+<h3>Managing Twitter clusters with Mesos (<a 
href="http://www.youtube.com/watch?v=37OMbAjnJn0";>Video</a>)</h3>
+
+<p>Benjamin Hindman
+Presented August 22, 2012 at <a href="http://ampcamp.berkeley.edu";>AMP 
Camp</a></p>
+
+<h3>Mesos: A Platform for Fine-Grained Resource Sharing in Datacenters (<a 
href="http://www.youtube.com/watch?v=dB8IDu7g9Nc";>Video</a>)</h3>
+
+<p>Matei Zaharia
+Presented March 2011 at <a href="http://berkeley.edu";>UC Berkeley</a></p>
+
+<h3>Mesos: Efficiently Sharing the Datacenter (<a 
href="http://vimeo.com/17821090";>Video</a>)</h3>
+
+<p>Benjamin Hindman
+Presented November 8, 2010 at <a href="http://linkedin.com";>LinkedIn</a></p>
+
+<h3>Mesos: A Resource Management Platform for Hadoop and Big Data Clusters (<a 
href="http://www.youtube.com/watch?v=lE3jR6nM3bw";>Video</a>)</h3>
+
+<p>Matei Zaharia
+Presented Summer 2010 at <a href="http://yahoo.com";>Yahoo</a></p>
+
+       </div>
+</div>
+
+                       
+             <hr>
+
+                               <!-- footer -->
+             <div class="footer">
+               <p>&copy; 2012-2015 <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>

Added: mesos/site/publish/documentation/roadmap/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/roadmap/index.html?rev=1707725&view=auto
==============================================================================
--- mesos/site/publish/documentation/roadmap/index.html (added)
+++ mesos/site/publish/documentation/roadmap/index.html Fri Oct  9 13:33:18 2015
@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title></title>
+                   <meta name="viewport" content="width=device-width, 
initial-scale=1.0">
+
+                   <link 
href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" 
rel="stylesheet">
+                   <link rel="alternate" type="application/atom+xml" 
title="Apache Mesos Blog" href="/blog/feed.xml">
+                   
+                   <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 Roadmap</h1>
+
+<p>The <a 
href="https://issues.apache.org/jira/browse/MESOS/?selectedTab=com.atlassian.jira.jira-projects-plugin:roadmap-panel";>Mesos
 JIRA Road Map</a> provides a view of which tickets are targeted for upcoming 
releases.</p>
+
+<p>The <a 
href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20MESOS%20AND%20resolution%20%3D%20Unresolved%20AND%20issuetype%20%3D%20Epic%20ORDER%20BY%20priority%20DESC";>&lsquo;Epic&rsquo;
 issues in JIRA</a> provide a view into the larger projects planned to be 
worked on.</p>
+
+<p>There is also an ad-hoc <a 
href="https://cwiki.apache.org/confluence/display/MESOS/Mesos+Release+Planning";>Release
 Planning</a> document that attempts to capture times and features for upcoming 
releases.</p>
+
+<p>If you have comments or suggestions, feel free to reach out to the Mesos 
dev list ([email protected]).</p>
+
+       </div>
+</div>
+
+                       
+             <hr>
+
+                               <!-- footer -->
+             <div class="footer">
+               <p>&copy; 2012-2015 <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>

Added: mesos/site/publish/documentation/scheduler-http-api/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/scheduler-http-api/index.html?rev=1707725&view=auto
==============================================================================
--- mesos/site/publish/documentation/scheduler-http-api/index.html (added)
+++ mesos/site/publish/documentation/scheduler-http-api/index.html Fri Oct  9 
13:33:18 2015
@@ -0,0 +1,604 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title></title>
+                   <meta name="viewport" content="width=device-width, 
initial-scale=1.0">
+
+                   <link 
href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" 
rel="stylesheet">
+                   <link rel="alternate" type="application/atom+xml" 
title="Apache Mesos Blog" href="/blog/feed.xml">
+                   
+                   <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>Scheduler HTTP API</h1>
+
+<p>Mesos 0.24.0 added <strong>experimental</strong> support for v1 Scheduler 
HTTP API.</p>
+
+<h2>Overview</h2>
+
+<p>The scheduler interacts with Mesos via  “/api/v1/scheduler” endpoint 
hosted by the Mesos master. The fully qualified URL of the endpoint might look 
like:</p>
+
+<pre><code>http://masterhost:5050/api/v1/scheduler
+</code></pre>
+
+<p>Note that we refer to this endpoint with its suffix 
&ldquo;/scheduler&rdquo; in the rest of this document. This endpoint accepts 
HTTP POST requests with data encoded as JSON (Content-Type: application/json) 
or binary Protobuf (Content-Type: application/x-protobuf). The first request 
that a scheduler sends to “/scheduler” endpoint is called SUBSCRIBE and 
results in a streaming response (“200 OK” status code with 
Transfer-Encoding: chunked). <strong>Schedulers are expected to keep the 
subscription connection open as long as possible (barring errors in network, 
software, hardware etc.) and incrementally process the response</strong> (NOTE: 
HTTP client libraries that can only parse the response after the connection is 
closed cannot be used). For the encoding used, please refer to 
<strong>Events</strong> section below.</p>
+
+<p>All the subsequent (non subscribe) requests to “/scheduler” endpoint 
(see details below in <strong>Calls</strong> section) must be sent using a 
different connection(s) than the one being used for subscription. Master 
responds to these HTTP POST requests with “202 Accepted” status codes (or, 
for unsuccessful requests, with 4xx or 5xx status codes; details in later 
sections). The “202 Accepted” response means that a request has been 
accepted for processing, not that the processing of the request has been 
completed. The request might or might not be acted upon by Mesos (e.g., master 
fails during the processing of the request). Any asynchronous responses from 
these requests will be streamed on long-lived subscription connection.</p>
+
+<h2>Calls</h2>
+
+<p>The following calls are currently accepted by the master. The canonical 
source of this information is <a 
href="https://github.com/apache/mesos/blob/master/include/mesos/v1/scheduler/scheduler.proto";>scheduler.proto</a>
 (NOTE: The protobuf definitions are subject to change before the beta API is 
finalized). Note that when sending JSON encoded Calls, schedulers should encode 
raw bytes in Base64 and strings in UTF-8.</p>
+
+<h3>SUBSCRIBE</h3>
+
+<p>This is the first step in the communication process between the scheduler 
and the master. This is also to be considered as subscription to the 
“/scheduler” events stream.</p>
+
+<p>To subscribe with the master, the scheduler sends a HTTP POST request with 
encoded  <code>SUBSCRIBE</code> message with the required FrameworkInfo. Note 
that if &ldquo;subscribe.framework_info.id&rdquo; is not set, master considers 
the scheduler as a new one and subscribes it by assigning it a FrameworkID. The 
HTTP response is a stream with RecordIO encoding, with the first event being 
<code>SUBSCRIBED</code> event (see details in <strong>Events</strong> 
section).</p>
+
+<pre><code>SUBSCRIBE Request (JSON):
+
+POST /api/v1/scheduler  HTTP/1.1
+
+Host: masterhost:5050
+Content-Type: application/json
+Accept: application/json
+Connection: close
+
+{
+   “type”       : “SUBSCRIBE”,
+
+   “subscribe”  : {
+      “framework_info”  : {
+        “user” :  “foo”,
+        “name” :  “Example HTTP Framework”
+      },
+
+      “force” : true
+  }
+}
+
+SUBSCRIBE Response Event (JSON):
+HTTP/1.1 200 OK
+
+Content-Type: application/json
+Transfer-Encoding: chunked
+
+&lt;event length&gt;
+{
+ “type”         : “SUBSCRIBED”,
+ “subscribed”   : {
+     “framework_id”               : 
{“value”:“12220-3440-12532-2345”},
+     "heartbeat_interval_seconds" : 15
+  }
+}
+&lt;more events&gt;
+</code></pre>
+
+<p>Alternatively, if “subscribe.framework_info.id” is set, master 
considers this a request from an already subscribed scheduler reconnecting 
after a disconnection (e.g., due to failover or network disconnection) and 
responds with <code>SUBSCRIBED</code> event containing the same FrameworkID. 
The “subscribe.force” field describes how the master reacts when multiple 
scheduler instances (with the same framework id) attempt to subscribe with the 
master at the same time (e.g., due to network partition). See the semantics in 
<strong>Disconnections</strong> section below.</p>
+
+<p>NOTE: In the old version of the API, (re-)registered callbacks also 
included MasterInfo, which contained information about the master the driver 
currently connected to. With the new API, since schedulers explicitly subscribe 
with the leading master (see details below in <strong>Master Detection</strong> 
section), it’s not relevant anymore.</p>
+
+<p>If subscription fails for whatever reason (e.g., invalid request), a HTTP 
4xx response is returned with the error message as part of the body and the 
connection is closed.</p>
+
+<p>Scheduler must make additional HTTP requests to the “/scheduler” 
endpoint only after it has opened a persistent connection to it by sending a 
<code>SUBSCRIBE</code> request and received a <code>SUBSCRIBED</code> response. 
Calls made without subscription will result in a “403 Forbidden“ instead of 
a “202 Accepted“ response. A scheduler might also receive a “400 Bad 
Request” response if the HTTP request is malformed (e.g., malformed HTTP 
headers).</p>
+
+<h3>TEARDOWN</h3>
+
+<p>Sent by the scheduler when it wants to tear itself down. When Mesos 
receives this request it will shut down all executors (and consequently kill 
tasks) and remove persistent volumes (if requested). It then removes the 
framework and closes all open connections from this scheduler to the Master.</p>
+
+<pre><code>TEARDOWN Request (JSON):
+POST /api/v1/scheduler  HTTP/1.1
+
+Host: masterhost:5050
+Content-Type: application/json
+
+{
+  “framework_id”    : {“value” : “12220-3440-12532-2345”},
+  “type”            : “TEARDOWN”,
+}
+
+TEARDOWN Response:
+HTTP/1.1 202 Accepted
+</code></pre>
+
+<h3>ACCEPT</h3>
+
+<p>Sent by the scheduler when it accepts offer(s) sent by the master. The 
<code>ACCEPT</code> request includes the type of operations (e.g., launch task, 
reserve resources, create volumes) that the scheduler wants to perform on the 
offers. Note that until the scheduler replies (accepts or declines) to an 
offer, its resources are considered allocated to the framework. Also, any of 
the offer’s resources not used in the <code>ACCEPT</code> call (e.g., to 
launch a task) are considered declined and might be reoffered to other 
frameworks. In other words, the same <code>OfferID</code> cannot be used in 
more than one <code>ACCEPT</code> call. These semantics might change when we 
add new features to Mesos (e.g., persistence, reservations, optimistic offers, 
resizeTask, etc.).</p>
+
+<pre><code>ACCEPT Request (JSON):
+POST /api/v1/scheduler  HTTP/1.1
+
+Host: masterhost:5050
+Content-Type: application/json
+
+{
+  “framework_id”    : {“value” : “12220-3440-12532-2345”},
+  “type”            : “ACCEPT”,
+  “accept”          : {
+    “offer_ids”     : [
+                       {“value” : “12220-3440-12532-O12”},
+                       {“value” : “12220-3440-12532-O12”}
+                      ],
+    “operations”    : [ {“type” : “LAUNCH”, “launch” : {...}} 
],
+    “filters”       : {...}
+  }
+}
+
+ACCEPT Response:
+HTTP/1.1 202 Accepted
+</code></pre>
+
+<h3>DECLINE</h3>
+
+<p>Sent by the scheduler to explicitly decline offer(s) received. Note that 
this is same as sending an <code>ACCEPT</code> call with no operations.</p>
+
+<pre><code>DECLINE Request (JSON):
+POST /api/v1/scheduler  HTTP/1.1
+
+Host: masterhost:5050
+Content-Type: application/json
+
+{
+  “framework_id”    : {“value” : “12220-3440-12532-2345”},
+  “type”            : “DECLINE”,
+  “decline”         : {
+    “offer_ids” : [
+                   {“value” : “12220-3440-12532-O12”},
+                   {“value” : “12220-3440-12532-O13”}
+                  ],
+    “filters”   : {...}
+  }
+}
+
+DECLINE Response:
+HTTP/1.1 202 Accepted
+</code></pre>
+
+<h3>REVIVE</h3>
+
+<p>Sent by the scheduler to remove any/all filters that it has previously set 
via <code>ACCEPT</code> or <code>DECLINE</code> calls.</p>
+
+<pre><code>REVIVE Request (JSON):
+POST /api/v1/scheduler  HTTP/1.1
+
+Host: masterhost:5050
+Content-Type: application/json
+
+{
+  “framework_id”    : {“value” : “12220-3440-12532-2345”},
+  “type”            : “REVIVE”,
+}
+
+REVIVE Response:
+HTTP/1.1 202 Accepted
+</code></pre>
+
+<h3>KILL</h3>
+
+<p>Sent by the scheduler to kill a specific task. If the scheduler has a 
custom executor, the kill is forwarded to the executor and it is up to the 
executor to kill the task and send a <code>TASK_KILLED</code> (or 
<code>TASK_FAILED</code>) update. Mesos releases the resources for a task once 
it receives a terminal update for the task. If the task is unknown to the 
master, a <code>TASK_LOST</code> will be generated.</p>
+
+<pre><code>KILL Request (JSON):
+POST /api/v1/scheduler  HTTP/1.1
+
+Host: masterhost:5050
+Content-Type: application/json
+
+{
+  “framework_id”    : {“value” : “12220-3440-12532-2345”},
+  “type”            : “KILL”,
+  “kill”            : {
+    “task_id”   :  {“value” : “12220-3440-12532-my-task”},
+    “agent_id”  :  {“value” : “12220-3440-12532-S1233”}
+  }
+}
+
+KILL Response:
+HTTP/1.1 202 Accepted
+</code></pre>
+
+<h3>SHUTDOWN</h3>
+
+<p>Sent by the scheduler to shutdown a specific custom executor (NOTE: This is 
a new call that was not present in the old API). When an executor gets a 
shutdown event, it is expected to kill all its tasks (and send 
<code>TASK_KILLED</code> updates) and terminate. If an executor doesn’t 
terminate within a certain timeout (configurable via  
“&ndash;executor_shutdown_grace_period” agent flag), the agent will 
forcefully destroy the container (executor and its tasks) and transitions its 
active tasks to <code>TASK_LOST</code>.</p>
+
+<pre><code>SHUTDOWN Request (JSON):
+POST /api/v1/scheduler  HTTP/1.1
+
+Host: masterhost:5050
+Content-Type: application/json
+
+{
+  “framework_id”    : {“value” : “12220-3440-12532-2345”},
+  “type”            : “SHUTDOWN”,
+  “shutdown”        : {
+    “executor_id”   :  {“value” : “123450-2340-1232-my-executor”},
+    “agent_id”      :  {“value” : “12220-3440-12532-S1233”}
+  }
+}
+
+SHUTDOWN Response:
+HTTP/1.1 202 Accepted
+</code></pre>
+
+<h3>ACKNOWLEDGE</h3>
+
+<p>Sent by the scheduler to acknowledge a status update. Note that with the 
new API, schedulers are responsible for explicitly acknowledging the receipt of 
status updates that have “status.uuid()” set. These status updates are 
reliably retried until they are acknowledged by the scheduler. The scheduler 
must not acknowledge status updates that do not have “status.uuid()” set as 
they are not retried. &ldquo;uuid&rdquo; is raw bytes encoded in Base64.</p>
+
+<pre><code>ACKNOWLEDGE Request (JSON):
+POST /api/v1/scheduler  HTTP/1.1
+
+Host: masterhost:5050
+Content-Type: application/json
+
+{
+  “framework_id”    : {“value” : “12220-3440-12532-2345”},
+  “type”            : “ACKNOWLEDGE”,
+  “acknowledge”     : {
+    “agent_id”  :  {“value” : “12220-3440-12532-S1233”},
+    “task_id”   :  {“value” : “12220-3440-12532-my-task”},
+    “uuid”      :  “jhadf73jhakdlfha723adf”
+  }
+}
+
+ACKNOWLEDGE Response:
+HTTP/1.1 202 Accepted
+</code></pre>
+
+<h3>RECONCILE</h3>
+
+<p>Sent by the scheduler to query the status of non-terminal tasks. This 
causes the master to send back <code>UPDATE</code> events for each task in the 
list. Tasks that are no longer known to Mesos will result in 
<code>TASK_LOST</code> updates. If the list of tasks is empty, master will send 
<code>UPDATE</code> events for all currently known tasks of the framework.</p>
+
+<pre><code>RECONCILE Request (JSON):
+POST /api/v1/scheduler   HTTP/1.1
+
+Host: masterhost:5050
+Content-Type: application/json
+
+{
+  “framework_id”    : {“value” : “12220-3440-12532-2345”},
+  “type”            : “RECONCILE”,
+  “reconcile”       : {
+    “tasks”     : [
+                   { “task_id”  : { “value” : “312325” },
+                     “agent_id” : { “value” : “123535” }
+                   }
+                  ]
+  }
+}
+
+RECONCILE Response:
+HTTP/1.1 202 Accepted
+</code></pre>
+
+<h3>MESSAGE</h3>
+
+<p>Sent by the scheduler to send arbitrary binary data to the executor. Note 
that Mesos neither interprets this data nor makes any guarantees about the 
delivery of this message to the executor. &ldquo;data&rdquo; is raw bytes 
encoded in Base64.</p>
+
+<pre><code>MESSAGE Request (JSON):
+POST /api/v1/scheduler   HTTP/1.1
+
+Host: masterhost:5050
+Content-Type: application/json
+
+{
+  “framework_id”    : {“value” : “12220-3440-12532-2345”},
+  “type”            : “MESSAGE”,
+  “message”         : {
+    “agent_id”       : {“value” : “12220-3440-12532-S1233”},
+    “executor_id”    : {“value” : “my-framework-executor”},
+    “data”           : “adaf838jahd748jnaldf”
+  }
+}
+
+MESSAGE Response:
+HTTP/1.1 202 Accepted
+</code></pre>
+
+<h3>REQUEST</h3>
+
+<p>Sent by the scheduler to request resources from the master/allocator. The 
built-in hierarchical allocator simply ignores this request but other 
allocators (modules) can interpret this in a customizable fashion.</p>
+
+<pre><code>Request (JSON):
+POST /api/v1/scheduler   HTTP/1.1
+
+Host: masterhost:5050
+Content-Type: application/json
+
+{
+  “framework_id”    : {“value” : “12220-3440-12532-2345”},
+  “type”            : “REQUEST”,
+  “requests”        : [
+      {
+         “agent_id”       : {“value” : “12220-3440-12532-S1233”},
+         “resources”      : {}
+      },
+  ]
+}
+
+REQUEST Response:
+HTTP/1.1 202 Accepted
+</code></pre>
+
+<h2>Events</h2>
+
+<p>Scheduler is expected to keep a <strong>persistent</strong> connection open 
to “/scheduler” endpoint even after getting a SUBSCRIBED HTTP Response 
event. This is indicated by “Connection: keep-alive” and 
“Transfer-Encoding: chunked” headers with <em>no</em> “Content-Length” 
header set. All subsequent events that are relevant to this framework  
generated by Mesos are streamed on this connection. Master encodes each Event 
in RecordIO format, i.e., string representation of length of the event in bytes 
followed by JSON or binary Protobuf  (possibly compressed) encoded event. Note 
that the value of length will never be ‘0’ and the size of the length will 
be the size of unsigned integer (i.e., 64 bits). Also, note that the RecordIO 
encoding should be decoded by the scheduler whereas the underlying HTTP chunked 
encoding is typically invisible at the application (scheduler) layer. The type 
of content encoding used for the events will be d
 etermined by the accept header of the POST request (e.g., Accept: 
application/json).</p>
+
+<p>The following events are currently sent by the master. The canonical source 
of this information is at <a 
href="include/mesos/v1/scheduler/scheduler.proto">scheduler.proto</a>. Note 
that when sending JSON encoded events, master encodes raw bytes in Base64 and 
strings in UTF-8.</p>
+
+<h3>SUBSCRIBED</h3>
+
+<p>The first event sent by the master when the scheduler sends a 
<code>SUBSCRIBE</code> request on the persistent connection. See 
<code>SUBSCRIBE</code> in Calls section for the format.</p>
+
+<h3>OFFERS</h3>
+
+<p>Sent by the master whenever there are new resources that can be offered to 
the framework. Each offer corresponds to a set of resources on a agent. Until 
the scheduler &lsquo;Accept&rsquo;s or 'Decline&rsquo;s an offer the resources 
are considered allocated to the scheduler, unless the offer is otherwise 
rescinded, e.g. due to a lost agent or <code>--offer_timeout</code>.</p>
+
+<pre><code>OFFERS Event (JSON)
+&lt;event-length&gt;
+{
+  “type”    : “OFFERS”,
+  “offers”  : [
+    {
+      “offer_id”:{“value”: “12214-23523-O235235”},
+      “framework_id”:{“value”: “12124-235325-32425”},
+      “agent_id”:{“value”: “12325-23523-S23523”},
+      “hostname”:“agent.host”,
+      “resources”:[...],
+      “attributes”:[...],
+      “executor_ids”:[]
+    }
+  ]
+}
+</code></pre>
+
+<h3>RESCIND</h3>
+
+<p>Sent by the master when a particular offer is no longer valid (e.g., the 
agent corresponding to the offer has been removed) and hence needs to be 
rescinded. Any future calls (<code>ACCEPT</code> / <code>DECLINE</code>) made 
by the scheduler regarding this offer will be invalid.</p>
+
+<pre><code>RESCIND Event (JSON)
+&lt;event-length&gt;
+{
+  “type”    : “RESCIND”,
+  “rescind” : {
+    “offer_id”  : { “value” : “12214-23523-O235235”}
+  }
+}
+</code></pre>
+
+<h3>UPDATE</h3>
+
+<p>Sent by the master whenever there is a status update that is generated by 
the executor, agent or master. Status updates should be used by executors to 
reliably communicate the status of the tasks that they manage. It is crucial 
that a terminal update (e.g., <code>TASK_FINISHED</code>, 
<code>TASK_KILLED</code>, <code>TASK_FAILED</code>) is sent by the executor as 
soon as the task terminates, in order for Mesos to release the resources 
allocated to the task. It is also the responsibility of the scheduler to 
explicitly acknowledge the receipt of status updates that are reliably retried. 
See <code>ACKNOWLEDGE</code> in the Calls section above for the semantics. Note 
that <code>uuid</code> and <code>data</code> are raw bytes encoded in 
Base64.</p>
+
+<pre><code>UPDATE Event (JSON)
+
+&lt;event-length&gt;
+{
+  “type”    : “UPDATE”,
+  “update”  : {
+    “status”    : {
+        “task_id”   : { “value” : “12344-my-task”},
+        “state”     : “TASK_RUNNING”,
+        “source”    : “SOURCE_EXECUTOR”,
+        “uuid”      : “adfadfadbhgvjayd23r2uahj”,
+        "bytes"     : "uhdjfhuagdj63d7hadkf"
+
+      }
+  }
+}
+</code></pre>
+
+<h3>MESSAGE</h3>
+
+<p>A custom message generated by the executor that is forwarded to the 
scheduler by the master. Note that this message is not interpreted by Mesos and 
is only forwarded (without reliability guarantees) to the scheduler. It is up 
to the executor to retry if the message is dropped  for any reason. Note that 
<code>data</code> is raw bytes encoded as Base64.</p>
+
+<pre><code>MESSAGE Event (JSON)
+
+&lt;event-length&gt;
+{
+  “type”    : “MESSAGE”,
+  “message” : {
+    “agent_id”      : { “value” : “12214-23523-S235235”},
+    “executor_id”   : { “value” : “12214-23523-my-executor”},
+    “data”          : “adfadf3t2wa3353dfadf”
+  }
+}
+</code></pre>
+
+<h3>FAILURE</h3>
+
+<p>Sent by the master when a agent is removed from the cluster (e.g., failed 
health checks) or when an executor is terminated. Note that, this event 
coincides with receipt of terminal <code>UPDATE</code> events for any active 
tasks belonging to the agent or executor and receipt of <code>RESCIND</code> 
events for any outstanding offers belonging to the agent. Note that there is no 
guaranteed order between the <code>FAILURE</code>, <code>UPDATE</code> and 
<code>RESCIND</code> events.</p>
+
+<pre><code>FAILURE Event (JSON)
+
+&lt;event-length&gt;
+{
+  “type”    : “FAILURE”,
+  “failure” : {
+    “agent_id”      : { “value” : “12214-23523-S235235”},
+    “executor_id”   : { “value” : “12214-23523-my-executor”},
+    “status”        : 1
+  }
+}
+</code></pre>
+
+<h3>ERROR</h3>
+
+<p>Sent by the master when an asynchronous error event is generated (e.g., a 
framework is not authorized to subscribe with the given role). It is 
recommended that the framework abort when it receives an error and retry 
subscription as necessary.</p>
+
+<pre><code>ERROR Event (JSON)
+
+&lt;event-length&gt;
+{
+  “type”    : “ERROR”,
+  “message” : “Framework is not authorized”
+}
+</code></pre>
+
+<h3>HEARTBEAT</h3>
+
+<p>This event is periodically sent by the master to inform the scheduler that 
a connection is alive. This also helps ensure that network intermediates do not 
close the persistent subscription connection due to lack of data flow. See the 
next section on how a scheduler can use this event to deal with network 
partitions.</p>
+
+<pre><code>HEARTBEAT Event (JSON)
+
+&lt;event-length&gt;
+{
+  “type”    : “HEARTBEAT”,
+}
+</code></pre>
+
+<h2>Disconnections</h2>
+
+<p>Master considers a scheduler disconnected if the persistent subscription 
connection (opened via <code>SUBSCRIBE</code> request) to “/scheduler” 
breaks. The connection could break for several reasons, e.g., scheduler 
restart, scheduler failover, network error. Note that the master doesn’t keep 
track of non-subscription connection(s) to
+“/scheduler” because it is not expected to be a persistent connection.</p>
+
+<p>If master realizes that the subscription connection is broken, it marks the 
scheduler as “disconnected” and starts a failover timeout (failover timeout 
is part of FrameworkInfo). It also drops any pending events in its queue. 
Additionally, it rejects subsequent non-subscribe HTTP requests to 
“/scheduler” with “403 Forbidden”, until the scheduler subscribes again 
with “/scheduler”. If the scheduler <em>does not</em> re-subscribe within 
the failover timeout, the master considers the scheduler gone forever and shuts 
down all its executors, thus killing all its tasks. Therefore, all production 
schedulers are recommended to use a high value (e.g., 4 weeks) for the failover 
timeout.</p>
+
+<p>NOTE: To force shutdown a framework before the framework timeout elapses 
(e.g., during framework development and testing), either the framework can send 
<code>TEARDOWN</code> call (part of Scheduler API) or an operator can use the 
“/master/teardown” endpoint (part of Operator API).</p>
+
+<p>If the scheduler realizes that its subscription connection to 
“/scheduler” is broken, it should attempt to open a new persistent 
connection to the
+“/scheduler” (on possibly new master based on the result of master 
detection) and resubscribe. It should not send new non-subscribe HTTP requests 
to “/scheduler” unless it gets a <code>SUBSCRIBED</code> event; such 
requests will result in “403 Forbidden”.</p>
+
+<p>If the master does not realize that the subscription connection is broken, 
but the scheduler realizes it, the scheduler might open a new persistent 
connection to
+“/scheduler” via <code>SUBSCRIBE</code>. In this case, the semantics 
depend on the value of <code>subscribe.force</code>. If set to true, master 
closes the existing subscription connection and allows subscription on the new 
connection. If set to false, the new connection attempt is disallowed in favor 
of the existing connection. The invariant here is that, only one persistent 
subscription connection for a given FrameworkID is allowed on the master. For 
HA schedulers, it is recommended that a scheduler instance set 
<code>subscribe.force</code> to true only when it just got elected and set it 
to false for all subsequent reconnection attempts (e.g, due to disconnection or 
master failover).</p>
+
+<h3>Network partitions</h3>
+
+<p>In the case of a network partition, the subscription connection between the 
scheduler and master might not necessarily break. To be able to detect this 
scenario, master periodically (e.g., 15s) sends <code>HEARTBEAT</code> events 
(similar in vein to Twitter’s Streaming API). If a scheduler doesn’t 
receive a bunch (e.g., 5) of these heartbeats within a time window, it should 
immediately disconnect and try to re-subscribe. It is highly recommended for 
schedulers to use an exponential backoff strategy (e.g., upto a maximum of 15s) 
to avoid overwhelming the master while reconnecting. Schedulers can use a 
similar timeout (e.g., 75s) for receiving responses to any HTTP requests.</p>
+
+<h2>Master detection</h2>
+
+<p>Mesos has a high-availability mode that uses multiple Mesos masters; one 
active master (/documentation/latest/called the leader or leading master) and 
several standbys in case it fails. The masters elect the leader, with ZooKeeper 
coordinating the election. For more details please refer to the <a 
href="/documentation/latest/high-availability/">documentation</a>.</p>
+
+<p>Schedulers are expected to make HTTP requests to the leading master. If 
requests are made to a non-leading master a “HTTP 307 Temporary Redirect” 
will be received with the “Location” header pointing to the leading 
master.</p>
+
+<p>Example subscription workflow with redirection when the scheduler hits a 
non-leading master.</p>
+
+<pre><code>Scheduler → Master
+POST /api/v1/scheduler  HTTP/1.1
+
+Host: masterhost1:5050
+Content-Type: application/json
+Accept: application/json
+Connection: keep-alive
+
+{
+  “framework_info”  : {
+    “user” :  “foo”,
+    “name” :  “Example HTTP Framework”
+  },
+  “type”            : “SUBSCRIBE”
+}
+
+Master → Scheduler
+HTTP/1.1 307 Temporary Redirect
+Location: masterhost2:5050
+
+
+Scheduler → Master
+POST /api/v1/scheduler  HTTP/1.1
+
+Host: masterhost2:5050
+Content-Type: application/json
+Accept: application/json
+Connection: keep-alive
+
+{
+  “framework_info”  : {
+    “user” :  “foo”,
+    “name” :  “Example HTTP Framework”
+  },
+  “type”            : “SUBSCRIBE”
+}
+</code></pre>
+
+<p>If the scheduler knows the list of master’s hostnames for a cluster, it 
could use this mechanism to find the leading master to subscribe with. 
Alternatively, the scheduler could use a pure language library that detects the 
leading master given a ZooKeeper (or etcd) URL. For a <code>C++</code> library 
that does ZooKeeper based master detection please look at 
<code>src/scheduler/scheduler.cpp</code>.</p>
+
+       </div>
+</div>
+
+                       
+             <hr>
+
+                               <!-- footer -->
+             <div class="footer">
+               <p>&copy; 2012-2015 <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>

Added: mesos/site/publish/documentation/ssl/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/ssl/index.html?rev=1707725&view=auto
==============================================================================
--- mesos/site/publish/documentation/ssl/index.html (added)
+++ mesos/site/publish/documentation/ssl/index.html Fri Oct  9 13:33:18 2015
@@ -0,0 +1,210 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title></title>
+                   <meta name="viewport" content="width=device-width, 
initial-scale=1.0">
+
+                   <link 
href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" 
rel="stylesheet">
+                   <link rel="alternate" type="application/atom+xml" 
title="Apache Mesos Blog" href="/blog/feed.xml">
+                   
+                   <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>Configuration</h1>
+
+<p>There is currently only one implementation of the <a 
href="https://github.com/apache/mesos/blob/master/3rdparty/libprocess/include/process/socket.hpp";>libprocess
 socket interface</a> that supports SSL. This implementation uses <a 
href="https://github.com/libevent/libevent";>libevent</a>. Specifically it 
relies on the <code>libevent-openssl</code> library that wraps 
<code>openssl</code>.</p>
+
+<p>After building Mesos 0.23.0 from source, assuming you have installed the 
required <a href="#Dependencies">Dependencies</a>, you can modify your 
configure line to enable SSL as follows:</p>
+
+<pre><code>../configure --enable-libevent --enable-ssl
+</code></pre>
+
+<h1>Running</h1>
+
+<p>Once you have successfully built and installed your new binaries, here are 
the environment variables that are applicable to the <code>Master</code>, 
<code>Slave</code>, <code>Framework Scheduler/Executor</code>, or any 
<code>libprocess process</code>:</p>
+
+<h4>SSL_ENABLED=(false|0,true|1) [default=false|0]</h4>
+
+<p>Turn on or off SSL. When it is turned off it is the equivalent of default 
mesos with libevent as the backing for events. All sockets default to the 
non-SSL implementation. When it is turned on, the default configuration for 
sockets is SSL. This means outgoing connections will use SSL, and incoming 
connections will be expected to speak SSL as well. None of the below flags are 
relevant if SSL is not enabled.</p>
+
+<h4>SSL_SUPPORT_DOWNGRADE=(false|0,true|1) [default=false|0]</h4>
+
+<p>Control whether or not non-SSL connections can be established. If this is 
enabled <strong>on the accepting side</strong>, then the accepting side will 
downgrade to a non-SSL socket if the connecting side is attempting to 
communicate via non-SSL. (e.g. HTTP). See <a href="#Upgrading">Upgrading Your 
Cluster</a> for more details.</p>
+
+<h4>SSL_CERT_FILE=(path to certificate)</h4>
+
+<p>The location of the certificate that will be presented.</p>
+
+<h4>SSL_KEY_FILE=(path to key)</h4>
+
+<p>The location of the private key used by OpenSSL.</p>
+
+<h4>SSL_VERIFY_CERT=(false|0,true|1) [default=false|0]</h4>
+
+<p>Control whether certificates are verified when presented. If this is false, 
even when a certificate is presented, it will not be verified. When 
<code>SSL_REQUIRE_CERT</code> is true, <code>SSL_VERIFY_CERT</code> is 
overridden and all certificates will be verified <em>and</em> required.</p>
+
+<h4>SSL_REQUIRE_CERT=(false|0,true|1) [default=false|0]</h4>
+
+<p>Enforce that certificates must be presented by connecting clients. This 
means all connections (including tools hitting endpoints) must present valid 
certificates in order to establish a connection.</p>
+
+<h4>SSL_VERIFY_DEPTH=(N) [default=4]</h4>
+
+<p>The maximum depth used to verify certificates. The default is 4. See the 
OpenSSL documentation or contact your system administrator to learn why you may 
want to change this.</p>
+
+<h4>SSL_CA_DIR=(path to CA directory)</h4>
+
+<p>The directory used to find the certificate authority / authorities. You can 
specify <code>SSL_CA_DIR</code> or <code>SSL_CA_FILE</code> depending on how 
you want to restrict your certificate authorization.</p>
+
+<h4>SSL_CA_FILE=(path to CA file)</h4>
+
+<p>The file used to find the certificate authority. You can specify 
<code>SSL_CA_DIR</code> or <code>SSL_CA_FILE</code> depending on how you want 
to restrict your certificate authorization.</p>
+
+<h4>SSL_CIPHERS=(accepted ciphers separated by &lsquo;:&rsquo;) 
[default=AES128-SHA:AES256-SHA:RC4-SHA:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA]</h4>
+
+<p>A list of <code>:</code>-separated ciphers. Use these if you want to 
restrict or open up the accepted ciphers for OpenSSL. Read the OpenSSL 
documentation or contact your system administrators to see whether you want to 
override the default values.</p>
+
+<h4>SSL_ENABLE_SSL_V3=(false|0,true|1) [default=false|0]</h4>
+
+<h4>SSL_ENABLE_TLS_V1_0=(false|0,true|1) [default=false|0]</h4>
+
+<h4>SSL_ENABLE_TLS_V1_1=(false|0,true|1) [default=false|0]</h4>
+
+<h4>SSL_ENABLE_TLS_V1_2=(false|0,true|1) [default=true|1]</h4>
+
+<p>The above switches enable / disable the specified protocols. By default 
only TLS V1.2 is enabled. SSL V2 is always disabled; there is no switch to 
enable it. The mentality here is to restrict security by default, and force 
users to open it up explicitly. Many older version of the protocols have known 
vulnerabilities, so only enable these if you fully understand the risks.
+<em>SSLv2 is disabled completely because modern versions of OpenSSL disable it 
using multiple compile time configuration options.</em></p>
+
+<h1><a name="Dependencies"></a>Dependencies</h1>
+
+<h3>libevent</h3>
+
+<p>We require the OpenSSL support from libevent. The suggested version of 
libevent is <a 
href="https://github.com/libevent/libevent/releases/tag/release-2.0.22-stable";><code>2.0.22-stable</code></a>.
 As new releases come out we will try to maintain compatibility.</p>
+
+<pre><code>// For example, on OSX:
+brew install libevent
+</code></pre>
+
+<h3>OpenSSL</h3>
+
+<p>We require <a href="https://github.com/openssl/openssl";>OpenSSL</a>. There 
are multiple branches of OpenSSL that are being maintained by the community. 
Since security requires being vigilant, we recommend reading the release notes 
for the current releases of OpenSSL and deciding on a version within your 
organization based on your security needs. Mesos is not too deeply dependent on 
specific OpenSSL versions, so there is room for you to make security decisions 
as an organization.
+Please ensure the <code>event2</code> and <code>openssl</code> headers are 
available for building mesos.</p>
+
+<pre><code>// For example, on OSX:
+brew install openssl
+</code></pre>
+
+<h1><a name="Upgrading"></a>Upgrading Your Cluster</h1>
+
+<p><em>There is no SSL specific requirement for upgrading different components 
in a specific order.</em></p>
+
+<p>The recommended strategy is to restart all your components to enable SSL 
with downgrades support enabled. Once all components have SSL enabled, then do 
a second restart of all your components to disable downgrades. This strategy 
will allow each component to be restarted independently at your own convenience 
with no time restrictions. It will also allow you to try SSL in a subset of 
your cluster. <strong>NOTE:</strong> While different components in your cluster 
are serving SSL vs non-SSL traffic, any relative links in the WebUI may be 
broken. Please see the <a href="#WebUI">WebUI</a> section for details. Here are 
sample commands for upgrading your cluster:</p>
+
+<pre><code>// Restart each component with downgrade support (master, slave, 
framework):
+SSL_ENABLED=true SSL_SUPPORT_DOWNGRADE=true 
SSL_KEY_FILE=&lt;path-to-your-private-key&gt; 
SSL_CERT_FILE=&lt;path-to-your-certificate&gt; &lt;Any other SSL_* environment 
variables you may choose&gt; &lt;your-component (e.g. bin/master.sh)&gt; 
&lt;your-flags&gt;
+
+// Restart each component WITHOUT downgrade support (master, slave, framework):
+SSL_ENABLED=true SSL_SUPPORT_DOWNGRADE=false 
SSL_KEY_FILE=&lt;path-to-your-private-key&gt; 
SSL_CERT_FILE=&lt;path-to-your-certificate&gt; &lt;Any other SSL_* environment 
variables you may choose&gt; &lt;your-component (e.g. bin/master.sh)&gt; 
&lt;your-flags&gt;
+</code></pre>
+
+<p>The end state is a cluster that is only communicating with SSL.</p>
+
+<p><strong>NOTE:</strong> Any tools you may use that communicate with your 
components must be able to speak SSL, or they will be denied. You may choose to 
maintain <code>SSL_SUPPORT_DOWNGRADE=true</code> for some time as you upgrade 
your internal tooling. The advantage of <code>SSL_SUPPORT_DOWNGRADE=true</code> 
is that all components that speak SSL will do so, while other components may 
still communicate over insecure channels.</p>
+
+<h1><a name="WebUI"></a>WebUI</h1>
+
+<p>The default Mesos WebUI uses relative links. Some of these links transition 
between endpoints served by the master and slaves. The WebUI currently does not 
have enough information to change the &lsquo;http&rsquo; vs &lsquo;https&rsquo; 
links based on whether the target endpoint is currently being served by an 
SSL-enabled binary. This may cause certain links in the WebUI to be broken when 
a cluster is in a transition state between SSL and non-SSL. Any tools that hit 
these endpoints will still be able to access them as long as they hit the 
endpoint using the right protocol, or the <code>SSL_SUPPORT_DOWNGRADE</code> 
option is set to true.</p>
+
+<h3>Certificates</h3>
+
+<p>Most browsers have built in protection that guard transitions between pages 
served using different certificates. For this reason you may choose to serve 
both the master and slave endpoints using a common certificate that covers 
multiple hostnames. If you do not do this, certain links, such as those to 
slave sandboxes, may seem broken as the browser treats the transition between 
differing certificates transition as unsafe.</p>
+
+       </div>
+</div>
+
+                       
+             <hr>
+
+                               <!-- footer -->
+             <div class="footer">
+               <p>&copy; 2012-2015 <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>

Modified: mesos/site/publish/documentation/submitting-a-patch/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/submitting-a-patch/index.html?rev=1707725&r1=1707724&r2=1707725&view=diff
==============================================================================
--- mesos/site/publish/documentation/submitting-a-patch/index.html (original)
+++ mesos/site/publish/documentation/submitting-a-patch/index.html Fri Oct  9 
13:33:18 2015
@@ -127,13 +127,13 @@
 <li><p>Create one or more test cases to exercise the bug or the feature (the 
Mesos team uses <a 
href="http://en.wikipedia.org/wiki/Test-driven_development";>test-driven 
development</a>). Before you start coding, make sure these test cases all 
fail.</p>
 
 <ol>
-<li>The <a href="/documentation/latest/mesos-testing-patterns/">testing 
patterns</a> page has some suggestions for writing test cases.</li>
+<li>The <a href="/documentation/latest/testing-patterns/">testing patterns</a> 
page has some suggestions for writing test cases.</li>
 </ol>
 </li>
 <li><p>Make your changes to the code (using whatever IDE/editor you choose) to 
actually fix the bug or implement the feature.</p>
 
 <ol>
-<li>Before beginning, please read the <a 
href="/documentation/latest/mesos-c++-style-guide/">Mesos C++ Style Guide</a>. 
It is recommended to use the git pre-commit hook 
(<code>support/hooks/pre-commit</code>) to automatically check for style 
errors. See the hook script for instructions to enable it.</li>
+<li>Before beginning, please read the <a 
href="/documentation/latest/c++-style-guide/">Mesos C++ Style Guide</a>. It is 
recommended to use the git pre-commit hook 
(<code>support/hooks/pre-commit</code>) to automatically check for style 
errors. See the hook script for instructions to enable it.</li>
 <li>Most of your changes will probably be to files inside of 
<code>BASE_MESOS_DIR</code></li>
 <li>From inside of the root Mesos directory: <code>./bootstrap</code> (Only 
required if building from git repository).</li>
 <li>To build, we recommend that you don&rsquo;t build inside of the src 
directory. We recommend you do the following:
@@ -202,7 +202,7 @@
 <h2>Style Guides</h2>
 
 <ul>
-<li>For patches to the core, we ask that you follow the <a 
href="/documentation/latest/mesos-c++-style-guide/">Mesos C++ Style 
Guide</a>.</li>
+<li>For patches to the core, we ask that you follow the <a 
href="/documentation/latest/c++-style-guide/">Mesos C++ Style Guide</a>.</li>
 </ul>
 
 

Added: mesos/site/publish/documentation/testing-patterns/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/testing-patterns/index.html?rev=1707725&view=auto
==============================================================================
--- mesos/site/publish/documentation/testing-patterns/index.html (added)
+++ mesos/site/publish/documentation/testing-patterns/index.html Fri Oct  9 
13:33:18 2015
@@ -0,0 +1,179 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title></title>
+                   <meta name="viewport" content="width=device-width, 
initial-scale=1.0">
+
+                   <link 
href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" 
rel="stylesheet">
+                   <link rel="alternate" type="application/atom+xml" 
title="Apache Mesos Blog" href="/blog/feed.xml">
+                   
+                   <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 Testing Patterns</h1>
+
+<p>A collection of common testing patterns used in Mesos tests. If you have 
found a good way to test a certain condition that you think may be useful for 
other cases, please document it here together with motivation and 
background.</p>
+
+<h2>Using <code>Clock</code> magic to ensure an event is processed</h2>
+
+<p>Scheduling a sequence of events in an asynchronous environment is not easy: 
a function call usually initiates an action and returns immediately, while the 
action runs in background. A simple, obvious, and bad solution is to use 
<code>os::sleep()</code> to wait for action completion. The time the action 
needs to finish may vary on different machines, while increasing sleep duration 
increases the test execution time and slows down <code>make check</code>. One 
of the right ways to do it is to wait for an action to finish and proceed right 
after. This is possible using libprocess' <code>Clock</code> routines.</p>
+
+<p>Every message enqueued in a libprocess process' (or actor&rsquo;s, to avoid 
ambiguity with OS processes) mailbox is processed by 
<code>ProcessManager</code> (right now there is a single instance of 
<code>ProcessManager</code> per OS process, but this may change in the future). 
<code>ProcessManager</code> fetches actors from the runnable actors list and 
services all events from the actor&rsquo;s mailbox. Using 
<code>Clock::settle()</code> call we can block the calling thread until 
<code>ProcessManager</code> empties mailboxes of all actors. Here is the 
example of this pattern:</p>
+
+<pre><code class="{.cpp}">// As Master::killTask isn't doing anything, we 
shouldn't get a status update.
+EXPECT_CALL(sched, statusUpdate(&amp;driver, _))
+  .Times(0);
+
+// Set expectation that Master receives killTask message.
+Future&lt;KillTaskMessage&gt; killTaskMessage =
+  FUTURE_PROTOBUF(KillTaskMessage(), _, master.get());
+
+// Attempt to kill unknown task while slave is transitioning.
+TaskID unknownTaskId;
+unknownTaskId.set_value("2");
+
+// Stop the clock.
+Clock::pause();
+
+// Initiate an action.
+driver.killTask(unknownTaskId);
+
+// Make sure the event associated with the action has been queued.
+AWAIT_READY(killTaskMessage);
+
+// Wait for all messages to be dispatched and processed completely to satisfy
+// the expectation that we didn't receive a status update.
+Clock::settle();
+
+Clock::resume();
+</code></pre>
+
+<h2>Intercepting a message sent to a different OS process</h2>
+
+<p>Intercepting messages sent between libprocess processes (let&rsquo;s call 
them actors to avoid ambiguity with OS processes) that live in the same OS 
process is easy, e.g.:</p>
+
+<pre><code class="{.cpp}">Future&lt;SlaveReregisteredMessage&gt; 
slaveReregisteredMessage =
+  FUTURE_PROTOBUF(SlaveReregisteredMessage(), _, _);
+...
+AWAIT_READY(slaveReregisteredMessage);
+</code></pre>
+
+<p>However, this won&rsquo;t work if we want to intercept a message sent to an 
actor (technically a <code>UPID</code>) that lives in another OS process. For 
example, <code>CommandExecutor</code> spawned by a slave will live in a 
separate OS process, though master and slave instances live in the same OS 
process together with our test (see <code>mesos/src/tests/cluster.hpp</code>). 
The wait in this code will fail:</p>
+
+<pre><code class="{.cpp}">Future&lt;ExecutorRegisteredMessage&gt; 
executorRegisteredMessage =
+  FUTURE_PROTOBUF(ExecutorRegisteredMessage(), _, _);
+...
+AWAIT_READY(executorRegisteredMessage);
+</code></pre>
+
+<h3>Why messages sent outside the OS process are not intercepted?</h3>
+
+<p>Libprocess events may be filtered (see 
<code>libprocess/include/process/filter.hpp</code>). 
<code>FUTURE_PROTOBUF</code> uses this ability and sets an expectation on a 
<code>filter</code> method of <code>TestsFilter</code> class with a 
<code>MessageMatcher</code>, that matches the message we want to intercept. The 
actual filtering happens in <code>ProcessManager::resume()</code>, which 
fetches messages from the queue of the received events.</p>
+
+<p><em>No</em> filtering happens when sending, encoding, or transporting the 
message (see e.g. <code>ProcessManager::deliver()</code> or 
<code>SocketManager::send()</code>). Therefore in the aforementioned example, 
<code>ExecutorRegisteredMessage</code> leaves the slave undetected by the 
filter, reaches another OS process where executor lives, gets enqueued into the 
<code>CommandExecutorProcess</code>&lsquo; mailbox and can be filtered there, 
but remember our expectation is set in another OS process!</p>
+
+<h3>How to workaround</h3>
+
+<p>Consider setting expectations on corresponding incoming messages ensuring 
they are processed and therefore ACK message is sent.</p>
+
+<p>For the aforementioned example, instead of intercepting 
<code>ExecutorRegisteredMessage</code>, we can intercept 
<code>RegisterExecutorMessage</code> and wait until its processed, which 
includes sending <code>ExecutorRegisteredMessage</code> (see 
<code>Slave::registerExecutor()</code>):</p>
+
+<pre><code class="{.cpp}">Future&lt;RegisterExecutorMessage&gt; 
registerExecutorMessage =
+  FUTURE_PROTOBUF(RegisterExecutorMessage(), _, _);
+...
+AWAIT_READY(registerExecutorMessage);
+Clock::pause();
+Clock::settle();
+Clock::resume();
+</code></pre>
+
+       </div>
+</div>
+
+                       
+             <hr>
+
+                               <!-- footer -->
+             <div class="footer">
+               <p>&copy; 2012-2015 <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>

Modified: mesos/site/publish/documentation/tools/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/tools/index.html?rev=1707725&r1=1707724&r2=1707725&view=diff
==============================================================================
--- mesos/site/publish/documentation/tools/index.html (original)
+++ mesos/site/publish/documentation/tools/index.html Fri Oct  9 13:33:18 2015
@@ -103,7 +103,7 @@
 <p>If you want to hack on Mesos or write a new framework, these tools will 
help.</p>
 
 <ul>
-<li><a href="/documentation/latest/clang-format/">clang-format</a> to 
automatically apply some of the style rules dictated by the <a 
href="/documentation/latest/mesos-c++-style-guide/">Mesos C++ Style 
Guide</a>.</li>
+<li><a href="/documentation/latest/clang-format/">clang-format</a> to 
automatically apply some of the style rules dictated by the <a 
href="/documentation/latest/c++-style-guide/">Mesos C++ Style Guide</a>.</li>
 <li><a href="https://github.com/mesosphere/mesos-go";>Go Bindings and 
Examples</a> Write a Mesos framework in Go! Comes with an example scheduler and 
executor.</li>
 <li><a href="https://github.com/mesosphere/scala-sbt-mesos-framework.g8";>Mesos 
Framework giter8 Template</a> This is a giter8 template. The result of applying 
this template is a bare-bones Apache Mesos framework in Scala using SBT for 
builds and Vagrant for testing on a singleton cluster.</li>
 <li><a href="https://gist.github.com/guenter/7471695";>Scala Hello World</a> A 
simple Mesos &ldquo;Hello World&rdquo;: downloads and starts a web server on 
every node in the cluster.</li>


Reply via email to