solusvm 0.10.1 → 1.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. data/README.markdown +75 -25
  2. data/bin/solusvm +3 -153
  3. data/lib/solusvm/base.rb +17 -10
  4. data/lib/solusvm/cli/base_cli.rb +47 -0
  5. data/lib/solusvm/cli/client_cli.rb +49 -0
  6. data/lib/solusvm/cli/general_cli.rb +28 -0
  7. data/lib/solusvm/cli/node_cli.rb +43 -0
  8. data/lib/solusvm/cli/reseller_cli.rb +73 -0
  9. data/lib/solusvm/cli/server_cli.rb +168 -0
  10. data/lib/solusvm/cli.rb +22 -0
  11. data/lib/solusvm/client.rb +26 -12
  12. data/lib/solusvm/general.rb +25 -17
  13. data/lib/solusvm/node.rb +60 -0
  14. data/lib/solusvm/reseller.rb +72 -0
  15. data/lib/solusvm/server.rb +116 -2
  16. data/lib/solusvm/version.rb +1 -1
  17. data/lib/solusvm.rb +8 -8
  18. data/solusvm.gemspec +3 -0
  19. data/test/cli/test_client_cli.rb +80 -0
  20. data/test/cli/test_general_cli.rb +35 -0
  21. data/test/cli/test_node_cli.rb +64 -0
  22. data/test/cli/test_reseller_cli.rb +139 -0
  23. data/test/cli/test_server_cli.rb +267 -0
  24. data/test/fixtures/client_delete_success.txt +2 -0
  25. data/test/fixtures/client_list_success.txt +14 -0
  26. data/test/fixtures/client_list_success_empty.txt +2 -0
  27. data/test/fixtures/general_isos_success.txt +3 -0
  28. data/test/fixtures/general_node_virtualservers_success.txt +15 -0
  29. data/test/fixtures/general_node_virtualservers_success_empty.txt +2 -0
  30. data/test/fixtures/general_node_xenresources_success.txt +4 -0
  31. data/test/fixtures/general_nodes_ids_success.txt +3 -0
  32. data/test/fixtures/general_plans_success.txt +3 -0
  33. data/test/fixtures/reseller_change_resources_success.txt +16 -0
  34. data/test/fixtures/reseller_create_success.txt +23 -0
  35. data/test/fixtures/reseller_delete_success.txt +2 -0
  36. data/test/fixtures/reseller_info_success.txt +23 -0
  37. data/test/fixtures/reseller_list_success.txt +3 -0
  38. data/test/fixtures/server_bootorder_success.txt +2 -0
  39. data/test/fixtures/server_change_consolepass_success.txt +3 -0
  40. data/test/fixtures/server_change_owner_success.txt +2 -0
  41. data/test/fixtures/server_change_vncpass_success.txt +3 -0
  42. data/test/fixtures/server_console_success.txt +7 -0
  43. data/test/fixtures/server_hostname_success.txt +3 -0
  44. data/test/fixtures/server_mountiso_success.txt +2 -0
  45. data/test/fixtures/server_network_disable_success.txt +2 -0
  46. data/test/fixtures/server_network_enable_success.txt +2 -0
  47. data/test/fixtures/server_pae_success.txt +2 -0
  48. data/test/fixtures/server_rootpassword_success.txt +3 -0
  49. data/test/fixtures/server_status_success.txt +2 -0
  50. data/test/fixtures/server_tun_disable_success.txt +2 -0
  51. data/test/fixtures/server_tun_enable_success.txt +2 -0
  52. data/test/fixtures/server_unmountiso_success.txt +2 -0
  53. data/test/fixtures/server_vnc_success.txt +6 -0
  54. data/test/helper.rb +6 -0
  55. data/test/test_cli.rb +17 -0
  56. data/test/test_client.rb +50 -6
  57. data/test/test_general.rb +24 -48
  58. data/test/test_node.rb +107 -0
  59. data/test/test_reseller.rb +75 -0
  60. data/test/test_server.rb +95 -1
  61. metadata +132 -17
