2 from pcsbackupmanager import *
3 from pcspcbackupmanager import PcsPcBackupManager
4 from pcsbackupinfo import PcsBackupInfo
5 import pcsbackuputils as utils
8 class PcsDeviceBackupManager(PcsBackupManager):
11 def __init__(self, deviceInfo):
12 PcsBackupManager.__init__(self)
14 self._deviceInfo = deviceInfo
15 self.restoreInProgress = False
16 self.copyInProgress = False
18 def loadBackups(self):
20 # FIXME, error handling is wrong!! return list of PcsBackupInfo
22 mountPoint = os.path.join(DEVICES_POINT, "%s/Root" % self._deviceInfo.ip)
23 utils.mountDevice(USER_HOST, self._deviceInfo.ip, mountPoint)
25 self._backupList = utils.getDeviceBackupList(mountPoint)
31 utils.unmountDevice(mountPoint)
35 def getBackupList(self):
37 for backup in self._backupList:
38 backup.setAtDevice(True)
39 return self._backupList
41 def copyBackupFromDevice(self, backupName, destinationPath):
44 device_backups = self.getBackupList()
46 mountPoint = os.path.join(DEVICES_POINT, "%s/Root" % self._deviceInfo.ip)
47 utils.mountDevice(USER_HOST, self._deviceInfo.ip, mountPoint)
49 # Search complete_path
51 for backup in device_backups:
52 if backupName == backup.getName():
53 completePath = backup.getPath()
55 if completePath == '':
56 raise Exception("Backup not found.")
58 pcBackupManager = PcsPcBackupManager()
59 pcBackupManager.loadBackups()
60 correctName = pcBackupManager._verify_backup_name(backupName)
61 destination = os.path.join(destinationPath, correctName)
63 self.setCopyInProgress(True)
64 if self.copy(completePath, destination) == 0:
66 self.setCopyInProgress(False)
68 backup_size = utils.getSize(destination)
69 backup = PcsBackupInfo(correctName, destinationPath, backup_size,
71 backup.setAtDevice(False)
72 pcBackupManager._backupList.append(backup)
73 pcBackupManager.saveBackups()
76 utils.unmountDevice(mountPoint)
79 def startBackupRestore(self, backupInfo, categories):
80 device_ip = self._deviceInfo.ip
81 return self.restoreBackup(backupInfo, device_ip, categories)
84 def setCopyInProgress(self, status):
85 self.copyInProgress = status
88 def setRestoreInProgress(self, status):
89 self.restoreInProgress = status
92 def getBackupInfo(self, backupName):
94 for backupInfo in self._backupList:
95 if backupInfo.getName() == backupName:
96 backupInfo.setAtDevice(True)