diff --git a/src/sunstone/models/SunstoneServer.rb b/src/sunstone/models/SunstoneServer.rb index 0ed284f9a7..9e56959a3f 100644 --- a/src/sunstone/models/SunstoneServer.rb +++ b/src/sunstone/models/SunstoneServer.rb @@ -56,22 +56,26 @@ class SunstoneServer ############################################################################ # ############################################################################ - def get_pool(kind) - user_flag = -2 + def get_pool(kind,gid) pool = case kind when "group" then GroupPoolJSON.new(@client) when "host" then HostPoolJSON.new(@client) - when "image" then ImagePoolJSON.new(@client, user_flag) - when "template" then TemplatePoolJSON.new(@client, user_flag) - when "vm" then VirtualMachinePoolJSON.new(@client, user_flag) - when "vnet" then VirtualNetworkPoolJSON.new(@client, user_flag) + when "image" then ImagePoolJSON.new(@client) + when "template" then TemplatePoolJSON.new(@client) + when "vm" then VirtualMachinePoolJSON.new(@client) + when "vnet" then VirtualNetworkPoolJSON.new(@client) when "user" then UserPoolJSON.new(@client) else error = Error.new("Error: #{kind} resource not supported") return [404, error.to_json] end - rc = pool.info + rc = case kind + when "group","host","user" then pool.info + else + gid != "0" ? pool.info_group : pool.info_all + end + if OpenNebula.is_error?(rc) return [500, rc.to_json] else diff --git a/src/sunstone/public/js/opennebula.js b/src/sunstone/public/js/opennebula.js index 6c9d1a3c0b..dab77dd8a3 100644 --- a/src/sunstone/public/js/opennebula.js +++ b/src/sunstone/public/js/opennebula.js @@ -1645,12 +1645,12 @@ var OpenNebula = { } } }); - }, - - "chown": function(params) - { - OpenNebula.Helper.chown(params,OpenNebula.Group.resource,"group"); } + + // "chown": function(params) + // { + // OpenNebula.Helper.chown(params,OpenNebula.Group.resource,"group"); + // } }, "User": { @@ -1824,67 +1824,6 @@ var OpenNebula = { var action = OpenNebula.Helper.action(method, {"group_id": gid}); var request = OpenNebula.Helper.request(OpenNebula.User.resource,method, [id, gid]); - $.ajax({ - url: "user/" + id + "/action", - type: "POST", - data: JSON.stringify(action), - success: function() - { - if (callback) - { - callback(request); - } - }, - error: function(response) - { - if (callback_error) - { - callback_error(request, OpenNebula.Error(response)); - } - } - }); - }, - - "addgroup" : function(params){ - var callback = params.success; - var callback_error = params.error; - var id = params.data.id; - var gid = params.data.extra_param; - - var method = "addgroup"; - var action = OpenNebula.Helper.action(method, {"group_id": gid}); - var request = OpenNebula.Helper.request(OpenNebula.User.resource,method, [id, gid]); - - $.ajax({ - url: "user/" + id + "/action", - type: "POST", - data: JSON.stringify(action), - success: function() - { - if (callback) - { - callback(request); - } - }, - error: function(response) - { - if (callback_error) - { - callback_error(request, OpenNebula.Error(response)); - } - } - }); - }, - "delgroup" : function(params){ - var callback = params.success; - var callback_error = params.error; - var id = params.data.id; - var gid = params.data.extra_param; - - var method = "delgroup"; - var action = OpenNebula.Helper.action(method, {"group_id": gid}); - var request = OpenNebula.Helper.request(OpenNebula.User.resource,method, [id, gid]); - $.ajax({ url: "user/" + id + "/action", type: "POST", @@ -1905,6 +1844,67 @@ var OpenNebula = { } }); } + + // "addgroup" : function(params){ + // var callback = params.success; + // var callback_error = params.error; + // var id = params.data.id; + // var gid = params.data.extra_param; + + // var method = "addgroup"; + // var action = OpenNebula.Helper.action(method, {"group_id": gid}); + // var request = OpenNebula.Helper.request(OpenNebula.User.resource,method, [id, gid]); + + // $.ajax({ + // url: "user/" + id + "/action", + // type: "POST", + // data: JSON.stringify(action), + // success: function() + // { + // if (callback) + // { + // callback(request); + // } + // }, + // error: function(response) + // { + // if (callback_error) + // { + // callback_error(request, OpenNebula.Error(response)); + // } + // } + // }); + // }, + // "delgroup" : function(params){ + // var callback = params.success; + // var callback_error = params.error; + // var id = params.data.id; + // var gid = params.data.extra_param; + + // var method = "delgroup"; + // var action = OpenNebula.Helper.action(method, {"group_id": gid}); + // var request = OpenNebula.Helper.request(OpenNebula.User.resource,method, [id, gid]); + + // $.ajax({ + // url: "user/" + id + "/action", + // type: "POST", + // data: JSON.stringify(action), + // success: function() + // { + // if (callback) + // { + // callback(request); + // } + // }, + // error: function(response) + // { + // if (callback_error) + // { + // callback_error(request, OpenNebula.Error(response)); + // } + // } + // }); + // } }, "Image": { diff --git a/src/sunstone/public/js/plugins/dashboard-tab.js b/src/sunstone/public/js/plugins/dashboard-tab.js index 4e5f8e7503..08914d197b 100644 --- a/src/sunstone/public/js/plugins/dashboard-tab.js +++ b/src/sunstone/public/js/plugins/dashboard-tab.js @@ -99,7 +99,7 @@ var dashboard_tab_content =

