class Chef::Knife::VcVmNetwork
Public Instance Methods
run()
click to toggle source
# File lib/chef/knife/vm/vc_vm_network.rb, line 47 def run $stdout.sync = true command_arg = @name_args.shift vm_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 = { :network_index => locate_config_value(:vm_net_index), :ip => locate_config_value(:vm_net_ip), :is_connected => locate_config_value(:vm_net_is_connected), :ip_allocation_mode => locate_config_value(:vm_ip_allocation_mode), :retain_network => locate_config_value(:retain_network) } connection.login vm = get_vm(vm_arg) network = get_network network_arg unless network raise new ArgumentError, "Network #{network_arg} not found in vDC." end unless command == :delete 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] } else ui.msg "Forcing parent network to itself" config[:parent_network] = { :id => network[:id], :name => network[:name] } end end ui.msg "VM network configuration..." stop_if_running(connection, vm) case command when :add ui.msg "Adding #{network[:name]} to VM..." task_id, response = connection.add_vm_network vm[:id], network, config result = wait_task(connection, task_id) when :delete ui.msg "Removing #{network[:name]} from VM..." task_id, response = connection.delete_vm_network vm[:id], network result = wait_task(connection, task_id) when :edit ui.msg "VM network configuration for #{network[:name]}..." task_id, response = connection.edit_vm_network vm[:id], network, config result = wait_task(connection, task_id) end if result unless vm[:guest_customizations][:enabled] config = { :enabled => true, :admin_passwd_enabled => vm[:guest_customizations][:admin_passwd_enabled], :admin_passwd => vm[:guest_customizations][:admin_passwd], :customization_script => script } ui.msg "Enabling Guest Customization to apply changes..." task_id, response = connection.set_vm_guest_customization vm[:id], guest_name, config wait_task(connection, task_id) end ui.msg "Forcing Guest Customization to apply changes..." task_id = connection.force_customization_vm vm[:id] wait_task(connection, task_id) end connection.logout end