mirror of
https://github.com/neondatabase/neon.git
synced 2025-12-22 21:59:59 +00:00
Adds a schema to validate the manifest.yaml described in [this RFC](https://github.com/neondatabase/neon/blob/main/docs/rfcs/038-independent-compute-release.md) and a github workflow to test this.
210 lines
7.0 KiB
JSON
210 lines
7.0 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"title": "Neon Compute Manifest Schema",
|
|
"description": "Schema for Neon compute node configuration manifest",
|
|
"type": "object",
|
|
"properties": {
|
|
"pg_settings": {
|
|
"type": "object",
|
|
"properties": {
|
|
"common": {
|
|
"type": "object",
|
|
"properties": {
|
|
"client_connection_check_interval": {
|
|
"type": "string",
|
|
"description": "Check for client disconnection interval in milliseconds"
|
|
},
|
|
"effective_io_concurrency": {
|
|
"type": "string",
|
|
"description": "Effective IO concurrency setting"
|
|
},
|
|
"fsync": {
|
|
"type": "string",
|
|
"enum": ["on", "off"],
|
|
"description": "Whether to force fsync to disk"
|
|
},
|
|
"hot_standby": {
|
|
"type": "string",
|
|
"enum": ["on", "off"],
|
|
"description": "Whether hot standby is enabled"
|
|
},
|
|
"idle_in_transaction_session_timeout": {
|
|
"type": "string",
|
|
"description": "Timeout for idle transactions in milliseconds"
|
|
},
|
|
"listen_addresses": {
|
|
"type": "string",
|
|
"description": "Addresses to listen on"
|
|
},
|
|
"log_connections": {
|
|
"type": "string",
|
|
"enum": ["on", "off"],
|
|
"description": "Whether to log connections"
|
|
},
|
|
"log_disconnections": {
|
|
"type": "string",
|
|
"enum": ["on", "off"],
|
|
"description": "Whether to log disconnections"
|
|
},
|
|
"log_temp_files": {
|
|
"type": "string",
|
|
"description": "Size threshold for logging temporary files in KB"
|
|
},
|
|
"log_error_verbosity": {
|
|
"type": "string",
|
|
"enum": ["terse", "verbose", "default"],
|
|
"description": "Error logging verbosity level"
|
|
},
|
|
"log_min_error_statement": {
|
|
"type": "string",
|
|
"description": "Minimum error level for statement logging"
|
|
},
|
|
"maintenance_io_concurrency": {
|
|
"type": "string",
|
|
"description": "Maintenance IO concurrency setting"
|
|
},
|
|
"max_connections": {
|
|
"type": "string",
|
|
"description": "Maximum number of connections"
|
|
},
|
|
"max_replication_flush_lag": {
|
|
"type": "string",
|
|
"description": "Maximum replication flush lag"
|
|
},
|
|
"max_replication_slots": {
|
|
"type": "string",
|
|
"description": "Maximum number of replication slots"
|
|
},
|
|
"max_replication_write_lag": {
|
|
"type": "string",
|
|
"description": "Maximum replication write lag"
|
|
},
|
|
"max_wal_senders": {
|
|
"type": "string",
|
|
"description": "Maximum number of WAL senders"
|
|
},
|
|
"max_wal_size": {
|
|
"type": "string",
|
|
"description": "Maximum WAL size"
|
|
},
|
|
"neon.unstable_extensions": {
|
|
"type": "string",
|
|
"description": "List of unstable extensions"
|
|
},
|
|
"neon.protocol_version": {
|
|
"type": "string",
|
|
"description": "Neon protocol version"
|
|
},
|
|
"password_encryption": {
|
|
"type": "string",
|
|
"description": "Password encryption method"
|
|
},
|
|
"restart_after_crash": {
|
|
"type": "string",
|
|
"enum": ["on", "off"],
|
|
"description": "Whether to restart after crash"
|
|
},
|
|
"superuser_reserved_connections": {
|
|
"type": "string",
|
|
"description": "Number of reserved connections for superuser"
|
|
},
|
|
"synchronous_standby_names": {
|
|
"type": "string",
|
|
"description": "Names of synchronous standby servers"
|
|
},
|
|
"wal_keep_size": {
|
|
"type": "string",
|
|
"description": "WAL keep size"
|
|
},
|
|
"wal_level": {
|
|
"type": "string",
|
|
"description": "WAL level"
|
|
},
|
|
"wal_log_hints": {
|
|
"type": "string",
|
|
"enum": ["on", "off"],
|
|
"description": "Whether to log hints in WAL"
|
|
},
|
|
"wal_sender_timeout": {
|
|
"type": "string",
|
|
"description": "WAL sender timeout in milliseconds"
|
|
}
|
|
},
|
|
"required": [
|
|
"client_connection_check_interval",
|
|
"effective_io_concurrency",
|
|
"fsync",
|
|
"hot_standby",
|
|
"idle_in_transaction_session_timeout",
|
|
"listen_addresses",
|
|
"log_connections",
|
|
"log_disconnections",
|
|
"log_temp_files",
|
|
"log_error_verbosity",
|
|
"log_min_error_statement",
|
|
"maintenance_io_concurrency",
|
|
"max_connections",
|
|
"max_replication_flush_lag",
|
|
"max_replication_slots",
|
|
"max_replication_write_lag",
|
|
"max_wal_senders",
|
|
"max_wal_size",
|
|
"neon.unstable_extensions",
|
|
"neon.protocol_version",
|
|
"password_encryption",
|
|
"restart_after_crash",
|
|
"superuser_reserved_connections",
|
|
"synchronous_standby_names",
|
|
"wal_keep_size",
|
|
"wal_level",
|
|
"wal_log_hints",
|
|
"wal_sender_timeout"
|
|
]
|
|
},
|
|
"replica": {
|
|
"type": "object",
|
|
"properties": {
|
|
"hot_standby": {
|
|
"type": "string",
|
|
"enum": ["on", "off"],
|
|
"description": "Whether hot standby is enabled for replicas"
|
|
}
|
|
},
|
|
"required": ["hot_standby"]
|
|
},
|
|
"per_version": {
|
|
"type": "object",
|
|
"patternProperties": {
|
|
"^1[4-7]$": {
|
|
"type": "object",
|
|
"properties": {
|
|
"common": {
|
|
"type": "object",
|
|
"properties": {
|
|
"io_combine_limit": {
|
|
"type": "string",
|
|
"description": "IO combine limit"
|
|
}
|
|
}
|
|
},
|
|
"replica": {
|
|
"type": "object",
|
|
"properties": {
|
|
"recovery_prefetch": {
|
|
"type": "string",
|
|
"enum": ["on", "off"],
|
|
"description": "Whether to enable recovery prefetch for PostgreSQL replicas"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"required": ["common", "replica", "per_version"]
|
|
}
|
|
},
|
|
"required": ["pg_settings"]
|
|
}
|