from a54f9af110eae378ee0c923497c0874a82066f71

Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-site/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-apex-site/commit/6cc27f35
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-site/tree/6cc27f35
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-site/diff/6cc27f35

Branch: refs/heads/asf-site
Commit: 6cc27f353fa5d905aebe33dc3ab8347141a7d80a
Parents: c7ee6de
Author: sashadt <[email protected]>
Authored: Tue Mar 22 10:05:11 2016 -0700
Committer: sashadt <[email protected]>
Committed: Tue Mar 22 10:05:11 2016 -0700

----------------------------------------------------------------------
 content/css/main.css                            | 396 +++++++++----------
 .../apex-3.3/apex_development_setup/index.html  |   7 +
 .../apex-3.3/application_development/index.html |   7 +
 .../apex-3.3/application_packages/index.html    |   7 +
 content/docs/apex-3.3/autometrics/index.html    |   7 +
 content/docs/apex-3.3/compatibility/index.html  |  11 +-
 content/docs/apex-3.3/dtcli/index.html          |  11 +-
 .../docs/apex-3.3/images/security/image00.png   | Bin 0 -> 31624 bytes
 .../docs/apex-3.3/images/security/image02.png   | Bin 0 -> 11594 bytes
 content/docs/apex-3.3/index.html                |   9 +-
 content/docs/apex-3.3/mkdocs/search_index.json  |  90 +++++
 .../apex-3.3/operator_development/index.html    |   7 +
 content/docs/apex-3.3/search.html               |   7 +
 content/docs/apex-3.3/security/index.html       | 322 +++++++++++++++
 content/docs/apex-3.3/sitemap.xml               |  22 +-
 15 files changed, 692 insertions(+), 211 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-site/blob/6cc27f35/content/css/main.css
----------------------------------------------------------------------
diff --git a/content/css/main.css b/content/css/main.css
index 0978ef8..2d75b77 100644
--- a/content/css/main.css
+++ b/content/css/main.css
@@ -1075,7 +1075,7 @@ body {
   font-size: 14px;
   line-height: 1.42857143;
   color: #333333;
-  background-color: #fff;
+  background-color: #ffffff;
 }
 input,
 button,
@@ -1086,7 +1086,7 @@ textarea {
   line-height: inherit;
 }
 a {
-  color: #1EA3DD;
+  color: #1ea3dd;
   text-decoration: none;
 }
 a:hover,
