droplet_kit 1.4.1 → 1.4.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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6b005ff3348f043bb1505220614f50603bfc9ea0
4
- data.tar.gz: 1f38743dfa038211ac584dcf657e374a83fcc982
3
+ metadata.gz: 1d84cca0ff01969f160664546b907f2751a96d8b
4
+ data.tar.gz: ddc4e60f97ce4f43568f8138cbe5eca43eddf446
5
5
  SHA512:
6
- metadata.gz: da15703d5befedecd4a1d1adbdd3ca3522900c85f17c25c13a092e6dd9e3413f17fb464b52271aca0214231edece3bcfadfcdc38667aa3a7ef3bc62e841b113f
7
- data.tar.gz: 119a9e6e86546036816f4b25b42a9424e3a632c815b45d71b01a5d2754b70107b92b890e88e1b19c50985944d1ccc7c41272c57285a0ead0d21892211cf9b8ca
6
+ metadata.gz: 2405189c82ef1c755d6afe508b90eab21b65df3c504c19c68b7ea19974b00126ae5efa57519689608a1d0b44f609749fa57d874889b5312145d31ea8bc0d4148
7
+ data.tar.gz: d986af0561cf005c41a6a11f902020785c895c8d3414275b8c7d476da83844db15e6d094637875490b98575d110feab10c19db82ab525e831c4118851c9b1029
data/README.md CHANGED
@@ -272,6 +272,27 @@ Actions supported:
272
272
  * `client.floating_ip_actions.assign(ip: floating_ip.ip, droplet_id: droplet.id)`
273
273
  * `client.floating_ip_actions.unassign(ip: floating_ip.ip)`
274
274
 
275
+ ## Volume resource
276
+
277
+ client = DropletKit::Client.new(access_token: 'TOKEN')
278
+ client.volumes #=> DropletKit::VolumeResource
279
+
280
+ Actions supported:
281
+
282
+ * `client.volumes.all()`
283
+ * `client.volumes.find(id: 'id')`
284
+ * `client.volumes.create(volume)`
285
+ * `client.volumes.delete(id: 'id')`
286
+
287
+ ## Volume Action resource
288
+
289
+ client = DropletKit::Client.new(access_token: 'TOKEN')
290
+ client.volume_actions #=> DropletKit::VolumeActionResource
291
+
292
+ Actions supported:
293
+
294
+ * `client.volume_actions.attach(volume_id: volume.id, droplet_id: droplet.id, region: droplet.region.slug)`
295
+ * `client.volume_actions.detach(volume_id: volume.id, droplet_id: droplet.id, region: droplet.region.slug)`
275
296
 
276
297
  ## Contributing
277
298
 
data/droplet_kit.gemspec CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.add_dependency "activesupport", '> 3.0', '< 5.1'
27
27
  spec.add_dependency "faraday", '~> 0.9.1'
28
28
 
29
- spec.add_development_dependency "bundler", "~> 1.11.0"
29
+ spec.add_development_dependency "bundler", ">= 1.11.0"
30
30
  spec.add_development_dependency "rake"
31
31
  spec.add_development_dependency "rspec", "~> 3.0.0"
32
32
  spec.add_development_dependency "pry"
data/lib/droplet_kit.rb CHANGED
@@ -29,6 +29,7 @@ module DropletKit
29
29
  autoload :Tag, 'droplet_kit/models/tag'
30
30
  autoload :TaggedResources, 'droplet_kit/models/tagged_resources'
31
31
  autoload :TaggedDropletsResources, 'droplet_kit/models/tagged_droplets_resources'
32
+ autoload :Volume, 'droplet_kit/models/volume'
32
33
 
33
34
  # Resources
34
35
  autoload :DropletResource, 'droplet_kit/resources/droplet_resource'
@@ -46,6 +47,8 @@ module DropletKit
46
47
  autoload :FloatingIpResource, 'droplet_kit/resources/floating_ip_resource'
47
48
  autoload :FloatingIpActionResource, 'droplet_kit/resources/floating_ip_action_resource'
48
49
  autoload :TagResource, 'droplet_kit/resources/tag_resource'
50
+ autoload :VolumeResource, 'droplet_kit/resources/volume_resource'
51
+ autoload :VolumeActionResource, 'droplet_kit/resources/volume_action_resource'
49
52
 
