Feature #2124: Template append action in CLI

This commit is contained in:
Carlos Martín committed 2013-06-28 18:45:27 +02:00
1 parent d1e6b4acb2
commit 7df46bb3b0
9 files changed
+102 -38

No files matched your search

+24 -7
View File
@@ -67,6 +67,13 @@ EOT
:description => "Describe list columns"
}
APPEND = {
:name => "append",
:short => "-a",
:large => "--append",
:description => "Append new attributes to the current template"
}
# Command line VM template options
TEMPLATE_NAME_VM={
:name => 'name',
@@ -655,22 +662,32 @@ EOT
end
def OpenNebulaHelper.update_template(id, resource, path=nil, xpath='TEMPLATE')
return update_template_helper(false, id, resource, path=nil, xpath='TEMPLATE')
end
def OpenNebulaHelper.append_template(id, resource, path=nil, xpath='TEMPLATE')
return update_template_helper(true, id, resource, path=nil, xpath='TEMPLATE')
end
def OpenNebulaHelper.update_template_helper(append, id, resource, path=nil, xpath='TEMPLATE')
unless path
require 'tempfile'
tmp = Tempfile.new(id.to_s)
path = tmp.path
rc = resource.info
if !append
rc = resource.info
if OpenNebula.is_error?(rc)
puts rc.message
exit -1
if OpenNebula.is_error?(rc)
puts rc.message
exit -1
end
tmp << resource.template_like_str(xpath)
tmp.flush
end
tmp << resource.template_like_str(xpath)
tmp.flush
editor_path = ENV["EDITOR"] ? ENV["EDITOR"] : EDITOR_PATH
system("#{editor_path} #{path}")
+9 -3
View File
@@ -185,10 +185,16 @@ cmd=CommandParser::CmdParser.new(ARGV) do
be launched to modify the current content.
EOT
command :update, update_desc, :clusterid, [:file, nil] do
command :update, update_desc, :clusterid, [:file, nil],
:options=>OpenNebulaHelper::APPEND do
helper.perform_action(args[0],options,"modified") do |obj|
str = OpenNebulaHelper.update_template(args[0], obj, args[1])
obj.update(str)
if options[:append]
str = OpenNebulaHelper.append_template(args[0], obj, args[1])
else
str = OpenNebulaHelper.update_template(args[0], obj, args[1])
end
obj.update(str, options[:append])
end
end
end
+9 -3
View File
@@ -162,10 +162,16 @@ cmd=CommandParser::CmdParser.new(ARGV) do
be launched to modify the current content.
EOT
command :update, update_desc, :datastoreid, [:file, nil] do
command :update, update_desc, :datastoreid, [:file, nil],
:options=>OpenNebulaHelper::APPEND do
helper.perform_action(args[0],options,"modified") do |obj|
str = OpenNebulaHelper.update_template(args[0], obj, args[1])
obj.update(str)
if options[:append]
str = OpenNebulaHelper.append_template(args[0], obj, args[1])
else
str = OpenNebulaHelper.update_template(args[0], obj, args[1])
end
obj.update(str, options[:append])
end
end
end
+10 -4
View File
@@ -148,10 +148,16 @@ cmd=CommandParser::CmdParser.new(ARGV) do
be launched to modify the current content.
EOT
command :update, update_desc, :hostid, [:file, nil] do
helper.perform_action(args[0],options,"updated") do |host|
str = OpenNebulaHelper.update_template(args[0], host, args[1])
host.update(str)
command :update, update_desc, :hostid, [:file, nil],
:options=>OpenNebulaHelper::APPEND do
helper.perform_action(args[0],options,"updated") do |obj|
if options[:append]
str = OpenNebulaHelper.append_template(args[0], obj, args[1])
else
str = OpenNebulaHelper.update_template(args[0], obj, args[1])
end
obj.update(str, options[:append])
end
end
+10 -4
View File
@@ -212,10 +212,16 @@ cmd=CommandParser::CmdParser.new(ARGV) do
be launched to modify the current content.
EOT
command :update, update_desc, :imageid, [:file, nil] do
helper.perform_action(args[0],options,"modified") do |image|
str = OpenNebulaHelper.update_template(args[0], image, args[1])
image.update(str)
command :update, update_desc, :imageid, [:file, nil],
:options=>OpenNebulaHelper::APPEND do
helper.perform_action(args[0],options,"modified") do |obj|
if options[:append]
str = OpenNebulaHelper.append_template(args[0], obj, args[1])
else
str = OpenNebulaHelper.update_template(args[0], obj, args[1])
end
obj.update(str, options[:append])
end
end
+10 -4
View File
@@ -259,10 +259,16 @@ cmd=CommandParser::CmdParser.new(ARGV) do
be launched to modify the current content.
EOT
command :update, update_desc, :templateid, [:file, nil] do
helper.perform_action(args[0],options,"modified") do |template|
str = OpenNebulaHelper.update_template(args[0], template, args[1])
template.update(str)
command :update, update_desc, :templateid, [:file, nil],
:options=>OpenNebulaHelper::APPEND do
helper.perform_action(args[0],options,"modified") do |obj|
if options[:append]
str = OpenNebulaHelper.append_template(args[0], obj, args[1])
else
str = OpenNebulaHelper.update_template(args[0], obj, args[1])
end
obj.update(str, options[:append])
end
end
+10 -4
View File
@@ -192,10 +192,16 @@ cmd=CommandParser::CmdParser.new(ARGV) do
be launched to modify the current content.
EOT
command :update, update_desc, :userid, [:file, nil] do
helper.perform_action(args[0],options,"modified") do |user|
str = OpenNebulaHelper.update_template(args[0], user, args[1])
user.update(str)
command :update, update_desc, :userid, [:file, nil],
:options=>OpenNebulaHelper::APPEND do
helper.perform_action(args[0],options,"modified") do |obj|
if options[:append]
str = OpenNebulaHelper.append_template(args[0], obj, args[1])
else
str = OpenNebulaHelper.update_template(args[0], obj, args[1])
end
obj.update(str, options[:append])
end
end
+10 -5
View File
@@ -208,11 +208,16 @@ cmd=CommandParser::CmdParser.new(ARGV) do
editor will be launched to modify the current content.
EOT
command :update, update_desc, :vmid, [:file, nil] do
helper.perform_action(args[0],options,"modified") do |vm|
str = OpenNebulaHelper.update_template(args[0], vm, args[1],
'USER_TEMPLATE')
vm.update(str)
command :update, update_desc, :vmid, [:file, nil],
:options=>OpenNebulaHelper::APPEND do
helper.perform_action(args[0],options,"modified") do |obj|
if options[:append]
str = OpenNebulaHelper.append_template(args[0], obj, args[1], 'USER_TEMPLATE')
else
str = OpenNebulaHelper.update_template(args[0], obj, args[1], 'USER_TEMPLATE')
end
obj.update(str, options[:append])
end
end
+10 -4
View File
@@ -199,10 +199,16 @@ cmd=CommandParser::CmdParser.new(ARGV) do
be launched to modify the current content.
EOT
command :update, update_desc, :vnetid, [:file, nil] do
helper.perform_action(args[0],options,"modified") do |vnet|
str = OpenNebulaHelper.update_template(args[0], vnet, args[1])
vnet.update(str)
command :update, update_desc, :vnetid, [:file, nil],
:options=>OpenNebulaHelper::APPEND do
helper.perform_action(args[0],options,"modified") do |obj|
if options[:append]
str = OpenNebulaHelper.append_template(args[0], obj, args[1])
else
str = OpenNebulaHelper.update_template(args[0], obj, args[1])
end
obj.update(str, options[:append])
end
end