@@ -141,18 +141,18 @@ def _get_create_req_data():
141141 data = json .loads (request .data )
142142
143143 try :
144- _file = filename_with_file_manager_path (data ['file' ])
144+ filepath = filename_with_file_manager_path (data ['file' ])
145145 except Exception as e :
146146 return True , internal_server_error (errormsg = str (e )), data , None
147147
148- if _file is None :
148+ if filepath is None :
149149 return True , make_json_response (
150150 status = 410 ,
151151 success = 0 ,
152152 errormsg = _ ("File could not be found." )
153- ), data , _file
153+ ), data , filepath
154154
155- return False , '' , data , _file
155+ return False , '' , data , filepath
156156
157157
158158def _connect_server (sid ):
@@ -263,15 +263,15 @@ def set_multiple(key, param, data, args, driver, conn, with_schema=True):
263263 return False
264264
265265
266- def _set_args_param_values (data , manager , server , driver , conn , _file ):
266+ def get_restore_util_args (data , manager , server , driver , conn , filepath ):
267267 """
268- add args to the list.
268+ return the args for the command
269269 :param data: Data.
270270 :param manager: Manager.
271271 :param server: Server.
272272 :param driver: Driver.
273273 :param conn: Connection.
274- :param _file : File.
274+ :param filepath : File.
275275 :return: args list.
276276 """
277277 args = []
@@ -347,11 +347,56 @@ def _set_args_param_values(data, manager, server, driver, conn, _file):
347347 False )
348348 set_multiple ('indexes' , '--index' , data , args , driver , conn , False )
349349
350- args .append (fs_short_path (_file ))
350+ args .append (fs_short_path (filepath ))
351351
352352 return args
353353
354354
355+ def get_sql_util_args (data , manager , server , filepath ):
356+ """
357+ return the args for the command
358+ :param data: Data.
359+ :param manager: Manager.
360+ :param server: Server.
361+ :param filepath: File.
362+ :return: args list.
363+ """
364+ args = [
365+ '--host' ,
366+ manager .local_bind_host if manager .use_ssh_tunnel else server .host ,
367+ '--port' ,
368+ str (manager .local_bind_port ) if manager .use_ssh_tunnel
369+ else str (server .port ),
370+ '--username' , server .username , '--dbname' ,
371+ data ['database' ],
372+ '--file' , fs_short_path (filepath )
373+ ]
374+
375+ return args
376+
377+
378+ def use_restore_utility (data , manager , server , driver , conn , filepath ):
379+ utility = manager .utility ('restore' )
380+ ret_val = does_utility_exist (utility )
381+ if ret_val :
382+ return ret_val , None , None
383+
384+ args = get_restore_util_args (data , manager , server , driver , conn , filepath )
385+
386+ return None , utility , args
387+
388+
389+ def use_sql_utility (data , manager , server , filepath ):
390+ utility = manager .utility ('sql' )
391+ ret_val = does_utility_exist (utility )
392+ if ret_val :
393+ return ret_val , None , None
394+
395+ args = get_sql_util_args (data , manager , server , filepath )
396+
397+ return None , utility , args
398+
399+
355400@blueprint .route ('/job/<int:sid>' , methods = ['POST' ], endpoint = 'create_job' )
356401@pga_login_required
357402def create_restore_job (sid ):
@@ -364,24 +409,27 @@ def create_restore_job(sid):
364409 Returns:
365410 None
366411 """
367- is_error , errmsg , data , _file = _get_create_req_data ()
412+ is_error , errmsg , data , filepath = _get_create_req_data ()
368413 if is_error :
369414 return errmsg
370415
371416 is_error , errmsg , driver , manager , conn , _ , server = _connect_server (sid )
372417 if is_error :
373418 return errmsg
374419
375- utility = manager .utility ('restore' )
376- ret_val = does_utility_exist (utility )
377- if ret_val :
420+ if data ['format' ] == 'plain' :
421+ error_msg , utility , args = use_sql_utility (
422+ data , manager , server , filepath )
423+ else :
424+ error_msg , utility , args = use_restore_utility (
425+ data , manager , server , driver , conn , filepath )
426+
427+ if error_msg is not None :
378428 return make_json_response (
379429 success = 0 ,
380- errormsg = ret_val
430+ errormsg = error_msg
381431 )
382432
383- args = _set_args_param_values (data , manager , server , driver , conn , _file )
384-
385433 try :
386434 p = BatchProcess (
387435 desc = RestoreMessage (
0 commit comments