droplet_kit 1.1.3 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: []