50
53
  # JSON Maps
51
54
  autoload :DropletMapping, 'droplet_kit/mappings/droplet_mapping'
@@ -69,6 +72,7 @@ module DropletKit
69
72
  autoload :TagMapping, 'droplet_kit/mappings/tag_mapping'
70
73
  autoload :TaggedResourcesMapping, 'droplet_kit/mappings/tagged_resources_mapping'
71
74
  autoload :TaggedDropletsResourcesMapping, 'droplet_kit/mappings/tagged_droplets_resources_mapping'
75
+ autoload :VolumeMapping, 'droplet_kit/mappings/volume_mapping'
72
76
 
73
77
  # Utils
74
78
  autoload :PaginatedResource, 'droplet_kit/paginated_resource'
@@ -29,6 +29,7 @@ module DropletKit
29
29
  # Create properties arent quite the same
30
30
  property :name, scopes: [:create] # "Regular" create
31
31
  property :names, scopes: [:create] # Multiple create
32
+ property :volumes, scopes: [:create] # Create with volumes
32
33
  property :region, scopes: [:create]
33
34
  property :size, scopes: [:create]
34
35
  property :image, scopes: [:create]
@@ -0,0 +1,21 @@
1
+ module DropletKit
2
+ class VolumeMapping
3
+ include Kartograph::DSL
4
+
5
+ kartograph do
6
+ mapping Volume
7
+ root_key plural: 'volumes', singular: 'volume', scopes: [:read]
8
+
9
+ property :id, scopes: [:read]
10
+ property :region, scopes: [:read], include: RegionMapping
11
+ property :droplet_ids, scopes: [:read]
12
+ property :name, scopes: [:read, :create]
13
+ property :description, scopes: [:read, :create]
14
+ property :size_gigabytes, scopes: [:read, :create]
15
+ property :created_at, scopes: [:read]
16
+
17
+ property :region, scopes: [:create]
18
+ end
19
+ end
20
+ end
21
+
@@ -8,6 +8,7 @@ module DropletKit
8
8
 
9
9
  # Used for creates
10
10
  attribute :names
11
+ attribute :volumes
11
12
  attribute :ssh_keys
12
13
  attribute :backups
13
14
  attribute :size
@@ -0,0 +1,11 @@
1
+ module DropletKit
2
+ class Volume < BaseModel
3
+ attribute :id
4
+ attribute :region
5
+ attribute :droplet_ids
6
+ attribute :name
7
+ attribute :description
8
+ attribute :size_gigabytes
9
+ attribute :created_at
10
+ end
11
+ end
@@ -0,0 +1,44 @@
1
+ module DropletKit
2
+ class VolumeActionResource < ResourceKit::Resource
3
+ resources do
4
+ default_handler(422) { |response| ErrorMapping.fail_with(FailedCreate, response.body) }
5
+
6
+ action :attach, 'POST /v2/volumes/:volume_id/actions' do
7
+ body do |hash|
8
+ {
9
+ type: 'attach',
10
+ droplet_id: hash[:droplet_id],
11
+ volume_id: hash[:volume_id], # seems redundant to the id in the url?
12
+ region: hash[:region], # seems redundant - inferred from the droplet?
13
+ }.to_json
14
+ end
15
+ handler(201, 200) { |response| ActionMapping.extract_single(response.body, :read) }
16
+ end
17
+
18
+ action :detach, 'POST /v2/volumes/:volume_id/actions' do
19
+ body do |hash|
20
+ {
21
+ type: 'detach',
22
+ droplet_id: hash[:droplet_id],
23
+ volume_id: hash[:volume_id], # seems redundant to the id in the url?
24
+ region: hash[:region], # seems redundant - inferred from the droplet?
25
+ }.to_json
26
+ end
27
+ handler(201, 200) { |response| ActionMapping.extract_single(response.body, :read) }
28
+ end
29
+
30
+ action :find, 'GET /v2/volumes/:volume_id/actions/:id' do
31
+ handler(200) { |response| ActionMapping.extract_single(response.body, :read) }
32
+ end
33
+
34
+ action :all, 'GET /v2/volumes/:volume_id/actions' do
35
+ query_keys :per_page, :page
36
+ handler(200) { |response| ActionMapping.extract_collection(response.body, :read) }
37
+ end
38
+ end
39
+
40
+ def all(*args)
41
+ PaginatedResource.new(action(:all), self, *args)
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,30 @@
1
+ module DropletKit
2
+ class VolumeResource < ResourceKit::Resource
3
+ include ErrorHandlingResourcable
4
+
5
+ resources do
6
+ action :all, 'GET /v2/volumes' do
7
+ query_keys :per_page, :page
8
+ handler(200) { |response| VolumeMapping.extract_collection(response.body, :read) }
9
+ end
10
+
11
+ action :create, 'POST /v2/volumes' do
12
+ body { |object| VolumeMapping.representation_for(:create, object) }
13
+ handler(201) { |response| VolumeMapping.extract_single(response.body, :read) }
14
+ handler(422) { |response| ErrorMapping.fail_with(FailedCreate, response.body) }
15
+ end
16
+
17
+ action :find, 'GET /v2/volumes/:id' do
18
+ handler(200) { |response| VolumeMapping.extract_single(response.body, :read) }
19
+ end
20
+
21
+ action :delete, 'DELETE /v2/volumes/:id' do
22
+ handler(204) { |response| true }
23
+ end
24
+ end
25
+
26
+ def all(*args)
27
+ PaginatedResource.new(action(:all), self, *args)
28
+ end
29
+ end
30
+ end
@@ -1,3 +1,3 @@
1
1
  module DropletKit
