droplet_kit 1.1.3 → 1.2.0

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: 6e28942bdd478cd811a6f8e8aa0ee9632b5d4f50
4
- data.tar.gz: 96fca5ad6cb96e1e4c58f0d4bc513bcc770e05a7
3
+ metadata.gz: ce63bc5aac34db2dc7a39b5c7fef9f5fb02654a1
4
+ data.tar.gz: 6d22b740f138522b5e765965ac2557965e79abbb
5
5
  SHA512:
6
- metadata.gz: 1efaaffe2af2dd9f717e09c61742a16fb6c8c3bf3602e67164550bd3c7842cf26b7b7d35165a8447c366ecc97528c22e65c86b399c7a9204a2284d9ebb6ed65f
7
- data.tar.gz: 32839b6b91778d2414440ecb9de9b8aad17a1306525d55226fe462b15abcbfc3287233858eea2672568b1beccb8d8782dcc38ef4830a0a88e8a24a94c907ad6b
6
+ metadata.gz: 1656f66b808a250ff08508204571c8ff0b6ceeff50c7ba3678585db457e3a9b2f1cd6faadc5982b0edc7950b553b52c8a9782e3de2c16877c7c2d4f61a96941c
7
+ data.tar.gz: aa6b612faceeb0428448d583833f8bc4345666e6a2b891fc3a6d6558b8f310375f91dcd67b51951953b283584bc526841edcffd0b7ab3de15cf7c4f927e37def
data/.travis.yml CHANGED
@@ -1,5 +1,6 @@
1
1
  rvm:
2
- - "2.0.0-p594"
3
- - "2.1.4"
4
-
2
+ - "2.0.0"
3
+ - "2.1.5"
4
+ - "2.2.0"
5
+
5
6
  script: bundle exec rspec ./spec
data/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ### Version 1.2.0
2
+
3
+ * Add droplet upgrade action.
4
+ * Pass disk option through to Droplet resize.
5
+ * Add support for region_slug in action objects.
6
+ * Test coverage for Ruby 2.2.0.
7
+ * Documentation updates.
8
+
9
+ ### Version 1.1.3
10
+
11
+ * Paginate the resource for image actions to retrieve all of them.
12
+ * Fix infinite loop bug on pagination last page.
13
+ * Updates to documentation.
14
+
1
15
  ### Version 1.1.2
2
16
 
3
17
  * Add `public_ip` and `private_ip` to easily get the IP address on `DropletKit::Droplet` objects returned.
data/README.md CHANGED
@@ -66,8 +66,10 @@ droplet = client.droplets.find(id: 123)
66
66
 
67
67
  ## Droplet resource
68
68
 
69
- client = DropletKit::Client.new(access_token: 'TOKEN')
70
- client.droplets #=> DropletKit::DropletResource
69
+ ```ruby
70
+ client = DropletKit::Client.new(access_token: 'TOKEN')
71
+ client.droplets #=> DropletKit::DropletResource
72
+ ```
71
73
 
72
74
  Actions supported:
73
75
 
@@ -82,8 +84,10 @@ Actions supported:
82
84
 
83
85
  ## Droplet Action resource
84
86
 
85
- client = DropletKit::Client.new(access_token: 'TOKEN')
86
- client.droplet_actions #=> DropletKit::DropletAction
87
+ ```ruby
88
+ client = DropletKit::Client.new(access_token: 'TOKEN')
89
+ client.droplet_actions #=> DropletKit::DropletAction
90
+ ```
87
91
 
88
92
  Actions supported:
89
93
 
@@ -95,6 +99,7 @@ Actions supported:
95
99
  * `client.droplet_actions.password_reset(droplet_id: droplet.id)`
96
100
  * `client.droplet_actions.enable_ipv6(droplet_id: droplet.id)`
97
101
  * `client.droplet_actions.disable_backups(droplet_id: droplet.id)`
102
+ * `client.droplet_actions.upgrade(droplet_id: droplet.id)`
98
103
  * `client.droplet_actions.enable_private_networking(droplet_id: droplet.id)`
99
104
  * `client.droplet_actions.snapshot(droplet_id: droplet.id, name: 'Snapshot Name')`
