From 8a8eb5b2f0880b1a9fa441169d15ba2df488e564 Mon Sep 17 00:00:00 2001 From: Tino Vazquez Date: Tue, 18 Mar 2014 19:15:17 +0100 Subject: [PATCH] Fix wrong error codes from group creation --- src/cli/one_helper/onegroup_helper.rb | 15 ++++---- src/oca/ruby/opennebula/group.rb | 27 +++++++------- src/sunstone/public/js/plugins/groups-tab.js | 37 ++++++++++++++++++-- 3 files changed, 56 insertions(+), 23 deletions(-) diff --git a/src/cli/one_helper/onegroup_helper.rb b/src/cli/one_helper/onegroup_helper.rb index 5462861aa4..a1b062dfa4 100644 --- a/src/cli/one_helper/onegroup_helper.rb +++ b/src/cli/one_helper/onegroup_helper.rb @@ -50,17 +50,14 @@ class OneGroupHelper < OpenNebulaHelper::OneHelper def create_complete_resource(group_hash) group = factory - exit_code , msg = group.create(group_hash) + rc = group.create(group_hash) - puts msg if msg && !msg.empty? - - if (exit_code.class==Fixnum and exit_code < 0) or OpenNebula.is_error?(exit_code) - puts exit_code.message if OpenNebula.is_error?(exit_code) && exit_code.message - return -1 - else - puts "ID: #{group.id}" - return 0 + if OpenNebula.is_error?(rc) + return -1, rc.message end + + puts "ID: #{group.id}" + return 0 end def format_pool(options) diff --git a/src/oca/ruby/opennebula/group.rb b/src/oca/ruby/opennebula/group.rb index 798400825e..0091fa613a 100644 --- a/src/oca/ruby/opennebula/group.rb +++ b/src/oca/ruby/opennebula/group.rb @@ -89,24 +89,25 @@ module OpenNebula # def create(group_hash) # Check arguments - return -1, "Group name not defined" if !group_hash[:name] + if !group_hash[:name] + return OpenNebula::Error.new("Group name not defined") + end if group_hash[:user] if group_hash[:user][:name] and !group_hash[:admin_group] - return -1, "Admin user defined but not admin group" + error_msg = "Admin user defined but not admin group" + return OpenNebula::Error.new(error_msg) end if group_hash[:user][:name] and !group_hash[:user][:password] - return -1, "Admin user password not defined" + error_msg = "Admin user password not defined" + return OpenNebula::Error.new(error_msg) end end # Allocate group rc = self.allocate(group_hash[:name]) - - if OpenNebula.is_error?(rc) - return -1, "Error allocating group: #{rc.message}" - end + return rc if OpenNebula.is_error?(rc) # Handle resource providers group_hash[:resource_providers].each { |rp| @@ -123,8 +124,8 @@ module OpenNebula rc, msg = create_default_acls(group_hash[:resources]) if OpenNebula.is_error?(rc) - self.delete - return -1, "Error creating group ACL's: #{rc.message}" + error_msg = "Error creating group ACL's: #{rc.message}" + return OpenNebula::Error.new(error_msg) end # Create associated admin group if needed @@ -132,15 +133,17 @@ module OpenNebula if OpenNebula.is_error?(rc) self.delete - return -1, "Error creating admin group: #{rc.message}" + error_msg = "Error creating admin group: #{rc.message}" + return OpenNebula::Error.new(error_msg) end # Add default Sunstone views for the group if group_hash[:views] - self.update("SUNSTONE_VIEWS=\"#{group_hash[:views].join(",")}\"\n") + str = "SUNSTONE_VIEWS=\"#{group_hash[:views].join(",")}\"\n" + self.update(str) end - return 0, "" + return 0 end # Allocates a new Group in OpenNebula diff --git a/src/sunstone/public/js/plugins/groups-tab.js b/src/sunstone/public/js/plugins/groups-tab.js index b1b071f555..f617e77813 100644 --- a/src/sunstone/public/js/plugins/groups-tab.js +++ b/src/sunstone/public/js/plugins/groups-tab.js @@ -42,6 +42,7 @@ var create_group_tmpl = '
\
\

'+tr("Create Group")+'

\ +

'+tr("Update Group")+'

\
\
\
\ @@ -170,6 +171,7 @@ var create_group_tmpl = \ @@ -208,7 +210,7 @@ var group_actions = { notifyCustom(tr("Group created"), " ID: " + response.GROUP.ID, false); }, error : onError - }, + }, "Group.create_dialog" : { type: "custom", @@ -264,6 +266,11 @@ var group_actions = { error: onError }, + "Group.update_dialog" : { + type: "single", + call: popUpUpdateGroupDialog + }, + "Group.delete" : { type: "multiple", call : OpenNebula.Group.del, @@ -379,6 +386,11 @@ var group_buttons = { layout: "create", condition: mustBeAdmin }, + "Group.update_dialog" : { + type : "action", + layout: "main", + text : tr("Update") + }, "Group.quotas_dialog" : { type : "action", text : tr("Quotas"), @@ -390,7 +402,7 @@ var group_buttons = { text: tr("Delete"), layout: "del", condition: mustBeAdmin - } + }, }; var group_info_panel = { @@ -1290,6 +1302,27 @@ function setupCreateGroupDialog(){ function popUpCreateGroupDialog(){ $create_group_dialog.foundation().foundation('reveal', 'open'); $("input#name",$create_group_dialog).focus(); + + // Activate create button + $('#create_group_submit',$create_group_dialog).show(); + $('#update_group_submit',$create_group_dialog).hide(); + $('#create_group_header',$create_group_dialog).show(); + $('#update_group_header',$create_group_dialog).hide(); + + return false; +} + +function popUpUpdateGroupDialog(){ + $create_group_dialog.foundation().foundation('reveal', 'open'); + + // Activate update button + $('#create_group_submit',$create_group_dialog).hide(); + $('#update_group_submit',$create_group_dialog).show(); + $('#create_group_header',$create_group_dialog).hide(); + $('#update_group_header',$create_group_dialog).show(); + + // Remove unwanted tabs (only leave ) + return false; }