You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@eagle.apache.org by ha...@apache.org on 2016/10/16 14:03:14 UTC

incubator-eagle git commit: [EAGLE-624][UI] Improve ui information and fix bugs

Repository: incubator-eagle
Updated Branches:
  refs/heads/master 1a74b09b7 -> 97edbbbe3


[EAGLE-624][UI] Improve ui information and fix bugs

## Improvements
* Show dependencies apps number
* Support XML child node tree as String in app docs
* Cleanup eagle-server dependencies and output
* Move business logic specific logics into dev profile
* Rename header and remove pre fo installation content

## Bugs
* Fix siteName bug in ui
* Installation Doc is not correctly shown in Installation Dialog

Author: Hao Chen <ha...@apache.org>

Closes #513 from haoch/ImproveUIInfo.


Project: http://git-wip-us.apache.org/repos/asf/incubator-eagle/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-eagle/commit/97edbbbe
Tree: http://git-wip-us.apache.org/repos/asf/incubator-eagle/tree/97edbbbe
Diff: http://git-wip-us.apache.org/repos/asf/incubator-eagle/diff/97edbbbe

Branch: refs/heads/master
Commit: 97edbbbe315b9b927bf5e3386a2162e7e4ad99bf
Parents: 1a74b09
Author: Hao Chen <ha...@apache.org>
Authored: Sun Oct 16 22:02:58 2016 +0800
Committer: Hao Chen <ha...@apache.org>
Committed: Sun Oct 16 22:02:58 2016 +0800

----------------------------------------------------------------------
 ...e.alert.app.AlertUnitTopologyAppProvider.xml |  18 +++
 .../config/ApplicationProviderDescConfig.java   |   2 +-
 ...he.eagle.app.TestWebApplication$Provider.xml |   8 ++
 .../eagle/metadata/model/ApplicationDocs.java   |  10 +-
 .../metadata/utils/InnerDomAsTextHandler.java   |  66 +++++++++
 .../metadata/utils/InstallDocDomHandler.java    |  23 +++
 .../metadata/utils/UninstallDocDomHandler.java  |  23 +++
 eagle-server-assembly/pom.xml                   |   9 --
 eagle-server/pom.xml                            | 141 +++++++++++--------
 .../org/apache/eagle/server/ServerMain.java     |  11 +-
 .../app/dev/partials/integration/site.html      |  43 +++---
 .../app/dev/public/js/ctrls/integrationCtrl.js  |   4 +
 12 files changed, 261 insertions(+), 97 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/97edbbbe/eagle-core/eagle-alert-parent/eagle-alert-app/src/main/resources/META-INF/providers/org.apache.eagle.alert.app.AlertUnitTopologyAppProvider.xml
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert-app/src/main/resources/META-INF/providers/org.apache.eagle.alert.app.AlertUnitTopologyAppProvider.xml b/eagle-core/eagle-alert-parent/eagle-alert-app/src/main/resources/META-INF/providers/org.apache.eagle.alert.app.AlertUnitTopologyAppProvider.xml
index 8e386be..b3e777c 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert-app/src/main/resources/META-INF/providers/org.apache.eagle.alert.app.AlertUnitTopologyAppProvider.xml
+++ b/eagle-core/eagle-alert-parent/eagle-alert-app/src/main/resources/META-INF/providers/org.apache.eagle.alert.app.AlertUnitTopologyAppProvider.xml
@@ -128,8 +128,26 @@
     </configuration>
     <docs>
         <install>
+            <div>
+                <label>Perquisites</label>
+                <ol>
+                    <li>Require permission to READ/WRITE/CREATE on kafka topic</li>
+                </ol>
+                <label>Usage Steps</label>
+                <ol>
+                    <li>Configure kafka connection in <b>settings</b></li>
+                    <li>Install and start alert engine</li>
+                    <li>Integrate streams and define policy</li>
+                </ol>
+            </div>
         </install>
         <uninstall>
