--- /dev/null
+
+from pcsbackupmanager import *
+from pcspcbackupmanager import PcsPcBackupManager
+from pcsbackupinfo import PcsBackupInfo
+import pcsbackuputils as utils
+
+
+class PcsDeviceBackupManager(PcsBackupManager):
+
+
+ def __init__(self, deviceInfo):
+ PcsBackupManager.__init__(self)
+ self._backupList = []
+ self._deviceInfo = deviceInfo
+ self.restoreInProgress = False
+ self.copyInProgress = False
+
+ def loadBackups(self):
+
+ # FIXME, error handling is wrong!! return list of PcsBackupInfo
+ try:
+ mountPoint = os.path.join(DEVICES_POINT, "%s/Root" % self._deviceInfo.ip)
+ utils.mountDevice(USER_HOST, self._deviceInfo.ip, mountPoint)
+
+ self._backupList = utils.getDeviceBackupList(mountPoint)
+ return True
+
+ except Exception, x:
+ print str(x)
+ finally:
+ utils.unmountDevice(mountPoint)
+
+ return False
+
+ def getBackupList(self):
+ self.loadBackups()
+ for backup in self._backupList:
+ backup.setAtDevice(True)
+ return self._backupList
+
+ def copyBackupFromDevice(self, backupName, destinationPath):
+ try:
+ self.loadBackups()
+ device_backups = self.getBackupList()
+
+ mountPoint = os.path.join(DEVICES_POINT, "%s/Root" % self._deviceInfo.ip)
+ utils.mountDevice(USER_HOST, self._deviceInfo.ip, mountPoint)
+
+ # Search complete_path
+ completePath = ''
+ for backup in device_backups:
+ if backupName == backup.getName():
+ completePath = backup.getPath()
+ break
+ if completePath == '':
+ raise Exception("Backup not found.")
+
+ pcBackupManager = PcsPcBackupManager()
+ pcBackupManager.loadBackups()
+ correctName = pcBackupManager._verify_backup_name(backupName)
+ destination = os.path.join(destinationPath, correctName)
+
+ self.setCopyInProgress(True)
+ if self.copy(completePath, destination) == 0:
+ return 0
+ self.setCopyInProgress(False)
+
+ backup_size = utils.getSize(destination)
+ backup = PcsBackupInfo(correctName, destinationPath, backup_size,
+ 'Copied from device')
+ backup.setAtDevice(False)
+ pcBackupManager._backupList.append(backup)
+ pcBackupManager.saveBackups()
+
+ finally:
+ utils.unmountDevice(mountPoint)
+
+
+ def startBackupRestore(self, backupInfo, categories):
+ device_ip = self._deviceInfo.ip
+ return self.restoreBackup(backupInfo, device_ip, categories)
+
+
+ def setCopyInProgress(self, status):
+ self.copyInProgress = status
+
+
+ def setRestoreInProgress(self, status):
+ self.restoreInProgress = status
+
+
+ def getBackupInfo(self, backupName):
+ self.loadBackups()
+ for backupInfo in self._backupList:
+ if backupInfo.getName() == backupName:
+ backupInfo.setAtDevice(True)
+ return backupInfo
+
+ return None
+
+
+
\ No newline at end of file