You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by rz...@apache.org on 2017/03/27 22:57:40 UTC
[30/51] [abbrv] ambari git commit: AMBARI-18964. unable to add users
permission for tez view. (dipayanb)
AMBARI-18964. unable to add users permission for tez view. (dipayanb)
Change-Id: I9b8beb57e6bc744d10000ebb3a49bd4d8354ae20
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/503aa980
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/503aa980
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/503aa980
Branch: refs/heads/AMBARI-2.4.2.16
Commit: 503aa9809d4890e6c54b219fda1aa3444dbb5597
Parents: 640b471
Author: Dipayan Bhowmick <db...@hortonworks.com>
Authored: Wed Nov 23 02:39:16 2016 +0530
Committer: Dipayan Bhowmick <db...@hortonworks.com>
Committed: Wed Nov 23 02:39:16 2016 +0530
----------------------------------------------------------------------
.../apache/ambari/server/view/ViewRegistry.java | 45 ++++++++++++++------
1 file changed, 33 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/503aa980/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java
index 7f58485..31a66d1 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java
@@ -708,25 +708,46 @@ public class ViewRegistry {
LOG.debug("Copy all privileges from " + sourceInstanceEntity.getName() + " to " +
targetInstanceEntity.getName());
List<PrivilegeEntity> targetInstancePrivileges = privilegeDAO.findByResourceId(targetInstanceEntity.getResource().getId());
+ List<PrivilegeEntity> sourceInstancePrivileges = privilegeDAO.findByResourceId(sourceInstanceEntity.getResource().getId());
+
+ // Do not run migration when the target Instance has already got some privileges.
+ // This means that the upgrade process would have already run during the first start of ambari after upgrade
if (targetInstancePrivileges.size() > 0) {
- LOG.warn("Target instance {} already has privileges assigned, these will not be deleted. Manual clean up may be needed",targetInstanceEntity.getName());
+ return;
}
- List<PrivilegeEntity> sourceInstancePrivileges = privilegeDAO.findByResourceId(sourceInstanceEntity.getResource().getId());
for (PrivilegeEntity sourcePrivilege : sourceInstancePrivileges) {
- PrivilegeEntity targetPrivilege = new PrivilegeEntity();
- targetPrivilege.setPrincipal(sourcePrivilege.getPrincipal());
- targetPrivilege.setResource(targetInstanceEntity.getResource());
- targetPrivilege.setPermission(sourcePrivilege.getPermission());
- try {
- privilegeDAO.create(targetPrivilege);
- targetPrivilege.getPrincipal().getPrivileges().add(sourcePrivilege);
- } catch (Exception e){
- LOG.warn("Could not migrate privilege {} ",targetPrivilege);
- LOG.error("Caught exception",e);
+ if (checkAdditionOfPrivilegesRequired(sourcePrivilege, targetInstancePrivileges)) {
+ PrivilegeEntity targetPrivilege = new PrivilegeEntity();
+ targetPrivilege.setPrincipal(sourcePrivilege.getPrincipal());
+ targetPrivilege.setResource(targetInstanceEntity.getResource());
+ targetPrivilege.setPermission(sourcePrivilege.getPermission());
+ try {
+ privilegeDAO.create(targetPrivilege);
+ targetPrivilege.getPrincipal().getPrivileges().add(sourcePrivilege);
+ } catch (Exception e){
+ LOG.warn("Could not migrate privilege {} ",targetPrivilege);
+ LOG.error("Caught exception",e);
+ }
}
+ }
+
+ }
+ /**
+ * Checks if the all the targetPrivileges are different than the sourcePrivilege
+ * @param sourcePrivilege - Source privilege
+ * @param targetInstancePrivileges - target privileges
+ * @return true if the sourcePrivilege is different than all the targetPrivileges
+ */
+ private boolean checkAdditionOfPrivilegesRequired(PrivilegeEntity sourcePrivilege, List<PrivilegeEntity> targetInstancePrivileges) {
+ for (PrivilegeEntity targetPrivilege : targetInstancePrivileges) {
+ if (targetPrivilege.getPermission().getId().equals(sourcePrivilege.getPermission().getId()) &&
+ targetPrivilege.getPrincipal().getId().equals(sourcePrivilege.getPrincipal().getId())) {
+ return false;
+ }
}
+ return true;
}
/**