100
105
  * `client.droplet_actions.change_kernel(droplet_id: droplet.id, kernel: 'kernel_id')`
@@ -106,8 +111,10 @@ Actions supported:
106
111
 
107
112
  ## Domain resource
108
113
 
109
- client = DropletKit::Client.new(access_token: 'TOKEN')
110
- client.domains #=> DropletKit::DomainResource
114
+ ```ruby
115
+ client = DropletKit::Client.new(access_token: 'TOKEN')
116
+ client.domains #=> DropletKit::DomainResource
117
+ ```
111
118
 
112
119
  Actions supported:
113
120
 
@@ -119,14 +126,15 @@ Actions supported:
119
126
 
120
127
  ## Domain record resource
121
128
 
122
- client = DropletKit::Client.new(access_token: 'TOKEN')
123
- client.domain_records #=> DropletKit::DomainRecordResource
124
- domain_record = DropletKit::DomainRecord.new(
125
- type: 'CNAME',
126
- name: 'www',
127
- data: '@'
128
- )
129
-
129
+ ```ruby
130
+ client = DropletKit::Client.new(access_token: 'TOKEN')
131
+ client.domain_records #=> DropletKit::DomainRecordResource
132
+ domain_record = DropletKit::DomainRecord.new(
133
+ type: 'CNAME',
134
+ name: 'www',
135
+ data: '@'
136
+ )
137
+ ```
130
138
 
131
139
  Actions supported:
132
140
 
@@ -139,8 +147,10 @@ Actions supported:
139
147
 
140
148
  ## Image resource
141
149
 
142
- client = DropletKit::Client.new(access_token: 'TOKEN')
143
- client.images #=> DropletKit::ImageResource
150
+ ```ruby
151
+ client = DropletKit::Client.new(access_token: 'TOKEN')
152
+ client.images #=> DropletKit::ImageResource
153
+ ```
144
154
 
145
155
  Actions supported:
146
156
 
@@ -152,8 +162,10 @@ Actions supported:
152
162
 
153
163
  ## Image Action Resource
154
164
 
155
- client = DropletKit::Client.new(access_token: 'TOKEN')
156
- client.image_actions #=> DropletKit::ImageActionResource
165
+ ```
166
+ client = DropletKit::Client.new(access_token: 'TOKEN')
167
+ client.image_actions #=> DropletKit::ImageActionResource
168
+ ```
157
169
 
158
170
  Image Actions Supported:
159
171
 
@@ -164,8 +176,10 @@ Image Actions Supported:
164
176
 
165
177
  ## Region resource
166
178
 
167
- client = DropletKit::Client.new(access_token: 'TOKEN')
168
- client.regions #=> DropletKit::RegionResource
179
+ ```ruby
180
+ client = DropletKit::Client.new(access_token: 'TOKEN')
181
+ client.regions #=> DropletKit::RegionResource
182
+ ```
169
183
 
170
184
  Actions supported:
171
185
 
@@ -174,18 +188,22 @@ Actions supported:
174
188
 
175
189
  ## Size resource
176
190
 
177
- client = DropletKit::Client.new(access_token: 'TOKEN')
178
- client.sizes #=> DropletKit::SizeResource
191
+ ```ruby
192
+ client = DropletKit::Client.new(access_token: 'TOKEN')
193
+ client.sizes #=> DropletKit::SizeResource
194
+ ```
179
195
 
180
196
  Actions supported:
181
197
 
182
198
  * `client.sizes.all()`
183
199
 
184
200
 
185
- ## Ssh key resource
201
+ ## SSH key resource
186
202
 
187
- client = DropletKit::Client.new(access_token: 'TOKEN')
188
- client.ssh_keys #=> DropletKit::SSHKeyResource
203
+ ```ruby
204
+ client = DropletKit::Client.new(access_token: 'TOKEN')
205
+ client.ssh_keys #=> DropletKit::SSHKeyResource
206
+ ```
189
207
 
190
208
  Actions supported:
191
209
 
@@ -197,8 +215,10 @@ Actions supported:
197
215
 
198
216
  ## Account resource
199
217
 
200
- client = DropletKit::Client.new(access_token: 'TOKEN')
201
- client.account #=> DropletKit::AccountResource
218
+ ```ruby
219
+ client = DropletKit::Client.new(access_token: 'TOKEN')
220
+ client.account #=> DropletKit::AccountResource
221
+ ```
202
222
 
