You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by mo...@apache.org on 2017/12/15 19:39:05 UTC

svn commit: r1818319 - in /knox: site/ site/books/knox-0-14-0/ trunk/books/0.14.0/ trunk/books/0.14.0/dev-guide/

Author: more
Date: Fri Dec 15 19:39:05 2017
New Revision: 1818319

URL: http://svn.apache.org/viewvc?rev=1818319&view=rev
Log:
KNOX-1122 - Document Ambari Cluster Configuration Monitor ( Phil Zampino via Sandeep More)

Modified:
    knox/site/books/knox-0-14-0/dev-guide.html
    knox/site/books/knox-0-14-0/user-guide.html
    knox/site/index.html
    knox/site/issue-tracking.html
    knox/site/license.html
    knox/site/mail-lists.html
    knox/site/project-info.html
    knox/site/team-list.html
    knox/trunk/books/0.14.0/book.md
    knox/trunk/books/0.14.0/config.md
    knox/trunk/books/0.14.0/dev-guide/book.md

Modified: knox/site/books/knox-0-14-0/dev-guide.html
URL: http://svn.apache.org/viewvc/knox/site/books/knox-0-14-0/dev-guide.html?rev=1818319&r1=1818318&r2=1818319&view=diff
==============================================================================
--- knox/site/books/knox-0-14-0/dev-guide.html (original)
+++ knox/site/books/knox-0-14-0/dev-guide.html Fri Dec 15 19:39:05 2017
@@ -171,6 +171,14 @@
       <td>The implementation of the WebHdfs service. </td>
     </tr>
     <tr>
+      <td>gateway-discovery-ambari </td>
+      <td>The Ambari service URL discovery implementation. </td>
+    </tr>
+    <tr>
+      <td>gateway-service-remoteconfig </td>
+      <td>The implementation of the RemoteConfigurationRegistryClientService. </td>
+    </tr>
+    <tr>
       <td>gateway-server </td>
       <td>The implementation of the Knox gateway server. </td>
     </tr>
@@ -368,7 +376,7 @@ public void testDevGuideSample() throws
 
   assertThat( match.getValue(), is( &quot;fake-chain&quot;) );
 }
-</code></pre><h2><a id="Extension+Logistics">Extension Logistics</a> <a href="#Extension+Logistics"><img src="markbook-section-link.png"/></a></h2><p>There are a number of extension points available in the gateway: services, providers, rewrite steps and functions, etc. All of these use the Java ServiceLoader mechanism for their discovery. There are two ways to make these extensions available on the class path at runtime. The first way to add a new module to the project and have the extension &ldquo;built-in&rdquo;. The second is to add the extension to the class path of the server after it is installed. Both mechanism are described in more detail below.</p><h3><a id="Service+Loaders">Service Loaders</a> <a href="#Service+Loaders"><img src="markbook-section-link.png"/></a></h3><p>Extensions are discovered via Java&rsquo;s [Service Loader|http://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html] mechanism. There are good [tutorials|http://docs.oracle.com/javase/tutorial/e
 xt/basics/spi.html] available for learning more about this. The basics come town to two things.</p>
+</code></pre><h2><a id="Extension+Logistics">Extension Logistics</a> <a href="#Extension+Logistics"><img src="markbook-section-link.png"/></a></h2><p>There are a number of extension points available in the gateway: services, providers, rewrite steps and functions, etc. All of these use the Java ServiceLoader mechanism for their discovery. There are two ways to make these extensions available on the class path at runtime. The first way to add a new module to the project and have the extension &ldquo;built-in&rdquo;. The second is to add the extension to the class path of the server after it is installed. Both mechanism are described in more detail below.</p><h3><a id="Service+Loaders">Service Loaders</a> <a href="#Service+Loaders"><img src="markbook-section-link.png"/></a></h3><p>Extensions are discovered via Java&rsquo;s <a href="http://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html">Service Loader</a> mechanism. There are good <a href="http://docs.oracle.com/javase/
 tutorial/ext/basics/spi.html">tutorials</a> available for learning more about this. The basics come down to two things.</p>
 <ol>
   <li><p>Implement the service contract interface (e.g. ServiceDeploymentContributor, ProviderDeploymentContributor)</p></li>
   <li><p>Create a file in META-INF/services of the JAR that will contain the extension. This file will be named as the fully qualified name of the contract interface (e.g. org.apache.hadoop.gateway.deploy.ProviderDeploymentContributor). The contents of the file will be the fully qualified names of any implementation of that contract interface in that JAR.</p></li>