+            <div>
+                <label>After uninstalled</label>
+                <ol>
+                    <li>Clean up kafka topics automatically created by alert engine</li>
+                </ol>
+            </div>
         </uninstall>
     </docs>
 </application>

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/97edbbbe/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/config/ApplicationProviderDescConfig.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/config/ApplicationProviderDescConfig.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/config/ApplicationProviderDescConfig.java
index 2d2b7e2..0a8b81f 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/config/ApplicationProviderDescConfig.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/config/ApplicationProviderDescConfig.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/97edbbbe/eagle-core/eagle-app/eagle-app-base/src/test/resources/META-INF/providers/org.apache.eagle.app.TestWebApplication$Provider.xml
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/test/resources/META-INF/providers/org.apache.eagle.app.TestWebApplication$Provider.xml b/eagle-core/eagle-app/eagle-app-base/src/test/resources/META-INF/providers/org.apache.eagle.app.TestWebApplication$Provider.xml
index 5456bce..19aa5e8 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/test/resources/META-INF/providers/org.apache.eagle.app.TestWebApplication$Provider.xml
+++ b/eagle-core/eagle-app/eagle-app-base/src/test/resources/META-INF/providers/org.apache.eagle.app.TestWebApplication$Provider.xml
@@ -27,4 +27,12 @@
             <version>0.5.0-incubating</version>
         </dependency>
     </dependencies>
+    <docs>
+        <install>
+            <h1>Installation Guide</h1>
+        </install>
+        <uninstall>
+            <h1>Un-installation Guide</h1>
+        </uninstall>
+    </docs>
 </application>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/97edbbbe/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/model/ApplicationDocs.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/model/ApplicationDocs.java b/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/model/ApplicationDocs.java
index f83f377..6aafa90 100644
--- a/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/model/ApplicationDocs.java
+++ b/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/model/ApplicationDocs.java
@@ -16,18 +16,26 @@
  */
 package org.apache.eagle.metadata.model;
 
