You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ak...@apache.org on 2016/06/17 10:36:22 UTC

ambari git commit: AMBARI-17278. Unable to delete permission with type VIEW (akovalenko)

Repository: ambari
Updated Branches:
  refs/heads/trunk 978cc64e2 -> b6cb758b5


AMBARI-17278. Unable to delete permission with type VIEW (akovalenko)


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

Branch: refs/heads/trunk
Commit: b6cb758b54c00986cd58d8e39ca594ab737c6fc1
Parents: 978cc64
Author: Aleksandr Kovalenko <ak...@hortonworks.com>
Authored: Fri Jun 17 13:35:35 2016 +0300
Committer: Aleksandr Kovalenko <ak...@hortonworks.com>
Committed: Fri Jun 17 13:35:35 2016 +0300

----------------------------------------------------------------------
 .../controllers/groups/GroupsEditCtrl.js        | 38 ++++++----
 .../scripts/controllers/users/UsersShowCtrl.js  | 38 ++++++----
 .../app/scripts/services/PermissionsSaver.js    | 77 --------------------
 .../ui/admin-web/app/scripts/services/View.js   |  7 +-
 4 files changed, 49 insertions(+), 111 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/b6cb758b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsEditCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsEditCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsEditCtrl.js
index 68bf3e5..2e7830b 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsEditCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsEditCtrl.js
@@ -18,7 +18,7 @@
 'use strict';
 
 angular.module('ambariAdminConsole')
