Support change of superuser and replication credentials on reload (#445)

Fixes: https://github.com/zalando/patroni/issues/353
and: https://github.com/zalando/patroni/issues/443
This commit is contained in:
Alexander Kukushkin
2017-05-19 16:32:35 +02:00
committed by GitHub
parent 37c1552c0a
commit 7633b19213
2 changed files with 11 additions and 5 deletions
+5 -1
View File
@@ -99,7 +99,6 @@ class Postgresql(object):
self._connect_address = config.get('connect_address')
self._superuser = config['authentication'].get('superuser', {})
self._replication = config['authentication']['replication']
self.resolve_connection_addresses()
self._rewind_state = REWIND_STATUS.INITIAL
@@ -156,6 +155,10 @@ class Postgresql(object):
def use_slots(self):
return self._use_slots and self._major_version >= 9.4
@property
def _replication(self):
return self.config['authentication']['replication']
@property
def callback(self):
return self.config.get('callbacks') or {}
@@ -235,6 +238,7 @@ class Postgresql(object):
return return_codes.get(ret, STATE_UNKNOWN)
def reload_config(self, config):
self._superuser = config['authentication'].get('superuser', {})
server_parameters = self.get_server_parameters(config)
listen_address_changed = pending_reload = pending_restart = False
+6 -4
View File
@@ -585,14 +585,16 @@ class TestPostgresql(unittest.TestCase):
def test_reload_config(self):
parameters = self._PARAMETERS.copy()
parameters.pop('f.oo')
self.p.reload_config({'retry_timeout': 10, 'listen': '*', 'parameters': parameters})
config = {'authentication': {}, 'retry_timeout': 10, 'listen': '*', 'parameters': parameters}
self.p.reload_config(config)
parameters['b.ar'] = 'bar'
self.p.reload_config({'retry_timeout': 10, 'listen': '*', 'parameters': parameters})
self.p.reload_config(config)
parameters['autovacuum'] = 'on'
self.p.reload_config({'retry_timeout': 10, 'listen': '*', 'parameters': parameters})
self.p.reload_config(config)
parameters['autovacuum'] = 'off'
parameters.pop('search_path')
self.p.reload_config({'retry_timeout': 10, 'listen': '*:5433', 'parameters': parameters})
config['listen'] = '*:5433'
self.p.reload_config(config)
@patch.object(Postgresql, '_version_file_exists', Mock(return_value=True))
def test_get_major_version(self):