@@ -0,0 +1,168 @@
1
+ module Solusvm
2
+ class ServerCli < BaseCli
3
+
4
+ desc "status VSERVERID", "Checks the status of a server"
5
+ def status(vserverid)
6
+ say server.status(vserverid)
7
+ end
8
+
9
+ desc "info VSERVERID", "Retrieves information from a server"
10
+ def info(vserverid)
11
+ say server.info(vserverid)
12
+ end
13
+
14
+ desc "vnc VSERVERID", "Retrieves vnc information from a server"
15
+ def vnc(vserverid)
16
+ say server.vnc(vserverid)
17
+ end
18
+
19
+ desc "console VSERVERID", "Retrieves console information from a server"
20
+ def console(vserverid)
21
+ say server.console(vserverid)
22
+ end
23
+
24
+ desc "info-all VSERVERID", "Retrieves all availavle information from a server"
25
+ def info_all(vserverid)
26
+ say server.info_all(vserverid)
27
+ end
28
+
29
+ desc "change-plan VSERVERID NEWPLAN", "Changes the plan of a server"
30
+ def change_plan(vserverid, newplan)
31
+ say server.change_plan(vserverid, newplan)
32
+ end
33
+
34
+ desc "change-owner VSERVERID CLIENTID", "Changes the owner of a server"
35
+ def change_owner(vserverid, clientid)
36
+ say server.change_owner(vserverid, clientid)
37
+ end
38
+
39
+ desc "change-consolepass VSERVERID NEWPASSWORD", "Changes the console password of a server"
40
+ def change_consolepass(vserverid, newpassword)
41
+ say server.change_consolepass(vserverid, newpassword)
42
+ end
43
+
44
+ desc "change-vncpass VSERVERID NEWPASSWORD", "Changes the vnc password of a server"
45
+ def change_vncpass(vserverid, newpassword)
46
+ say server.change_vncpass(vserverid, newpassword)
47
+ end
48
+
49
+ desc "change-rootpass VSERVERID NEWPASSWORD", "Changes the root password of a server"
50
+ def change_rootpass(vserverid, newpassword)
51
+ say server.change_rootpassword(vserverid, newpassword)
52
+ end
53
+
54
+ desc "change-bootorder VSERVERID BOOTORDER", "Changes the boot order of a server [cd(Hard Disk CDROM)|dc(CDROM Hard Disk)|c(Hard Disk)|d(CDROM)]"
55
+ def change_bootorder(vserverid, newbootorder)
56
+ say server.change_bootorder(vserverid, newbootorder)
57
+ end
58
+
59
+ desc "change-hostname VSERVERID HOSTNAME", "Changes the hostname of a server"
60
+ def change_hostname(vserverid, newhostname)
61
+ say server.change_hostname(vserverid, newhostname)
62
+ end
63
+
64
+ desc "addip VSERVERID", "Adds an ip to the server"
65
+ def addip(vserverid)
66
+ say server.add_ip(vserverid)
67
+ end
68
+
69
+ desc "boot VSERVERID", "Boots up a server"
70
+ def boot(vserverid)
71
+ say server.boot(vserverid)
72
+ end
73
+
74
+ desc "reboot VSERVERID", "Reboots a server"
75
+ def reboot(vserverid)
76
+ say server.reboot(vserverid)
77
+ end
78
+
79
+ desc "shutdown VSERVERID", "Shuts down a server"
80
+ def shutdown(vserverid)
81
+ say server.shutdown(vserverid)
82
+ end
83
+
84
+ desc "suspend VSERVERID", "Suspends a server"
85
+ def suspend(vserverid)
86
+ say server.suspend(vserverid)
87
+ end
88
+
89
+ desc "resume VSERVERID", "Resumes a server"
90
+ def resume(vserverid)
91
+ say server.resume(vserverid)
92
+ end
93
+
94
+ desc "check-exists VSERVERID", "Checks if a server exists"
95
+ def check_exists(vserverid)
96
+ say server.check_exists(vserverid)
97
+ end
98
+
99
+ desc "terminate VSERVERID", "Terminates a server"
100
+ def terminate(vserverid)
101
+ say server.terminate(vserverid)
102
+ end
103
+
104
+ desc "rebuild VSERVERID", "Rebuilds a server"
105
+ method_option :template, :type => :string, :desc => "VPS template to boot from", :aliases => ["-t", "--template"]
106
+ def rebuild(vserverid)
107
+ say server.rebuild(vserverid, {:template => options[:template]})
108
+ end
109
+
110
+ desc "tun-switcher VSERVERID SWITCH(on|off)", "Enable/Disable TUN/TAP"
111
+ def tun_switcher(vserverid, switch)
112
+ say switch(vserverid, switch, :tun_enable, :tun_disable)
113
+ end
114
+
115
+ desc "network-switcher VSERVERID SWITCH(on|off)", "Enable/Disable Network mode"
116
+ def network_switcher(vserverid, switch)
117
+ say switch(vserverid, switch, :network_enable, :network_disable)
118
+ end
119
+
120
+ desc "pae-switcher VSERVERID SWITCH(on|off)", "Enable/Disable PAE"
121
+ def pae_switcher(vserverid, switch)
122
+ say switch(vserverid, switch, :pae_enable, :pae_disable)
123
+ end
124
+
125
+ desc "mountiso VSERVERID ISO", "Mounts an iso"
126
+ def mountiso(vserverid, iso)
127
+ say server.mountiso(vserverid, iso)
128
+ end
129
+
130
+ desc "unmountiso VSERVERID", "Unmounts an iso"
131
+ def unmountiso(vserverid)
132
+ say server.unmountiso(vserverid)
133
+ end
134
+
135
+ desc "create HOSTNAME PASSWORD", "Creates a new server"
136
+ method_option :plan, :type => :string, :desc => "Plan to use", :aliases => ["-p", "--plan"]
137
+ method_option :ips, :type => :string, :desc => "Number of ips to add to the vps", :aliases => ["-i", "--ips"]
138
+ method_option :kind, :type => :string, :desc => "Type of VPS (#{Solusvm::Server::VALID_SERVER_TYPES.join(',')})", :aliases => ["-k", "--kind"]
139
+ method_option :username, :type => :string, :desc => "The client to put the VPS under", :aliases => ["-u", "--username"]
140
+ method_option :template, :type => :string, :desc => "VPS template to boot from", :aliases => ["-t", "--template"]
141
+ method_option :node, :type => :string, :desc => "Node to provision on", :aliases => ["-n", "--node"]
142
+ def create(hostname, password)
143
+ say server.create(hostname, password, {
144
+ :plan => options[:plan], :ips => options[:ips], :type => options[:kind],
145
+ :username => options[:username], :template => options[:template], :node => options[:node]
146
+ })
147
+ end
148
+
149
+ private
150
+
151
+ def server
152
+ @server ||= begin
153
+ configure
154
+ Solusvm::Server.new
155
+ end
156
+ end
157
+
158
+ def switch(vserverid, switch_value, on_method, off_method)
159
+ if switch_value == "on"
160
+ server.send(on_method, vserverid)
161
+ elsif switch_value == "off"
162
+ server.send(off_method, vserverid)
163
+ else
164
+ "Invalid switch value. Valid values are on|off"
165
+ end
166
+ end
167
+ end
168
+ end
@@ -0,0 +1,22 @@
1
+ require 'solusvm'
2
+ require 'solusvm/cli/base_cli'
3
+ require 'solusvm/cli/server_cli'
4
+ require 'solusvm/cli/node_cli'
5
+ require 'solusvm/cli/general_cli'
6
+ require 'solusvm/cli/reseller_cli'
7
+ require 'solusvm/cli/client_cli'
8
+
9
+ module Solusvm
10
+ class Cli < Thor
11
+ register(ServerCli, 'server', 'server <command>', 'Server commands')
12
+ register(NodeCli, 'node', 'node <command>', 'Node commands')
13
+ register(GeneralCli, 'general', 'general <command>', 'General commands')
14
+ register(ResellerCli, 'reseller', 'reseller <command>', 'Reseller commands')
15
+ register(ClientCli, 'client', 'client <command>', 'Client commands')
16
+
17
+ desc "version", "Outputs the current program version"
18
+ def version
19
+ say Solusvm::VERSION
20
+ end
21
+ end
22
+ end
@@ -1,35 +1,49 @@
1
1
  module Solusvm