-.controller('GroupsEditCtrl',['$scope', 'Group', '$routeParams', 'Cluster', 'Alert', 'ConfirmationModal', '$location', '$translate', function($scope, Group, $routeParams, Cluster, Alert, ConfirmationModal, $location, $translate) {
+.controller('GroupsEditCtrl',['$scope', 'Group', '$routeParams', 'Cluster', 'View', 'Alert', 'ConfirmationModal', '$location', '$translate', function($scope, Group, $routeParams, Cluster, View, Alert, ConfirmationModal, $location, $translate) {
   var $t = $translate.instant;
   $scope.constants = {
     group: $t('common.group'),
@@ -92,26 +92,36 @@ angular.module('ambariAdminConsole')
         nameFilter : group.group_name,
         typeFilter : {value: 'GROUP'}
       }).then(function(data) {
-        var deleteCallback = function () {
-          group.destroy().then(function() {
-            $location.path('/groups');
-          });
-        };
-        var privilegesIds = [];
+        var clusterPrivilegesIds = [];
+        var viewsPrivileges = [];
         if (data.items && data.items.length) {
           angular.forEach(data.items[0].privileges, function(privilege) {
             if (privilege.PrivilegeInfo.principal_type === 'GROUP') {
-              privilegesIds.push(privilege.PrivilegeInfo.privilege_id);
+              if (privilege.PrivilegeInfo.type === 'VIEW') {
+                viewsPrivileges.push({
+                  id: privilege.PrivilegeInfo.privilege_id,
+                  view_name: privilege.PrivilegeInfo.view_name,
+                  version: privilege.PrivilegeInfo.version,
+                  instance_name: privilege.PrivilegeInfo.instance_name
+                });
+              } else {
+                clusterPrivilegesIds.push(privilege.PrivilegeInfo.privilege_id);
+              }
             }
           });
         }
-        if (privilegesIds.length) {
-          Cluster.deleteMultiplePrivileges($routeParams.id, privilegesIds).then(function() {
-            deleteCallback();
+        group.destroy().then(function() {
+          $location.path('/groups');
+          if (clusterPrivilegesIds.length) {
+            Cluster.getAllClusters().then(function (clusters) {
+              var clusterName = clusters[0].Clusters.cluster_name;
+              Cluster.deleteMultiplePrivileges(clusterName, clusterPrivilegesIds);
+            });
+          }
+          angular.forEach(viewsPrivileges, function(privilege) {
+            View.deletePrivilege(privilege);
           });
-        } else {
-          deleteCallback();
-        }
+        });
       });
     });
   };

http://git-wip-us.apache.org/repos/asf/ambari/blob/b6cb758b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js
index f2c2467..3beb42a 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js
@@ -18,7 +18,7 @@
 'use strict';
 
 angular.module('ambariAdminConsole')
-.controller('UsersShowCtrl', ['$scope', '$routeParams', 'Cluster', 'User', '$modal', '$location', 'ConfirmationModal', 'Alert', 'Auth', 'getDifference', 'Group', '$q', '$translate', function($scope, $routeParams, Cluster, User, $modal, $location, ConfirmationModal, Alert, Auth, getDifference, Group, $q, $translate) {
+.controller('UsersShowCtrl', ['$scope', '$routeParams', 'Cluster', 'User', 'View', '$modal', '$location', 'ConfirmationModal', 'Alert', 'Auth', 'getDifference', 'Group', '$q', '$translate', function($scope, $routeParams, Cluster, User, View, $modal, $location, ConfirmationModal, Alert, Auth, getDifference, Group, $q, $translate) {
 
   var $t = $translate.instant;
 
@@ -183,26 +183,36 @@ angular.module('ambariAdminConsole')
         nameFilter : $scope.user.user_name,
         typeFilter : {value: 'USER'}
       }).then(function(data) {
-        var privilegesIds = [];
-        var deleteCallback = function () {
-          User.delete($scope.user.user_name).then(function() {
-            $location.path('/users');
-          });
-        };
+        var clusterPrivilegesIds = [];
+        var viewsPrivileges = [];
         if (data.items && data.items.length) {
           angular.forEach(data.items[0].privileges, function(privilege) {
             if (privilege.PrivilegeInfo.principal_type === 'USER') {
-              privilegesIds.push(privilege.PrivilegeInfo.privilege_id);
+              if (privilege.PrivilegeInfo.type === 'VIEW') {
+                viewsPrivileges.push({
+                  id: privilege.PrivilegeInfo.privilege_id,
+                  view_name: privilege.PrivilegeInfo.view_name,
+                  version: privilege.PrivilegeInfo.version,
+                  instance_name: privilege.PrivilegeInfo.instance_name
+                });
+              } else {
+                clusterPrivilegesIds.push(privilege.PrivilegeInfo.privilege_id);
+              }
             }
           });
         }
-        if (privilegesIds.length) {
-          Cluster.deleteMultiplePrivileges($routeParams.id, privilegesIds).then(function() {
-            deleteCallback();
+        User.delete($scope.user.user_name).then(function() {
+          $location.path('/users');
+          if (clusterPrivilegesIds.length) {
+            Cluster.getAllClusters().then(function (clusters) {
+              var clusterName = clusters[0].Clusters.cluster_name;
+              Cluster.deleteMultiplePrivileges(clusterName, clusterPrivilegesIds);
+            });
+          }
+          angular.forEach(viewsPrivileges, function(privilege) {
+            View.deletePrivilege(privilege);
           });
-        } else {
-          deleteCallback();
-        }
+        });
       });
     });
   };

http://git-wip-us.apache.org/repos/asf/ambari/blob/b6cb758b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/PermissionsSaver.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/PermissionsSaver.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/PermissionsSaver.js
index bc53dad..c7b9295 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/PermissionsSaver.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/PermissionsSaver.js
@@ -73,83 +73,6 @@ angular.module('ambariAdminConsole')
     }
     return resource.updatePrivileges(params, arr);
   }
-  
-  function savePermissionsForOld(resource, oldPermissions, newPermissions, params){
-    var deferred = $q.defer();
-
-    var addArr = [];
-    var delArr = [];
-    angular.forEach(newPermissions, function(permission) {
-      // Sanitize input
-      var users = permission.USER.toString().split(',').filter(function(item) {return item.trim();}).map(function(item) {return item.trim()});
-      var groups = permission.GROUP.toString().split(',').filter(function(item) {return item.trim();}).map(function(item) {return item.trim()});
-
-      var userObj = getDifference(angular.copy(oldPermissions[permission.PermissionInfo.permission_name].USER) , users);
-      var groupObj = getDifference(angular.copy(oldPermissions[permission.PermissionInfo.permission_name].GROUP) , groups);
-
-      // Build Add array
-      addArr = addArr.concat(userObj.add.map(function(user) {
-        return {
-          'PrivilegeInfo':{
-            'permission_name': permission.PermissionInfo.permission_name,
-            'principal_name': user,
-            'principal_type': 'USER'
-          }
-        }
-      }));
-      addArr = addArr.concat(groupObj.add.map(function(group) {
-        return {
-          'PrivilegeInfo':{
-            'permission_name': permission.PermissionInfo.permission_name,
-            'principal_name': group,
-            'principal_type': 'GROUP'
-          }
-        }
-      }));
-
-      // Build del array
-      delArr = delArr.concat(userObj.del.map(function(user) {
-        return {
-          'PrivilegeInfo':{
-            'permission_name': permission.PermissionInfo.permission_name,
-            'principal_name': user,
-            'principal_type': 'USER'
-          }
-        }
-      }));
-      delArr = delArr.concat(groupObj.del.map(function(group) {
-        return {
-          'PrivilegeInfo':{
-            'permission_name': permission.PermissionInfo.permission_name,
-            'principal_name': group,
-            'principal_type': 'GROUP'
-          }
-        }
-      }));
-    });
-
-    if(addArr.length){
-      resource.createPrivileges(params, addArr)
-      .then(function() {
-        deferred.resolve();
-      })
-      .catch(function(data) {
-        deferred.reject(data);
-      });
-    }
-
-    if(delArr.length){
-      resource.deletePrivileges(params, delArr)
-      .then(function() {
-        deferred.resolve();
-      })
-      .catch(function(data) {
-        deferred.resolve(data);
-      });
-    }
-
-    return deferred.promise;
-  }
 
   function passOneRoleCheck(arr) {
     var hashes = {};

http://git-wip-us.apache.org/repos/asf/ambari/blob/b6cb758b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js
index fbe0ec1..5bc0509 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js
@@ -378,12 +378,7 @@ angular.module('ambariAdminConsole')
   View.deletePrivilege = function(params) {
     return $http({
       method: 'DELETE',
-      url: Settings.baseUrl + '/views/' + params.view_name +'/versions/'+params.version+'/instances/'+params.instance_name+'/privileges',
-      params: {
-        'PrivilegeInfo/principal_type': params.principalType,
-        'PrivilegeInfo/principal_name': params.principalName,
-        'PrivilegeInfo/permission_name': params.permissionName
-      }
+      url: Settings.baseUrl + '/views/' + params.view_name +'/versions/'+params.version+'/instances/'+params.instance_name+'/privileges/'+params.id
     });
   };