Quickstart

\
\
\ - \ + \ Host
\ Group
\ VM Template
\ diff --git a/src/sunstone/public/js/plugins/dashboard-users-tab.js b/src/sunstone/public/js/plugins/dashboard-users-tab.js index f1306f9514..e54ce3f8e0 100644 --- a/src/sunstone/public/js/plugins/dashboard-users-tab.js +++ b/src/sunstone/public/js/plugins/dashboard-users-tab.js @@ -81,7 +81,7 @@ var dashboard_tab_content =

Quickstart

\
\ \ \ \ - \ + \ \ \ \ @@ -93,7 +93,7 @@ var user_actions = { error: onError }); }, - condition: function(){ uid == 0 }, + condition: True, notify: false }, @@ -108,27 +108,27 @@ var user_actions = { notify: true }, - "User.addgroup" : { - type: "multiple", - call: OpenNebula.User.addgroup, - callback : function(req){ - Sunstone.runAction("User.show",req.request.data[0]); - }, - elements : function() {return getSelectedNodes(dataTable_users);}, - error: onError, - notify: true - }, + // "User.addgroup" : { + // type: "multiple", + // call: OpenNebula.User.addgroup, + // callback : function(req){ + // Sunstone.runAction("User.show",req.request.data[0]); + // }, + // elements : function() {return getSelectedNodes(dataTable_users);}, + // error: onError, + // notify: true + // }, - "User.delgroup" : { - type: "multiple", - call: OpenNebula.User.delgroup, - callback : function(req){ - Sunstone.runAction("User.show",req.request.data[0]); - }, - elements : function() {return getSelectedNodes(dataTable_users);}, - error: onError, - notify: true - }, + // "User.delgroup" : { + // type: "multiple", + // call: OpenNebula.User.delgroup, + // callback : function(req){ + // Sunstone.runAction("User.show",req.request.data[0]); + // }, + // elements : function() {return getSelectedNodes(dataTable_users);}, + // error: onError, + // notify: true + // }, "User.show" : { type: "single", @@ -161,25 +161,25 @@ var user_buttons = { }, "User.chgrp" : { type: "confirm_with_select", - text: "Change main group", + text: "Change group", select: function(){ return groups_select; }, tip: "This will change the main group of the selected users. Select the new group:", condition: True }, - "User.addgroup" : { - type: "confirm_with_select", - text: "Add to group", - select: function(){ return groups_select; }, - tip: "Select the new group to add users:", - condition: True - }, - "User.delgroup" : { - type: "confirm_with_select", - text: "Delete from group", - select: function(){ return groups_select; }, - tip: "Select the group from which to delete users:", - condition: True - }, + // "User.addgroup" : { + // type: "confirm_with_select", + // text: "Add to group", + // select: function(){ return groups_select; }, + // tip: "Select the new group to add users:", + // condition: True + // }, + // "User.delgroup" : { + // type: "confirm_with_select", + // text: "Delete from group", + // select: function(){ return groups_select; }, + // tip: "Select the group from which to delete users:", + // condition: True + // }, "User.delete" : { type: "action", text: "Delete", @@ -191,7 +191,7 @@ var users_tab = { title: "Users", content: users_tab_content, buttons: user_buttons, - condition: function(){ return uid == 0; } + condition: True } Sunstone.addActions(user_actions); @@ -201,52 +201,12 @@ Sunstone.addMainTab('users_tab',users_tab); // added to the dataTable function userElementArray(user_json){ var user = user_json.USER; - if (!user.NAME || user.NAME == {}){ - name = ""; - } else { - name = user.NAME; - } - - var groups_str=""; - if (user.GROUPS.ID.constructor == Array){ //several groups - for (var i=0; i< user.GROUPS.ID.length; i++){ - groups_str+=getGroupName(user.GROUPS.ID[i])+', '; - }; - groups_str = groups_str.slice(0,-2); - } else { //one group - groups_str = getGroupName(user.GROUPS.ID); - }; - - // var groups_full_str=getGroupName(user.GID)+", "; - // var group_field; - - // if (user.GROUPS.ID){ - // $.each(user.GROUPS.ID,function() { - // if (i<=5) { - // groups_str+=getGroupName(this)+", "; - // }; - // groups_full_str+=getGroupName(this)+", "; - // i++; - // }); - // if (i>0){ - // groups_str = groups_str.slice(0, -2); - // groups_full_str = groups_str.slice(0, -2); - // }; - // if (i>5){ - // groups_str+="..."; - // group_field = '
'+groups_str+'
'; - // } else { - // group_field=groups_str; - // }; - // } - - return [ '', user.ID, - name, - groups_str + user.NAME, + user.GNAME ] } @@ -305,7 +265,7 @@ function setupCreateUserDialog(){ $('#create_user_form').submit(function(){ var user_name=$('#username',this).val(); var user_password=$('#pass',this).val(); - if (!user_name.length && !user_password.length){ + if (!user_name.length || !user_password.length){ notifyError("User name and password must be filled in"); return false; } @@ -337,30 +297,29 @@ function setUserAutorefresh(){ $(document).ready(function(){ //if we are not oneadmin, our tab will not even be in the DOM. - if (uid==0) { - dataTable_users = $("#datatable_users").dataTable({ - "bJQueryUI": true, - "bSortClasses": false, - "sPaginationType": "full_numbers", - "bAutoWidth":false, - "aoColumnDefs": [ - { "bSortable": false, "aTargets": ["check"] }, - { "sWidth": "60px", "aTargets": [0] }, - { "sWidth": "35px", "aTargets": [1] } - ] - }); - dataTable_users.fnClearTable(); - addElement([ - spinner, - '','',''],dataTable_users); + dataTable_users = $("#datatable_users").dataTable({ + "bJQueryUI": true, + "bSortClasses": false, + "sPaginationType": "full_numbers", + "bAutoWidth":false, + "aoColumnDefs": [ + { "bSortable": false, "aTargets": ["check"] }, + { "sWidth": "60px", "aTargets": [0] }, + { "sWidth": "35px", "aTargets": [1] } + ] + }); + dataTable_users.fnClearTable(); + addElement([ + spinner, + '','',''],dataTable_users); - Sunstone.runAction("User.list"); + Sunstone.runAction("User.list"); - setupCreateUserDialog(); - setUserAutorefresh(); + setupCreateUserDialog(); + setUserAutorefresh(); + + initCheckAllBoxes(dataTable_users); + tableCheckboxesListener(dataTable_users); + shortenedInfoFields('#datatable_users'); - initCheckAllBoxes(dataTable_users); - tableCheckboxesListener(dataTable_users); - shortenedInfoFields('#datatable_users'); - } }) diff --git a/src/sunstone/public/js/plugins/vms-tab.js b/src/sunstone/public/js/plugins/vms-tab.js index 035423e7ec..6d9089ff04 100644 --- a/src/sunstone/public/js/plugins/vms-tab.js +++ b/src/sunstone/public/js/plugins/vms-tab.js @@ -419,7 +419,7 @@ var vm_buttons = { text: "Change owner", select: function() {return users_select;}, tip: "Select the new owner:", - condition: True + condition: function() { return gid == 0; } }, "VM.chgrp" : { @@ -427,7 +427,7 @@ var vm_buttons = { text: "Change group", select: function() {return groups_select;}, tip: "Select the new group:", - condition: True + condition: function() { return gid == 0; } }, "VM.shutdown" : { diff --git a/src/sunstone/public/js/plugins/vnets-tab.js b/src/sunstone/public/js/plugins/vnets-tab.js index 8658d833fb..be5e3f96f2 100644 --- a/src/sunstone/public/js/plugins/vnets-tab.js +++ b/src/sunstone/public/js/plugins/vnets-tab.js @@ -264,7 +264,7 @@ var vnet_buttons = { text: "Change owner", select: function() {return users_select;}, tip: "Select the new owner:", - condition: True + condition: function() { return gid == 0; } }, "Network.chgrp" : { @@ -272,7 +272,7 @@ var vnet_buttons = { text: "Change group", select: function() {return groups_select;}, tip: "Select the new group:", - condition: True + condition: function() { return gid == 0; } }, "Network.delete" : { diff --git a/src/sunstone/public/js/sunstone.js b/src/sunstone/public/js/sunstone.js index 7aa658c361..02d808c99d 100644 --- a/src/sunstone/public/js/sunstone.js +++ b/src/sunstone/public/js/sunstone.js @@ -374,9 +374,10 @@ function readCookie(){ //sets the user info in the top bar and creates a listner in the //signout button function setLogin(){ - //This two variables can be used anywhere + //This variables can be used anywhere username = cookie["one-user"]; uid = cookie["one-user_id"]; + gid = cookie["one-user_gid"]; $("#user").html(username); $("#logout").click(function(){ diff --git a/src/sunstone/sunstone-server.rb b/src/sunstone/sunstone-server.rb index 5c63fc18ac..010b62d64f 100755 --- a/src/sunstone/sunstone-server.rb +++ b/src/sunstone/sunstone-server.rb @@ -137,6 +137,9 @@ get '/' do response.set_cookie("one-user_id", :value=>"#{session[:user_id]}", :expires=>time) + response.set_cookie("one-user_gid", + :value=>"#{session[:user_gid]}", + :expires=>time) p = SunstonePlugins.new @plugins = p.authorized_plugins(session[:user], session[:user_gname]) @@ -187,7 +190,7 @@ end # GET Pool information ############################################################################## get '/:pool' do - @SunstoneServer.get_pool(params[:pool]) + @SunstoneServer.get_pool(params[:pool],session[:user_gid]) end ##############################################################################
\ - \ + \ VM Template
\ VM Instance
\ Virtual Network
\ diff --git a/src/sunstone/public/js/plugins/groups-tab.js b/src/sunstone/public/js/plugins/groups-tab.js index e78b0870b2..6caec7c306 100644 --- a/src/sunstone/public/js/plugins/groups-tab.js +++ b/src/sunstone/public/js/plugins/groups-tab.js @@ -107,14 +107,14 @@ var group_actions = { notify:true }, - "Group.chown" : { - type: "multiple", - call : OpenNebula.Group.chown, - callback : updateGroupElement, - elements: function() { return getSelectedNodes(dataTable_groups); }, - error : onError, - notify:true - }, + // "Group.chown" : { + // type: "multiple", + // call : OpenNebula.Group.chown, + // callback : updateGroupElement, + // elements: function() { return getSelectedNodes(dataTable_groups); }, + // error : onError, + // notify:true + // }, } @@ -130,13 +130,13 @@ var group_buttons = { text: "+ New Group", condition : True }, - "Group.chown" : { - type: "confirm_with_select", - text: "Change group owner", - select: function(){return users_select}, - tip: "Select the new group owner:", - condition : True - }, + // "Group.chown" : { + // type: "confirm_with_select", + // text: "Change group owner", + // select: function(){return users_select}, + // tip: "Select the new group owner:", + // condition : True + // }, "Group.delete" : { type: "action", diff --git a/src/sunstone/public/js/plugins/images-tab.js b/src/sunstone/public/js/plugins/images-tab.js index 343f345fc5..88726fcb37 100644 --- a/src/sunstone/public/js/plugins/images-tab.js +++ b/src/sunstone/public/js/plugins/images-tab.js @@ -359,14 +359,14 @@ var image_buttons = { text: "Change owner", select: function() {return users_select;}, tip: "Select the new owner:", - condition: True + condition: function() { return gid == 0; } }, "Image.chgrp" : { type: "confirm_with_select", text: "Change group", select: function() {return groups_select;}, tip: "Select the new group:", - condition: True + condition: function() { return gid == 0; } }, "action_list" : { type: "select", diff --git a/src/sunstone/public/js/plugins/templates-tab.js b/src/sunstone/public/js/plugins/templates-tab.js index 51646f88cd..48661607e2 100644 --- a/src/sunstone/public/js/plugins/templates-tab.js +++ b/src/sunstone/public/js/plugins/templates-tab.js @@ -711,14 +711,14 @@ var template_buttons = { text: "Change owner", select: function() {return users_select;}, tip: "Select the new owner:", - condition: True + condition: function(){return gid==0;} }, "Template.chgrp" : { type: "confirm_with_select", text: "Change group", select: function() {return groups_select;}, tip: "Select the new group:", - condition: True + condition: function(){return gid==0;} }, "action_list" : { type: "select", diff --git a/src/sunstone/public/js/plugins/users-tab.js b/src/sunstone/public/js/plugins/users-tab.js index dc8f568dfc..d36105e279 100644 --- a/src/sunstone/public/js/plugins/users-tab.js +++ b/src/sunstone/public/js/plugins/users-tab.js @@ -29,7 +29,7 @@ var users_tab_content =
AllIDNameGroupsGroup