solusvm 1.0.0.beta3 → 1.1.0.beta1

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 (155) hide show
  1. data/.gitignore +3 -0
  2. data/.travis.yml +10 -4
  3. data/LICENSE +1 -1
  4. data/README.markdown +1 -1
  5. data/lib/solusvm.rb +2 -2
  6. data/lib/solusvm/base.rb +10 -32
  7. data/lib/solusvm/cli/base_cli.rb +30 -5
  8. data/lib/solusvm/cli/client_cli.rb +9 -9
  9. data/lib/solusvm/cli/general_cli.rb +5 -5
  10. data/lib/solusvm/cli/node_cli.rb +8 -8
  11. data/lib/solusvm/cli/reseller_cli.rb +7 -7
  12. data/lib/solusvm/cli/server_cli.rb +31 -31
  13. data/lib/solusvm/solusvm_errors.rb +22 -0
  14. data/lib/solusvm/version.rb +1 -1
  15. data/solusvm.gemspec +2 -0
  16. data/test/cli/test_base_cli.rb +32 -0
  17. data/test/cli/test_client_cli.rb +38 -21
  18. data/test/cli/test_general_cli.rb +13 -4
  19. data/test/cli/test_node_cli.rb +28 -14
  20. data/test/cli/test_reseller_cli.rb +69 -58
  21. data/test/cli/test_server_cli.rb +128 -39
  22. data/test/solusvm/test_base.rb +103 -0
  23. data/test/{test_cli.rb → solusvm/test_cli.rb} +1 -1
  24. data/test/solusvm/test_client.rb +109 -0
  25. data/test/solusvm/test_general.rb +69 -0
  26. data/test/{test_hash.rb → solusvm/test_hash.rb} +1 -1
  27. data/test/solusvm/test_node.rb +120 -0
  28. data/test/solusvm/test_reseller.rb +93 -0
  29. data/test/solusvm/test_server.rb +253 -0
  30. data/test/{helper.rb → test_helper.rb} +19 -4
  31. data/test/test_solusvm.rb +1 -1
  32. data/test/vcr_cassettes/base/invalid_key.yml +19 -0
  33. data/test/vcr_cassettes/base/invalid_status.yml +19 -0
  34. data/test/vcr_cassettes/base/nonexistent_node.yml +19 -0
  35. data/test/vcr_cassettes/base/parse_response.yml +28 -0
  36. data/test/vcr_cassettes/base/statusmsg.yml +28 -0
  37. data/test/vcr_cassettes/base/successful.yml +45 -0
  38. data/test/vcr_cassettes/base/unauthorized_ip.yml +19 -0
  39. data/test/vcr_cassettes/client/authenticate.yml +37 -0
  40. data/test/vcr_cassettes/client/change_password.yml +39 -0
  41. data/test/vcr_cassettes/client/create.yml +42 -0
  42. data/test/vcr_cassettes/client/delete.yml +37 -0
  43. data/test/vcr_cassettes/client/exists.yml +20 -0
  44. data/test/vcr_cassettes/client/list.yml +66 -0
  45. data/test/vcr_cassettes/general/isos.yml +38 -0
  46. data/test/vcr_cassettes/general/plans.yml +38 -0
  47. data/test/vcr_cassettes/general/templates.yml +38 -0
  48. data/test/vcr_cassettes/node/available_ips.yml +41 -0
  49. data/test/vcr_cassettes/node/ids.yml +21 -0
  50. data/test/vcr_cassettes/node/list.yml +38 -0
  51. data/test/vcr_cassettes/node/statistics.yml +32 -0
  52. data/test/vcr_cassettes/node/virtualservers.yml +67 -0
  53. data/test/vcr_cassettes/node/xenresources.yml +22 -0
  54. data/test/vcr_cassettes/reseller/change_resources.yml +27 -0
  55. data/test/vcr_cassettes/reseller/create.yml +27 -0
  56. data/test/vcr_cassettes/reseller/delete.yml +15 -0
  57. data/test/vcr_cassettes/reseller/info.yml +27 -0
  58. data/test/vcr_cassettes/reseller/list.yml +27 -0
  59. data/test/vcr_cassettes/server/.yml +1017 -0
  60. data/test/vcr_cassettes/server/boot.yml +15 -0
  61. data/test/vcr_cassettes/server/change_bootorder.yml +15 -0
  62. data/test/vcr_cassettes/server/change_consolepass.yml +16 -0
  63. data/test/vcr_cassettes/server/change_hostname.yml +15 -0
  64. data/test/vcr_cassettes/server/change_owner.yml +15 -0
  65. data/test/vcr_cassettes/server/change_plan.yml +15 -0
  66. data/test/vcr_cassettes/server/change_rootpassword.yml +15 -0
  67. data/test/vcr_cassettes/server/change_vncpass.yml +15 -0
  68. data/test/vcr_cassettes/server/console.yml +15 -0
  69. data/test/vcr_cassettes/server/create.yml +27 -0
  70. data/test/vcr_cassettes/server/exists.yml +15 -0
  71. data/test/vcr_cassettes/server/info.yml +27 -0
  72. data/test/vcr_cassettes/server/info_all.yml +15 -0
  73. data/test/vcr_cassettes/server/mountiso.yml +15 -0
  74. data/test/vcr_cassettes/server/network_disable.yml +15 -0
  75. data/test/vcr_cassettes/server/network_enable.yml +15 -0
  76. data/test/vcr_cassettes/server/pae_disable.yml +15 -0
  77. data/test/vcr_cassettes/server/pae_enable.yml +15 -0
  78. data/test/vcr_cassettes/server/reboot.yml +15 -0
  79. data/test/vcr_cassettes/server/rebuild.yml +15 -0
  80. data/test/vcr_cassettes/server/resume.yml +15 -0
  81. data/test/vcr_cassettes/server/shutdown.yml +15 -0
  82. data/test/vcr_cassettes/server/status.yml +15 -0
  83. data/test/vcr_cassettes/server/suspend.yml +15 -0
  84. data/test/vcr_cassettes/server/terminate.yml +27 -0
  85. data/test/vcr_cassettes/server/tun_disable.yml +15 -0
  86. data/test/vcr_cassettes/server/tun_enable.yml +15 -0
  87. data/test/vcr_cassettes/server/unmountiso.yml +15 -0
  88. data/test/vcr_cassettes/server/vnc.yml +15 -0
  89. metadata +220 -156
  90. data/.rbenv-version +0 -1
  91. data/.rvmrc +0 -47
  92. data/test/fixtures/base_bad_key.txt +0 -1
  93. data/test/fixtures/base_node_does_not_exist.txt +0 -1
  94. data/test/fixtures/base_unauthorized_ip.txt +0 -1
  95. data/test/fixtures/client_authenticate_error.txt +0 -2
  96. data/test/fixtures/client_authenticate_success.txt +0 -2
  97. data/test/fixtures/client_change_password_error.txt +0 -2
  98. data/test/fixtures/client_change_password_success.txt +0 -4
  99. data/test/fixtures/client_create_error.txt +0 -2
  100. data/test/fixtures/client_create_success.txt +0 -7
  101. data/test/fixtures/client_delete_success.txt +0 -2
  102. data/test/fixtures/client_exists_success.txt +0 -2
  103. data/test/fixtures/client_list_success.txt +0 -14
  104. data/test/fixtures/client_list_success_empty.txt +0 -2
  105. data/test/fixtures/error.txt +0 -2
  106. data/test/fixtures/general_isos_success.txt +0 -3
  107. data/test/fixtures/general_plans_success.txt +0 -3
  108. data/test/fixtures/general_templates_success.txt +0 -3
  109. data/test/fixtures/node_list_all_ips_available.txt +0 -4
  110. data/test/fixtures/node_list_all_ips_not_available.txt +0 -4
  111. data/test/fixtures/node_statistics_success.txt +0 -14
  112. data/test/fixtures/node_virtualservers_success.txt +0 -15
  113. data/test/fixtures/node_virtualservers_success_empty.txt +0 -2
  114. data/test/fixtures/node_xenresources_success.txt +0 -4
  115. data/test/fixtures/nodes_ids_success.txt +0 -3
  116. data/test/fixtures/nodes_list_success.txt +0 -3
  117. data/test/fixtures/reseller_change_resources_success.txt +0 -16
  118. data/test/fixtures/reseller_create_success.txt +0 -23
  119. data/test/fixtures/reseller_delete_success.txt +0 -2
  120. data/test/fixtures/reseller_info_success.txt +0 -23
  121. data/test/fixtures/reseller_list_success.txt +0 -3
  122. data/test/fixtures/server_boot_success.txt +0 -2
  123. data/test/fixtures/server_bootorder_success.txt +0 -2
  124. data/test/fixtures/server_change_consolepass_success.txt +0 -3
  125. data/test/fixtures/server_change_owner_success.txt +0 -2
  126. data/test/fixtures/server_change_success.txt +0 -2
  127. data/test/fixtures/server_change_vncpass_success.txt +0 -3
  128. data/test/fixtures/server_console_success.txt +0 -7
  129. data/test/fixtures/server_create_success.txt +0 -10
  130. data/test/fixtures/server_exists_success.txt +0 -2
  131. data/test/fixtures/server_hostname_success.txt +0 -3
  132. data/test/fixtures/server_info_success.txt +0 -10
  133. data/test/fixtures/server_infoall_success.txt +0 -13
  134. data/test/fixtures/server_mountiso_success.txt +0 -2
  135. data/test/fixtures/server_network_disable_success.txt +0 -2
  136. data/test/fixtures/server_network_enable_success.txt +0 -2
  137. data/test/fixtures/server_pae_success.txt +0 -2
  138. data/test/fixtures/server_reboot_success.txt +0 -2
  139. data/test/fixtures/server_rebuild_success.txt +0 -2
  140. data/test/fixtures/server_resume_success.txt +0 -2
  141. data/test/fixtures/server_rootpassword_success.txt +0 -3
  142. data/test/fixtures/server_shutdown_success.txt +0 -2
  143. data/test/fixtures/server_status_success.txt +0 -2
  144. data/test/fixtures/server_suspend_success.txt +0 -2
  145. data/test/fixtures/server_terminate_success.txt +0 -2
  146. data/test/fixtures/server_tun_disable_success.txt +0 -2
  147. data/test/fixtures/server_tun_enable_success.txt +0 -2
  148. data/test/fixtures/server_unmountiso_success.txt +0 -2
  149. data/test/fixtures/server_vnc_success.txt +0 -6
  150. data/test/test_base.rb +0 -115
  151. data/test/test_client.rb +0 -98
  152. data/test/test_general.rb +0 -70
  153. data/test/test_node.rb +0 -112
  154. data/test/test_reseller.rb +0 -80
  155. data/test/test_server.rb +0 -227
