class Chef::Knife::VcVappNetworkInternal
Public Instance Methods
run()
click to toggle source
# File lib/chef/knife/vapp/vc_vapp_network_internal.rb, line 76 def run $stdout.sync = true command_arg = @name_args.shift vapp_arg = @name_args.shift network_arg = @name_args.shift unless command_arg =~ /add|delete|edit/ raise ArgumentError, "Invalid command #{command_arg} supplied. Only add, delete and edit are allowed." end command = command_arg.to_sym config = { :fence_mode => 'isolated' } connection.login vapp = get_vapp(vapp_arg) network = vapp[:networks].select{|n| n[:name] == network_arg }.first unless network if command != :add raise ArgumentError, "Network #{network_arg} not found in vApp, " \ "please use `--add` if you want to add new network." else network = {:name => network_arg} end end unless command == :delete fields = [:gateway, :netmask, :dns1, :dns2, :dns_suffix, :start_address, :end_address, :is_inherited, :retain_network] fields.each do |field| config[field] = locate_config_value(field) if command == :add && config[field].nil? config[field] = ui.ask_question(" #{pretty_symbol(field)}: ") end end parent_network_arg = locate_config_value(:parent_network) if parent_network_arg ui.msg "Retrieving parent network details" parent_network = get_network parent_network_arg config[:parent_network] = { :id => parent_network[:id], :name => parent_network[:name] } end if parent_network && config[:fence_mode] != 'natRouted' ui.info "Setting a parent network for an internal network requires fence mode natRouted. Fixing it..." config[:fence_mode] = 'natRouted' end end case command when :add ui.msg "Adding #{network[:name]} to vApp..." task_id, response = connection.add_internal_network_to_vapp vapp[:id], network, config wait_task(connection, task_id) when :delete ui.msg "Removing #{network[:name]} from vApp..." task_id, response = connection.delete_vapp_network vapp[:id], network wait_task(connection, task_id) when :edit ui.msg "vApp network configuration for #{network[:name]}..." task_id, response = connection.set_vapp_network_config vapp[:id], network, config wait_task(connection, task_id) end connection.logout end