You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by sh...@apache.org on 2016/07/13 05:29:01 UTC

[1/2] incubator-atlas git commit: ATLAS-1003 DataSetLineageServiceTest, GraphBackedDiscoveryServiceTest, and GraphRepoMapperScaleTest failing in some environments (dkantor via shwethags)

Repository: incubator-atlas
Updated Branches:
  refs/heads/master e13fa5ecd -> 079ce35ef


ATLAS-1003 DataSetLineageServiceTest, GraphBackedDiscoveryServiceTest, and GraphRepoMapperScaleTest failing in some environments (dkantor via shwethags)


Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/80051c9e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/80051c9e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/80051c9e

Branch: refs/heads/master
Commit: 80051c9e846101130f29956db459d8d4243e2bd4
Parents: e13fa5e
Author: Shwetha GS <ss...@hortonworks.com>
Authored: Wed Jul 13 10:19:25 2016 +0530
Committer: Shwetha GS <ss...@hortonworks.com>
Committed: Wed Jul 13 10:19:25 2016 +0530

----------------------------------------------------------------------
 release-log.txt                                 |  1 +
 .../typestore/GraphBackedTypeStoreTest.java     |  6 ++++-
 ...StoreBackedTypeCacheMetadataServiceTest.java | 27 +++++++++++++++++++-
 .../org/apache/atlas/query/GremlinTest.scala    |  7 ++++-
 .../apache/atlas/query/LineageQueryTest.scala   |  7 ++++-
 5 files changed, 44 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/80051c9e/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index 4c58bdc..ae4a3c1 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -6,6 +6,7 @@ INCOMPATIBLE CHANGES:
 
 
 ALL CHANGES:
