Code cleanup: do not modify os.environ but pass copy of it to subprocess.call

This commit is contained in:
Alexander Kukushkin
2015-06-01 11:03:06 +02:00
parent f8c3582715
commit 939254021e
2 changed files with 8 additions and 11 deletions
+7 -10
View File
@@ -109,12 +109,10 @@ class Postgresql:
os.fchmod(f.fileno(), 0o600)
f.write('{host}:{port}:*:{user}:{password}\n'.format(**r))
try:
os.environ['PGPASSFILE'] = pgpass
return subprocess.call(['pg_basebackup', '-R', '-D', self.data_dir,
'--host=' + r['host'], '--port=' + str(r['port']), '-U', r['user']]) == 0
finally:
os.environ.pop('PGPASSFILE')
env = os.environ.copy()
env['PGPASSFILE'] = pgpass
return subprocess.call(['pg_basebackup', '-R', '-D', self.data_dir, '--host=' + r['host'],
'--port=' + str(r['port']), '-U', r['user']], env=env) == 0
def is_leader(self):
return not self.query('SELECT pg_is_in_recovery()').fetchone()[0]
@@ -223,10 +221,9 @@ primary_conninfo = '{}'
f.write("{} = '{}'\n".format(name, value))
def follow_the_leader(self, leader):
if self.check_recovery_conf(leader):
return
self.write_recovery_conf(leader)
self.restart()
if not self.check_recovery_conf(leader):
self.write_recovery_conf(leader)
self.restart()
def promote(self):
return subprocess.call(self._pg_ctl + ['promote']) == 0
+1 -1
View File
@@ -8,7 +8,7 @@ from helpers.etcd import Cluster, Member
from helpers.postgresql import Postgresql
def subprocess_call(cmd, shell=False):
def subprocess_call(cmd, shell=False, env=None):
return 0