rimu 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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
  - - ! '>='