data/.gitignore CHANGED
@@ -20,3 +20,6 @@ pkg
20
20
 
21
21
  .bundle
22
22
  Gemfile.lock
23
+
24
+ .rvmrc
25
+ .rbenv-version
data/.travis.yml CHANGED
@@ -1,11 +1,17 @@
1
- script: "bundle exec rake test"
1
+ language: ruby
2
+ script: "bundle exec rake spec"
2
3
  notifications:
3
- disabled: true
4
+ email:
5
+ recipients:
6
+ - engineering@internal.site5.com
7
+ on_success: never
8
+ on_failure: always
4
9
  rvm:
5
10
  - 1.8.7
6
11
  - 1.9.2
7
12
  - 1.9.3
8
13
  - ree
9
- - rbx
10
14
  - rbx-head
11
- - jruby
15
+ - rbx-18mode
16
+ - jruby-18mode
17
+ - jruby-19mode
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010 Site5 LLC
1
+ Copyright (c) 2010-2012 Site5.com <http://www.site5.com/>
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.markdown CHANGED
@@ -168,4 +168,4 @@ Note on Patches/Pull Requests
168
168
  Copyright
169
169
  ---------
170
170
 
171
- Copyright (c) 2010-2011 Site5. See LICENSE for details.
171
+ Copyright (c) 2010-2012 Site5.com. See LICENSE for details.
data/lib/solusvm.rb CHANGED
@@ -1,8 +1,7 @@
1
- require 'net/http'
2
- require 'net/https'
3
1
  require 'cgi'
