patroni.postgresql.bootstrap module¶
-
class
patroni.postgresql.bootstrap.Bootstrap(postgresql: Postgresql)¶ Bases:
object-
basebackup(conn_url: str, env: Dict[str, str], options: Dict[str, Any]) → Optional[int]¶
-
bootstrap(config: Dict[str, Any]) → bool¶ Initialize a new node from scratch and start it.
-
call_post_bootstrap(config: Dict[str, Any]) → bool¶ runs a script after initdb or custom bootstrap script is called and waits until completion.
-
clone(clone_member: Union[patroni.dcs.Leader, patroni.dcs.Member, None]) → bool¶ - initialize the replica from an existing member (primary or replica)
- initialize the replica using the replica creation method that works without the replication connection (i.e. restore from on-disk base backup)
-
create_or_update_role(name: str, password: Optional[str], options: List[str]) → None¶
-
create_replica(clone_member: Union[patroni.dcs.Leader, patroni.dcs.Member, None]) → Optional[int]¶ create the replica according to the replica_method defined by the user. this is a list, so we need to loop through all methods the user supplies
-
keep_existing_recovery_conf¶
-
post_bootstrap(config: Dict[str, Any], task: patroni.async_executor.CriticalTask) → Optional[bool]¶
-
static
process_user_options(tool: str, options: Union[Any, Dict[str, str], List[Union[str, Dict[str, Any]]]], not_allowed_options: Tuple[str, ...], error_handler: Callable[[str], None]) → List[str]¶ Format options in a list or dictionary format into command line long form arguments.
Note
The format of the output of this method is to prepare arguments for use in the
initdbmethod of self._postgres.Example: The options can be defined as a dictionary of key, values to be converted into arguments: >>> Bootstrap.process_user_options(‘foo’, {‘foo’: ‘bar’}, (), print) [‘–foo=bar’]
Or as a list of single string arguments >>> Bootstrap.process_user_options(‘foo’, [‘yes’], (), print) [‘–yes’]
Or as a list of key, value options >>> Bootstrap.process_user_options(‘foo’, [{‘foo’: ‘bar’}], (), print) [‘–foo=bar’]
Or a combination of single and key, values >>> Bootstrap.process_user_options(‘foo’, [‘yes’, {‘foo’: ‘bar’}], (), print) [‘–yes’, ‘–foo=bar’]
Options that contain spaces are passed as is to
subprocess.call>>> Bootstrap.process_user_options(‘foo’, [{‘foo’: ‘bar baz’}], (), print) [‘–foo=bar baz’]Options that are quoted will be unquoted, so the quotes aren’t interpreted literally by the postgres command >>> Bootstrap.process_user_options(‘foo’, [{‘foo’: ‘“bar baz”’}], (), print) [‘–foo=bar baz’]
Note
The error_handler is called when any of these conditions are met:
- Key, value dictionaries in the list form contains multiple keys.
- If a key is listed in not_allowed_options.
- If the options list is not in the required structure.
Parameters: - tool – The name of the tool used in error reports to error_handler
- options – Options to parse as a list of key, values or single values, or a dictionary
- not_allowed_options – List of keys that cannot be used in the list of key, value formatted options
- error_handler – A function which will be called when an error condition is encountered
Returns: List of long form arguments to pass to the named tool
-
running_custom_bootstrap¶
-