diff --git a/src/cli/one_helper.rb b/src/cli/one_helper.rb index 4aebfa9215..7dcc0a8f99 100644 --- a/src/cli/one_helper.rb +++ b/src/cli/one_helper.rb @@ -149,30 +149,14 @@ EOT ######################################################################## # Formatters for arguments ######################################################################## - def to_id(name, pool=nil) + def to_id(name) return 0, name if name.match(/^[0123456789]+$/) user_flag = -2 - pool = pool ? pool : factory_pool(user_flag) + pool = factory_pool(user_flag) + poolname = self.class.rname - rc = pool.info - return -1, rc.message if OpenNebula.is_error?(rc) - - objects=pool.select {|object| object.name==name } - - if objects.length>0 - if objects.length>1 - rname = Object.const_get(self.class.name)::RESOURCE - return -1, "There are multiple #{rname}s with name #{name}." - else - result = objects.first.id - end - else - rname=Object.const_get(self.class.name)::RESOURCE - return -1, "#{rname} named #{name} not found." - end - - return 0, result + id_to_name(name, pool, poolname) end def self.to_id_desc @@ -241,6 +225,25 @@ EOT private + def self.id_to_name(name, pool, ename) + rc = pool.info + return -1, rc.message if OpenNebula.is_error?(rc) + + objects=pool.select {|object| object.name==name } + + if objects.length>0 + if objects.length>1 + return -1, "There are multiple #{ename}s with name #{name}." + else + result = objects.first.id + end + else + return -1, "#{ename} named #{name} not found." + end + + return 0, result + end + def retrieve_resource(id) resource = factory(id) @@ -277,6 +280,21 @@ EOT end end + def OpenNebulaHelper.name_to_id(name, poolname, user_flag=-2) + client = OpenNebula::Client.new + # TBD user_flag + pool = case poolname + when "HOST" then OpenNebula::HostPool.new(client) + when "GROUP" then OpenNebula::GroupPool.new(client) + when "USER" then OpenNebula::UserPool.new(client) + end + + OneHelper.id_to_name(name, pool, poolname) + end + + def OpenNebulaHelper.name_to_id_desc(poolname) + "OpenNebula #{poolname} name or id" + end def OpenNebulaHelper.public_to_str(str) if str.to_i == 1 public_str = "Y" diff --git a/src/cli/oneimage b/src/cli/oneimage index 14f4043882..0e3416b60d 100755 --- a/src/cli/oneimage +++ b/src/cli/oneimage @@ -48,6 +48,14 @@ cmd=CommandParser::CmdParser.new(ARGV) do ######################################################################## # Formatters for arguments ######################################################################## + set :format, :groupid, OpenNebulaHelper.name_to_id_desc("GROUP") do |arg| + OpenNebulaHelper.name_to_id(arg, "GROUP") + end + + set :format, :userid, OpenNebulaHelper.name_to_id_desc("USER") do |arg| + OpenNebulaHelper.name_to_id(arg, "USER") + end + set :format, :imageid, OneImageHelper.to_id_desc do |arg| helper.to_id(arg) end @@ -63,13 +71,13 @@ cmd=CommandParser::CmdParser.new(ARGV) do ######################################################################## # Commands ######################################################################## - command :chgrp, 'Changes the Image group',[:range, :imageid_list], :text do + command :chgrp, 'Changes the Image group',[:range, :imageid_list], :groupid do helper.perform_actions(args[0],options,"User/Group changed") do |image| image.chown(-1, args[1].to_i) end end - command :chown, 'Changes the Image owner and group', [:range, :imageid_list], :text, [:text,nil] do + command :chown, 'Changes the Image owner and group', [:range, :imageid_list], :userid, [:groupid,nil] do gid = args[2].nil? ? -1 : args[2].to_id helper.perform_actions(args[0],options,"Group changed") do |image| image.chown(args[1].to_i, gid) diff --git a/src/cli/onetemplate b/src/cli/onetemplate index 7f630b57bb..39b8e69750 100755 --- a/src/cli/onetemplate +++ b/src/cli/onetemplate @@ -48,6 +48,14 @@ cmd=CommandParser::CmdParser.new(ARGV) do ######################################################################## # Formatters for arguments ######################################################################## + set :format, :groupid, OpenNebulaHelper.name_to_id_desc("GROUP") do |arg| + OpenNebulaHelper.name_to_id(arg, "GROUP") + end + + set :format, :userid, OpenNebulaHelper.name_to_id_desc("USER") do |arg| + OpenNebulaHelper.name_to_id(arg, "USER") + end + set :format, :templateid, OneTemplateHelper.to_id_desc do |arg| helper.to_id(arg) end @@ -63,13 +71,13 @@ cmd=CommandParser::CmdParser.new(ARGV) do ######################################################################## # Commands ######################################################################## - command :chgrp, 'Changes the Template group',[:range, :templateid_list], :text do + command :chgrp, 'Changes the Template group',[:range, :templateid_list], :groupid do helper.perform_actions(args[0],options,"User/Group changed") do |t| t.chown(-1, args[1].to_i) end end - command :chown, 'Changes the Template owner and group', [:range, :templateid_list], :text, [:text,nil] do + command :chown, 'Changes the Template owner and group', [:range, :templateid_list], :userid, [:groupid,nil] do gid = args[2].nil? ? -1 : args[2].to_id helper.perform_actions(args[0],options,"Group changed") do |t| t.chown(args[1].to_i, gid) diff --git a/src/cli/oneuser b/src/cli/oneuser index cb54b37636..17b6e7fd32 100755 --- a/src/cli/oneuser +++ b/src/cli/oneuser @@ -64,6 +64,10 @@ cmd=CommandParser::CmdParser.new(ARGV) do ######################################################################## # Formatters for arguments ######################################################################## + set :format, :groupid, OpenNebulaHelper.name_to_id_desc("GROUP") do |arg| + OpenNebulaHelper.name_to_id(arg, "GROUP") + end + set :format, :userid, OneUserHelper.to_id_desc do |arg| helper.to_id(arg) end @@ -83,7 +87,7 @@ cmd=CommandParser::CmdParser.new(ARGV) do ######################################################################## # Commands ######################################################################## - command :chgrp, 'Changes the User group',[:range, :userid_list], :text do + command :chgrp, 'Changes the User group',[:range, :userid_list], :groupid do helper.perform_actions(args[0],options,"User/Group changed") do |user| user.chown(-1, args[1].to_i) end diff --git a/src/cli/onevm b/src/cli/onevm index 3d6d7bbccb..2ae6a3a67e 100755 --- a/src/cli/onevm +++ b/src/cli/onevm @@ -44,6 +44,18 @@ cmd=CommandParser::CmdParser.new(ARGV) do ######################################################################## # Formatters for arguments ######################################################################## + set :format, :hostid, OpenNebulaHelper.name_to_id_desc("HOST") do |arg| + OpenNebulaHelper.name_to_id(arg, "HOST") + end + + set :format, :groupid, OpenNebulaHelper.name_to_id_desc("GROUP") do |arg| + OpenNebulaHelper.name_to_id(arg, "GROUP") + end + + set :format, :userid, OpenNebulaHelper.name_to_id_desc("USER") do |arg| + OpenNebulaHelper.name_to_id(arg, "USER") + end + set :format, :vmid, OneVMHelper.to_id_desc do |arg| helper.to_id(arg) end @@ -65,13 +77,13 @@ cmd=CommandParser::CmdParser.new(ARGV) do end end - command :chgrp, 'Changes the Virtual Machine group',[:range, :vmid_list], :text do + command :chgrp, 'Changes the Virtual Machine group',[:range, :vmid_list], :groupid do helper.perform_actions(args[0],options,"User/Group changed") do |vm| vm.chown(-1, args[1].to_i) end end - command :chown, 'Changes the Virtual Machine owner and group', [:range, :vmid_list], :text, [:text,nil] do + command :chown, 'Changes the Virtual Machine owner and group', [:range, :vmid_list], :userid, [:groupid,nil] do gid = args[2].nil? ? -1 : args[2].to_id helper.perform_actions(args[0],options,"Group changed") do |vm| vm.chown(args[1].to_i, gid) @@ -92,7 +104,7 @@ cmd=CommandParser::CmdParser.new(ARGV) do end # TBD hostid instead of text in the second argument - command :deploy, 'Deploy a Virtual Machine', [:range,:vmid_list], :text do + command :deploy, 'Deploy a Virtual Machine', [:range,:vmid_list], :hostid do host_id = args[1] verbose = "deploying in host #{host_id}" diff --git a/src/cli/onevnet b/src/cli/onevnet index 8132b4ef67..ca76e7b536 100755 --- a/src/cli/onevnet +++ b/src/cli/onevnet @@ -44,6 +44,14 @@ cmd=CommandParser::CmdParser.new(ARGV) do ######################################################################## # Formatters for arguments ######################################################################## + set :format, :groupid, OpenNebulaHelper.name_to_id_desc("GROUP") do |arg| + OpenNebulaHelper.name_to_id(arg, "GROUP") + end + + set :format, :userid, OpenNebulaHelper.name_to_id_desc("USER") do |arg| + OpenNebulaHelper.name_to_id(arg, "USER") + end + set :format, :vnetid, OneVNetHelper.to_id_desc do |arg| helper.to_id(arg) end @@ -66,13 +74,13 @@ cmd=CommandParser::CmdParser.new(ARGV) do end end - command :chgrp, 'Changes the Virtual Network group',[:range, :vnid_list], :text do + command :chgrp, 'Changes the Virtual Network group',[:range, :vnid_list], :groupid do helper.perform_actions(args[0],options,"User/Group changed") do |vn| vn.chown(-1, args[1].to_i) end end - command :chown, 'Changes the Virtual Network owner and group', [:range, :vnid_list], :text, [:text,nil] do + command :chown, 'Changes the Virtual Network owner and group', [:range, :vnid_list], :userid, [:groupid,nil] do gid = args[2].nil? ? -1 : args[2].to_id helper.perform_actions(args[0],options,"Group changed") do |vn| vn.chown(args[1].to_i, gid)