1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

F #2287: & #2377 improve %i autoincrement (#2052)

This commit is contained in:
Alejandro Huertas Herrero 2022-05-18 12:53:58 +02:00 committed by GitHub
parent 724e96533e
commit c40f1f11db
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 82 additions and 13 deletions

View File

@ -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

View File

@ -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)