Repository: ambari Updated Branches: refs/heads/branch-2.2 7e61c66f4 -> 2588ab393
AMBARI-14753. Capsched view: The view does not show the effective permissions of a queue. (Akhil PB via dipayanb) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/2588ab39 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/2588ab39 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/2588ab39 Branch: refs/heads/branch-2.2 Commit: 2588ab3931d7f5b3e455dbd1f66fa541d6e12698 Parents: 7e61c66 Author: Dipayan Bhowmick <[email protected]> Authored: Fri Feb 26 12:59:17 2016 +0530 Committer: Dipayan Bhowmick <[email protected]> Committed: Fri Feb 26 13:00:10 2016 +0530 ---------------------------------------------------------------------- .../main/resources/ui/app/controllers/queue.js | 72 ++++++++++++++++++++ .../resources/ui/app/styles/application.less | 6 +- .../main/resources/ui/app/templates/queue.hbs | 62 ++++++++++++++++- 3 files changed, 137 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/2588ab39/contrib/views/capacity-scheduler/src/main/resources/ui/app/controllers/queue.js ---------------------------------------------------------------------- diff --git a/contrib/views/capacity-scheduler/src/main/resources/ui/app/controllers/queue.js b/contrib/views/capacity-scheduler/src/main/resources/ui/app/controllers/queue.js index 521b473..6d58e6d 100644 --- a/contrib/views/capacity-scheduler/src/main/resources/ui/app/controllers/queue.js +++ b/contrib/views/capacity-scheduler/src/main/resources/ui/app/controllers/queue.js @@ -244,6 +244,78 @@ App.QueueController = Ember.ObjectController.extend({ */ asa_anyone:Ember.computed.equal('acl_submit_applications', '*'), + /** + * Returns effective permission of the current queue to perform administrative functions on this queue. + */ + aaq_effective_permission: function(key, value){ + return this.getEffectivePermission('acl_administer_queue'); + }.property('content.acl_administer_queue'), + + /** + * Returns effective permission of the current queue to submit application. + */ + asa_effective_permission: function(key, value){ + return this.getEffectivePermission('acl_submit_applications'); + }.property('content.acl_submit_applications'), + + /** + * Returns effective permission of the current queue. + */ + getEffectivePermission: function(permissionType){ + var effectivePermission, + users = [], + groups = [], + currentPermissions = this.getPermissions(permissionType); + for(var i = 0; i < currentPermissions.length; i++){ + var permission = currentPermissions[i]; + if (permission === '*') { + return '*'; + } else if (permission.trim() === '') { + effectivePermission = ''; + } else { + var usersAndGroups = permission.split(' '); + this.fillUsersAndGroups(users, usersAndGroups[0]); + if (usersAndGroups.length === 2) { + this.fillUsersAndGroups(groups, usersAndGroups[1]); + } + } + } + if(users.length > 0 || groups.length > 0){ + effectivePermission = users.join(',') + ' ' + groups.join(','); + } + return effectivePermission; + }, + + /** + * Removes duplicate users or groups. + */ + fillUsersAndGroups: function(usersOrGroups, list){ + var splitted = list.split(','); + splitted.forEach(function(item){ + if(usersOrGroups.indexOf(item) === -1){ + usersOrGroups.push(item); + } + }); + }, + + /** + * Returns array of permissions from root to leaf. + */ + getPermissions: function(permissionType){ + var currentQ = this.get('content'), + permissions = []; + while (currentQ != null) { + if (currentQ.get(permissionType) !== null) { + permissions.push(currentQ.get(permissionType)); + } else { + permissions.push('*'); + } + currentQ = this.store.getById('queue', currentQ.get('parentPath').toLowerCase()); + } + permissions.reverse();//root permission at the 0th position. + return permissions; + }, + /** * Error messages for queue path. * @type {Array} http://git-wip-us.apache.org/repos/asf/ambari/blob/2588ab39/contrib/views/capacity-scheduler/src/main/resources/ui/app/styles/application.less ---------------------------------------------------------------------- diff --git a/contrib/views/capacity-scheduler/src/main/resources/ui/app/styles/application.less b/contrib/views/capacity-scheduler/src/main/resources/ui/app/styles/application.less index c0acf4f..69fb96f 100644 --- a/contrib/views/capacity-scheduler/src/main/resources/ui/app/styles/application.less +++ b/contrib/views/capacity-scheduler/src/main/resources/ui/app/styles/application.less @@ -707,6 +707,10 @@ opacity: 0.4; } } + .hz-divider { + border-bottom: 1px solid #ddd; + margin: 15px 5px 15px 5px; + } } } @@ -864,4 +868,4 @@ .tooltip-label span:first-child { cursor: help; -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ambari/blob/2588ab39/contrib/views/capacity-scheduler/src/main/resources/ui/app/templates/queue.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/capacity-scheduler/src/main/resources/ui/app/templates/queue.hbs b/contrib/views/capacity-scheduler/src/main/resources/ui/app/templates/queue.hbs index 15550d1..bff1e4e 100644 --- a/contrib/views/capacity-scheduler/src/main/resources/ui/app/templates/queue.hbs +++ b/contrib/views/capacity-scheduler/src/main/resources/ui/app/templates/queue.hbs @@ -106,6 +106,8 @@ </div> </div> + <div class="hz-divider"></div> + {{#if isOperator}} <div class="form-group row"> @@ -132,9 +134,23 @@ <div class="form-group row"> {{tooltip-label + tagName='small' + class="col-lg-4 col-xs-4 control-label" + label='Effective Administraters' + message='The effective permissions to perform administrative functions on this queue.' + }} + <div class="col-lg-6 col-md-6 col-sm-8 col-xs-7 control-value"> + <label>{{escapeACL aaq_effective_permission}}</label> + </div> + </div> + + <div class="hz-divider"></div> + + <div class="form-group row"> + {{tooltip-label class="col-lg-4 col-xs-4 control-label" label='Submit Applications' - message='The access control list of users and groups that have authorizatioN to submit applications to this queue.' + message='The access control list of users and groups that have authorization to submit applications to this queue.' }} <div class="col-lg-6 col-md-6 col-sm-8 col-xs-7 control-value"> <div class="btn-group btn-group-xs" data-toggle="buttons"> @@ -152,6 +168,18 @@ {{user-group-input ug=content.acl_submit_applications disabled=asa_anyone}} {{/unless}} + <div class="form-group row"> + {{tooltip-label + tagName='small' + class="col-lg-4 col-xs-4 control-label" + label='Effective Users' + message='The effective permissions to submit applications to this queue.' + }} + <div class="col-lg-6 col-md-6 col-sm-8 col-xs-7 control-value"> + <label>{{escapeACL asa_effective_permission}}</label> + </div> + </div> + {{else}} <div class="form-group"> {{tooltip-label @@ -166,11 +194,27 @@ </div> </div> + <div class="form-group row"> + {{tooltip-label + tagName='small' + class="col-lg-4 col-xs-4 control-label" + label='Effective Administraters' + message='The effective permissions to perform administrative functions on this queue.' + }} + <div class="col-lg-8 col-xs-8 control-value"> + <p class="form-control-static"> + {{escapeACL aaq_effective_permission}} + </p> + </div> + </div> + + <div class="hz-divider"></div> + <div class="form-group"> {{tooltip-label class="col-lg-4 col-xs-4 control-label" label='Submit Applications' - message='The access control list of users and groups that have authorizatioN to submit applications to this queue.' + message='The access control list of users and groups that have authorization to submit applications to this queue.' }} <div class="col-lg-8 col-xs-8 control-value"> <p class="form-control-static"> @@ -178,6 +222,20 @@ </p> </div> </div> + + <div class="form-group row"> + {{tooltip-label + tagName='small' + class="col-lg-4 col-xs-4 control-label" + label='Effective Users' + message='The effective permissions to submit applications to this queue.' + }} + <div class="col-lg-8 col-xs-8 control-valu"> + <p class="form-control-static"> + {{escapeACL asa_effective_permission}} + </p> + </div> + </div> {{/if}} </form> </div>
