module Solusvm
# Solusvm::Server is the class for working with servers.
class Server < Base
# Creates a server.
#
# Options:
#
# * :type - openvz|xen|xen hvm|kvm
# * :node - name of node
# * :nodegroup - name of nodegroup
# * :username - client username
# * :plan - plan name
# * :template - template or iso name
# * :ips - amount of ips
# * :hvmt - 0|1 Default is 0. This allows to define templates & isos for Xen HVM
# * :custommemory - overide plan memory with this amount
# * :customdiskspace - overide plan diskspace with this amount
# * :custombandwidth - overide plan bandwidth with this amount
# * :customcpu - overide plan cpu cores with this amount
# * :customextraip - add this amount of extra ips
# * :issuelicense - 1|2 1 = cPanel monthly 2= cPanel yearly
def create(hostname, password, options = {})
options.reverse_merge!(
:type => 'xen',
:username => nil,
:ips => 1,
:node => nil,
:plan => nil,
:template => nil,
:password => password,
:hostname => hostname
).merge!(:action => 'vserver-create')
perform_request(options) && returned_parameters
end
# Boots a server.
def boot(vid)
perform_request(:action => 'vserver-boot', :vserverid => vid)
end
# Reboots a server.
def reboot(vid)
perform_request(:action => 'vserver-reboot', :vserverid => vid)
end
# Suspends a server.
def suspend(vid)
perform_request(:action => 'vserver-suspend', :vserverid => vid)
end
# Resumes a server.
def resume(vid)
perform_request(:action => 'vserver-unsuspend', :vserverid => vid)
end
# Shuts down a server.
def shutdown(vid)
perform_request(:action => 'vserver-shutdown', :vserverid => vid)
end
# Enable TUN/TAP.
def tun_enable(vid)
perform_request(:action => 'vserver-tun-enable', :vserverid => vid)
end
# Disable TUN/TAP.
def tun_disable(vid)
perform_request(:action => 'vserver-tun-disable', :vserverid => vid)
end
# Enable Network Mode.
def network_enable(vid)
perform_request(:action => 'vserver-network-enable', :vserverid => vid)
end
# Disables Network Mode.
def network_disable(vid)
perform_request(:action => 'vserver-network-disable', :vserverid => vid)
end
# Enable PAE.
def pae_enable(vid)
perform_request(:action => 'vserver-pae', :vserverid => vid, :pae => "on")
end
# Disables PAE.
def pae_disable(vid)
perform_request(:action => 'vserver-pae', :vserverid => vid, :pae => "off")
end
# Terminates a server.
def terminate(vid, deleteclient = false)
perform_request(:action => 'vserver-terminate', :vserverid => vid, :deleteclient => deleteclient)
end
# Checks if a specific server exists.
def exists?(vid)
perform_request(:action => 'vserver-checkexists', :vserverid => vid)
!statusmsg.match(/Virtual server exists/i).nil?
end
# Checks the status of specific server (disabled|online|offline).
def status(vid)
perform_request(:action => 'vserver-status', :vserverid => vid)
statusmsg
end
# Adds an IP address for a specific server.
def add_ip(vid)
perform_request(:action => 'vserver-addip', :vserverid => vid)
end
# Changes server plan.
def change_plan(vid, plan)
perform_request(:action => 'vserver-change', :vserverid => vid, :plan => plan)
end
# Changes server owner.
def change_owner(vid, client_id)
perform_request(:action => 'vserver-changeowner', :vserverid => vid, :clientid => client_id)
end
# Changes server console password.
def change_consolepass(vid, new_password)
perform_request(:action => 'vserver-consolepass', :vserverid => vid, :consolepassword => new_password)
end
# Changes server vnc password.
def change_vncpass(vid, new_password)
perform_request(:action => 'vserver-vncpass', :vserverid => vid, :vncpassword => new_password)
end
# Changes server root password.
def change_rootpassword(vid, new_password)
perform_request(:action => 'vserver-rootpassword', :vserverid => vid, :rootpassword => new_password)
end
# Changes server boot order [cd(Hard Disk CDROM)|dc(CDROM Hard Disk)|c(Hard Disk)|d(CDROM)].
def change_bootorder(vid, bootorder)
perform_request(:action => 'vserver-bootorder', :vserverid => vid, :bootorder => bootorder.to_s)
end
# Changes server hostname.
def change_hostname(vid, hostname)
perform_request(:action => 'vserver-hostname', :vserverid => vid, :hostname => hostname)
end
# Retrieves server information.
def info(vid, reboot = false)
perform_request(:action => 'vserver-info', :vserverid => vid, :reboot => reboot)
returned_parameters
end
# Retrieves server vnc information.
def vnc(vid)
perform_request(:action => 'vserver-vnc', :vserverid => vid)
returned_parameters
end
# Retrieves server console information.
def console(vid)
perform_request(:action => 'vserver-console', :vserverid => vid)
returned_parameters
end
# Retrieves all available server information.
def info_all(vid)
perform_request(:action => 'vserver-infoall', :vserverid => vid)
returned_parameters
end
# Rebuilds a server using a given template.
def rebuild(vid, template)
perform_request(:action => 'vserver-rebuild', :vserverid => vid, :template => template)
end
# Mounts a given iso.
def mountiso(vid, iso)
perform_request(:action => 'vserver-mountiso', :vserverid => vid, :iso => iso)
end
# Unmounts a given iso.
def unmountiso(vid)
perform_request(:action => 'vserver-unmountiso', :vserverid => vid)
end
end
end