2
- # Solusvm::Client is the class for working with clients
2
+ # Solusvm::Client is the class for working with clients.
3
3
  class Client < Base
4
- # Creates a client
4
+ # Creates a client.
5
5
  #
6
6
  # Options:
7
+ #
7
8
  # * <tt>:username</tt>
8
9
  # * <tt>:password</tt>
9
10
  # * <tt>:email</tt>
10
11
  # * <tt>:firstname</tt>
11
12
  # * <tt>:lastname</tt>
13
+ # * <tt>:company</tt>
12
14
  def create(options ={})
13
- options.merge!(:action => 'client-create')
14
- perform_request(options)
15
+ perform_request(options.merge(:action => 'client-create')) && returned_parameters
15
16
  end
16
17
 
17
- # change client password for the solus admin
18
- def change_password(username, password)
19
- perform_request({:action => "client-updatepassword", :username => username, :password => password})
20
- statusmsg.match /success/i
18
+ # Change client password for the solus admin.
19
+ def change_password(username, new_password)
20
+ perform_request({:action => "client-updatepassword", :username => username, :password => new_password})
21
21
  end
22
22
 
23
- # checks wether a specific client exists
23
+ # Checks wether a specific client exists.
24
24
  def exists?(username)
25
25
  perform_request({:action => 'client-checkexists', :username => username})
