in tez-api/src/main/java/org/apache/tez/common/security/ACLManager.java [172:234]
public Map<ApplicationAccessType, String> toYARNACls() {
Map<ApplicationAccessType, String> acls = new HashMap<ApplicationAccessType, String>(2);
if (!this.aclsEnabled) {
acls.put(ApplicationAccessType.VIEW_APP, "*");
acls.put(ApplicationAccessType.MODIFY_APP, "*");
return acls;
}
acls.put(ApplicationAccessType.VIEW_APP, amUser);
acls.put(ApplicationAccessType.MODIFY_APP, amUser);
boolean viewAclsWildCard = false;
boolean modifyAclsWildCard = false;
if (users != null && !users.isEmpty()) {
for (Entry<ACLType, Set<String>> entry : users.entrySet()) {
if (entry.getKey().equals(ACLType.AM_VIEW_ACL)) {
if (entry.getValue().contains(WILDCARD_ACL_VALUE)) {
acls.put(ApplicationAccessType.VIEW_APP, "*");
viewAclsWildCard = true;
continue;
} else if (!entry.getValue().isEmpty()) {
String aclsStr = acls.get(ApplicationAccessType.VIEW_APP);
String commaSepList = toCommaSeparatedString(entry.getValue());
if (!commaSepList.isEmpty()) {
aclsStr += "," + commaSepList;
}
acls.put(ApplicationAccessType.VIEW_APP, aclsStr);
}
} else if (entry.getKey().equals(ACLType.AM_MODIFY_ACL)) {
if (entry.getValue().contains(WILDCARD_ACL_VALUE)) {
acls.put(ApplicationAccessType.MODIFY_APP, "*");
modifyAclsWildCard = true;
continue;
} else if (!entry.getValue().isEmpty()) {
String aclsStr = acls.get(ApplicationAccessType.MODIFY_APP);
String commaSepList = toCommaSeparatedString(entry.getValue());
if (!commaSepList.isEmpty()) {
aclsStr += "," + commaSepList;
}
acls.put(ApplicationAccessType.MODIFY_APP, aclsStr);
}
}
}
}
if (groups != null && !groups.isEmpty()) {
for (Entry<ACLType, Set<String>> entry : groups.entrySet()) {
if (entry.getKey().equals(ACLType.AM_VIEW_ACL)
&& !viewAclsWildCard && !entry.getValue().isEmpty()) {
// Append groups only if wild card not set
String aclsStr = acls.containsKey(ApplicationAccessType.VIEW_APP) ?
acls.get(ApplicationAccessType.VIEW_APP) : "";
aclsStr += " " + toCommaSeparatedString(entry.getValue());
acls.put(ApplicationAccessType.VIEW_APP, aclsStr);
} else if (entry.getKey().equals(ACLType.AM_MODIFY_ACL)
&& !modifyAclsWildCard && !entry.getValue().isEmpty()) {
// Append groups only if wild card not set
String aclsStr = acls.containsKey(ApplicationAccessType.MODIFY_APP) ?
acls.get(ApplicationAccessType.MODIFY_APP) : "";
aclsStr += " " + toCommaSeparatedString(entry.getValue());
acls.put(ApplicationAccessType.MODIFY_APP, aclsStr);
}
}
}
return acls;
}