+import org.apache.eagle.metadata.utils.InstallDocDomHandler;
+import org.apache.eagle.metadata.utils.UninstallDocDomHandler;
+
+import javax.xml.bind.annotation.XmlAnyElement;
+
 public class ApplicationDocs {
     private String install;
+
     private String uninstall;
 
     public String getInstall() {
         return install;
     }
 
+    @XmlAnyElement(value=InstallDocDomHandler.class)
     public void setInstall(String install) {
         this.install = install;
     }
 
+    @XmlAnyElement(value= UninstallDocDomHandler.class)
     public String getUninstall() {
         return uninstall;
     }
@@ -35,4 +43,4 @@ public class ApplicationDocs {
     public void setUninstall(String uninstall) {
         this.uninstall = uninstall;
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/97edbbbe/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/utils/InnerDomAsTextHandler.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/utils/InnerDomAsTextHandler.java b/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/utils/InnerDomAsTextHandler.java
new file mode 100644
index 0000000..1358fff
--- /dev/null
+++ b/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/utils/InnerDomAsTextHandler.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.eagle.metadata.utils;
+
+import javax.xml.bind.ValidationEventHandler;
+import javax.xml.bind.annotation.DomHandler;
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+import java.io.StringReader;
+import java.io.StringWriter;
+
+public abstract class InnerDomAsTextHandler implements DomHandler<String, StreamResult> {
+    private final String startTag;
+    private final String endTag;
+    private StringWriter xmlWriter = new StringWriter();
+
+    /**
+     * Default constructor.
+     *
+     * It is up to a JAXB provider to decide which DOM implementation
+     * to use or how that is configured.
+     */
+    public InnerDomAsTextHandler(String tagName) {
+        this.startTag = String.format("<%s>",tagName);
+        this.endTag = String.format("</%s>",tagName);
+    }
+
+    @Override
+    public StreamResult createUnmarshaller(ValidationEventHandler errorHandler) {
+        return new StreamResult(xmlWriter);
+    }
+
+    @Override
+    public String getElement(StreamResult rt) {
+        String xml = rt.getWriter().toString();
+        int beginIndex = xml.indexOf(startTag) + startTag.length();
+        int endIndex = xml.indexOf(endTag);
+        return xml.substring(beginIndex, endIndex);
+    }
+
+    @Override
+    public Source marshal(String n, ValidationEventHandler errorHandler) {
+        try {
+            StringReader xmlReader = new StringReader(n);
+            return new StreamSource(xmlReader);
+        } catch(Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/97edbbbe/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/utils/InstallDocDomHandler.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/utils/InstallDocDomHandler.java b/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/utils/InstallDocDomHandler.java
new file mode 100644
index 0000000..ae84c29
--- /dev/null
+++ b/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/utils/InstallDocDomHandler.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.eagle.metadata.utils;
+
+public class InstallDocDomHandler extends InnerDomAsTextHandler {
+    public InstallDocDomHandler() {
+        super("install");
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/97edbbbe/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/utils/UninstallDocDomHandler.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/utils/UninstallDocDomHandler.java b/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/utils/UninstallDocDomHandler.java
new file mode 100644
index 0000000..c1812c4
--- /dev/null
+++ b/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/utils/UninstallDocDomHandler.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.eagle.metadata.utils;
+
+public class UninstallDocDomHandler extends InnerDomAsTextHandler {
+    public UninstallDocDomHandler() {
+        super("uninstall");
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/97edbbbe/eagle-server-assembly/pom.xml
----------------------------------------------------------------------
diff --git a/eagle-server-assembly/pom.xml b/eagle-server-assembly/pom.xml
index 3bc888e..b080335 100644
--- a/eagle-server-assembly/pom.xml
+++ b/eagle-server-assembly/pom.xml
@@ -29,20 +29,11 @@
     <name>eagle-server-assembly</name>
     <url>http://maven.apache.org</url>
     <dependencies>
-        <!--<dependency>-->
-        <!--<groupId>org.slf4j</groupId>-->
-        <!--<artifactId>slf4j-api</artifactId>-->
-        <!--</dependency>-->
         <dependency>
             <groupId>org.apache.eagle</groupId>
             <artifactId>eagle-server</artifactId>
             <version>${project.version}</version>
         </dependency>
-        <!--<dependency>-->
-        <!--<groupId>org.apache.eagle</groupId>-->
-        <!--<artifactId>eagle-topology-assembly</artifactId>-->
-        <!--<version>${project.version}</version>-->
-        <!--</dependency>-->
     </dependencies>
 
     <build>

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/97edbbbe/eagle-server/pom.xml
----------------------------------------------------------------------
diff --git a/eagle-server/pom.xml b/eagle-server/pom.xml
index 7fe4397..37ba4f2 100644
--- a/eagle-server/pom.xml
+++ b/eagle-server/pom.xml
@@ -26,57 +26,13 @@
         <version>0.5.0-incubating-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
-
     <artifactId>eagle-server</artifactId>
+    <name>Eagle::Server</name>
+    <description>
+        Apache Eagle Server
+    </description>
     <dependencies>
         <dependency>
-            <groupId>io.dropwizard</groupId>
-            <artifactId>dropwizard-core</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.slf4j</groupId>
-                    <artifactId>log4j-over-slf4j</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>io.dropwizard</groupId>
-            <artifactId>dropwizard-jersey</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.slf4j</groupId>
-                    <artifactId>slf4j-log4j12</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>io.swagger</groupId>
-            <artifactId>swagger-jersey-jaxrs</artifactId>
-            <scope>compile</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>com.sun.jersey</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.sun.jersey.contribs</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>com.typesafe</groupId>
-            <artifactId>config</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.hubspot.dropwizard</groupId>
-            <artifactId>dropwizard-guice</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>io.dropwizard</groupId>
-            <artifactId>dropwizard-assets</artifactId>
-        </dependency>
-        <dependency>
             <groupId>org.apache.eagle</groupId>
             <artifactId>alert-metadata-service</artifactId>
             <version>${project.version}</version>
@@ -145,25 +101,19 @@
         </dependency>
         <dependency>
             <groupId>org.apache.eagle</groupId>
-            <artifactId>eagle-app-example</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.eagle</groupId>
-            <artifactId>eagle-security-hbase-auditlog</artifactId>
+            <artifactId>eagle-entity-base</artifactId>
             <version>${project.version}</version>
             <exclusions>
                 <exclusion>
                     <groupId>org.slf4j</groupId>
+                    <artifactId>log4j-over-slf4j</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
                     <artifactId>slf4j-log4j12</artifactId>
                 </exclusion>
             </exclusions>
         </dependency>
-        <dependency>
-            <groupId>org.apache.eagle</groupId>
-            <artifactId>eagle-security-hbase-web</artifactId>
-            <version>${project.version}</version>
-        </dependency>
 
         <!-- Alert unit topology as an application -->
         <dependency>
@@ -174,6 +124,53 @@
 
         <dependency>
             <groupId>io.dropwizard</groupId>
+            <artifactId>dropwizard-core</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>log4j-over-slf4j</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>io.dropwizard</groupId>
+            <artifactId>dropwizard-jersey</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-log4j12</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-jersey-jaxrs</artifactId>
+            <scope>compile</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.sun.jersey</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.sun.jersey.contribs</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.typesafe</groupId>
+            <artifactId>config</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.hubspot.dropwizard</groupId>
+            <artifactId>dropwizard-guice</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.dropwizard</groupId>
+            <artifactId>dropwizard-assets</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.dropwizard</groupId>
             <artifactId>dropwizard-auth</artifactId>
         </dependency>
         <dependency>
@@ -216,6 +213,7 @@
         <profile>
             <id>dev</id>
             <activation>
+                <!-- TODO: Should disable "dev" profile by default -->
                 <activeByDefault>true</activeByDefault>
             </activation>
 
@@ -224,6 +222,31 @@
                  ========================================================================================================= -->
 
             <dependencies>
+                <!-- App: Example Application -->
+                <dependency>
+                    <groupId>org.apache.eagle</groupId>
+                    <artifactId>eagle-app-example</artifactId>
+                    <version>${project.version}</version>
+                </dependency>
+
+                <!-- App: HBase Security Monitoring -->
+                <dependency>
+                    <groupId>org.apache.eagle</groupId>
+                    <artifactId>eagle-security-hbase-auditlog</artifactId>
+                    <version>${project.version}</version>
+                    <exclusions>
+                        <exclusion>
+                            <groupId>org.slf4j</groupId>
+                            <artifactId>slf4j-log4j12</artifactId>
+                        </exclusion>
+                    </exclusions>
+                </dependency>
+                <dependency>
+                    <groupId>org.apache.eagle</groupId>
+                    <artifactId>eagle-security-hbase-web</artifactId>
+                    <version>${project.version}</version>
+                </dependency>
+
                 <!-- App: Oozie  Auditlog monitoring -->
                 <dependency>
                     <groupId>org.apache.eagle</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/97edbbbe/eagle-server/src/main/java/org/apache/eagle/server/ServerMain.java
----------------------------------------------------------------------
diff --git a/eagle-server/src/main/java/org/apache/eagle/server/ServerMain.java b/eagle-server/src/main/java/org/apache/eagle/server/ServerMain.java
index a944265..cdb243e 100644
--- a/eagle-server/src/main/java/org/apache/eagle/server/ServerMain.java
+++ b/eagle-server/src/main/java/org/apache/eagle/server/ServerMain.java
@@ -19,16 +19,15 @@ package org.apache.eagle.server;
 public class ServerMain {
     public static void main(String[] args) {
         System.out.println(
-            "Welcome to Apache Eagle (Incubating)\n"
-                + "---------------"
-        );
-        System.out.println(
-            "Starting Eagle Server ..."
+              "----------------------------\n"
+            + " Apache Eagle\u2122 (Incubating)\n"
+            + "----------------------------"
         );
+        System.out.println("\nStarting Eagle Server ...\n");
         try {
             new ServerApplication().run(args);
         } catch (Exception e) {
-            System.err.println("Got exception: " + e.getMessage());
+            System.err.println("Oops, got error to start eagle server: " + e.getMessage());
             e.printStackTrace();
             System.exit(1);
         }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/97edbbbe/eagle-server/src/main/webapp/app/dev/partials/integration/site.html
----------------------------------------------------------------------
diff --git a/eagle-server/src/main/webapp/app/dev/partials/integration/site.html b/eagle-server/src/main/webapp/app/dev/partials/integration/site.html
index 6b02a70..db6b7c7 100644
--- a/eagle-server/src/main/webapp/app/dev/partials/integration/site.html
+++ b/eagle-server/src/main/webapp/app/dev/partials/integration/site.html
@@ -21,7 +21,7 @@
 
 	<div class="form-group">
 		<label>Site</label>
-		<input type="text" class="form-control" readonly ng-model="siteName">
+		<input type="text" class="form-control" readonly ng-model="site.siteName">
 	</div>
 	<div class="form-group">
 		<label>Description</label>
@@ -84,7 +84,7 @@
 						</button>
 					</div>
 					<div class="btn-group btn-group-xs" ng-if="!app.installed">
-						<button class="btn btn-primary btn-sm" ng-click="installApp(app)">Install Application</button>
+						<button class="btn btn-primary btn-sm" ng-click="installApp(app)">Install</button>
 					</div>
 				</td>
 			</tr>
@@ -106,9 +106,9 @@
 			</div>
 			<div class="modal-body">
 				<ul class="nav nav-tabs">
-					<li><a href="[data-id='intro']" data-toggle="tab" data-id="introTab">Application</a></li>
-					<li><a href="[data-id='install']" data-toggle="tab">Install</a></li>
-					<li><a href="[data-id='uninstall']" data-toggle="tab">Uninstall</a></li>
+					<li><a href="[data-id='intro']" data-toggle="tab" data-id="introTab">Introduction</a></li>
+					<li><a href="[data-id='install']" data-toggle="tab">Installation</a></li>
+					<li><a href="[data-id='uninstall']" data-toggle="tab">Uninstallation</a></li>
 				</ul>
 				<div class="tab-content">
 					<div class="tab-pane" data-id="intro">
@@ -180,10 +180,10 @@
 						</table>
 					</div>
 					<div class="tab-pane" data-id="install">
-						<pre ng-bind-html="installHTML"></pre>
+						<div ng-bind-html="installHTML"></div>
 					</div>
 					<div class="tab-pane" data-id="uninstall">
-						<pre ng-bind-html="uninstallHTML"></pre>
+						<div ng-bind-html="uninstallHTML"></div>
 					</div>
 				</div>
 			</div>
@@ -206,27 +206,28 @@
 			</div>
 			<div class="modal-body">
 				<ul class="nav nav-tabs">
-					<li><a href="[data-id='guide']" data-toggle="tab" data-id="guideTab">Guide</a></li>
+					<li><a href="[data-id='guide']" data-toggle="tab" data-id="guideTab">Installation</a></li>
 					<li><a href="[data-id='environment']" data-toggle="tab">Environment</a></li>
 					<li><a href="[data-id='configuration']" data-toggle="tab" data-id="configTab">Configuration</a></li>
 				</ul>
 
 				<div class="tab-content">
 					<div class="tab-pane" data-id="guide">
-						<label>Dependencies</label>
-						<ul>
-							<li ng-repeat="dep in application.dependencies track by $index">
-								<strong class="text-success" ng-if="!!Application.find(dep.type, site.siteId)[0]">[ Installed ]</strong>
-								<strong class="text-danger" ng-if="!Application.find(dep.type, site.siteId)[0]">[
-									<span class="fa fa-exclamation-triangle"></span>Require
-								]</strong>
-								{{Application.findProvider(dep.type).name}}
-								({{dep.type}})
-							</li>
-						</ul>
+						<div ng-bind-html="installHTML"></div>
 
-						<label>Install</label>
-						<pre ng-bind-html="installHTML"></pre>
+						<div ng-if="application.dependencies.length > 0">
+							<label>Dependencies ({{application.dependencies.length}} Apps)</label>
+							<ul>
+								<li ng-repeat="dep in application.dependencies track by $index">
+									<strong class="text-success" ng-if="!!Application.find(dep.type, site.siteId)[0]">[ Installed ]</strong>
+									<strong class="text-danger" ng-if="!Application.find(dep.type, site.siteId)[0]">[
+										<span class="fa fa-exclamation-triangle"></span>Missing
+									]</strong>
+									{{Application.findProvider(dep.type).name}}
+									({{dep.type}})
+								</li>
+							</ul>
+						</div>
 					</div>
 
 					<div class="tab-pane" data-id="environment">

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/97edbbbe/eagle-server/src/main/webapp/app/dev/public/js/ctrls/integrationCtrl.js
----------------------------------------------------------------------
diff --git a/eagle-server/src/main/webapp/app/dev/public/js/ctrls/integrationCtrl.js b/eagle-server/src/main/webapp/app/dev/public/js/ctrls/integrationCtrl.js
index e53a11e..9b46814 100644
--- a/eagle-server/src/main/webapp/app/dev/public/js/ctrls/integrationCtrl.js
+++ b/eagle-server/src/main/webapp/app/dev/public/js/ctrls/integrationCtrl.js
@@ -234,6 +234,10 @@
 			application = application.origin;
 			$scope.installLock = false;
 			$scope.application = application;
+
+			var docs = application.docs || {install: "", uninstall: ""};
+			$scope.installHTML = $sce.trustAsHtml(docs.install);
+
 			$scope.tmpApp = {
 				mode: "CLUSTER",
 				jarPath: application.jarPath,