26
- statusmsg.match /client exists/i
27
26
  end
28
27
 
29
- # Verify a clients login. Returns true when the specified login is correct
28
+ # Verify a clients login. Returns true when the specified login is correct.
30
29
  def authenticate(username, password)
31
30
  perform_request({:action => 'client-authenticate', :username => username, :password => password})
32
- statusmsg.match /validated/i
31
+ end
32
+
33
+ # Deletes an existing client.
34
+ def delete(username)
35
+ perform_request({:action => "client-delete", :username => username})
36
+ end
37
+
38
+ # Lists existing clients.
39
+ def list
40
+ perform_request({:action => "client-list"}, "client")
41
+
42
+ if returned_parameters["clients"] && returned_parameters["clients"]["client"]
43
+ returned_parameters["clients"]["client"]
44
+ elsif returned_parameters["clients"]
45
+ []
46
+ end
33
47
  end
34
48
  end
35
49
  end
@@ -1,30 +1,38 @@
1
1
  module Solusvm
2
+ # Solusvm::General is the class for retrieving general information.
2
3
  class General < Base
3
- def nodes(type)
4
- validate_server_type!(type)
5
- perform_request(:action => 'listnodes', :type => type)
6
- returned_parameters['nodes'].split(',')
7
- end
8
-
4
+
5
+ # Lists available templates.
6
+ #
7
+ # Parameters:
8
+ #
9
+ # * +type+ - a valid virtualization type; e.g: [openvz|xen|xen hvm|kvm]
9
10
  def templates(type)
10
11
  validate_server_type!(type)
11
12
  perform_request(:action => 'listtemplates', :type => type)
12
13
  returned_parameters['templates'].split(',')
13
14
  end
14
15
 
15
- def node_statistics(nodeid)
16
- perform_request(:action => 'node-statistics', :nodeid => nodeid)
17
- returned_parameters
16
+ # Lists available plans.
17
+ #
18
+ # Parameters:
19
+ #
20
+ # * +type+ - a valid virtualization type; e.g: [openvz|xen|xen hvm|kvm]
21
+ def plans(type)
22
+ validate_server_type!(type)
23
+ perform_request(:action => 'listplans', :type => type)
24
+ returned_parameters['plans'].split(',')
18
25
  end
19
26
 
20
- # List a nodes available IPs
21
- def node_available_ips(nodeid)
22
- perform_request(:action => 'node-iplist', :nodeid => nodeid)
23
- if statusmsg.match /no available ip/i
24
- []
25
- else
26
- returned_parameters['ips'].split(',')
27
- end
27
+ # Lists available isos.
28
+ #
29
+ # Parameters:
30
+ #
31
+ # * +type+ - a valid virtualization type; e.g: [openvz|xen|xen hvm|kvm]
32
+ def isos(type)
33
+ validate_server_type!(type)
34
+ perform_request(:action => 'listiso', :type => type)
35
+ returned_parameters['iso'].split(',')
28
36
  end