203
223
  Actions supported:
204
224
 
data/droplet_kit.gemspec CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
7
7
  spec.name = "droplet_kit"
8
8
  spec.version = DropletKit::VERSION
9
9
  spec.authors = ["Robert Ross"]
10
- spec.email = ["rross@digitalocean.com"]
10
+ spec.email = ["engineering@digitalocean.com", "rross@digitalocean.com"]
11
11
  spec.summary = %q{Droplet Kit is the official Ruby library for DigitalOcean's API}
12
12
  spec.description = %q{Droplet Kit is the official Ruby library for DigitalOcean's API}
13
13
  spec.homepage = ""
@@ -14,6 +14,7 @@ module DropletKit
14
14
  property :resource_id, scopes: [:read]
15
15
  property :resource_type, scopes: [:read]
16
16
  property :region, scopes: [:read]
17
+ property :region_slug, scopes: [:read]
17
18
  end
18
19
  end
19
- end
20
+ end
@@ -14,6 +14,7 @@ module DropletKit
14
14
  property :resource_id, scopes: [:read]
15
15
  property :resource_type, scopes: [:read]
16
16
  property :region, scopes: [:read]
17
+ property :region_slug, scopes: [:read]
17
18
  end
18
19
  end
19
- end
20
+ end
@@ -7,11 +7,11 @@ module DropletKit
7
7
  root_key singular: 'ssh_key', plural: 'ssh_keys', scopes: [:read]
8
8
 
9
9
  property :id, :fingerprint, :public_key, :name,
10
- scopes: :read
10
+ scopes: [:read]
11
11
 
12
- property :name, :public_key, scopes: :create
12
+ property :name, :public_key, scopes: [:create]
13
13
 
14
- property :name, scopes: :update
14
+ property :name, scopes: [:update]
15
15
  end
16
16
  end
17
17
  end
@@ -8,5 +8,6 @@ module DropletKit
8
8
  attribute :resource_id
9
9
  attribute :resource_type
10
10
  attribute :region
11
+ attribute :region_slug
11
12
  end
12
- end
13
+ end
@@ -8,5 +8,6 @@ module DropletKit
8
8
  attribute :resource_id
9
9
  attribute :resource_type
10
10
  attribute :region
11
+ attribute :region_slug
11
12
  end
12
- end
13
+ end
@@ -37,7 +37,12 @@ module DropletKit
37
37
  end
38
38
 
39
39
  action :resize, 'POST /v2/droplets/:droplet_id/actions' do
40
- body { |hash| { type: 'resize', size: hash[:size] }.to_json }
40
+ body { |hash| { type: 'resize', size: hash[:size], disk: hash[:disk] }.to_json }
41
+ handler(201, 200) { |response| ActionMapping.extract_single(response.body, :read) }
42
+ end
43
+
44
+ action :upgrade, 'POST /v2/droplets/:droplet_id/actions' do
45
+ body { |hash| { type: 'upgrade' }.to_json }
41
46
  handler(201, 200) { |response| ActionMapping.extract_single(response.body, :read) }
42
47
  end
43
48
 
@@ -1,3 +1,3 @@
1
1
  module DropletKit
2
- VERSION = "1.1.3"
2
+ VERSION = "1.2.0"
3
3
  end
@@ -8,10 +8,11 @@
8
8
  "completed_at": null,
9
9
  "resource_id": null,
10
10
  "resource_type": "backend",
11
- "region": "nyc1"
11
+ "region": "nyc1",
12
+ "region_slug": "nyc1"
12
13
  }
13
14
  ],
14
15
  "meta": {
15
16
  "total": 1
16
17
  }
17
- }
18
+ }
@@ -7,6 +7,7 @@
7
7
  "completed_at": null,
8
8
  "resource_id": null,
9
9
  "resource_type": "backend",
10
- "region": "nyc1"
10
+ "region": "nyc1",
11
+ "region_slug": "nyc1"
11
12
  }
12
- }
13
+ }
@@ -8,10 +8,11 @@
8
8
  "completed_at": null,
9
9
  "resource_id": 24,
