instance.py

changeset 74
4f56142e7497
parent 34
9fce700d42de
child 79
b075b3db3044
equal deleted inserted replaced
73:4f0e9cf8f230 74:4f56142e7497
4 4
5 import json 5 import json
6 import logging 6 import logging
7 import os 7 import os
8 import borgend 8 import borgend
9 from config import settings
9 from subprocess import Popen, PIPE 10 from subprocess import Popen, PIPE
10 from config import settings, arglistify
11 11
12 logger=borgend.logger.getChild(__name__) 12 logger=borgend.logger.getChild(__name__)
13 13
14 necessary_opts=['--log-json', '--progress'] 14 necessary_opts=['--log-json', '--progress']
15 15
17 'create': ['--json'], 17 'create': ['--json'],
18 'info': ['--json'], 18 'info': ['--json'],
19 'list': ['--json'], 19 'list': ['--json'],
20 } 20 }
21 21
22 # Conversion of config into command line
23 def arglistify(args):
24 flatten=lambda l: [item for sublist in l for item in sublist]
25 if args is None:
26 return []
27 else:
28 return flatten([['--' + key, str(d[key])] for d in args for key in d])
29
22 class BorgInstance: 30 class BorgInstance:
23 def __init__(self, operation, archive_or_repository, args, argsl): 31 def __init__(self, operation, archive_or_repository,
32 common_params, op_params, paths):
24 self.operation=operation; 33 self.operation=operation;
25 self.args=args;
26 self.archive_or_repository=archive_or_repository; 34 self.archive_or_repository=archive_or_repository;
27 self.argsl=argsl; 35 self.common_params=common_params
36 self.op_params=op_params
37 self.paths=paths
28 38
29 def construct_cmdline(self): 39 def construct_cmdline(self):
30 cmd=([settings['borg']['executable']]+necessary_opts+ 40 cmd=([settings['borg']['executable']]+necessary_opts+
31 arglistify(settings['borg']['common_parameters'])+ 41 arglistify(self.common_params)+
32 [self.operation]) 42 [self.operation])
33 tmp1=self.operation+'_parameters'
34 if tmp1 in settings['borg']:
35 cmd=cmd+arglistify(settings['borg'][tmp1])
36 43
37 if self.operation in necessary_opts_for: 44 if self.operation in necessary_opts_for:
38 cmd=cmd+necessary_opts_for[self.operation] 45 cmd=cmd+necessary_opts_for[self.operation]
39 46
40 return cmd+arglistify(self.args)+[self.archive_or_repository]+self.argsl 47 return (cmd+arglistify(self.op_params)
48 +[self.archive_or_repository]+self.paths)
41 49
42 def launch(self, passphrase=None): 50 def launch(self, passphrase=None):
43 cmd=self.construct_cmdline() 51 cmd=self.construct_cmdline()
44 52
45 logger.info('Launching ' + str(cmd)) 53 logger.info('Launching ' + str(cmd))

mercurial