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.
- data/README.markdown +75 -25
- data/bin/solusvm +3 -153
- data/lib/solusvm/base.rb +17 -10
- data/lib/solusvm/cli/base_cli.rb +47 -0
- data/lib/solusvm/cli/client_cli.rb +49 -0
- data/lib/solusvm/cli/general_cli.rb +28 -0
- data/lib/solusvm/cli/node_cli.rb +43 -0
- data/lib/solusvm/cli/reseller_cli.rb +73 -0
- data/lib/solusvm/cli/server_cli.rb +168 -0
- data/lib/solusvm/cli.rb +22 -0
- data/lib/solusvm/client.rb +26 -12
- data/lib/solusvm/general.rb +25 -17
- data/lib/solusvm/node.rb +60 -0
- data/lib/solusvm/reseller.rb +72 -0
- data/lib/solusvm/server.rb +116 -2
- data/lib/solusvm/version.rb +1 -1
- data/lib/solusvm.rb +8 -8
- data/solusvm.gemspec +3 -0
- data/test/cli/test_client_cli.rb +80 -0
- data/test/cli/test_general_cli.rb +35 -0
- data/test/cli/test_node_cli.rb +64 -0
- data/test/cli/test_reseller_cli.rb +139 -0
- data/test/cli/test_server_cli.rb +267 -0
- data/test/fixtures/client_delete_success.txt +2 -0
- data/test/fixtures/client_list_success.txt +14 -0
- data/test/fixtures/client_list_success_empty.txt +2 -0
- data/test/fixtures/general_isos_success.txt +3 -0
- data/test/fixtures/general_node_virtualservers_success.txt +15 -0
- data/test/fixtures/general_node_virtualservers_success_empty.txt +2 -0
- data/test/fixtures/general_node_xenresources_success.txt +4 -0
- data/test/fixtures/general_nodes_ids_success.txt +3 -0
- data/test/fixtures/general_plans_success.txt +3 -0
- data/test/fixtures/reseller_change_resources_success.txt +16 -0
- data/test/fixtures/reseller_create_success.txt +23 -0
- data/test/fixtures/reseller_delete_success.txt +2 -0
- data/test/fixtures/reseller_info_success.txt +23 -0
- data/test/fixtures/reseller_list_success.txt +3 -0
- data/test/fixtures/server_bootorder_success.txt +2 -0
- data/test/fixtures/server_change_consolepass_success.txt +3 -0
- data/test/fixtures/server_change_owner_success.txt +2 -0
- data/test/fixtures/server_change_vncpass_success.txt +3 -0
- data/test/fixtures/server_console_success.txt +7 -0
- data/test/fixtures/server_hostname_success.txt +3 -0
- data/test/fixtures/server_mountiso_success.txt +2 -0
- data/test/fixtures/server_network_disable_success.txt +2 -0
- data/test/fixtures/server_network_enable_success.txt +2 -0
- data/test/fixtures/server_pae_success.txt +2 -0
- data/test/fixtures/server_rootpassword_success.txt +3 -0
- data/test/fixtures/server_status_success.txt +2 -0
- data/test/fixtures/server_tun_disable_success.txt +2 -0
- data/test/fixtures/server_tun_enable_success.txt +2 -0
- data/test/fixtures/server_unmountiso_success.txt +2 -0
- data/test/fixtures/server_vnc_success.txt +6 -0
- data/test/helper.rb +6 -0
- data/test/test_cli.rb +17 -0
- data/test/test_client.rb +50 -6
- data/test/test_general.rb +24 -48
- data/test/test_node.rb +107 -0
- data/test/test_reseller.rb +75 -0
- data/test/test_server.rb +95 -1
- 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
|
data/lib/solusvm/cli.rb
ADDED
@@ -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
|
data/lib/solusvm/client.rb
CHANGED
@@ -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
|
14
|
-
perform_request(options)
|
15
|
+
perform_request(options.merge(:action => 'client-create')) && returned_parameters
|
15
16
|
end
|
16
17
|
|
17
|
-
#
|
18
|
-
def change_password(username,
|
19
|
-
perform_request({:action => "client-updatepassword", :username => username, :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
|
-
#
|
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
|
-
|
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
|
data/lib/solusvm/general.rb
CHANGED
@@ -1,30 +1,38 @@
|
|
1
1
|
module Solusvm
|
2
|
+
# Solusvm::General is the class for retrieving general information.
|
2
3
|
class General < Base
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
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
|
-
|
16
|
-
|
17
|
-
|
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
|
-
#
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
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
|
data/lib/solusvm/node.rb
ADDED
@@ -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
|
data/lib/solusvm/server.rb
CHANGED
@@ -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
|
data/lib/solusvm/version.rb
CHANGED
data/lib/solusvm.rb
CHANGED
@@ -26,11 +26,11 @@ module Solusvm
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
require
|
32
|
-
require
|
33
|
-
require
|
34
|
-
require
|
35
|
-
require
|
36
|
-
require
|
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
|