diff --git a/src/cli/one_helper/onevrouter_helper.rb b/src/cli/one_helper/onevrouter_helper.rb index 649dcecc84..9d0286e226 100644 --- a/src/cli/one_helper/onevrouter_helper.rb +++ b/src/cli/one_helper/onevrouter_helper.rb @@ -24,6 +24,12 @@ class OneVirtualRouterHelper < OpenNebulaHelper::OneHelper :description => "Show all template data" } + FLOAT = { + :name => "float", + :large => "--float", + :description => "Makes this IP request a Floating one" + } + def self.rname "VROUTER" end diff --git a/src/cli/onevrouter b/src/cli/onevrouter index 20532c1dab..9f3d45aae2 100755 --- a/src/cli/onevrouter +++ b/src/cli/onevrouter @@ -237,10 +237,14 @@ cmd=CommandParser::CmdParser.new(ARGV) do nic_attach_desc = <<-EOT.unindent Attaches a NIC to a VirtualRouter, and each one of its VMs. When using --file add only one NIC instance. + + Note if you are using a HA configuration for this router, --float can be + added. When an IP is requested in HA clusters use --float. EOT command :"nic-attach", nic_attach_desc, :vrouterid, - :options => [OneVMHelper::FILE, OneVMHelper::NETWORK, OneVMHelper::IP] do + :options => [OneVMHelper::FILE, OneVMHelper::NETWORK, OneVMHelper::IP, + OneVirtualRouterHelper::FLOAT] do if options[:file].nil? and options[:network].nil? STDERR.puts "Provide a template file or a network:" @@ -253,12 +257,20 @@ cmd=CommandParser::CmdParser.new(ARGV) do template = File.read(options[:file]) else network_id = options[:network] - ip = options[:ip] + ip = options[:ip] + float = options[:float] + + template = "NIC = [ NETWORK_ID = #{network_id}" + if ip - template = "NIC = [ NETWORK_ID = #{network_id}, IP = #{ip} ]" - else - template = "NIC = [ NETWORK_ID = #{network_id} ]" + template += ", IP = #{ip}" end + + if float + template += ", FLOATING_IP =\"yes\"" + end + + template += " ]" end helper.perform_action(args[0],options,"Attach NIC") do |vr|