droplet_kit 1.0.2 → 1.1.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 +4 -4
- data/.travis.yml +5 -0
- data/CHANGELOG.md +17 -0
- data/README.md +35 -0
- data/droplet_kit.gemspec +4 -2
- data/lib/droplet_kit.rb +3 -0
- data/lib/droplet_kit/client.rb +3 -1
- data/lib/droplet_kit/mappings/account_mapping.rb +17 -0
- data/lib/droplet_kit/mappings/droplet_mapping.rb +2 -0
- data/lib/droplet_kit/models/account.rb +8 -0
- data/lib/droplet_kit/models/droplet.rb +2 -0
- data/lib/droplet_kit/models/image.rb +1 -1
- data/lib/droplet_kit/paginated_resource.rb +5 -6
- data/lib/droplet_kit/resources/account_resource.rb +8 -0
- data/lib/droplet_kit/resources/action_resource.rb +2 -1
- data/lib/droplet_kit/resources/domain_record_resource.rb +1 -1
- data/lib/droplet_kit/resources/domain_resource.rb +1 -1
- data/lib/droplet_kit/resources/droplet_action_resource.rb +2 -2
- data/lib/droplet_kit/resources/droplet_resource.rb +22 -2
- data/lib/droplet_kit/resources/image_resource.rb +2 -2
- data/lib/droplet_kit/resources/region_resource.rb +1 -1
- data/lib/droplet_kit/resources/size_resource.rb +1 -1
- data/lib/droplet_kit/resources/ssh_key_resource.rb +1 -1
- data/lib/droplet_kit/version.rb +1 -1
- data/spec/fixtures/account/info.json +8 -0
- data/spec/fixtures/droplets/all.json +7 -1
- data/spec/fixtures/droplets/create.json +7 -1
- data/spec/fixtures/droplets/find.json +7 -1
- data/spec/lib/droplet_kit/paginated_resource_spec.rb +6 -6
- data/spec/lib/droplet_kit/resources/account_resource_spec.rb +24 -0
- data/spec/lib/droplet_kit/resources/action_resource_spec.rb +1 -1
- data/spec/lib/droplet_kit/resources/domain_record_resource_spec.rb +1 -1
- data/spec/lib/droplet_kit/resources/domain_resource_spec.rb +1 -1
- data/spec/lib/droplet_kit/resources/droplet_action_resource_spec.rb +3 -3
- data/spec/lib/droplet_kit/resources/droplet_resource_spec.rb +21 -11
- data/spec/lib/droplet_kit/resources/image_action_resource_spec.rb +1 -1
- data/spec/lib/droplet_kit/resources/image_resource_spec.rb +1 -1
- data/spec/lib/droplet_kit/resources/region_resource_spec.rb +2 -2
- data/spec/lib/droplet_kit/resources/size_resource_spec.rb +1 -1
- data/spec/lib/droplet_kit/resources/ssh_key_resource_spec.rb +1 -1
- metadata +16 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 049df1218b2a89e735a4aa6a21b6021f1aa2babf
|
4
|
+
data.tar.gz: c04ff432b31fb45e1cdf3bb05af3674f07adfc32
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9dff4c196ff43708ae25e5ee2d285e86758a021cba20045d37bb8d7016d21e1644b1b439e657de6de6f8bcb87c974ccd28ae2edf683f2d0658c99ca540554561
|
7
|
+
data.tar.gz: 8f28a270b70529fbca2862f461c24dee13af86ba5dbb9a13acce7ad6173b9ee7286fc15d6ded6beb6404eb95a5641b7d19aaac8587c47234f55e7f68139b76fb
|
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
### Version 1.1.0
|
2
|
+
|
3
|
+
* Changing kernels is now `client.droplet_actions.change_kernel(kernel: 'name', droplet_id: 123)` instead of `droplet_actions.kernel()`.
|
4
|
+
* Include Account resource. `client.account`. This allows you to grab information about the user for the access token provided.
|
5
|
+
* Paginate more resources. This includes:
|
6
|
+
* Droplet Kernels
|
7
|
+
* Actions
|
8
|
+
* Snapshots
|
9
|
+
* Backups
|
10
|
+
* Allow creating droplets with User Data and Private Networking
|
11
|
+
* See [#8](https://github.com/digitalocean/droplet_kit/pull/8) - Thanks @rbishop !
|
12
|
+
* Fixed a bug where if the resource was paginated and returning 0 entries, an infinite loop would occur.
|
13
|
+
* See [#11](https://github.com/digitalocean/droplet_kit/pull/11) - Thanks @webdestroya !
|
14
|
+
|
15
|
+
### August 8, 2014 (Initial Release)
|
16
|
+
|
17
|
+
* Initial Release
|
data/README.md
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
DropletKit is the official [DigitalOcean V2 API](https://developers.digitalocean.com/v2/) client. It supports everything the API can do with a simple interface written in Ruby.
|
4
4
|
|
5
|
+
[](https://travis-ci.org/digitalocean/droplet_kit)
|
6
|
+
|
5
7
|
## Installation
|
6
8
|
|
7
9
|
Add this line to your application's Gemfile:
|
@@ -61,6 +63,7 @@ droplet = client.droplets.find(id: 123)
|
|
61
63
|
```
|
62
64
|
|
63
65
|
# All Resources and actions.
|
66
|
+
|
64
67
|
## Droplet resource
|
65
68
|
|
66
69
|
client = DropletKit::Client.new(access_token: 'TOKEN')
|
@@ -77,6 +80,29 @@ Actions supported:
|
|
77
80
|
* `client.droplets.backups(id: 'id')`
|
78
81
|
* `client.droplets.actions(id: 'id')`
|
79
82
|
|
83
|
+
## Droplet Action resource
|
84
|
+
|
85
|
+
client = DropletKit::Client.new(access_token: 'TOKEN')
|
86
|
+
client.droplet_actions #=> DropletKit::DropletAction
|
87
|
+
|
88
|
+
Actions supported:
|
89
|
+
|
90
|
+
* `client.droplet_actions.reboot(droplet_id: droplet.id)`
|
91
|
+
* `client.droplet_actions.power_cycle(droplet_id: droplet.id)`
|
92
|
+
* `client.droplet_actions.shutdown(droplet_id: droplet.id)`
|
93
|
+
* `client.droplet_actions.power_off(droplet_id: droplet.id)`
|
94
|
+
* `client.droplet_actions.power_on(droplet_id: droplet.id)`
|
95
|
+
* `client.droplet_actions.password_reset(droplet_id: droplet.id)`
|
96
|
+
* `client.droplet_actions.enable_ipv6(droplet_id: droplet.id)`
|
97
|
+
* `client.droplet_actions.disable_backups(droplet_id: droplet.id)`
|
98
|
+
* `client.droplet_actions.enable_private_networking(droplet_id: droplet.id)`
|
99
|
+
* `client.droplet_actions.snapshot(droplet_id: droplet.id, name: 'Snapshot Name')`
|
100
|
+
* `client.droplet_actions.change_kernel(droplet_id: droplet.id, kernel: 'kernel_id')`
|
101
|
+
* `client.droplet_actions.rename(droplet_id: droplet.id, name: 'New-Droplet-Name')`
|
102
|
+
* `client.droplet_actions.rebuild(droplet_id: droplet.id, image: 'image_id')`
|
103
|
+
* `client.droplet_actions.restore(droplet_id: droplet.id, image: 'image_id')`
|
104
|
+
* `client.droplet_actions.resize(droplet_id: droplet.id, size: '1gb')`
|
105
|
+
* `client.droplet_actions.find(droplet_id: droplet.id, id: action.id)`
|
80
106
|
|
81
107
|
## Domain resource
|
82
108
|
|
@@ -151,6 +177,15 @@ Actions supported:
|
|
151
177
|
* `client.ssh_keys.delete(id: 'id')`
|
152
178
|
* `client.ssh_keys.update(ssh_key, id: 'id')`
|
153
179
|
|
180
|
+
## Account resource
|
181
|
+
|
182
|
+
client = DropletKit::Client.new(access_token: 'TOKEN')
|
183
|
+
client.account #=> DropletKit::AccountResource
|
184
|
+
|
185
|
+
Actions supported:
|
186
|
+
|
187
|
+
* `client.account.info()`
|
188
|
+
|
154
189
|
|
155
190
|
## Contributing
|
156
191
|
|
data/droplet_kit.gemspec
CHANGED
@@ -17,10 +17,12 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.required_ruby_version = '>= 2.0.0'
|
20
22
|
|
21
23
|
spec.add_dependency 'virtus', '~> 1.0.3'
|
22
|
-
spec.add_dependency "resource_kit", '~> 0.
|
23
|
-
spec.add_dependency "kartograph", '~> 0.0
|
24
|
+
spec.add_dependency "resource_kit", '~> 0.1.1'
|
25
|
+
spec.add_dependency "kartograph", '~> 0.2.0'
|
24
26
|
spec.add_dependency "activesupport", '~> 4.1.6'
|
25
27
|
|
26
28
|
spec.add_development_dependency "bundler", "~> 1.6"
|
data/lib/droplet_kit.rb
CHANGED
@@ -23,6 +23,7 @@ module DropletKit
|
|
23
23
|
autoload :DomainRecord, 'droplet_kit/models/domain_record'
|
24
24
|
autoload :SSHKey, 'droplet_kit/models/ssh_key'
|
25
25
|
autoload :MetaInformation, 'droplet_kit/models/meta_information'
|
26
|
+
autoload :Account, 'droplet_kit/models/account'
|
26
27
|
|
27
28
|
# Resources
|
28
29
|
autoload :DropletResource, 'droplet_kit/resources/droplet_resource'
|
@@ -35,6 +36,7 @@ module DropletKit
|
|
35
36
|
autoload :SSHKeyResource, 'droplet_kit/resources/ssh_key_resource'
|
36
37
|
autoload :RegionResource, 'droplet_kit/resources/region_resource'
|
37
38
|
autoload :SizeResource, 'droplet_kit/resources/size_resource'
|
39
|
+
autoload :AccountResource, 'droplet_kit/resources/account_resource'
|
38
40
|
|
39
41
|
# JSON Maps
|
40
42
|
autoload :DropletMapping, 'droplet_kit/mappings/droplet_mapping'
|
@@ -52,6 +54,7 @@ module DropletKit
|
|
52
54
|
autoload :DropletActionMapping, 'droplet_kit/mappings/droplet_action_mapping'
|
53
55
|
autoload :ImageActionMapping, 'droplet_kit/mappings/image_action_mapping'
|
54
56
|
autoload :SSHKeyMapping, 'droplet_kit/mappings/ssh_key_mapping'
|
57
|
+
autoload :AccountMapping, 'droplet_kit/mappings/account_mapping'
|
55
58
|
|
56
59
|
|
57
60
|
# Utils
|
data/lib/droplet_kit/client.rb
CHANGED
@@ -18,6 +18,7 @@ module DropletKit
|
|
18
18
|
|
19
19
|
def self.resources
|
20
20
|
{
|
21
|
+
actions: ActionResource,
|
21
22
|
droplets: DropletResource,
|
22
23
|
domains: DomainResource,
|
23
24
|
domain_records: DomainRecordResource,
|
@@ -27,12 +28,13 @@ module DropletKit
|
|
27
28
|
regions: RegionResource,
|
28
29
|
sizes: SizeResource,
|
29
30
|
ssh_keys: SSHKeyResource,
|
31
|
+
account: AccountResource,
|
30
32
|
}
|
31
33
|
end
|
32
34
|
|
33
35
|
def method_missing(name, *args, &block)
|
34
36
|
if self.class.resources.keys.include?(name)
|
35
|
-
resources[name] ||= self.class.resources[name].new(connection)
|
37
|
+
resources[name] ||= self.class.resources[name].new(connection: connection)
|
36
38
|
resources[name]
|
37
39
|
else
|
38
40
|
super
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module DropletKit
|
2
|
+
class AccountMapping
|
3
|
+
include Kartograph::DSL
|
4
|
+
|
5
|
+
kartograph do
|
6
|
+
root_key singular: 'account', scopes: [:read]
|
7
|
+
mapping Account
|
8
|
+
|
9
|
+
scoped :read do
|
10
|
+
property :droplet_limit
|
11
|
+
property :email
|
12
|
+
property :uuid
|
13
|
+
property :email_verified
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -4,14 +4,14 @@ module DropletKit
|
|
4
4
|
|
5
5
|
PER_PAGE = 20
|
6
6
|
|
7
|
-
attr_reader :action, :
|
7
|
+
attr_reader :action, :resource, :collection
|
8
8
|
attr_accessor :total
|
9
9
|
|
10
|
-
def initialize(
|
10
|
+
def initialize(action, resource, *args)
|
11
11
|
@current_page = 0
|
12
12
|
@total = nil
|
13
|
-
@action =
|
14
|
-
@
|
13
|
+
@action = action
|
14
|
+
@resource = resource
|
15
15
|
@collection = []
|
16
16
|
@args = args
|
17
17
|
@options = args.last.kind_of?(Hash) ? args.last : {}
|
@@ -44,7 +44,6 @@ module DropletKit
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def ==(other)
|
47
|
-
return false if self.total != other.length
|
48
47
|
each_with_index.each.all? {|object, index| object == other[index] }
|
49
48
|
end
|
50
49
|
|
@@ -56,7 +55,7 @@ module DropletKit
|
|
56
55
|
end
|
57
56
|
|
58
57
|
def retrieve(page, per_page = self.per_page)
|
59
|
-
invoker = ResourceKit::ActionInvoker.new(action,
|
58
|
+
invoker = ResourceKit::ActionInvoker.new(action, resource, *@args)
|
60
59
|
invoker.options[:per_page] ||= per_page
|
61
60
|
invoker.options[:page] = page
|
62
61
|
|
@@ -2,6 +2,7 @@ module DropletKit
|
|
2
2
|
class ActionResource < ResourceKit::Resource
|
3
3
|
resources do
|
4
4
|
action :all, 'GET /v2/actions' do
|
5
|
+
query_keys :per_page, :page
|
5
6
|
handler(200) { |response| ActionMapping.extract_collection(response.body, :read) }
|
6
7
|
end
|
7
8
|
|
@@ -11,7 +12,7 @@ module DropletKit
|
|
11
12
|
end
|
12
13
|
|
13
14
|
def all(*args)
|
14
|
-
PaginatedResource.new(
|
15
|
+
PaginatedResource.new(action(:all), self, *args)
|
15
16
|
end
|
16
17
|
end
|
17
18
|
end
|
@@ -16,8 +16,8 @@ module DropletKit
|
|
16
16
|
handler(201, 200) { |response| ActionMapping.extract_single(response.body, :read) }
|
17
17
|
end
|
18
18
|
|
19
|
-
action :
|
20
|
-
body { |hash| { type: '
|
19
|
+
action :change_kernel, 'POST /v2/droplets/:droplet_id/actions' do
|
20
|
+
body { |hash| { type: 'change_kernel', kernel: hash[:kernel] }.to_json }
|
21
21
|
handler(201, 200) { |response| ActionMapping.extract_single(response.body, :read) }
|
22
22
|
end
|
23
23
|
|
@@ -21,24 +21,44 @@ module DropletKit
|
|
21
21
|
end
|
22
22
|
|
23
23
|
action :kernels, 'GET /v2/droplets/:id/kernels' do
|
24
|
+
query_keys :per_page, :page
|
24
25
|
handler(200) { |response| KernelMapping.extract_collection(response.body, :read) }
|
25
26
|
end
|
26
27
|
|
27
28
|
action :snapshots, 'GET /v2/droplets/:id/snapshots' do
|
29
|
+
query_keys :per_page, :page
|
28
30
|
handler(200) { |response| SnapshotMapping.extract_collection(response.body, :read) }
|
29
31
|
end
|
30
32
|
|
31
33
|
action :backups, 'GET /v2/droplets/:id/backups' do
|
34
|
+
query_keys :per_page, :page
|
32
35
|
handler(200) { |response| BackupMapping.extract_collection(response.body, :read) }
|
33
36
|
end
|
34
37
|
|
35
38
|
action :actions, 'GET /v2/droplets/:id/actions' do
|
39
|
+
query_keys :per_page, :page
|
36
40
|
handler(200) { |response| ActionMapping.extract_collection(response.body, :read) }
|
37
41
|
end
|
38
42
|
end
|
39
43
|
|
40
44
|
def all(*args)
|
41
|
-
PaginatedResource.new(
|
45
|
+
PaginatedResource.new(action(:all), self, *args)
|
46
|
+
end
|
47
|
+
|
48
|
+
def kernels(*args)
|
49
|
+
PaginatedResource.new(action(:kernels), self, *args)
|
50
|
+
end
|
51
|
+
|
52
|
+
def snapshots(*args)
|
53
|
+
PaginatedResource.new(action(:snapshots), self, *args)
|
54
|
+
end
|
55
|
+
|
56
|
+
def backups(*args)
|
57
|
+
PaginatedResource.new(action(:backups), self, *args)
|
58
|
+
end
|
59
|
+
|
60
|
+
def actions(*args)
|
61
|
+
PaginatedResource.new(action(:actions), self, *args)
|
42
62
|
end
|
43
63
|
end
|
44
|
-
end
|
64
|
+
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
|
5
|
+
query_keys :page, :per_page, :type
|
6
6
|
handler(200) { |response| ImageMapping.extract_collection(response.body, :read) }
|
7
7
|
end
|
8
8
|
|
@@ -21,7 +21,7 @@ module DropletKit
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def all(*args)
|
24
|
-
PaginatedResource.new(
|
24
|
+
PaginatedResource.new(action(:all), self, *args)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
data/lib/droplet_kit/version.rb
CHANGED
@@ -42,6 +42,12 @@
|
|
42
42
|
"status": "active",
|
43
43
|
"networks": {
|
44
44
|
"v4": [
|
45
|
+
{
|
46
|
+
"ip_address": "10.0.0.19",
|
47
|
+
"netmask": "255.255.0.0",
|
48
|
+
"gateway": "10.0.0.1",
|
49
|
+
"type": "private"
|
50
|
+
},
|
45
51
|
{
|
46
52
|
"ip_address": "127.0.0.19",
|
47
53
|
"netmask": "255.255.255.0",
|
@@ -81,4 +87,4 @@
|
|
81
87
|
"meta": {
|
82
88
|
"total": 1
|
83
89
|
}
|
84
|
-
}
|
90
|
+
}
|
@@ -41,6 +41,12 @@
|
|
41
41
|
"status": "active",
|
42
42
|
"networks": {
|
43
43
|
"v4": [
|
44
|
+
{
|
45
|
+
"ip_address": "10.0.0.19",
|
46
|
+
"netmask": "255.255.0.0",
|
47
|
+
"gateway": "10.0.0.1",
|
48
|
+
"type": "private"
|
49
|
+
},
|
44
50
|
{
|
45
51
|
"ip_address": "127.0.0.19",
|
46
52
|
"netmask": "255.255.255.0",
|
@@ -76,4 +82,4 @@
|
|
76
82
|
|
77
83
|
]
|
78
84
|
}
|
79
|
-
}
|
85
|
+
}
|
@@ -41,6 +41,12 @@
|
|
41
41
|
"status": "active",
|
42
42
|
"networks": {
|
43
43
|
"v4": [
|
44
|
+
{
|
45
|
+
"ip_address": "10.0.0.19",
|
46
|
+
"netmask": "255.255.0.0",
|
47
|
+
"gateway": "10.0.0.1",
|
48
|
+
"type": "private"
|
49
|
+
},
|
44
50
|
{
|
45
51
|
"ip_address": "127.0.0.19",
|
46
52
|
"netmask": "255.255.255.0",
|
@@ -76,4 +82,4 @@
|
|
76
82
|
|
77
83
|
]
|
78
84
|
}
|
79
|
-
}
|
85
|
+
}
|
@@ -4,6 +4,7 @@ require 'addressable/uri'
|
|
4
4
|
RequestCounter = Struct.new(:count)
|
5
5
|
|
6
6
|
RSpec.describe DropletKit::PaginatedResource do
|
7
|
+
let(:resource) { ResourceKit::Resource.new(connection: connection) }
|
7
8
|
let(:request_count) { RequestCounter.new(0) }
|
8
9
|
|
9
10
|
let(:connection) { Faraday.new {|b| b.adapter :test, stubs } }
|
@@ -23,7 +24,6 @@ RSpec.describe DropletKit::PaginatedResource do
|
|
23
24
|
end
|
24
25
|
end
|
25
26
|
let(:action) { ResourceKit::Action.new(:find, :get, '/droplets') }
|
26
|
-
let(:action_connection) { ResourceKit::ActionConnection.new(action, connection) }
|
27
27
|
|
28
28
|
before do
|
29
29
|
action.query_keys :per_page, :page
|
@@ -31,15 +31,15 @@ RSpec.describe DropletKit::PaginatedResource do
|
|
31
31
|
end
|
32
32
|
|
33
33
|
describe '#initialize' do
|
34
|
-
it 'initializes with a action
|
35
|
-
instance = DropletKit::PaginatedResource.new(
|
34
|
+
it 'initializes with a action and resource' do
|
35
|
+
instance = DropletKit::PaginatedResource.new(action, resource)
|
36
36
|
expect(instance.action).to be(action)
|
37
|
-
expect(instance.
|
37
|
+
expect(instance.resource).to be(resource)
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
41
|
describe '#each' do
|
42
|
-
subject(:paginated) { DropletKit::PaginatedResource.new(
|
42
|
+
subject(:paginated) { DropletKit::PaginatedResource.new(action, resource) }
|
43
43
|
|
44
44
|
it 'iterates over every object returned from the API' do
|
45
45
|
total = 0
|
@@ -59,7 +59,7 @@ RSpec.describe DropletKit::PaginatedResource do
|
|
59
59
|
end
|
60
60
|
|
61
61
|
context 'for changing size' do
|
62
|
-
subject(:paginated) { DropletKit::PaginatedResource.new(
|
62
|
+
subject(:paginated) { DropletKit::PaginatedResource.new(action, resource, per_page: 40) }
|
63
63
|
|
64
64
|
it 'only calls the API once' do
|
65
65
|
expect {|b| paginated.each {|c| c } }.to change { request_count.count }.to(1).from(0)
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe DropletKit::AccountResource do
|
4
|
+
subject(:resource) { described_class.new(connection: connection) }
|
5
|
+
include_context 'resources'
|
6
|
+
|
7
|
+
describe '#info' do
|
8
|
+
it 'returns the information about the current user' do
|
9
|
+
fixture = api_fixture('account/info')
|
10
|
+
parsed = JSON.load(fixture)
|
11
|
+
|
12
|
+
stub_do_api('/v2/account').to_return(body: fixture)
|
13
|
+
account_info = resource.info
|
14
|
+
|
15
|
+
expect(account_info).to be_kind_of(DropletKit::Account)
|
16
|
+
|
17
|
+
expect(account_info.droplet_limit).to eq(parsed['account']['droplet_limit'])
|
18
|
+
expect(account_info.email).to eq(parsed['account']['email'])
|
19
|
+
expect(account_info.uuid).to eq(parsed['account']['uuid'])
|
20
|
+
expect(account_info.email_verified).to eq(parsed['account']['email_verified'])
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
RSpec.describe DropletKit::DropletActionResource do
|
4
|
-
subject(:resource) { described_class.new(connection) }
|
4
|
+
subject(:resource) { described_class.new(connection: connection) }
|
5
5
|
let(:droplet_id) { 1066 }
|
6
6
|
def json
|
7
7
|
{
|
@@ -55,8 +55,8 @@ RSpec.describe DropletKit::DropletActionResource do
|
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
|
-
describe "Action
|
59
|
-
let(:action) { '
|
58
|
+
describe "Action change_kernel" do
|
59
|
+
let(:action) { 'change_kernel' }
|
60
60
|
|
61
61
|
it 'performs the action' do
|
62
62
|
request = stub_do_api("/v2/droplets/#{droplet_id}/actions", :post).with(
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
RSpec.describe DropletKit::DropletResource do
|
4
|
-
subject(:resource) { described_class.new(connection) }
|
4
|
+
subject(:resource) { described_class.new(connection: connection) }
|
5
5
|
include_context 'resources'
|
6
6
|
|
7
7
|
# Theres a lot to check
|
@@ -41,11 +41,17 @@ RSpec.describe DropletKit::DropletResource do
|
|
41
41
|
expect(droplet.size.price_hourly).to eq(0.01488)
|
42
42
|
|
43
43
|
expect(droplet.networks).to be_kind_of(DropletKit::NetworkHash)
|
44
|
-
|
45
|
-
expect(
|
46
|
-
expect(
|
47
|
-
expect(
|
48
|
-
expect(
|
44
|
+
private_v4_network = droplet.networks.v4.first
|
45
|
+
expect(private_v4_network.ip_address).to eq('10.0.0.19')
|
46
|
+
expect(private_v4_network.netmask).to eq("255.255.0.0")
|
47
|
+
expect(private_v4_network.gateway).to eq("10.0.0.1")
|
48
|
+
expect(private_v4_network.type).to eq("private")
|
49
|
+
|
50
|
+
public_v4_network = droplet.networks.v4.last
|
51
|
+
expect(public_v4_network.ip_address).to eq('127.0.0.19')
|
52
|
+
expect(public_v4_network.netmask).to eq("255.255.255.0")
|
53
|
+
expect(public_v4_network.gateway).to eq("127.0.0.20")
|
54
|
+
expect(public_v4_network.type).to eq("public")
|
49
55
|
|
50
56
|
v6_network = droplet.networks.v6.first
|
51
57
|
expect(v6_network.ip_address).to eq('2001::13')
|
@@ -88,7 +94,9 @@ RSpec.describe DropletKit::DropletResource do
|
|
88
94
|
image: 'ubuntu-14-04-x86',
|
89
95
|
ssh_keys: [123],
|
90
96
|
backups: true,
|
91
|
-
ipv6: true
|
97
|
+
ipv6: true,
|
98
|
+
private_networking: true,
|
99
|
+
user_data: "#cloud-config\nruncmd\n\t- echo 'Hello!'"
|
92
100
|
)
|
93
101
|
|
94
102
|
as_hash = DropletKit::DropletMapping.representation_for(:create, droplet, NullHashLoad)
|
@@ -99,6 +107,8 @@ RSpec.describe DropletKit::DropletResource do
|
|
99
107
|
expect(as_hash[:ssh_keys]).to eq(droplet.ssh_keys)
|
100
108
|
expect(as_hash[:backups]).to eq(droplet.backups)
|
101
109
|
expect(as_hash[:ipv6]).to eq(droplet.ipv6)
|
110
|
+
expect(as_hash[:private_networking]).to eq(droplet.private_networking)
|
111
|
+
expect(as_hash[:user_data]).to eq(droplet.user_data)
|
102
112
|
|
103
113
|
as_string = DropletKit::DropletMapping.representation_for(:create, droplet)
|
104
114
|
stub_do_api('/v2/droplets', :post).with(body: as_string).to_return(body: api_fixture('droplets/create'), status: 202)
|
@@ -120,7 +130,7 @@ RSpec.describe DropletKit::DropletResource do
|
|
120
130
|
describe '#kernels' do
|
121
131
|
it 'returns a list of kernels for a droplet' do
|
122
132
|
stub_do_api('/v2/droplets/1066/kernels', :get).to_return(body: api_fixture('droplets/list_kernels'))
|
123
|
-
kernels = resource.kernels(id: 1066)
|
133
|
+
kernels = resource.kernels(id: 1066).take(20)
|
124
134
|
|
125
135
|
expect(kernels).to all(be_kind_of(DropletKit::Kernel))
|
126
136
|
expect(kernels[0].id).to eq(61833229)
|
@@ -136,7 +146,7 @@ RSpec.describe DropletKit::DropletResource do
|
|
136
146
|
describe '#snapshots' do
|
137
147
|
it 'returns a list of kernels for a droplet' do
|
138
148
|
stub_do_api('/v2/droplets/1066/snapshots', :get).to_return(body: api_fixture('droplets/list_snapshots'))
|
139
|
-
snapshots = resource.snapshots(id: 1066)
|
149
|
+
snapshots = resource.snapshots(id: 1066).take(20)
|
140
150
|
|
141
151
|
expect(snapshots).to all(be_kind_of(DropletKit::Snapshot))
|
142
152
|
expect(snapshots[0].id).to eq(449676387)
|
@@ -152,7 +162,7 @@ RSpec.describe DropletKit::DropletResource do
|
|
152
162
|
describe '#backups' do
|
153
163
|
it 'returns a list of backups for a droplet' do
|
154
164
|
stub_do_api('/v2/droplets/1066/backups', :get).to_return(body: api_fixture('droplets/list_backups'))
|
155
|
-
backups = resource.backups(id: 1066)
|
165
|
+
backups = resource.backups(id: 1066).take(20)
|
156
166
|
|
157
167
|
expect(backups).to all(be_kind_of(DropletKit::Backup))
|
158
168
|
expect(backups[0].id).to eq(449676388)
|
@@ -168,7 +178,7 @@ RSpec.describe DropletKit::DropletResource do
|
|
168
178
|
describe '#actions' do
|
169
179
|
it 'returns a list of actions for the droplet' do
|
170
180
|
stub_do_api('/v2/droplets/1066/actions', :get).to_return(body: api_fixture('droplets/list_actions'))
|
171
|
-
actions = resource.actions(id: 1066)
|
181
|
+
actions = resource.actions(id: 1066).take(20)
|
172
182
|
|
173
183
|
expect(actions).to all(be_kind_of(DropletKit::Action))
|
174
184
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
RSpec.describe DropletKit::RegionResource do
|
4
|
-
subject(:resource) { described_class.new(connection) }
|
4
|
+
subject(:resource) { described_class.new(connection: connection) }
|
5
5
|
include_context 'resources'
|
6
6
|
|
7
7
|
describe '#all' do
|
@@ -13,4 +13,4 @@ RSpec.describe DropletKit::RegionResource do
|
|
13
13
|
expect(resource.all).to eq(expected)
|
14
14
|
end
|
15
15
|
end
|
16
|
-
end
|
16
|
+
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.0
|
4
|
+
version: 1.1.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: 2014-
|
11
|
+
date: 2014-11-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: virtus
|
@@ -30,28 +30,28 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.1.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.1.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: kartograph
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.0
|
47
|
+
version: 0.2.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.0
|
54
|
+
version: 0.2.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: activesupport
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -159,6 +159,8 @@ extra_rdoc_files: []
|
|
159
159
|
files:
|
160
160
|
- ".gitignore"
|
161
161
|
- ".rspec"
|
162
|
+
- ".travis.yml"
|
163
|
+
- CHANGELOG.md
|
162
164
|
- Gemfile
|
163
165
|
- LICENSE.txt
|
164
166
|
- README.md
|
@@ -166,6 +168,7 @@ files:
|
|
166
168
|
- droplet_kit.gemspec
|
167
169
|
- lib/droplet_kit.rb
|
168
170
|
- lib/droplet_kit/client.rb
|
171
|
+
- lib/droplet_kit/mappings/account_mapping.rb
|
169
172
|
- lib/droplet_kit/mappings/action_mapping.rb
|
170
173
|
- lib/droplet_kit/mappings/backup_mapping.rb
|
171
174
|
- lib/droplet_kit/mappings/domain_mapping.rb
|
@@ -181,6 +184,7 @@ files:
|
|
181
184
|
- lib/droplet_kit/mappings/size_mapping.rb
|
182
185
|
- lib/droplet_kit/mappings/snapshot_mapping.rb
|
183
186
|
- lib/droplet_kit/mappings/ssh_key_mapping.rb
|
187
|
+
- lib/droplet_kit/models/account.rb
|
184
188
|
- lib/droplet_kit/models/action.rb
|
185
189
|
- lib/droplet_kit/models/backup.rb
|
186
190
|
- lib/droplet_kit/models/base_model.rb
|
@@ -199,6 +203,7 @@ files:
|
|
199
203
|
- lib/droplet_kit/models/snapshot.rb
|
200
204
|
- lib/droplet_kit/models/ssh_key.rb
|
201
205
|
- lib/droplet_kit/paginated_resource.rb
|
206
|
+
- lib/droplet_kit/resources/account_resource.rb
|
202
207
|
- lib/droplet_kit/resources/action_resource.rb
|
203
208
|
- lib/droplet_kit/resources/domain_record_resource.rb
|
204
209
|
- lib/droplet_kit/resources/domain_resource.rb
|
@@ -211,6 +216,7 @@ files:
|
|
211
216
|
- lib/droplet_kit/resources/ssh_key_resource.rb
|
212
217
|
- lib/droplet_kit/version.rb
|
213
218
|
- lib/tasks/resource_doc.rake
|
219
|
+
- spec/fixtures/account/info.json
|
214
220
|
- spec/fixtures/actions/all.json
|
215
221
|
- spec/fixtures/actions/find.json
|
216
222
|
- spec/fixtures/domain_records/all.json
|
@@ -239,6 +245,7 @@ files:
|
|
239
245
|
- spec/fixtures/ssh_keys/update.json
|
240
246
|
- spec/lib/droplet_kit/client_spec.rb
|
241
247
|
- spec/lib/droplet_kit/paginated_resource_spec.rb
|
248
|
+
- spec/lib/droplet_kit/resources/account_resource_spec.rb
|
242
249
|
- spec/lib/droplet_kit/resources/action_resource_spec.rb
|
243
250
|
- spec/lib/droplet_kit/resources/domain_record_resource_spec.rb
|
244
251
|
- spec/lib/droplet_kit/resources/domain_resource_spec.rb
|
@@ -266,7 +273,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
266
273
|
requirements:
|
267
274
|
- - ">="
|
268
275
|
- !ruby/object:Gem::Version
|
269
|
-
version:
|
276
|
+
version: 2.0.0
|
270
277
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
271
278
|
requirements:
|
272
279
|
- - ">="
|
@@ -279,6 +286,7 @@ signing_key:
|
|
279
286
|
specification_version: 4
|
280
287
|
summary: Droplet Kit is the official Ruby library for Digital Ocean's API
|
281
288
|
test_files:
|
289
|
+
- spec/fixtures/account/info.json
|
282
290
|
- spec/fixtures/actions/all.json
|
283
291
|
- spec/fixtures/actions/find.json
|
284
292
|
- spec/fixtures/domain_records/all.json
|
@@ -307,6 +315,7 @@ test_files:
|
|
307
315
|
- spec/fixtures/ssh_keys/update.json
|
308
316
|
- spec/lib/droplet_kit/client_spec.rb
|
309
317
|
- spec/lib/droplet_kit/paginated_resource_spec.rb
|
318
|
+
- spec/lib/droplet_kit/resources/account_resource_spec.rb
|
310
319
|
- spec/lib/droplet_kit/resources/action_resource_spec.rb
|
311
320
|
- spec/lib/droplet_kit/resources/domain_record_resource_spec.rb
|
312
321
|
- spec/lib/droplet_kit/resources/domain_resource_spec.rb
|