droplet_kit 3.3.1 → 3.4.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
  SHA256:
3
- metadata.gz: 4472877cc1bfc802ea73e98933fe24bab2adddf4c1eafc6f0f36a0a82acea0f7
4
- data.tar.gz: 88cc28e10a85151390521ad93482e758f83068139c4eeef17d84974f9989a01a
3
+ metadata.gz: 1bcc722fe43dcbe1053885290daaaa4760b68a24c0e5906a9c7a4bb5da3b76c5
4
+ data.tar.gz: a99ad56fff825502d3b22e610a3066f518e93c1a6a9dac5a323924492ad55ce6
5
5
  SHA512:
6
- metadata.gz: 27521d0b8fd97888f25b7c18d716d70075e5f354ac66b1400fadbb0ad1be5c069ddc0555a893af4091d67593c37290e3db24c3d21f34dcf1b218e7be41a7254f
7
- data.tar.gz: a0755dd5ed486a294b0f7ce8cb1fb8e9ae7c313c6c26162650fca966fd593dd0c37153270bbe007b52bb9045b9d036f3cd41348610a4019148e543038ac24c3f
6
+ metadata.gz: 2734100b49139ba6a695b23c81f86eaee262355db026e2c801334a55b3994b74f0711ea68b8c61d887f13f19ade1d21639251f1c6d6d03a97f5e8fa2ab72848d
7
+ data.tar.gz: 82ccd08bd1af12596baf0523c394aa019ec4fa00842cbfe69a145d97aa46f463ff6efef97761bec90cea8eb1e9584f8beec7b037dbe06fe20b7f4b4d8cd4bfe0
data/README.md CHANGED
@@ -20,9 +20,9 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- You'll need to generate an access token in Digital Ocean's control panel at https://cloud.digitalocean.com/settings/applications
23
+ You'll need to generate an access token in DigitalOcean's control panel at https://cloud.digitalocean.com/settings/applications
24
24
 
25
- With your access token, retrieve a client instance with it.
25
+ Using your access token, retrieve a client instance.
26
26
 
