right_api_client 1.5.5 → 1.5.6
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +4 -0
- data/LICENSE.txt +17 -16
- data/README.rdoc +6 -0
- data/lib/right_api_client/client.rb +18 -9
- data/lib/right_api_client/exceptions.rb +15 -0
- data/lib/right_api_client/helper.rb +0 -11
- data/lib/right_api_client/resource.rb +16 -12
- data/lib/right_api_client/resource_detail.rb +14 -12
- data/lib/right_api_client/resources.rb +19 -12
- data/lib/right_api_client/version.rb +1 -1
- data/right_api_client.rconf +3 -3
- data/spec/resource_detail_spec.rb +2 -7
- data/spec/resource_spec.rb +3 -3
- data/spec/resources_spec.rb +3 -3
- metadata +77 -85
data/CHANGELOG.rdoc
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
= right_api_client - CHANGELOG.rdoc
|
2
2
|
|
3
|
+
== right_api_client - 1.5.6
|
4
|
+
Remove unused constant. Fix license and read me.
|
5
|
+
Refs #11682 - allow all methods on resource classes and post them to rightapi.
|
6
|
+
|
3
7
|
== right_api_client - 1.5.5
|
4
8
|
Fix crash on audit_entry.detail.show (text and not JSON).
|
5
9
|
|
data/LICENSE.txt
CHANGED
@@ -1,19 +1,20 @@
|
|
1
|
-
Copyright (c)
|
1
|
+
Copyright (c) 2009-2012 RightScale, Inc.
|
2
2
|
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
-
of this software and associated documentation files (the
|
5
|
-
in the Software without restriction, including
|
6
|
-
to use, copy, modify, merge, publish,
|
7
|
-
copies of the Software, and to
|
8
|
-
furnished to do so, subject to
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
'Software'), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
9
10
|
|
10
|
-
The above copyright notice and this permission notice shall be
|
11
|
-
all copies or substantial portions of the Software.
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
12
13
|
|
13
|
-
THE SOFTWARE IS PROVIDED
|
14
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
15
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
16
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
17
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
18
|
-
OUT OF OR IN CONNECTION WITH THE
|
19
|
-
THE SOFTWARE.
|
14
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
17
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
18
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
19
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
20
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
CHANGED
@@ -194,3 +194,9 @@ Put these special cases in the <tt>RightApi::Helper::RESOURCE_TYPE_SPECIAL_ACTIO
|
|
194
194
|
|
195
195
|
=== Resources are not linked together
|
196
196
|
- In ResourceDetail, resource_type = Instance, need live_tasks as a method.
|
197
|
+
|
198
|
+
= Troubleshooting
|
199
|
+
|
200
|
+
== Wrong ruby version
|
201
|
+
|
202
|
+
Ruby 1.9 is required. Ruby 1.8 will give undefined results, such as missing attributes.
|
@@ -8,6 +8,7 @@ require File.expand_path('../helper', __FILE__)
|
|
8
8
|
require File.expand_path('../resource', __FILE__)
|
9
9
|
require File.expand_path('../resource_detail', __FILE__)
|
10
10
|
require File.expand_path('../resources', __FILE__)
|
11
|
+
require File.expand_path('../exceptions', __FILE__)
|
11
12
|
|
12
13
|
# RightApiClient has the generic get/post/delete/put calls that are used by resources
|
13
14
|
module RightApi
|
@@ -132,13 +133,15 @@ module RightApi
|
|
132
133
|
end
|
133
134
|
|
134
135
|
[type, response.body]
|
136
|
+
when 404
|
137
|
+
raise Exceptions::UnknownRouteException.new("HTTP Code: #{response.code.to_s}, Response body: #{response.body}")
|
135
138
|
else
|
136
|
-
raise "
|
139
|
+
raise Exceptions::ApiException.new("HTTP Code: #{response.code.to_s}, Response body: #{response.body}")
|
137
140
|
end
|
138
141
|
end
|
139
|
-
|
140
|
-
rescue RuntimeError => e
|
142
|
+
rescue Exceptions::ApiException => e
|
141
143
|
if re_login?(e)
|
144
|
+
#Session cookie is expired or invalid
|
142
145
|
@cookies = login()
|
143
146
|
retry
|
144
147
|
else
|
@@ -183,11 +186,13 @@ module RightApi
|
|
183
186
|
else
|
184
187
|
response.return!(request, result)
|
185
188
|
end
|
189
|
+
when 404
|
190
|
+
raise Exceptions::UnknownRouteException.new("HTTP Code: #{response.code.to_s}, Response body: #{response.body}")
|
186
191
|
else
|
187
|
-
raise "
|
192
|
+
raise Exceptions::ApiException.new("HTTP Code: #{response.code.to_s}, Response body: #{response.body}")
|
188
193
|
end
|
189
194
|
end
|
190
|
-
rescue
|
195
|
+
rescue Exceptions::ApiException => e
|
191
196
|
if re_login?(e)
|
192
197
|
@cookies = login()
|
193
198
|
retry
|
@@ -203,11 +208,13 @@ module RightApi
|
|
203
208
|
@rest_client[path].delete(headers) do |response, request, result|
|
204
209
|
case response.code
|
205
210
|
when 200, 204
|
211
|
+
when 404
|
212
|
+
raise Exceptions::UnknownRouteException.new("HTTP Code: #{response.code.to_s}, Response body: #{response.body}")
|
206
213
|
else
|
207
|
-
raise "
|
214
|
+
raise Exceptions::ApiException.new("HTTP Code: #{response.code.to_s}, Response body: #{response.body}")
|
208
215
|
end
|
209
216
|
end
|
210
|
-
rescue
|
217
|
+
rescue Exceptions::ApiException => e
|
211
218
|
if re_login?(e)
|
212
219
|
@cookies = login()
|
213
220
|
retry
|
@@ -223,11 +230,13 @@ module RightApi
|
|
223
230
|
@rest_client[path].put(params, headers) do |response, request, result|
|
224
231
|
case response.code
|
225
232
|
when 204
|
233
|
+
when 404
|
234
|
+
raise Exceptions::UnknownRouteException.new("HTTP Code: #{response.code.to_s}, Response body: #{response.body}")
|
226
235
|
else
|
227
|
-
raise "
|
236
|
+
raise Exceptions::ApiException.new("HTTP Code: #{response.code.to_s}, Response body: #{response.body}")
|
228
237
|
end
|
229
238
|
end
|
230
|
-
rescue
|
239
|
+
rescue Exceptions::ApiException => e
|
231
240
|
if re_login?(e)
|
232
241
|
@cookies = login()
|
233
242
|
retry
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module RightApi
|
2
|
+
module Exceptions
|
3
|
+
class ApiException < RuntimeError
|
4
|
+
def initialize(message="")
|
5
|
+
super("Error: #{message}")
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
class UnknownRouteException < ApiException
|
10
|
+
def initialize(message="")
|
11
|
+
super("Unknown action or route. #{message}")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -7,17 +7,6 @@ module RightApi::Helper
|
|
7
7
|
'setting' => 'multi_cloud_image_setting'
|
8
8
|
}
|
9
9
|
|
10
|
-
# TODO: add this information to the API instead
|
11
|
-
# The API does not provide information about the basic actions that can be
|
12
|
-
# performed on a resource so define them here:
|
13
|
-
RESOURCE_ACTIONS = {
|
14
|
-
:create => ['deployments', 'server_arrays', 'servers', 'ssh_keys', 'volumes', 'volume_snapshots', 'volume_attachments', 'backups', 'audit_entries'],
|
15
|
-
:destroy => ['deployment', 'server_array', 'server', 'ssh_key', 'volume', 'volume_snapshot', 'volume_attachment', 'backup'],
|
16
|
-
:update => ['deployment', 'instance', 'server_array', 'server', 'backup', 'audit_entries'],
|
17
|
-
:no_index => ['tags', 'tasks', 'monitoring_metric_data'], # Easier to specify those that don't need an index call
|
18
|
-
:no_show => ['input', 'session', 'resource_tag'] # Once again, easier to define those that don't have a show call
|
19
|
-
}
|
20
|
-
|
21
10
|
# Some RightApi::Resources have methods that operate on the resource type itself
|
22
11
|
# and not on a particular one (ie: without specifying an id). Place these here:
|
23
12
|
RESOURCE_SPECIAL_ACTIONS = {
|
@@ -3,6 +3,7 @@ module RightApi
|
|
3
3
|
# This class dynamically adds methods and properties to instances depending on what type of resource they are.
|
4
4
|
class Resource
|
5
5
|
include Helper
|
6
|
+
attr_reader :client, :href
|
6
7
|
|
7
8
|
# Will create a (or an array of) new Resource object(s)
|
8
9
|
# All parameters are treated as read only
|
@@ -33,29 +34,32 @@ module RightApi
|
|
33
34
|
resource_type = INCONSISTENT_RESOURCE_TYPES[resource_type]
|
34
35
|
end
|
35
36
|
# For the inspect function:
|
37
|
+
@client = client
|
36
38
|
@resource_type = resource_type
|
37
39
|
@hash = hash
|
40
|
+
@href = href
|
38
41
|
|
39
42
|
# Add destroy method to relevant resources
|
40
|
-
|
41
|
-
|
42
|
-
client.do_delete(href)
|
43
|
-
end
|
43
|
+
define_instance_method('destroy') do
|
44
|
+
client.do_delete(href)
|
44
45
|
end
|
45
46
|
|
46
47
|
# Add update method to relevant resources
|
47
|
-
|
48
|
-
|
49
|
-
client.do_put(href, *args)
|
50
|
-
end
|
48
|
+
define_instance_method('update') do |*args|
|
49
|
+
client.do_put(href, *args)
|
51
50
|
end
|
52
51
|
|
53
52
|
# Add show method to relevant resources
|
54
|
-
|
55
|
-
|
56
|
-
RightApi::ResourceDetail.new(client, *client.do_get(href, *args))
|
57
|
-
end
|
53
|
+
define_instance_method('show') do |*args|
|
54
|
+
RightApi::ResourceDetail.new(client, *client.do_get(href, *args))
|
58
55
|
end
|
59
56
|
end
|
57
|
+
|
58
|
+
#Any other method other than standard actions(show,update,destroy) is simply appended to the href and
|
59
|
+
#called with a POST.
|
60
|
+
def method_missing(m, *args)
|
61
|
+
action_href = href + "/" + m.to_s
|
62
|
+
client.do_post(action_href, *args)
|
63
|
+
end
|
60
64
|
end
|
61
65
|
end
|
@@ -91,25 +91,27 @@ module RightApi
|
|
91
91
|
end
|
92
92
|
|
93
93
|
# Add destroy method to relevant resources
|
94
|
-
|
95
|
-
|
96
|
-
client.do_delete(href)
|
97
|
-
end
|
94
|
+
define_instance_method('destroy') do
|
95
|
+
client.do_delete(href)
|
98
96
|
end
|
99
97
|
|
100
98
|
# Add update method to relevant resources
|
101
|
-
|
102
|
-
|
103
|
-
client.do_put(href, *args)
|
104
|
-
end
|
99
|
+
define_instance_method('update') do |*args|
|
100
|
+
client.do_put(href, *args)
|
105
101
|
end
|
106
102
|
|
107
103
|
# Add show method to relevant resources
|
108
|
-
|
109
|
-
|
110
|
-
self
|
111
|
-
end
|
104
|
+
define_instance_method('show') do |*args|
|
105
|
+
self
|
112
106
|
end
|
113
107
|
end
|
108
|
+
|
109
|
+
#Any other method other than standard actions(show,update,destroy) is simply appended to the href and
|
110
|
+
#called with a POST.
|
111
|
+
def method_missing(m, *args)
|
112
|
+
#The method href would have been defined while initializing the object
|
113
|
+
action_href = href + "/" + m.to_s
|
114
|
+
client.do_post(action_href, *args)
|
115
|
+
end
|
114
116
|
end
|
115
117
|
end
|
@@ -6,6 +6,7 @@ module RightApi
|
|
6
6
|
class Resources
|
7
7
|
include Helper
|
8
8
|
|
9
|
+
attr_reader :client, :path
|
9
10
|
def inspect
|
10
11
|
"#<#{self.class.name} " +
|
11
12
|
"resource_type=\"#{@resource_type}\">"
|
@@ -15,26 +16,25 @@ module RightApi
|
|
15
16
|
# Resource_type should always be plural.
|
16
17
|
# All parameters are treated as read only
|
17
18
|
def initialize(client, path, resource_type)
|
19
|
+
@client = client
|
20
|
+
@path = path
|
21
|
+
|
18
22
|
if INCONSISTENT_RESOURCE_TYPES.has_key?(get_singular(resource_type))
|
19
23
|
resource_type = INCONSISTENT_RESOURCE_TYPES[get_singular(resource_type)] + 's'
|
20
24
|
end
|
21
25
|
@resource_type = resource_type
|
22
26
|
# Add create methods for the relevant root RightApi::Resources
|
23
|
-
|
24
|
-
|
25
|
-
client.do_post(path, *args)
|
26
|
-
end
|
27
|
+
self.define_instance_method('create') do |*args|
|
28
|
+
client.do_post(path, *args)
|
27
29
|
end
|
28
30
|
|
29
31
|
# Add in index methods for the relevant root RightApi::Resources
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
RightApi::Resource.process(client, *client.do_get(path, *args))
|
37
|
-
end
|
32
|
+
self.define_instance_method('index') do |*args|
|
33
|
+
# Session uses .index like a .show (so need to treat it as a special case)
|
34
|
+
if resource_type == 'session'
|
35
|
+
ResourceDetail.new(client, *client.do_get(path, *args))
|
36
|
+
else
|
37
|
+
RightApi::Resource.process(client, *client.do_get(path, *args))
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
@@ -47,5 +47,12 @@ module RightApi
|
|
47
47
|
end
|
48
48
|
end if Helper::RESOURCE_SPECIAL_ACTIONS[resource_type]
|
49
49
|
end
|
50
|
+
|
51
|
+
#Any other method other than standard actions(create, index) is simply appended to the path and
|
52
|
+
#called with a POST.
|
53
|
+
def method_missing(m, *args)
|
54
|
+
action_path = path + "/" + m.to_s
|
55
|
+
client.do_post(action_path, *args)
|
56
|
+
end
|
50
57
|
end
|
51
58
|
end
|
data/right_api_client.rconf
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
ruby do
|
2
|
-
version 'ruby-1.9.
|
3
|
-
rubygems '1.
|
2
|
+
version 'ruby-1.9.3-p125'
|
3
|
+
rubygems '1.8.11'
|
4
4
|
gemset 'right_api_client'
|
5
5
|
end
|
6
6
|
bundler do
|
7
|
-
version '1.0.
|
7
|
+
version '1.0.21'
|
8
8
|
exclusions 'deployment'
|
9
9
|
bundle_path File.join(ENV["HOME"], '.rightscale_bundle', 'right_api_client')
|
10
10
|
end
|
@@ -12,11 +12,6 @@ describe RightApi::ResourceDetail do
|
|
12
12
|
resource.api_methods.sort.collect{|s| s.to_s}.should == ["destroy", "links", "show", "update"]
|
13
13
|
end
|
14
14
|
|
15
|
-
it "Should not have destroy/show/update for instances of the ResourceDetail class that do not support them" do
|
16
|
-
resource = RightApi::ResourceDetail.new(@client, 'session', '/api/session', {})
|
17
|
-
resource.api_methods.sort.collect{|s| s.to_s}.should == ["links"]
|
18
|
-
end
|
19
|
-
|
20
15
|
it "Should have resource-specific methods for instances of the ResourceDetail class" do
|
21
16
|
resource = RightApi::ResourceDetail.new(@client, 'deployment', '/api/deployments/1',
|
22
17
|
{:attribute1 => 'value1', :attribute2 => 'value2'})
|
@@ -42,7 +37,7 @@ describe RightApi::ResourceDetail do
|
|
42
37
|
|
43
38
|
it "Should have live_tasks for the 'instance' resource" do
|
44
39
|
resource = RightApi::ResourceDetail.new(@client, 'instance', '/api/instances/1', {})
|
45
|
-
resource.api_methods.sort.collect{|s| s.to_s}.should == ["links", "live_tasks", "show", "update"]
|
40
|
+
resource.api_methods.sort.collect{|s| s.to_s}.should == ["destroy", "links", "live_tasks", "show", "update"]
|
46
41
|
flexmock(RightApi::Resource).should_receive(:process).with(@client, 'live_task', '/api/instances/1/live/tasks/1').and_return('ok')
|
47
42
|
resource.live_tasks(:id => '1').should == 'ok'
|
48
43
|
end
|
@@ -56,4 +51,4 @@ describe RightApi::ResourceDetail do
|
|
56
51
|
resource.api_methods.collect{|s| s.to_s}.sort.should == ["current_instance", "destroy", "href", "links", "show", "update"]
|
57
52
|
end
|
58
53
|
end
|
59
|
-
end
|
54
|
+
end
|
data/spec/resource_spec.rb
CHANGED
@@ -12,9 +12,9 @@ describe RightApi::Resource do
|
|
12
12
|
resource.api_methods.sort.collect{|s| s.to_s}.should == ["destroy", "show", "update"]
|
13
13
|
end
|
14
14
|
|
15
|
-
it "Should
|
15
|
+
it "Should have destroy/show/update for all instances of the Resource class" do
|
16
16
|
resource = RightApi::Resource.process(@client, 'session', '/api/session')
|
17
|
-
resource.api_methods.sort.should == []
|
17
|
+
resource.api_methods.sort.should == [:destroy, :show, :update]
|
18
18
|
end
|
19
19
|
|
20
20
|
it "Should have an array of ResourceDetail instances for index calls" do
|
@@ -22,4 +22,4 @@ describe RightApi::Resource do
|
|
22
22
|
resources.first.class.should == RightApi::ResourceDetail
|
23
23
|
end
|
24
24
|
end
|
25
|
-
end
|
25
|
+
end
|
data/spec/resources_spec.rb
CHANGED
@@ -12,9 +12,9 @@ describe RightApi::Resources do
|
|
12
12
|
resource.api_methods.sort.collect{|s| s.to_s}.should == ["create", "index"]
|
13
13
|
end
|
14
14
|
|
15
|
-
it "Should
|
15
|
+
it "Should have index even for instances of the Resources class that do not support it" do
|
16
16
|
resource = RightApi::Resources.new(@client, '/api/tags', 'tags')
|
17
|
-
resource.api_methods.sort.collect{|s| s.to_s}.should == ["by_resource", "by_tag", "multi_add", "multi_delete"]
|
17
|
+
resource.api_methods.sort.collect{|s| s.to_s}.should == ["by_resource", "by_tag", "create", "index", "multi_add", "multi_delete"]
|
18
18
|
end
|
19
19
|
|
20
20
|
it "Should have resource-specific methods for instances of the Resources class" do
|
@@ -22,4 +22,4 @@ describe RightApi::Resources do
|
|
22
22
|
resource.api_methods.sort.collect{|s| s.to_s}.should == ["cleanup", "create", "index"]
|
23
23
|
end
|
24
24
|
end
|
25
|
-
end
|
25
|
+
end
|
metadata
CHANGED
@@ -1,108 +1,103 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: right_api_client
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.5.6
|
4
5
|
prerelease:
|
5
|
-
version: 1.5.5
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- RightScale, Inc.
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-03-02 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
17
15
|
name: json
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70331231890480 !ruby/object:Gem::Requirement
|
20
17
|
none: false
|
21
|
-
requirements:
|
22
|
-
- -
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version:
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
25
22
|
type: :runtime
|
26
|
-
version_requirements: *id001
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rest-client
|
29
23
|
prerelease: false
|
30
|
-
|
24
|
+
version_requirements: *70331231890480
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rest-client
|
27
|
+
requirement: &70331231889980 !ruby/object:Gem::Requirement
|
31
28
|
none: false
|
32
|
-
requirements:
|
33
|
-
- -
|
34
|
-
- !ruby/object:Gem::Version
|
29
|
+
requirements:
|
30
|
+
- - =
|
31
|
+
- !ruby/object:Gem::Version
|
35
32
|
version: 1.6.7
|
36
33
|
type: :runtime
|
37
|
-
version_requirements: *id002
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
|
-
name: rake
|
40
34
|
prerelease: false
|
41
|
-
|
35
|
+
version_requirements: *70331231889980
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rake
|
38
|
+
requirement: &70331231889480 !ruby/object:Gem::Requirement
|
42
39
|
none: false
|
43
|
-
requirements:
|
44
|
-
- -
|
45
|
-
- !ruby/object:Gem::Version
|
40
|
+
requirements:
|
41
|
+
- - =
|
42
|
+
- !ruby/object:Gem::Version
|
46
43
|
version: 0.8.7
|
47
44
|
type: :development
|
48
|
-
version_requirements: *id003
|
49
|
-
- !ruby/object:Gem::Dependency
|
50
|
-
name: rspec
|
51
45
|
prerelease: false
|
52
|
-
|
46
|
+
version_requirements: *70331231889480
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rspec
|
49
|
+
requirement: &70331231889020 !ruby/object:Gem::Requirement
|
53
50
|
none: false
|
54
|
-
requirements:
|
55
|
-
- -
|
56
|
-
- !ruby/object:Gem::Version
|
51
|
+
requirements:
|
52
|
+
- - =
|
53
|
+
- !ruby/object:Gem::Version
|
57
54
|
version: 1.3.0
|
58
55
|
type: :development
|
59
|
-
version_requirements: *id004
|
60
|
-
- !ruby/object:Gem::Dependency
|
61
|
-
name: flexmock
|
62
56
|
prerelease: false
|
63
|
-
|
57
|
+
version_requirements: *70331231889020
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: flexmock
|
60
|
+
requirement: &70331231888560 !ruby/object:Gem::Requirement
|
64
61
|
none: false
|
65
|
-
requirements:
|
66
|
-
- -
|
67
|
-
- !ruby/object:Gem::Version
|
62
|
+
requirements:
|
63
|
+
- - =
|
64
|
+
- !ruby/object:Gem::Version
|
68
65
|
version: 0.8.7
|
69
66
|
type: :development
|
70
|
-
version_requirements: *id005
|
71
|
-
- !ruby/object:Gem::Dependency
|
72
|
-
name: simplecov
|
73
67
|
prerelease: false
|
74
|
-
|
68
|
+
version_requirements: *70331231888560
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: simplecov
|
71
|
+
requirement: &70331231888100 !ruby/object:Gem::Requirement
|
75
72
|
none: false
|
76
|
-
requirements:
|
77
|
-
- -
|
78
|
-
- !ruby/object:Gem::Version
|
73
|
+
requirements:
|
74
|
+
- - =
|
75
|
+
- !ruby/object:Gem::Version
|
79
76
|
version: 0.4.2
|
80
77
|
type: :development
|
81
|
-
version_requirements: *id006
|
82
|
-
- !ruby/object:Gem::Dependency
|
83
|
-
name: bundler
|
84
78
|
prerelease: false
|
85
|
-
|
79
|
+
version_requirements: *70331231888100
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: bundler
|
82
|
+
requirement: &70331231887720 !ruby/object:Gem::Requirement
|
86
83
|
none: false
|
87
|
-
requirements:
|
88
|
-
- -
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version:
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
91
88
|
type: :development
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *70331231887720
|
91
|
+
description: ! "\nThe right_api_client gem simplifies the use of RightScale's MultiCloud
|
92
|
+
API. It provides\na simple object model of the API resources, and handles all of
|
93
|
+
the fine details involved\nin making HTTP calls and translating their responses.\n
|
94
|
+
\ "
|
95
|
+
email:
|
98
96
|
- rubygems@rightscale.com
|
99
97
|
executables: []
|
100
|
-
|
101
98
|
extensions: []
|
102
|
-
|
103
99
|
extra_rdoc_files: []
|
104
|
-
|
105
|
-
files:
|
100
|
+
files:
|
106
101
|
- .gitignore
|
107
102
|
- CHANGELOG.rdoc
|
108
103
|
- Gemfile
|
@@ -112,6 +107,7 @@ files:
|
|
112
107
|
- config/login.yml.example
|
113
108
|
- lib/right_api_client.rb
|
114
109
|
- lib/right_api_client/client.rb
|
110
|
+
- lib/right_api_client/exceptions.rb
|
115
111
|
- lib/right_api_client/helper.rb
|
116
112
|
- lib/right_api_client/resource.rb
|
117
113
|
- lib/right_api_client/resource_detail.rb
|
@@ -127,35 +123,31 @@ files:
|
|
127
123
|
- spec/resource_spec.rb
|
128
124
|
- spec/resources_spec.rb
|
129
125
|
- spec/spec_helper.rb
|
130
|
-
has_rdoc: true
|
131
126
|
homepage: https://github.com/rightscale/right_api_client
|
132
127
|
licenses: []
|
133
|
-
|
134
128
|
post_install_message:
|
135
129
|
rdoc_options: []
|
136
|
-
|
137
|
-
require_paths:
|
130
|
+
require_paths:
|
138
131
|
- lib
|
139
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
132
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
140
133
|
none: false
|
141
|
-
requirements:
|
142
|
-
- -
|
143
|
-
- !ruby/object:Gem::Version
|
144
|
-
version:
|
145
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ! '>='
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0'
|
138
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
146
139
|
none: false
|
147
|
-
requirements:
|
148
|
-
- -
|
149
|
-
- !ruby/object:Gem::Version
|
150
|
-
version:
|
140
|
+
requirements:
|
141
|
+
- - ! '>='
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '0'
|
151
144
|
requirements: []
|
152
|
-
|
153
145
|
rubyforge_project:
|
154
|
-
rubygems_version: 1.
|
146
|
+
rubygems_version: 1.8.11
|
155
147
|
signing_key:
|
156
148
|
specification_version: 3
|
157
149
|
summary: RightScale MultiCloud API HTTP Client
|
158
|
-
test_files:
|
150
|
+
test_files:
|
159
151
|
- config/login.yml.example
|
160
152
|
- spec/audit_entries_spec.rb
|
161
153
|
- spec/client_spec.rb
|