solusvm 0.10.1 → 1.0.0.beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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