Modified: knox/site/books/knox-0-14-0/user-guide.html
URL: http://svn.apache.org/viewvc/knox/site/books/knox-0-14-0/user-guide.html?rev=1818319&r1=1818318&r2=1818319&view=diff
==============================================================================
--- knox/site/books/knox-0-14-0/user-guide.html (original)
+++ knox/site/books/knox-0-14-0/user-guide.html Fri Dec 15 19:39:05 2017
@@ -38,6 +38,7 @@
       <li><a href="#Externalized+Provider+Configurations">Externalized Provider Configurations</a></li>
       <li><a href="#Sharing+HA+Providers">Sharing HA Providers</a></li>
       <li><a href="#Simplified+Descriptor+Files">Simplified Descriptor Files</a></li>
+      <li><a href="#Cluster+Configuration+Monitoring">Cluster Configuration Monitoring</a></li>
       <li><a href="#Remote+Configuration+Monitor">Remote Configuration Monitor</a></li>
       <li><a href="#Remote+Configuration+Registry+Clients">Remote Configuration Registry Clients</a></li>
       <li><a href="#Topology+Descriptors">Topology Descriptors</a></li>
@@ -993,7 +994,35 @@ services:
     {&quot;name&quot;:&quot;AMBARIUI&quot;, &quot;urls&quot;:[&quot;http://sandbox.hortonworks.com:8080&quot;]}
   ]
 }
-</code></pre><p>Both of these examples illustrate the specification of credentials for the interaction with Ambari. If no credentials are specified, then the default aliases are queried. Use of the default aliases is sufficient for scenarios where topology discovery will only interact with a single Ambari instance. For multiple Ambari instances however, it&rsquo;s most likely that each will require different sets of credentials. The discovery-user and discovery-pwd-alias properties exist for this purpose. Note that whether using the default credential aliases or specifying a custom password alias, these <a href="#Alias+creation">aliases must be defined</a> prior to any attempt to deploy a topology using a simplified descriptor.</p><h5><a id="Deployment+Directories">Deployment Directories</a> <a href="#Deployment+Directories"><img src="markbook-section-link.png"/></a></h5><p>Effecting topology changes is as simple as modifying files in two specific directories.</p><p>The <code>{GATEW
 AY_HOME}/conf/shared-providers/</code> directory is the location where Knox looks for provider configurations. This directory is monitored for changes, such that modifying a provider configuration file therein will trigger updates to any referencing simplified descriptors in the <code>{GATEWAY_HOME}/conf/descriptors/</code> directory. <em>Care should be taken when deleting these files if there are referencing descriptors; any subsequent modifications of referencing descriptors will fail when the deleted provider configuration cannot be found. The references should all be modified before deleting the provider configuration.</em></p><p>Likewise, the <code>{GATEWAY_HOME}/conf/descriptors/</code> directory is monitored for changes, such that adding or modifying a simplified descriptor file in this directory will trigger the generation and deployment of a topology descriptor. Deleting a descriptor from this directory will conversely result in the removal of the previously-generated topol
 ogy descriptor, and the associated topology will be undeployed.</p><p>If the service details for a deployed (generated) topology are changed in the cluster, then the Knox topology can be updated by &rsquo;touch&rsquo;ing the simplified descriptor. This will trigger discovery and regeneration/redeployment of the topology descriptor.</p><p>Note that deleting a generated topology descriptor from <code>{GATEWAY_HOME}/conf/topologies/</code> is not sufficient for its removal. If the source descriptor is modified, or Knox is restarted, the topology descriptor will be regenerated and deployed. Removing generated topology descriptors should be done by removing the associated simplified descriptor. For the same reason, editing generated topology descriptors is strongly discouraged since they can be inadvertently overwritten.</p><p>Another means by which these topology changes can be effected is the <a href="#Admin+API">Admin API</a>.</p><h5><a id="Remote+Configuration+Monitor">Remote Configu
 ration Monitor</a> <a href="#Remote+Configuration+Monitor"><img src="markbook-section-link.png"/></a></h5><p>In addition to monitoring local directories for provider configurations and simplified descriptors, the gateway similarly supports monitoring ZooKeeper.</p><p>This monitor depends on a <a href="#Remote+Configuration+Registry+Clients">remote configuration registry client</a>, and that client must be specified by setting the following property in gateway-site.xml</p>
