The following attributes are only needed when creating a new vm
TODO: Add depreciation warning
Can be created by passing in :xml => "<xml to create domain/server>" or by providing :template_options => {
:name => "", :cpus => 1, :memory_size => 256 , :volume_template }
# File lib/fog/libvirt/models/compute/server.rb, line 47 def initialize(attributes={} ) @xml = attributes.delete(:xml) verify_boot_order(attributes[:boot_order]) super defaults.merge(attributes) initialize_nics initialize_volumes end
# File lib/fog/libvirt/models/compute/server.rb, line 84 def destroy(options={ :destroy_volumes => false}) poweroff unless stopped? service.vm_action(uuid, :undefine) volumes.each { |vol| vol.destroy } if options[:destroy_volumes] true end
# File lib/fog/libvirt/models/compute/server.rb, line 80 def disk_path volumes.first.path if volumes and volumes.first end
# File lib/fog/libvirt/models/compute/server.rb, line 76 def mac nics.first.mac if nics && nics.first end
# File lib/fog/libvirt/models/compute/server.rb, line 55 def new? uuid.nil? end
# File lib/fog/libvirt/models/compute/server.rb, line 95 def poweroff service.vm_action(uuid, :destroy) end
# File lib/fog/libvirt/models/compute/server.rb, line 129 def private_ip_address ip_address(:private) end
# File lib/fog/libvirt/models/compute/server.rb, line 133 def public_ip_address ip_address(:public) end
# File lib/fog/libvirt/models/compute/server.rb, line 115 def ready? state == "running" end
# File lib/fog/libvirt/models/compute/server.rb, line 91 def reboot service.vm_action(uuid, :reboot) end
# File lib/fog/libvirt/models/compute/server.rb, line 103 def resume service.vm_action(uuid, :resume) end
# File lib/fog/libvirt/models/compute/server.rb, line 59 def save raise Fog::Errors::Error.new('Saving an existing server may create a duplicate') unless new? create_or_clone_volume unless xml or @volumes @xml ||= to_xml self.id = (persistent ? service.define_domain(xml) : service.create_domain(xml)).uuid reload rescue => e raise Fog::Errors::Error.new("Error saving the server: #{e}") end
Transfers a file
# File lib/fog/libvirt/models/compute/server.rb, line 155 def scp(local_path, remote_path, upload_options = {}) requires :public_ip_address, :username scp_options = {} scp_options[:password] = password unless self.password.nil? scp_options[:key_data] = [private_key] if self.private_key scp_options[:proxy]= ssh_proxy unless self.ssh_proxy.nil? Fog::SCP.new(public_ip_address, username, scp_options).upload(local_path, remote_path, upload_options) end
Sets up a new key
# File lib/fog/libvirt/models/compute/server.rb, line 167 def setup(credentials = {}) requires :public_key, :public_ip_address, :username credentials[:proxy]= ssh_proxy unless ssh_proxy.nil? credentials[:password] = password unless self.password.nil? credentails[:key_data] = [private_key] if self.private_key commands = [ %{mkdir .ssh}, # %{passwd -l #{username}}, #Not sure if we need this here # %{echo "#{Fog::JSON.encode(attributes)}" >> ~/attributes.json} ] if public_key commands << %{echo "#{public_key}" >> ~/.ssh/authorized_keys} end # wait for domain to be ready Timeout::timeout(360) do begin Timeout::timeout(8) do Fog::SSH.new(public_ip_address, username, credentials.merge(:timeout => 4)).run('pwd') end rescue Errno::ECONNREFUSED sleep(2) retry rescue Net::SSH::AuthenticationFailed, Timeout::Error retry end end Fog::SSH.new(public_ip_address, username, credentials).run(commands) end
# File lib/fog/libvirt/models/compute/server.rb, line 99 def shutdown service.vm_action(uuid, :shutdown) end
# File lib/fog/libvirt/models/compute/server.rb, line 137 def ssh(commands) requires :public_ip_address, :username ssh_options={} ssh_options[:password] = password unless password.nil? ssh_options[:proxy]= ssh_proxy unless ssh_proxy.nil? super(commands, ssh_options) end
# File lib/fog/libvirt/models/compute/server.rb, line 147 def ssh_proxy # if this is a direct connection, we don't need a proxy to be set. return nil unless connection.uri.ssh_enabled? user_string= service.uri.user ? "-l #{service.uri.user}" : "" Net::SSH::Proxy::Command.new("ssh #{user_string} #{service.uri.host} nc %h %p") end
# File lib/fog/libvirt/models/compute/server.rb, line 69 def start return true if active? service.vm_action(uuid, :create) reload true end
# File lib/fog/libvirt/models/compute/server.rb, line 111 def stopped? state == "shutoff" end
# File lib/fog/libvirt/models/compute/server.rb, line 107 def suspend service.vm_action(uuid, :suspend) end
# File lib/fog/libvirt/models/compute/server.rb, line 199 def update_display attrs = {} service.update_display attrs.merge(:uuid => uuid) reload end
can't use deprecate method, as the value is part of the display hash
# File lib/fog/libvirt/models/compute/server.rb, line 205 def vnc_port Fog::Logger.deprecation("#{self.class} => #vnc_port is deprecated, use #display[:port] instead [light_black](#{caller.first})[/]") display[:port] end
Generated with the Darkfish Rdoc Generator 2.