27
27
  ```ruby
28
28
  require 'droplet_kit'
@@ -125,6 +125,37 @@ Actions supported:
125
125
  * `client.certificates.create(certificate)`
126
126
  * `client.certificates.delete(id: 'id')`
127
127
 
128
+ ## Database resource
129
+
130
+ ```ruby
131
+ client = DropletKit::Client.new(access_token: 'TOKEN')
132
+ client.databases #=> DropletKit::DatabaseResource
133
+ database_cluster = DropletKit::DatabaseCluster.new(
134
+ name: 'backend',
135
+ engine: 'pg',
136
+ version: '10',
137
+ region: 'nyc3',
138
+ size: 'db-s-2vcpu-4gb',
139
+ num_nodes: 2,
140
+ tags: ['production']
141
+ )
142
+ ```
143
+
144
+ Actions supported:
145
+
146
+ * `client.databases.create_cluster(database_cluster)`
147
+ * `client.databases.find_cluster(id: 'id')`
148
+ * `client.databases.all_clusters()`
149
+ * `client.databases.resize_cluster(database_cluster, id: 'id')`
150
+ * `client.databases.migrate_cluster(database_cluster, id: 'id')`
151
+ * `client.databases.update_maintenance_window(database_maintenance_window, id: 'id')`
152
+ * `client.databases.list_backups(id: 'id')`
153
+ * `client.databases.restore_from_backup(database_backup)`
154
+ * `client.databases.delete_cluster()`
155
+ * `client.database.create_db(database, id: 'id')`
156
+ * `client.databases.find_db(id: 'id', name: 'name')`
157
+ * `client.databases.all_dbs(id: 'id')`
158
+ * `client.databases.delete_db(id: 'id', name: 'name')`
128
159
 
129
160
  ## Droplet resource
130
161
 
@@ -32,6 +32,7 @@ module DropletKit
32
32
  cdns: CDNResource,
33
33
  certificates: CertificateResource,
34
34
  container_registry: ContainerRegistryResource,
35
+ databases: DatabaseResource,
35
36
  droplets: DropletResource,
36
37
  kubernetes_clusters: KubernetesClusterResource,
37
38
  kubernetes_options: KubernetesOptionsResource,
@@ -0,0 +1,13 @@
1
+ module DropletKit
2
+ class DatabaseBackupMapping
3
+ include Kartograph::DSL
4
+
5
+ kartograph do
6
+ mapping DatabaseBackup
7
+ root_key singular: 'backup', plural: 'backups', scopes: [:read]
8
+
9
+ property :created_at, scopes: [:read]
10
+ property :size_gigabytes, scopes: [:read]
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module DropletKit
2
+ class DatabaseBackupRestoreMapping
3
+ include Kartograph::DSL
4
+
5
+ kartograph do
6
+ mapping DatabaseBackup
7
+ root_key singular: 'backup_restore', scopes: [:read]
8
+
9
+ property :database_name, scopes: [:restore]
10
+ property :backup_created_at, scopes: [:restore]
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,28 @@
1
+ module DropletKit
2
+ class DatabaseClusterMapping
3
+ include Kartograph::DSL
4
+
5
+ kartograph do
6
+ mapping DatabaseCluster
7
+ root_key singular: 'database', plural: 'databases', scopes: [:read]
8
+
9
+ property :id, scopes: [:read]
10
+ property :name, scopes: [:read, :create, :restore]
11
+ property :engine, scopes: [:read, :create, :restore]
12
+ property :version, scopes: [:read, :create, :restore]
13
+ property :connection, scopes: [:read], include: DatabaseConnectionMapping
14
+ property :private_connection, scopes: [:read], include: DatabaseConnectionMapping
15
+ property :users, plural: true, scopes: [:read], include: DatabaseUserMapping
16
+ property :backup_restore, scopes: [:restore], include: DatabaseBackupRestoreMapping
17
+ property :num_nodes, scopes: [:read, :create, :resize, :restore]
18
+ property :size, scopes: [:read, :create, :resize, :restore]
19
+ property :db_names, plural: true, scopes: [:read]
20
+ property :region, scopes: [:read, :create, :migrate, :restore]
21
+ property :status, scopes: [:read]
22
+ property :maintenance_window, scopes: [:read], include: DatabaseMaintenanceWindowMapping
23
+ property :created_at, scopes: [:read]
24
+ property :private_network_uuid, scopes: [:read, :create]
25
+ property :tags, plural: true, scopes: [:read, :create]
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,18 @@
1
+ module DropletKit
2
+ class DatabaseConnectionMapping
3
+ include Kartograph::DSL
4
+
5
+ kartograph do
6
+ mapping DatabaseConnection
7
+ root_key singular: 'connection', plural: 'connections', scopes: [:read]
8
+
9
+ property :uri, scopes: [:read]
10
+ property :database, scopes: [:read]
11
+ property :host, scopes: [:read]
12
+ property :port, scopes: [:read]
13
+ property :user, scopes: [:read]
14
+ property :password, scopes: [:read]
15
+ property :ssl, scopes: [:read]
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,15 @@
1
+ module DropletKit
2
+ class DatabaseMaintenanceWindowMapping
3
+ include Kartograph::DSL
4
+
5
+ kartograph do
6
+ mapping DatabaseMaintenanceWindow
7
+ root_key singular: 'database_maintenance_window', plural: 'database_maintenance_windows', scopes: [:read]
8
+
9
+ property :day, scopes: [:read, :update]
10
+ property :hour, scopes: [:read, :update]
11
+ property :pending, scopes: [:read]
12
+ property :description, scopes: [:read]
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,12 @@
1
+ module DropletKit
2
+ class DatabaseMapping
3
+ include Kartograph::DSL
4
+
5
+ kartograph do
6
+ mapping Database
7
+ root_key singular: 'db', plural: 'dbs', scopes: [:read]
8
+
9
+ property :name, scopes: [:read, :create]
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ module DropletKit
2
+ class DatabaseUserMapping
3
+ include Kartograph::DSL
4
+
5
+ kartograph do
6
+ mapping DatabaseUser
7
+ root_key singular: 'database_user', plural: 'database_users', scopes: [:read]
8
+
9
+ property :name, scopes: [:read]
10
+ property :role, scopes: [:read, :create, :update]
11
+ property :password, scopes: [:read, :create, :update]
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,5 @@
1
+ module DropletKit
2
+ class Database < BaseModel
3
+ attribute :name
4
+ end
5
+ end
@@ -0,0 +1,8 @@
1
+ module DropletKit
2
+ class DatabaseBackup < BaseModel
3
+ attribute :created_at
4
+ attribute :size_gigabytes
5
+ attribute :database_name
6
+ attribute :backup_created_at
7
+ end
8
+ end
@@ -0,0 +1,21 @@
1
+ module DropletKit
2
+ class DatabaseCluster < BaseModel
3
+ attribute :id
4
+ attribute :name
5
+ attribute :engine
6
+ attribute :version
7
+ attribute :connection
8
+ attribute :private_connection
9
+ attribute :backup_restore
10
+ attribute :users
11
+ attribute :num_nodes
12
+ attribute :size
13
+ attribute :db_names
14
+ attribute :region
15
+ attribute :status
16
+ attribute :maintenance_window
17
+ attribute :created_at
18
+ attribute :private_network_uuid
19
+ attribute :tags
20
+ end
21
+ end
@@ -0,0 +1,11 @@
1
+ module DropletKit
2
+ class DatabaseConnection < BaseModel
3
+ attribute :uri
4
+ attribute :database
5
+ attribute :host
6
+ attribute :port
7
+ attribute :user
8
+ attribute :password
9
+ attribute :ssl
10
+ end
11
+ end
@@ -0,0 +1,8 @@
1
+ module DropletKit
2
+ class DatabaseMaintenanceWindow < BaseModel
3
+ attribute :day
4
+ attribute :hour
5
+ attribute :pending
6
+ attribute :description
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ module DropletKit
2
+ class DatabaseUser < BaseModel
3
+ attribute :name
4
+ attribute :role
5
+ attribute :password
6
+ end
7
+ end
@@ -0,0 +1,70 @@
1
+ module DropletKit
2
+ class DatabaseResource < ResourceKit::Resource
3
+ include ErrorHandlingResourcable
4
+
5
+ resources do
6
+ action :find_cluster, 'GET /v2/databases/:id' do
7
+ handler(200) { |response| DatabaseClusterMapping.extract_single(response.body, :read) }
8
+ end
9
+
10
+ action :all_clusters, 'GET /v2/databases' do
11
+ handler(200) { |response| DatabaseClusterMapping.extract_collection(response.body, :read) }
12
+ end
13
+
14
+ action :create_cluster, 'POST /v2/databases' do
15
+ body { |object| DatabaseClusterMapping.representation_for(:create, object) }
16
+ handler(202) { |response, database| DatabaseClusterMapping.extract_into_object(database, response.body, :read) }
17
+ handler(422) { |response| ErrorMapping.fail_with(FailedCreate, response.body) }
18
+ end
19
+
20
+ action :resize_cluster, 'PUT /v2/databases/:id/resize' do
21
+ body { |object| DatabaseClusterMapping.representation_for(:resize, object) }
22
+ handler(202) { |response| true }
23
+ handler(422) { |response| ErrorMapping.fail_with(FailedUpdate, response.body) }
24
+ end
25
+
26
+ action :migrate_cluster, 'PUT /v2/databases/:id/migrate' do
27
+ body { |object| DatabaseClusterMapping.representation_for(:migrate, object) }
28
+ handler(202) { |response| true }
29
+ handler(422) { |response| ErrorMapping.fail_with(FailedUpdate, response.body) }
30
+ end
31
+
32
+ action :update_maintenance_window, 'PUT /v2/databases/:id/maintenance' do
33
+ body { |object| DatabaseMaintenanceWindowMapping.representation_for(:update, object) }
34
+ handler(204) { |response| true }
35
+ end
36
+
37
+ action :list_backups, 'GET /v2/databases/:id/backups' do
38
+ handler(200) { |response| DatabaseBackupMapping.extract_collection(response.body, :read) }
39
+ end
40
+
41
+ action :restore_from_backup, 'POST /v2/databases' do
42
+ body { |object| DatabaseClusterMapping.representation_for(:restore, object) }
43
+ handler(201) { |response, database| DatabaseClusterMapping.extract_into_object(database, response.body, :read) }
44
+ handler(422) { |response| ErrorMapping.fail_with(FailedCreate, response.body) }
45
+ end
46
+
47
+ action :delete_cluster, 'DELETE /v2/databases/:id' do
48
+ handler(204) { |response| true }
49
+ end
50
+
51
+ action :create_db, 'POST /v2/databases/:id/dbs' do
52
+ body { |object| DatabaseMapping.representation_for(:create, object) }
53
+ handler(201) { |response, database| DatabaseMapping.extract_into_object(database, response.body, :read) }
54
+ handler(422) { |response| ErrorMapping.fail_with(FailedCreate, response.body) }
55
+ end
56
+
57
+ action :find_db, 'GET /v2/databases/:id/dbs/:name' do
58
+ handler(200) { |response| DatabaseMapping.extract_single(response.body, :read) }
59
+ end
60
+
61
+ action :all_dbs, 'GET /v2/databases/:id/dbs' do
62
+ handler(200) { |response| DatabaseMapping.extract_collection(response.body, :read) }
63
+ end
64
+
65
+ action :delete_db, 'DELETE /v2/databases/:id/dbs/:name' do
66
+ handler(204) { |response| true }
67
+ end
68
+ end
69
+ end
70
+ end
@@ -1,3 +1,3 @@
1
1
  module DropletKit
2
- VERSION = "3.3.1"
2
+ VERSION = "3.4.0"
3
3
  end
data/lib/droplet_kit.rb CHANGED
@@ -32,6 +32,12 @@ module DropletKit
32
32
  autoload :TaggedDropletsResources, 'droplet_kit/models/tagged_droplets_resources'
33
33
  autoload :TaggedImagesResources, 'droplet_kit/models/tagged_images_resources'
34
34
  autoload :Volume, 'droplet_kit/models/volume'
35
+ autoload :Database, 'droplet_kit/models/database'
36
+ autoload :DatabaseBackup, 'droplet_kit/models/database_backup'
37
+ autoload :DatabaseCluster, 'droplet_kit/models/database_cluster'
38
+ autoload :DatabaseConnection, 'droplet_kit/models/database_connection'
39
+ autoload :DatabaseUser, 'droplet_kit/models/database_user'
40
+ autoload :DatabaseMaintenanceWindow, 'droplet_kit/models/database_maintenance_window'
35
41
  autoload :LoadBalancer, 'droplet_kit/models/load_balancer'
36
42
  autoload :StickySession, 'droplet_kit/models/sticky_session'
37
43
  autoload :HealthCheck, 'droplet_kit/models/health_check'
@@ -71,6 +77,7 @@ module DropletKit
71
77
  autoload :VolumeResource, 'droplet_kit/resources/volume_resource'
72
78
  autoload :VolumeActionResource, 'droplet_kit/resources/volume_action_resource'
73
79
  autoload :SnapshotResource, 'droplet_kit/resources/snapshot_resource'
80
+ autoload :DatabaseResource, 'droplet_kit/resources/database_resource'
74
81
  autoload :LoadBalancerResource, 'droplet_kit/resources/load_balancer_resource'
75
82
  autoload :CertificateResource, 'droplet_kit/resources/certificate_resource'
76
83
  autoload :FirewallResource, 'droplet_kit/resources/firewall_resource'
@@ -106,6 +113,13 @@ module DropletKit
106
113
  autoload :TaggedDropletsResourcesMapping, 'droplet_kit/mappings/tagged_droplets_resources_mapping'
107
114
  autoload :TaggedImagesResourcesMapping, 'droplet_kit/mappings/tagged_images_resources_mapping'
108
115
  autoload :VolumeMapping, 'droplet_kit/mappings/volume_mapping'
116
+ autoload :DatabaseMapping, 'droplet_kit/mappings/database_mapping'
117
+ autoload :DatabaseBackupMapping, 'droplet_kit/mappings/database_backup_mapping'
118
+ autoload :DatabaseBackupRestoreMapping, 'droplet_kit/mappings/database_backup_restore_mapping'
119
+ autoload :DatabaseClusterMapping, 'droplet_kit/mappings/database_cluster_mapping'
120
+ autoload :DatabaseConnectionMapping, 'droplet_kit/mappings/database_connection_mapping'
121
+ autoload :DatabaseUserMapping, 'droplet_kit/mappings/database_user_mapping'
122
+ autoload :DatabaseMaintenanceWindowMapping, 'droplet_kit/mappings/database_maintenance_window_mapping'
109
123
  autoload :LoadBalancerMapping, 'droplet_kit/mappings/load_balancer_mapping'
110
124
  autoload :StickySessionMapping, 'droplet_kit/mappings/sticky_session_mapping'
111
125
  autoload :HealthCheckMapping, 'droplet_kit/mappings/health_check_mapping'
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: 3.3.1
4
+ version: 3.4.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: 2019-11-25 00:00:00.000000000 Z
11
+ date: 2020-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: virtus
@@ -167,6 +167,13 @@ files:
167
167
  - lib/droplet_kit/mappings/cdn_mapping.rb
168
168
  - lib/droplet_kit/mappings/certificate_mapping.rb
169
169
  - lib/droplet_kit/mappings/container_registry_mapping.rb
170
+ - lib/droplet_kit/mappings/database_backup_mapping.rb
171
+ - lib/droplet_kit/mappings/database_backup_restore_mapping.rb
172
+ - lib/droplet_kit/mappings/database_cluster_mapping.rb
173
+ - lib/droplet_kit/mappings/database_connection_mapping.rb
174
+ - lib/droplet_kit/mappings/database_maintenance_window_mapping.rb
175
+ - lib/droplet_kit/mappings/database_mapping.rb
176
+ - lib/droplet_kit/mappings/database_user_mapping.rb
170
177
  - lib/droplet_kit/mappings/domain_mapping.rb
171
178
  - lib/droplet_kit/mappings/domain_record_mapping.rb
172
179
  - lib/droplet_kit/mappings/droplet_mapping.rb
@@ -211,6 +218,12 @@ files:
211
218
  - lib/droplet_kit/models/cdn.rb
212
219
  - lib/droplet_kit/models/certificate.rb
213
220
  - lib/droplet_kit/models/container_registry.rb
221
+ - lib/droplet_kit/models/database.rb
222
+ - lib/droplet_kit/models/database_backup.rb
223
+ - lib/droplet_kit/models/database_cluster.rb
224
+ - lib/droplet_kit/models/database_connection.rb
225
+ - lib/droplet_kit/models/database_maintenance_window.rb
226
+ - lib/droplet_kit/models/database_user.rb
214
227
  - lib/droplet_kit/models/domain.rb
215
228
  - lib/droplet_kit/models/domain_record.rb
216
229
  - lib/droplet_kit/models/droplet.rb
@@ -256,6 +269,7 @@ files:
256
269
  - lib/droplet_kit/resources/cdn_resource.rb
257
270
  - lib/droplet_kit/resources/certificate_resource.rb
258
271
  - lib/droplet_kit/resources/container_registry_resource.rb
272
+ - lib/droplet_kit/resources/database_resource.rb
259
273
  - lib/droplet_kit/resources/domain_record_resource.rb
260
274
  - lib/droplet_kit/resources/domain_resource.rb
261
275
  - lib/droplet_kit/resources/droplet_action_resource.rb
@@ -300,7 +314,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
300
314
  - !ruby/object:Gem::Version
301
315
  version: '0'
302
316
  requirements: []
303
- rubygems_version: 3.0.3
317
+ rubygems_version: 3.1.2
304
318
  signing_key:
305
319
  specification_version: 4
306
320
  summary: Droplet Kit is the official Ruby library for DigitalOcean's API