droplet_kit 1.2.1 → 1.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +9 -1
- data/CHANGELOG.md +13 -0
- data/Gemfile +10 -1
- data/droplet_kit.gemspec +1 -1
- data/lib/droplet_kit.rb +3 -0
- data/lib/droplet_kit/client.rb +1 -1
- data/lib/droplet_kit/mappings/droplet_upgrade_mapping.rb +12 -0
- data/lib/droplet_kit/mappings/image_mapping.rb +1 -0
- data/lib/droplet_kit/models/droplet_upgrade.rb +6 -0
- data/lib/droplet_kit/models/image.rb +1 -0
- data/lib/droplet_kit/resources/droplet_upgrade_resource.rb +10 -0
- data/lib/droplet_kit/resources/image_action_resource.rb +5 -0
- data/lib/droplet_kit/resources/image_resource.rb +1 -1
- data/lib/droplet_kit/version.rb +1 -1
- data/spec/fixtures/droplet_upgrades/all.json +7 -0
- data/spec/fixtures/images/all.json +4 -2
- data/spec/fixtures/images/find.json +2 -1
- data/spec/lib/droplet_kit/client_spec.rb +5 -1
- data/spec/lib/droplet_kit/resources/droplet_upgrade_resource_spec.rb +16 -0
- data/spec/lib/droplet_kit/resources/image_action_resource_spec.rb +57 -2
- data/spec/lib/droplet_kit/resources/image_resource_spec.rb +21 -0
- metadata +19 -8
- data/spec/fixtures/image_actions/create.json +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7ec2875e0c5cdc19cca7b6660ea0a1ccb03e3dd
|
4
|
+
data.tar.gz: 8e293ff411e4fa8c276b402a8c046a30dabb512a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da7a4a687a6b048947355157036e0ed363c37d3a5cd274b0d802846be0ba734af181839e74d1f190a8f43159604be1a5e26342dfaaf26a985294f97e365932cb
|
7
|
+
data.tar.gz: 5a81bcc796c32dedfb5247333c53bf5e2fad5b6c285b38ddd872f619cfbced1c6cc8e7dd3fa2d90994fc4a128bc793b0119ff66d13c8a532493ff291986398d6
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
### Version 1.2.2
|
2
|
+
|
3
|
+
* Add image convert action.
|
4
|
+
* Loosen dependency on ActiveSupport, update travis.
|
5
|
+
* Add Image#type property.
|
6
|
+
* Allow client option with indifferent access.
|
7
|
+
* Add private filtering to image endpoint.
|
8
|
+
* Add droplet upgrades resource.
|
9
|
+
|
10
|
+
### Version 1.2.1
|
11
|
+
|
12
|
+
* Update to action resources to support embedded region breaking changes in API.
|
13
|
+
|
1
14
|
### Version 1.2.0
|
2
15
|
|
3
16
|
* Add droplet upgrade action.
|
data/Gemfile
CHANGED
@@ -2,4 +2,13 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
gem 'simplecov'
|
4
4
|
# Specify your gem's dependencies in droplet_kit.gemspec
|
5
|
-
gemspec
|
5
|
+
gemspec
|
6
|
+
|
7
|
+
version = case (ENV['ACTIVESUPPORT_VERSION'] || '4')
|
8
|
+
when '4'
|
9
|
+
'~> 4.0'
|
10
|
+
when '3'
|
11
|
+
'~> 3.1'
|
12
|
+
end
|
13
|
+
|
14
|
+
gem 'activesupport', version
|
data/droplet_kit.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_dependency 'virtus', '~> 1.0.3'
|
24
24
|
spec.add_dependency "resource_kit", '~> 0.1.1'
|
25
25
|
spec.add_dependency "kartograph", '~> 0.2.1'
|
26
|
-
spec.add_dependency "activesupport", '
|
26
|
+
spec.add_dependency "activesupport", '> 3.0', '< 5.0.0'
|
27
27
|
spec.add_dependency "faraday", '~> 0.9.1'
|
28
28
|
|
29
29
|
spec.add_development_dependency "bundler", "~> 1.6"
|
data/lib/droplet_kit.rb
CHANGED
@@ -24,6 +24,7 @@ module DropletKit
|
|
24
24
|
autoload :SSHKey, 'droplet_kit/models/ssh_key'
|
25
25
|
autoload :MetaInformation, 'droplet_kit/models/meta_information'
|
26
26
|
autoload :Account, 'droplet_kit/models/account'
|
27
|
+
autoload :DropletUpgrade, 'droplet_kit/models/droplet_upgrade'
|
27
28
|
|
28
29
|
# Resources
|
29
30
|
autoload :DropletResource, 'droplet_kit/resources/droplet_resource'
|
@@ -37,6 +38,7 @@ module DropletKit
|
|
37
38
|
autoload :RegionResource, 'droplet_kit/resources/region_resource'
|
38
39
|
autoload :SizeResource, 'droplet_kit/resources/size_resource'
|
39
40
|
autoload :AccountResource, 'droplet_kit/resources/account_resource'
|
41
|
+
autoload :DropletUpgradeResource, 'droplet_kit/resources/droplet_upgrade_resource'
|
40
42
|
|
41
43
|
# JSON Maps
|
42
44
|
autoload :DropletMapping, 'droplet_kit/mappings/droplet_mapping'
|
@@ -55,6 +57,7 @@ module DropletKit
|
|
55
57
|
autoload :ImageActionMapping, 'droplet_kit/mappings/image_action_mapping'
|
56
58
|
autoload :SSHKeyMapping, 'droplet_kit/mappings/ssh_key_mapping'
|
57
59
|
autoload :AccountMapping, 'droplet_kit/mappings/account_mapping'
|
60
|
+
autoload :DropletUpgradeMapping, 'droplet_kit/mappings/droplet_upgrade_mapping'
|
58
61
|
|
59
62
|
|
60
63
|
# Utils
|
data/lib/droplet_kit/client.rb
CHANGED
@@ -0,0 +1,10 @@
|
|
1
|
+
module DropletKit
|
2
|
+
class DropletUpgradeResource < ResourceKit::Resource
|
3
|
+
resources do
|
4
|
+
action :all, 'GET /v2/droplet_upgrades' do
|
5
|
+
query_keys :per_page, :page
|
6
|
+
handler(200) { |response| DropletUpgradeMapping.extract_collection(response.body, :read) }
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -6,6 +6,11 @@ module DropletKit
|
|
6
6
|
handler(200, 201) { |response| ImageActionMapping.extract_single(response.body, :read) }
|
7
7
|
end
|
8
8
|
|
9
|
+
action :convert, 'POST /v2/images/:image_id/actions' do
|
10
|
+
body { |object| { type: 'convert' }.to_json }
|
11
|
+
handler(200, 201) { |response| ImageActionMapping.extract_single(response.body, :read) }
|
12
|
+
end
|
13
|
+
|
9
14
|
action :all, 'GET /v2/images/:image_id/actions' do
|
10
15
|
handler(200) { |response| ImageActionMapping.extract_collection(response.body, :read) }
|
11
16
|
end
|
@@ -2,7 +2,7 @@ module DropletKit
|
|
2
2
|
class ImageResource < ResourceKit::Resource
|
3
3
|
resources do
|
4
4
|
action :all, 'GET /v2/images' do
|
5
|
-
query_keys :page, :per_page, :type
|
5
|
+
query_keys :page, :per_page, :type, :private
|
6
6
|
handler(200) { |response| ImageMapping.extract_collection(response.body, :read) }
|
7
7
|
end
|
8
8
|
|
data/lib/droplet_kit/version.rb
CHANGED
@@ -9,7 +9,8 @@
|
|
9
9
|
"regions": [
|
10
10
|
"nyc1"
|
11
11
|
],
|
12
|
-
"created_at": "2014-07-29T14:35:40Z"
|
12
|
+
"created_at": "2014-07-29T14:35:40Z",
|
13
|
+
"type": "snapshot"
|
13
14
|
},
|
14
15
|
{
|
15
16
|
"id": 449676376,
|
@@ -20,7 +21,8 @@
|
|
20
21
|
"regions": [
|
21
22
|
"nyc1"
|
22
23
|
],
|
23
|
-
"created_at": "2014-07-29T14:35:40Z"
|
24
|
+
"created_at": "2014-07-29T14:35:40Z",
|
25
|
+
"type": "snapshot"
|
24
26
|
}
|
25
27
|
],
|
26
28
|
"meta": {
|
@@ -8,10 +8,14 @@ RSpec.describe DropletKit::Client do
|
|
8
8
|
client = DropletKit::Client.new(access_token: 'my-token')
|
9
9
|
expect(client.access_token).to eq('my-token')
|
10
10
|
end
|
11
|
+
|
12
|
+
it 'allows string option keys for the client' do
|
13
|
+
client = DropletKit::Client.new('access_token' => 'my-token')
|
14
|
+
expect(client.access_token).to eq('my-token')
|
15
|
+
end
|
11
16
|
end
|
12
17
|
|
13
18
|
describe "#method_missing" do
|
14
|
-
|
15
19
|
context "called with an existing method" do
|
16
20
|
it { expect{ client.actions}.to_not raise_error }
|
17
21
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe DropletKit::DropletUpgradeResource do
|
4
|
+
subject(:resource) { described_class.new(connection: connection) }
|
5
|
+
include_context 'resources'
|
6
|
+
|
7
|
+
describe '#all' do
|
8
|
+
it 'returns a collection of Droplet upgrades' do
|
9
|
+
body = api_fixture('droplet_upgrades/all')
|
10
|
+
stub_do_api('/v2/droplet_upgrades').to_return(body: body)
|
11
|
+
expected = DropletKit::DropletUpgradeMapping.extract_collection(body, :read)
|
12
|
+
|
13
|
+
expect(resource.all).to eq(expected)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -4,11 +4,35 @@ RSpec.describe DropletKit::ImageActionResource do
|
|
4
4
|
subject(:resource) { described_class.new(connection: connection) }
|
5
5
|
include_context 'resources'
|
6
6
|
|
7
|
+
def json
|
8
|
+
{
|
9
|
+
"action" => {
|
10
|
+
"id" => 23,
|
11
|
+
"status" => "in-progress",
|
12
|
+
"type" => action,
|
13
|
+
"started_at" => "2014-08-05T15:15:28Z",
|
14
|
+
"completed_at" => nil,
|
15
|
+
"resource_id" => 449676391,
|
16
|
+
"resource_type" => "image",
|
17
|
+
"region_slug" => "nyc1",
|
18
|
+
"region" => {
|
19
|
+
"name" => "New York",
|
20
|
+
"slug" => "nyc1",
|
21
|
+
"available" => true,
|
22
|
+
"sizes" => ["512mb"],
|
23
|
+
"features" => ["virtio", "private_networking", "backups", "ipv6", "metadata"]
|
24
|
+
}
|
25
|
+
}
|
26
|
+
}.to_json
|
27
|
+
end
|
28
|
+
|
7
29
|
describe '#transfer' do
|
30
|
+
let(:action) { 'transfer' }
|
31
|
+
|
8
32
|
it 'sends a transfer request for an image' do
|
9
33
|
request = stub_do_api('/v2/images/449676391/actions').with(
|
10
|
-
body: { type:
|
11
|
-
).to_return(body:
|
34
|
+
body: { type: action, region: 'sfo1' }.to_json
|
35
|
+
).to_return(body: json, status: 201)
|
12
36
|
|
13
37
|
action = resource.transfer(image_id: 449676391, region: 'sfo1')
|
14
38
|
|
@@ -33,6 +57,37 @@ RSpec.describe DropletKit::ImageActionResource do
|
|
33
57
|
end
|
34
58
|
end
|
35
59
|
|
60
|
+
describe '#convert' do
|
61
|
+
let(:action) { 'convert' }
|
62
|
+
|
63
|
+
it 'sends a convert request for an image' do
|
64
|
+
request = stub_do_api('/v2/images/449676391/actions').with(
|
65
|
+
body: { type: action }.to_json
|
66
|
+
).to_return(body: json, status: 201)
|
67
|
+
|
68
|
+
action = resource.convert(image_id: 449676391)
|
69
|
+
|
70
|
+
expect(request).to have_been_made
|
71
|
+
|
72
|
+
expect(action).to be_kind_of(DropletKit::ImageAction)
|
73
|
+
expect(action.id).to eq(23)
|
74
|
+
expect(action.status).to eq("in-progress")
|
75
|
+
expect(action.type).to eq("convert")
|
76
|
+
expect(action.started_at).to eq("2014-08-05T15:15:28Z")
|
77
|
+
expect(action.completed_at).to eq(nil)
|
78
|
+
expect(action.resource_id).to eq(449676391)
|
79
|
+
expect(action.resource_type).to eq("image")
|
80
|
+
expect(action.region_slug).to eq("nyc1")
|
81
|
+
|
82
|
+
expect(action.region).to be_kind_of(DropletKit::Region)
|
83
|
+
expect(action.region.slug).to eq('nyc1')
|
84
|
+
expect(action.region.name).to eq('New York')
|
85
|
+
expect(action.region.sizes).to include('512mb')
|
86
|
+
expect(action.region.available).to be(true)
|
87
|
+
expect(action.region.features).to include("virtio", "private_networking", "backups", "ipv6", "metadata")
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
36
91
|
describe '#all' do
|
37
92
|
it 'returns all of the image actions via a paginated resources' do
|
38
93
|
request = stub_do_api('/v2/images/449676391/actions', :get).to_return(
|
@@ -12,6 +12,26 @@ RSpec.describe DropletKit::ImageResource do
|
|
12
12
|
|
13
13
|
expect(resource.all).to eq(expected_images)
|
14
14
|
end
|
15
|
+
|
16
|
+
it 'returns private images' do
|
17
|
+
images_json = api_fixture('images/all')
|
18
|
+
stub_do_api('/v2/images', :get)
|
19
|
+
.with(query: hash_including({ private: 'true' }))
|
20
|
+
.to_return(body: images_json)
|
21
|
+
expected_images = DropletKit::ImageMapping.extract_collection images_json, :read
|
22
|
+
|
23
|
+
expect(resource.all(private: true)).to eq(expected_images)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'returns images of a type' do
|
27
|
+
images_json = api_fixture('images/all')
|
28
|
+
stub_do_api('/v2/images', :get)
|
29
|
+
.with(query: hash_including({ type: 'application' }))
|
30
|
+
.to_return(body: images_json)
|
31
|
+
expected_images = DropletKit::ImageMapping.extract_collection images_json, :read
|
32
|
+
|
33
|
+
expect(resource.all(type: :application)).to eq(expected_images)
|
34
|
+
end
|
15
35
|
end
|
16
36
|
|
17
37
|
describe '#find' do
|
@@ -25,6 +45,7 @@ RSpec.describe DropletKit::ImageResource do
|
|
25
45
|
expect(image.slug).to eq(nil)
|
26
46
|
expect(image.public).to eq(false)
|
27
47
|
expect(image.regions).to eq(["region--1"])
|
48
|
+
expect(image.type).to eq("snapshot")
|
28
49
|
end
|
29
50
|
end
|
30
51
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: droplet_kit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Ross
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: virtus
|
@@ -56,16 +56,22 @@ dependencies:
|
|
56
56
|
name: activesupport
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - '>'
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
- - <
|
60
63
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
64
|
+
version: 5.0.0
|
62
65
|
type: :runtime
|
63
66
|
prerelease: false
|
64
67
|
version_requirements: !ruby/object:Gem::Requirement
|
65
68
|
requirements:
|
66
|
-
- -
|
69
|
+
- - '>'
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '3.0'
|
72
|
+
- - <
|
67
73
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
74
|
+
version: 5.0.0
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
76
|
name: faraday
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -188,6 +194,7 @@ files:
|
|
188
194
|
- lib/droplet_kit/mappings/domain_mapping.rb
|
189
195
|
- lib/droplet_kit/mappings/domain_record_mapping.rb
|
190
196
|
- lib/droplet_kit/mappings/droplet_mapping.rb
|
197
|
+
- lib/droplet_kit/mappings/droplet_upgrade_mapping.rb
|
191
198
|
- lib/droplet_kit/mappings/error_mapping.rb
|
192
199
|
- lib/droplet_kit/mappings/image_action_mapping.rb
|
193
200
|
- lib/droplet_kit/mappings/image_mapping.rb
|
@@ -205,6 +212,7 @@ files:
|
|
205
212
|
- lib/droplet_kit/models/domain.rb
|
206
213
|
- lib/droplet_kit/models/domain_record.rb
|
207
214
|
- lib/droplet_kit/models/droplet.rb
|
215
|
+
- lib/droplet_kit/models/droplet_upgrade.rb
|
208
216
|
- lib/droplet_kit/models/image.rb
|
209
217
|
- lib/droplet_kit/models/image_action.rb
|
210
218
|
- lib/droplet_kit/models/kernel.rb
|
@@ -223,6 +231,7 @@ files:
|
|
223
231
|
- lib/droplet_kit/resources/domain_resource.rb
|
224
232
|
- lib/droplet_kit/resources/droplet_action_resource.rb
|
225
233
|
- lib/droplet_kit/resources/droplet_resource.rb
|
234
|
+
- lib/droplet_kit/resources/droplet_upgrade_resource.rb
|
226
235
|
- lib/droplet_kit/resources/image_action_resource.rb
|
227
236
|
- lib/droplet_kit/resources/image_resource.rb
|
228
237
|
- lib/droplet_kit/resources/region_resource.rb
|
@@ -240,6 +249,7 @@ files:
|
|
240
249
|
- spec/fixtures/domains/all.json
|
241
250
|
- spec/fixtures/domains/create.json
|
242
251
|
- spec/fixtures/domains/find.json
|
252
|
+
- spec/fixtures/droplet_upgrades/all.json
|
243
253
|
- spec/fixtures/droplets/all.json
|
244
254
|
- spec/fixtures/droplets/all_empty.json
|
245
255
|
- spec/fixtures/droplets/create.json
|
@@ -249,7 +259,6 @@ files:
|
|
249
259
|
- spec/fixtures/droplets/list_kernels.json
|
250
260
|
- spec/fixtures/droplets/list_snapshots.json
|
251
261
|
- spec/fixtures/image_actions/all.json
|
252
|
-
- spec/fixtures/image_actions/create.json
|
253
262
|
- spec/fixtures/image_actions/find.json
|
254
263
|
- spec/fixtures/images/all.json
|
255
264
|
- spec/fixtures/images/find.json
|
@@ -269,6 +278,7 @@ files:
|
|
269
278
|
- spec/lib/droplet_kit/resources/domain_resource_spec.rb
|
270
279
|
- spec/lib/droplet_kit/resources/droplet_action_resource_spec.rb
|
271
280
|
- spec/lib/droplet_kit/resources/droplet_resource_spec.rb
|
281
|
+
- spec/lib/droplet_kit/resources/droplet_upgrade_resource_spec.rb
|
272
282
|
- spec/lib/droplet_kit/resources/image_action_resource_spec.rb
|
273
283
|
- spec/lib/droplet_kit/resources/image_resource_spec.rb
|
274
284
|
- spec/lib/droplet_kit/resources/region_resource_spec.rb
|
@@ -314,6 +324,7 @@ test_files:
|
|
314
324
|
- spec/fixtures/domains/all.json
|
315
325
|
- spec/fixtures/domains/create.json
|
316
326
|
- spec/fixtures/domains/find.json
|
327
|
+
- spec/fixtures/droplet_upgrades/all.json
|
317
328
|
- spec/fixtures/droplets/all.json
|
318
329
|
- spec/fixtures/droplets/all_empty.json
|
319
330
|
- spec/fixtures/droplets/create.json
|
@@ -323,7 +334,6 @@ test_files:
|
|
323
334
|
- spec/fixtures/droplets/list_kernels.json
|
324
335
|
- spec/fixtures/droplets/list_snapshots.json
|
325
336
|
- spec/fixtures/image_actions/all.json
|
326
|
-
- spec/fixtures/image_actions/create.json
|
327
337
|
- spec/fixtures/image_actions/find.json
|
328
338
|
- spec/fixtures/images/all.json
|
329
339
|
- spec/fixtures/images/find.json
|
@@ -343,6 +353,7 @@ test_files:
|
|
343
353
|
- spec/lib/droplet_kit/resources/domain_resource_spec.rb
|
344
354
|
- spec/lib/droplet_kit/resources/droplet_action_resource_spec.rb
|
345
355
|
- spec/lib/droplet_kit/resources/droplet_resource_spec.rb
|
356
|
+
- spec/lib/droplet_kit/resources/droplet_upgrade_resource_spec.rb
|
346
357
|
- spec/lib/droplet_kit/resources/image_action_resource_spec.rb
|
347
358
|
- spec/lib/droplet_kit/resources/image_resource_spec.rb
|
348
359
|
- spec/lib/droplet_kit/resources/region_resource_spec.rb
|
@@ -1,19 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"action": {
|
3
|
-
"id": 23,
|
4
|
-
"status": "in-progress",
|
5
|
-
"type": "transfer",
|
6
|
-
"started_at": "2014-08-05T15:15:28Z",
|
7
|
-
"completed_at": null,
|
8
|
-
"resource_id": 449676391,
|
9
|
-
"resource_type": "image",
|
10
|
-
"region_slug": "nyc1",
|
11
|
-
"region": {
|
12
|
-
"name": "New York",
|
13
|
-
"slug": "nyc1",
|
14
|
-
"available": true,
|
15
|
-
"sizes": ["512mb"],
|
16
|
-
"features": ["virtio", "private_networking", "backups", "ipv6", "metadata"]
|
17
|
-
}
|
18
|
-
}
|
19
|
-
}
|