+</code></pre><p>Both of these examples illustrate the specification of credentials for the interaction with Ambari. If no credentials are specified, then the default aliases are queried. Use of the default aliases is sufficient for scenarios where topology discovery will only interact with a single Ambari instance. For multiple Ambari instances however, it&rsquo;s most likely that each will require different sets of credentials. The discovery-user and discovery-pwd-alias properties exist for this purpose. Note that whether using the default credential aliases or specifying a custom password alias, these <a href="#Alias+creation">aliases must be defined</a> prior to any attempt to deploy a topology using a simplified descriptor.</p><h5><a id="Deployment+Directories">Deployment Directories</a> <a href="#Deployment+Directories"><img src="markbook-section-link.png"/></a></h5><p>Effecting topology changes is as simple as modifying files in two specific directories.</p><p>The <code>{GATEW
 AY_HOME}/conf/shared-providers/</code> directory is the location where Knox looks for provider configurations. This directory is monitored for changes, such that modifying a provider configuration file therein will trigger updates to any referencing simplified descriptors in the <code>{GATEWAY_HOME}/conf/descriptors/</code> directory. <em>Care should be taken when deleting these files if there are referencing descriptors; any subsequent modifications of referencing descriptors will fail when the deleted provider configuration cannot be found. The references should all be modified before deleting the provider configuration.</em></p><p>Likewise, the <code>{GATEWAY_HOME}/conf/descriptors/</code> directory is monitored for changes, such that adding or modifying a simplified descriptor file in this directory will trigger the generation and deployment of a topology descriptor. Deleting a descriptor from this directory will conversely result in the removal of the previously-generated topol
 ogy descriptor, and the associated topology will be undeployed.</p><p>If the service details for a deployed (generated) topology are changed in the cluster, then the Knox topology can be updated by &rsquo;touch&rsquo;ing the simplified descriptor. This will trigger discovery and regeneration/redeployment of the topology descriptor.</p><p>Note that deleting a generated topology descriptor from <code>{GATEWAY_HOME}/conf/topologies/</code> is not sufficient for its removal. If the source descriptor is modified, or Knox is restarted, the topology descriptor will be regenerated and deployed. Removing generated topology descriptors should be done by removing the associated simplified descriptor. For the same reason, editing generated topology descriptors is strongly discouraged since they can be inadvertently overwritten.</p><p>Another means by which these topology changes can be effected is the <a href="#Admin+API">Admin API</a>.</p><h5><a id="Cluster+Configuration+Monitoring">Cluster Co
 nfiguration Monitoring</a> <a href="#Cluster+Configuration+Monitoring"><img src="markbook-section-link.png"/></a></h5><p>Another benefit gained through the use of simplified topology descriptors, and the associated service discovery, is the ability to monitor clusters for configuration changes. <strong>Like service discovery, this is currently only available for clusters managed by Ambari.</strong></p><p>The gateway can monitor Ambari cluster configurations, and respond to changes by dynamically regenerating and redeploying the affected topologies. The following properties in gateway-site.xml can be used to control this behavior.</p>
