droplet_kit 1.2.1 → 1.2.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 +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
|
-
}
|