2
- VERSION = "1.4.1"
2
+ VERSION = "1.4.2"
3
3
  end
@@ -0,0 +1,41 @@
1
+ {
2
+ "actions": [
3
+ {
4
+ "id": 72531856,
5
+ "status": "in-progress",
6
+ "type": "attach_volume",
7
+ "started_at": "2015-11-12T17:51:03Z",
8
+ "completed_at": null,
9
+ "resource_id": null,
10
+ "resource_type": "volume",
11
+ "region": {
12
+ "name": "New York 1",
13
+ "slug": "nyc1",
14
+ "sizes": [
15
+ "1gb",
16
+ "2gb",
17
+ "4gb",
18
+ "8gb",
19
+ "32gb",
20
+ "64gb",
21
+ "512mb",
22
+ "48gb",
23
+ "16gb"
24
+ ],
25
+ "features": [
26
+ "private_networking",
27
+ "backups",
28
+ "ipv6",
29
+ "metadata"
30
+ ],
31
+ "available": true
32
+ },
33
+ "region_slug": "nyc1"
34
+ }
35
+ ],
36
+ "links": {
37
+ },
38
+ "meta": {
39
+ "total": 1
40
+ }
41
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "action": {
3
+ "id": 72531856,
4
+ "status": "in-progress",
5
+ "type": "attach_volume",
6
+ "started_at": "2015-11-12T17:51:03Z",
7
+ "completed_at": null,
8
+ "resource_id": null,
9
+ "resource_type": "volume",
10
+ "region": {
11
+ "name": "New York 1",
12
+ "slug": "nyc1",
13
+ "sizes": [
14
+ "1gb",
15
+ "2gb",
16
+ "4gb",
17
+ "8gb",
18
+ "32gb",
19
+ "64gb",
20
+ "512mb",
21
+ "48gb",
22
+ "16gb"
23
+ ],
24
+ "features": [
25
+ "private_networking",
26
+ "backups",
27
+ "ipv6",
28
+ "metadata"
29
+ ],
30
+ "available": true
31
+ },
32
+ "region_slug": "nyc1"
33
+ }
34
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "action": {
3
+ "id": 72531856,
4
+ "status": "in-progress",
5
+ "type": "detach_volume",
6
+ "started_at": "2015-11-12T17:51:03Z",
7
+ "completed_at": null,
8
+ "resource_id": null,
9
+ "resource_type": "volume",
10
+ "region": {
11
+ "name": "New York 1",
12
+ "slug": "nyc1",
13
+ "sizes": [
14
+ "512mb",
15
+ "1gb",
16
+ "2gb",
17
+ "4gb",
18
+ "8gb",
19
+ "16gb",
20
+ "32gb",
21
+ "48gb",
22
+ "64gb"
23
+ ],
24
+ "features": [
25
+ "private_networking",
26
+ "backups",
27
+ "ipv6",
28
+ "metadata"
29
+ ],
30
+ "available": true
31
+ },
32
+ "region_slug": "nyc1"
33
+ }
34
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "action": {
3
+ "id": 72531856,
4
+ "status": "in-progress",
5
+ "type": "attach_volume",
6
+ "started_at": "2015-11-12T17:51:03Z",
7
+ "completed_at": null,
8
+ "resource_id": null,
9
+ "resource_type": "volume",
10
+ "region": {
11
+ "name": "New York 1",
12
+ "slug": "nyc1",
13
+ "sizes": [
14
+ "1gb",
15
+ "2gb",
16
+ "4gb",
17
+ "8gb",
18
+ "32gb",
19
+ "64gb",
20
+ "512mb",
21
+ "48gb",
22
+ "16gb"
23
+ ],
24
+ "features": [
25
+ "private_networking",
26
+ "backups",
27
+ "ipv6",
28
+ "metadata"
29
+ ],
30
+ "available": true
31
+ },
32
+ "region_slug": "nyc1"
33
+ }
34
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "volumes": [
3
+ {
4
+ "id": "7724db7c-e098-11e5-b522-000f53304e51",
5
+ "region": {
6
+ "name": "New York 1",
7
+ "slug": "nyc1",
8
+ "sizes": [
9
+ "512mb",
10
+ "1gb",
11
+ "2gb",
12
+ "4gb",
13
+ "8gb",
14
+ "16gb",
15
+ "32gb",
16
+ "48gb",
17
+ "64gb"
18
+ ],
19
+ "features": [
20
+ "private_networking",
21
+ "backups",
22
+ "ipv6",
23
+ "metadata"
24
+ ],
25
+ "available": true
26
+ },
27
+ "droplet_ids": [
28
+
29
+ ],
30
+ "name": "Example",
31
+ "description": "Block store for examples",
32
+ "size_gigabytes": 10,
33
+ "created_at": "2016-03-02T17:00:49Z"
34
+ }
35
+ ],
36
+ "links": {
37
+ },
38
+ "meta": {
39
+ "total": 1
40
+ }
41
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "volume": {
3
+ "id": "7724db7c-e098-11e5-b522-000f53304e51",
4
+ "region": {
5
+ "name": "New York 1",
6
+ "slug": "nyc1",
7
+ "sizes": [
8
+ "512mb",
9
+ "1gb",
10
+ "2gb",
11
+ "4gb",
12
+ "8gb",
13
+ "16gb",
14
+ "32gb",
15
+ "48gb",
16
+ "64gb"
17
+ ],
18
+ "features": [
19
+ "private_networking",
20
+ "backups",
21
+ "ipv6",
22
+ "metadata"
23
+ ],
24
+ "available": true
25
+ },
26
+ "droplet_ids": [
27
+
28
+ ],
29
+ "name": "Example",
30
+ "description": "Block store for examples",
31
+ "size_gigabytes": 10,
32
+ "created_at": "2016-03-02T17:00:49Z"
33
+ }
34
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "volume": {
3
+ "id": "7724db7c-e098-11e5-b522-000f53304e51",
4
+ "region": {
5
+ "name": "New York 1",
6
+ "slug": "nyc1",
7
+ "sizes": [
8
+ "512mb",
9
+ "1gb",
10
+ "2gb",
11
+ "4gb",
12
+ "8gb",
13
+ "16gb",
14
+ "32gb",
15
+ "48gb",
16
+ "64gb"
17
+ ],
18
+ "features": [
19
+ "private_networking",
20
+ "backups",
21
+ "ipv6",
22
+ "metadata"
23
+ ],
24
+ "available": true
25
+ },
26
+ "droplet_ids": [
27
+
28
+ ],
29
+ "name": "Example",
30
+ "description": "Block store for examples",
31
+ "size_gigabytes": 10,
32
+ "created_at": "2016-03-02T17:00:49Z"
33
+ }
34
+ }
@@ -0,0 +1,126 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe DropletKit::VolumeActionResource do
4
+ subject(:resource) { described_class.new(connection: connection) }
5
+ include_context 'resources'
6
+
7
+ RSpec::Matchers.define :match_volume_action_fixture do |type|
8
+ match do |action|
9
+ expect(action).to be_kind_of(DropletKit::Action)
10
+ expect(action.id).to eq(72531856)
11
+ expect(action.status).to eq("in-progress")
12
+ expect(action.type).to eq(type) if type
13
+ expect(action.started_at).to eq("2015-11-12T17:51:03Z")
14
+ expect(action.completed_at).to eq(nil)
15
+ expect(action.resource_id).to eq(nil)
16
+ expect(action.resource_type).to eq("volume")
17
+ expect(action.region_slug).to eq("nyc1")
18
+
19
+ expect(action.region).to be_kind_of(DropletKit::Region)
20
+ end
21
+ end
22
+
23
+ describe '#attach' do
24
+ let(:volume_id) { '7724db7c-e098-11e5-b522-000f53304e51' }
25
+ let(:droplet_id) { 123 }
26
+ let(:region) { 'nyc1' }
27
+ let(:path) { "/v2/volumes/#{volume_id}/actions" }
28
+ let(:action) { 'attach' }
29
+ let(:fixture) { api_fixture("volume_actions/#{action}") }
30
+
31
+ it 'sends an attach request for a volume' do
32
+ request = stub_do_api(path).with(
33
+ body: {
34
+ type: action,
35
+ droplet_id: droplet_id,
36
+ volume_id: volume_id,
37
+ region: region
38
+ }.to_json
39
+ ).to_return(body: fixture, status: 201)
40
+
41
+ action = resource.attach(
42
+ volume_id: volume_id,
43
+ droplet_id: droplet_id,
44
+ region: region
45
+ )
46
+
47
+ expect(request).to have_been_made
48
+ expect(action).to match_volume_action_fixture('attach_volume')
49
+ end
50
+
51
+ it_behaves_like 'an action that handles invalid parameters' do
52
+ let(:arguments) { { volume_id: volume_id, droplet_id: droplet_id } }
53
+ end
54
+ end
55
+
56
+ describe '#detach' do
57
+ let(:volume_id) { '7724db7c-e098-11e5-b522-000f53304e51' }
58
+ let(:droplet_id) { 123 }
59
+ let(:region) { 'nyc1' }
60
+ let(:path) { "/v2/volumes/#{volume_id}/actions" }
61
+ let(:action) { 'detach' }
62
+ let(:fixture) { api_fixture("volume_actions/#{action}") }
63
+
64
+ it 'sends an detach request for a volume' do
65
+ request = stub_do_api(path).with(
66
+ body: {
67
+ type: action,
68
+ droplet_id: droplet_id,
69
+ volume_id: volume_id,
70
+ region: region
71
+ }.to_json
72
+ ).to_return(body: fixture, status: 201)
73
+
74
+ action = resource.detach(
75
+ volume_id: volume_id,
76
+ droplet_id: droplet_id,
77
+ region: region
78
+ )
79
+
80
+ expect(request).to have_been_made
81
+ expect(action).to match_volume_action_fixture('detach_volume')
82
+ end
83
+
84
+ it_behaves_like 'an action that handles invalid parameters' do
85
+ let(:arguments) { { volume_id: volume_id } }
86
+ end
87
+ end
88
+
89
+ describe '#all' do
90
+ let(:volume_id) { '7724db7c-e098-11e5-b522-000f53304e51' }
91
+
92
+ it 'returns all of the volume actions via a paginated resources' do
93
+ request = stub_do_api("/v2/volumes/#{volume_id}/actions", :get).to_return(
94
+ body: api_fixture('volume_actions/all'),
95
+ status: 200
96
+ )
97
+
98
+ actions = resource.all(volume_id: volume_id).take(20)
99
+
100
+ expect(request).to have_been_made
101
+
102
+ expect(actions.size).to be(1)
103
+
104
+ action = actions.first
105
+ expect(action).to match_volume_action_fixture
106
+ end
107
+
108
+ it_behaves_like 'a paginated index' do
109
+ let(:fixture_path) { 'volume_actions/all' }
110
+ let(:api_path) { "/v2/volumes/#{volume_id}/actions" }
111
+ let(:parameters) { { volume_id: volume_id } }
112
+ end
113
+ end
114
+
115
+ describe '#find' do
116
+ let(:id) { 72531856 }
117
+ let(:volume_id) { '7724db7c-e098-11e5-b522-000f53304e51' }
118
+
119
+ it 'returns a single action' do
120
+ stub_do_api("/v2/volumes/#{volume_id}/actions/#{id}", :get).to_return(body: api_fixture('volume_actions/find'))
121
+ action = resource.find(id: id, volume_id: volume_id)
122
+
123
+ expect(action).to match_volume_action_fixture
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,79 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe DropletKit::VolumeResource do
4
+ subject(:resource) { described_class.new(connection: connection) }
5
+ include_context 'resources'
6
+
7
+ RSpec::Matchers.define :match_volume_fixture do
8
+ match do |volume|
9
+ expect(volume).to be_kind_of(DropletKit::Volume)
10
+
11
+ expect(volume.region).to be_kind_of(DropletKit::Region)
12
+ expect(volume.id).to eq("7724db7c-e098-11e5-b522-000f53304e51")
13
+ expect(volume.droplet_ids).to eq([])
14
+ expect(volume.name).to eq("Example")
15
+ expect(volume.description).to eq("Block store for examples")
16
+ expect(volume.size_gigabytes).to eq(10)
17
+ expect(volume.created_at).to eq("2016-03-02T17:00:49Z")
18
+ end
19
+ end
20
+
21
+ describe '#all' do
22
+ it 'returns all of the volumes' do
23
+ stub_do_api('/v2/volumes', :get).to_return(body: api_fixture('volumes/all'))
24
+ volumes = resource.all
25
+
26
+ expect(volumes).to all(be_kind_of(DropletKit::Volume))
27
+ expect(volumes.first).to match_volume_fixture
28
+ end
29
+
30
+ it_behaves_like 'a paginated index' do
31
+ let(:fixture_path) { 'volumes/all' }
32
+ let(:api_path) { '/v2/volumes' }
33
+ end
34
+ end
35
+
36
+ describe '#find' do
37
+ it 'returns a singular volume' do
38
+ stub_do_api('/v2/volumes/7724db7c-e098-11e5-b522-000f53304e51', :get).to_return(body: api_fixture('volumes/find'))
39
+ volume = resource.find(id: "7724db7c-e098-11e5-b522-000f53304e51")
40
+
41
+ expect(volume).to match_volume_fixture
42
+ end
43
+ end
44
+
45
+ describe '#create' do
46
+ let(:path) { '/v2/volumes' }
47
+
48
+ context 'for a successful create' do
49
+ it 'returns the created volume' do
50
+ volume = DropletKit::Volume.new(
51
+ size_gigabytes: 10,
52
+ name: "Example",
53
+ description: "Block store for examples",
54
+ region: "nyc1"
55
+ )
56
+
57
+ as_string = DropletKit::VolumeMapping.representation_for(:create, volume)
58
+ stub_do_api(path, :post).with(body: as_string).to_return(body: api_fixture('volumes/create'), status: 201)
59
+ created_volume = resource.create(volume)
60
+
61
+ expect(created_volume).to match_volume_fixture
62
+ end
63
+ end
64
+
65
+ it_behaves_like 'an action that handles invalid parameters' do
66
+ let(:action) { 'create' }
67
+ let(:arguments) { DropletKit::Volume.new }
68
+ end
69
+ end
70
+
71
+ describe '#delete' do
72
+ it 'sends a delete request for the volume' do
73
+ request = stub_do_api('/v2/volumes/7724db7c-e098-11e5-b522-000f53304e51', :delete)
74
+ resource.delete(id: "7724db7c-e098-11e5-b522-000f53304e51")
75
+
76
+ expect(request).to have_been_made
77
+ end
78
+ end
79
+ end
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.4.1
4
+ version: 1.4.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: 2016-04-25 00:00:00.000000000 Z
11
+ date: 2016-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: virtus
@@ -90,14 +90,14 @@ dependencies:
90
90
  name: bundler
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - "~>"
93
+ - - ">="
94
94
  - !ruby/object:Gem::Version