+<pre><code>&lt;property&gt;
+    &lt;name&gt;gateway.cluster.config.monitor.ambari.enabled&lt;/name&gt;
+    &lt;value&gt;false&lt;/value&gt;
+    &lt;description&gt;Enable/disable Ambari cluster configuration monitoring.&lt;/description&gt;
+&lt;/property&gt;
+
+&lt;property&gt;
+    &lt;name&gt;gateway.cluster.config.monitor.ambari.interval&lt;/name&gt;
+    &lt;value&gt;60&lt;/value&gt;
+    &lt;description&gt;The interval (in seconds) for polling Ambari for cluster configuration changes.&lt;/description&gt;
+&lt;/property&gt;
+</code></pre><p>Since service discovery supports multiple Ambari instances as discovery sources, multiple Ambari instances can be monitored for cluster configuration changes.</p><p>For example, if the cluster monitor is enabled, deployment of the following simple descriptor would trigger monitoring of the <em>Sandbox</em> cluster managed by Ambari @ <a href="http://sandbox.hortonworks.com:8080">http://sandbox.hortonworks.com:8080</a></p>
+<pre><code>---
+discovery-address : http://sandbox.hortonworks.com:8080
+discovery-user : maria_dev
+discovery-pwd-alias : sandbox.discovery.password
+cluster: Sandbox
+provider-config-ref : sandbox-providers
+services:
+    - name: NAMENODE
+    - name: JOBTRACKER
+    - name: WEBHDFS
+    - name: WEBHCAT
+    - name: OOZIE
+    - name: WEBHBASE
+    - name: HIVE
+    - name: RESOURCEMANAGER
+</code></pre><p>Another <em>Sandbox</em> cluster, managed by a <strong>different</strong> Ambari instance, could simultaneously be monitored by the same gateway instance.</p><p>Now, topologies can be kept in sync with their respective target cluster configurations, without administrator intervention or service interruption.</p><h5><a id="Remote+Configuration+Monitor">Remote Configuration Monitor</a> <a href="#Remote+Configuration+Monitor"><img src="markbook-section-link.png"/></a></h5><p>In addition to monitoring local directories for provider configurations and simplified descriptors, the gateway similarly supports monitoring ZooKeeper.</p><p>This monitor depends on a <a href="#Remote+Configuration+Registry+Clients">remote configuration registry client</a>, and that client must be specified by setting the following property in gateway-site.xml</p>
 <pre><code>&lt;property&gt;
     &lt;name&gt;gateway.remote.config.monitor.client&lt;/name&gt;
     &lt;value&gt;sandbox-zookeeper-client&lt;/value&gt;

Modified: knox/site/index.html
URL: http://svn.apache.org/viewvc/knox/site/index.html?rev=1818319&r1=1818318&r2=1818319&view=diff
==============================================================================
--- knox/site/index.html (original)
+++ knox/site/index.html Fri Dec 15 19:39:05 2017
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2017-12-14
+ | Generated by Apache Maven Doxia at 2017-12-15
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171214" />
+    <meta name="Date-Revision-yyyymmdd" content="20171215" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Knox Gateway &#x2013; REST API and Application Gateway for the Apache Hadoop Ecosystem</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -58,7 +58,7 @@
               
                 
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-14</li> 
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-15</li> 
             
                             </ul>
       </div>

Modified: knox/site/issue-tracking.html
URL: http://svn.apache.org/viewvc/knox/site/issue-tracking.html?rev=1818319&r1=1818318&r2=1818319&view=diff
==============================================================================
--- knox/site/issue-tracking.html (original)
+++ knox/site/issue-tracking.html Fri Dec 15 19:39:05 2017
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2017-12-14
+ | Generated by Apache Maven Doxia at 2017-12-15
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171214" />
+    <meta name="Date-Revision-yyyymmdd" content="20171215" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Knox Gateway &#x2013; Issue Tracking</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -58,7 +58,7 @@
               
                 
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-14</li> 
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-15</li> 
             
                             </ul>
       </div>