29
37
  end
30
38
  end
@@ -0,0 +1,60 @@
1
+ module Solusvm
2
+ # Solusvm::Node is the class for working with nodes.
3
+ class Node < Base
4
+
5
+ # Lists existing nodes of a given type.
6
+ #
7
+ # Parameters:
8
+ #
9
+ # * +type+ - a valid virtualization type; e.g: [openvz|xen|xen hvm|kvm]
10
+ def list(type)
11
+ validate_server_type!(type)
12
+ perform_request(:action => 'listnodes', :type => type)
13
+ returned_parameters['nodes'].split(',')
14
+ end
15
+
16
+ # Lists existing nodes ids of a given type.
17
+ #
18
+ # Parameters:
19
+ #
20
+ # * +type+ - a valid virtualization type; e.g: [openvz|xen|xen hvm|kvm]
21
+ def ids(type)
22
+ validate_server_type!(type)
23
+ perform_request(:action => 'node-idlist', :type => type)
24
+ returned_parameters['nodes'].split(',')
25
+ end
26
+
27
+ # Retrieves statistics from a specific node.
28
+ def statistics(nodeid)
29
+ perform_request(:action => 'node-statistics', :nodeid => nodeid)
30
+ returned_parameters
31
+ end
32
+
33
+ # Retrieves available xen resources from a specific node.
34
+ def xenresources(nodeid)
35
+ perform_request(:action => 'node-xenresources', :nodeid => nodeid)
36
+ returned_parameters
37
+ end
38
+
39
+ # Retrieves a list of available IPs for a specific node.
40
+ def available_ips(nodeid)
41
+ perform_request(:action => 'node-iplist', :nodeid => nodeid)
42
+ if statusmsg.match /no available ip/i
43
+ []
44
+ else
45
+ returned_parameters['ips'].split(',')
46
+ end
47
+ end
48
+
49
+ # Lists virtual servers from a specific node.
50
+ def virtualservers(nodeid)
51
+ perform_request({:action => "node-virtualservers", :nodeid => nodeid}, "virtualserver")
52
+
53
+ if returned_parameters["virtualservers"] && returned_parameters["virtualservers"]["virtualserver"]
54
+ returned_parameters["virtualservers"]["virtualserver"]
55
+ elsif returned_parameters["virtualservers"]
56
+ []
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,72 @@
1
+ module Solusvm
2
+ class Reseller < Base
3
+
4
+ # Creates a reseller.
5
+ #
6
+ # Options:
7
+ #
8
+ # * <tt>:username</tt>
9
+ # * <tt>:password</tt>
10
+ # * <tt>:email</tt>
11
+ # * <tt>:firstname</tt>
12
+ # * <tt>:lastname</tt>
13
+ # * <tt>:company</tt> - (optional)
14
+ # * <tt>:usernameprefix</tt> - prefix for reseller client usernames (optional)
15
+ # * <tt>:maxvps</tt> - maximum amount of virtual servers (optional)
16
+ # * <tt>:maxusers</tt> - maximum amount of users (optional)
17
+ # * <tt>:maxmem</tt> - maximum amount memory - (optional)
18
+ # * <tt>:maxburst</tt> - maximum amount of burst memory or swapspace (optional)
19
+ # * <tt>:maxdisk</tt> - maximum amount of diskspace (optional)
20
+ # * <tt>:maxbw</tt> - maximum amount of bandwidth (optional)
21
+ # * <tt>:maxipv4</tt> - maximum amount of ipv4 addresses (optional)
22
+ # * <tt>:maxipv6</tt> - maximum amount of ipv6 addresses (optional)
23
+ # * <tt>:nodegroups</tt> - comma seperated list of node groups (optional)
24
+ # * <tt>:mediagroups</tt> - comma seperated list of media groups (optional)
25
+ # * <tt>:openvz</tt> - y|n Allow building of openvz virtual servers (optional)
26
+ # * <tt>:xenpv</tt> - y|n Allow building of xen pv virtual servers (optional)
27
+ # * <tt>:xenhvm</tt> - y|n Allow building of xen hvm virtual servers (optional)
28
+ # * <tt>:kvm</tt> - y|n Allow building of kvmvirtual servers (optional)
29
+ def create(options ={})
30
+ perform_request(options.merge(:action => 'reseller-create')) && returned_parameters
31
+ end
32
+
33
+ # Changes the available resources for a specific reseller.
34
+ #
35
+ # Options:
36
+ #
37
+ # * <tt>:maxvps</tt> - maximum amount of virtual servers (optional)
38
+ # * <tt>:maxusers</tt> - maximum amount of users (optional)
39
+ # * <tt>:maxmem</tt> - maximum amount memory - (optional)
40
+ # * <tt>:maxburst</tt> - maximum amount of burst memory or swapspace (optional)
41
+ # * <tt>:maxdisk</tt> - maximum amount of diskspace (optional)
42
+ # * <tt>:maxbw</tt> - maximum amount of bandwidth (optional)
43
+ # * <tt>:maxipv4</tt> - maximum amount of ipv4 addresses (optional)
44
+ # * <tt>:maxipv6</tt> - maximum amount of ipv6 addresses (optional)
45
+ # * <tt>:nodegroups</tt> - comma seperated list of node groups (optional)
46
+ # * <tt>:mediagroups</tt> - comma seperated list of media groups (optional)
47
+ # * <tt>:openvz</tt> - y|n Allow building of openvz virtual servers (optional)
48
+ # * <tt>:xenpv</tt> - y|n Allow building of xen pv virtual servers (optional)
49
+ # * <tt>:xenhvm</tt> - y|n Allow building of xen hvm virtual servers (optional)
50
+ # * <tt>:kvm</tt> - y|n Allow building of kvmvirtual servers (optional)
51
+ def change_resources(username, options={})
52
+ perform_request(options.merge(:action => 'reseller-modifyresources', :username => username)) && returned_parameters
53
+ end
54
+
55
+ # Retrieves information from an existing reseller.
56
+ def info(username)
57
+ perform_request({:action => 'reseller-info', :username => username}) && returned_parameters
58
+ end
59
+
60
+ # Deletes an existing reseller.
61
+ def delete(username)
62
+ perform_request({:action => 'reseller-delete', :username => username})
63
+ end
64
+
65
+ # Lists existing resellers.
66
+ def list
67
+ perform_request(:action => 'reseller-list')
68
+ returned_parameters['usernames'].split(',')
69
+ end
70
+
71
+ end
72
+ end
@@ -1,5 +1,25 @@
1
1
  module Solusvm
