|
1 | 1 | from linode_api4.errors import UnexpectedResponseError
|
2 | 2 | from linode_api4.groups import Group
|
3 | 3 | from linode_api4.objects import (
|
4 |
| - Base, |
5 | 4 | Database,
|
6 | 5 | DatabaseEngine,
|
7 | 6 | DatabaseType,
|
8 | 7 | MySQLDatabase,
|
9 | 8 | PostgreSQLDatabase,
|
| 9 | + drop_null_keys, |
10 | 10 | )
|
11 |
| - |
| 11 | +from linode_api4.objects.base import _flatten_request_body_recursive |
12 | 12 |
|
13 | 13 | class DatabaseGroup(Group):
|
14 | 14 | """
|
@@ -126,13 +126,16 @@ def mysql_create(self, label, region, engine, ltype, **kwargs):
|
126 | 126 |
|
127 | 127 | params = {
|
128 | 128 | "label": label,
|
129 |
| - "region": region.id if issubclass(type(region), Base) else region, |
130 |
| - "engine": engine.id if issubclass(type(engine), Base) else engine, |
131 |
| - "type": ltype.id if issubclass(type(ltype), Base) else ltype, |
| 129 | + "region": region, |
| 130 | + "engine": engine, |
| 131 | + "type": ltype, |
132 | 132 | }
|
133 | 133 | params.update(kwargs)
|
134 | 134 |
|
135 |
| - result = self.client.post("/databases/mysql/instances", data=params) |
| 135 | + result = self.client.post( |
| 136 | + "/databases/mysql/instances", |
| 137 | + data=_flatten_request_body_recursive(drop_null_keys(params)) |
| 138 | + ) |
136 | 139 |
|
137 | 140 | if "id" not in result:
|
138 | 141 | raise UnexpectedResponseError(
|
@@ -180,25 +183,14 @@ def mysql_fork(self, source, restore_time, **kwargs):
|
180 | 183 | "restore_time": restore_time.strftime("%Y-%m-%dT%H:%M:%S"),
|
181 | 184 | }
|
182 | 185 | }
|
183 |
| - if "region" in kwargs: |
184 |
| - region = kwargs["region"] |
185 |
| - params["region"] = ( |
186 |
| - region.id if issubclass(type(region), Base) else region, |
187 |
| - ) |
188 |
| - if "engine" in kwargs: |
189 |
| - engine = kwargs["engine"] |
190 |
| - params["engine"] = ( |
191 |
| - engine.id if issubclass(type(engine), Base) else engine, |
192 |
| - ) |
193 | 186 | if "ltype" in kwargs:
|
194 |
| - ltype = kwargs["ltype"] |
195 |
| - params["type"] = ( |
196 |
| - ltype.id if issubclass(type(ltype), Base) else ltype, |
197 |
| - ) |
198 |
| - |
| 187 | + params["type"] = kwargs["ltype"] |
199 | 188 | params.update(kwargs)
|
200 | 189 |
|
201 |
| - result = self.client.post("/databases/mysql/instances", data=params) |
| 190 | + result = self.client.post( |
| 191 | + "/databases/mysql/instances", |
| 192 | + data=_flatten_request_body_recursive(drop_null_keys(params)) |
| 193 | + ) |
202 | 194 |
|
203 | 195 | if "id" not in result:
|
204 | 196 | raise UnexpectedResponseError(
|
@@ -257,14 +249,15 @@ def postgresql_create(self, label, region, engine, ltype, **kwargs):
|
257 | 249 |
|
258 | 250 | params = {
|
259 | 251 | "label": label,
|
260 |
| - "region": region.id if issubclass(type(region), Base) else region, |
261 |
| - "engine": engine.id if issubclass(type(engine), Base) else engine, |
262 |
| - "type": ltype.id if issubclass(type(ltype), Base) else ltype, |
| 252 | + "region": region, |
| 253 | + "engine": engine, |
| 254 | + "type": ltype, |
263 | 255 | }
|
264 | 256 | params.update(kwargs)
|
265 | 257 |
|
266 | 258 | result = self.client.post(
|
267 |
| - "/databases/postgresql/instances", data=params |
| 259 | + "/databases/postgresql/instances", |
| 260 | + data=_flatten_request_body_recursive(drop_null_keys(params)) |
268 | 261 | )
|
269 | 262 |
|
270 | 263 | if "id" not in result:
|
@@ -314,26 +307,13 @@ def postgresql_fork(self, source, restore_time, **kwargs):
|
314 | 307 | "restore_time": restore_time.strftime("%Y-%m-%dT%H:%M:%S"),
|
315 | 308 | }
|
316 | 309 | }
|
317 |
| - if "region" in kwargs: |
318 |
| - region = kwargs["region"] |
319 |
| - params["region"] = ( |
320 |
| - region.id if issubclass(type(region), Base) else region, |
321 |
| - ) |
322 |
| - if "engine" in kwargs: |
323 |
| - engine = kwargs["engine"] |
324 |
| - params["engine"] = ( |
325 |
| - engine.id if issubclass(type(engine), Base) else engine, |
326 |
| - ) |
327 | 310 | if "ltype" in kwargs:
|
328 |
| - ltype = kwargs["ltype"] |
329 |
| - params["ltype"] = ( |
330 |
| - ltype.id if issubclass(type(ltype), Base) else ltype, |
331 |
| - ) |
332 |
| - |
| 311 | + params["type"] = kwargs["ltype"] |
333 | 312 | params.update(kwargs)
|
334 | 313 |
|
335 | 314 | result = self.client.post(
|
336 |
| - "/databases/postgresql/instances", data=params |
| 315 | + "/databases/postgresql/instances", |
| 316 | + data=_flatten_request_body_recursive(drop_null_keys(params)) |
337 | 317 | )
|
338 | 318 |
|
339 | 319 | if "id" not in result:
|
|
0 commit comments