vultr 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/Rakefile +1 -2
- data/lib/vultr.rb +82 -37
- data/lib/vultr/version.rb +3 -3
- data/test/vultr/test_vultr_os.rb +16 -5
- data/test/vultr/test_vultr_plan.rb +18 -6
- data/test/vultr/test_vultr_region.rb +7 -7
- data/test/vultr/test_vultr_snapshot.rb +1 -1
- data/test/vultr/test_vultr_startupscript.rb +1 -1
- data/vultr.gemspec +11 -11
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c428225f99bc80811b7ebbfa42b9bacf074c5fe4
|
4
|
+
data.tar.gz: 2b4fe6635a7f49f67e0c2d5341acd9d7b54ba547
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a65134fbd21bcab4282070048f407be8b21e7fd86fca86ce2e5ca08f931d7128a517399ce115a0db4bb99f87b7940f0971e03a002105caa594068fdae26220f9
|
7
|
+
data.tar.gz: e9ad85b9f133716db8b16fa7d3219ed37101814639df393aead026d918c83ba1bdea545f84ec5ed58afef8cd574a1d7857b6ca6546d00f9d8511be2617c9c617
|
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
require
|
2
|
-
|
1
|
+
require 'bundler/gem_tasks'
|
data/lib/vultr.rb
CHANGED
@@ -1,40 +1,85 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require 'faraday'
|
2
|
+
require 'faraday_middleware'
|
3
|
+
require 'vultr/version'
|
4
4
|
|
5
5
|
module Vultr
|
6
6
|
extend self
|
7
7
|
|
8
8
|
DEFINITIONS = {
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
Account: {
|
10
|
+
info: [:get, '/v1/account/info?api_key=[api_key]']
|
11
|
+
},
|
12
|
+
App: {
|
13
|
+
list: [:get, '/v1/app/list']
|
14
|
+
},
|
15
|
+
Backup: {
|
16
|
+
list: [:get, '/v1/backup/list?api_key=[api_key]']
|
17
|
+
},
|
18
|
+
DNS: {
|
19
|
+
create_domain: [:post, '/v1/dns/create_domain?api_key=[api_key]', ['domain', 'serverip']],
|
20
|
+
delete_domain: [:post, '/v1/dns/delete_domain?api_key=[api_key]', ['domain']],
|
21
|
+
create_record: [:post, '/v1/dns/create_record?api_key=[api_key]', ['domain', 'name', 'type', 'data', 'ttl', 'priority']],
|
22
|
+
delete_record: [:post, '/v1/dns/delete_record?api_key=[api_key]', ['domain', 'RECORDID']],
|
23
|
+
list: [:get, '/v1/dns/list?api_key=[api_key]'],
|
24
|
+
records: [:get, '/v1/dns/records?api_key=[api_key]&domain=[domain]']
|
25
|
+
},
|
26
|
+
ISO: {
|
27
|
+
list: [:get, '/v1/iso/list?api_key=[api_key]']
|
28
|
+
},
|
29
|
+
OS: {
|
30
|
+
list: [:get, '/v1/os/list']
|
13
31
|
},
|
14
32
|
Plan: {
|
15
|
-
list: [:get,
|
33
|
+
list: [:get, '/v1/plans/list']
|
16
34
|
},
|
17
35
|
Region: {
|
18
|
-
list:
|
19
|
-
availability: [:get,
|
20
|
-
},
|
21
|
-
StartupScript: {
|
22
|
-
list: [:get, "/v1/startupscript/list?api_key=[api_key]"],
|
23
|
-
destroy: [:post, "/v1/startupscript/destroy?api_key=[api_key]", "SCRIPTID"],
|
24
|
-
create: [:post, "/v1/startupscript/create?api_key=[api_key]", ["name", "script"]]
|
36
|
+
list: [:get, '/v1/regions/list'],
|
37
|
+
availability: [:get, '/v1/regions/availability?DCID=[DCID]']
|
25
38
|
},
|
26
39
|
Server: {
|
27
|
-
list:
|
28
|
-
reboot:
|
29
|
-
halt:
|
30
|
-
start:
|
31
|
-
destroy: [:post,
|
32
|
-
create:
|
33
|
-
|
40
|
+
list: [:get, '/v1/server/list?api_key=[api_key]'],
|
41
|
+
reboot: [:post, '/v1/server/reboot?api_key=[api_key]', ['SUBID']],
|
42
|
+
halt: [:post, '/v1/server/halt?api_key=[api_key]', ['SUBID']],
|
43
|
+
start: [:post, '/v1/server/start?api_key=[api_key]', ['SUBID']],
|
44
|
+
destroy: [:post, '/v1/server/destroy?api_key=[api_key]', ['SUBID']],
|
45
|
+
create: [:post, '/v1/server/create?api_key=[api_key]',
|
46
|
+
['DCID', 'VPSPLANID', 'OSID', 'ipxe_chain_url', 'ISOID', 'SCRIPTID', 'SNAPSHOTID',
|
47
|
+
'enable_ipv6', 'enable_private_network', 'label', 'SSHKEYID', 'auto_backups', 'APPID']],
|
48
|
+
list_ipv4: [:get, '/v1/server/list_ipv4?api_key=[api_key]&SUBID=[SUBID]'],
|
49
|
+
create_ipv4: [:post, '/v1/server/create_ipv4?api_key=[api_key]', ['SUBID']],
|
50
|
+
destroy_ipv4: [:post, '/v1/server/destroy_ipv4?api_key=[api_key]', ['SUBID']],
|
51
|
+
list_ipv6: [:get, '/v1/server/list_ipv6?api_key=[api_key]&SUBID=[SUBID]'],
|
52
|
+
label_set: [:post, '/v1/server/label_set?api_key=[api_key]', ['SUBID', 'label']],
|
53
|
+
os_change: [:post, '/v1/server/os_change?api_key=[api_key]', ['SUBID', 'OSID']],
|
54
|
+
os_change_list: [:get, '/v1/server/os_change_list?api_key=[api_key]&SUBID=[SUBID]'],
|
55
|
+
reinstall: [:post, '/v1/server/reinstall?api_key=[api_key]', ['SUBID']],
|
56
|
+
restore_backup: [:post, '/v1/server/restore_backup?api_key=[api_key]', ['SUBID', 'BACKUPID']],
|
57
|
+
restore_snapshot: [:post, '/v1/server/restore_snapshot?api_key=[api_key]', ['SUBID', 'SNAPSHOTID']],
|
58
|
+
reverse_default_ipv4: [:post, '/v1/server/reverse_default_ipv4?api_key=[api_key]', ['SUBID', 'ip']],
|
59
|
+
reverse_delete_ipv6: [:post, '/v1/server/reverse_delete_ipv6?api_key=[api_key]', ['SUBID']],
|
60
|
+
reverse_list_ipv6: [:get, '/v1/server/reverse_list_ipv6?api_key=[api_key]&SUBID=[SUBID]'],
|
61
|
+
reverse_set_ipv4: [:post, '/v1/server/reverse_set_ipv4?api_key=[api_key]', ['SUBID', 'ip']],
|
62
|
+
reverse_set_ipv6: [:post, '/v1/server/reverse_set_ipv6?api_key=[api_key]', ['SUBID', 'ip']],
|
63
|
+
upgrade_plan: [:post, '/v1/server/upgrade_plan?api_key=[api_key]', ['SUBID', 'VPSPLANID']],
|
64
|
+
upgrade_plan_list: [:get, '/v1/server/upgrade_plan_list?api_key=[api_key]&SUBID=[SUBID]']
|
65
|
+
},
|
66
|
+
Snapshot: {
|
67
|
+
list: [:get, '/v1/snapshot/list?api_key=[api_key]'],
|
68
|
+
destroy: [:post, '/v1/snapshot/destroy?api_key=[api_key]', ['SNAPSHOTID']],
|
69
|
+
create: [:post, '/v1/snapshot/create?api_key=[api_key]', ['SUBID']]
|
70
|
+
},
|
71
|
+
SSHKey: {
|
72
|
+
list: [:get, '/v1/sshkey/list?api_key=[api_key]'],
|
73
|
+
create: [:post, '/v1/sshkey/create?api_key=[api_key]', ['name', 'ssh_key']],
|
74
|
+
destroy: [:post, '/v1/sshkey/destroy?api_key=[api_key]', ['SSHKEYID']],
|
75
|
+
update: [:post, '/v1/sshkey/update?api_key=[api_key]', ['SSHKEYID', 'name', 'ssh_key']]
|
76
|
+
},
|
77
|
+
StartupScript: {
|
78
|
+
list: [:get, '/v1/startupscript/list?api_key=[api_key]'],
|
79
|
+
create: [:post, '/v1/startupscript/create?api_key=[api_key]', ['name', 'script', 'type']],
|
80
|
+
destroy: [:post, '/v1/startupscript/destroy?api_key=[api_key]', ['SCRIPTID']],
|
81
|
+
update: [:post, '/v1/startupscript/update?api_key=[api_key]', ['SCRIPTID', 'name', 'script']]
|
34
82
|
},
|
35
|
-
OS: {
|
36
|
-
list: [:get, "/v1/os/list"]
|
37
|
-
}
|
38
83
|
}
|
39
84
|
|
40
85
|
DEFINITIONS.each do |resource|
|
@@ -43,17 +88,17 @@ module Vultr
|
|
43
88
|
resource_class = Class.new(Object) do
|
44
89
|
DEFINITIONS[resource_name].each do |action, array|
|
45
90
|
method_name = array[0]
|
46
|
-
path, query = array[1].split(
|
91
|
+
path, query = array[1].split('?')
|
47
92
|
params = array[2]
|
48
93
|
|
49
94
|
define_singleton_method "_#{action}" do |*args|
|
50
95
|
query_for_method = Vultr.process_query_args_from_path(query, args)
|
51
|
-
url = [Vultr.api_endpoint, path].join(
|
96
|
+
url = [Vultr.api_endpoint, path].join('')
|
52
97
|
|
53
98
|
if query_for_method.nil?
|
54
99
|
url
|
55
100
|
else
|
56
|
-
[url, query_for_method].join(
|
101
|
+
[url, query_for_method].join('?')
|
57
102
|
end
|
58
103
|
end
|
59
104
|
|
@@ -84,11 +129,11 @@ module Vultr
|
|
84
129
|
|
85
130
|
def api_key
|
86
131
|
return @api_key if @api_key
|
87
|
-
|
132
|
+
'api_key_required'
|
88
133
|
end
|
89
134
|
|
90
135
|
def api_endpoint
|
91
|
-
|
136
|
+
'https://api.vultr.com'
|
92
137
|
end
|
93
138
|
|
94
139
|
def request_and_respond(method_name, url, body = nil)
|
@@ -101,8 +146,8 @@ module Vultr
|
|
101
146
|
end
|
102
147
|
|
103
148
|
def process_api_key(parts)
|
104
|
-
api_key_index = parts.index
|
105
|
-
api_key_index = parts.index
|
149
|
+
api_key_index = parts.index 'api_key='
|
150
|
+
api_key_index = parts.index '&api_key=' unless api_key_index
|
106
151
|
parts[api_key_index + 1] = api_key if api_key_index
|
107
152
|
|
108
153
|
parts
|
@@ -119,7 +164,7 @@ module Vultr
|
|
119
164
|
hash.each do |key, value|
|
120
165
|
query_setter = "#{key}="
|
121
166
|
query_arg_index = parts.index query_setter
|
122
|
-
query_arg_index = parts.index "&#{query_setter}"
|
167
|
+
query_arg_index = parts.index "&#{query_setter}" unless query_arg_index
|
123
168
|
|
124
169
|
unless query_arg_index.nil?
|
125
170
|
parts[query_arg_index+1] = value
|
@@ -127,7 +172,7 @@ module Vultr
|
|
127
172
|
end
|
128
173
|
end
|
129
174
|
|
130
|
-
parts.join(
|
175
|
+
parts.join('')
|
131
176
|
end
|
132
177
|
|
133
178
|
def process_params_args_from_keys(params, args)
|
@@ -137,7 +182,7 @@ module Vultr
|
|
137
182
|
hash = args[-1]
|
138
183
|
if hash.is_a?(Hash)
|
139
184
|
hash.each do |key, value|
|
140
|
-
body[key] = value
|
185
|
+
body[key] = value if params.include? key.to_s
|
141
186
|
end
|
142
187
|
end
|
143
188
|
|
@@ -148,13 +193,13 @@ module Vultr
|
|
148
193
|
|
149
194
|
def setup_request!
|
150
195
|
options = {
|
151
|
-
headers: {
|
196
|
+
headers: {:Accept => 'application/json'},
|
152
197
|
ssl: {verify: false}
|
153
198
|
}
|
154
199
|
|
155
200
|
Vultr.request = Faraday.new(options) do |faraday|
|
156
201
|
faraday.request :url_encoded
|
157
|
-
faraday.response :json, :content_type =>
|
202
|
+
faraday.response :json, :content_type => 'application/json'
|
158
203
|
faraday.response :follow_redirects
|
159
204
|
faraday.adapter Faraday.default_adapter
|
160
205
|
end
|
data/lib/vultr/version.rb
CHANGED
data/test/vultr/test_vultr_os.rb
CHANGED
@@ -1,13 +1,24 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'vultr'
|
2
|
+
require 'minitest/autorun'
|
3
3
|
|
4
4
|
describe Vultr::OS do
|
5
5
|
|
6
6
|
let(:os) { Vultr::OS }
|
7
7
|
|
8
|
-
it
|
9
|
-
|
8
|
+
it 'needs to verify list os url' do
|
9
|
+
Vultr.api_key = ENV['VULTR_API_KEY']
|
10
10
|
|
11
|
-
|
11
|
+
assert_equal os._list, 'https://api.vultr.com/v1/os/list'
|
12
|
+
|
13
|
+
r = os.list
|
14
|
+
|
15
|
+
assert r.has_key? :status
|
16
|
+
assert_equal r[:status], 200
|
17
|
+
|
18
|
+
assert r.has_key? :result
|
19
|
+
r[:result].each do |k, v|
|
20
|
+
assert v.has_key?('OSID')
|
21
|
+
assert_equal k.to_i, v['OSID'].to_i
|
22
|
+
end
|
12
23
|
end
|
13
24
|
end
|
@@ -1,13 +1,25 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'vultr'
|
2
|
+
require 'minitest/autorun'
|
3
3
|
|
4
4
|
describe Vultr::Plan do
|
5
5
|
|
6
6
|
let(:plan) { Vultr::Plan }
|
7
7
|
|
8
|
-
it
|
9
|
-
|
8
|
+
it 'needs to verify list plan url' do
|
9
|
+
assert ENV.has_key? 'VULTR_API_KEY'
|
10
|
+
Vultr.api_key = ENV['VULTR_API_KEY']
|
10
11
|
|
11
|
-
|
12
|
+
assert_equal plan._list, 'https://api.vultr.com/v1/plans/list'
|
13
|
+
|
14
|
+
r = plan.list
|
15
|
+
|
16
|
+
assert r.has_key? :status
|
17
|
+
assert_equal r[:status], 200
|
18
|
+
|
19
|
+
assert r.has_key? :result
|
20
|
+
r[:result].each do |k, v|
|
21
|
+
assert v.has_key?('VPSPLANID')
|
22
|
+
assert_equal k.to_i, v['VPSPLANID'].to_i
|
23
|
+
end
|
12
24
|
end
|
13
|
-
end
|
25
|
+
end
|
@@ -1,19 +1,19 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'vultr'
|
2
|
+
require 'minitest/autorun'
|
3
3
|
|
4
4
|
describe Vultr::Region do
|
5
5
|
|
6
6
|
let(:region) { Vultr::Region }
|
7
7
|
|
8
|
-
it
|
8
|
+
it 'needs to verify list region url' do
|
9
9
|
url = region._list
|
10
10
|
|
11
|
-
url.must_equal
|
11
|
+
url.must_equal 'https://api.vultr.com/v1/regions/list'
|
12
12
|
end
|
13
13
|
|
14
|
-
it
|
15
|
-
DCID =
|
16
|
-
url = region._availability(
|
14
|
+
it 'needs to verify availability region url' do
|
15
|
+
DCID = '1234'
|
16
|
+
url = region._availability('DCID' => '1234')
|
17
17
|
|
18
18
|
url.must_equal "https://api.vultr.com/v1/regions/availability?DCID=#{DCID}"
|
19
19
|
end
|
@@ -5,7 +5,7 @@ describe Vultr::StartupScript do
|
|
5
5
|
|
6
6
|
let(:startupscript) { Vultr::StartupScript }
|
7
7
|
|
8
|
-
it
|
8
|
+
it 'needs to verify list snapshot url' do
|
9
9
|
url = startupscript._list
|
10
10
|
|
11
11
|
url.must_equal "https://api.vultr.com/v1/startupscript/list?api_key=api_key_required"
|
data/vultr.gemspec
CHANGED
@@ -4,24 +4,24 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'vultr/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
7
|
+
s.name = 'vultr'
|
8
8
|
s.version = Vultr::VERSION::STRING
|
9
|
-
s.authors = [
|
10
|
-
s.email = [
|
9
|
+
s.authors = ['Tolbkni Kao']
|
10
|
+
s.email = ['tolbkni@gmail.com']
|
11
11
|
s.summary = %q{Ruby bindings for VULTR API.}
|
12
12
|
s.description = %q{Ruby bindings for VULTR API.}
|
13
|
-
s.homepage =
|
14
|
-
s.license =
|
13
|
+
s.homepage = 'https://github.com/tolbkni/vultr'
|
14
|
+
s.license = 'MIT'
|
15
15
|
|
16
16
|
s.files = `git ls-files -z`.split("\x0")
|
17
17
|
s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
18
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
19
|
-
s.require_paths = [
|
19
|
+
s.require_paths = ['lib']
|
20
20
|
|
21
|
-
s.add_dependency
|
22
|
-
s.add_dependency
|
21
|
+
s.add_dependency 'faraday', '~> 0.9.1'
|
22
|
+
s.add_dependency 'faraday_middleware', '~> 0.9.1'
|
23
23
|
|
24
|
-
s.add_development_dependency
|
25
|
-
s.add_development_dependency
|
26
|
-
s.add_development_dependency
|
24
|
+
s.add_development_dependency 'bundler', '~> 1.6'
|
25
|
+
s.add_development_dependency 'rake'
|
26
|
+
s.add_development_dependency 'minitest'
|
27
27
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vultr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tolbkni Kao
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-05-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.9.
|
19
|
+
version: 0.9.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.9.
|
26
|
+
version: 0.9.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: faraday_middleware
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
122
122
|
version: '0'
|
123
123
|
requirements: []
|
124
124
|
rubyforge_project:
|
125
|
-
rubygems_version: 2.
|
125
|
+
rubygems_version: 2.4.5
|
126
126
|
signing_key:
|
127
127
|
specification_version: 4
|
128
128
|
summary: Ruby bindings for VULTR API.
|