4
2
  require 'rubygems'
5
3
  require 'xmlsimple'
4
+ require 'faraday'
6
5
 
7
6
  module Solusvm
8
7
  class << self
@@ -28,6 +27,7 @@ end
28
27
 
29
28
  require 'solusvm/exceptions'
30
29
  require 'solusvm/hash'
30
+ require 'solusvm/solusvm_errors'
31
31
  require 'solusvm/base'
32
32
  require 'solusvm/general'
33
33
  require 'solusvm/client'
data/lib/solusvm/base.rb CHANGED
@@ -1,3 +1,5 @@
1
+ Faraday.register_middleware :response, :solusvm_errors => Solusvm::SolusvmErrors
2
+
1
3
  module Solusvm
2
4
  # Solusvm::Base is the main class for mapping API resources as subclasses.
3
5
  class Base
@@ -18,20 +20,13 @@ module Solusvm
18
20
  #
19
21
  # <tt>force_array</tt> - see parse_response
20
22
  def perform_request(options = {}, force_array = false)
21
- options.merge!(api_login)
22
- http = Net::HTTP.new(api_endpoint.host, api_endpoint.port)
23
- if api_endpoint.port == 443
24
- http.use_ssl = true
25
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
26
- end
27
- http.start do |http|
28
- request = Net::HTTP::Get.new("#{api_endpoint.path}?#{options.to_query}")
29
- response = http.request(request)
30
-
31
- handle_errors(response)
32
- @returned_parameters = parse_response(response.body, force_array)
33
- log_messages(options)
34
- end
23
+ response = Faraday.new(:url => api_endpoint, :ssl => {:verify => true}) do |c|
24
+ c.params = options.merge(api_login)
25
+ c.response :solusvm_errors
26
+ c.adapter :net_http
27
+ end.get
28
+ @returned_parameters = parse_response(response.body, force_array)
29
+ log_messages(options)
35
30
  successful?
