|
| 1 | +from dataclasses import dataclass, field |
| 2 | +from typing import Optional |
| 3 | + |
1 | 4 | from deprecated import deprecated
|
2 | 5 |
|
3 |
| -from linode_api4.objects import Base, DerivedBase, MappedObject, Property |
| 6 | +from linode_api4.objects import ( |
| 7 | + Base, |
| 8 | + DerivedBase, |
| 9 | + JSONObject, |
| 10 | + MappedObject, |
| 11 | + Property, |
| 12 | +) |
4 | 13 |
|
5 | 14 |
|
6 | 15 | class DatabaseType(Base):
|
@@ -128,6 +137,140 @@ class PostgreSQLDatabaseBackup(DatabaseBackup):
|
128 | 137 | api_endpoint = "/databases/postgresql/instances/{database_id}/backups/{id}"
|
129 | 138 |
|
130 | 139 |
|
| 140 | +@dataclass |
| 141 | +class MySQLDatabaseConfigMySQLOptions(JSONObject): |
| 142 | + """ |
| 143 | + MySQLDatabaseConfigMySQLOptions represents the fields in the mysql |
| 144 | + field of the MySQLDatabaseConfigOptions class |
| 145 | + """ |
| 146 | + |
| 147 | + connect_timeout: Optional[int] = None |
| 148 | + default_time_zone: Optional[str] = None |
| 149 | + group_concat_max_len: Optional[float] = None |
| 150 | + information_schema_stats_expiry: Optional[int] = None |
| 151 | + innodb_change_buffer_max_size: Optional[int] = None |
| 152 | + innodb_flush_neighbors: Optional[int] = None |
| 153 | + innodb_ft_min_token_size: Optional[int] = None |
| 154 | + innodb_ft_server_stopword_table: Optional[str] = None |
| 155 | + innodb_lock_wait_timeout: Optional[int] = None |
| 156 | + innodb_log_buffer_size: Optional[int] = None |
| 157 | + innodb_online_alter_log_max_size: Optional[int] = None |
| 158 | + innodb_read_io_threads: Optional[int] = None |
| 159 | + innodb_rollback_on_timeout: Optional[bool] = None |
| 160 | + innodb_thread_concurrency: Optional[int] = None |
| 161 | + innodb_write_io_threads: Optional[int] = None |
| 162 | + interactive_timeout: Optional[int] = None |
| 163 | + internal_tmp_mem_storage_engine: Optional[str] = None |
| 164 | + max_allowed_packet: Optional[int] = None |
| 165 | + max_heap_table_size: Optional[int] = None |
| 166 | + net_buffer_length: Optional[int] = None |
| 167 | + net_read_timeout: Optional[int] = None |
| 168 | + net_write_timeout: Optional[int] = None |
| 169 | + sort_buffer_size: Optional[int] = None |
| 170 | + sql_mode: Optional[str] = None |
| 171 | + sql_require_primary_key: Optional[bool] = None |
| 172 | + tmp_table_size: Optional[int] = None |
| 173 | + wait_timeout: Optional[int] = None |
| 174 | + |
| 175 | + |
| 176 | +@dataclass |
| 177 | +class MySQLDatabaseConfigOptions(JSONObject): |
| 178 | + """ |
| 179 | + MySQLDatabaseConfigOptions is used to specify |
| 180 | + a MySQL Database Cluster's configuration options during its creation. |
| 181 | + """ |
| 182 | + |
| 183 | + mysql: Optional[MySQLDatabaseConfigMySQLOptions] = None |
| 184 | + binlog_retention_period: Optional[int] = None |
| 185 | + |
| 186 | + |
| 187 | +@dataclass |
| 188 | +class PostgreSQLDatabaseConfigPGLookoutOptions(JSONObject): |
| 189 | + """ |
| 190 | + PostgreSQLDatabasePGLookoutConfigOptions represents the fields in the pglookout |
| 191 | + field of the PostgreSQLDatabasePGConfigOptions class |
| 192 | + """ |
| 193 | + |
| 194 | + max_failover_replication_time_lag: Optional[int] = None |
| 195 | + |
| 196 | + |
| 197 | +@dataclass |
| 198 | +class PostgreSQLDatabaseConfigPGOptions(JSONObject): |
| 199 | + """ |
| 200 | + PostgreSQLDatabasePGConfigOptions represents the fields in the pg |
| 201 | + field of the PostgreSQLDatabasePGConfigOptions class |
| 202 | + """ |
| 203 | + |
| 204 | + autovacuum_analyze_scale_factor: Optional[float] = None |
| 205 | + autovacuum_analyze_threshold: Optional[int] = None |
| 206 | + autovacuum_max_workers: Optional[int] = None |
| 207 | + autovacuum_naptime: Optional[int] = None |
| 208 | + autovacuum_vacuum_cost_delay: Optional[int] = None |
| 209 | + autovacuum_vacuum_cost_limit: Optional[int] = None |
| 210 | + autovacuum_vacuum_scale_factor: Optional[float] = None |
| 211 | + autovacuum_vacuum_threshold: Optional[int] = None |
| 212 | + bgwriter_delay: Optional[int] = None |
| 213 | + bgwriter_flush_after: Optional[int] = None |
| 214 | + bgwriter_lru_maxpages: Optional[int] = None |
| 215 | + bgwriter_lru_multiplier: Optional[float] = None |
| 216 | + deadlock_timeout: Optional[int] = None |
| 217 | + default_toast_compression: Optional[str] = None |
| 218 | + idle_in_transaction_session_timeout: Optional[int] = None |
| 219 | + jit: Optional[bool] = None |
| 220 | + max_files_per_process: Optional[int] = None |
| 221 | + max_locks_per_transaction: Optional[int] = None |
| 222 | + max_logical_replication_workers: Optional[int] = None |
| 223 | + max_parallel_workers: Optional[int] = None |
| 224 | + max_parallel_workers_per_gather: Optional[int] = None |
| 225 | + max_pred_locks_per_transaction: Optional[int] = None |
| 226 | + max_replication_slots: Optional[int] = None |
| 227 | + max_slot_wal_keep_size: Optional[int] = None |
| 228 | + max_stack_depth: Optional[int] = None |
| 229 | + max_standby_archive_delay: Optional[int] = None |
| 230 | + max_standby_streaming_delay: Optional[int] = None |
| 231 | + max_wal_senders: Optional[int] = None |
| 232 | + max_worker_processes: Optional[int] = None |
| 233 | + password_encryption: Optional[str] = None |
| 234 | + pg_partman_bgw_interval: Optional[int] = field( |
| 235 | + default=None, metadata={"json_key": "pg_partman_bgw.interval"} |
| 236 | + ) |
| 237 | + pg_partman_bgw_role: Optional[str] = field( |
| 238 | + default=None, metadata={"json_key": "pg_partman_bgw.role"} |
| 239 | + ) |
| 240 | + pg_stat_monitor_pgsm_enable_query_plan: Optional[bool] = field( |
| 241 | + default=None, |
| 242 | + metadata={"json_key": "pg_stat_monitor.pgsm_enable_query_plan"}, |
| 243 | + ) |
| 244 | + pg_stat_monitor_pgsm_max_buckets: Optional[int] = field( |
| 245 | + default=None, metadata={"json_key": "pg_stat_monitor.pgsm_max_buckets"} |
| 246 | + ) |
| 247 | + pg_stat_statements_track: Optional[str] = field( |
| 248 | + default=None, metadata={"json_key": "pg_stat_statements.track"} |
| 249 | + ) |
| 250 | + temp_file_limit: Optional[int] = None |
| 251 | + timezone: Optional[str] = None |
| 252 | + track_activity_query_size: Optional[int] = None |
| 253 | + track_commit_timestamp: Optional[str] = None |
| 254 | + track_functions: Optional[str] = None |
| 255 | + track_io_timing: Optional[str] = None |
| 256 | + wal_sender_timeout: Optional[int] = None |
| 257 | + wal_writer_delay: Optional[int] = None |
| 258 | + |
| 259 | + |
| 260 | +@dataclass |
| 261 | +class PostgreSQLDatabaseConfigOptions(JSONObject): |
| 262 | + """ |
| 263 | + PostgreSQLDatabaseConfigOptions is used to specify |
| 264 | + a PostgreSQL Database Cluster's configuration options during its creation. |
| 265 | + """ |
| 266 | + |
| 267 | + pg: Optional[PostgreSQLDatabaseConfigPGOptions] = None |
| 268 | + pg_stat_monitor_enable: Optional[bool] = None |
| 269 | + pglookout: Optional[PostgreSQLDatabaseConfigPGLookoutOptions] = None |
| 270 | + shared_buffers_percentage: Optional[float] = None |
| 271 | + work_mem: Optional[int] = None |
| 272 | + |
| 273 | + |
131 | 274 | class MySQLDatabase(Base):
|
132 | 275 | """
|
133 | 276 | An accessible Managed MySQL Database.
|
@@ -158,6 +301,9 @@ class MySQLDatabase(Base):
|
158 | 301 | "updated": Property(volatile=True, is_datetime=True),
|
159 | 302 | "updates": Property(mutable=True),
|
160 | 303 | "version": Property(),
|
| 304 | + "engine_config": Property( |
| 305 | + mutable=True, json_object=MySQLDatabaseConfigOptions |
| 306 | + ), |
161 | 307 | }
|
162 | 308 |
|
163 | 309 | @property
|
@@ -321,6 +467,9 @@ class PostgreSQLDatabase(Base):
|
321 | 467 | "updated": Property(volatile=True, is_datetime=True),
|
322 | 468 | "updates": Property(mutable=True),
|
323 | 469 | "version": Property(),
|
| 470 | + "engine_config": Property( |
| 471 | + mutable=True, json_object=PostgreSQLDatabaseConfigOptions |
| 472 | + ), |
324 | 473 | }
|
325 | 474 |
|
326 | 475 | @property
|
|
0 commit comments