atlas git commit: ATLAS-2786: updated HBase and Solr clients to use all zookeeper entires

2018-09-27 Thread madhan
Repository: atlas
Updated Branches:
  refs/heads/branch-0.8 01f3f14ea -> 2f3942831


ATLAS-2786: updated HBase and Solr clients to use all zookeeper entires


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

Branch: refs/heads/branch-0.8
Commit: 2f39428313136b765dbab42a1ee2e6521695d690
Parents: 01f3f14
Author: Madhan Neethiraj 
Authored: Thu Sep 27 19:51:35 2018 -0700
Committer: Madhan Neethiraj 
Committed: Thu Sep 27 21:06:09 2018 -0700

--
 .../titan/diskstorage/solr/Solr5Index.java  | 50 +---
 .../audit/HBaseBasedAuditRepository.java| 20 
 2 files changed, 55 insertions(+), 15 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/atlas/blob/2f394283/graphdb/titan0/src/main/java/com/thinkaurelius/titan/diskstorage/solr/Solr5Index.java
--
diff --git 
a/graphdb/titan0/src/main/java/com/thinkaurelius/titan/diskstorage/solr/Solr5Index.java
 
b/graphdb/titan0/src/main/java/com/thinkaurelius/titan/diskstorage/solr/Solr5Index.java
index 90d24e4..50b3123 100644
--- 
a/graphdb/titan0/src/main/java/com/thinkaurelius/titan/diskstorage/solr/Solr5Index.java
+++ 
b/graphdb/titan0/src/main/java/com/thinkaurelius/titan/diskstorage/solr/Solr5Index.java
@@ -103,7 +103,8 @@ public class Solr5Index implements IndexProvider {
 private static final Logger logger = 
LoggerFactory.getLogger(Solr5Index.class);
 
 
-private static final String DEFAULT_ID_FIELD = "id";
+private static final String DEFAULT_ID_FIELD  = "id";
+private static final char   CHROOT_START_CHAR = '/';
 
 private enum Mode {
 HTTP, CLOUD;
@@ -138,9 +139,9 @@ public class Solr5Index implements IndexProvider {
 
 /** SolrCloud Configuration */
 
-public static final ConfigOption ZOOKEEPER_URL = new 
ConfigOption<>(SOLR_NS, "zookeeper-url",
+public static final ConfigOption ZOOKEEPER_URL = new 
ConfigOption<>(SOLR_NS, "zookeeper-url",
 "URL of the Zookeeper instance coordinating the SolrCloud cluster",
-ConfigOption.Type.MASKABLE, "localhost:2181");
+ConfigOption.Type.MASKABLE, new String[]{"localhost:2181"});
 
 public static final ConfigOption ZOOKEEPER_CONNECT_TIMEOUT = new 
ConfigOption<>(SOLR_NS,"zookeeper-connect-timeout",
 "SolrCloud Zookeeper connect timeout",
@@ -216,8 +217,9 @@ public class Solr5Index implements IndexProvider {
 
 if (mode==Mode.CLOUD) {
 HttpClientUtil.setConfigurer(new Krb5HttpClientConfigurer());
-String zookeeperUrl = config.get(Solr5Index.ZOOKEEPER_URL);
-CloudSolrClient cloudServer = new CloudSolrClient(zookeeperUrl, 
true);
+
+String[]zkHosts = config.get(Solr5Index.ZOOKEEPER_URL);
+CloudSolrClient cloudServer = getCloudSolrClient(zkHosts);
 
 logger.info("Zookeeper connect timeout : " + 
config.get(ZOOKEEPER_CONNECT_TIMEOUT));
 
cloudServer.setZkConnectTimeout(config.get(ZOOKEEPER_CONNECT_TIMEOUT));
@@ -237,8 +239,6 @@ public class Solr5Index implements IndexProvider {
 }});
 
 solrClient = new LBHttpSolrClient(clientParams, 
config.get(HTTP_URLS));
-
-
 } else {
 throw new IllegalArgumentException("Unsupported Solr operation 
mode: " + mode);
 }
@@ -966,6 +966,42 @@ public class Solr5Index implements IndexProvider {
 }
 }
 
+private CloudSolrClient getCloudSolrClient(String[] zkHosts) {
+logger.info("==> Solr5Index.getCloudSolrClient({})", zkHosts);
+
+CloudSolrClient ret = null;
+
+if (zkHosts != null) {
+List zkServers = new ArrayList<>(zkHosts.length);
+String   chroot= null;
+
+for (String zkHost : zkHosts) {
+if (zkHost != null) {
+int idxSlash = zkHost.indexOf(CHROOT_START_CHAR);
+
+if (idxSlash != -1) {
+chroot = zkHost.substring(idxSlash); // chroot of the 
last url will be used
+zkHost = zkHost.substring(0, idxSlash);
+}
+
+if (StringUtils.isNotEmpty(zkHost)) {
+logger.info("Solr5Index: adding zkHost={}. chroot={}", 
zkHost, chroot);
+
+zkServers.add(zkHost);
+}
+}
+}
+
+logger.info("Solr5Index: number of zkUrls={}. chroot={}", 
zkServers.size(), chroot);
+
+ret = new CloudSolrClient(zkServers, chroot);
+}
+
+logger.info("<== Solr5Index.getCloudSolrClient({}): ret={}", 

atlas git commit: ATLAS-2897: Elegant handling of empty zip files.

2018-09-27 Thread amestry
Repository: atlas
Updated Branches:
  refs/heads/branch-0.8 e3a592cef -> 01f3f14ea


ATLAS-2897: Elegant handling of empty zip files.


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

Branch: refs/heads/branch-0.8
Commit: 01f3f14ea78092000a1855c6bd7838a02647e8cf
Parents: e3a592c
Author: Ashutosh Mestry 
Authored: Thu Sep 27 09:27:30 2018 -0700
Committer: Ashutosh Mestry 
Committed: Thu Sep 27 15:01:23 2018 -0700

--
 .../java/org/apache/atlas/AtlasErrorCode.java   |   1 +
 .../atlas/repository/impexp/ZipSource.java  |  21 +++-
 .../repository/impexp/ImportServiceTest.java|  24 +--
 .../impexp/ZipFileResourceTestUtils.java|   6 ++---
 .../atlas/repository/impexp/ZipSourceTest.java  |   8 +++
 repository/src/test/resources/empty.zip | Bin 0 -> 22 bytes
 6 files changed, 40 insertions(+), 20 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/atlas/blob/01f3f14e/intg/src/main/java/org/apache/atlas/AtlasErrorCode.java
--
diff --git a/intg/src/main/java/org/apache/atlas/AtlasErrorCode.java 
b/intg/src/main/java/org/apache/atlas/AtlasErrorCode.java
index dde7d3a..8163390 100644
--- a/intg/src/main/java/org/apache/atlas/AtlasErrorCode.java
+++ b/intg/src/main/java/org/apache/atlas/AtlasErrorCode.java
@@ -77,6 +77,7 @@ public enum AtlasErrorCode {
 SAVED_SEARCH_CHANGE_USER(400, "ATLAS-400-00-056", "saved-search {0} can 
not be moved from user {1} to {2}"),
 INVALID_QUERY_PARAM_LENGTH(400, "ATLAS-400-00-057" , "Length of query 
param {0} exceeds the limit"),
 INVALID_QUERY_LENGTH(400, "ATLAS-400-00-057" , "Invalid query length, 
update {0} to change the limit" ),
+IMPORT_ATTEMPTING_EMPTY_ZIP(400, "ATLAS-400-00-058", "Attempting to import 
empty ZIP file."),
 
 // All Not found enums go here
 UNKNOWN_CLASSIFICATION(400, "ATLAS-400-00-046", "{0}: Unknown/invalid 
classification"),

http://git-wip-us.apache.org/repos/asf/atlas/blob/01f3f14e/repository/src/main/java/org/apache/atlas/repository/impexp/ZipSource.java
--
diff --git 
a/repository/src/main/java/org/apache/atlas/repository/impexp/ZipSource.java 
b/repository/src/main/java/org/apache/atlas/repository/impexp/ZipSource.java
index 7d96044..691f933 100644
--- a/repository/src/main/java/org/apache/atlas/repository/impexp/ZipSource.java
+++ b/repository/src/main/java/org/apache/atlas/repository/impexp/ZipSource.java
@@ -40,6 +40,8 @@ import java.util.Map;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
 
+import static org.apache.atlas.AtlasErrorCode.IMPORT_ATTEMPTING_EMPTY_ZIP;
+
 
 public class ZipSource implements EntityImportStream {
 private static final Logger LOG = LoggerFactory.getLogger(ZipSource.class);
@@ -52,16 +54,20 @@ public class ZipSource implements EntityImportStream {
 private List entityHandlers;
 private int currentPosition;
 
-public ZipSource(InputStream inputStream) throws IOException {
+public ZipSource(InputStream inputStream) throws IOException, 
AtlasBaseException {
 this(inputStream, null);
 }
 
-public ZipSource(InputStream inputStream, ImportTransforms 
importTransform) throws IOException {
+public ZipSource(InputStream inputStream, ImportTransforms 
importTransform) throws IOException, AtlasBaseException {
 this.inputStream   = inputStream;
 this.guidEntityJsonMap = new HashMap<>();
 this.importTransform   = importTransform;
 
 updateGuidZipEntryMap();
+if (MapUtils.isEmpty(guidEntityJsonMap)) {
+throw new AtlasBaseException(IMPORT_ATTEMPTING_EMPTY_ZIP, 
"Attempting to import empty ZIP.");
+}
+
 setCreationOrder();
 }
 
@@ -82,7 +88,7 @@ public class ZipSource implements EntityImportStream {
 public AtlasTypesDef getTypesDef() throws AtlasBaseException {
 final String fileName = 
ZipExportFileNames.ATLAS_TYPESDEF_NAME.toString();
 
-String s = (String) getFromCache(fileName);
+String s = getFromCache(fileName);
 return convertFromJson(AtlasTypesDef.class, s);
 }
 
@@ -179,7 +185,12 @@ public class ZipSource implements EntityImportStream {
 }
 
 private String getFromCache(String entryName) {
-return guidEntityJsonMap.get(entryName);
+String s  = guidEntityJsonMap.get(entryName);
+if (StringUtils.isEmpty(s)) {
+LOG.warn("Could not fetch requested contents of file: {}", 
entryName);
+}
+
+return s;
 }
 
 public void 

atlas git commit: ATLAS-2894: UI to implement REST Endpoint that Deletes Type Given Type Name(without JSON body)- without params

2018-09-27 Thread nixon
Repository: atlas
Updated Branches:
  refs/heads/branch-0.8 ab6425e35 -> e3a592cef


ATLAS-2894: UI to implement REST Endpoint that Deletes Type Given Type 
Name(without JSON body)- without params

Signed-off-by: nixonrodrigues 


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

Branch: refs/heads/branch-0.8
Commit: e3a592cefd6dc0a9228e8099518857428169a5af
Parents: ab6425e
Author: Abhishek Kadam 
Authored: Thu Sep 27 14:44:56 2018 +0530
Committer: nixonrodrigues 
Committed: Thu Sep 27 17:23:05 2018 +0530

--
 dashboardv2/public/js/models/VTag.js|  2 +-
 dashboardv2/public/js/utils/UrlLinks.js | 11 ---
 2 files changed, 9 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/atlas/blob/e3a592ce/dashboardv2/public/js/models/VTag.js
--
diff --git a/dashboardv2/public/js/models/VTag.js 
b/dashboardv2/public/js/models/VTag.js
index 17acbd8..19767d6 100644
--- a/dashboardv2/public/js/models/VTag.js
+++ b/dashboardv2/public/js/models/VTag.js
@@ -49,7 +49,7 @@ define(['require',
 return this.constructor.nonCrudOperation.call(this, url, 'DELETE', 
options);
 },
 deleteTag: function(options) {
-var url = UrlLinks.classificationDefApiUrl(options.typeName);
+var url = UrlLinks.getDefApiUrl(null, options.typeName);
 return this.constructor.nonCrudOperation.call(this, url, 'DELETE', 
options);
 },
 saveTagAttribute: function(options) {

http://git-wip-us.apache.org/repos/asf/atlas/blob/e3a592ce/dashboardv2/public/js/utils/UrlLinks.js
--
diff --git a/dashboardv2/public/js/utils/UrlLinks.js 
b/dashboardv2/public/js/utils/UrlLinks.js
index 44fd3b0..e8aee1d 100644
--- a/dashboardv2/public/js/utils/UrlLinks.js
+++ b/dashboardv2/public/js/utils/UrlLinks.js
@@ -41,11 +41,16 @@ define(['require', 'utils/Enums', 'utils/Utils', 
'underscore'], function(require
 return this.getDefApiUrl('enum', name);
 },
 getDefApiUrl: function(type, name) {
-var defApiUrl = this.typedefsUrl();
+var defApiUrl = this.typedefsUrl(), defUrl;
 if (name) {
-return defApiUrl.def + '/name/' + name + '?type=' + type;
+defUrl = defApiUrl.def + '/name/' + name;
 } else {
-return defApiUrl.defs + '?type=' + type;
+defUrl = defApiUrl.defs;
+}
+if (type) {
+return defUrl += '?type=' + type;
+} else {
+return defUrl;
 }
 },
 taxonomiesApiUrl: function() {