95
95
  version: 1.11.0
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - "~>"
100
+ - - ">="
101
101
  - !ruby/object:Gem::Version
102
102
  version: 1.11.0
103
103
  - !ruby/object:Gem::Dependency
@@ -210,6 +210,7 @@ files:
210
210
  - lib/droplet_kit/mappings/tag_mapping.rb
211
211
  - lib/droplet_kit/mappings/tagged_droplets_resources_mapping.rb
212
212
  - lib/droplet_kit/mappings/tagged_resources_mapping.rb
213
+ - lib/droplet_kit/mappings/volume_mapping.rb
213
214
  - lib/droplet_kit/models/account.rb
214
215
  - lib/droplet_kit/models/action.rb
215
216
  - lib/droplet_kit/models/backup.rb
@@ -233,6 +234,7 @@ files:
233
234
  - lib/droplet_kit/models/tag.rb
234
235
  - lib/droplet_kit/models/tagged_droplets_resources.rb
235
236
  - lib/droplet_kit/models/tagged_resources.rb
237
+ - lib/droplet_kit/models/volume.rb
236
238
  - lib/droplet_kit/paginated_resource.rb
237
239
  - lib/droplet_kit/resources/account_resource.rb
238
240
  - lib/droplet_kit/resources/action_resource.rb
