solusvm 1.2.1 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +0 -5
- data/README.markdown +3 -3
- data/lib/solusvm.rb +0 -22
- data/lib/solusvm/base.rb +37 -8
- data/lib/solusvm/cli/base_cli.rb +10 -10
- data/lib/solusvm/cli/client_cli.rb +8 -9
- data/lib/solusvm/cli/general_cli.rb +2 -3
- data/lib/solusvm/cli/node_cli.rb +2 -3
- data/lib/solusvm/cli/reseller_cli.rb +37 -38
- data/lib/solusvm/cli/server_cli.rb +12 -13
- data/lib/solusvm/client.rb +6 -6
- data/lib/solusvm/general.rb +3 -3
- data/lib/solusvm/node.rb +16 -8
- data/lib/solusvm/reseller.rb +5 -5
- data/lib/solusvm/server.rb +44 -38
- data/lib/solusvm/version.rb +1 -1
- data/solusvm.gemspec +1 -0
- data/test/cli/test_client_cli.rb +13 -19
- data/test/cli/test_general_cli.rb +4 -7
- data/test/cli/test_node_cli.rb +7 -13
- data/test/cli/test_reseller_cli.rb +41 -46
- data/test/cli/test_server_cli.rb +35 -65
- data/test/solusvm/test_base.rb +18 -10
- data/test/solusvm/test_client.rb +11 -12
- data/test/solusvm/test_general.rb +2 -3
- data/test/solusvm/test_hash.rb +4 -4
- data/test/solusvm/test_node.rb +12 -7
- data/test/solusvm/test_reseller.rb +13 -14
- data/test/solusvm/test_server.rb +17 -9
- data/test/test_helper.rb +9 -5
- data/test/vcr_cassettes/base/successful.yml +24 -1
- data/test/vcr_cassettes/base/successful_instance_config.yml +28 -0
- data/test/vcr_cassettes/node/list_groups.yml +20 -0
- data/test/vcr_cassettes/server/add_ip.yml +15 -0
- data/test/vcr_cassettes/server/del_ip.yml +15 -0
- metadata +18 -5
- data/test/test_solusvm.rb +0 -12
data/.travis.yml
CHANGED
data/README.markdown
CHANGED
@@ -15,8 +15,7 @@ Rubinius 2.0, and JRuby 1.6.2.
|
|
15
15
|
Basic Examples
|
16
16
|
--------------
|
17
17
|
|
18
|
-
Solusvm.
|
19
|
-
server = Solusvm::Server.new
|
18
|
+
server = Solusvm::Server.new(api_key: 'key', api_id: 'id', url: 'url')
|
20
19
|
|
21
20
|
# 200 is the id of the virtual server
|
22
21
|
server.shutdown(200) # => true
|
@@ -152,6 +151,7 @@ Contributors
|
|
152
151
|
* [Maran H.](http://github.com/maran)
|
153
152
|
* [Joshua Priddle](http://github.com/itspriddle)
|
154
153
|
* [Vince Stratful](http://github.com/Vincepbell)
|
154
|
+
* [Rubem Nakamura](http://github.com/rubemz)
|
155
155
|
|
156
156
|
Note on Patches/Pull Requests
|
157
157
|
-----------------------------
|
@@ -168,4 +168,4 @@ Note on Patches/Pull Requests
|
|
168
168
|
Copyright
|
169
169
|
---------
|
170
170
|
|
171
|
-
Copyright (c) 2010-
|
171
|
+
Copyright (c) 2010-2013 Site5.com. See LICENSE for details.
|
data/lib/solusvm.rb
CHANGED
@@ -3,28 +3,6 @@ require 'rubygems'
|
|
3
3
|
require 'xmlsimple'
|
4
4
|
require 'faraday'
|
5
5
|
|
6
|
-
module Solusvm
|
7
|
-
class << self
|
8
|
-
attr_accessor :api_endpoint, :api_id, :api_key, :api_options
|
9
|
-
|
10
|
-
# Specifies the login and url for making requests
|
11
|
-
#
|
12
|
-
# example:
|
13
|
-
#
|
14
|
-
# Solusvm.config('id', 'key', :url => 'http://www.example.com/api', :logger => RAILS_LOGGER, :logger_method => :log_info)
|
15
|
-
#
|
16
|
-
# Options:
|
17
|
-
# * <tt>:logger</tt> - Log object used for logging API responses
|
18
|
-
# * <tt>:logger_method</tt> - The method that performs the logging on the Log object
|
19
|
-
def config(api_id, api_key, options={})
|
20
|
-
@api_id = api_id
|
21
|
-
@api_key = api_key
|
22
|
-
@api_endpoint = URI.parse(options.delete(:url))
|
23
|
-
@api_options = options
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
6
|
require 'solusvm/hash'
|
29
7
|
require 'solusvm/base'
|
30
8
|
require 'solusvm/general'
|
data/lib/solusvm/base.rb
CHANGED
@@ -5,6 +5,10 @@ module Solusvm
|
|
5
5
|
|
6
6
|
attr_reader :returned_parameters
|
7
7
|
|
8
|
+
def initialize(config = {})
|
9
|
+
@config = config
|
10
|
+
end
|
11
|
+
|
8
12
|
# Prepares and sends the API request to the URL specificed in Solusvm.config
|
9
13
|
#
|
10
14
|
# class MyClass < Base
|
@@ -20,9 +24,9 @@ module Solusvm
|
|
20
24
|
# <tt>force_array</tt> - see parse_response
|
21
25
|
def perform_request(options = {}, force_array = false)
|
22
26
|
ca_path = File.join(File.dirname(__FILE__), "..", "cacert.pem")
|
23
|
-
ssl = {:
|
27
|
+
ssl = {verify: true, ca_file: File.expand_path(ca_path)}
|
24
28
|
|
25
|
-
response = Faraday.new(:
|
29
|
+
response = Faraday.new(url: api_endpoint, ssl: ssl) do |c|
|
26
30
|
c.params = options.merge(api_login)
|
27
31
|
c.adapter :net_http
|
28
32
|
end.get
|
@@ -74,20 +78,45 @@ module Solusvm
|
|
74
78
|
# my_class.create_server("example.com")
|
75
79
|
# my_class.successful? # => true
|
76
80
|
def successful?
|
77
|
-
returned_parameters["status"] == "success"
|
81
|
+
returned_parameters["status"].nil? || returned_parameters["status"] == "success"
|
78
82
|
end
|
79
83
|
|
80
|
-
#
|
84
|
+
# Returns the API endpoint set in the instance configuration. Otherwise,
|
85
|
+
# it returns the default configuration.
|
86
|
+
#
|
87
|
+
# Returns a String
|
81
88
|
def api_endpoint
|
82
|
-
|
89
|
+
@config.fetch(:url)
|
90
|
+
end
|
91
|
+
|
92
|
+
# Returns the API id set in the instance configuration. Otherwise,
|
93
|
+
# it returns the default configuration.
|
94
|
+
#
|
95
|
+
# Returns a String
|
96
|
+
def api_id
|
97
|
+
@config.fetch(:api_id)
|
98
|
+
end
|
99
|
+
|
100
|
+
# Returns the API key set in the instance configuration. Otherwise,
|
101
|
+
# it returns the default configuration.
|
102
|
+
#
|
103
|
+
# Returns a String
|
104
|
+
def api_key
|
105
|
+
@config.fetch(:api_key)
|
106
|
+
end
|
107
|
+
|
108
|
+
def api_options(option)
|
109
|
+
if options = @config[:options]
|
110
|
+
options[option.to_sym]
|
111
|
+
end
|
83
112
|
end
|
84
113
|
|
85
114
|
def api_login
|
86
|
-
{:
|
115
|
+
{id: api_id, key: api_key}
|
87
116
|
end
|
88
117
|
|
89
118
|
def log_messages(options)
|
90
|
-
logger, logger_method =
|
119
|
+
logger, logger_method = api_options(:logger), api_options(:logger_method)
|
91
120
|
|
92
121
|
if logger && logger.respond_to?(logger_method)
|
93
122
|
logger.send(logger_method, "[Start] => #{options[:action]}")
|
@@ -107,7 +136,7 @@ module Solusvm
|
|
107
136
|
def validate_server_type(type, &block)
|
108
137
|
type = type.strip
|
109
138
|
|
110
|
-
if
|
139
|
+
if VALID_SERVER_TYPES.include?(type)
|
111
140
|
yield
|
112
141
|
else
|
113
142
|
@returned_parameters = {
|
data/lib/solusvm/cli/base_cli.rb
CHANGED
@@ -40,9 +40,9 @@ module Solusvm
|
|
40
40
|
end
|
41
41
|
|
42
42
|
# Default required options
|
43
|
-
class_option :api_login, :
|
44
|
-
class_option :api_key, :
|
45
|
-
class_option :api_url, :
|
43
|
+
class_option :api_login, type: :string, desc: "API ID; Required.", aliases: ["-I", "--api-login"]
|
44
|
+
class_option :api_key, type: :string, desc: "API KEY; Required.", aliases: ["-K", "--api-key"]
|
45
|
+
class_option :api_url, type: :string, desc: "API URL; Required.", aliases: ["-U", "--api-url"]
|
46
46
|
|
47
47
|
no_tasks do
|
48
48
|
def api
|
@@ -63,16 +63,16 @@ module Solusvm
|
|
63
63
|
|
64
64
|
protected
|
65
65
|
|
66
|
-
def
|
67
|
-
|
68
|
-
present_or_exit(:api_login, :id, "api_login required"),
|
69
|
-
present_or_exit(:api_key, :key, "api_key required"),
|
70
|
-
:
|
71
|
-
|
66
|
+
def api_params()
|
67
|
+
{
|
68
|
+
api_id: present_or_exit(:api_login, :id, "api_login required"),
|
69
|
+
api_key: present_or_exit(:api_key, :key, "api_key required"),
|
70
|
+
url: present_or_exit(:api_url, :url, "api_url required")
|
71
|
+
}
|
72
72
|
end
|
73
73
|
|
74
74
|
def present_or_exit(options_key, default_option_key, message)
|
75
75
|
options[options_key] || BaseCli.default_option(default_option_key) || (say(message) && raise(SystemExit))
|
76
76
|
end
|
77
77
|
end
|
78
|
-
end
|
78
|
+
end
|
@@ -2,12 +2,12 @@ module Solusvm
|
|
2
2
|
class ClientCli < BaseCli
|
3
3
|
|
4
4
|
desc "create", "Creates a new h"
|
5
|
-
method_option :username, :
|
6
|
-
method_option :password, :
|
7
|
-
method_option :email, :
|
8
|
-
method_option :firstname, :
|
9
|
-
method_option :lastname, :
|
10
|
-
method_option :company, :
|
5
|
+
method_option :username, type: :string, desc: "Username", aliases: ["-u", "--username"]
|
6
|
+
method_option :password, type: :string, desc: "Password", aliases: ["-p", "--password"]
|
7
|
+
method_option :email, type: :string, desc: "Email", aliases: ["-e", "--email"]
|
8
|
+
method_option :firstname, type: :string, desc: "Firstname", aliases: ["-f", "--firstname"]
|
9
|
+
method_option :lastname, type: :string, desc: "Lastname", aliases: ["-l", "--lastname"]
|
10
|
+
method_option :company, type: :string, desc: "Company", aliases: ["-c", "--company"]
|
11
11
|
def create
|
12
12
|
output api.create(options)
|
13
13
|
end
|
@@ -41,9 +41,8 @@ module Solusvm
|
|
41
41
|
|
42
42
|
def api
|
43
43
|
@client ||= begin
|
44
|
-
|
45
|
-
Solusvm::Client.new
|
44
|
+
Solusvm::Client.new(api_params())
|
46
45
|
end
|
47
46
|
end
|
48
47
|
end
|
49
|
-
end
|
48
|
+
end
|
data/lib/solusvm/cli/node_cli.rb
CHANGED
@@ -2,46 +2,46 @@ module Solusvm
|
|
2
2
|
class ResellerCli < BaseCli
|
3
3
|
|
4
4
|
desc "create", "Creates a new reseller"
|
5
|
-
method_option :username, :
|
6
|
-
method_option :password, :
|
7
|
-
method_option :email, :
|
8
|
-
method_option :firstname, :
|
9
|
-
method_option :lastname, :
|
10
|
-
method_option :company, :
|
11
|
-
method_option :usernameprefix, :
|
12
|
-
method_option :maxvps, :
|
13
|
-
method_option :maxusers, :
|
14
|
-
method_option :maxmem, :
|
15
|
-
method_option :maxburst, :
|
16
|
-
method_option :maxbw, :
|
17
|
-
method_option :maxdisk, :
|
18
|
-
method_option :maxipv4, :
|
19
|
-
method_option :maxipv6, :
|
20
|
-
method_option :nodegroups, :
|
21
|
-
method_option :mediagroups, :
|
22
|
-
method_option :openvz, :
|
23
|
-
method_option :xenpv, :
|
24
|
-
method_option :xenhvm, :
|
25
|
-
method_option :kvm, :
|
5
|
+
method_option :username, type: :string, desc: "Username", aliases: ["-u", "--username"]
|
6
|
+
method_option :password, type: :string, desc: "Password", aliases: ["-p", "--password"]
|
7
|
+
method_option :email, type: :string, desc: "Email", aliases: ["-e", "--email"]
|
8
|
+
method_option :firstname, type: :string, desc: "Firstname", aliases: ["-f", "--firstname"]
|
9
|
+
method_option :lastname, type: :string, desc: "Lastname", aliases: ["-l", "--lastname"]
|
10
|
+
method_option :company, type: :string, desc: "Company", aliases: ["-c", "--company"]
|
11
|
+
method_option :usernameprefix, type: :string, desc: "Prefix for reseller client usernames (optional)", aliases: ["-up", "--usernameprefix"]
|
12
|
+
method_option :maxvps, type: :string, desc: "Maximum amount of virtual servers (optional)", aliases: ["-mvps", "--maxvps"]
|
13
|
+
method_option :maxusers, type: :string, desc: "Maximum amount of users (optional)", aliases: ["-mu", "--maxusers"]
|
14
|
+
method_option :maxmem, type: :string, desc: "Maximum amount of memory (optional)", aliases: ["-mm", "--maxmem"]
|
15
|
+
method_option :maxburst, type: :string, desc: "Maximum amount of burst memory or swapspace (optional)", aliases: ["-mb", "--maxburst"]
|
16
|
+
method_option :maxbw, type: :string, desc: "Maximum amount of bandwith (optional)", aliases: ["-mb", "--maxbw"]
|
17
|
+
method_option :maxdisk, type: :string, desc: "Maximum amount of disk (optional)", aliases: ["-mb", "--maxdisk"]
|
18
|
+
method_option :maxipv4, type: :string, desc: "Maximum amount of ipv4 addresses (optional)", aliases: ["-mipv4", "--maxipv4"]
|
19
|
+
method_option :maxipv6, type: :string, desc: "Maximum amount of ipv6 addresses (optional)", aliases: ["-mipv6", "--maxipv6"]
|
20
|
+
method_option :nodegroups, type: :string, desc: "Comma separated list of node groups (optional)", aliases: ["-ng", "--nodegroups"]
|
21
|
+
method_option :mediagroups, type: :string, desc: "Comma separated list of media groups (optional)", aliases: ["-mg", "--mediagroups"]
|
22
|
+
method_option :openvz, type: :string, desc: "y|n Allow building of openvz virtual servers (optional)", aliases: ["-ovz", "--openvz"]
|
23
|
+
method_option :xenpv, type: :string, desc: "y|n Allow building of xen pv virtual servers (optional)", aliases: ["-xpv", "--xenpv"]
|
24
|
+
method_option :xenhvm, type: :string, desc: "y|n Allow building of xen hvm virtual servers (optional)", aliases: ["-xhvm", "--xenhvm"]
|
25
|
+
method_option :kvm, type: :string, desc: "y|n Allow building of kvmvirtual servers (optional)", aliases: ["-kvm"]
|
26
26
|
def create
|
27
27
|
output api.create(options)
|
28
28
|
end
|
29
29
|
|
30
30
|
desc "change", "Changes the available resources of a reseller"
|
31
|
-
method_option :maxvps, :
|
32
|
-
method_option :maxusers, :
|
33
|
-
method_option :maxmem, :
|
34
|
-
method_option :maxburst, :
|
35
|
-
method_option :maxbw, :
|
36
|
-
method_option :maxdisk, :
|
37
|
-
method_option :maxipv4, :
|
38
|
-
method_option :maxipv6, :
|
39
|
-
method_option :nodegroups, :
|
40
|
-
method_option :mediagroups, :
|
41
|
-
method_option :openvz, :
|
42
|
-
method_option :xenpv, :
|
43
|
-
method_option :xenhvm, :
|
44
|
-
method_option :kvm, :
|
31
|
+
method_option :maxvps, type: :string, desc: "Maximum amount of virtual servers (optional)", aliases: ["-mvps", "--maxvps"]
|
32
|
+
method_option :maxusers, type: :string, desc: "Maximum amount of users (optional)", aliases: ["-mu", "--maxusers"]
|
33
|
+
method_option :maxmem, type: :string, desc: "Maximum amount of memory (optional)", aliases: ["-mm", "--maxmem"]
|
34
|
+
method_option :maxburst, type: :string, desc: "Maximum amount of burst memory or swapspace (optional)", aliases: ["-mb", "--maxburst"]
|
35
|
+
method_option :maxbw, type: :string, desc: "Maximum amount of bandwith (optional)", aliases: ["-mb", "--maxbw"]
|
36
|
+
method_option :maxdisk, type: :string, desc: "Maximum amount of disk (optional)", aliases: ["-mb", "--maxdisk"]
|
37
|
+
method_option :maxipv4, type: :string, desc: "Maximum amount of ipv4 addresses (optional)", aliases: ["-mipv4", "--maxipv4"]
|
38
|
+
method_option :maxipv6, type: :string, desc: "Maximum amount of ipv6 addresses (optional)", aliases: ["-mipv6", "--maxipv6"]
|
39
|
+
method_option :nodegroups, type: :string, desc: "Comma separated list of node groups (optional)", aliases: ["-ng", "--nodegroups"]
|
40
|
+
method_option :mediagroups, type: :string, desc: "Comma separated list of media groups (optional)", aliases: ["-mg", "--mediagroups"]
|
41
|
+
method_option :openvz, type: :string, desc: "y|n Allow building of openvz virtual servers (optional)", aliases: ["-ovz", "--openvz"]
|
42
|
+
method_option :xenpv, type: :string, desc: "y|n Allow building of xen pv virtual servers (optional)", aliases: ["-xpv", "--xenpv"]
|
43
|
+
method_option :xenhvm, type: :string, desc: "y|n Allow building of xen hvm virtual servers (optional)", aliases: ["-xhvm", "--xenhvm"]
|
44
|
+
method_option :kvm, type: :string, desc: "y|n Allow building of kvmvirtual servers (optional)", aliases: ["-kvm"]
|
45
45
|
def change_resources
|
46
46
|
output api.change_resources(options)
|
47
47
|
end
|
@@ -65,9 +65,8 @@ module Solusvm
|
|
65
65
|
|
66
66
|
def api
|
67
67
|
@reseller ||= begin
|
68
|
-
|
69
|
-
Solusvm::Reseller.new
|
68
|
+
Solusvm::Reseller.new(api_params)
|
70
69
|
end
|
71
70
|
end
|
72
71
|
end
|
73
|
-
end
|
72
|
+
end
|
@@ -102,9 +102,9 @@ module Solusvm
|
|
102
102
|
end
|
103
103
|
|
104
104
|
desc "rebuild VSERVERID", "Rebuilds a server"
|
105
|
-
method_option :template, :
|
105
|
+
method_option :template, type: :string, desc: "VPS template to boot from", aliases: ["-t", "--template"]
|
106
106
|
def rebuild(vserverid)
|
107
|
-
output api.rebuild(vserverid, {:
|
107
|
+
output api.rebuild(vserverid, {template: options[:template]})
|
108
108
|
end
|
109
109
|
|
110
110
|
desc "tun-switcher VSERVERID SWITCH(on|off)", "Enable/Disable TUN/TAP"
|
@@ -133,16 +133,16 @@ module Solusvm
|
|
133
133
|
end
|
134
134
|
|
135
135
|
desc "create HOSTNAME PASSWORD", "Creates a new server"
|
136
|
-
method_option :plan, :
|
137
|
-
method_option :ips, :
|
138
|
-
method_option :kind, :
|
139
|
-
method_option :username, :
|
140
|
-
method_option :template, :
|
141
|
-
method_option :node, :
|
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
142
|
def create(hostname, password)
|
143
143
|
output api.create(hostname, password, {
|
144
|
-
:
|
145
|
-
:
|
144
|
+
plan: options[:plan], ips: options[:ips], type: options[:kind],
|
145
|
+
username: options[:username], template: options[:template], node: options[:node]
|
146
146
|
})
|
147
147
|
end
|
148
148
|
|
@@ -150,8 +150,7 @@ module Solusvm
|
|
150
150
|
|
151
151
|
def api
|
152
152
|
@server ||= begin
|
153
|
-
|
154
|
-
Solusvm::Server.new
|
153
|
+
Solusvm::Server.new(api_params)
|
155
154
|
end
|
156
155
|
end
|
157
156
|
|
@@ -165,4 +164,4 @@ module Solusvm
|
|
165
164
|
end
|
166
165
|
end
|
167
166
|
end
|
168
|
-
end
|
167
|
+
end
|
data/lib/solusvm/client.rb
CHANGED
@@ -12,32 +12,32 @@ module Solusvm
|
|
12
12
|
# * <tt>:lastname</tt>
|
13
13
|
# * <tt>:company</tt>
|
14
14
|
def create(options ={})
|
15
|
-
perform_request(options.merge(:
|
15
|
+
perform_request(options.merge(action: 'client-create')) && returned_parameters
|
16
16
|
end
|
17
17
|
|
18
18
|
# Change client password for the solus admin.
|
19
19
|
def change_password(username, new_password)
|
20
|
-
perform_request({:
|
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
|
-
perform_request({:
|
25
|
+
perform_request({action: 'client-checkexists', username: username})
|
26
26
|
end
|
27
27
|
|
28
28
|
# Verify a clients login. Returns true when the specified login is correct.
|
29
29
|
def authenticate(username, password)
|
30
|
-
perform_request({:
|
30
|
+
perform_request({action: 'client-authenticate', username: username, password: password})
|
31
31
|
end
|
32
32
|
|
33
33
|
# Deletes an existing client.
|
34
34
|
def delete(username)
|
35
|
-
perform_request({:
|
35
|
+
perform_request({action: "client-delete", username: username})
|
36
36
|
end
|
37
37
|
|
38
38
|
# Lists existing clients.
|
39
39
|
def list
|
40
|
-
perform_request({:
|
40
|
+
perform_request({action: "client-list"}, "client")
|
41
41
|
|
42
42
|
if returned_parameters["clients"] && returned_parameters["clients"]["client"]
|
43
43
|
returned_parameters["clients"]["client"]
|
data/lib/solusvm/general.rb
CHANGED
@@ -9,7 +9,7 @@ module Solusvm
|
|
9
9
|
# * +type+ - a valid virtualization type; e.g: [openvz|xen|xen hvm|kvm]
|
10
10
|
def templates(type)
|
11
11
|
validate_server_type(type) do
|
12
|
-
perform_request(:
|
12
|
+
perform_request(action: 'listtemplates', type: type)
|
13
13
|
parse_returned_params_as_list('templates')
|
14
14
|
end
|
15
15
|
end
|
@@ -21,7 +21,7 @@ module Solusvm
|
|
21
21
|
# * +type+ - a valid virtualization type; e.g: [openvz|xen|xen hvm|kvm]
|
22
22
|
def plans(type)
|
23
23
|
validate_server_type(type) do
|
24
|
-
perform_request(:
|
24
|
+
perform_request(action: 'listplans', type: type)
|
25
25
|
parse_returned_params_as_list('plans')
|
26
26
|
end
|
27
27
|
end
|
@@ -33,7 +33,7 @@ module Solusvm
|
|
33
33
|
# * +type+ - a valid virtualization type; e.g: [openvz|xen|xen hvm|kvm]
|
34
34
|
def isos(type)
|
35
35
|
validate_server_type(type) do
|
36
|
-
perform_request(:
|
36
|
+
perform_request(action: 'listiso', type: type)
|
37
37
|
parse_returned_params_as_list('iso')
|
38
38
|
end
|
39
39
|
end
|