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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MzA2MTJjMDViNTBkNDQ0YmM2ZDBlZTA5MDUyZjdhMTNhZjVkYzBkOQ==
4
+ ODY3ZWYzM2U4MTA2ZjcxMDM2MWEwYTMzYWEzZjgzOTYxZjg4Mjg2MQ==
5
5
  data.tar.gz: !binary |-
6
- ZDRmNWFkMzllODgwNjE5M2FiNjBhZWRmYThhMzBiNGEzZWQzNTkxNg==
6
+ NTk0MTNkMDRkYjU2NDgxODlmZmQ4YWFjOGY3N2FjYjY4MjA2ZWQwMQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YjQ5YTAzYjRkZDI2ZDJhODUwMWRhMGRhZTQ1NDdhZjllZWQwODk5NzhmNmQ1
10
- OTk1ZWZmOTQxZGE3MGJlMjliY2JiYTQ1NmJiMDIwODdkZjM2MTc5OWFmNmNi
11
- ZTIyNTBjZTc3NjUzMzFkYjI1ODEyYmVmZTE2OTg1NmMzYTRmMjg=
9
+ ZmQ3OTVlNzRiMTM2NTgwZDIyMmFmYTJhY2VhZDFiODg1NGQ0OWMwOGI4MzQ5
10
+ ODlkZWViNDFkMzRjMTdlOWNlMTQyNDk5M2MxZGRkZjlmMjliYWQ5NDI2NTgx
11
+ ZTlhZGJiNWY5Y2JiNjhmYTIxODI2MzVkYjViM2I2YTJhMzZiYmM=
12
12
  data.tar.gz: !binary |-
13
- YzU0NTk3ODBmMTlkZGIwY2YyMDcxOWNiNjk2ZWIwNWQ5MWNjMzlmZjM5NWY2
14
- ZGQzMzI3NzBiNWY4OTIxZThmZWRmM2VhMzBlODI3MDIxMzIzNmIzMDU0N2Q3
15
- NTQ1YTIzMjAzM2U2ZmE4ZjViZDM3NGM3Y2Q4ZWZkYzYwM2M5ZGI=
13
+ MWVmNTQwZjZkM2I3YjFiMGU4OTNkMTFmOGYxYWJjMWM4ZDVlYmU4MzNjODQ3
14
+ NmExNjc1NThmNTQ2OTBiYTU1OGEwOGRkZTdmNTYwYzQwMDg0YjE1OGNjMGM3
15
+ ZGVkMzgzMjQ3MjY0MDNiYjJiOTQ0ZDIxODY4ZDdiNzkyOGQ0YTY=
data/.codeclimate.yml CHANGED
@@ -1,11 +1,12 @@
1
1
  ---
2
2
  engines:
3
3
  fixme:
4
- enabled: true
4
+ enabled: true
5
5
  rubocop:
6
- enabled: true
6
+ enabled: true
7
7
  ratings:
8
- paths:
9
- - "**.rb"
8
+ paths:
9
+ - "**.rb"
10
10
  exclude_paths:
11
- - spec/**/*
11
+ - "**.yml"
12
+ - spec/**/*
data/.gitignore CHANGED
@@ -1,5 +1,6 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
+ /*.gem
3
4
  /Gemfile.lock
4
5
  /_yardoc/
5
6
  /coverage/
data/README.md CHANGED
@@ -6,6 +6,7 @@ This gem provides bindings for the [Rimuhosting](https://www.rimuhosting.com/) [
6
6
  [![codecov.io](https://codecov.io/github/akissa/rimu/coverage.svg?branch=master)](https://codecov.io/github/akissa/rimu?branch=master)
7
7
  [![Test Coverage](https://codeclimate.com/github/akissa/rimu/badges/coverage.svg)](https://codeclimate.com/github/akissa/rimu/coverage)
8
8
  [![Code Climate](https://codeclimate.com/github/akissa/rimu/badges/gpa.svg)](https://codeclimate.com/github/akissa/rimu)
9
+ [![Gem Version](https://badge.fury.io/rb/rimu.svg)](https://badge.fury.io/rb/rimu)
9
10
  [![MPLv2 License](https://img.shields.io/badge/license-MPLv2-blue.svg?style=flat-square)](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
- send_request("/r/orders", "about_orders")
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, domain)
7
- send_request("/r/orders/order-#{oid}-#{domain}", "about_order")
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
- send_request("/r/orders/new-vps", "about_order", "POST", params)
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 info(oid)
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
- send_request("/r/orders/order-#{oid}-dn/vps/host-server", "about_order", "PUT", params)
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
- send_request("/r/orders/order-#{oid}-dn/vps/parameters", "resource_change_result", "PUT", params)
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 reinstall(oid)
23
- send_request("/r/orders/order-#{oid}-dn/vps/reinstall", "running_vps_info", "PUT", params)
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, params)
27
- send_request("/r/orders/order-#{oid}-dn/vps/running-state", "running_vps_info", "PUT", params)
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, params)
31
- send_request("/r/orders/order-#{oid}-dn/vps/running-state", "running_vps_info", "PUT", params)
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, params)
35
- send_request("/r/orders/order-#{oid}-dn/vps/running-state", "running_vps_info", "PUT", params)
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, params)
39
- send_request("/r/orders/order-#{oid}-dn/vps/running-state", "running_vps_info", "PUT", params)
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=' % @api_key
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.to_s}#{path} body:#{data.inspect}" if logger
37
- @options = {headers: set_headers, body: data}
38
- HTTParty.post(api_url + path, @options).parsed_response
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.to_s}#{path}" if logger
43
- @options = {headers: set_headers}
44
- HTTParty.get(api_url + path, @options).parsed_response
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.to_s}#{path}" if logger
49
- @options = {headers: set_headers}
50
- HTTParty.delete(api_url + path, @options).parsed_response
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["extended_error_infos"] and ! response["extended_error_infos"].empty?
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["extended_error_infos"].collect { |err|
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[field]
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=false)
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
- send_request("/r/pricing-plans", "billing_methods")
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.1"
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", '~> 0'
22
- spec.add_development_dependency "mocha", '~> 0'
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.1
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-19 00:00:00.000000000 Z
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: '0'
158
+ version: 1.9.3
130
159
  required_rubygems_version: !ruby/object:Gem::Requirement
131
160
  requirements:
132
161
  - - ! '>='