@@ -249,6 +251,8 @@ files:
249
251
  - lib/droplet_kit/resources/size_resource.rb
250
252
  - lib/droplet_kit/resources/ssh_key_resource.rb
251
253
  - lib/droplet_kit/resources/tag_resource.rb
254
+ - lib/droplet_kit/resources/volume_action_resource.rb
255
+ - lib/droplet_kit/resources/volume_resource.rb
252
256
  - lib/droplet_kit/version.rb
253
257
  - lib/tasks/resource_doc.rake
254
258
  - spec/fixtures/account/info.json
@@ -316,6 +320,13 @@ files:
316
320
  - spec/fixtures/tags/all_empty.json
317
321
  - spec/fixtures/tags/create.json
318
322
  - spec/fixtures/tags/find.json
323
+ - spec/fixtures/volume_actions/all.json
324
+ - spec/fixtures/volume_actions/attach.json
325
+ - spec/fixtures/volume_actions/detach.json
326
+ - spec/fixtures/volume_actions/find.json
327
+ - spec/fixtures/volumes/all.json
328
+ - spec/fixtures/volumes/create.json
329
+ - spec/fixtures/volumes/find.json
319
330
  - spec/lib/droplet_kit/client_spec.rb
320
331
  - spec/lib/droplet_kit/models/base_model_spec.rb