2
+ # Solusvm::Server is the class for working with servers.
2
3
  class Server < Base
4
+
5
+ # Creates a server.
6
+ #
7
+ # Options:
8
+ #
9
+ # * <tt>:type</tt> - openvz|xen|xen hvm|kvm
10
+ # * <tt>:node</tt> - name of node
11
+ # * <tt>:nodegroup</tt> - name of nodegroup
12
+ # * <tt>:username</tt> - client username
13
+ # * <tt>:plan</tt> - plan name
14
+ # * <tt>:template</tt> - template or iso name
15
+ # * <tt>:ips</tt> - amount of ips
16
+ # * <tt>:hvmt</tt> - 0|1 Default is 0. This allows to define templates & isos for Xen HVM
17
+ # * <tt>:custommemory</tt> - overide plan memory with this amount
18
+ # * <tt>:customdiskspace</tt> - overide plan diskspace with this amount
19
+ # * <tt>:custombandwidth</tt> - overide plan bandwidth with this amount
20
+ # * <tt>:customcpu</tt> - overide plan cpu cores with this amount
21
+ # * <tt>:customextraip</tt> - add this amount of extra ips
22
+ # * <tt>:issuelicense</tt> - 1|2 1 = cPanel monthly 2= cPanel yearly
3
23
  def create(hostname, password, options = {})
4
24
  options.reverse_merge!(
5
25
  :type => 'xen',
@@ -11,64 +31,158 @@ module Solusvm
11
31
  :password => password,
12
32
  :hostname => hostname
13
33
  ).merge!(:action => 'vserver-create')
