vultr 0.1.1 → 0.2.0
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/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.
|