solusvm_client 0.0.1 → 0.1
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.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/README.md +117 -3
- data/lib/solusvm_client.rb +10 -3
- data/lib/solusvm_client/server.rb +79 -0
- data/lib/solusvm_client/version.rb +1 -1
- data/solusvm_client.gemspec +2 -2
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 170aaff3a23f687e5960809d760c5cfbc529da3d
|
4
|
+
data.tar.gz: 5ad30db5ad52b508d9720db816c3474b81f02cfd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7996e4fbdf47f5779f09c89a5534b08e4d33fbea6a986d826c4752c9ed146135e8e88522691a2c4aeb48943b9e5e527c10aa028118ceae91a9f5e1df088eac0
|
7
|
+
data.tar.gz: 5d96204a840caf99b25c59a263bbb0c86e4b883bee4e46ab23e582d4401d77afb5cc1f2b7b132dbaddce6f6a71e604316c885504ec2b242df87d98c7af8fc5b4
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
#
|
1
|
+
# SolusVMClient
|
2
2
|
|
3
|
-
|
3
|
+
This Gem is a simple implementation of the SolusVM Client API (http://docs.solusvm.com/client_api)
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -18,7 +18,121 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
-
|
21
|
+
### Initializing
|
22
|
+
|
23
|
+
Initialize the API URL. For Rails put this into `config/initializers/solusvm_client.rb`
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
|
27
|
+
# require 'solusvm_client' # include gem if you are not inside rails
|
28
|
+
|
29
|
+
SolusVMClient.setup do |config|
|
30
|
+
config.api_url = "https://myserver.com:5656/api/client/command.php"
|
31
|
+
end
|
32
|
+
```
|
33
|
+
|
34
|
+
### Instantiating a Server Object
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
|
38
|
+
server = SolusVMClient::Server.new("MY API KEY", "MY API HASH")
|
39
|
+
```
|
40
|
+
|
41
|
+
### API Functions
|
42
|
+
|
43
|
+
* reboot
|
44
|
+
* boot
|
45
|
+
* shutdown
|
46
|
+
* status
|
47
|
+
* info
|
48
|
+
|
49
|
+
#### Examples
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
|
53
|
+
result = server.reboot
|
54
|
+
|
55
|
+
# result => {
|
56
|
+
# :status => "success",
|
57
|
+
# :statusmsg => "rebooted",
|
58
|
+
# :hostname => "myhostname.com",
|
59
|
+
# :ipaddress => "123.123.123.123",
|
60
|
+
# :vmstat => nil
|
61
|
+
# }
|
62
|
+
|
63
|
+
result = server.shutdown
|
64
|
+
|
65
|
+
# result => {
|
66
|
+
# :status => "success",
|
67
|
+
# :statusmsg => "shutdown",
|
68
|
+
# :hostname => "myhostname.com",
|
69
|
+
# :ipaddress => "123.123.123.123",
|
70
|
+
# :vmstat => nil
|
71
|
+
# }
|
72
|
+
|
73
|
+
result = server.boot
|
74
|
+
|
75
|
+
# result => {
|
76
|
+
# :status => "success",
|
77
|
+
# :statusmsg => "booted",
|
78
|
+
# :hostname => "myhostname.com",
|
79
|
+
# :ipaddress => "123.123.123.123",
|
80
|
+
# :vmstat => nil
|
81
|
+
# }
|
82
|
+
|
83
|
+
result = server.status
|
84
|
+
|
85
|
+
# result => {
|
86
|
+
# :status => "success",
|
87
|
+
# :statusmsg => "online",
|
88
|
+
# :vmstat => "online",
|
89
|
+
# :hostname => "myhostname.com",
|
90
|
+
# :ipaddress => "123.123.123.123"
|
91
|
+
# }
|
92
|
+
|
93
|
+
result = server.info
|
94
|
+
|
95
|
+
# result => {
|
96
|
+
# :status => "success",
|
97
|
+
# :statusmsg => nil,
|
98
|
+
# :hostname => "myhostname.com",
|
99
|
+
# :ipaddress => "123.123.123.123",
|
100
|
+
# :vmstat => nil
|
101
|
+
# }
|
102
|
+
|
103
|
+
result = server.info({ ipaddr: true, hdd: true, mem: true, bw: true })
|
104
|
+
|
105
|
+
# result => {
|
106
|
+
# :ipaddr => [
|
107
|
+
# [0] "123.123.123.123",
|
108
|
+
# [1] "0:0:0:0:0:ffff:7b7b:7b7b"
|
109
|
+
# ],
|
110
|
+
# :hdd => {
|
111
|
+
# :total => 10737418240,
|
112
|
+
# :used => 775327744,
|
113
|
+
# :free => 9962090496,
|
114
|
+
# :percentage => 7
|
115
|
+
# },
|
116
|
+
# :bw => {
|
117
|
+
# :total => 107374182400,
|
118
|
+
# :used => 256204956,
|
119
|
+
# :free => 107117977444,
|
120
|
+
# :percentage => 0
|
121
|
+
# },
|
122
|
+
# :mem => {
|
123
|
+
# :total => 134217728,
|
124
|
+
# :used => 25272320,
|
125
|
+
# :free => 108945408,
|
126
|
+
# :percentage => 19
|
127
|
+
# },
|
128
|
+
# :status => "success",
|
129
|
+
# :statusmsg => nil,
|
130
|
+
# :hostname => "myhostname.com",
|
131
|
+
# :ipaddress => "123.123.123.123",
|
132
|
+
# :vmstat => nil
|
133
|
+
# }
|
134
|
+
```
|
135
|
+
|
22
136
|
|
23
137
|
## Contributing
|
24
138
|
|
data/lib/solusvm_client.rb
CHANGED
@@ -1,5 +1,12 @@
|
|
1
|
+
require 'active_support/core_ext/module/attribute_accessors'
|
2
|
+
require 'solusvm_client/server'
|
1
3
|
require "solusvm_client/version"
|
2
4
|
|
3
|
-
module
|
4
|
-
|
5
|
-
|
5
|
+
module SolusVMClient
|
6
|
+
mattr_accessor :api_url
|
7
|
+
@@api_url = nil
|
8
|
+
|
9
|
+
def self.setup
|
10
|
+
yield self if block_given?
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'active_support/all'
|
2
|
+
require 'uri'
|
3
|
+
require 'net/https'
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
module SolusVMClient
|
7
|
+
class Server
|
8
|
+
attr_accessor :api_key, :api_hash
|
9
|
+
|
10
|
+
@@actions = [
|
11
|
+
:reboot,
|
12
|
+
:boot,
|
13
|
+
:shutdown,
|
14
|
+
:status
|
15
|
+
]
|
16
|
+
|
17
|
+
def initialize(api_key, api_hash)
|
18
|
+
self.api_key = api_key
|
19
|
+
self.api_hash = api_hash
|
20
|
+
end
|
21
|
+
|
22
|
+
def method_missing(m, *args, &block)
|
23
|
+
if @@actions.include?(m)
|
24
|
+
request(m)
|
25
|
+
else
|
26
|
+
super
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def info(options = {})
|
31
|
+
result = request("info", options)
|
32
|
+
if options.include?(:ipaddr)
|
33
|
+
result[:ipaddr] = result[:ipaddr].split(",")
|
34
|
+
end
|
35
|
+
|
36
|
+
[:hdd, :mem, :bw].each do |k|
|
37
|
+
if options.include?(k)
|
38
|
+
usage = result[k].split(",")
|
39
|
+
result[k] = {
|
40
|
+
total: usage[0].to_i,
|
41
|
+
used: usage[1].to_i,
|
42
|
+
free: usage[2].to_i,
|
43
|
+
percentage: usage[3].to_i
|
44
|
+
}
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
result
|
49
|
+
end
|
50
|
+
|
51
|
+
def request(action, options = {})
|
52
|
+
uri = URI.parse(SolusVMClient.api_url)
|
53
|
+
https = Net::HTTP.new(uri.host, uri.port)
|
54
|
+
https.use_ssl = true
|
55
|
+
|
56
|
+
params = {
|
57
|
+
key: self.api_key,
|
58
|
+
hash: self.api_hash,
|
59
|
+
action: action
|
60
|
+
}.merge(options)
|
61
|
+
|
62
|
+
request = Net::HTTP::Post.new(uri)
|
63
|
+
request.set_form_data(params)
|
64
|
+
|
65
|
+
response = https.request(request)
|
66
|
+
|
67
|
+
result = {}
|
68
|
+
hash = Hash.from_xml("<root>#{response.body}</root>")["root"]
|
69
|
+
|
70
|
+
hash.each do |k,v|
|
71
|
+
result[k.to_sym] = v
|
72
|
+
end
|
73
|
+
|
74
|
+
raise result[:statusmsg] if result[:status] != "success"
|
75
|
+
|
76
|
+
result
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
data/solusvm_client.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = SolusvmClient::VERSION
|
9
9
|
spec.authors = ["bontscho"]
|
10
10
|
spec.email = ["software@bontscho.de"]
|
11
|
-
spec.summary = %q{
|
12
|
-
spec.description = %q{
|
11
|
+
spec.summary = %q{SolusVM Client API Implementation}
|
12
|
+
spec.description = %q{This Gem implements the SolusVM Client API (http://docs.solusvm.com/client_api) to easily manage your Virtual Private Servers}
|
13
13
|
spec.homepage = "https://github.com/bontscho/solusvm_client-ruby"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solusvm_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.1'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- bontscho
|
@@ -52,7 +52,8 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '10'
|
55
|
-
description:
|
55
|
+
description: This Gem implements the SolusVM Client API (http://docs.solusvm.com/client_api)
|
56
|
+
to easily manage your Virtual Private Servers
|
56
57
|
email:
|
57
58
|
- software@bontscho.de
|
58
59
|
executables: []
|
@@ -65,6 +66,7 @@ files:
|
|
65
66
|
- README.md
|
66
67
|
- Rakefile
|
67
68
|
- lib/solusvm_client.rb
|
69
|
+
- lib/solusvm_client/server.rb
|
68
70
|
- lib/solusvm_client/version.rb
|
69
71
|
- solusvm_client.gemspec
|
70
72
|
homepage: https://github.com/bontscho/solusvm_client-ruby
|
@@ -90,5 +92,5 @@ rubyforge_project:
|
|
90
92
|
rubygems_version: 2.2.1
|
91
93
|
signing_key:
|
92
94
|
specification_version: 4
|
93
|
-
summary:
|
95
|
+
summary: SolusVM Client API Implementation
|
94
96
|
test_files: []
|