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:
Matt Baker
2023-07-12 09:55:33 +02:00
committed by GitHub
parent e4fe239a9d
commit 47854d77e8
2 changed files with 15 additions and 12 deletions
+14 -11
View File
@@ -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
View File
@@ -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}