mirror of
https://github.com/outbackdingo/patroni.git
synced 2026-08-25 14:53:37 +00:00
Refactor allowed_keys (#2745)
Refactor allowed_keys method as a class variable Method does not perform any computation or modify data as it is a static tuple, therefore it is better expressed as a class variable.
This commit is contained in:
+14
-11
@@ -239,23 +239,26 @@ class Member(NamedTuple):
|
||||
|
||||
|
||||
class RemoteMember(Member):
|
||||
"""Represents a remote member (typically a primary) for a standby cluster"""
|
||||
"""Represents a remote member (typically a primary) for a standby cluster.
|
||||
|
||||
:cvar ALLOWED_KEYS: Controls access to relevant key names that could be in stored :attr:`~RemoteMember.data`.
|
||||
"""
|
||||
|
||||
ALLOWED_KEYS: Tuple[str, ...] = (
|
||||
'primary_slot_name',
|
||||
'create_replica_methods',
|
||||
'restore_command',
|
||||
'archive_cleanup_command',
|
||||
'recovery_min_apply_delay',
|
||||
'no_replication_slot'
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def from_name_and_data(cls, name: str, data: Dict[str, Any]) -> 'RemoteMember':
|
||||
return super(RemoteMember, cls).__new__(cls, -1, name, None, data)
|
||||
|
||||
@staticmethod
|
||||
def allowed_keys() -> Tuple[str, ...]:
|
||||
return ('primary_slot_name',
|
||||
'create_replica_methods',
|
||||
'restore_command',
|
||||
'archive_cleanup_command',
|
||||
'recovery_min_apply_delay',
|
||||
'no_replication_slot')
|
||||
|
||||
def __getattr__(self, name: str) -> Any:
|
||||
if name in RemoteMember.allowed_keys():
|
||||
if name in RemoteMember.ALLOWED_KEYS:
|
||||
return self.data.get(name)
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -1896,7 +1896,7 @@ class Ha(object):
|
||||
cluster_params = self.global_config.get_standby_cluster_config()
|
||||
|
||||
if cluster_params:
|
||||
data.update({k: v for k, v in cluster_params.items() if k in RemoteMember.allowed_keys()})
|
||||
data.update({k: v for k, v in cluster_params.items() if k in RemoteMember.ALLOWED_KEYS})
|
||||
data['no_replication_slot'] = 'primary_slot_name' not in cluster_params
|
||||
conn_kwargs = member.conn_kwargs() if member else \
|
||||
{k: cluster_params[k] for k in ('host', 'port') if k in cluster_params}
|
||||
|
||||
Reference in New Issue
Block a user