Modified: knox/site/license.html
URL: http://svn.apache.org/viewvc/knox/site/license.html?rev=1818319&r1=1818318&r2=1818319&view=diff
==============================================================================
--- knox/site/license.html (original)
+++ knox/site/license.html Fri Dec 15 19:39:05 2017
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2017-12-14
+ | Generated by Apache Maven Doxia at 2017-12-15
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171214" />
+    <meta name="Date-Revision-yyyymmdd" content="20171215" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Knox Gateway &#x2013; Project License</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -58,7 +58,7 @@
               
                 
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-14</li> 
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-15</li> 
             
                             </ul>
       </div>

Modified: knox/site/mail-lists.html
URL: http://svn.apache.org/viewvc/knox/site/mail-lists.html?rev=1818319&r1=1818318&r2=1818319&view=diff
==============================================================================
--- knox/site/mail-lists.html (original)
+++ knox/site/mail-lists.html Fri Dec 15 19:39:05 2017
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2017-12-14
+ | Generated by Apache Maven Doxia at 2017-12-15
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171214" />
+    <meta name="Date-Revision-yyyymmdd" content="20171215" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Knox Gateway &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -58,7 +58,7 @@
               
                 
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-14</li> 
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-15</li> 
             
                             </ul>
       </div>

Modified: knox/site/project-info.html
URL: http://svn.apache.org/viewvc/knox/site/project-info.html?rev=1818319&r1=1818318&r2=1818319&view=diff
==============================================================================
--- knox/site/project-info.html (original)
+++ knox/site/project-info.html Fri Dec 15 19:39:05 2017
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2017-12-14
+ | Generated by Apache Maven Doxia at 2017-12-15
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171214" />
+    <meta name="Date-Revision-yyyymmdd" content="20171215" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Knox Gateway &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -58,7 +58,7 @@
               
                 
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-14</li> 
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-15</li> 
             
                             </ul>
       </div>

Modified: knox/site/team-list.html
URL: http://svn.apache.org/viewvc/knox/site/team-list.html?rev=1818319&r1=1818318&r2=1818319&view=diff
==============================================================================
--- knox/site/team-list.html (original)
+++ knox/site/team-list.html Fri Dec 15 19:39:05 2017
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2017-12-14
+ | Generated by Apache Maven Doxia at 2017-12-15
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171214" />
+    <meta name="Date-Revision-yyyymmdd" content="20171215" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Knox Gateway &#x2013; Team list</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -58,7 +58,7 @@
               
                 
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-14</li> 
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-15</li> 
             
                             </ul>
       </div>

Modified: knox/trunk/books/0.14.0/book.md
URL: http://svn.apache.org/viewvc/knox/trunk/books/0.14.0/book.md?rev=1818319&r1=1818318&r2=1818319&view=diff
==============================================================================
--- knox/trunk/books/0.14.0/book.md (original)
+++ knox/trunk/books/0.14.0/book.md Fri Dec 15 19:39:05 2017
@@ -42,6 +42,7 @@
         * #[Externalized Provider Configurations]
         * #[Sharing HA Providers]
         * #[Simplified Descriptor Files]
+		* #[Cluster Configuration Monitoring]
         * #[Remote Configuration Monitor]
         * #[Remote Configuration Registry Clients]
         * #[Topology Descriptors]