321
332
  - spec/lib/droplet_kit/models/droplet_spec.rb
@@ -335,6 +346,8 @@ files:
335
346
  - spec/lib/droplet_kit/resources/size_resource_spec.rb
336
347
  - spec/lib/droplet_kit/resources/ssh_key_resource_spec.rb
337
348
  - spec/lib/droplet_kit/resources/tag_resource_spec.rb
349
+ - spec/lib/droplet_kit/resources/volume_action_resource_spec.rb
350
+ - spec/lib/droplet_kit/resources/volume_resource_spec.rb
338
351
  - spec/spec_helper.rb
339
352
  - spec/support/fake_server.rb
340
353
  - spec/support/request_stub_helpers.rb
@@ -432,6 +445,13 @@ test_files:
432
445
  - spec/fixtures/tags/all_empty.json
433
446
  - spec/fixtures/tags/create.json
434
447
  - spec/fixtures/tags/find.json
448
+ - spec/fixtures/volume_actions/all.json
449
+ - spec/fixtures/volume_actions/attach.json
450
+ - spec/fixtures/volume_actions/detach.json
451
+ - spec/fixtures/volume_actions/find.json
452
+ - spec/fixtures/volumes/all.json
453
+ - spec/fixtures/volumes/create.json
454
+ - spec/fixtures/volumes/find.json
435
455
  - spec/lib/droplet_kit/client_spec.rb
436
456
  - spec/lib/droplet_kit/models/base_model_spec.rb
437
457
  - spec/lib/droplet_kit/models/droplet_spec.rb
@@ -451,6 +471,8 @@ test_files:
451
471
  - spec/lib/droplet_kit/resources/size_resource_spec.rb
452
472
  - spec/lib/droplet_kit/resources/ssh_key_resource_spec.rb
453
473
  - spec/lib/droplet_kit/resources/tag_resource_spec.rb
474
+ - spec/lib/droplet_kit/resources/volume_action_resource_spec.rb
475
+ - spec/lib/droplet_kit/resources/volume_resource_spec.rb
454
476
  - spec/spec_helper.rb
455
477
  - spec/support/fake_server.rb
456
478
  - spec/support/request_stub_helpers.rb