rimu 0.0.1 → 0.0.2
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 +8 -8
- data/.codeclimate.yml +6 -5
- data/.gitignore +1 -0
- data/README.md +1 -0
- data/lib/rimu/orders.rb +14 -4
- data/lib/rimu/servers.rb +92 -15
- data/lib/rimu.rb +34 -18
- data/rimu.gemspec +7 -3
- metadata +35 -6
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ODY3ZWYzM2U4MTA2ZjcxMDM2MWEwYTMzYWEzZjgzOTYxZjg4Mjg2MQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NTk0MTNkMDRkYjU2NDgxODlmZmQ4YWFjOGY3N2FjYjY4MjA2ZWQwMQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZmQ3OTVlNzRiMTM2NTgwZDIyMmFmYTJhY2VhZDFiODg1NGQ0OWMwOGI4MzQ5
|
10
|
+
ODlkZWViNDFkMzRjMTdlOWNlMTQyNDk5M2MxZGRkZjlmMjliYWQ5NDI2NTgx
|
11
|
+
ZTlhZGJiNWY5Y2JiNjhmYTIxODI2MzVkYjViM2I2YTJhMzZiYmM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MWVmNTQwZjZkM2I3YjFiMGU4OTNkMTFmOGYxYWJjMWM4ZDVlYmU4MzNjODQ3
|
14
|
+
NmExNjc1NThmNTQ2OTBiYTU1OGEwOGRkZTdmNTYwYzQwMDg0YjE1OGNjMGM3
|
15
|
+
ZGVkMzgzMjQ3MjY0MDNiYjJiOTQ0ZDIxODY4ZDdiNzkyOGQ0YTY=
|
data/.codeclimate.yml
CHANGED
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -6,6 +6,7 @@ This gem provides bindings for the [Rimuhosting](https://www.rimuhosting.com/) [
|
|
6
6
|
[](https://codecov.io/github/akissa/rimu?branch=master)
|
7
7
|
[](https://codeclimate.com/github/akissa/rimu/coverage)
|
8
8
|
[](https://codeclimate.com/github/akissa/rimu)
|
9
|
+
[](https://badge.fury.io/rb/rimu)
|
9
10
|
[](https://www.mozilla.org/MPL/2.0/)
|
10
11
|
|
11
12
|
## Installation
|
data/lib/rimu/orders.rb
CHANGED
@@ -1,9 +1,19 @@
|
|
1
|
+
require 'cgi'
|
2
|
+
|
1
3
|
class Rimu::Orders < Rimu
|
2
|
-
def orders
|
3
|
-
|
4
|
+
def orders(params={})
|
5
|
+
raise ArgumentError, "params should be a hash" unless params.is_a?(Hash)
|
6
|
+
default_params = {
|
7
|
+
:include_inactive => 'N',
|
8
|
+
:server_type => 'VPS',
|
9
|
+
}
|
10
|
+
filters = prep_data(default_params, params)
|
11
|
+
path = "/r/orders;" + filters.collect {|k,v| "#{k}=#{CGI::escape(v.to_s)}"}.join(';')
|
12
|
+
send_request(path, "about_orders")
|
4
13
|
end
|
5
14
|
|
6
|
-
def order(oid
|
7
|
-
|
15
|
+
def order(oid)
|
16
|
+
raise ArgumentError, "oid should be an Integer" unless oid.is_a?(Integer)
|
17
|
+
send_request("/r/orders/order-#{oid}-dn", "about_order")
|
8
18
|
end
|
9
19
|
end
|
data/lib/rimu/servers.rb
CHANGED
@@ -1,45 +1,122 @@
|
|
1
1
|
class Rimu::Servers < Rimu
|
2
|
+
def default_vps_params
|
3
|
+
@default_vps_params = {
|
4
|
+
:billing_oid => nil,
|
5
|
+
:dc_location => nil,
|
6
|
+
:file_injection_data => nil,
|
7
|
+
:host_server_oid => nil,
|
8
|
+
:instantiation_options => {
|
9
|
+
:domain_name => nil,
|
10
|
+
:password => nil,
|
11
|
+
:distro => nil,
|
12
|
+
:cloud_config_data => nil,
|
13
|
+
:control_panel => nil,
|
14
|
+
},
|
15
|
+
:instantiation_via_clone_options => {
|
16
|
+
:domain_name => nil,
|
17
|
+
:vps_order_oid_to_clone => nil,
|
18
|
+
},
|
19
|
+
:ip_request => {
|
20
|
+
:extra_ip_reason => nil,
|
21
|
+
:num_ips => nil,
|
22
|
+
:requested_ips => nil,
|
23
|
+
},
|
24
|
+
:is_just_minimal_init => nil,
|
25
|
+
:meta_data => nil,
|
26
|
+
:pricing_plan_code => nil,
|
27
|
+
:user_oid => nil,
|
28
|
+
:vps_parameters => {
|
29
|
+
:disk_space_mb => nil,
|
30
|
+
:memory_mb => nil,
|
31
|
+
:disk_space_2_mb => nil,
|
32
|
+
},
|
33
|
+
:vps_type => nil,
|
34
|
+
}
|
35
|
+
end
|
36
|
+
|
2
37
|
def create(params)
|
3
|
-
|
38
|
+
raise ArgumentError, "params should be a hash" unless params.is_a?(Hash)
|
39
|
+
raise ArgumentError, "params should contain atleast instantiation_options or instantiation_via_clone_options" \
|
40
|
+
unless params.has_key?(:instantiation_options) || params.has_key?(:instantiation_via_clone_options)
|
41
|
+
data = {:new_order_request => prep_data(default_vps_params, params)}
|
42
|
+
send_request("/r/orders/new-vps", "about_order", "POST", data)
|
4
43
|
end
|
5
44
|
|
6
|
-
def
|
45
|
+
def reinstall(oid, params={})
|
46
|
+
raise ArgumentError, "oid should be an Integer" unless oid.is_a?(Integer)
|
47
|
+
raise ArgumentError, "params should be a hash" unless params.is_a?(Hash)
|
48
|
+
data = {:reinstall_request => prep_data(default_vps_params, params)}
|
49
|
+
send_request("/r/orders/order-#{oid}-dn/vps/reinstall", "running_vps_info", "PUT", data)
|
50
|
+
end
|
51
|
+
|
52
|
+
def status(oid)
|
53
|
+
raise ArgumentError, "oid should be an Integer" unless oid.is_a?(Integer)
|
7
54
|
send_request("/r/orders/order-#{oid}-dn/vps", "running_vps_info")
|
8
55
|
end
|
9
56
|
|
57
|
+
def info(oid)
|
58
|
+
raise ArgumentError, "oid should be an Integer" unless oid.is_a?(Integer)
|
59
|
+
send_request("/r/orders/order-#{oid}-dn/vps", "about_order")
|
60
|
+
end
|
61
|
+
|
10
62
|
def cancel(oid)
|
63
|
+
raise ArgumentError, "oid should be an Integer" unless oid.is_a?(Integer)
|
11
64
|
send_request("/r/orders/order-#{oid}-dn/vps", "cancel_messages", "DELETE")
|
12
65
|
end
|
13
66
|
|
14
67
|
def move(oid, params)
|
15
|
-
|
68
|
+
raise ArgumentError, "oid should be an Integer" unless oid.is_a?(Integer)
|
69
|
+
raise ArgumentError, "params should be a hash" unless params.is_a?(Hash)
|
70
|
+
default_params = {
|
71
|
+
:update_dns=>false,
|
72
|
+
:move_reason=>'',
|
73
|
+
:pricing_change_option=>'CHOOSE_BEST_OPTION',
|
74
|
+
:selected_host_server_oid=>nil
|
75
|
+
}
|
76
|
+
data = {:vps_move_request => prep_data(default_params, params)}
|
77
|
+
send_request("/r/orders/order-#{oid}-dn/vps/host-server", "about_order", "PUT", data)
|
16
78
|
end
|
17
79
|
|
18
|
-
def resize(oid)
|
19
|
-
|
80
|
+
def resize(oid, params)
|
81
|
+
raise ArgumentError, "oid should be an Integer" unless oid.is_a?(Integer)
|
82
|
+
raise ArgumentError, "params should be a hash" unless params.is_a?(Hash)
|
83
|
+
default_params = {
|
84
|
+
:disk_space_2_mb => nil,
|
85
|
+
:disk_space_mb => nil,
|
86
|
+
:memory_mb => nil,
|
87
|
+
}
|
88
|
+
data = {:vps_resize_request => prep_data(default_params, params)}
|
89
|
+
send_request("/r/orders/order-#{oid}-dn/vps/parameters", "resource_change_result", "PUT", data)
|
20
90
|
end
|
21
91
|
|
22
|
-
def
|
23
|
-
|
92
|
+
def change_state(oid, new_state)
|
93
|
+
raise ArgumentError, "oid should be an Integer" unless oid.is_a?(Integer)
|
94
|
+
params = {:running_state_change_request=>{:running_state=>new_state}}
|
95
|
+
send_request("/r/orders/order-#{oid}-dn/vps/running-state", "running_vps_info", "PUT", params)
|
24
96
|
end
|
25
97
|
|
26
|
-
def reboot(oid
|
27
|
-
|
98
|
+
def reboot(oid)
|
99
|
+
raise ArgumentError, "oid should be an Integer" unless oid.is_a?(Integer)
|
100
|
+
change_state(oid, "RESTARTING")
|
28
101
|
end
|
29
102
|
|
30
|
-
def shutdown(oid
|
31
|
-
|
103
|
+
def shutdown(oid)
|
104
|
+
raise ArgumentError, "oid should be an Integer" unless oid.is_a?(Integer)
|
105
|
+
change_state(oid, "NOTRUNNING")
|
32
106
|
end
|
33
107
|
|
34
|
-
def start(oid
|
35
|
-
|
108
|
+
def start(oid)
|
109
|
+
raise ArgumentError, "oid should be an Integer" unless oid.is_a?(Integer)
|
110
|
+
change_state(oid, "RUNNING")
|
36
111
|
end
|
37
112
|
|
38
|
-
def power_cycle(oid
|
39
|
-
|
113
|
+
def power_cycle(oid)
|
114
|
+
raise ArgumentError, "oid should be an Integer" unless oid.is_a?(Integer)
|
115
|
+
change_state(oid, "POWERCYCLING")
|
40
116
|
end
|
41
117
|
|
42
118
|
def data_transfer(oid)
|
119
|
+
raise ArgumentError, "oid should be an Integer" unless oid.is_a?(Integer)
|
43
120
|
send_request("/r/orders/order-#{oid}-dn/vps/data-transfer-usage", "data_transfer_usage_info")
|
44
121
|
end
|
45
122
|
end
|
data/lib/rimu.rb
CHANGED
@@ -28,40 +28,43 @@ class Rimu
|
|
28
28
|
'Content-Type' =>'application/json',
|
29
29
|
'Accept' =>'application/json',
|
30
30
|
'User-Agent' => 'RimuAPI-Ruby',
|
31
|
-
'Authorization' => 'rimuhosting apikey
|
31
|
+
'Authorization' => 'rimuhosting apikey=#{api_key}',
|
32
32
|
}
|
33
33
|
end
|
34
34
|
|
35
35
|
def post(path, data)
|
36
|
-
logger.info "POST #{api_url
|
37
|
-
|
38
|
-
HTTParty.post(api_url + path,
|
36
|
+
logger.info "POST #{api_url}#{path} body:#{data.inspect}" if logger
|
37
|
+
options = {headers: set_headers, body: data}
|
38
|
+
HTTParty.post(api_url + path, options).parsed_response
|
39
39
|
end
|
40
40
|
|
41
41
|
def get(path)
|
42
|
-
logger.info "GET #{api_url
|
43
|
-
|
44
|
-
HTTParty.get(api_url + path,
|
42
|
+
logger.info "GET #{api_url}#{path}" if logger
|
43
|
+
options = {headers: set_headers}
|
44
|
+
HTTParty.get(api_url + path, options).parsed_response
|
45
45
|
end
|
46
46
|
|
47
47
|
def delete(path)
|
48
|
-
logger.info "DELETE #{api_url
|
49
|
-
|
50
|
-
HTTParty.delete(api_url + path,
|
48
|
+
logger.info "DELETE #{api_url}#{path}" if logger
|
49
|
+
options = {headers: set_headers}
|
50
|
+
HTTParty.delete(api_url + path, options).parsed_response
|
51
51
|
end
|
52
52
|
|
53
53
|
def error?(response)
|
54
|
-
response and response["
|
54
|
+
response and response["jaxrs_response"] and \
|
55
|
+
response["jaxrs_response"]["response_type"] and \
|
56
|
+
response["jaxrs_response"]["response_type"] == "ERROR"
|
55
57
|
end
|
56
58
|
|
57
59
|
def error_message(response)
|
58
|
-
response["
|
59
|
-
" - Error #{err["human_readable_message"]}. "
|
60
|
-
}.join("\n")
|
60
|
+
" - Error: #{response["jaxrs_response"]["human_readable_message"]}"
|
61
61
|
end
|
62
62
|
|
63
63
|
def format_response(response, field)
|
64
|
-
result = response[
|
64
|
+
result = response[response.keys[0]]
|
65
|
+
if result.is_a?(Hash) and result.has_key?(field)
|
66
|
+
result = result[field]
|
67
|
+
end
|
65
68
|
return result.collect {|item| convert_item(item) } if result.class == Array
|
66
69
|
return result unless result.respond_to?(:keys)
|
67
70
|
convert_item(result)
|
@@ -75,7 +78,7 @@ class Rimu
|
|
75
78
|
OpenStruct.new(response)
|
76
79
|
end
|
77
80
|
|
78
|
-
def send_request(path, field, method="GET", data=
|
81
|
+
def send_request(path, field, method="GET", data=nil)
|
79
82
|
if method == "POST"
|
80
83
|
response = post(path, data)
|
81
84
|
elsif method == "PUT"
|
@@ -97,8 +100,21 @@ class Rimu
|
|
97
100
|
send_request("/r/billing-methods", "billing_methods")
|
98
101
|
end
|
99
102
|
|
100
|
-
def pricing_plans
|
101
|
-
|
103
|
+
# def pricing_plans
|
104
|
+
# send_request("/r/pricing-plans", "pricing_plan_infos")
|
105
|
+
# end
|
106
|
+
|
107
|
+
def prep_data(default_params, params)
|
108
|
+
params.keep_if {|k,_| default_params.keys.include? k }
|
109
|
+
new_params = default_params.merge(params)
|
110
|
+
new_params.each_pair do |key, val|
|
111
|
+
if val.is_a?(Hash)
|
112
|
+
val.keep_if {|_,v| v != nil }
|
113
|
+
val.keep_if {|k,_| default_params[key].keys.include? k }
|
114
|
+
end
|
115
|
+
end
|
116
|
+
new_params.keep_if {|_,v| (v.is_a?(Hash) && ! v.empty?) || (! v.is_a?(Hash) && v != nil) }
|
117
|
+
return new_params
|
102
118
|
end
|
103
119
|
|
104
120
|
def self.has_namespace(*namespaces)
|
data/rimu.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "rimu"
|
5
|
-
spec.version = "0.0.
|
5
|
+
spec.version = "0.0.2"
|
6
6
|
spec.authors = ["Andrew Colin Kissa"]
|
7
7
|
spec.email = ["andrew@topdog.za.net"]
|
8
8
|
spec.license = "MPL-2.0"
|
@@ -15,11 +15,15 @@ Gem::Specification.new do |spec|
|
|
15
15
|
spec.bindir = "exe"
|
16
16
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
17
17
|
spec.require_paths = ["lib"]
|
18
|
+
spec.required_ruby_version = '>= 1.9.3'
|
19
|
+
spec.extra_rdoc_files = ['README.md']
|
18
20
|
|
19
21
|
spec.add_development_dependency "bundler", "~> 1.10"
|
20
22
|
spec.add_development_dependency "rake", "~> 10.0"
|
21
|
-
spec.add_development_dependency "rspec"
|
22
|
-
spec.add_development_dependency "
|
23
|
+
spec.add_development_dependency "rspec"
|
24
|
+
spec.add_development_dependency "rspec-core"
|
25
|
+
spec.add_development_dependency "rspec-expectations"
|
26
|
+
spec.add_development_dependency "mocha", "~> 0"
|
23
27
|
spec.add_runtime_dependency "httparty", "~> 0.0"
|
24
28
|
spec.add_runtime_dependency "json", "~> 1.0"
|
25
29
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rimu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Colin Kissa
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -42,14 +42,42 @@ dependencies:
|
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ! '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec-core
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec-expectations
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
53
81
|
- !ruby/object:Gem::Version
|
54
82
|
version: '0'
|
55
83
|
- !ruby/object:Gem::Dependency
|
@@ -99,7 +127,8 @@ email:
|
|
99
127
|
- andrew@topdog.za.net
|
100
128
|
executables: []
|
101
129
|
extensions: []
|
102
|
-
extra_rdoc_files:
|
130
|
+
extra_rdoc_files:
|
131
|
+
- README.md
|
103
132
|
files:
|
104
133
|
- .codeclimate.yml
|
105
134
|
- .gitignore
|
@@ -126,7 +155,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
126
155
|
requirements:
|
127
156
|
- - ! '>='
|
128
157
|
- !ruby/object:Gem::Version
|
129
|
-
version:
|
158
|
+
version: 1.9.3
|
130
159
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
160
|
requirements:
|
132
161
|
- - ! '>='
|