Modified: knox/trunk/books/0.14.0/config.md
URL: http://svn.apache.org/viewvc/knox/trunk/books/0.14.0/config.md?rev=1818319&r1=1818318&r2=1818319&view=diff
==============================================================================
--- knox/trunk/books/0.14.0/config.md (original)
+++ knox/trunk/books/0.14.0/config.md Fri Dec 15 19:39:05 2017
@@ -583,6 +583,53 @@ For the same reason, editing generated t
 Another means by which these topology changes can be effected is the [Admin API](#Admin+API).
 
 
+##### Cluster Configuration Monitoring #####
+
+Another benefit gained through the use of simplified topology descriptors, and the associated service discovery, is the ability to monitor clusters for configuration changes.
+__Like service discovery, this is currently only available for clusters managed by Ambari.__
+
+The gateway can monitor Ambari cluster configurations, and respond to changes by dynamically regenerating and redeploying the affected topologies.
+The following properties in gateway-site.xml can be used to control this behavior.
+
+    <property>
+        <name>gateway.cluster.config.monitor.ambari.enabled</name>
+        <value>false</value>
+        <description>Enable/disable Ambari cluster configuration monitoring.</description>
+    </property>
+                
+    <property>
+        <name>gateway.cluster.config.monitor.ambari.interval</name>
+        <value>60</value>
+        <description>The interval (in seconds) for polling Ambari for cluster configuration changes.</description>
+    </property>
+
+
+Since service discovery supports multiple Ambari instances as discovery sources, multiple Ambari instances can be monitored for cluster configuration changes.
+
+For example, if the cluster monitor is enabled, deployment of the following simple descriptor would trigger monitoring of the *Sandbox* cluster managed by Ambari @ http://sandbox.hortonworks.com:8080
+
+    ---
+    discovery-address : http://sandbox.hortonworks.com:8080
+    discovery-user : maria_dev
+    discovery-pwd-alias : sandbox.discovery.password
+    cluster: Sandbox
+    provider-config-ref : sandbox-providers
+    services:
+        - name: NAMENODE
+        - name: JOBTRACKER
+        - name: WEBHDFS
+        - name: WEBHCAT
+        - name: OOZIE
+        - name: WEBHBASE
+        - name: HIVE
+        - name: RESOURCEMANAGER
+
+Another *Sandbox* cluster, managed by a __different__ Ambari instance, could simultaneously be monitored by the same gateway instance.
+
+Now, topologies can be kept in sync with their respective target cluster configurations, without administrator intervention or service interruption.
+
+
+
 ##### Remote Configuration Monitor #####
 
 In addition to monitoring local directories for provider configurations and simplified descriptors, the gateway similarly supports monitoring ZooKeeper.

Modified: knox/trunk/books/0.14.0/dev-guide/book.md
URL: http://svn.apache.org/viewvc/knox/trunk/books/0.14.0/dev-guide/book.md?rev=1818319&r1=1818318&r2=1818319&view=diff
==============================================================================
--- knox/trunk/books/0.14.0/dev-guide/book.md (original)
+++ knox/trunk/books/0.14.0/dev-guide/book.md Fri Dec 15 19:39:05 2017
@@ -125,6 +125,8 @@ This is also true of the other -release
 | gateway-service-oozie                          | The implementation of the Oozie service.                  |
 | gateway-service-tgs                            | The implementation of the Ticket Granting service POC.    |
 | gateway-service-webhdfs                        | The implementation of the WebHdfs service.                |
+| gateway-discovery-ambari                       | The Ambari service URL discovery implementation.          |
+| gateway-service-remoteconfig                   | The implementation of the RemoteConfigurationRegistryClientService. |
 | gateway-server                                 | The implementation of the Knox gateway server.            |
 | gateway-shell                                  | The implementation of the Knox Groovy shell.              |
 | gateway-test-ldap                              | Pulls in all of the dependencies of the test LDAP server. |
@@ -511,9 +513,9 @@ Both mechanism are described in more det
 
 ### Service Loaders ###
 
-Extensions are discovered via Java's [Service Loader|http://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html] mechanism.
-There are good [tutorials|http://docs.oracle.com/javase/tutorial/ext/basics/spi.html] available for learning more about this.
-The basics come town to two things.
+Extensions are discovered via Java's [Service Loader](http://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html) mechanism.
+There are good [tutorials](http://docs.oracle.com/javase/tutorial/ext/basics/spi.html) available for learning more about this.
+The basics come down to two things.
 
 1. Implement the service contract interface (e.g. ServiceDeploymentContributor, ProviderDeploymentContributor)