10
10
  "resource_type": "droplet",
11
- "region": "nyc1"
11
+ "region": "nyc1",
12
+ "region_slug": "nyc1"
12
13
  }
13
14
  ],
14
15
  "meta": {
15
16
  "total": 1
16
17
  }
17
- }
18
+ }
@@ -8,7 +8,8 @@
8
8
  "completed_at": "2014-10-28T17:11:06Z",
9
9
  "resource_id": 45646587,
10
10
  "resource_type": "image",
11
- "region": null
11
+ "region": null,
12
+ "region_slug": null
12
13
  },
13
14
  {
14
15
  "id": 234598,
@@ -18,11 +19,12 @@
18
19
  "completed_at": "2014-10-28T17:12:04Z",
19
20
  "resource_id": 45646587,
20
21
  "resource_type": "image",
21
- "region": "nyc2"
22
+ "region": "nyc2",
23
+ "region_slug": "nyc2"
22
24
  }
23
25
  ],
24
26
  "links": {},
25
27
  "meta": {
26
28
  "total": 2
27
29
  }
28
- }
30
+ }
@@ -7,6 +7,7 @@
7
7
  "completed_at": null,
8
8
  "resource_id": 449676391,
9
9
  "resource_type": "image",
10
- "region": "nyc1"
10
+ "region": "nyc1",
11
+ "region_slug": "nyc1"
11
12
  }
12
- }
13
+ }
@@ -7,6 +7,7 @@
7
7
  "completed_at": null,
8
8
  "resource_id": 449676391,
9
9
  "resource_type": "image",
10
- "region": "nyc1"
10
+ "region": "nyc1",
11
+ "region_slug": "nyc1"
11
12
  }
12
- }
13
+ }
@@ -12,6 +12,23 @@ RSpec.describe DropletKit::ActionResource do
12
12
 
13
13
  expect(resource.all).to eq(expected_actions)
14
14
  end
15
+
16
+ it 'returns a list of correctly mapped actions' do
17
+ response = api_fixture('actions/all')
18
+ stub_do_api('/v2/actions', :get).to_return(body: response)
19
+ actions = resource.all
20
+
21
+ expect(actions.first).to be_kind_of(DropletKit::Action)
22
+ expect(actions.first.id).to eq(1)
23
+ expect(actions.first.status).to eq("in-progress")
24
+ expect(actions.first.type).to eq("test")
25
+ expect(actions.first.started_at).to eq("2014-07-29T14:35:26Z")
26
+ expect(actions.first.completed_at).to eq(nil)
27
+ expect(actions.first.resource_id).to eq(nil)
28
+ expect(actions.first.resource_type).to eq("backend")
29
+ expect(actions.first.region).to eq("nyc1")
30
+ expect(actions.first.region_slug).to eq("nyc1")
31
+ end
15
32
  end
16
33
 
17
34
  describe '#find' do
@@ -22,5 +39,22 @@ RSpec.describe DropletKit::ActionResource do
22
39
 
23
40
  expect(resource.find(id: 123)).to eq(expected_action)
24
41
  end
42
+
43
+ it 'returns a correctly mapped action' do
44
+ response = api_fixture('actions/find')
45
+ stub_do_api('/v2/actions/123', :get).to_return(body: response)
46
+ action = resource.find(id: 123)
47
+
48
+ expect(action).to be_kind_of(DropletKit::Action)
49
+ expect(action.id).to eq(2)
50
+ expect(action.status).to eq("in-progress")
51
+ expect(action.type).to eq("test")
52
+ expect(action.started_at).to eq("2014-07-29T14:35:27Z")
53
+ expect(action.completed_at).to eq(nil)
54
+ expect(action.resource_id).to eq(nil)
55
+ expect(action.resource_type).to eq("backend")
56
+ expect(action.region).to eq("nyc1")
57
+ expect(action.region_slug).to eq("nyc1")
58
+ end
25
59
  end
26
- end
60
+ end
@@ -13,7 +13,8 @@ RSpec.describe DropletKit::DropletActionResource do
13
13
  "completed_at" => nil,
14
14
  "resource_id" => 12,
15
15
  "resource_type" => "droplet",
