You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2018/05/15 18:14:41 UTC
ranger git commit: RANGER-2085: fix in resource lookup (entity-id) in
Atlas service
Repository: ranger
Updated Branches:
refs/heads/master 626f92a92 -> ab6cb3935
RANGER-2085: fix in resource lookup (entity-id) in Atlas service
Signed-off-by: Madhan Neethiraj <ma...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/ranger/commit/ab6cb393
Tree: http://git-wip-us.apache.org/repos/asf/ranger/tree/ab6cb393
Diff: http://git-wip-us.apache.org/repos/asf/ranger/diff/ab6cb393
Branch: refs/heads/master
Commit: ab6cb3935ad48948047028750fe8167c66111f87
Parents: 626f92a
Author: nixonrodrigues <ni...@apache.org>
Authored: Fri May 11 19:19:46 2018 +0530
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Tue May 15 11:14:14 2018 -0700
----------------------------------------------------------------------
.../services/atlas/RangerServiceAtlas.java | 94 ++++++++++----------
1 file changed, 47 insertions(+), 47 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ranger/blob/ab6cb393/plugin-atlas/src/main/java/org/apache/ranger/services/atlas/RangerServiceAtlas.java
----------------------------------------------------------------------
diff --git a/plugin-atlas/src/main/java/org/apache/ranger/services/atlas/RangerServiceAtlas.java b/plugin-atlas/src/main/java/org/apache/ranger/services/atlas/RangerServiceAtlas.java
index fb3688b..aba4b8c 100644
--- a/plugin-atlas/src/main/java/org/apache/ranger/services/atlas/RangerServiceAtlas.java
+++ b/plugin-atlas/src/main/java/org/apache/ranger/services/atlas/RangerServiceAtlas.java
@@ -69,7 +69,7 @@ public class RangerServiceAtlas extends RangerBaseService {
private static final String URL_LOGIN = "/j_spring_security_check";
private static final String URL_GET_TYPESDEF_HEADERS = "/api/atlas/v2/types/typedefs/headers";
- private static final String URl_ENTITY_SEARCH = "v2/search/attribute?attrName=qualifiedName";
+ private static final String URl_ENTITY_SEARCH = "v2/search/attribute?attrName=qualifiedName";
private static final String WEB_RESOURCE_CONTENT_TYPE = "application/x-www-form-urlencoded";
private static final String CONNECTION_ERROR_MSG = " You can still save the repository and start creating"
@@ -91,12 +91,11 @@ public class RangerServiceAtlas extends RangerBaseService {
LOG.debug("==> RangerServiceAtlas.validateConfig()");
}
- AtlasServiceClient client = new AtlasServiceClient(getServiceName(), configs);
-
- Map<String, Object> ret = client.validateConfig();
+ AtlasServiceClient client = new AtlasServiceClient(getServiceName(), configs);
+ Map<String, Object> ret = client.validateConfig();
if (LOG.isDebugEnabled()) {
- LOG.debug("<== RangerServiceAtlas.validateConfig(): "+ ret );
+ LOG.debug("<== RangerServiceAtlas.validateConfig(): " + ret );
}
return ret;
@@ -105,12 +104,11 @@ public class RangerServiceAtlas extends RangerBaseService {
@Override
public List<String> lookupResource(ResourceLookupContext context)throws Exception {
if (LOG.isDebugEnabled()) {
- LOG.debug("==> RangerServiceAtlas.lookupResource("+ context + ")");
+ LOG.debug("==> RangerServiceAtlas.lookupResource(" + context + ")");
}
AtlasServiceClient client = new AtlasServiceClient(getServiceName(), configs);
-
- List<String> ret = client.lookupResource(context);
+ List<String> ret = client.lookupResource(context);
if (LOG.isDebugEnabled()) {
LOG.debug("<== RangerServiceAtlas.lookupResource("+ context + "): " + ret);
@@ -122,28 +120,29 @@ public class RangerServiceAtlas extends RangerBaseService {
@Override
public List<RangerPolicy> getDefaultRangerPolicies() throws Exception {
if (LOG.isDebugEnabled()) {
- LOG.debug("==> RangerServiceAtlas.getDefaultRangerPolicies() ");
+ LOG.debug("==> RangerServiceAtlas.getDefaultRangerPolicies()");
}
List<RangerPolicy> ret = super.getDefaultRangerPolicies();
for (RangerPolicy defaultPolicy : ret) {
for (RangerPolicy.RangerPolicyItem defaultPolicyItem : defaultPolicy.getPolicyItems()) {
- List<String> users = defaultPolicyItem.getUsers();
+ List<String> users = defaultPolicyItem.getUsers();
+ String adminUser = service.getConfigs().get("atlas.admin.user");
- String atlasAdminUser = service.getConfigs().get("atlas.admin.user");
- if (StringUtils.isBlank(atlasAdminUser)) {
- atlasAdminUser = "admin";
+ if (StringUtils.isBlank(adminUser)) {
+ adminUser = "admin";
}
- users.add(atlasAdminUser);
+ users.add(adminUser);
defaultPolicyItem.setUsers(users);
}
}
if (LOG.isDebugEnabled()) {
- LOG.debug("<== RangerServiceAtlas.getDefaultRangerPolicies() ");
+ LOG.debug("<== RangerServiceAtlas.getDefaultRangerPolicies()");
}
+
return ret;
}
@@ -171,8 +170,6 @@ public class RangerServiceAtlas extends RangerBaseService {
final String userInput = lookupContext.getUserInput();
final List<String> currentValues = lookupContext.getResources().get(lookupContext.getResourceName());
-
-
switch(lookupContext.getResourceName()) {
case RESOURCE_TYPE_CATEGORY: {
for (String typeCategory : TYPE_CATEGORIES) {
@@ -224,9 +221,12 @@ public class RangerServiceAtlas extends RangerBaseService {
case RESOURCE_ENTITY_ID: {
List<String> searchTypes = lookupContext.getResources().get("entity-type");
- List<String> values = searchEntities(userInput , searchTypes);
- addIfStartsWithAndNotExcluded(ret, values, userInput, currentValues);
+ if (searchTypes != null && searchTypes.size() == 1) {
+ List<String> values = searchEntities(userInput, searchTypes.get(0));
+
+ addIfStartsWithAndNotExcluded(ret, values, userInput, currentValues);
+ }
}
break;
@@ -279,6 +279,7 @@ public class RangerServiceAtlas extends RangerBaseService {
LOG.error(msgDesc, t);
excp = new HadoopException(msgDesc, t);
+
excp.generateResponseDataMap(false, BaseClient.getMessage(t), msgDesc + CONNECTION_ERROR_MSG, null, null);
}
}
@@ -288,6 +289,7 @@ public class RangerServiceAtlas extends RangerBaseService {
String msgDesc = "Exception while login to Atlas at : " + loginUrl;
excp = new HadoopException(msgDesc);
+
excp.generateResponseDataMap(false, "", msgDesc + CONNECTION_ERROR_MSG, null, null);
}
@@ -298,8 +300,7 @@ public class RangerServiceAtlas extends RangerBaseService {
}
private boolean refreshTypesDefs() {
- boolean ret = false;
-
+ boolean ret = false;
Subject subj = getLoginSubject();
if (subj == null) {
@@ -336,8 +337,7 @@ public class RangerServiceAtlas extends RangerBaseService {
for (Object type : types) {
if (type instanceof Map) {
- Map typeDef = (Map) type;
-
+ Map typeDef = (Map) type;
Object name = typeDef.get("name");
Object category = typeDef.get("category");
@@ -360,6 +360,7 @@ public class RangerServiceAtlas extends RangerBaseService {
}
} catch (Throwable t) {
String msgDesc = "Exception while getting Atlas Resource List.";
+
LOG.error(msgDesc, t);
} finally {
if (client != null) {
@@ -374,18 +375,17 @@ public class RangerServiceAtlas extends RangerBaseService {
if (typesDef != null) {
this.typesDef = typesDef;
+
ret = true;
}
return ret;
}
- private List<String> searchEntities(String userInput, List<String> types) {
-
+ private List<String> searchEntities(String userInput, String entityType) {
if( LOG.isDebugEnabled()) {
- LOG.info(" RangerServiceAtlas.searchEntities ==>> userInput" + userInput +" types "+ types);
+ LOG.debug("==> RangerServiceAtlas.searchEntities(userInput=" + userInput + ", entityType=" + entityType + ")");
}
- List<String> list = null;
Subject subj = getLoginSubject();
@@ -393,34 +393,29 @@ public class RangerServiceAtlas extends RangerBaseService {
return null;
}
- list = Subject.doAs(subj, new PrivilegedAction<List<String>>() {
+ List<String> list = Subject.doAs(subj, new PrivilegedAction<List<String>>() {
@Override
public List<String> run() {
List<String> ret = null;
- String entityType = "";
- if (types != null && types.size() == 1) {
- entityType = types.get(0);
- } else {
- return null;
- }
+
for (String atlasUrl : getAtlasUrls()) {
Client client = null;
try {
client = Client.create();
- ClientResponse loginResponse = loginToAtlas(client);
- String entitySearcApiUrl = atlasUrl + "/api/atlas/" + URl_ENTITY_SEARCH;
- StringBuilder searchUrl = new StringBuilder();
+ ClientResponse loginResponse = loginToAtlas(client);
+ String entitySearcApiUrl = atlasUrl + "/api/atlas/" + URl_ENTITY_SEARCH;
+ StringBuilder searchUrl = new StringBuilder();
searchUrl.append(entitySearcApiUrl)
- .append("&typeName=")
- .append(entityType)
- .append("&attrValuePrefix=" + userInput + "&limit=25");
+ .append("&typeName=")
+ .append(entityType)
+ .append("&attrValuePrefix=" + userInput + "&limit=25");
- WebResource webResource = client.resource(searchUrl.toString());
- WebResource.Builder builder = webResource.getRequestBuilder();
+ WebResource webResource = client.resource(searchUrl.toString());
+ WebResource.Builder builder = webResource.getRequestBuilder();
for (NewCookie cook : loginResponse.getCookies()) {
builder = builder.cookie(cook);
@@ -429,14 +424,15 @@ public class RangerServiceAtlas extends RangerBaseService {
ClientResponse response = builder.get(ClientResponse.class);
if (response != null) {
- String jsonString = response.getEntity(String.class);
- Gson gson = new Gson();
+ String jsonString = response.getEntity(String.class);
+ Gson gson = new Gson();
AtlasSearchResult searchResult = gson.fromJson(jsonString, AtlasSearchResult.class);
ret = new ArrayList<>();
if (searchResult != null) {
List<AtlasEntityHeader> entityHeaderList = searchResult.getEntities();
+
for (AtlasEntityHeader entity : entityHeaderList) {
ret.add((String) entity.getAttribute("qualifiedName"));
}
@@ -444,6 +440,7 @@ public class RangerServiceAtlas extends RangerBaseService {
}
} catch (Throwable t) {
String msgDesc = "Exception while getting Atlas Entity Resource List.";
+
LOG.error(msgDesc, t);
} finally {
if (client != null) {
@@ -456,13 +453,16 @@ public class RangerServiceAtlas extends RangerBaseService {
}
});
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== RangerServiceAtlas.searchEntities(userInput=" + userInput + ", entityType=" + entityType + "): " + list);
+ }
+
return list;
}
String[] getAtlasUrls() {
- String urlString = connectionProperties.get(CONFIG_REST_ADDRESS);
-
- String[] ret = urlString == null ? new String[0] : urlString.split(",");
+ String urlString = connectionProperties.get(CONFIG_REST_ADDRESS);
+ String[] ret = urlString == null ? new String[0] : urlString.split(",");
// remove separator at the end
for (int i = 0; i < ret.length; i++) {