14
- perform_request(options)
15
- returned_parameters
34
+ perform_request(options) && returned_parameters
16
35
  end
17
36
 
37
+ # Boots a server.
18
38
  def boot(vid)
19
39
  perform_request(:action => 'vserver-boot', :vserverid => vid)
20
40
  end
21
41
 
42
+ # Reboots a server.
22
43
  def reboot(vid)
23
44
  perform_request(:action => 'vserver-reboot', :vserverid => vid)
24
45
  end
25
46
 
47
+ # Suspends a server.
26
48
  def suspend(vid)
27
49
  perform_request(:action => 'vserver-suspend', :vserverid => vid)
28
50
  end
29
51
 
52
+ # Resumes a server.
30
53
  def resume(vid)
31
54
  perform_request(:action => 'vserver-unsuspend', :vserverid => vid)
32
55
  end
33
56
 
57
+ # Shuts down a server.
34
58
  def shutdown(vid)
35
59
  perform_request(:action => 'vserver-shutdown', :vserverid => vid)
36
60
  end
37
61
 
62
+ # Enable TUN/TAP.
63
+ def tun_enable(vid)
64
+ perform_request(:action => 'vserver-tun-enable', :vserverid => vid)
65
+ end
66
+
67
+ # Disable TUN/TAP.
68
+ def tun_disable(vid)
69
+ perform_request(:action => 'vserver-tun-disable', :vserverid => vid)
70
+ end
71
+
72
+ # Enable Network Mode.
73
+ def network_enable(vid)
74
+ perform_request(:action => 'vserver-network-enable', :vserverid => vid)
75
+ end
76
+
77
+ # Disables Network Mode.
78
+ def network_disable(vid)
79
+ perform_request(:action => 'vserver-network-disable', :vserverid => vid)
80
+ end
81
+
82
+ # Enable PAE.
83
+ def pae_enable(vid)
84
+ perform_request(:action => 'vserver-pae', :vserverid => vid, :pae => "on")
85
+ end
86
+
87
+ # Disables PAE.
88
+ def pae_disable(vid)
89
+ perform_request(:action => 'vserver-pae', :vserverid => vid, :pae => "off")
90
+ end
91
+
92
+ # Terminates a server.
38
93
  def terminate(vid, deleteclient = false)
39
94
  perform_request(:action => 'vserver-terminate', :vserverid => vid, :deleteclient => deleteclient)
40
95
  end
41
96
 
97
+ # Checks if a specific server exists.
42
98
  def exists?(vid)
43
99
  perform_request(:action => 'vserver-checkexists', :vserverid => vid)
44
100
  !statusmsg.match(/Virtual server exists/i).nil?
45
101
  end
46
102
 
103
+ # Checks the status of specific server (disabled|online|offline).
47
104
  def status(vid)
48
105
  perform_request(:action => 'vserver-status', :vserverid => vid)
49
106
  statusmsg
50
107
  end
51
108
 
109
+ # Adds an IP address for a specific server.
52
110
  def add_ip(vid)
53
111
  perform_request(:action => 'vserver-addip', :vserverid => vid)
54
112
  end
55
113
 
114
+ # Changes server plan.
56
115
  def change_plan(vid, plan)
57
116
  perform_request(:action => 'vserver-change', :vserverid => vid, :plan => plan)
58
117
  end
59
118
 
