81
81
82
82
from . import utils
83
83
84
- from .utils import \
85
- PgVer , \
86
- eprint , \
87
- get_bin_path2 , \
88
- get_pg_version2 , \
89
- execute_utility2 , \
90
- options_string , \
91
- clean_on_error
92
-
93
84
from .backup import NodeBackup
94
85
95
86
from .operations .os_ops import OsOperations
@@ -143,7 +134,7 @@ def __init__(self, os_ops: OsOperations, name=None, port=None, bin_dir=None):
143
134
self ._os_ops = os_ops
144
135
145
136
# private
146
- self ._pg_version = PgVer (get_pg_version2 (os_ops , bin_dir ))
137
+ self ._pg_version = utils . PgVer (utils . get_pg_version2 (os_ops , bin_dir ))
147
138
self ._should_free_port = port is None
148
139
self ._bin_dir = bin_dir
149
140
self ._logger = None
@@ -202,7 +193,7 @@ def pid(self):
202
193
"status"
203
194
] # yapf: disable
204
195
205
- status_code , out , error = execute_utility2 (
196
+ status_code , out , error = utils . execute_utility2 (
206
197
self ._os_ops ,
207
198
_params ,
208
199
self .utils_log_file ,
@@ -404,7 +395,7 @@ def master(self):
404
395
@property
405
396
def bin_dir (self ):
406
397
if not self ._bin_dir :
407
- self ._bin_dir = os .path .dirname (get_bin_path2 (self ._os_ops , "pg_config" ))
398
+ self ._bin_dir = os .path .dirname (utils . get_bin_path2 (self ._os_ops , "pg_config" ))
408
399
return self ._bin_dir
409
400
410
401
@property
@@ -448,7 +439,7 @@ def _try_shutdown(self, max_attempts, with_force=False):
448
439
except ExecUtilException :
449
440
continue # one more time
450
441
except Exception :
451
- eprint ('cannot stop node {}' .format (self .name ))
442
+ utils . eprint ('cannot stop node {}' .format (self .name ))
452
443
break
453
444
454
445
return # OK
@@ -480,7 +471,7 @@ def _try_shutdown(self, max_attempts, with_force=False):
480
471
ps_command )
481
472
482
473
try :
483
- eprint ('Force stopping node {0} with PID {1}' .format (self .name , node_pid ))
474
+ utils . eprint ('Force stopping node {0} with PID {1}' .format (self .name , node_pid ))
484
475
self ._os_ops .kill (node_pid , signal .SIGKILL , expect_error = False )
485
476
except Exception :
486
477
# The node has already stopped
@@ -491,11 +482,11 @@ def _try_shutdown(self, max_attempts, with_force=False):
491
482
assert type (ps_output ) == str # noqa: E721
492
483
493
484
if ps_output == "" :
494
- eprint ('Node {0} has been stopped successfully.' .format (self .name ))
485
+ utils . eprint ('Node {0} has been stopped successfully.' .format (self .name ))
495
486
return
496
487
497
488
if ps_output == str (node_pid ):
498
- eprint ('Failed to stop node {0}.' .format (self .name ))
489
+ utils . eprint ('Failed to stop node {0}.' .format (self .name ))
499
490
return
500
491
501
492
__class__ ._throw_bugcheck__unexpected_result_of_ps (
@@ -542,9 +533,9 @@ def _create_recovery_conf(self, username, slot=None):
542
533
543
534
line = (
544
535
"primary_conninfo='{}'\n "
545
- ).format (options_string (** conninfo )) # yapf: disable
536
+ ).format (utils . options_string (** conninfo )) # yapf: disable
546
537
# Since 12 recovery.conf had disappeared
547
- if self .version >= PgVer ('12' ):
538
+ if self .version >= utils . PgVer ('12' ):
548
539
signal_name = os .path .join (self .data_dir , "standby.signal" )
549
540
self ._os_ops .touch (signal_name )
550
541
else :
@@ -574,7 +565,7 @@ def _create_recovery_conf(self, username, slot=None):
574
565
575
566
line += "primary_slot_name={}\n " .format (slot )
576
567
577
- if self .version >= PgVer ('12' ):
568
+ if self .version >= utils . PgVer ('12' ):
578
569
self .append_conf (line = line )
579
570
else :
580
571
self .append_conf (filename = RECOVERY_CONF_FILE , line = line )
@@ -741,9 +732,9 @@ def get_auth_method(t):
741
732
# binary replication
742
733
if allow_streaming :
743
734
# select a proper wal_level for PostgreSQL
744
- wal_level = 'replica' if self ._pg_version >= PgVer ('9.6' ) else 'hot_standby'
735
+ wal_level = 'replica' if self ._pg_version >= utils . PgVer ('9.6' ) else 'hot_standby'
745
736
746
- if self ._pg_version < PgVer ('13' ):
737
+ if self ._pg_version < utils . PgVer ('13' ):
747
738
self .append_conf (hot_standby = True ,
748
739
wal_keep_segments = WAL_KEEP_SEGMENTS ,
749
740
wal_level = wal_level ) # yapf: disable
@@ -754,7 +745,7 @@ def get_auth_method(t):
754
745
755
746
# logical replication
756
747
if allow_logical :
757
- if self ._pg_version < PgVer ('10' ):
748
+ if self ._pg_version < utils . PgVer ('10' ):
758
749
raise InitNodeException ("Logical replication is only "
759
750
"available on PostgreSQL 10 and newer" )
760
751
@@ -823,7 +814,7 @@ def status(self):
823
814
"-D" , self .data_dir ,
824
815
"status"
825
816
] # yapf: disable
826
- status_code , out , error = execute_utility2 (self ._os_ops , _params , self .utils_log_file , verbose = True )
817
+ status_code , out , error = utils . execute_utility2 (self ._os_ops , _params , self .utils_log_file , verbose = True )
827
818
if error and 'does not exist' in error :
828
819
return NodeStatus .Uninitialized
829
820
elif 'no server running' in out :
@@ -846,10 +837,10 @@ def get_control_data(self):
846
837
847
838
# this one is tricky (blame PG 9.4)
848
839
_params = [self ._get_bin_path ("pg_controldata" )]
849
- _params += ["-D" ] if self ._pg_version >= PgVer ('9.5' ) else []
840
+ _params += ["-D" ] if self ._pg_version >= utils . PgVer ('9.5' ) else []
850
841
_params += [self .data_dir ]
851
842
852
- data = execute_utility2 (self ._os_ops , _params , self .utils_log_file )
843
+ data = utils . execute_utility2 (self ._os_ops , _params , self .utils_log_file )
853
844
854
845
out_dict = {}
855
846
@@ -932,7 +923,7 @@ def start(self, params=[], wait=True):
932
923
933
924
def LOCAL__start_node ():
934
925
# 'error' will be None on Windows
935
- _ , _ , error = execute_utility2 (self ._os_ops , _params , self .utils_log_file , verbose = True )
926
+ _ , _ , error = utils . execute_utility2 (self ._os_ops , _params , self .utils_log_file , verbose = True )
936
927
assert error is None or type (error ) == str # noqa: E721
937
928
if error and 'does not exist' in error :
938
929
raise Exception (error )
@@ -1021,7 +1012,7 @@ def stop(self, params=[], wait=True):
1021
1012
"stop"
1022
1013
] + params # yapf: disable
1023
1014
1024
- execute_utility2 (self ._os_ops , _params , self .utils_log_file )
1015
+ utils . execute_utility2 (self ._os_ops , _params , self .utils_log_file )
1025
1016
1026
1017
self ._maybe_stop_logger ()
1027
1018
self .is_started = False
@@ -1063,7 +1054,7 @@ def restart(self, params=[]):
1063
1054
] + params # yapf: disable
1064
1055
1065
1056
try :
1066
- error_code , out , error = execute_utility2 (self ._os_ops , _params , self .utils_log_file , verbose = True )
1057
+ error_code , out , error = utils . execute_utility2 (self ._os_ops , _params , self .utils_log_file , verbose = True )
1067
1058
if error and 'could not start server' in error :
1068
1059
raise ExecUtilException
1069
1060
except ExecUtilException as e :
@@ -1092,7 +1083,7 @@ def reload(self, params=[]):
1092
1083
"reload"
1093
1084
] + params # yapf: disable
1094
1085
1095
- execute_utility2 (self ._os_ops , _params , self .utils_log_file )
1086
+ utils . execute_utility2 (self ._os_ops , _params , self .utils_log_file )
1096
1087
1097
1088
return self
1098
1089
@@ -1114,11 +1105,11 @@ def promote(self, dbname=None, username=None):
1114
1105
"promote"
1115
1106
] # yapf: disable
1116
1107
1117
- execute_utility2 (self ._os_ops , _params , self .utils_log_file )
1108
+ utils . execute_utility2 (self ._os_ops , _params , self .utils_log_file )
1118
1109
1119
1110
# for versions below 10 `promote` is asynchronous so we need to wait
1120
1111
# until it actually becomes writable
1121
- if self ._pg_version < PgVer ('10' ):
1112
+ if self ._pg_version < utils . PgVer ('10' ):
1122
1113
check_query = "SELECT pg_is_in_recovery()"
1123
1114
1124
1115
self .poll_query_until (query = check_query ,
@@ -1149,7 +1140,7 @@ def pg_ctl(self, params):
1149
1140
"-w" # wait
1150
1141
] + params # yapf: disable
1151
1142
1152
- return execute_utility2 (self ._os_ops , _params , self .utils_log_file )
1143
+ return utils . execute_utility2 (self ._os_ops , _params , self .utils_log_file )
1153
1144
1154
1145
def free_port (self ):
1155
1146
"""
@@ -1365,7 +1356,7 @@ def tmpfile():
1365
1356
"-F" , format .value
1366
1357
] # yapf: disable
1367
1358
1368
- execute_utility2 (self ._os_ops , _params , self .utils_log_file )
1359
+ utils . execute_utility2 (self ._os_ops , _params , self .utils_log_file )
1369
1360
1370
1361
return filename
1371
1362
@@ -1394,7 +1385,7 @@ def restore(self, filename, dbname=None, username=None):
1394
1385
1395
1386
# try pg_restore if dump is binary format, and psql if not
1396
1387
try :
1397
- execute_utility2 (self ._os_ops , _params , self .utils_log_name )
1388
+ utils . execute_utility2 (self ._os_ops , _params , self .utils_log_name )
1398
1389
except ExecUtilException :
1399
1390
self .psql (filename = filename , dbname = dbname , username = username )
1400
1391
@@ -1523,7 +1514,7 @@ def replicate(self, name=None, slot=None, **kwargs):
1523
1514
"""
1524
1515
1525
1516
# transform backup into a replica
1526
- with clean_on_error (self .backup (** kwargs )) as backup :
1517
+ with utils . clean_on_error (self .backup (** kwargs )) as backup :
1527
1518
return backup .spawn_replica (name = name , destroy = True , slot = slot )
1528
1519
1529
1520
def set_synchronous_standbys (self , standbys ):
@@ -1552,7 +1543,7 @@ def set_synchronous_standbys(self, standbys):
1552
1543
master.restart()
1553
1544
1554
1545
"""
1555
- if self ._pg_version >= PgVer ('9.6' ):
1546
+ if self ._pg_version >= utils . PgVer ('9.6' ):
1556
1547
if isinstance (standbys , Iterable ):
1557
1548
standbys = First (1 , standbys )
1558
1549
else :
@@ -1573,7 +1564,7 @@ def catchup(self, dbname=None, username=None):
1573
1564
if not self .master :
1574
1565
raise TestgresException ("Node doesn't have a master" )
1575
1566
1576
- if self ._pg_version >= PgVer ('10' ):
1567
+ if self ._pg_version >= utils . PgVer ('10' ):
1577
1568
poll_lsn = "select pg_catalog.pg_current_wal_lsn()::text"
1578
1569
wait_lsn = "select pg_catalog.pg_last_wal_replay_lsn() >= '{}'::pg_lsn"
1579
1570
else :
@@ -1747,7 +1738,7 @@ def pgbench_run(self, dbname=None, username=None, options=[], **kwargs):
1747
1738
# should be the last one
1748
1739
_params .append (dbname )
1749
1740
1750
- return execute_utility2 (self ._os_ops , _params , self .utils_log_file )
1741
+ return utils . execute_utility2 (self ._os_ops , _params , self .utils_log_file )
1751
1742
1752
1743
def connect (self ,
1753
1744
dbname = None ,
@@ -1944,7 +1935,7 @@ def _get_bin_path(self, filename):
1944
1935
if self .bin_dir :
1945
1936
bin_path = os .path .join (self .bin_dir , filename )
1946
1937
else :
1947
- bin_path = get_bin_path2 (self ._os_ops , filename )
1938
+ bin_path = utils . get_bin_path2 (self ._os_ops , filename )
1948
1939
return bin_path
1949
1940
1950
1941
def _escape_config_value (value ):
0 commit comments