@@ -1120,8 +1120,8 @@ img {
 .img-thumbnail {
   padding: 4px;
   line-height: 1.42857143;
-  background-color: #fff;
-  border: 1px solid #ddd;
+  background-color: #ffffff;
+  border: 1px solid #dddddd;
   border-radius: 4px;
   -webkit-transition: all 0.2s ease-in-out;
   -o-transition: all 0.2s ease-in-out;
@@ -1327,7 +1327,7 @@ mark,
   color: #777777;
 }
 .text-primary {
-  color: #1EA3DD;
+  color: #1ea3dd;
 }
 a.text-primary:hover,
 a.text-primary:focus {
@@ -1363,7 +1363,7 @@ a.text-danger:focus {
 }
 .bg-primary {
   color: #fff;
-  background-color: #1EA3DD;
+  background-color: #1ea3dd;
 }
 a.bg-primary:hover,
 a.bg-primary:focus {
@@ -1533,8 +1533,8 @@ code {
 kbd {
   padding: 2px 4px;
   font-size: 90%;
-  color: #fff;
-  background-color: #333;
+  color: #ffffff;
+  background-color: #333333;
   border-radius: 3px;
   box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
 }
@@ -1554,7 +1554,7 @@ pre {
   word-wrap: break-word;
   color: #333333;
   background-color: #f5f5f5;
-  border: 1px solid #ccc;
+  border: 1px solid #cccccc;
   border-radius: 4px;
 }
 pre code {
@@ -2262,11 +2262,11 @@ th {
   padding: 8px;
   line-height: 1.42857143;
   vertical-align: top;
-  border-top: 1px solid #ddd;
+  border-top: 1px solid #dddddd;
 }
 .table > thead > tr > th {
   vertical-align: bottom;
-  border-bottom: 2px solid #ddd;
+  border-bottom: 2px solid #dddddd;
 }
 .table > caption + thead > tr:first-child > th,
 .table > colgroup + thead > tr:first-child > th,
@@ -2277,10 +2277,10 @@ th {
   border-top: 0;
 }
 .table > tbody + tbody {
-  border-top: 2px solid #ddd;
+  border-top: 2px solid #dddddd;
 }
 .table .table {
-  background-color: #fff;
+  background-color: #ffffff;
 }
 .table-condensed > thead > tr > th,
 .table-condensed > tbody > tr > th,
@@ -2291,7 +2291,7 @@ th {
   padding: 5px;
 }
 .table-bordered {
-  border: 1px solid #ddd;
+  border: 1px solid #dddddd;
 }
 .table-bordered > thead > tr > th,
 .table-bordered > tbody > tr > th,
@@ -2299,7 +2299,7 @@ th {
 .table-bordered > thead > tr > td,
 .table-bordered > tbody > tr > td,
 .table-bordered > tfoot > tr > td {
-  border: 1px solid #ddd;
+  border: 1px solid #dddddd;
 }
 .table-bordered > thead > tr > th,
 .table-bordered > thead > tr > td {
@@ -2437,7 +2437,7 @@ table th[class*="col-"] {
     margin-bottom: 15px;
     overflow-y: hidden;
     -ms-overflow-style: -ms-autohiding-scrollbar;
-    border: 1px solid #ddd;
+    border: 1px solid #dddddd;
   }
   .table-responsive > .table {
     margin-bottom: 0;
@@ -2543,9 +2543,9 @@ output {
   font-size: 14px;
   line-height: 1.42857143;
   color: #555555;
-  background-color: #fff;
+  background-color: #ffffff;
   background-image: none;
-  border: 1px solid #ccc;
+  border: 1px solid #cccccc;
   border-radius: 4px;
   -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
   box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
@@ -2560,14 +2560,14 @@ output {
   box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 
0.6);
 }
 .form-control::-moz-placeholder {
-  color: #999;
+  color: #999999;
   opacity: 1;
 }
 .form-control:-ms-input-placeholder {
-  color: #999;
+  color: #999999;
 }
 .form-control::-webkit-input-placeholder {
-  color: #999;
+  color: #999999;
 }
 .form-control[disabled],
 .form-control[readonly],
@@ -3018,7 +3018,7 @@ select[multiple].input-lg {
 .btn:hover,
 .btn:focus,
 .btn.focus {
-  color: #333;
+  color: #333333;
   text-decoration: none;
 }
 .btn:active,
@@ -3042,25 +3042,25 @@ fieldset[disabled] a.btn {
   pointer-events: none;
 }
 .btn-default {
-  color: #333;
-  background-color: #fff;
-  border-color: #ccc;
+  color: #333333;
+  background-color: #ffffff;
+  border-color: #cccccc;
 }
 .btn-default:focus,
 .btn-default.focus {
-  color: #333;
+  color: #333333;
   background-color: #e6e6e6;
   border-color: #8c8c8c;
 }
 .btn-default:hover {
-  color: #333;
+  color: #333333;
   background-color: #e6e6e6;
   border-color: #adadad;
 }
 .btn-default:active,
 .btn-default.active,
 .open > .dropdown-toggle.btn-default {
-  color: #333;
+  color: #333333;
   background-color: #e6e6e6;
   border-color: #adadad;
 }
@@ -3073,7 +3073,7 @@ fieldset[disabled] a.btn {
 .btn-default:active.focus,
 .btn-default.active.focus,
 .open > .dropdown-toggle.btn-default.focus {
-  color: #333;
+  color: #333333;
   background-color: #d4d4d4;
   border-color: #8c8c8c;
 }
@@ -3100,33 +3100,33 @@ fieldset[disabled] .btn-default:active,
 .btn-default.disabled.active,
 .btn-default[disabled].active,
 fieldset[disabled] .btn-default.active {
-  background-color: #fff;
-  border-color: #ccc;
+  background-color: #ffffff;
+  border-color: #cccccc;
 }
 .btn-default .badge {
-  color: #fff;
-  background-color: #333;
+  color: #ffffff;
+  background-color: #333333;
 }
 .btn-primary {
-  color: #fff;
-  background-color: #1EA3DD;
+  color: #ffffff;
+  background-color: #1ea3dd;
   border-color: #1b92c7;
 }
 .btn-primary:focus,
 .btn-primary.focus {
-  color: #fff;
+  color: #ffffff;
   background-color: #1882b0;
   border-color: #0c4056;
 }
 .btn-primary:hover {
-  color: #fff;
+  color: #ffffff;
   background-color: #1882b0;
   border-color: #146b91;
 }
 .btn-primary:active,
 .btn-primary.active,
 .open > .dropdown-toggle.btn-primary {
-  color: #fff;
+  color: #ffffff;
   background-color: #1882b0;
   border-color: #146b91;
 }
@@ -3139,7 +3139,7 @@ fieldset[disabled] .btn-default.active {
 .btn-primary:active.focus,
 .btn-primary.active.focus,
 .open > .dropdown-toggle.btn-primary.focus {
-  color: #fff;
+  color: #ffffff;
   background-color: #146b91;
   border-color: #0c4056;
 }
@@ -3166,33 +3166,33 @@ fieldset[disabled] .btn-primary:active,
 .btn-primary.disabled.active,
 .btn-primary[disabled].active,
 fieldset[disabled] .btn-primary.active {
-  background-color: #1EA3DD;
+  background-color: #1ea3dd;
   border-color: #1b92c7;
 }
 .btn-primary .badge {
-  color: #1EA3DD;
-  background-color: #fff;
+  color: #1ea3dd;
+  background-color: #ffffff;
 }
 .btn-success {
-  color: #fff;
+  color: #ffffff;
   background-color: #5cb85c;
   border-color: #4cae4c;
 }
 .btn-success:focus,
 .btn-success.focus {
-  color: #fff;
+  color: #ffffff;
   background-color: #449d44;
   border-color: #255625;
 }
 .btn-success:hover {
-  color: #fff;
+  color: #ffffff;
   background-color: #449d44;
   border-color: #398439;
 }
 .btn-success:active,
 .btn-success.active,
 .open > .dropdown-toggle.btn-success {
-  color: #fff;
+  color: #ffffff;
   background-color: #449d44;
   border-color: #398439;
 }
@@ -3205,7 +3205,7 @@ fieldset[disabled] .btn-primary.active {
 .btn-success:active.focus,
 .btn-success.active.focus,
 .open > .dropdown-toggle.btn-success.focus {
-  color: #fff;
+  color: #ffffff;
   background-color: #398439;
   border-color: #255625;
 }
@@ -3237,28 +3237,28 @@ fieldset[disabled] .btn-success.active {
 }
 .btn-success .badge {
   color: #5cb85c;
-  background-color: #fff;
+  background-color: #ffffff;
 }
 .btn-info {
-  color: #fff;
+  color: #ffffff;
   background-color: #5bc0de;
   border-color: #46b8da;
 }
 .btn-info:focus,
 .btn-info.focus {
-  color: #fff;
+  color: #ffffff;
   background-color: #31b0d5;
   border-color: #1b6d85;
 }
 .btn-info:hover {
-  color: #fff;
+  color: #ffffff;
   background-color: #31b0d5;
   border-color: #269abc;
 }
 .btn-info:active,
 .btn-info.active,
 .open > .dropdown-toggle.btn-info {
-  color: #fff;
+  color: #ffffff;
   background-color: #31b0d5;
   border-color: #269abc;
 }
@@ -3271,7 +3271,7 @@ fieldset[disabled] .btn-success.active {
 .btn-info:active.focus,
 .btn-info.active.focus,
 .open > .dropdown-toggle.btn-info.focus {
-  color: #fff;
+  color: #ffffff;
   background-color: #269abc;
   border-color: #1b6d85;
 }
@@ -3303,28 +3303,28 @@ fieldset[disabled] .btn-info.active {
 }
 .btn-info .badge {
   color: #5bc0de;
-  background-color: #fff;
+  background-color: #ffffff;
 }
 .btn-warning {
-  color: #fff;
+  color: #ffffff;
   background-color: #f0ad4e;
   border-color: #eea236;
 }
 .btn-warning:focus,
 .btn-warning.focus {
-  color: #fff;
+  color: #ffffff;
   background-color: #ec971f;
   border-color: #985f0d;
 }
 .btn-warning:hover {
-  color: #fff;
+  color: #ffffff;
   background-color: #ec971f;
   border-color: #d58512;
 }
 .btn-warning:active,
 .btn-warning.active,
 .open > .dropdown-toggle.btn-warning {
-  color: #fff;
+  color: #ffffff;
   background-color: #ec971f;
   border-color: #d58512;
 }
@@ -3337,7 +3337,7 @@ fieldset[disabled] .btn-info.active {
 .btn-warning:active.focus,
 .btn-warning.active.focus,
 .open > .dropdown-toggle.btn-warning.focus {
-  color: #fff;
+  color: #ffffff;
   background-color: #d58512;
   border-color: #985f0d;
 }
@@ -3369,28 +3369,28 @@ fieldset[disabled] .btn-warning.active {
 }
 .btn-warning .badge {
   color: #f0ad4e;
-  background-color: #fff;
+  background-color: #ffffff;
 }
 .btn-danger {
-  color: #fff;
+  color: #ffffff;
   background-color: #d9534f;
   border-color: #d43f3a;
 }
 .btn-danger:focus,
 .btn-danger.focus {
-  color: #fff;
+  color: #ffffff;
   background-color: #c9302c;
   border-color: #761c19;
 }
 .btn-danger:hover {
-  color: #fff;
+  color: #ffffff;
   background-color: #c9302c;
   border-color: #ac2925;
 }
 .btn-danger:active,
 .btn-danger.active,
 .open > .dropdown-toggle.btn-danger {
-  color: #fff;
+  color: #ffffff;
   background-color: #c9302c;
   border-color: #ac2925;
 }
@@ -3403,7 +3403,7 @@ fieldset[disabled] .btn-warning.active {
 .btn-danger:active.focus,
 .btn-danger.active.focus,
 .open > .dropdown-toggle.btn-danger.focus {
-  color: #fff;
+  color: #ffffff;
   background-color: #ac2925;
   border-color: #761c19;
 }
@@ -3435,10 +3435,10 @@ fieldset[disabled] .btn-danger.active {
 }
 .btn-danger .badge {
   color: #d9534f;
-  background-color: #fff;
+  background-color: #ffffff;
 }
 .btn-link {
-  color: #1EA3DD;
+  color: #1ea3dd;
   font-weight: normal;
   border-radius: 0;
 }
@@ -3566,8 +3566,8 @@ tbody.collapse.in {
   list-style: none;
   font-size: 14px;
   text-align: left;
-  background-color: #fff;
-  border: 1px solid #ccc;
+  background-color: #ffffff;
+  border: 1px solid #cccccc;
   border: 1px solid rgba(0, 0, 0, 0.15);
   border-radius: 4px;
   -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
@@ -3602,10 +3602,10 @@ tbody.collapse.in {
 .dropdown-menu > .active > a,
 .dropdown-menu > .active > a:hover,
 .dropdown-menu > .active > a:focus {
-  color: #fff;
+  color: #ffffff;
   text-decoration: none;
   outline: 0;
-  background-color: #1EA3DD;
+  background-color: #1ea3dd;
 }
 .dropdown-menu > .disabled > a,
 .dropdown-menu > .disabled > a:hover,
@@ -3933,7 +3933,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn 
{
   color: #555555;
   text-align: center;
   background-color: #eeeeee;
-  border: 1px solid #ccc;
+  border: 1px solid #cccccc;
   border-radius: 4px;
 }
 .input-group-addon.input-sm {
@@ -4034,7 +4034,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn 
{
 .nav .open > a:hover,
 .nav .open > a:focus {
   background-color: #eeeeee;
-  border-color: #1EA3DD;
+  border-color: #1ea3dd;
 }
 .nav .nav-divider {
   height: 1px;
@@ -4046,7 +4046,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn 
{
   max-width: none;
 }
 .nav-tabs {
-  border-bottom: 1px solid #ddd;
+  border-bottom: 1px solid #dddddd;
 }
 .nav-tabs > li {
   float: left;
@@ -4059,14 +4059,14 @@ select[multiple].input-group-sm > .input-group-btn > 
.btn {
   border-radius: 4px 4px 0 0;
 }
 .nav-tabs > li > a:hover {
-  border-color: #eeeeee #eeeeee #ddd;
+  border-color: #eeeeee #eeeeee #dddddd;
 }
 .nav-tabs > li.active > a,
 .nav-tabs > li.active > a:hover,
 .nav-tabs > li.active > a:focus {
   color: #555555;
-  background-color: #fff;
-  border: 1px solid #ddd;
+  background-color: #ffffff;
+  border: 1px solid #dddddd;
   border-bottom-color: transparent;
   cursor: default;
 }
@@ -4101,17 +4101,17 @@ select[multiple].input-group-sm > .input-group-btn > 
.btn {
 .nav-tabs.nav-justified > .active > a,
 .nav-tabs.nav-justified > .active > a:hover,
 .nav-tabs.nav-justified > .active > a:focus {
-  border: 1px solid #ddd;
+  border: 1px solid #dddddd;
 }
 @media (min-width: 768px) {
   .nav-tabs.nav-justified > li > a {
-    border-bottom: 1px solid #ddd;
+    border-bottom: 1px solid #dddddd;
     border-radius: 4px 4px 0 0;
   }
   .nav-tabs.nav-justified > .active > a,
   .nav-tabs.nav-justified > .active > a:hover,
   .nav-tabs.nav-justified > .active > a:focus {
-    border-bottom-color: #fff;
+    border-bottom-color: #ffffff;
   }
 }
 .nav-pills > li {
@@ -4126,8 +4126,8 @@ select[multiple].input-group-sm > .input-group-btn > .btn 
{
 .nav-pills > li.active > a,
 .nav-pills > li.active > a:hover,
 .nav-pills > li.active > a:focus {
-  color: #fff;
-  background-color: #1EA3DD;
+  color: #ffffff;
+  background-color: #1ea3dd;
 }
 .nav-stacked > li {
   float: none;
@@ -4169,17 +4169,17 @@ select[multiple].input-group-sm > .input-group-btn > 
.btn {
 .nav-tabs-justified > .active > a,
 .nav-tabs-justified > .active > a:hover,
 .nav-tabs-justified > .active > a:focus {
-  border: 1px solid #ddd;
+  border: 1px solid #dddddd;
 }
 @media (min-width: 768px) {
   .nav-tabs-justified > li > a {
-    border-bottom: 1px solid #ddd;
+    border-bottom: 1px solid #dddddd;
     border-radius: 4px 4px 0 0;
   }
   .nav-tabs-justified > .active > a,
   .nav-tabs-justified > .active > a:hover,
   .nav-tabs-justified > .active > a:focus {
-    border-bottom-color: #fff;
+    border-bottom-color: #ffffff;
   }
 }
 .tab-content > .tab-pane {
@@ -4524,7 +4524,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn 
{
   border-color: #e7e7e7;
 }
 .navbar-default .navbar-brand {
-  color: #777;
+  color: #777777;
 }
 .navbar-default .navbar-brand:hover,
 .navbar-default .navbar-brand:focus {
@@ -4532,37 +4532,37 @@ select[multiple].input-group-sm > .input-group-btn > 
.btn {
   background-color: transparent;
 }
 .navbar-default .navbar-text {
-  color: #777;
+  color: #777777;
 }
 .navbar-default .navbar-nav > li > a {
-  color: #777;
+  color: #777777;
 }
 .navbar-default .navbar-nav > li > a:hover,
 .navbar-default .navbar-nav > li > a:focus {
-  color: #333;
+  color: #333333;
   background-color: transparent;
 }
 .navbar-default .navbar-nav > .active > a,
 .navbar-default .navbar-nav > .active > a:hover,
 .navbar-default .navbar-nav > .active > a:focus {
-  color: #555;
+  color: #555555;
   background-color: #e7e7e7;
 }
 .navbar-default .navbar-nav > .disabled > a,
 .navbar-default .navbar-nav > .disabled > a:hover,
 .navbar-default .navbar-nav > .disabled > a:focus {
-  color: #ccc;
+  color: #cccccc;
   background-color: transparent;
 }
 .navbar-default .navbar-toggle {
-  border-color: #ddd;
+  border-color: #dddddd;
 }
 .navbar-default .navbar-toggle:hover,
 .navbar-default .navbar-toggle:focus {
-  background-color: #ddd;
+  background-color: #dddddd;
 }
 .navbar-default .navbar-toggle .icon-bar {
-  background-color: #888;
+  background-color: #888888;
 }
 .navbar-default .navbar-collapse,
 .navbar-default .navbar-form {
@@ -4572,51 +4572,51 @@ select[multiple].input-group-sm > .input-group-btn > 
.btn {
 .navbar-default .navbar-nav > .open > a:hover,
 .navbar-default .navbar-nav > .open > a:focus {
   background-color: #e7e7e7;
-  color: #555;
+  color: #555555;
 }
 @media (max-width: 767px) {
   .navbar-default .navbar-nav .open .dropdown-menu > li > a {
-    color: #777;
+    color: #777777;
   }
   .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
   .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
-    color: #333;
+    color: #333333;
     background-color: transparent;
   }
   .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
   .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
   .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
-    color: #555;
+    color: #555555;
     background-color: #e7e7e7;
   }
   .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
   .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
   .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
-    color: #ccc;
+    color: #cccccc;
     background-color: transparent;
   }
 }
 .navbar-default .navbar-link {
-  color: #777;
+  color: #777777;
 }
 .navbar-default .navbar-link:hover {
-  color: #333;
+  color: #333333;
 }
 .navbar-default .btn-link {
-  color: #777;
+  color: #777777;
 }
 .navbar-default .btn-link:hover,
 .navbar-default .btn-link:focus {
-  color: #333;
+  color: #333333;
 }
 .navbar-default .btn-link[disabled]:hover,
 fieldset[disabled] .navbar-default .btn-link:hover,
 .navbar-default .btn-link[disabled]:focus,
 fieldset[disabled] .navbar-default .btn-link:focus {
-  color: #ccc;
+  color: #cccccc;
 }
 .navbar-inverse {
-  background-color: #222;
+  background-color: #222222;
   border-color: #080808;
 }
 .navbar-inverse .navbar-brand {
@@ -4624,7 +4624,7 @@ fieldset[disabled] .navbar-default .btn-link:focus {
 }
 .navbar-inverse .navbar-brand:hover,
 .navbar-inverse .navbar-brand:focus {
-  color: #fff;
+  color: #ffffff;
   background-color: transparent;
 }
 .navbar-inverse .navbar-text {
@@ -4635,30 +4635,30 @@ fieldset[disabled] .navbar-default .btn-link:focus {
 }
 .navbar-inverse .navbar-nav > li > a:hover,
 .navbar-inverse .navbar-nav > li > a:focus {
-  color: #fff;
+  color: #ffffff;
   background-color: transparent;
 }
 .navbar-inverse .navbar-nav > .active > a,
 .navbar-inverse .navbar-nav > .active > a:hover,
 .navbar-inverse .navbar-nav > .active > a:focus {
-  color: #fff;
+  color: #ffffff;
   background-color: #080808;
 }
 .navbar-inverse .navbar-nav > .disabled > a,
 .navbar-inverse .navbar-nav > .disabled > a:hover,
 .navbar-inverse .navbar-nav > .disabled > a:focus {
-  color: #444;
+  color: #444444;
   background-color: transparent;
 }
 .navbar-inverse .navbar-toggle {
-  border-color: #333;
+  border-color: #333333;
 }
 .navbar-inverse .navbar-toggle:hover,
 .navbar-inverse .navbar-toggle:focus {
-  background-color: #333;
+  background-color: #333333;
 }
 .navbar-inverse .navbar-toggle .icon-bar {
-  background-color: #fff;
+  background-color: #ffffff;
 }
 .navbar-inverse .navbar-collapse,
 .navbar-inverse .navbar-form {
@@ -4668,7 +4668,7 @@ fieldset[disabled] .navbar-default .btn-link:focus {
 .navbar-inverse .navbar-nav > .open > a:hover,
 .navbar-inverse .navbar-nav > .open > a:focus {
   background-color: #080808;
-  color: #fff;
+  color: #ffffff;
 }
 @media (max-width: 767px) {
   .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
@@ -4682,19 +4682,19 @@ fieldset[disabled] .navbar-default .btn-link:focus {
   }
   .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
   .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
-    color: #fff;
+    color: #ffffff;
     background-color: transparent;
   }
   .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
   .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
   .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
-    color: #fff;
+    color: #ffffff;
     background-color: #080808;
   }
   .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
   .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
   .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
-    color: #444;
+    color: #444444;
     background-color: transparent;
   }
 }
@@ -4702,20 +4702,20 @@ fieldset[disabled] .navbar-default .btn-link:focus {
   color: #9d9d9d;
 }
 .navbar-inverse .navbar-link:hover {
-  color: #fff;
+  color: #ffffff;
 }
 .navbar-inverse .btn-link {
   color: #9d9d9d;
 }
 .navbar-inverse .btn-link:hover,
 .navbar-inverse .btn-link:focus {
-  color: #fff;
+  color: #ffffff;
 }
 .navbar-inverse .btn-link[disabled]:hover,
 fieldset[disabled] .navbar-inverse .btn-link:hover,
 .navbar-inverse .btn-link[disabled]:focus,
 fieldset[disabled] .navbar-inverse .btn-link:focus {
-  color: #444;
+  color: #444444;
 }
 .breadcrumb {
   padding: 8px 15px;
@@ -4730,7 +4730,7 @@ fieldset[disabled] .navbar-inverse .btn-link:focus {
 .breadcrumb > li + li:before {
   content: "/\00a0";
   padding: 0 5px;
-  color: #ccc;
+  color: #cccccc;
 }
 .breadcrumb > .active {
   color: #777777;
@@ -4751,9 +4751,9 @@ fieldset[disabled] .navbar-inverse .btn-link:focus {
   padding: 6px 12px;
   line-height: 1.42857143;
   text-decoration: none;
-  color: #1EA3DD;
-  background-color: #fff;
-  border: 1px solid #ddd;
+  color: #1ea3dd;
+  background-color: #ffffff;
+  border: 1px solid #dddddd;
   margin-left: -1px;
 }
 .pagination > li:first-child > a,
@@ -4774,7 +4774,7 @@ fieldset[disabled] .navbar-inverse .btn-link:focus {
   z-index: 3;
   color: #15719a;
   background-color: #eeeeee;
-  border-color: #ddd;
+  border-color: #dddddd;
 }
 .pagination > .active > a,
 .pagination > .active > span,
@@ -4783,9 +4783,9 @@ fieldset[disabled] .navbar-inverse .btn-link:focus {
 .pagination > .active > a:focus,
 .pagination > .active > span:focus {
   z-index: 2;
-  color: #fff;
-  background-color: #1EA3DD;
-  border-color: #1EA3DD;
+  color: #ffffff;
+  background-color: #1ea3dd;
+  border-color: #1ea3dd;
   cursor: default;
 }
 .pagination > .disabled > span,
@@ -4795,8 +4795,8 @@ fieldset[disabled] .navbar-inverse .btn-link:focus {
 .pagination > .disabled > a:hover,
 .pagination > .disabled > a:focus {
   color: #777777;
-  background-color: #fff;
-  border-color: #ddd;
+  background-color: #ffffff;
+  border-color: #dddddd;
   cursor: not-allowed;
 }
 .pagination-lg > li > a,
@@ -4844,8 +4844,8 @@ fieldset[disabled] .navbar-inverse .btn-link:focus {
 .pager li > span {
   display: inline-block;
   padding: 5px 14px;
-  background-color: #fff;
-  border: 1px solid #ddd;
+  background-color: #ffffff;
+  border: 1px solid #dddddd;
   border-radius: 15px;
 }
 .pager li > a:hover,
@@ -4866,7 +4866,7 @@ fieldset[disabled] .navbar-inverse .btn-link:focus {
 .pager .disabled > a:focus,
 .pager .disabled > span {
   color: #777777;
-  background-color: #fff;
+  background-color: #ffffff;
   cursor: not-allowed;
 }
 .label {
@@ -4875,7 +4875,7 @@ fieldset[disabled] .navbar-inverse .btn-link:focus {
   font-size: 75%;
   font-weight: bold;
   line-height: 1;
-  color: #fff;
+  color: #ffffff;
   text-align: center;
   white-space: nowrap;
   vertical-align: baseline;
@@ -4883,7 +4883,7 @@ fieldset[disabled] .navbar-inverse .btn-link:focus {
 }
 a.label:hover,
 a.label:focus {
-  color: #fff;
+  color: #ffffff;
   text-decoration: none;
   cursor: pointer;
 }
@@ -4902,7 +4902,7 @@ a.label:focus {
   background-color: #5e5e5e;
 }
 .label-primary {
-  background-color: #1EA3DD;
+  background-color: #1ea3dd;
 }
 .label-primary[href]:hover,
 .label-primary[href]:focus {
@@ -4942,7 +4942,7 @@ a.label:focus {
   padding: 3px 7px;
   font-size: 12px;
   font-weight: bold;
-  color: #fff;
+  color: #ffffff;
   line-height: 1;
   vertical-align: middle;
   white-space: nowrap;
@@ -4964,14 +4964,14 @@ a.label:focus {
 }
 a.badge:hover,
 a.badge:focus {
-  color: #fff;
+  color: #ffffff;
   text-decoration: none;
   cursor: pointer;
 }
 .list-group-item.active > .badge,
 .nav-pills > .active > a > .badge {
-  color: #1EA3DD;
-  background-color: #fff;
+  color: #1ea3dd;
+  background-color: #ffffff;
 }
 .list-group-item > .badge {
   float: right;
@@ -5028,8 +5028,8 @@ a.badge:focus {
   padding: 4px;
   margin-bottom: 20px;
   line-height: 1.42857143;
-  background-color: #fff;
-  border: 1px solid #ddd;
+  background-color: #ffffff;
+  border: 1px solid #dddddd;
   border-radius: 4px;
   -webkit-transition: border 0.2s ease-in-out;
   -o-transition: border 0.2s ease-in-out;
@@ -5043,7 +5043,7 @@ a.badge:focus {
 a.thumbnail:hover,
 a.thumbnail:focus,
 a.thumbnail.active {
-  border-color: #1EA3DD;
+  border-color: #1ea3dd;
 }
 .thumbnail .caption {
   padding: 9px;
@@ -5155,9 +5155,9 @@ a.thumbnail.active {
   height: 100%;
   font-size: 12px;
   line-height: 20px;
-  color: #fff;
+  color: #ffffff;
   text-align: center;
-  background-color: #1EA3DD;
+  background-color: #1ea3dd;
   -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
   box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
   -webkit-transition: width 0.6s ease;
@@ -5266,8 +5266,8 @@ a.thumbnail.active {
   display: block;
   padding: 10px 15px;
   margin-bottom: -1px;
-  background-color: #fff;
-  border: 1px solid #ddd;
+  background-color: #ffffff;
+  border: 1px solid #dddddd;
 }
 .list-group-item:first-child {
   border-top-right-radius: 4px;
@@ -5280,18 +5280,18 @@ a.thumbnail.active {
 }
 a.list-group-item,
 button.list-group-item {
-  color: #555;
+  color: #555555;
 }
 a.list-group-item .list-group-item-heading,
 button.list-group-item .list-group-item-heading {
-  color: #333;
+  color: #333333;
 }
 a.list-group-item:hover,
 button.list-group-item:hover,
 a.list-group-item:focus,
 button.list-group-item:focus {
   text-decoration: none;
-  color: #555;
+  color: #555555;
   background-color: #f5f5f5;
 }
 button.list-group-item {
@@ -5319,9 +5319,9 @@ button.list-group-item {
 .list-group-item.active:hover,
 .list-group-item.active:focus {
   z-index: 2;
-  color: #fff;
-  background-color: #1EA3DD;
-  border-color: #1EA3DD;
+  color: #ffffff;
+  background-color: #1ea3dd;
+  border-color: #1ea3dd;
 }
 .list-group-item.active .list-group-item-heading,
 .list-group-item.active:hover .list-group-item-heading,
@@ -5465,7 +5465,7 @@ button.list-group-item-danger.active:focus {
 }
 .panel {
   margin-bottom: 20px;
-  background-color: #fff;
+  background-color: #ffffff;
   border: 1px solid transparent;
   border-radius: 4px;
   -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
@@ -5499,7 +5499,7 @@ button.list-group-item-danger.active:focus {
 .panel-footer {
   padding: 10px 15px;
   background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
+  border-top: 1px solid #dddddd;
   border-bottom-right-radius: 3px;
   border-bottom-left-radius: 3px;
 }
@@ -5613,7 +5613,7 @@ button.list-group-item-danger.active:focus {
 .panel > .panel-body + .table-responsive,
 .panel > .table + .panel-body,
 .panel > .table-responsive + .panel-body {
-  border-top: 1px solid #ddd;
+  border-top: 1px solid #dddddd;
 }
 .panel > .table > tbody:first-child > tr:first-child th,
 .panel > .table > tbody:first-child > tr:first-child td {
@@ -5690,49 +5690,49 @@ button.list-group-item-danger.active:focus {
 }
 .panel-group .panel-heading + .panel-collapse > .panel-body,
 .panel-group .panel-heading + .panel-collapse > .list-group {
-  border-top: 1px solid #ddd;
+  border-top: 1px solid #dddddd;
 }
 .panel-group .panel-footer {
   border-top: 0;
 }
 .panel-group .panel-footer + .panel-collapse .panel-body {
-  border-bottom: 1px solid #ddd;
+  border-bottom: 1px solid #dddddd;
 }
 .panel-default {
-  border-color: #ddd;
+  border-color: #dddddd;
 }
 .panel-default > .panel-heading {
   color: #333333;
   background-color: #f5f5f5;
-  border-color: #ddd;
+  border-color: #dddddd;
 }
 .panel-default > .panel-heading + .panel-collapse > .panel-body {
-  border-top-color: #ddd;
+  border-top-color: #dddddd;
 }
 .panel-default > .panel-heading .badge {
   color: #f5f5f5;
   background-color: #333333;
 }
 .panel-default > .panel-footer + .panel-collapse > .panel-body {
-  border-bottom-color: #ddd;
+  border-bottom-color: #dddddd;
 }
 .panel-primary {
-  border-color: #1EA3DD;
+  border-color: #1ea3dd;
 }
 .panel-primary > .panel-heading {
-  color: #fff;
-  background-color: #1EA3DD;
-  border-color: #1EA3DD;
+  color: #ffffff;
+  background-color: #1ea3dd;
+  border-color: #1ea3dd;
 }
 .panel-primary > .panel-heading + .panel-collapse > .panel-body {
-  border-top-color: #1EA3DD;
+  border-top-color: #1ea3dd;
 }
 .panel-primary > .panel-heading .badge {
-  color: #1EA3DD;
-  background-color: #fff;
+  color: #1ea3dd;
+  background-color: #ffffff;
 }
 .panel-primary > .panel-footer + .panel-collapse > .panel-body {
-  border-bottom-color: #1EA3DD;
+  border-bottom-color: #1ea3dd;
 }
 .panel-success {
   border-color: #d6e9c6;
@@ -5859,14 +5859,14 @@ button.list-group-item-danger.active:focus {
   font-size: 21px;
   font-weight: bold;
   line-height: 1;
-  color: #000;
-  text-shadow: 0 1px 0 #fff;
+  color: #000000;
+  text-shadow: 0 1px 0 #ffffff;
   opacity: 0.2;
   filter: alpha(opacity=20);
 }
 .close:hover,
 .close:focus {
-  color: #000;
+  color: #000000;
   text-decoration: none;
   cursor: pointer;
   opacity: 0.5;
@@ -5921,8 +5921,8 @@ button.close {
 }
 .modal-content {
   position: relative;
-  background-color: #fff;
-  border: 1px solid #999;
+  background-color: #ffffff;
+  border: 1px solid #999999;
   border: 1px solid rgba(0, 0, 0, 0.2);
   border-radius: 6px;
   -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
@@ -5937,7 +5937,7 @@ button.close {
   bottom: 0;
   left: 0;
   z-index: 1040;
-  background-color: #000;
+  background-color: #000000;
 }
 .modal-backdrop.fade {
   opacity: 0;
@@ -6049,9 +6049,9 @@ button.close {
 .tooltip-inner {
   max-width: 200px;
   padding: 3px 8px;
-  color: #fff;
+  color: #ffffff;
   text-align: center;
-  background-color: #000;
+  background-color: #000000;
   border-radius: 4px;
 }
 .tooltip-arrow {
@@ -6066,56 +6066,56 @@ button.close {
   left: 50%;
   margin-left: -5px;
   border-width: 5px 5px 0;
-  border-top-color: #000;
+  border-top-color: #000000;
 }
 .tooltip.top-left .tooltip-arrow {
   bottom: 0;
   right: 5px;
   margin-bottom: -5px;
   border-width: 5px 5px 0;
-  border-top-color: #000;
+  border-top-color: #000000;
 }
 .tooltip.top-right .tooltip-arrow {
   bottom: 0;
   left: 5px;
   margin-bottom: -5px;
   border-width: 5px 5px 0;
-  border-top-color: #000;
+  border-top-color: #000000;
 }
 .tooltip.right .tooltip-arrow {
   top: 50%;
   left: 0;
   margin-top: -5px;
   border-width: 5px 5px 5px 0;
-  border-right-color: #000;
+  border-right-color: #000000;
 }
 .tooltip.left .tooltip-arrow {
   top: 50%;
   right: 0;
   margin-top: -5px;
   border-width: 5px 0 5px 5px;
-  border-left-color: #000;
+  border-left-color: #000000;
 }
 .tooltip.bottom .tooltip-arrow {
   top: 0;
   left: 50%;
   margin-left: -5px;
   border-width: 0 5px 5px;
-  border-bottom-color: #000;
+  border-bottom-color: #000000;
 }
 .tooltip.bottom-left .tooltip-arrow {
   top: 0;
   right: 5px;
   margin-top: -5px;
   border-width: 0 5px 5px;
-  border-bottom-color: #000;
+  border-bottom-color: #000000;
 }
 .tooltip.bottom-right .tooltip-arrow {
   top: 0;
   left: 5px;
   margin-top: -5px;
   border-width: 0 5px 5px;
-  border-bottom-color: #000;
+  border-bottom-color: #000000;
 }
 .popover {
   position: absolute;
@@ -6141,9 +6141,9 @@ button.close {
   word-spacing: normal;
   word-wrap: normal;
   font-size: 14px;
-  background-color: #fff;
+  background-color: #ffffff;
   background-clip: padding-box;
-  border: 1px solid #ccc;
+  border: 1px solid #cccccc;
   border: 1px solid rgba(0, 0, 0, 0.2);
   border-radius: 6px;
   -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
@@ -6201,7 +6201,7 @@ button.close {
   bottom: 1px;
   margin-left: -10px;
   border-bottom-width: 0;
-  border-top-color: #fff;
+  border-top-color: #ffffff;
 }
 .popover.right > .arrow {
   top: 50%;
@@ -6216,7 +6216,7 @@ button.close {
   left: 1px;
   bottom: -10px;
   border-left-width: 0;
-  border-right-color: #fff;
+  border-right-color: #ffffff;
 }
 .popover.bottom > .arrow {
   left: 50%;
@@ -6231,7 +6231,7 @@ button.close {
   top: 1px;
   margin-left: -10px;
   border-top-width: 0;
-  border-bottom-color: #fff;
+  border-bottom-color: #ffffff;
 }
 .popover.left > .arrow {
   top: 50%;
@@ -6245,7 +6245,7 @@ button.close {
   content: " ";
   right: 1px;
   border-right-width: 0;
-  border-left-color: #fff;
+  border-left-color: #ffffff;
   bottom: -10px;
 }
 .carousel {
@@ -6339,7 +6339,7 @@ button.close {
   opacity: 0.5;
   filter: alpha(opacity=50);
   font-size: 20px;
-  color: #fff;
+  color: #ffffff;
   text-align: center;
   text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
 }
@@ -6362,7 +6362,7 @@ button.close {
 .carousel-control:hover,
 .carousel-control:focus {
   outline: 0;
-  color: #fff;
+  color: #ffffff;
   text-decoration: none;
   opacity: 0.9;
   filter: alpha(opacity=90);
@@ -6417,7 +6417,7 @@ button.close {
   height: 10px;
   margin: 1px;
   text-indent: -999px;
-  border: 1px solid #fff;
+  border: 1px solid #ffffff;
   border-radius: 10px;
   cursor: pointer;
   background-color: #000 \9;
@@ -6427,7 +6427,7 @@ button.close {
   margin: 0;
   width: 12px;
   height: 12px;
-  background-color: #fff;
+  background-color: #ffffff;
 }
 .carousel-caption {
   position: absolute;
@@ -6437,7 +6437,7 @@ button.close {
   z-index: 10;
   padding-top: 20px;
   padding-bottom: 20px;
-  color: #fff;
+  color: #ffffff;
   text-align: center;
   text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
 }
@@ -6765,7 +6765,7 @@ button.close {
   }
 }
 #main-nav {
-  background-color: #1EA3DD;
+  background-color: #1ea3dd;
   margin-bottom: 0;
   border: none;
 }
@@ -6836,7 +6836,7 @@ button.close {
 }
 .jumbotron {
   margin-top: -10px;
-  background-color: #1EA3DD;
+  background-color: #1ea3dd;
   color: white;
 }
 .jumbotron h1 small {

http://git-wip-us.apache.org/repos/asf/incubator-apex-site/blob/6cc27f35/content/docs/apex-3.3/apex_development_setup/index.html
----------------------------------------------------------------------
diff --git a/content/docs/apex-3.3/apex_development_setup/index.html 
b/content/docs/apex-3.3/apex_development_setup/index.html
index c3029c0..5033893 100644
--- a/content/docs/apex-3.3/apex_development_setup/index.html
+++ b/content/docs/apex-3.3/apex_development_setup/index.html
@@ -132,6 +132,13 @@
     </li>
 
         
+            
+    <li class="toctree-l1 ">
+        <a class="" href="../security/">Security</a>
+        
+    </li>
+
+        
     </ul>
 <li>
           

http://git-wip-us.apache.org/repos/asf/incubator-apex-site/blob/6cc27f35/content/docs/apex-3.3/application_development/index.html
----------------------------------------------------------------------
diff --git a/content/docs/apex-3.3/application_development/index.html 
b/content/docs/apex-3.3/application_development/index.html
index d0bc30b..b7b3faa 100644
--- a/content/docs/apex-3.3/application_development/index.html
+++ b/content/docs/apex-3.3/application_development/index.html
@@ -198,6 +198,13 @@
     </li>
 
         
+            
+    <li class="toctree-l1 ">
+        <a class="" href="../security/">Security</a>
+        
+    </li>
+
+        
     </ul>
 <li>
           

http://git-wip-us.apache.org/repos/asf/incubator-apex-site/blob/6cc27f35/content/docs/apex-3.3/application_packages/index.html
----------------------------------------------------------------------
diff --git a/content/docs/apex-3.3/application_packages/index.html 
b/content/docs/apex-3.3/application_packages/index.html
index 4ca9434..cd0eea7 100644
--- a/content/docs/apex-3.3/application_packages/index.html
+++ b/content/docs/apex-3.3/application_packages/index.html
@@ -144,6 +144,13 @@
     </li>
 
         
+            
+    <li class="toctree-l1 ">
+        <a class="" href="../security/">Security</a>
+        
+    </li>
+
+        
     </ul>
 <li>
           

http://git-wip-us.apache.org/repos/asf/incubator-apex-site/blob/6cc27f35/content/docs/apex-3.3/autometrics/index.html
----------------------------------------------------------------------
diff --git a/content/docs/apex-3.3/autometrics/index.html 
b/content/docs/apex-3.3/autometrics/index.html
index d5ffea8..d52c369 100644
--- a/content/docs/apex-3.3/autometrics/index.html
+++ b/content/docs/apex-3.3/autometrics/index.html
@@ -143,6 +143,13 @@
     </li>
 
         
+            
+    <li class="toctree-l1 ">
+        <a class="" href="../security/">Security</a>
+        
+    </li>
+
+        
     </ul>
 <li>
           

http://git-wip-us.apache.org/repos/asf/incubator-apex-site/blob/6cc27f35/content/docs/apex-3.3/compatibility/index.html
----------------------------------------------------------------------
diff --git a/content/docs/apex-3.3/compatibility/index.html 
b/content/docs/apex-3.3/compatibility/index.html
index fc88b80..42ded9a 100644
--- a/content/docs/apex-3.3/compatibility/index.html
+++ b/content/docs/apex-3.3/compatibility/index.html
@@ -117,6 +117,13 @@
     </li>
 
         
+            
+    <li class="toctree-l1 ">
+        <a class="" href="../security/">Security</a>
+        
+    </li>
+
+        
     </ul>
 <li>
           
@@ -244,7 +251,7 @@ The <a href="https://github.com/siom79/japicmp";>japicmp 
Maven plugin</a> is used
     <div class="rst-footer-buttons" role="navigation" aria-label="footer 
navigation">
       
       
-        <a href="../dtcli/" class="btn btn-neutral" title="dtCli"><span 
class="icon icon-circle-arrow-left"></span> Previous</a>
+        <a href="../security/" class="btn btn-neutral" title="Security"><span 
class="icon icon-circle-arrow-left"></span> Previous</a>
       
     </div>
   
@@ -270,7 +277,7 @@ The <a href="https://github.com/siom79/japicmp";>japicmp 
Maven plugin</a> is used
     <span class="rst-current-version" data-toggle="rst-current-version">
       
       
-        <span><a href="../dtcli/" style="color: #fcfcfc;">&laquo; 
Previous</a></span>
+        <span><a href="../security/" style="color: #fcfcfc;">&laquo; 
Previous</a></span>
       
       
     </span>

http://git-wip-us.apache.org/repos/asf/incubator-apex-site/blob/6cc27f35/content/docs/apex-3.3/dtcli/index.html
----------------------------------------------------------------------
diff --git a/content/docs/apex-3.3/dtcli/index.html 
b/content/docs/apex-3.3/dtcli/index.html
index bb63fab..1aa395e 100644
--- a/content/docs/apex-3.3/dtcli/index.html
+++ b/content/docs/apex-3.3/dtcli/index.html
@@ -128,6 +128,13 @@
     </li>
 
         
+            
+    <li class="toctree-l1 ">
+        <a class="" href="../security/">Security</a>
+        
+    </li>
+
+        
     </ul>
 <li>
           
@@ -426,7 +433,7 @@ they must be part of the jar files that were deployed at 
application launch time
   
     <div class="rst-footer-buttons" role="navigation" aria-label="footer 
navigation">
       
-        <a href="../compatibility/" class="btn btn-neutral float-right" 
title="Compatibility">Next <span class="icon 
icon-circle-arrow-right"></span></a>
+        <a href="../security/" class="btn btn-neutral float-right" 
title="Security">Next <span class="icon icon-circle-arrow-right"></span></a>
       
       
         <a href="../autometrics/" class="btn btn-neutral" title="AutoMetric 
API"><span class="icon icon-circle-arrow-left"></span> Previous</a>
@@ -458,7 +465,7 @@ they must be part of the jar files that were deployed at 
application launch time
         <span><a href="../autometrics/" style="color: #fcfcfc;">&laquo; 
Previous</a></span>
       
       
-        <span style="margin-left: 15px"><a href="../compatibility/" 
style="color: #fcfcfc">Next &raquo;</a></span>
+        <span style="margin-left: 15px"><a href="../security/" style="color: 
#fcfcfc">Next &raquo;</a></span>
       
     </span>
 </div>

http://git-wip-us.apache.org/repos/asf/incubator-apex-site/blob/6cc27f35/content/docs/apex-3.3/images/security/image00.png
----------------------------------------------------------------------
diff --git a/content/docs/apex-3.3/images/security/image00.png 
b/content/docs/apex-3.3/images/security/image00.png
new file mode 100644
index 0000000..26088b0
Binary files /dev/null and b/content/docs/apex-3.3/images/security/image00.png 
differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-site/blob/6cc27f35/content/docs/apex-3.3/images/security/image02.png
----------------------------------------------------------------------
diff --git a/content/docs/apex-3.3/images/security/image02.png 
b/content/docs/apex-3.3/images/security/image02.png
new file mode 100644
index 0000000..65d30a8
Binary files /dev/null and b/content/docs/apex-3.3/images/security/image02.png 
differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-site/blob/6cc27f35/content/docs/apex-3.3/index.html
----------------------------------------------------------------------
diff --git a/content/docs/apex-3.3/index.html b/content/docs/apex-3.3/index.html
index 766851f..9d9b251 100644
--- a/content/docs/apex-3.3/index.html
+++ b/content/docs/apex-3.3/index.html
@@ -124,6 +124,13 @@
     </li>
 
         
+            
+    <li class="toctree-l1 ">
+        <a class="" href="security/">Security</a>
+        
+    </li>
+
+        
     </ul>
 <li>
           
@@ -225,5 +232,5 @@
 
 <!--
 MkDocs version : 0.15.3
-Build Date UTC : 2016-03-19 02:17:55.330407
+Build Date UTC : 2016-03-22 01:44:26.357028
 -->

http://git-wip-us.apache.org/repos/asf/incubator-apex-site/blob/6cc27f35/content/docs/apex-3.3/mkdocs/search_index.json
----------------------------------------------------------------------
diff --git a/content/docs/apex-3.3/mkdocs/search_index.json 
b/content/docs/apex-3.3/mkdocs/search_index.json
index cc08c8a..0f2b244 100644
--- a/content/docs/apex-3.3/mkdocs/search_index.json
+++ b/content/docs/apex-3.3/mkdocs/search_index.json
@@ -831,6 +831,96 @@
             "title": "Examples"
         }, 
         {
+            "location": "/security/", 
+            "text": "Security\n\n\nApplications built on Apex run as native 
YARN applications on Hadoop. The security framework and apparatus in Hadoop 
apply to the applications. The default security mechanism in Hadoop is 
Kerberos.\n\n\nKerberos Authentication\n\n\nKerberos is a ticket based 
authentication system that provides authentication in a distributed environment 
where authentication is needed between multiple users, hosts and services. It 
is the de-facto authentication mechanism supported in Hadoop. To use Kerberos 
authentication, the Hadoop installation must first be configured for secure 
mode with Kerberos. Please refer to the administration guide of your Hadoop 
distribution on how to do that. Once Hadoop is configured, there is some 
configuration needed on Apex side as well.\n\n\nConfiguring security\n\n\nThere 
is Hadoop configuration and CLI configuration. Hadoop configuration may be 
optional.\n\n\nHadoop Configuration\n\n\nAn Apex application uses delegation 
tokens to 
 authenticte with the ResourceManager (YARN) and NameNode (HDFS) and these 
tokens are issued by those servers respectively. Since the application is 
long-running,\nthe tokens should be valid for the lifetime of the application. 
Hadoop has a configuration setting for the maximum lifetime of the tokens and 
they should be set to cover the lifetime of the application. There are separate 
settings for ResourceManager and NameNode delegation\ntokens.\n\n\nThe 
ResourceManager delegation token max lifetime is specified in \nyarn-site.xml\n 
and can be specified as follows for example for a lifetime of 1 
year\n\n\nproperty\n\n  
\nname\nyarn.resourcemanager.delegation.token.max-lifetime\n/name\n\n  
\nvalue\n31536000000\n/value\n\n\n/property\n\n\n\n\n\nThe NameNode delegation 
token max lifetime is specified in\nhdfs-site.xml and can be specified as 
follows for example for a lifetime of 1 year\n\n\nproperty\n\n   
\nname\ndfs.namenode.delegation.token.max-lifetime\n/name\n\n   
\nvalue\n31536000000
 \n/value\n\n \n/property\n\n\n\n\n\nCLI Configuration\n\n\nThe Apex command 
line interface is used to launch\napplications along with performing various 
other operations and administrative tasks on the applications. \u00a0When 
Kerberos security is enabled in Hadoop, a Kerberos ticket granting ticket (TGT) 
or the Kerberos credentials of the user are needed by the CLI program \ndtcli\n 
to authenticate with Hadoop for any operation. Kerberos credentials are 
composed of a principal and either a \nkeytab\n or a password. For security and 
operational reasons only keytabs are supported in Hadoop and by extension in 
Apex platform. When user credentials are specified, all operations including 
launching\napplication are performed as that user.\n\n\nUsing kinit\n\n\nA 
Keberos ticket granting ticket (TGT) can be obtained by using the Kerberos 
command \nkinit\n. Detailed documentation for the command can be found online 
or in man pages. An sample usage of this command is\n\n\nkinit -k -t path-to
 keytab-file kerberos-principal\n\n\n\nIf this command is successful, the TGT 
is obtained, cached and available for other programs. The CLI program \ndtcli\n 
can then be started to launch applications and perform other 
operations.\n\n\nUsing Kerberos credentials\n\n\nThe CLI program \ndtcli\n can 
also use the Kerberos credentials directly without requiring a TGT to be 
obtained separately. This can be useful in batch mode where \ndtcli\n is not 
launched manually and also in scenarios where running another program like 
\nkinit\n is not feasible.\n\n\nThe credentials can be specified in the 
\ndt-site.xml\n configuration file. If only a single user is launching 
applications, the global \ndt-site.xml\n configuration file in the installation 
folder can be used. In a multi-user environment the users can use the 
\ndt-site.xml\n file in their\nhome directory. The location of this file will 
be \n$HOME/.dt/dt-site.xml\n. If this file does not exist, the user can create 
a new one.\n\n\nThe snipp
 et below shows the how the credentials can be specified in the configuration 
file as properties.\n\n\nproperty\n\n        
\nname\ndt.authentication.principal\n/name\n\n        
\nvalue\nkerberos-principal-of-user\n/value\n\n\n/property\n\n\nproperty\n\n    
    \nname\ndt.authentication.keytab\n/name\n\n        
\nvalue\nabsolute-path-to-keytab-file\n/value\n\n\n/property\n\n\n\n\n\nThe 
property \ndt.authentication.principal\n specifies the Kerberos user principal 
and \ndt.authentication.keytab\n specifies the absolute path to the keytab file 
for the user.\n\n\nThe subsequent sections talk about how security works in 
Apex. This information is not needed by users but is intended for the 
inquisitive techical audience who want to know how security 
works.\n\n\nSecurity architecture\n\n\nIn this section we will see how security 
works for applications built on Apex. We will look at the different 
methodologies involved in running the applications and in each case we will 
look into the differe
 nt components that are involved. We will go into the architecture of these 
components and look at the different security mechanisms that are in 
play.\n\n\nApplication Launch\n\n\nTo launch applications in Apache Apex the 
command line client dtcli can be used. The application artifacts such as 
binaries and properties are supplied as an application package. The client, 
during the various steps involved to launch the application needs to 
communicate with both the Resource Manager and the Name Node. The Resource 
Manager communication involves the client asking for new resources to run the 
application master and start the application launch process. The steps along 
with sample Java code are described in Writing YARN Applications. The Name Node 
communication includes the application artifacts being copied to HDFS so that 
they are available across the cluster for launching the different application 
containers.\n\n\nIn secure mode the communications with both Resource Manager 
and Name Node 
 requires authentication and the mechanism is Kerberos. Below is an 
illustration showing this.\n\n\n        \n\n\nThe client dtcli supports 
Kerberos authentication and will automatically enable it in a secure 
environment. To authenticate, some Kerberos configuration namely the Kerberos 
credentials, are needed by the client. There are two parameters, the Kerberos 
principal and keytab to use for the client. These can be specified in the 
dt-site.xml configuration file. The properties are shown below\n\n\n    
\nproperty\n\n            \nname\ndt.authentication.principal\n/name\n\n        
    \nvalue\nkerberos-principal-of-user\n/value\n\n    \n/property\n\n    
\nproperty\n\n            \nname\ndt.authentication.keytab\n/name\n\n           
 \nvalue\nabsolute-path-to-keytab-file\n/value\n\n    
\n/property\n\n\n\n\nRefer to document Operation and Installation Guide section 
Multi Tenancy and Security subsection CLI Configuration in the documentation 
for more information. The document can als
 o be accessed here client configuration\n\n\nThere is another important 
functionality that is performed by the client and that is to retrieve what are 
called delegation tokens from the Resource Manager and Name Node to seed the 
application master container that is to be launched. This is detailed in the 
next section. \n\n\nRuntime Security\n\n\nWhen the application is completely up 
and running, there are different components of the application running as 
separate processes possibly on different nodes in the cluster as it is a 
distributed application. These components interactwould be interacting with 
each other and the Hadoop services. In secure mode, all these interactions have 
to be authenticated before they can be successfully processed. The interactions 
are illustrated below in a diagram to give a complete overview. Each of them is 
explained in subsequent sections.\n\n\n\n\nSTRAM and Hadoop\n\n\nEvery Apache 
Apex application has a master process akin to any YARN application. In 
 our case it is called STRAM (Streaming Application Master). It is a master 
process that runs in its own container and manages the different distributed 
components of the application. Among other tasks it requests Resource Manager 
for new resources as they are needed and gives back resources that are no 
longer needed. STRAM also needs to communicate with Name Node from time-to-time 
to access the persistent HDFS file system. \n\n\nIn secure mode STRAM has to 
authenticate with both Resource Manager and Name Node before it can send any 
requests and this is achieved using Delegation Tokens. Since STRAM runs as a 
managed application master it runs in a Hadoop container. This container could 
have been allocated on any node based on what resources were available. Since 
there is no fixed node where STRAM runs it does not have Kerberos credentials 
and hence unlike the launch client dtcli it cannot authenticate with Hadoop 
services Resource Manager and Name Node using Kerberos. Instead, Delega
 tion Tokens are used for authentication.\n\n\nDelegation 
Tokens\n\n\nDelegation tokens are tokens that are dynamically issued by the 
source and clients use them to authenticate with the source. The source stores 
the delegation tokens it has issued in a cache and checks the delegation token 
sent by a client against the cache. If a match is found, the authentication is 
successful else it fails. This is the second mode of authentication in secure 
Hadoop after Kerberos. More details can be found in the Hadoop security design 
document. In this case the delegation tokens are issued by Resource Manager and 
Name Node. STRAM useswould use these tokens to authenticate with them. But how 
does it get them in the first place? This is where the launch client dtcli 
comes in. \n\n\nThe client dtcli, since it possesses Kerberos credentials as 
explained in the Application Launch section, is able to authenticate with 
Resource Manager and Name Node using Kerberos. It then requests for delegation 
tokens
  over the Kerberos authenticated connection. The servers return the delegation 
tokens in the response payload. The client in requesting the resource manager 
for the start of the application master container for STRAM seeds it with these 
tokens so that when STRAM starts it has these tokens. It can then use these 
tokens to authenticate with the Hadoop services.\n\n\nStreaming 
Container\n\n\nA streaming container is a process that runs a part of the 
application business logic. It is a container deployed on a node in the 
cluster. The part of business logic is implemented in what we call an operator. 
Multiple operators connected together make up the complete application and 
hence there are multiple streaming containers in an application. The streaming 
containers have different types of communications going on as illustrated in 
the diagram above. They are described below.\n\n\nSTRAM Delegation 
Token\n\n\nThe streaming containers periodically communicate with the 
application master STRAM. 
 In the communication they send what are called heartbeats with information 
such as statistics and receive commands from STRAM such as deployment or 
un-deployment of operators, changing properties of operators etc. In secure 
mode, this communication cannot just occur without any authentication. To 
facilitate this authentication special tokens called STRAM Delegation Tokens 
are used. These tokens are created and managed by STRAM. When a new streaming 
container is being started, since STRAM is the one negotiating resources from 
Resource Manager for the container and requesting to start the container, it 
seeds the container with the STRAM delegation token necessary to communicate 
with it. Thus, a streaming container has the STRAM delegation token to 
successfully authenticate and communicate with STRAM.\n\n\nBuffer Server 
Token\n\n\nAs mentioned earlier an operator implements a piece of the business 
logic of the application and multiple operators together complete the 
application. In cre
 ating the application the operators are assembled together in a direct acyclic 
graph, a pipeline, with output of operators becoming the input for other 
operators. At runtime the stream containers hosting the operators are connected 
to each other and sending data to each other. In secure mode these connections 
should be authenticated too, more importantly than others, as they are involved 
in transferring application data.\n\n\nWhen operators are running there will be 
effective processing rate differences between them due to intrinsic reasons 
such as operator logic or external reasons such as different resource 
availability of CPU, memory, network bandwidth etc. as the operators are 
running in different containers. To maximize performance and utilization the 
data flow is handled asynchronous to the regular operator function and a buffer 
is used to intermediately store the data that is being produced by the 
operator. This buffered data is served by a buffer server over the network conn
 ection to the downstream streaming container containing the operator that is 
supposed to receive the data from this operator. This connection is secured by 
a token called the buffer server token. These tokens are also generated and 
seeded by STRAM when the streaming containers are deployed and started and it 
uses different tokens for different buffer servers to have better 
security.\n\n\nNameNode Delegation Token\n\n\nLike STRAM, streaming containers 
also need to communicate with NameNode to use HDFS persistence for reasons such 
as saving the state of the operators. In secure mode they also use NameNode 
delegation tokens for authentication. These tokens are also seeded by STRAM for 
the streaming containers.\n\n\nConclusion\n\n\nWe looked at the different 
security requirements for distributed applications when they run in a secure 
Hadoop environment and looked at how Apex solves this.", 
+            "title": "Security"
+        }, 
+        {
+            "location": "/security/#security", 
+            "text": "Applications built on Apex run as native YARN 
applications on Hadoop. The security framework and apparatus in Hadoop apply to 
the applications. The default security mechanism in Hadoop is Kerberos.", 
+            "title": "Security"
+        }, 
+        {
+            "location": "/security/#kerberos-authentication", 
+            "text": "Kerberos is a ticket based authentication system that 
provides authentication in a distributed environment where authentication is 
needed between multiple users, hosts and services. It is the de-facto 
authentication mechanism supported in Hadoop. To use Kerberos authentication, 
the Hadoop installation must first be configured for secure mode with Kerberos. 
Please refer to the administration guide of your Hadoop distribution on how to 
do that. Once Hadoop is configured, there is some configuration needed on Apex 
side as well.", 
+            "title": "Kerberos Authentication"
+        }, 
+        {
+            "location": "/security/#configuring-security", 
+            "text": "There is Hadoop configuration and CLI configuration. 
Hadoop configuration may be optional.", 
+            "title": "Configuring security"
+        }, 
+        {
+            "location": "/security/#hadoop-configuration", 
+            "text": "An Apex application uses delegation tokens to authenticte 
with the ResourceManager (YARN) and NameNode (HDFS) and these tokens are issued 
by those servers respectively. Since the application is long-running,\nthe 
tokens should be valid for the lifetime of the application. Hadoop has a 
configuration setting for the maximum lifetime of the tokens and they should be 
set to cover the lifetime of the application. There are separate settings for 
ResourceManager and NameNode delegation\ntokens.  The ResourceManager 
delegation token max lifetime is specified in  yarn-site.xml  and can be 
specified as follows for example for a lifetime of 1 year  property \n   name 
yarn.resourcemanager.delegation.token.max-lifetime /name \n   value 31536000000 
/value  /property   The NameNode delegation token max lifetime is specified 
in\nhdfs-site.xml and can be specified as follows for example for a lifetime of 
1 year  property \n    name dfs.namenode.delegation.token.max-lifetime /nam
 e \n    value 31536000000 /value \n  /property", 
+            "title": "Hadoop Configuration"
+        }, 
+        {
+            "location": "/security/#cli-configuration", 
+            "text": "The Apex command line interface is used to 
launch\napplications along with performing various other operations and 
administrative tasks on the applications. \u00a0When Kerberos security is 
enabled in Hadoop, a Kerberos ticket granting ticket (TGT) or the Kerberos 
credentials of the user are needed by the CLI program  dtcli  to authenticate 
with Hadoop for any operation. Kerberos credentials are composed of a principal 
and either a  keytab  or a password. For security and operational reasons only 
keytabs are supported in Hadoop and by extension in Apex platform. When user 
credentials are specified, all operations including launching\napplication are 
performed as that user.", 
+            "title": "CLI Configuration"
+        }, 
+        {
+            "location": "/security/#using-kinit", 
+            "text": "A Keberos ticket granting ticket (TGT) can be obtained by 
using the Kerberos command  kinit . Detailed documentation for the command can 
be found online or in man pages. An sample usage of this command is  kinit -k 
-t path-tokeytab-file kerberos-principal  If this command is successful, the 
TGT is obtained, cached and available for other programs. The CLI program  
dtcli  can then be started to launch applications and perform other 
operations.", 
+            "title": "Using kinit"
+        }, 
+        {
+            "location": "/security/#using-kerberos-credentials", 
+            "text": "The CLI program  dtcli  can also use the Kerberos 
credentials directly without requiring a TGT to be obtained separately. This 
can be useful in batch mode where  dtcli  is not launched manually and also in 
scenarios where running another program like  kinit  is not feasible.  The 
credentials can be specified in the  dt-site.xml  configuration file. If only a 
single user is launching applications, the global  dt-site.xml  configuration 
file in the installation folder can be used. In a multi-user environment the 
users can use the  dt-site.xml  file in their\nhome directory. The location of 
this file will be  $HOME/.dt/dt-site.xml . If this file does not exist, the 
user can create a new one.  The snippet below shows the how the credentials can 
be specified in the configuration file as properties.  property \n         name 
dt.authentication.principal /name \n         value kerberos-principal-of-user 
/value  /property  property \n         name dt.authentication.keyta
 b /name \n         value absolute-path-to-keytab-file /value  /property   The 
property  dt.authentication.principal  specifies the Kerberos user principal 
and  dt.authentication.keytab  specifies the absolute path to the keytab file 
for the user.  The subsequent sections talk about how security works in Apex. 
This information is not needed by users but is intended for the inquisitive 
techical audience who want to know how security works.", 
+            "title": "Using Kerberos credentials"
+        }, 
+        {
+            "location": "/security/#security-architecture", 
+            "text": "In this section we will see how security works for 
applications built on Apex. We will look at the different methodologies 
involved in running the applications and in each case we will look into the 
different components that are involved. We will go into the architecture of 
these components and look at the different security mechanisms that are in 
play.", 
+            "title": "Security architecture"
+        }, 
+        {
+            "location": "/security/#application-launch", 
+            "text": "To launch applications in Apache Apex the command line 
client dtcli can be used. The application artifacts such as binaries and 
properties are supplied as an application package. The client, during the 
various steps involved to launch the application needs to communicate with both 
the Resource Manager and the Name Node. The Resource Manager communication 
involves the client asking for new resources to run the application master and 
start the application launch process. The steps along with sample Java code are 
described in Writing YARN Applications. The Name Node communication includes 
the application artifacts being copied to HDFS so that they are available 
across the cluster for launching the different application containers.  In 
secure mode the communications with both Resource Manager and Name Node 
requires authentication and the mechanism is Kerberos. Below is an illustration 
showing this.            The client dtcli supports Kerberos authentication and 
wil
 l automatically enable it in a secure environment. To authenticate, some 
Kerberos configuration namely the Kerberos credentials, are needed by the 
client. There are two parameters, the Kerberos principal and keytab to use for 
the client. These can be specified in the dt-site.xml configuration file. The 
properties are shown below       property \n             name 
dt.authentication.principal /name \n             value 
kerberos-principal-of-user /value \n     /property \n     property \n           
  name dt.authentication.keytab /name \n             value 
absolute-path-to-keytab-file /value \n     /property   Refer to document 
Operation and Installation Guide section Multi Tenancy and Security subsection 
CLI Configuration in the documentation for more information. The document can 
also be accessed here client configuration  There is another important 
functionality that is performed by the client and that is to retrieve what are 
called delegation tokens from the Resource Manager and Na
 me Node to seed the application master container that is to be launched. This 
is detailed in the next section.", 
+            "title": "Application Launch"
+        }, 
+        {
+            "location": "/security/#runtime-security", 
+            "text": "When the application is completely up and running, there 
are different components of the application running as separate processes 
possibly on different nodes in the cluster as it is a distributed application. 
These components interactwould be interacting with each other and the Hadoop 
services. In secure mode, all these interactions have to be authenticated 
before they can be successfully processed. The interactions are illustrated 
below in a diagram to give a complete overview. Each of them is explained in 
subsequent sections.", 
+            "title": "Runtime Security"
+        }, 
+        {
+            "location": "/security/#stram-and-hadoop", 
+            "text": "Every Apache Apex application has a master process akin 
to any YARN application. In our case it is called STRAM (Streaming Application 
Master). It is a master process that runs in its own container and manages the 
different distributed components of the application. Among other tasks it 
requests Resource Manager for new resources as they are needed and gives back 
resources that are no longer needed. STRAM also needs to communicate with Name 
Node from time-to-time to access the persistent HDFS file system.   In secure 
mode STRAM has to authenticate with both Resource Manager and Name Node before 
it can send any requests and this is achieved using Delegation Tokens. Since 
STRAM runs as a managed application master it runs in a Hadoop container. This 
container could have been allocated on any node based on what resources were 
available. Since there is no fixed node where STRAM runs it does not have 
Kerberos credentials and hence unlike the launch client dtcli it ca
 nnot authenticate with Hadoop services Resource Manager and Name Node using 
Kerberos. Instead, Delegation Tokens are used for authentication.", 
+            "title": "STRAM and Hadoop"
+        }, 
+        {
+            "location": "/security/#delegation-tokens", 
+            "text": "Delegation tokens are tokens that are dynamically issued 
by the source and clients use them to authenticate with the source. The source 
stores the delegation tokens it has issued in a cache and checks the delegation 
token sent by a client against the cache. If a match is found, the 
authentication is successful else it fails. This is the second mode of 
authentication in secure Hadoop after Kerberos. More details can be found in 
the Hadoop security design document. In this case the delegation tokens are 
issued by Resource Manager and Name Node. STRAM useswould use these tokens to 
authenticate with them. But how does it get them in the first place? This is 
where the launch client dtcli comes in.   The client dtcli, since it possesses 
Kerberos credentials as explained in the Application Launch section, is able to 
authenticate with Resource Manager and Name Node using Kerberos. It then 
requests for delegation tokens over the Kerberos authenticated connection. The 
ser
 vers return the delegation tokens in the response payload. The client in 
requesting the resource manager for the start of the application master 
container for STRAM seeds it with these tokens so that when STRAM starts it has 
these tokens. It can then use these tokens to authenticate with the Hadoop 
services.", 
+            "title": "Delegation Tokens"
+        }, 
+        {
+            "location": "/security/#streaming-container", 
+            "text": "A streaming container is a process that runs a part of 
the application business logic. It is a container deployed on a node in the 
cluster. The part of business logic is implemented in what we call an operator. 
Multiple operators connected together make up the complete application and 
hence there are multiple streaming containers in an application. The streaming 
containers have different types of communications going on as illustrated in 
the diagram above. They are described below.", 
+            "title": "Streaming Container"
+        }, 
+        {
+            "location": "/security/#stram-delegation-token", 
+            "text": "The streaming containers periodically communicate with 
the application master STRAM. In the communication they send what are called 
heartbeats with information such as statistics and receive commands from STRAM 
such as deployment or un-deployment of operators, changing properties of 
operators etc. In secure mode, this communication cannot just occur without any 
authentication. To facilitate this authentication special tokens called STRAM 
Delegation Tokens are used. These tokens are created and managed by STRAM. When 
a new streaming container is being started, since STRAM is the one negotiating 
resources from Resource Manager for the container and requesting to start the 
container, it seeds the container with the STRAM delegation token necessary to 
communicate with it. Thus, a streaming container has the STRAM delegation token 
to successfully authenticate and communicate with STRAM.", 
+            "title": "STRAM Delegation Token"
+        }, 
+        {
+            "location": "/security/#buffer-server-token", 
+            "text": "As mentioned earlier an operator implements a piece of 
the business logic of the application and multiple operators together complete 
the application. In creating the application the operators are assembled 
together in a direct acyclic graph, a pipeline, with output of operators 
becoming the input for other operators. At runtime the stream containers 
hosting the operators are connected to each other and sending data to each 
other. In secure mode these connections should be authenticated too, more 
importantly than others, as they are involved in transferring application data. 
 When operators are running there will be effective processing rate differences 
between them due to intrinsic reasons such as operator logic or external 
reasons such as different resource availability of CPU, memory, network 
bandwidth etc. as the operators are running in different containers. To 
maximize performance and utilization the data flow is handled asynchronous to 
the regular operato
 r function and a buffer is used to intermediately store the data that is being 
produced by the operator. This buffered data is served by a buffer server over 
the network connection to the downstream streaming container containing the 
operator that is supposed to receive the data from this operator. This 
connection is secured by a token called the buffer server token. These tokens 
are also generated and seeded by STRAM when the streaming containers are 
deployed and started and it uses different tokens for different buffer servers 
to have better security.", 
+            "title": "Buffer Server Token"
+        }, 
+        {
+            "location": "/security/#namenode-delegation-token", 
+            "text": "Like STRAM, streaming containers also need to communicate 
with NameNode to use HDFS persistence for reasons such as saving the state of 
the operators. In secure mode they also use NameNode delegation tokens for 
authentication. These tokens are also seeded by STRAM for the streaming 
containers.", 
+            "title": "NameNode Delegation Token"
+        }, 
+        {
+            "location": "/security/#conclusion", 
+            "text": "We looked at the different security requirements for 
distributed applications when they run in a secure Hadoop environment and 
looked at how Apex solves this.", 
+            "title": "Conclusion"
+        }, 
+        {
             "location": "/compatibility/", 
             "text": "Apache Apex Compatibility\n\n\nPurpose\n\n\nThis document 
captures the compatibility goals of the Apache Apex project. The different 
types of compatibility between Apex releases that affect contributors, 
downstream projects, and end-users are enumerated. For each type of 
compatibility we:\n\n\n\n\ndescribe the impact on downstream projects or 
end-users\n\n\nwhere applicable, call out the policy adopted when incompatible 
changes are permitted.\n\n\n\n\nApache Apex follows \nsemantic versioning\n. 
Depending on the compatibility type, there may be different tools or mechanisms 
to ensure compatibility, for example by comparing artifacts during the build 
process.\n\n\nThe type of change will inform the required target version 
number. Given a version number MAJOR.MINOR.PATCH, increment the:\n\n\n\n\nMAJOR 
version when you make incompatible API changes,\n\n\nMINOR version when you add 
functionality in a backward-compatible manner, and\n\n\nPATCH version when you 
make b
 ackward-compatible bug fixes.\n\n\n\n\nAdditional labels for pre-release and 
build metadata are available as extensions to the MAJOR.MINOR.PATCH 
format.\n\n\nThe overall goal is to avoid backward incompatible changes and 
major release upgrades. Accordingly we attempt to release new features with 
minor versions that are incremental to the prior release and offer our users a 
frictionless upgrade path. When planning contributions, please consider 
compatibility and release road map upfront. Specifically, certain changes that 
conflict with the versioning may need to be documented in JIRA and deferred 
until a future major release. \n\n\nCompatibility types\n\n\nJava 
API\n\n\nPublic API compatibility is required to ensure end-user programs and 
downstream projects continue to work without modification.\nThe public API 
consists of:\n\n\n\n\napex-core: all interfaces and classes in \napi\n and 
\ncommon\n modules\n\n\napex-malhar: all interfaces and classes in all modules 
except \ndemos\n, \ns
 amples\n, \nbenchmark\n \n\n\n\n\nInterfaces and classes that are part of the 
public API and are annotated with \ninterface stability\n are treated according 
to the rules defined by the annotation.  \n\n\nPolicy\n\n\nChanges to the 
public API must follow semantic versioning. \nPublic APIs must be deprecated 
for at least one minor release prior to their removal in a major release.\nThe 
\njapicmp Maven plugin\n is used to enforce compatibility as part of the Travis 
pre-commit builds.\n\n\nSemantic compatibility\n\n\nThe behavior of APIs needs 
to remain consistent over versions, though changes for correctness may result 
in changes in behavior. Tests and javadocs specify the behavior. Over time, 
test suites should be expanded to verify compliance with the specification, 
effectively creating a formal specification for the subset of behaviors that 
can be easily tested.\n\n\nPolicy\n\n\nThe behavior of existing API cannot be 
modified as it would break existing user code. There are exceptio
 nal circumstances that may justify such changes, in which cases they should be 
discussed on the mailing list before implementation. Examples are bug fixes 
related to security issues, data corruption/consistency or to correct an 
unintended change from previous release that violated semantic compatibility. 
Such changes should be accompanied by test coverage for the exact 
behavior.\n\n\nREST API\n\n\nREST API compatibility corresponds to both the 
URLs and request/response content over the wire. REST APIs are specifically 
meant for stable use by clients across releases, even major releases. 
\n\n\nPolicy\n\n\nThe REST API is separately versioned. This is to allow for 
co-existence of old and new API should there be a need for backward 
incompatible changes in the future.\n\n\nCommand Line Interface (CLI)\n\n\nThe 
CLI may be used either directly via the system shell or via shell scripts. 
Changing the path, removing or renaming command line options, the order of 
arguments, or the command ret
 urn code and output break compatibility and may adversely affect 
users.\n\n\nPolicy\n\n\nCLI commands are to be deprecated (warning when used) 
in a prior minor release before they are removed or incompatibly modified in a 
subsequent major release.\n\n\nConfiguration Files\n\n\nConfiguration files are 
used for engine or application settings. Changes to keys and default values 
directly affect users and are hard to diagnose (compared to a compile error, 
for example).\n\n\nPolicy\n\n\nName, location, format, keys of configuration 
files should be deprecated in a prior minor release and can only be changed in 
major release. Best effort should be made to support the deprecated behavior 
for one more major release (not guaranteed). It is also desirable to provide 
the user with a migration tool.\n\n\nInternal Wire compatibility\n\n\nApex 
containers internally use RPC communication and netlet for the data flow. The 
protocols are private and user components are not exposed to it. Apex is a YARN
  application and automatically deployed. There is currently no situation where 
containers of different Apex engine versions need to be interoperable. Should 
such a scenario become relevant in the future, wire compatibility needs to be 
specified.\n\n\nPolicy\n\n\nN/A\n\n\nInternal File formats\n\n\nApex engine 
stores data in the file system for recovery and the data is typically obtained 
from serialization (from Kryo, Java etc.). Changes to internal classes may 
affect the ability to relaunch an application with upgraded engine code from 
previous state. This is currently not supported. In the future, the 
serialization mechanism should guarantee backward 
compatibility.\n\n\nPolicy\n\n\nCurrently no compatibility guarantee. User to 
cold-restart application on engine upgrade.\n\n\nJava Classpath\n\n\nApex 
applications should not bundle Hadoop dependencies or Apex engine dependencies 
but use the dependencies provided in the target environment to avoid conflicts. 
The Apex application arche
 type can be used to generate a compliant project.  \n\n\nPolicy\n\n\nApex 
engine dependencies can change as per semantic versioning. Following above 
guidelines automatically maintains the backward compatibility based on semantic 
versioning of Apex.\n\n\nMaven Build Artifacts\n\n\nDownstream projects 
reference the Apex engine dependencies and Malhar operator libraries for 
application development etc. Changes to the packaging (which classes are in 
which jar), the groupId, artifactId and which artifacts are deployed to Maven 
central impact upgrades.\n\n\nPolicy\n\n\nThe artifacts that contain the 
classes that form the public API as specified above cannot change in patch 
releases and should stay compatible within a major release. Patch releases can 
change dependencies, but only at the patch level and following semantic 
versioning.\n\n\nHardware/Software Requirements\n\n\nApex depends on Apache 
Hadoop. The community intends to support all major Hadoop distros and current 
versions. Apex c
 urrently supports Hadoop 2.2.0 and higher and Java 7 and higher. Apex is 
written in Java and has been tested on Linux based Hadoop clusters. There are 
no additional restrictions on the hardware architecture.  \n\n\nTo keep up with 
the latest advances in hardware, operating systems, JVMs, Hadoop and other 
software, new Apex releases may require higher versions. Upgrading Apex may 
require upgrading other dependent software components.\n\n\nPolicy\n\n\nThe JVM 
and Hadoop minimum version requirements are not expected to change outside 
major releases.", 
             "title": "Compatibility"

http://git-wip-us.apache.org/repos/asf/incubator-apex-site/blob/6cc27f35/content/docs/apex-3.3/operator_development/index.html
----------------------------------------------------------------------
diff --git a/content/docs/apex-3.3/operator_development/index.html 
b/content/docs/apex-3.3/operator_development/index.html
index cae1749..710d490 100644
--- a/content/docs/apex-3.3/operator_development/index.html
+++ b/content/docs/apex-3.3/operator_development/index.html
@@ -176,6 +176,13 @@
     </li>
 
         
+            
+    <li class="toctree-l1 ">
+        <a class="" href="../security/">Security</a>
+        
+    </li>
+
+        
     </ul>
 <li>
           

http://git-wip-us.apache.org/repos/asf/incubator-apex-site/blob/6cc27f35/content/docs/apex-3.3/search.html
----------------------------------------------------------------------
diff --git a/content/docs/apex-3.3/search.html 
b/content/docs/apex-3.3/search.html
index 6fa6c09..fda658a 100644
--- a/content/docs/apex-3.3/search.html
+++ b/content/docs/apex-3.3/search.html
@@ -113,6 +113,13 @@
     </li>
 
         
+            
+    <li class="toctree-l1 ">
+        <a class="" href="security/">Security</a>
+        
+    </li>
+
+        
     </ul>
 <li>
           

Reply via email to