+ATLAS-1003 DataSetLineageServiceTest, GraphBackedDiscoveryServiceTest, and GraphRepoMapperScaleTest failing in some environments (dkantor via shwethags)
 ATLAS-1002 Create default user rangertagsync in atlas file authentication for Ranger tag sync module (nixonrodrigues via shwethags)
 ATLAS-949 UI improvement for modal and tag styling in table (Kalyanikashikar via shwethags)
 ATLAS-936 Update atlas website for 0.7 release (shwethags)

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/80051c9e/repository/src/test/java/org/apache/atlas/repository/typestore/GraphBackedTypeStoreTest.java
----------------------------------------------------------------------
diff --git a/repository/src/test/java/org/apache/atlas/repository/typestore/GraphBackedTypeStoreTest.java b/repository/src/test/java/org/apache/atlas/repository/typestore/GraphBackedTypeStoreTest.java
index da47dc1..789c0fe 100755
--- a/repository/src/test/java/org/apache/atlas/repository/typestore/GraphBackedTypeStoreTest.java
+++ b/repository/src/test/java/org/apache/atlas/repository/typestore/GraphBackedTypeStoreTest.java
@@ -86,7 +86,11 @@ public class GraphBackedTypeStoreTest {
     @AfterClass
     public void tearDown() throws Exception {
         ts.reset();
-        graphProvider.get().shutdown();
+        try {
+            graphProvider.get().shutdown();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
         try {
             TitanCleanup.clear(graphProvider.get());
         } catch(Exception e) {

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/80051c9e/repository/src/test/java/org/apache/atlas/service/StoreBackedTypeCacheMetadataServiceTest.java
----------------------------------------------------------------------
diff --git a/repository/src/test/java/org/apache/atlas/service/StoreBackedTypeCacheMetadataServiceTest.java b/repository/src/test/java/org/apache/atlas/service/StoreBackedTypeCacheMetadataServiceTest.java
index 4cb5c67..7885782 100644
--- a/repository/src/test/java/org/apache/atlas/service/StoreBackedTypeCacheMetadataServiceTest.java
+++ b/repository/src/test/java/org/apache/atlas/service/StoreBackedTypeCacheMetadataServiceTest.java
@@ -18,6 +18,7 @@
 package org.apache.atlas.service;
 
 import org.apache.atlas.TestUtils;
+import org.apache.atlas.repository.graph.GraphProvider;
 import org.apache.atlas.repository.typestore.ITypeStore;
 import org.apache.atlas.repository.typestore.StoreBackedTypeCache;
 import org.apache.atlas.repository.typestore.StoreBackedTypeCacheTestModule;
@@ -25,12 +26,15 @@ import org.apache.atlas.services.MetadataService;
 import org.apache.atlas.typesystem.types.TypeSystem;
 import org.apache.atlas.typesystem.types.cache.TypeCache;
 import org.testng.Assert;
+import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Guice;
 import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableList;
 import com.google.inject.Inject;
+import com.thinkaurelius.titan.core.TitanGraph;
+import com.thinkaurelius.titan.core.util.TitanCleanup;
 
 
 /**
@@ -47,9 +51,12 @@ public class StoreBackedTypeCacheMetadataServiceTest
     @Inject
     private ITypeStore typeStore;
 
-    @Inject 
+    @Inject
     TypeCache typeCache;
 
+    @Inject
+    private GraphProvider<TitanGraph> graphProvider;
+
     private TypeSystem ts;
 
     @BeforeClass
@@ -65,6 +72,24 @@ public class StoreBackedTypeCacheMetadataServiceTest
         ts.reset();
     }
 
+    @AfterClass
+    public void tearDown() throws Exception {
+        ts.reset();
+        try {
+            graphProvider.get().shutdown();
+        }
+        catch(Exception e) {
+            e.printStackTrace();
+        }
+
+        try {
+            TitanCleanup.clear(graphProvider.get());
+        }
+        catch(Exception e) {
+            e.printStackTrace();
+        }
+    }
+
     @Test
     public void testIt() throws Exception {
         Assert.assertTrue(typeCache instanceof StoreBackedTypeCache);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/80051c9e/repository/src/test/scala/org/apache/atlas/query/GremlinTest.scala
----------------------------------------------------------------------
diff --git a/repository/src/test/scala/org/apache/atlas/query/GremlinTest.scala b/repository/src/test/scala/org/apache/atlas/query/GremlinTest.scala
index b23c0f6..8fbcdbc 100755
--- a/repository/src/test/scala/org/apache/atlas/query/GremlinTest.scala
+++ b/repository/src/test/scala/org/apache/atlas/query/GremlinTest.scala
@@ -43,7 +43,12 @@ class GremlinTest extends BaseGremlinTest {
 
   @AfterClass
   def afterAll() {
-    g.shutdown()
+    try {
+        g.shutdown()
+    } catch {
+      case ex: Exception =>
+        print("Could not shutdown the graph ", ex);
+    }
     try {
       TitanCleanup.clear(g);
     } catch {

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/80051c9e/repository/src/test/scala/org/apache/atlas/query/LineageQueryTest.scala
----------------------------------------------------------------------
diff --git a/repository/src/test/scala/org/apache/atlas/query/LineageQueryTest.scala b/repository/src/test/scala/org/apache/atlas/query/LineageQueryTest.scala
index 0e0ac86..021a8d2 100755
--- a/repository/src/test/scala/org/apache/atlas/query/LineageQueryTest.scala
+++ b/repository/src/test/scala/org/apache/atlas/query/LineageQueryTest.scala
@@ -43,7 +43,12 @@ class LineageQueryTest extends BaseGremlinTest {
 
     @AfterClass
     def afterAll() {
-      g.shutdown()
+      try {
+          g.shutdown()
+      } catch {
+        case ex: Exception =>
+          print("Could not shutdown the graph ", ex);
+      }
       try {
         TitanCleanup.clear(g);
       } catch {


[2/2] incubator-atlas git commit: ATLAS-1004 Option to enable taxonomy feature (kevalbhatt18 via shwethags)

Posted by sh...@apache.org.
ATLAS-1004 Option to enable taxonomy feature (kevalbhatt18 via shwethags)


Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/079ce35e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/079ce35e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/079ce35e

Branch: refs/heads/master
Commit: 079ce35ef2604a8f6eff35c698a38052009792df
Parents: 80051c9
Author: Shwetha GS <ss...@hortonworks.com>
Authored: Wed Jul 13 10:21:46 2016 +0530
Committer: Shwetha GS <ss...@hortonworks.com>
Committed: Wed Jul 13 10:21:46 2016 +0530

----------------------------------------------------------------------
 dashboardv2/public/css/scss/loader.scss         | 11 ----
 dashboardv2/public/css/scss/theme.scss          |  3 +
 dashboardv2/public/js/main.js                   |  4 +-
 dashboardv2/public/js/router/Router.js          | 60 ++++++++++++-------
 .../SideNavLayoutView_tmpl.html                 | 10 ++--
 .../js/templates/common/TableLayout_tmpl.html   |  4 +-
 .../detail_page/DetailPageLayoutView_tmpl.html  |  5 +-
 .../templates/graph/LineageLayoutView_tmpl.html |  6 +-
 .../schema/SchemaTableLayoutView_tmpl.html      |  3 -
 dashboardv2/public/js/utils/TableLayout.js      |  6 +-
 dashboardv2/public/js/utils/Utils.js            |  3 +
 .../views/business_catalog/SideNavLayoutView.js | 21 +++++--
 .../views/detail_page/DetailPageLayoutView.js   |  5 ++
 .../public/js/views/schema/SchemaLayoutView.js  | 55 +++++++++--------
 .../js/views/search/SearchResultLayoutView.js   | 62 +++++++++++---------
 .../public/js/views/tag/TagLayoutView.js        | 25 ++++----
 distro/src/conf/atlas-application.properties    |  3 +
 release-log.txt                                 |  1 +
 .../atlas/web/resources/AdminResource.java      |  8 ++-
 19 files changed, 177 insertions(+), 118 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/079ce35e/dashboardv2/public/css/scss/loader.scss
----------------------------------------------------------------------
diff --git a/dashboardv2/public/css/scss/loader.scss b/dashboardv2/public/css/scss/loader.scss
index d668c38..ad9bb6f 100644
--- a/dashboardv2/public/css/scss/loader.scss
+++ b/dashboardv2/public/css/scss/loader.scss
@@ -45,17 +45,6 @@
     }
 }
 
-.loader {
-    position: absolute;
-    top: 0;
-    left: 0;
-    bottom: 0;
-    right: 0;
-    text-align: center;
-    z-index: 9;
-    background: $white_80 $url_0 no-repeat center center;
-}
-
 .fontLoader {
     top: 50%;
     left: 50%;

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/079ce35e/dashboardv2/public/css/scss/theme.scss
----------------------------------------------------------------------
diff --git a/dashboardv2/public/css/scss/theme.scss b/dashboardv2/public/css/scss/theme.scss
index 2577cfc..80ed9f2 100644
--- a/dashboardv2/public/css/scss/theme.scss
+++ b/dashboardv2/public/css/scss/theme.scss
@@ -132,3 +132,6 @@
         color: $color_jungle_green_approx;
     }
 }
+.position-relative{
+    position:relative;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/079ce35e/dashboardv2/public/js/main.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/main.js b/dashboardv2/public/js/main.js
index 552d906..a1a9ae1 100644
--- a/dashboardv2/public/js/main.js
+++ b/dashboardv2/public/js/main.js
@@ -155,8 +155,10 @@ require(['App',
                 Globals.userLogedIn.status = true;
                 Globals.userLogedIn.response = response;
             }
+            if (response && response['atlas.feature.taxonomy.enable'] !== undefined) {
+                Globals.taxonomy = response['atlas.feature.taxonomy.enable']
+            }
             App.start();
         }
     });
-
 });

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/079ce35e/dashboardv2/public/js/router/Router.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/router/Router.js b/dashboardv2/public/js/router/Router.js
index 83e1d24..0841a4c 100644
--- a/dashboardv2/public/js/router/Router.js
+++ b/dashboardv2/public/js/router/Router.js
@@ -104,22 +104,26 @@ define([
                 'views/business_catalog/SideNavLayoutView',
                 'collection/VCatalogList'
             ], function(BusinessCatalogHeader, BusinessCatalogDetailLayoutView, SideNavLayoutView, VCatalogList) {
-                var paramObj = Utils.getUrlState.getQueryParams();
-                this.collection = new VCatalogList();
-                this.collection.url = url;
-                App.rNHeader.show(new BusinessCatalogHeader({ 'globalVent': that.globalVent, 'url': url, 'collection': this.collection }));
-                if (!App.rSideNav.currentView) {
-                    App.rSideNav.show(new SideNavLayoutView({ 'globalVent': that.globalVent, 'url': url }));
+                if (Globals.taxonomy) {
+                    var paramObj = Utils.getUrlState.getQueryParams();
+                    this.collection = new VCatalogList();
+                    this.collection.url = url;
+                    App.rNHeader.show(new BusinessCatalogHeader({ 'globalVent': that.globalVent, 'url': url, 'collection': this.collection }));
+                    if (!App.rSideNav.currentView) {
+                        App.rSideNav.show(new SideNavLayoutView({ 'globalVent': that.globalVent, 'url': url }));
+                    } else {
+                        App.rSideNav.currentView.RBusinessCatalogLayoutView.currentView.manualRender("/" + url);
+                        App.rSideNav.currentView.selectTab();
+                    }
+                    App.rNContent.show(new BusinessCatalogDetailLayoutView({
+                        'globalVent': that.globalVent,
+                        'url': url,
+                        'collection': this.collection
+                    }));
+                    this.collection.fetch({ reset: true });
                 } else {
-                    App.rSideNav.currentView.RBusinessCatalogLayoutView.currentView.manualRender("/" + url);
-                    App.rSideNav.currentView.selectTab();
+                    that.defaultAction()
                 }
-                App.rNContent.show(new BusinessCatalogDetailLayoutView({
-                    'globalVent': that.globalVent,
-                    'url': url,
-                    'collection': this.collection
-                }));
-                this.collection.fetch({ reset: true });
             });
         },
         detailPage: function(id) {
@@ -228,14 +232,26 @@ define([
         },
         defaultAction: function(actions) {
             // We have no matching route, lets just log what the URL was
-            Utils.setUrl({
-                url: '#!/taxonomy',
-                mergeBrowserUrl: false,
-                updateTabState: function() {
-                    return { taxonomyUrl: this.url, stateChanged: false };
-                },
-                trigger: true
-            });
+            if (Globals.taxonomy) {
+                Utils.setUrl({
+                    url: '#!/taxonomy',
+                    mergeBrowserUrl: false,
+                    updateTabState: function() {
+                        return { taxonomyUrl: this.url, stateChanged: false };
+                    },
+                    trigger: true
+                });
+            } else {
+                Utils.setUrl({
+                    url: '#!/tag',
+                    mergeBrowserUrl: false,
+                    updateTabState: function() {
+                        return { tagUrl: this.url, stateChanged: false };
+                    },
+                    trigger: true
+                });
+            }
+
             console.log('No route:', actions);
         }
     });

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/079ce35e/dashboardv2/public/js/templates/business_catalog/SideNavLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/business_catalog/SideNavLayoutView_tmpl.html b/dashboardv2/public/js/templates/business_catalog/SideNavLayoutView_tmpl.html
index 6d504ba..38f76ff 100644
--- a/dashboardv2/public/js/templates/business_catalog/SideNavLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/business_catalog/SideNavLayoutView_tmpl.html
@@ -19,16 +19,18 @@
         <a href="index.html"><i class="fa fa-globe"></i> Apache Atlas</a>
     </li>
     <ul class="tabs" style="width: 100%;" role="tablist">
-        <li role="presentation" class="tab col-sm-4"><a href="#tab-tag" aria-controls="tab-tag" data-name="tab-tag" role="tab" data-toggle="tab">Tags</a></li>
-        <li role="presentation" class="tab col-sm-4 active"><a href="#tab-taxonomy" aria-controls="tab-taxonomy" data-name="tab-taxonomy" role="tab" data-toggle="tab" class="">Taxonomy</a></li>
-        <li role="presentation" class="tab col-sm-4"><a href="#tab-search" aria-controls="tab-search" data-name="tab-search" role="tab" data-toggle="tab" class=""><i class="fa fa-search"></i> Search</a></li>
+        <li role="presentation" class="{{tabClass}}"><a href="#tab-tag" aria-controls="tab-tag" data-name="tab-tag" role="tab" data-toggle="tab">Tags</a></li>
+        {{#if taxonomy}}
+        <li role="presentation" class="tab col-sm-4"><a href="#tab-taxonomy" aria-controls="tab-taxonomy" data-name="tab-taxonomy" role="tab" data-toggle="tab" class="">Taxonomy</a></li>
+        {{/if}}
+        <li role="presentation" class="{{tabClass}}"><a href="#tab-search" aria-controls="tab-search" data-name="tab-search" role="tab" data-toggle="tab" class=""><i class="fa fa-search"></i> Search</a></li>
     </ul>
 </ul>
 <div class="tab-content">
     <div role="tabpanel" class="tab-pane" id="tab-tag">
         <div id="r_tagLayoutView"></div>
     </div>
-    <div role="tabpanel" class="tab-pane active" id="tab-taxonomy">
+    <div role="tabpanel" class="tab-pane" id="tab-taxonomy">
         <div id="r_businessCatalogLayoutView"></div>
     </div>
     <div role="tabpanel" class="tab-pane" id="tab-search">

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/079ce35e/dashboardv2/public/js/templates/common/TableLayout_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/common/TableLayout_tmpl.html b/dashboardv2/public/js/templates/common/TableLayout_tmpl.html
index b5a0472..a2735c1 100644
--- a/dashboardv2/public/js/templates/common/TableLayout_tmpl.html
+++ b/dashboardv2/public/js/templates/common/TableLayout_tmpl.html
@@ -29,7 +29,9 @@
 </div>
 <div class="position-relative thick-border">
     <div data-id="r_tableList" class="table-responsive tableBorder"> </div>
-    <div data-id="r_tableSpinner"></div>
+    <div data-id="r_tableSpinner" class="fontLoader">
+        <i class="fa fa-refresh fa-spin-custom"></i>
+    </div>
 </div>
 <div class="row banded">
     <div data-id="r_footerRecords" class="col-sm-6 margin-top-10"></div>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/079ce35e/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html b/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
index 1083b34..d8199b2 100644
--- a/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
@@ -33,13 +33,14 @@
                 <div class="addTagBase tagBox" data-id="addTagPlus"><i class="fa fa-plus"></i></div>
             </div>
         </div>
-        <hr class="termTagLine">
+        <hr class="termTagLine"> {{#if taxonomy}}
         <span class="termSpan">Terms:</span>
         <div class="" data-id="termList">
             <div class="addTag-dropdown" data-id="addTerm">
                 <div class="addTagBase termBox" data-id="addTermPlus"><i class="fa fa-plus"></i></div>
             </div>
         </div>
+        {{/if}}
     </div>
 </div>
 <div class="container-fluid gray-bg">
@@ -61,7 +62,9 @@
                     <li role="presentation" class="tab active"><a href="#tab-details" aria-controls="tab-details" role="tab" data-toggle="tab">Properties</a></li>
                     <!--  <li role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">Acceptable Use</a></li> -->
                     <li role="presentation"><a href="#tab-tagTable" aria-controls="tab-tagTable" role="tab" data-toggle="tab">Tags</a></li>
+                    {{#if taxonomy}}
                     <li role="presentation"><a href="#tab-termTable" aria-controls="tab-termTable" role="tab" data-toggle="tab">Terms</a></li>
+                    {{/if}}
                     <li role="presentation" class="tab"><a href="#tab-audit" aria-controls="tab-audit" role="tab" data-toggle="tab">Audits</a></li>
                     <li role="presentation" class="tab schemaTable" style="display:none"><a href="#tab-schema" aria-controls="tab-schema" role="tab" data-toggle="tab">Schema</a></li>
                 </ul>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/079ce35e/dashboardv2/public/js/templates/graph/LineageLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/graph/LineageLayoutView_tmpl.html b/dashboardv2/public/js/templates/graph/LineageLayoutView_tmpl.html
index 8ab545e..26d27b3 100644
--- a/dashboardv2/public/js/templates/graph/LineageLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/graph/LineageLayoutView_tmpl.html
@@ -17,13 +17,13 @@
 <!-- <div class="panel-heading">
     <h3 class="panel-title">Lineage</h3>
 </div> -->
-<div class="fontLoader">
-    <i class="fa fa-refresh fa-spin-custom"></i>
-</div>
 <div class="panel-body graph-bg" align="center">
     <div class="graph" id="tree-container">
     </div>
     <div style="position:relative">
+        <div class="fontLoader">
+            <i class="fa fa-refresh fa-spin-custom"></i>
+        </div>
         <svg width=100% height=350></svg>
         <div class="zoomButtonGroup">
             <button class="zoomButton" id="zoom_in">+</button>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/079ce35e/dashboardv2/public/js/templates/schema/SchemaTableLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/schema/SchemaTableLayoutView_tmpl.html b/dashboardv2/public/js/templates/schema/SchemaTableLayoutView_tmpl.html
index 5caa3ea..d648009 100644
--- a/dashboardv2/public/js/templates/schema/SchemaTableLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/schema/SchemaTableLayoutView_tmpl.html
@@ -14,8 +14,5 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 -->
-<div class="fontLoader">
-    <i class="fa fa-refresh fa-spin-custom"></i>
-</div>
 <a href="javascript:void(0)" class="inputAssignTag multiSelect" style="display:none" data-id="addTerm"><i class="fa fa-folder-o"> Assign Term</i></a>
 <div id="r_tagLayoutView"></div>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/079ce35e/dashboardv2/public/js/utils/TableLayout.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/utils/TableLayout.js b/dashboardv2/public/js/utils/TableLayout.js
index 6528193..4f5e142 100644
--- a/dashboardv2/public/js/utils/TableLayout.js
+++ b/dashboardv2/public/js/utils/TableLayout.js
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
- /**
+/**
  * @file This is the common View file for displaying Table/Grid to be used overall in the application.
  */
 define(['require',
@@ -154,10 +154,10 @@ define(['require',
             /** all events binding here */
             bindEvents: function() {
                 this.listenTo(this.collection, 'request', function() {
-                    this.$('div[data-id="r_tableSpinner"]').addClass('loading');
+                    this.$('div[data-id="r_tableSpinner"]').addClass('show');
                 }, this);
                 this.listenTo(this.collection, 'sync error', function() {
-                    this.$('div[data-id="r_tableSpinner"]').removeClass('loading');
+                    this.$('div[data-id="r_tableSpinner"]').removeClass('show');
                 }, this);
 
                 this.listenTo(this.collection, 'reset', function(collection, response) {

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/079ce35e/dashboardv2/public/js/utils/Utils.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/utils/Utils.js b/dashboardv2/public/js/utils/Utils.js
index 8e33ef9..01e5c30 100644
--- a/dashboardv2/public/js/utils/Utils.js
+++ b/dashboardv2/public/js/utils/Utils.js
@@ -196,6 +196,9 @@ define(['require', 'utils/Globals'], function(require, Globals) {
         isSearchTab: function() {
             return this.getQueryUrl().firstValue == "search" ? true : false;
         },
+        isDetailPage: function() {
+            return this.getQueryUrl().firstValue == "detailPage" ? true : false;
+        },
         getLastValue: function() {
             return this.getQueryUrl().lastValue;
         },

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/079ce35e/dashboardv2/public/js/views/business_catalog/SideNavLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/business_catalog/SideNavLayoutView.js b/dashboardv2/public/js/views/business_catalog/SideNavLayoutView.js
index 5837006..c4cfb33 100644
--- a/dashboardv2/public/js/views/business_catalog/SideNavLayoutView.js
+++ b/dashboardv2/public/js/views/business_catalog/SideNavLayoutView.js
@@ -34,6 +34,12 @@ define(['require',
         ui: {
             tabs: '.tabs li a',
         },
+        templateHelpers: function() {
+            return {
+                taxonomy: Globals.taxonomy,
+                tabClass: this.tabClass
+            };
+        },
         events: function() {
             var events = {},
                 that = this;
@@ -61,12 +67,19 @@ define(['require',
         },
         initialize: function(options) {
             _.extend(this, _.pick(options, 'globalVent', 'url', 'value', 'tag', 'selectFirst'));
+            if (Globals.taxonomy) {
+                this.tabClass = "tab col-sm-4";
+            } else {
+                this.tabClass = "tab col-sm-6";
+            }
         },
         onRender: function() {
             this.bindEvent();
             this.renderTagLayoutView();
             this.renderSearchLayoutView();
-            this.rendeBusinessCatalogLayoutView();
+            if (Globals.taxonomy) {
+                this.rendeBusinessCatalogLayoutView();
+            }
             this.selectTab();
 
         },
@@ -101,13 +114,13 @@ define(['require',
             });
         },
         selectTab: function() {
-            if (Utils.getUrlState.isTagTab()) {
+            if (Utils.getUrlState.isTagTab() || (Utils.getUrlState.isInitial() && !Globals.taxonomy)) {
                 this.$('.tabs').find('li a[aria-controls="tab-tag"]').parents('li').addClass('active').siblings().removeClass('active');
                 this.$('.tab-content').find('div#tab-tag').addClass('active').siblings().removeClass('active');
-            } else if (Utils.getUrlState.isTaxonomyTab()) {
+            } else if (Utils.getUrlState.isTaxonomyTab() || (Utils.getUrlState.isInitial() && Globals.taxonomy)) {
                 this.$('.tabs').find('li a[aria-controls="tab-taxonomy"]').parents('li').addClass('active').siblings().removeClass('active');
                 this.$('.tab-content').find('div#tab-taxonomy').addClass('active').siblings().removeClass('active');
-            } else if (Utils.getUrlState.isSearchTab()) {
+            } else if (Utils.getUrlState.isSearchTab() || (Utils.getUrlState.isDetailPage())) {
                 this.$('.tabs').find('li a[aria-controls="tab-search"]').parents('li').addClass('active').siblings().removeClass('active');
                 this.$('.tab-content').find('div#tab-search').addClass('active').siblings().removeClass('active');
             }

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/079ce35e/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
index 2aaeaa4..4546bb4 100644
--- a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
+++ b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
@@ -65,6 +65,11 @@ define(['require',
                 tagList: '[data-id="tagList"]',
                 termList: '[data-id="termList"]'
             },
+            templateHelpers: function() {
+                return {
+                    taxonomy: Globals.taxonomy
+                };
+            },
             /** ui events hash */
             events: function() {
                 var events = {};

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/079ce35e/dashboardv2/public/js/views/schema/SchemaLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/schema/SchemaLayoutView.js b/dashboardv2/public/js/views/schema/SchemaLayoutView.js
index b021127..c22c5fb 100644
--- a/dashboardv2/public/js/views/schema/SchemaLayoutView.js
+++ b/dashboardv2/public/js/views/schema/SchemaLayoutView.js
@@ -22,8 +22,9 @@ define(['require',
     'collection/VSchemaList',
     'utils/Utils',
     'utils/CommonViewFunction',
-    'utils/Messages'
-], function(require, Backbone, SchemaTableLayoutViewTmpl, VSchemaList, Utils, CommonViewFunction, Messages) {
+    'utils/Messages',
+    'utils/Globals'
+], function(require, Backbone, SchemaTableLayoutViewTmpl, VSchemaList, Utils, CommonViewFunction, Messages, Globals) {
     'use strict';
 
     var SchemaTableLayoutView = Backbone.Marionette.LayoutView.extend(
@@ -225,13 +226,15 @@ define(['require',
                             })
                         };
                     });
-                    col['Check'] = {
-                        name: "selected",
-                        label: "",
-                        cell: "select-row",
-                        headerCell: "select-all",
-                        position: 1
-                    };
+                    if (Globals.taxonomy) {
+                        col['Check'] = {
+                            name: "selected",
+                            label: "",
+                            cell: "select-row",
+                            headerCell: "select-all",
+                            position: 1
+                        };
+                    }
                     col['tag'] = {
                         label: "Tags",
                         cell: "Html",
@@ -244,23 +247,25 @@ define(['require',
                             }
                         })
                     };
-                    col['terms'] = {
-                        label: "Terms",
-                        cell: "Html",
-                        editable: false,
-                        sortable: false,
-                        orderable: true,
-                        className: 'searchTerm',
-                        formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
-                            fromRaw: function(rawValue, model) {
-                                var returnObject = CommonViewFunction.termTableBreadcrumbMaker(model, "schema");
-                                if (returnObject.object) {
-                                    that.bradCrumbList.push(returnObject.object);
+                    if (Globals.taxonomy) {
+                        col['terms'] = {
+                            label: "Terms",
+                            cell: "Html",
+                            editable: false,
+                            sortable: false,
+                            orderable: true,
+                            className: 'searchTerm',
+                            formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+                                fromRaw: function(rawValue, model) {
+                                    var returnObject = CommonViewFunction.termTableBreadcrumbMaker(model, "schema");
+                                    if (returnObject.object) {
+                                        that.bradCrumbList.push(returnObject.object);
+                                    }
+                                    return returnObject.html;
                                 }
-                                return returnObject.html;
-                            }
-                        })
-                    };
+                            })
+                        };
+                    }
                 }
                 return this.schemaCollection.constructor.getTableCols(col, this.schemaCollection);
             },

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/079ce35e/dashboardv2/public/js/views/search/SearchResultLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/search/SearchResultLayoutView.js b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
index 5ec1b22..7bc37c0 100644
--- a/dashboardv2/public/js/views/search/SearchResultLayoutView.js
+++ b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
@@ -189,7 +189,7 @@ define(['require',
                 var that = this;
                 this.$('.fontLoader').show();
                 this.$('.searchTable').hide();
-                this.$('.searchResult').html('');
+                that.$('.searchResult').hide();
                 if (Globals.searchApiCallRef) {
                     Globals.searchApiCallRef.abort();
                 }
@@ -260,8 +260,10 @@ define(['require',
             },
             checkTableFetch: function() {
                 if (this.fetchList <= 0) {
+                    this.$('div[data-id="r_tableSpinner"]').removeClass('show')
                     this.$('.fontLoader').hide();
                     this.$('.searchTable').show();
+                    this.$('.searchResult').show();
                 }
             },
             getEntityTableColumns: function() {
@@ -273,13 +275,15 @@ define(['require',
                         if (responseData.dataType.attributeDefinitions.length == 2 && responseData.dataType.attributeDefinitions[1].name == "instanceInfo") {
                             return this.getFixedColumn();
                         } else {
-                            col['Check'] = {
-                                name: "selected",
-                                label: "",
-                                cell: "select-row",
-                                headerCell: "select-all",
-                                position: 1
-                            };
+                            if (Globals.taxonomy) {
+                                col['Check'] = {
+                                    name: "selected",
+                                    label: "",
+                                    cell: "select-row",
+                                    headerCell: "select-all",
+                                    position: 1
+                                };
+                            }
                             var modelJSON = this.searchCollection.toJSON()[0];
                             _.keys(modelJSON).map(function(key) {
                                 if (key.indexOf("$") == -1 && typeof modelJSON[key] != "object") {
@@ -342,27 +346,29 @@ define(['require',
                                     }
                                 })
                             };
-                            col['terms'] = {
-                                label: "Terms",
-                                cell: "Html",
-                                editable: false,
-                                sortable: false,
-                                orderable: true,
-                                className: 'searchTerm',
-                                formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
-                                    fromRaw: function(rawValue, model) {
-                                        var returnObject = CommonViewFunction.termTableBreadcrumbMaker(model);
-                                        if (returnObject.object) {
-                                            that.bradCrumbList.push(returnObject.object);
-                                        }
-                                        if (Globals.entityStateReadOnly[model.get('$id$').state]) {
-                                            return '<div class="readOnly">' + returnObject.html + '</div>';
-                                        } else {
-                                            return returnObject.html;
+                            if (Globals.taxonomy) {
+                                col['terms'] = {
+                                    label: "Terms",
+                                    cell: "Html",
+                                    editable: false,
+                                    sortable: false,
+                                    orderable: true,
+                                    className: 'searchTerm',
+                                    formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+                                        fromRaw: function(rawValue, model) {
+                                            var returnObject = CommonViewFunction.termTableBreadcrumbMaker(model);
+                                            if (returnObject.object) {
+                                                that.bradCrumbList.push(returnObject.object);
+                                            }
+                                            if (Globals.entityStateReadOnly[model.get('$id$').state]) {
+                                                return '<div class="readOnly">' + returnObject.html + '</div>';
+                                            } else {
+                                                return returnObject.html;
+                                            }
                                         }
-                                    }
-                                })
-                            };
+                                    })
+                                };
+                            }
                             that.checkTableFetch();
                             return this.searchCollection.constructor.getTableCols(col, this.searchCollection);
                         }

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/079ce35e/dashboardv2/public/js/views/tag/TagLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/tag/TagLayoutView.js b/dashboardv2/public/js/views/tag/TagLayoutView.js
index 49811ac..3a05167 100644
--- a/dashboardv2/public/js/views/tag/TagLayoutView.js
+++ b/dashboardv2/public/js/views/tag/TagLayoutView.js
@@ -22,8 +22,9 @@ define(['require',
     'collection/VTagList',
     'collection/VEntityList',
     'utils/Utils',
-    'utils/Messages'
-], function(require, Backbone, TagLayoutViewTmpl, VTagList, VEntityList, Utils, Messages) {
+    'utils/Messages',
+    'utils/Globals'
+], function(require, Backbone, TagLayoutViewTmpl, VTagList, VEntityList, Utils, Messages, Globals) {
     'use strict';
 
     var TagLayoutView = Backbone.Marionette.LayoutView.extend(
@@ -113,18 +114,20 @@ define(['require',
                 }
             },
             setValues: function(manual) {
-                if (Utils.getUrlState.isTagTab()) {
+                if (Utils.getUrlState.isTagTab() || (Utils.getUrlState.isInitial() && !Globals.taxonomy)) {
                     if (!this.tag) {
                         this.selectFirst = false;
                         this.ui.tagsParent.find('li').first().addClass('active');
-                        Utils.setUrl({
-                            url: this.ui.tagsParent.find('li a').first().attr("href"),
-                            mergeBrowserUrl: false,
-                            trigger: true,
-                            updateTabState: function() {
-                                return { tagUrl: this.url, stateChanged: true };
-                            }
-                        });
+                        if (this.ui.tagsParent.find('li a').first().length) {
+                            Utils.setUrl({
+                                url: this.ui.tagsParent.find('li a').first().attr("href"),
+                                mergeBrowserUrl: false,
+                                trigger: true,
+                                updateTabState: function() {
+                                    return { tagUrl: this.url, stateChanged: true };
+                                }
+                            });
+                        }
                     } else {
                         Utils.setUrl({
                             url: Utils.getUrlState.getQueryUrl().hash,

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/079ce35e/distro/src/conf/atlas-application.properties
----------------------------------------------------------------------
diff --git a/distro/src/conf/atlas-application.properties b/distro/src/conf/atlas-application.properties
index 79723f4..1b2cc81 100755
--- a/distro/src/conf/atlas-application.properties
+++ b/distro/src/conf/atlas-application.properties
@@ -186,3 +186,6 @@ atlas.rest-csrf.enabled=true
 atlas.rest-csrf.browser-useragents-regex=^Mozilla.*,^Opera.*,^Chrome.*
 atlas.rest-csrf.methods-to-ignore=GET,OPTIONS,HEAD,TRACE
 atlas.rest-csrf.custom-header=X-XSRF-HEADER
+
+#########  Enable Taxonomy  #########
+atlas.feature.taxonomy.enable=true

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/079ce35e/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index ae4a3c1..b1b62fd 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -6,6 +6,7 @@ INCOMPATIBLE CHANGES:
 
 
 ALL CHANGES:
+ATLAS-1004 Option to enable taxonomy feature (kevalbhatt18 via shwethags)
 ATLAS-1003 DataSetLineageServiceTest, GraphBackedDiscoveryServiceTest, and GraphRepoMapperScaleTest failing in some environments (dkantor via shwethags)
 ATLAS-1002 Create default user rangertagsync in atlas file authentication for Ranger tag sync module (nixonrodrigues via shwethags)
 ATLAS-949 UI improvement for modal and tag styling in table (Kalyanikashikar via shwethags)

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/079ce35e/webapp/src/main/java/org/apache/atlas/web/resources/AdminResource.java
----------------------------------------------------------------------
diff --git a/webapp/src/main/java/org/apache/atlas/web/resources/AdminResource.java b/webapp/src/main/java/org/apache/atlas/web/resources/AdminResource.java
index b7f6cf2..5dcf21c 100755
--- a/webapp/src/main/java/org/apache/atlas/web/resources/AdminResource.java
+++ b/webapp/src/main/java/org/apache/atlas/web/resources/AdminResource.java
@@ -56,6 +56,7 @@ public class AdminResource {
     private static final String BROWSER_USER_AGENT_PARAM = "atlas.rest-csrf.browser-useragents-regex";
     private static final String CUSTOM_METHODS_TO_IGNORE_PARAM = "atlas.rest-csrf.methods-to-ignore";
     private static final String CUSTOM_HEADER_PARAM = "atlas.rest-csrf.custom-header";
+    private static final String isTaxonomyEnabled = "atlas.feature.taxonomy.enable";
     
     private Response version;
     private ServiceState serviceState;
@@ -141,7 +142,10 @@ public class AdminResource {
     @Produces(Servlets.JSON_MEDIA_TYPE)
     public Response getUserProfile() {
         JSONObject responseData = new JSONObject();
+        Boolean enableTaxonomy = null;
         try {
+            PropertiesConfiguration configProperties = new PropertiesConfiguration("atlas-application.properties");
+            enableTaxonomy = new Boolean(configProperties.getString(isTaxonomyEnabled, "false"));
             Authentication auth = SecurityContextHolder.getContext().getAuthentication();
             String userName = null;
             Set<String> groups = new HashSet<String>();
@@ -158,11 +162,13 @@ public class AdminResource {
             responseData.put(CUSTOM_METHODS_TO_IGNORE_PARAM, AtlasCSRFPreventionFilter.METHODS_TO_IGNORE_DEFAULT);
             responseData.put(CUSTOM_HEADER_PARAM, AtlasCSRFPreventionFilter.HEADER_DEFAULT);
             
+            responseData.put(isTaxonomyEnabled, enableTaxonomy);
+            
             responseData.put("userName", userName);
             responseData.put("groups", groups);
             Response response = Response.ok(responseData).build();
             return response;
-        } catch (JSONException e) {
+        } catch (JSONException | ConfigurationException e) {
             throw new WebApplicationException(Servlets.getErrorResponse(e, Response.Status.INTERNAL_SERVER_ERROR));
         }
     }