diff --git a/src/cli/onetemplate b/src/cli/onetemplate index ce8240405e..5ece5998df 100755 --- a/src/cli/onetemplate +++ b/src/cli/onetemplate @@ -87,6 +87,14 @@ CommandParser::CmdParser.new(ARGV) do :description => 'lock all actions' } + PREFIX = { + :name => 'prefix', + :large => '--prefix prefix', + :description => 'Prefix to autogenerate name, e.g: 001, 01', + :format => String + + } + ######################################################################## # Global Options ######################################################################## @@ -102,7 +110,8 @@ CommandParser::CmdParser.new(ARGV) do OneTemplateHelper::MULTIPLE, OneTemplateHelper::USERDATA, OneVMHelper::HOLD, - OneTemplateHelper::PERSISTENT + OneTemplateHelper::PERSISTENT, + PREFIX ] ######################################################################## @@ -252,16 +261,37 @@ CommandParser::CmdParser.new(ARGV) do number = options[:multiple] || 1 user_inputs = options[:user_inputs] - number.times do |i| - exit_code = helper.perform_action(args[0], options, - 'instantiated') do |t| - name = options[:name] - name = name.gsub('%i', i.to_s) if name + number.times.each_with_index do |i, index| + exit_code = helper.perform_action( + args[0], + options, + 'instantiated' + ) do |t| + name = options[:name] + prefix = options[:prefix] + c_i = nil + p = nil - on_hold = !options[:hold].nil? + if prefix && name + # Get leading zeros + p = prefix.scan(/^0+/)[0] + # Get current index + c_i = prefix.gsub(p, '') if p + + # Convert it to Integer to check if we can use it + begin + c_i = Integer(c_i) + name = name.gsub('%i', "#{p}#{c_i + index}") + rescue StandardError + end + elsif name + name = name.gsub('%i', i.to_s) + end + + on_hold = !options[:hold].nil? extra_template = '' - rc = t.info + rc = t.info if OpenNebula.is_error?(rc) STDERR.puts rc.message @@ -281,6 +311,10 @@ CommandParser::CmdParser.new(ARGV) do extra_template = res.last end + if c_i + extra_template.gsub!('%i', "#{p}#{c_i + index}") + end + if !user_inputs user_inputs = OneTemplateHelper.get_user_inputs(t.to_hash) else diff --git a/src/cli/onevntemplate b/src/cli/onevntemplate index 1fb67e3b3e..9aeb809780 100755 --- a/src/cli/onevntemplate +++ b/src/cli/onevntemplate @@ -87,6 +87,14 @@ CommandParser::CmdParser.new(ARGV) do :description => 'lock all actions' } + PREFIX = { + :name => 'prefix', + :large => '--prefix prefix', + :description => 'Prefix to autogenerate name, e.g: 001, 01', + :format => String + + } + ######################################################################## # Global Options ######################################################################## @@ -102,7 +110,8 @@ CommandParser::CmdParser.new(ARGV) do OneVNTemplateHelper::MULTIPLE, OneVNTemplateHelper::EXTENDED, OpenNebulaHelper::AS_USER, - OpenNebulaHelper::AS_GROUP + OpenNebulaHelper::AS_GROUP, + PREFIX ] ######################################################################## @@ -204,10 +213,32 @@ CommandParser::CmdParser.new(ARGV) do number = options[:multiple] || 1 number.times do |i| - exit_code = helper.perform_action(args[0], options, - 'instantiated') do |t| - name = options[:name] - name = name.gsub('%i', i.to_s) if name + exit_code = helper.perform_action( + args[0], + options, + 'instantiated' + ) do |t| + name = options[:name] + prefix = options[:prefix] + c_i = nil + p = nil + + if prefix && name + # Get leading zeros + p = prefix.scan(/^0+/)[0] + + # Get current index + c_i = prefix.gsub(p, '') if p + + # Convert it to Integer to check if we can use it + begin + c_i = Integer(c_i) + name = name.gsub('%i', "#{p}#{c_i + index}") + rescue StandardError + end + elsif name + name = name.gsub('%i', i.to_s) + end extra_template = '' rc = t.info @@ -234,6 +265,10 @@ CommandParser::CmdParser.new(ARGV) do end end + if c_i + extra_template.gsub!('%i', "#{p}#{c_i + index}") + end + res = t.instantiate(name, extra_template) if !OpenNebula.is_error?(res)