comparison pylons_app/lib/backup_manager.py @ 34:b4b25ece7797

Code refactoring, and changed proper way of removing files
author Marcin Kuzminski <marcin@python-blog.com>
date Tue, 09 Mar 2010 00:22:29 +0100
parents 22b2234e51cd
children c92f827280a3
comparison
equal deleted inserted replaced
33:22b2234e51cd 34:b4b25ece7797
1 '''BACKUP MANAGER'''
1 import logging 2 import logging
2 from mercurial import config 3 from mercurial import config
3 import tarfile 4 import tarfile
4 import os 5 import os
5 import datetime 6 import datetime
8 logging.basicConfig(level=logging.DEBUG, 9 logging.basicConfig(level=logging.DEBUG,
9 format="%(asctime)s %(levelname)-5.5s %(message)s") 10 format="%(asctime)s %(levelname)-5.5s %(message)s")
10 11
11 class BackupManager(object): 12 class BackupManager(object):
12 def __init__(self): 13 def __init__(self):
14 self.repos_path = None
15 self.backup_file_name = None
13 self.id_rsa_path = '/home/pylons/id_rsa' 16 self.id_rsa_path = '/home/pylons/id_rsa'
14 self.check_id_rsa() 17 self.check_id_rsa()
15 cur_dir = os.path.realpath(__file__) 18 cur_dir = os.path.realpath(__file__)
16 dn = os.path.dirname 19 dn = os.path.dirname
17 self.backup_file_path = os.path.join(dn(dn(dn(cur_dir))), 'data') 20 self.backup_file_path = os.path.join(dn(dn(dn(cur_dir))), 'data')
28 if not os.path.isdir(self.repos_path): 31 if not os.path.isdir(self.repos_path):
29 raise Exception('Not a valid directory in %s' % self.repos_path) 32 raise Exception('Not a valid directory in %s' % self.repos_path)
30 33
31 def check_id_rsa(self): 34 def check_id_rsa(self):
32 if not os.path.isfile(self.id_rsa_path): 35 if not os.path.isfile(self.id_rsa_path):
33 logging.error('Could not load id_rsa key file in %s', self.id_rsa_path) 36 logging.error('Could not load id_rsa key file in %s',
37 self.id_rsa_path)
34 sys.exit() 38 sys.exit()
35 39
36 def set_repos_path(self, paths): 40 def set_repos_path(self, paths):
37 repos_path = paths[0][1].split('/') 41 repos_path = paths[0][1].split('/')
38 if repos_path[-1] in ['*', '**']: 42 if repos_path[-1] in ['*', '**']:
45 today = datetime.datetime.now().weekday() + 1 49 today = datetime.datetime.now().weekday() + 1
46 self.backup_file_name = "mercurial_repos.%s.tar.gz" % today 50 self.backup_file_name = "mercurial_repos.%s.tar.gz" % today
47 bckp_file = os.path.join(self.backup_file_path, self.backup_file_name) 51 bckp_file = os.path.join(self.backup_file_path, self.backup_file_name)
48 tar = tarfile.open(bckp_file, "w:gz") 52 tar = tarfile.open(bckp_file, "w:gz")
49 53
50 for dir in os.listdir(self.repos_path): 54 for dir_name in os.listdir(self.repos_path):
51 logging.info('backing up %s', dir) 55 logging.info('backing up %s', dir_name)
52 tar.add(os.path.join(self.repos_path, dir), dir) 56 tar.add(os.path.join(self.repos_path, dir_name), dir_name)
53 tar.close() 57 tar.close()
54 logging.info('finished backup of mercurial repositories') 58 logging.info('finished backup of mercurial repositories')
55 59
56 60
57 61
68 subprocess.Popen(cmd) 72 subprocess.Popen(cmd)
69 logging.info('Transfered file %s to %s', self.backup_file_name, cmd[4]) 73 logging.info('Transfered file %s to %s', self.backup_file_name, cmd[4])
70 74
71 75
72 def rm_file(self): 76 def rm_file(self):
73 os.remove(self.backup_file_path) 77 os.remove(os.path.join(self.backup_file_path, self.backup_file_name))
74 78
75 79
76 80
77 if __name__ == "__main__": 81 if __name__ == "__main__":
78 bm = BackupManager() 82 B_MANAGER = BackupManager()
79 bm.backup_repos() 83 B_MANAGER.backup_repos()
80 bm.transfer_files() 84 B_MANAGER.transfer_files()
81 bm.rm_file() 85 B_MANAGER.rm_file()
82 86
83 87