16
- "region" => "nyc1"
16
+ "region" => "nyc1",
17
+ "region_slug" => "nyc1"
17
18
  }
18
19
  }.to_json
19
20
  end
@@ -21,7 +22,8 @@ RSpec.describe DropletKit::DropletActionResource do
21
22
  include_context 'resources'
22
23
 
23
24
  ACTIONS_WITHOUT_INPUT = %w(reboot power_cycle shutdown power_off
24
- power_on password_reset enable_ipv6 disable_backups enable_private_networking)
25
+ power_on password_reset enable_ipv6 disable_backups enable_private_networking
26
+ upgrade)
25
27
 
26
28
  ACTIONS_WITHOUT_INPUT.each do |action_name|
27
29
  describe "Action #{action_name}" do
@@ -120,7 +122,7 @@ RSpec.describe DropletKit::DropletActionResource do
120
122
 
121
123
  it 'performs the action' do
122
124
  request = stub_do_api("/v2/droplets/#{droplet_id}/actions", :post).with(
123
- body: { type: action, size: '1gb' }.to_json
125
+ body: { type: action, size: '1gb', disk: nil }.to_json
124
126
  ).to_return(body: json, status: 201)
125
127
 
126
128
  returned_action = resource.send(action, droplet_id: droplet_id, size: '1gb')
@@ -130,6 +132,21 @@ RSpec.describe DropletKit::DropletActionResource do
130
132
  end
131
133
  end
132
134
 
135
+ describe "Action resize with disk" do
136
+ let(:action) { 'resize' }
137
+
138
+ it 'performs the action' do
139
+ request = stub_do_api("/v2/droplets/#{droplet_id}/actions", :post).with(
140
+ body: { type: action, size: '1gb', disk: true }.to_json
141
+ ).to_return(body: json, status: 201)
142
+
143
+ returned_action = resource.send(action, droplet_id: droplet_id, size: '1gb', disk: true)
144
+
145
+ expect(request).to have_been_made
146
+ expect(returned_action.type).to eq(action)
147
+ end
148
+ end
149
+
133
150
  describe '#find' do
134
151
  it 'returns an action' do
135
152
  request = stub_do_api("/v2/droplets/1066/actions/123", :get).to_return(
@@ -145,6 +162,7 @@ RSpec.describe DropletKit::DropletActionResource do
145
162
  expect(returned_action.resource_id).to eq(nil)
146
163
  expect(returned_action.resource_type).to eq("backend")
147
164
  expect(returned_action.region).to eq("nyc1")
165
+ expect(returned_action.region_slug).to eq("nyc1")
148
166
  end
149
167
  end
150
- end
168
+ end
@@ -23,6 +23,7 @@ RSpec.describe DropletKit::ImageActionResource do
23
23
  expect(action.resource_id).to eq(449676391)
24
24
  expect(action.resource_type).to eq("image")
25
25
  expect(action.region).to eq("nyc1")
26
+ expect(action.region_slug).to eq("nyc1")
26
27
  end
27
28
  end
28
29
 
@@ -49,6 +50,7 @@ RSpec.describe DropletKit::ImageActionResource do
49
50
  expect(action.resource_id).to eq(45646587)
50
51
  expect(action.resource_type).to eq("image")
51
52
  expect(action.region).to eq(nil)
53
+ expect(action.region_slug).to eq(nil)
52
54
  end
53
55
  end
54
56
 
@@ -66,6 +68,7 @@ RSpec.describe DropletKit::ImageActionResource do
66
68
  expect(action.resource_id).to eq(449676391)
67
69
  expect(action.resource_type).to eq("image")
68
70
  expect(action.region).to eq("nyc1")
71
+ expect(action.region_slug).to eq("nyc1")
69
72
  end
70
73
  end
71
- end
74
+ 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.1.3
4
+ version: 1.2.0
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-01-15 00:00:00.000000000 Z
11
+ date: 2015-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: virtus
@@ -166,6 +166,7 @@ dependencies:
166
166
  version: '1.18'
167
167
  description: Droplet Kit is the official Ruby library for DigitalOcean's API
168
168
  email:
169
+ - engineering@digitalocean.com
169
170
  - rross@digitalocean.com
170
171
  executables: []
171
172
  extensions: []