36
31
  end
37
32
 
@@ -52,23 +47,6 @@ module Solusvm
52
47
  end
53
48
  end
54
49
 
55
- # Look for known error messages
56
- def handle_errors(response)
57
- if (200..299).include? response.code.to_i
58
- # Checks for application errors
59
- case response.body.downcase
60
- when /invalid ipaddress/i
61
- raise "This IP is not authorized to use the API"
62
- when /Invalid id or key/i
63
- raise "Invalid ID or key"
64
- when /Node not found/i
65
- raise "Node does not exist"
66
- end
67
- else
68
- raise SolusvmError, "Bad HTTP Status: #{response.code}"
69
- end
70
- end
71
-
72
50
  # Returns true when a request has been successful
73
51
  #
74
52
  # my_class = MyClass.new
@@ -80,7 +58,7 @@ module Solusvm
80
58
 
81
59
  # URI parsed API URL
82
60
  def api_endpoint
83
- Solusvm.api_endpoint
61
+ Solusvm.api_endpoint.dup
84
62
  end
85
63
 
86
64
  def api_login
@@ -6,7 +6,7 @@ require 'solusvm/version'
6
6
  module Solusvm
7
7
  class BaseCli < Thor
8
8
  include Thor::Actions
9
-
9
+
10
10
  class << self
11
11
  # Overrides the default banner implementation to output the whole command
12
12
  def banner(task, namespace = true, subcommand = false)
@@ -40,14 +40,39 @@ module Solusvm
40
40
  end
41
41
 
42
42
  # Default required options