119
+ # Changes server owner.
120
+ def change_owner(vid, client_id)
121
+ perform_request(:action => 'vserver-changeowner', :vserverid => vid, :clientid => client_id)
122
+ end
123
+
124
+ # Changes server console password.
125
+ def change_consolepass(vid, new_password)
126
+ perform_request(:action => 'vserver-consolepass', :vserverid => vid, :consolepassword => new_password)
127
+ end
128
+
129
+ # Changes server vnc password.
130
+ def change_vncpass(vid, new_password)
131
+ perform_request(:action => 'vserver-vncpass', :vserverid => vid, :vncpassword => new_password)
132
+ end
133
+
134
+ # Changes server root password.
135
+ def change_rootpassword(vid, new_password)
136
+ perform_request(:action => 'vserver-rootpassword', :vserverid => vid, :rootpassword => new_password)
137
+ end
138
+
139
+ # Changes server boot order [cd(Hard Disk CDROM)|dc(CDROM Hard Disk)|c(Hard Disk)|d(CDROM)].
140
+ def change_bootorder(vid, bootorder)
141
+ perform_request(:action => 'vserver-bootorder', :vserverid => vid, :bootorder => bootorder.to_s)
142
+ end
143
+
144
+ # Changes server hostname.
145
+ def change_hostname(vid, hostname)
146
+ perform_request(:action => 'vserver-hostname', :vserverid => vid, :hostname => hostname)
147
+ end
148
+
149
+ # Retrieves server information.
60
150
  def info(vid, reboot = false)
61
151
  perform_request(:action => 'vserver-info', :vserverid => vid, :reboot => reboot)
62
152
  returned_parameters
63
153
  end
154
+
155
+ # Retrieves server vnc information.
156
+ def vnc(vid)
157
+ perform_request(:action => 'vserver-vnc', :vserverid => vid)
158
+ returned_parameters
159
+ end
160
+
161
+ # Retrieves server console information.
162
+ def console(vid)
163
+ perform_request(:action => 'vserver-console', :vserverid => vid)
164
+ returned_parameters
165
+ end
64
166
 
167
+ # Retrieves all available server information.
65
168
  def info_all(vid)
66
169
  perform_request(:action => 'vserver-infoall', :vserverid => vid)
67
170
  returned_parameters
68
171
  end
69
172
 
173
+ # Rebuilds a server using a given template.
70
174
  def rebuild(vid, template)
71
175
  perform_request(:action => 'vserver-rebuild', :vserverid => vid, :template => template)
72
176
  end
177
+
178
+ # Mounts a given iso.
179
+ def mountiso(vid, iso)
180
+ perform_request(:action => 'vserver-mountiso', :vserverid => vid, :iso => iso)
181
+ end
182
+
183
+ # Unmounts a given iso.
184
+ def unmountiso(vid)
185
+ perform_request(:action => 'vserver-unmountiso', :vserverid => vid)
186
+ end
73
187
  end
74
188
  end
@@ -1,3 +1,3 @@
1
1
  module Solusvm
2
- VERSION = "0.10.1"
2
+ VERSION = "1.0.0.beta"
3
3
  end
data/lib/solusvm.rb CHANGED
@@ -26,11 +26,11 @@ module Solusvm
26
26
  end
27
27
  end
28
28
 
29
- directory = File.expand_path(File.dirname(__FILE__))
30
-
31
- require File.join(directory, 'solusvm', 'exceptions')
32
- require File.join(directory, 'solusvm', 'hash')
33
- require File.join(directory, 'solusvm', 'base')
34
- require File.join(directory, 'solusvm', 'general')
35
- require File.join(directory, 'solusvm', 'client')
36
- require File.join(directory, 'solusvm', 'server')
29
+ require 'solusvm/exceptions'
30
+ require 'solusvm/hash'
31
+ require 'solusvm/base'
32
+ require 'solusvm/general'
33
+ require 'solusvm/client'
34
+ require 'solusvm/server'
35
+ require 'solusvm/reseller'
36
+ require 'solusvm/node'
data/solusvm.gemspec CHANGED
@@ -19,9 +19,12 @@ Gem::Specification.new do |s|
19
19
  s.require_paths = ["lib"]
20
20
 
21
21
  s.add_runtime_dependency 'xml-simple'
22
+ s.add_runtime_dependency 'thor'
22
23
  s.add_runtime_dependency 'jruby-openssl' if RUBY_PLATFORM == 'java'
23
24
 
24
25
  s.add_development_dependency 'redgreen', '~> 1.2.2'
25
26
  s.add_development_dependency 'fakeweb', '~> 1.3.0'
27
+ s.add_development_dependency 'mocha', '~> 0.10.3'
28
+ s.add_development_dependency 'rdoc', '~> 3.12'
26
29
  s.add_development_dependency 'rake', '~> 0.9.2.2'
27
30
  end