@@ -277,7 +277,7 @@ def append_conf(self, filename, string):
277277
278278 return self
279279
280- def pg_ctl (self , command , params ):
280+ def pg_ctl (self , command , params , command_options = [] ):
281281 """Runs pg_ctl with specified params
282282
283283 This function is a workhorse for start(), stop() and reload()
@@ -294,7 +294,7 @@ def pg_ctl(self, command, params):
294294 open (self .error_filename , "a" ) as file_err :
295295
296296 res = subprocess .call (
297- arguments + [command ],
297+ arguments + [command ] + command_options ,
298298 stdout = file_out ,
299299 stderr = file_err
300300 )
@@ -303,46 +303,50 @@ def pg_ctl(self, command, params):
303303 with open (self .error_filename , "r" ) as errfile :
304304 raise ClusterException (errfile .readlines ()[- 1 ])
305305
306- def start (self ):
306+ def start (self , params = {} ):
307307 """ Starts cluster """
308308 logfile = os .path .join (self .logs_dir , "postgresql.log" )
309- params = {
309+ _params = {
310310 "-D" : self .data_dir ,
311311 "-w" : None ,
312312 "-l" : logfile ,
313313 }
314- self .pg_ctl ("start" , params )
314+ _params .update (params )
315+ self .pg_ctl ("start" , _params )
315316
316317 self .working = True
317318
318319 return self
319320
320- def stop (self ):
321+ def stop (self , params = {} ):
321322 """ Stops cluster """
322- params = {
323+ _params = {
323324 "-D" : self .data_dir ,
324325 "-w" : None
325326 }
326- self .pg_ctl ("stop" , params )
327+ _params .update (params )
328+ self .pg_ctl ("stop" , _params )
327329
328330 self .working = False
329331
330332 return self
331333
332- def restart (self ):
334+ def restart (self , params = {} ):
333335 """ Restarts cluster """
334- params = {
336+ _params = {
335337 "-D" : self .data_dir ,
336338 "-w" : None
337339 }
338- self .pg_ctl ("restart" , params )
340+ _params .update (params )
341+ self .pg_ctl ("restart" , _params )
339342
340343 return self
341344
342- def reload (self ):
345+ def reload (self , params = {} ):
343346 """Reloads config files"""
344- params = {"-D" : self .data_dir }
345- self .pg_ctl ("reload" , params )
347+ _params = {"-D" : self .data_dir }
348+ _params .update (params )
349+ self .pg_ctl ("reload" , _params )
346350
347351 return self
348352
@@ -351,7 +355,10 @@ def cleanup(self):
351355
352356 # stop server if it still working
353357 if self .working :
354- self .stop ()
358+ try :
359+ self .stop ()
360+ except :
361+ pass
355362
356363 # remove data directory
357364 shutil .rmtree (self .data_dir )
@@ -448,10 +455,13 @@ def poll_query_until(self, dbname, query):
448455 attemps += 1
449456 raise QueryException ("Timeout while waiting for query to return True" )
450457
451- def execute (self , dbname , query , username = None ):
458+ def execute (self , dbname , query , username = None , commit = False ):
452459 """Executes the query and returns all rows"""
453460 with self .connect (dbname , username ) as node_con :
454- return node_con .execute (query )
461+ res = node_con .execute (query )
462+ if commit :
463+ node_con .commit ()
464+ return res
455465
456466 def backup (self , name ):
457467 """Performs pg_basebackup"""
0 commit comments