43
- class_option :api_login, :type => :string, :desc => "API ID; Required.", :aliases => ["-I", "--api-login"], :default => default_option(:id)
44
- class_option :api_key, :type => :string, :desc => "API KEY; Required.", :aliases => ["-K", "--api-key"], :default => default_option(:key)
45
- class_option :api_url, :type => :string, :desc => "API URL; Required.", :aliases => ["-U", "--api-url"], :default => default_option(: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
+
47
+ no_tasks do
48
+ def api
49
+ raise NotImplementedError
50
+ end
51
+
52
+ # prints one result element per line, in case it is a list
53
+ def output(result="", color=nil, force_new_line=(result.to_s !~ /( |\t)$/))
54
+ if api.successful?
55
+ Array(result).each do |entry|
56
+ say(entry, color, force_new_line)
57
+ end
58
+ else
59
+ say("Request failed: #{api.statusmsg}", color, force_new_line)
60
+ end
61
+ end
62
+ end
46
63
 
47
64
  protected
48
65
 
49
66
  def configure
50
- Solusvm.config(options[:api_login], options[:api_key], :url => options[:api_url])
67
+ Solusvm.config(
68
+ present_or_exit(:api_login, :id, "api_login required"),
69
+ present_or_exit(:api_key, :key, "api_key required"),
70
+ :url => present_or_exit(:api_url, :url, "api_url required")
71
+ )
72
+ end
73
+
74
+ def present_or_exit(options_key, default_option_key, message)
75
+ options[options_key] || BaseCli.default_option(default_option_key) || (say(message) && raise(SystemExit))
51
76
  end
52
77
  end
53
78
  end
@@ -1,7 +1,7 @@
1
- module Solusvm
1
+ module Solusvm
2
2
  class ClientCli < BaseCli
3
3
 
4
- desc "create", "Creates a new client"
4
+ desc "create", "Creates a new h"
5
5
  method_option :username, :type => :string, :desc => "Username", :aliases => ["-u", "--username"]
6
6
  method_option :password, :type => :string, :desc => "Password", :aliases => ["-p", "--password"]
7
7
  method_option :email, :type => :string, :desc => "Email", :aliases => ["-e", "--email"]
@@ -9,37 +9,37 @@ module Solusvm
9
9
  method_option :lastname, :type => :string, :desc => "Lastname", :aliases => ["-l", "--lastname"]
10
10
  method_option :company, :type => :string, :desc => "Company", :aliases => ["-c", "--company"]
11
11
  def create
12
- say client.create(options)
12
+ output api.create(options)
13
13
  end
14
14
 
15
15
  desc "change-password USERNAME NEWPASSWORD", "Changes the password of an existing client"
16
16
  def change_password(username, password)
17
- say client.change_password(username, password)
17
+ output api.change_password(username, password)
18
18
  end
19
19
 
20
20
  desc "authenticate USERNAME NEWPASSWORD", "Verify a clients login. Returns true when the specified login is correct"
21
21
  def authenticate(username, password)
22
- say client.authenticate(username, password)
22
+ output api.authenticate(username, password)
23
23
  end
24
24
 
25
25
  desc "check-exists USERNAME", "Checks if a client exists"
26
26
  def check_exists(username)
27
- say client.exists?(username)
27
+ output api.exists?(username)
28
28
  end
29
29
 
30
30
  desc "delete USERNAME", "Deletes an existing client"
31
31
  def delete(username)
32
- say client.delete(username)
32
+ output api.delete(username)
33
33
  end
34
34
 
35
35
  desc "list", "Lists existing clients"
36
36
  def list
37
- say client.list
37
+ output api.list
38
38
  end
39
39
 
40
40
  private
41
41
 
42
- def client
42
+ def api
43
43
  @client ||= begin
44
44
  configure
45
45
  Solusvm::Client.new
@@ -1,24 +1,24 @@
1
- module Solusvm
1
+ module Solusvm
2
2
  class GeneralCli < BaseCli
3
3
 
4
4
  desc "templates TYPE", "Lists existing templates for a given type [openvz|xen|xen hvm|kvm]"
5
5
  def templates(type)
6
- say general.templates(type)
6
+ output api.templates(type)
7
7
  end
8
8
 
9
9
  desc "plans TYPE", "Lists existing plans for a given type [openvz|xen|xen hvm|kvm]"
10
10
  def plans(type)
11
- say general.plans(type)
11
+ output api.plans(type)
12
12
  end
13
13
 
14
14
  desc "isos TYPE", "Lists existing isos for a given type [openvz|xen|xen hvm|kvm]"
15
15
  def isos(type)
16
- say general.isos(type)
16
+ output api.isos(type)
17
17
  end
18
18
 
19
19
  private
20
20
 
21
- def general
21
+ def api
22
22
  @general ||= begin
23
23
  configure
24
24
  Solusvm::General.new
@@ -1,39 +1,39 @@
1
- module Solusvm
1
+ module Solusvm
2
2
  class NodeCli < BaseCli
3
3
 
4
4
  desc "list TYPE", "Lists existing nodes for a given type [openvz|xen|xen hvm|kvm]"
5
5
  def list(type)
6
- say node.list(type)
6
+ output api.list(type)
7
7
  end
8
8
 
9
9
  desc "list-ids TYPE", "Lists existing nodes ids for a given type [openvz|xen|xen hvm|kvm]"
10
10
  def list_ids(type)
11
- say node.ids(type)
11
+ output api.ids(type)
12
12
  end
13
13
 
14
14
  desc "available-ips VSERVERID", "Lists the available ips for a given node"
15
15
  def available_ips(vserverid)
16
- say node.available_ips(vserverid).join("\n")
16
+ output api.available_ips(vserverid)
17
17
  end
18
18
 
19
19
  desc "stats VSERVERID", "Lists statistics for a given node"
20
20
  def stats(vserverid)
21
- say node.statistics(vserverid).map{|k, v| "#{k} => #{v}" }.join("\n")
21
+ output api.statistics(vserverid)
22
22
  end
23
23
 
24
24
  desc "xenresources VSERVERID", "Lists xen resources for a given node"
25
25
  def xenresources(vserverid)
26
- say node.xenresources(vserverid).map{|k, v| "#{k} => #{v}" }.join("\n")
26
+ output api.xenresources(vserverid)
27
27
  end
28
28
 
29
29
  desc "virtualservers VSERVERID", "Lists the virtual servers for a given node"
30
30
  def virtualservers(vserverid)
31
- say node.virtualservers(vserverid)
31
+ output api.virtualservers(vserverid)
32
32
  end
33
33
 
34
34
  private
35
35
 
36
- def node
36
+ def api
37
37
  @node ||= begin
38
38
  configure
39
39
  Solusvm::Node.new
@@ -1,4 +1,4 @@
1
- module Solusvm
1
+ module Solusvm
2
2
  class ResellerCli < BaseCli
3
3
 
4
4
  desc "create", "Creates a new reseller"
@@ -24,7 +24,7 @@ module Solusvm
24
24
  method_option :xenhvm, :type => :string, :desc => "y|n Allow building of xen hvm virtual servers (optional)", :aliases => ["-xhvm", "--xenhvm"]
25
25
  method_option :kvm, :type => :string, :desc => "y|n Allow building of kvmvirtual servers (optional)", :aliases => ["-kvm"]
26
26
  def create
27
- say reseller.create(options)
27
+ output api.create(options)
28
28
  end
29
29
 
30
30
  desc "change", "Changes the available resources of a reseller"
@@ -43,27 +43,27 @@ module Solusvm
43
43
  method_option :xenhvm, :type => :string, :desc => "y|n Allow building of xen hvm virtual servers (optional)", :aliases => ["-xhvm", "--xenhvm"]
44
44
  method_option :kvm, :type => :string, :desc => "y|n Allow building of kvmvirtual servers (optional)", :aliases => ["-kvm"]
45
45
  def change_resources
46
- say reseller.change_resources(options)
46
+ output api.change_resources(options)
47
47
  end
48
48
 
49
49
  desc "info USERNAME", "Retrieves information from an existing reseller"
50
50
  def info(username)
51
- say reseller.info(username)
51
+ output api.info(username)
52
52
  end
53
53
 
54
54
  desc "delete USERNAME", "Deletes an existing reseller"
55
55
  def delete(username)
56
- say reseller.delete(username)
56
+ output api.delete(username)
57
57
  end
58
58
 
59
59
  desc "list", "Lists existing resellers"
60
60
  def list
61
- say reseller.list
61
+ output api.list
62
62
  end
63
63
 
64
64
  private
65
65
 
66
- def reseller
66
+ def api
67
67
  @reseller ||= begin
68
68
  configure
69
69
  Solusvm::Reseller.new
@@ -3,133 +3,133 @@ module Solusvm
3
3
 
4
4
  desc "status VSERVERID", "Checks the status of a server"
5
5
  def status(vserverid)
6
- say server.status(vserverid)
6
+ output api.status(vserverid)
7
7
  end
8
8
 
9
9
  desc "info VSERVERID", "Retrieves information from a server"
10
10
  def info(vserverid)
11
- say server.info(vserverid)
11
+ output api.info(vserverid)
12
12
  end
13
13
 
14
14
  desc "vnc VSERVERID", "Retrieves vnc information from a server"
15
15
  def vnc(vserverid)
16
- say server.vnc(vserverid)
16
+ output api.vnc(vserverid)
17
17
  end
18
18
 
19
19
  desc "console VSERVERID", "Retrieves console information from a server"
20
20
  def console(vserverid)
21
- say server.console(vserverid)
21
+ output api.console(vserverid)
22
22
  end
23
23
 
24
24
  desc "info-all VSERVERID", "Retrieves all availavle information from a server"
25
25
  def info_all(vserverid)
26
- say server.info_all(vserverid)
26
+ output api.info_all(vserverid)
27
27
  end
28
28
 
29
29
  desc "change-plan VSERVERID NEWPLAN", "Changes the plan of a server"
30
30
  def change_plan(vserverid, newplan)
31
- say server.change_plan(vserverid, newplan)
31
+ output api.change_plan(vserverid, newplan)
32
32
  end
33
33
 
34
34
  desc "change-owner VSERVERID CLIENTID", "Changes the owner of a server"
35
35
  def change_owner(vserverid, clientid)
36
- say server.change_owner(vserverid, clientid)
36
+ output api.change_owner(vserverid, clientid)
37
37
  end
38
38
 
39
39
  desc "change-consolepass VSERVERID NEWPASSWORD", "Changes the console password of a server"
40
40
  def change_consolepass(vserverid, newpassword)
41
- say server.change_consolepass(vserverid, newpassword)
41
+ output api.change_consolepass(vserverid, newpassword)
42
42
  end
43
43
 
44
44
  desc "change-vncpass VSERVERID NEWPASSWORD", "Changes the vnc password of a server"
45
45
  def change_vncpass(vserverid, newpassword)
46
- say server.change_vncpass(vserverid, newpassword)
46
+ output api.change_vncpass(vserverid, newpassword)
47
47
  end
48
48
 
49
49
  desc "change-rootpass VSERVERID NEWPASSWORD", "Changes the root password of a server"
50
50
  def change_rootpass(vserverid, newpassword)
51
- say server.change_rootpassword(vserverid, newpassword)
51
+ output api.change_rootpassword(vserverid, newpassword)
52
52
  end
53
53
 
54
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
55
  def change_bootorder(vserverid, newbootorder)
56
- say server.change_bootorder(vserverid, newbootorder)
56
+ output api.change_bootorder(vserverid, newbootorder)
57
57
  end
58
58
 
59
59
  desc "change-hostname VSERVERID HOSTNAME", "Changes the hostname of a server"
60
60
  def change_hostname(vserverid, newhostname)
61
- say server.change_hostname(vserverid, newhostname)
61
+ output api.change_hostname(vserverid, newhostname)
62
62
  end
63
63
 
64
64
  desc "addip VSERVERID", "Adds an ip to the server"
65
65
  def addip(vserverid)
66
- say server.add_ip(vserverid)
66
+ output api.add_ip(vserverid)
67
67
  end
68
68
 
69
69
  desc "boot VSERVERID", "Boots up a server"
70
70
  def boot(vserverid)
71
- say server.boot(vserverid)
71
+ output api.boot(vserverid)
72
72
  end
73
73
 
74
74
  desc "reboot VSERVERID", "Reboots a server"
75
75
  def reboot(vserverid)
76
- say server.reboot(vserverid)
76
+ output api.reboot(vserverid)
77
77
  end
78
78
 
79
79
  desc "shutdown VSERVERID", "Shuts down a server"
80
80
  def shutdown(vserverid)
81
- say server.shutdown(vserverid)
81
+ output api.shutdown(vserverid)
82
82
  end
83
83
 
84
84
  desc "suspend VSERVERID", "Suspends a server"
85
85
  def suspend(vserverid)
86
- say server.suspend(vserverid)
86
+ output api.suspend(vserverid)
87
87
  end
88
88
 
89
89
  desc "resume VSERVERID", "Resumes a server"
90
90
  def resume(vserverid)
91
- say server.resume(vserverid)
91
+ output api.resume(vserverid)
92
92
  end
93
93
 
94
94
  desc "check-exists VSERVERID", "Checks if a server exists"
95
95
  def check_exists(vserverid)
96
- say server.check_exists(vserverid)
96
+ output api.exists?(vserverid)
97
97
  end
98
98
 
99
99
  desc "terminate VSERVERID", "Terminates a server"
100
100
  def terminate(vserverid)
101
- say server.terminate(vserverid)
101
+ output api.terminate(vserverid)
102
102
  end
103
103
 
104
104
  desc "rebuild VSERVERID", "Rebuilds a server"
105
105
  method_option :template, :type => :string, :desc => "VPS template to boot from", :aliases => ["-t", "--template"]
106
106
  def rebuild(vserverid)
107
- say server.rebuild(vserverid, {:template => options[:template]})
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"
111
111
  def tun_switcher(vserverid, switch)
112
- say switch(vserverid, switch, :tun_enable, :tun_disable)
112
+ output switch(vserverid, switch, :tun_enable, :tun_disable)
113
113
  end
114
114
 
115
115
  desc "network-switcher VSERVERID SWITCH(on|off)", "Enable/Disable Network mode"
116
116
  def network_switcher(vserverid, switch)
117
- say switch(vserverid, switch, :network_enable, :network_disable)
117
+ output switch(vserverid, switch, :network_enable, :network_disable)
118
118
  end
119
119
 
120
120
  desc "pae-switcher VSERVERID SWITCH(on|off)", "Enable/Disable PAE"
121
121
  def pae_switcher(vserverid, switch)
122
- say switch(vserverid, switch, :pae_enable, :pae_disable)
122
+ output switch(vserverid, switch, :pae_enable, :pae_disable)
123
123
  end
124
124
 
125
125
  desc "mountiso VSERVERID ISO", "Mounts an iso"
126
126
  def mountiso(vserverid, iso)
127
- say server.mountiso(vserverid, iso)
127
+ output api.mountiso(vserverid, iso)
128
128
  end
129
129
 
130
130
  desc "unmountiso VSERVERID", "Unmounts an iso"
131
131
  def unmountiso(vserverid)
132
- say server.unmountiso(vserverid)
132
+ output api.unmountiso(vserverid)
133
133
  end
134
134
 
135
135
  desc "create HOSTNAME PASSWORD", "Creates a new server"
@@ -140,15 +140,15 @@ module Solusvm
140
140
  method_option :template, :type => :string, :desc => "VPS template to boot from", :aliases => ["-t", "--template"]
141
141
  method_option :node, :type => :string, :desc => "Node to provision on", :aliases => ["-n", "--node"]
142
142
  def create(hostname, password)
143
- say server.create(hostname, password, {
144
- :plan => options[:plan], :ips => options[:ips], :type => options[:kind],
143
+ output api.create(hostname, password, {
144
+ :plan => options[:plan], :ips => options[:ips], :type => options[:kind],
145
145
  :username => options[:username], :template => options[:template], :node => options[:node]
146
146
  })
147
147
  end
148
148
 
149
149
  private
150
150
 
151
- def server
151
+ def api
152
152
  @server ||= begin
153
153
  configure
154
154
  Solusvm::Server.new
@@ -157,9 +157,9 @@ module Solusvm
157
157
 
158
158
  def switch(vserverid, switch_value, on_method, off_method)
159
159
  if switch_value == "on"
160
- server.send(on_method, vserverid)
160
+ api.send(on_method, vserverid)
161
161
  elsif switch_value == "off"
162
- server.send(off_method, vserverid)
162
+ api.send(off_method, vserverid)
163
163
  else
164
164
  "Invalid switch value. Valid values are on|off"
165
165
  end